@pan-sec/notebooklm-mcp 1.8.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +424 -56
- package/dist/gemini/gemini-client.d.ts +55 -1
- package/dist/gemini/gemini-client.d.ts.map +1 -1
- package/dist/gemini/gemini-client.js +402 -0
- package/dist/gemini/gemini-client.js.map +1 -1
- package/dist/gemini/index.d.ts +1 -0
- package/dist/gemini/index.d.ts.map +1 -1
- package/dist/gemini/index.js +1 -0
- package/dist/gemini/index.js.map +1 -1
- package/dist/gemini/pdf-chunker.d.ts +66 -0
- package/dist/gemini/pdf-chunker.d.ts.map +1 -0
- package/dist/gemini/pdf-chunker.js +197 -0
- package/dist/gemini/pdf-chunker.js.map +1 -0
- package/dist/gemini/types.d.ts +121 -0
- package/dist/gemini/types.d.ts.map +1 -1
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/definitions/gemini.d.ts.map +1 -1
- package/dist/tools/definitions/gemini.js +228 -0
- package/dist/tools/definitions/gemini.js.map +1 -1
- package/dist/tools/handlers.d.ts +46 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +189 -0
- package/dist/tools/handlers.js.map +1 -1
- package/package.json +2 -1
|
@@ -7,6 +7,9 @@
|
|
|
7
7
|
import { GoogleGenAI } from "@google/genai";
|
|
8
8
|
import { log } from "../utils/logger.js";
|
|
9
9
|
import { CONFIG } from "../config.js";
|
|
10
|
+
import { analyzePdf, chunkPdf, cleanupChunks } from "./pdf-chunker.js";
|
|
11
|
+
import fs from "fs";
|
|
12
|
+
import path from "path";
|
|
10
13
|
// Re-export the agent constant
|
|
11
14
|
export { DEEP_RESEARCH_AGENT } from "./types.js";
|
|
12
15
|
/**
|
|
@@ -207,5 +210,404 @@ export class GeminiClient {
|
|
|
207
210
|
error: r.error,
|
|
208
211
|
};
|
|
209
212
|
}
|
|
213
|
+
// ===========================================================================
|
|
214
|
+
// Files API Methods (v1.9.0)
|
|
215
|
+
// ===========================================================================
|
|
216
|
+
/**
|
|
217
|
+
* Upload a document to Gemini Files API
|
|
218
|
+
* Files are retained for 48 hours and can be used in multiple queries
|
|
219
|
+
* Large PDFs (>50MB or >1000 pages) are automatically chunked
|
|
220
|
+
*/
|
|
221
|
+
async uploadDocument(options) {
|
|
222
|
+
if (!this.client) {
|
|
223
|
+
throw new Error("Gemini API key not configured. Set GEMINI_API_KEY environment variable.");
|
|
224
|
+
}
|
|
225
|
+
const { filePath, displayName, mimeType } = options;
|
|
226
|
+
// Verify file exists
|
|
227
|
+
if (!fs.existsSync(filePath)) {
|
|
228
|
+
throw new Error(`File not found: ${filePath}`);
|
|
229
|
+
}
|
|
230
|
+
// Get file stats
|
|
231
|
+
const stats = fs.statSync(filePath);
|
|
232
|
+
const fileName = displayName || path.basename(filePath);
|
|
233
|
+
// Auto-detect MIME type if not provided
|
|
234
|
+
const detectedMimeType = mimeType || this.detectMimeType(filePath);
|
|
235
|
+
// Check if this is a PDF that might need chunking
|
|
236
|
+
const isPdf = detectedMimeType === "application/pdf" ||
|
|
237
|
+
filePath.toLowerCase().endsWith(".pdf");
|
|
238
|
+
if (isPdf) {
|
|
239
|
+
const analysis = await analyzePdf(filePath);
|
|
240
|
+
if (analysis.needsChunking) {
|
|
241
|
+
log.info(`Large PDF detected: ${analysis.reason}`);
|
|
242
|
+
log.info(`Splitting into ~${analysis.estimatedChunks} chunks...`);
|
|
243
|
+
return await this.uploadChunkedPdf(filePath, fileName, analysis.pageCount);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Standard upload for non-PDF or small PDF files
|
|
247
|
+
log.info(`Uploading document: ${fileName} (${this.formatBytes(stats.size)})`);
|
|
248
|
+
try {
|
|
249
|
+
// Upload file using SDK
|
|
250
|
+
const uploadResult = await this.client.files.upload({
|
|
251
|
+
file: filePath,
|
|
252
|
+
config: {
|
|
253
|
+
displayName: fileName,
|
|
254
|
+
mimeType: detectedMimeType,
|
|
255
|
+
},
|
|
256
|
+
});
|
|
257
|
+
// Poll for processing completion
|
|
258
|
+
let file = await this.waitForFileProcessing(uploadResult.name);
|
|
259
|
+
log.success(`Document uploaded: ${file.name}`);
|
|
260
|
+
return {
|
|
261
|
+
fileName: file.name,
|
|
262
|
+
displayName: file.displayName || fileName,
|
|
263
|
+
uri: file.uri,
|
|
264
|
+
mimeType: file.mimeType,
|
|
265
|
+
sizeBytes: file.sizeBytes,
|
|
266
|
+
expiresAt: file.expirationTime || this.calculateExpiration(),
|
|
267
|
+
state: file.state,
|
|
268
|
+
wasChunked: false,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
273
|
+
log.error(`Failed to upload document: ${msg}`);
|
|
274
|
+
throw error;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Upload a large PDF by splitting it into chunks
|
|
279
|
+
*/
|
|
280
|
+
async uploadChunkedPdf(filePath, displayName, _totalPages) {
|
|
281
|
+
// Chunk the PDF
|
|
282
|
+
const chunkResult = await chunkPdf(filePath);
|
|
283
|
+
if (!chunkResult.success) {
|
|
284
|
+
throw new Error(`Failed to chunk PDF: ${chunkResult.error}`);
|
|
285
|
+
}
|
|
286
|
+
log.info(`Uploading ${chunkResult.chunks.length} chunks...`);
|
|
287
|
+
const uploadedChunks = [];
|
|
288
|
+
const allFileNames = [];
|
|
289
|
+
try {
|
|
290
|
+
// Upload each chunk
|
|
291
|
+
for (const chunk of chunkResult.chunks) {
|
|
292
|
+
log.info(` Uploading chunk ${chunk.chunkIndex + 1}/${chunk.totalChunks} (pages ${chunk.pageStart}-${chunk.pageEnd})...`);
|
|
293
|
+
const uploadResult = await this.client.files.upload({
|
|
294
|
+
file: chunk.filePath,
|
|
295
|
+
config: {
|
|
296
|
+
displayName: `${displayName} (Part ${chunk.chunkIndex + 1}/${chunk.totalChunks})`,
|
|
297
|
+
mimeType: "application/pdf",
|
|
298
|
+
},
|
|
299
|
+
});
|
|
300
|
+
// Wait for processing
|
|
301
|
+
const file = await this.waitForFileProcessing(uploadResult.name);
|
|
302
|
+
uploadedChunks.push({
|
|
303
|
+
fileName: file.name,
|
|
304
|
+
chunkIndex: chunk.chunkIndex,
|
|
305
|
+
totalChunks: chunk.totalChunks,
|
|
306
|
+
pageStart: chunk.pageStart,
|
|
307
|
+
pageEnd: chunk.pageEnd,
|
|
308
|
+
uri: file.uri,
|
|
309
|
+
});
|
|
310
|
+
allFileNames.push(file.name);
|
|
311
|
+
log.success(` Chunk ${chunk.chunkIndex + 1} uploaded: ${file.name}`);
|
|
312
|
+
}
|
|
313
|
+
// Clean up temp chunk files
|
|
314
|
+
await cleanupChunks(chunkResult.chunks);
|
|
315
|
+
// Return result with first chunk as primary
|
|
316
|
+
const firstChunk = uploadedChunks[0];
|
|
317
|
+
log.success(`All ${uploadedChunks.length} chunks uploaded successfully`);
|
|
318
|
+
return {
|
|
319
|
+
fileName: firstChunk.fileName,
|
|
320
|
+
displayName: displayName,
|
|
321
|
+
uri: firstChunk.uri,
|
|
322
|
+
mimeType: "application/pdf",
|
|
323
|
+
sizeBytes: fs.statSync(filePath).size,
|
|
324
|
+
expiresAt: this.calculateExpiration(),
|
|
325
|
+
state: "ACTIVE",
|
|
326
|
+
wasChunked: true,
|
|
327
|
+
totalPages: chunkResult.totalPages,
|
|
328
|
+
chunks: uploadedChunks,
|
|
329
|
+
allFileNames: allFileNames,
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
// Clean up temp files on error
|
|
334
|
+
await cleanupChunks(chunkResult.chunks);
|
|
335
|
+
throw error;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Wait for file processing to complete
|
|
340
|
+
*/
|
|
341
|
+
async waitForFileProcessing(fileName, maxWaitMs = 60000) {
|
|
342
|
+
const startTime = Date.now();
|
|
343
|
+
const pollInterval = 2000; // 2 seconds
|
|
344
|
+
while (Date.now() - startTime < maxWaitMs) {
|
|
345
|
+
const file = await this.getFile(fileName);
|
|
346
|
+
if (file.state === "ACTIVE") {
|
|
347
|
+
return file;
|
|
348
|
+
}
|
|
349
|
+
if (file.state === "FAILED") {
|
|
350
|
+
throw new Error(`File processing failed: ${file.error || "Unknown error"}`);
|
|
351
|
+
}
|
|
352
|
+
// Still processing, wait and retry
|
|
353
|
+
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
354
|
+
}
|
|
355
|
+
throw new Error(`File processing timed out after ${maxWaitMs / 1000} seconds`);
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* Get file metadata
|
|
359
|
+
*/
|
|
360
|
+
async getFile(fileName) {
|
|
361
|
+
if (!this.client) {
|
|
362
|
+
throw new Error("Gemini API key not configured.");
|
|
363
|
+
}
|
|
364
|
+
try {
|
|
365
|
+
const response = await this.client.files.get({ name: fileName });
|
|
366
|
+
return this.mapFile(response);
|
|
367
|
+
}
|
|
368
|
+
catch (error) {
|
|
369
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
370
|
+
log.error(`Failed to get file ${fileName}: ${msg}`);
|
|
371
|
+
throw error;
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* List all uploaded files
|
|
376
|
+
*/
|
|
377
|
+
async listFiles(pageSize = 100, pageToken) {
|
|
378
|
+
if (!this.client) {
|
|
379
|
+
throw new Error("Gemini API key not configured.");
|
|
380
|
+
}
|
|
381
|
+
try {
|
|
382
|
+
const response = await this.client.files.list({
|
|
383
|
+
pageSize,
|
|
384
|
+
pageToken,
|
|
385
|
+
});
|
|
386
|
+
const files = (response.files || []).map((f) => this.mapFile(f));
|
|
387
|
+
return {
|
|
388
|
+
files,
|
|
389
|
+
totalCount: files.length,
|
|
390
|
+
nextPageToken: response.nextPageToken,
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
catch (error) {
|
|
394
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
395
|
+
log.error(`Failed to list files: ${msg}`);
|
|
396
|
+
throw error;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Delete an uploaded file
|
|
401
|
+
*/
|
|
402
|
+
async deleteFile(fileName) {
|
|
403
|
+
if (!this.client) {
|
|
404
|
+
throw new Error("Gemini API key not configured.");
|
|
405
|
+
}
|
|
406
|
+
try {
|
|
407
|
+
await this.client.files.delete({ name: fileName });
|
|
408
|
+
log.info(`Deleted file: ${fileName}`);
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
412
|
+
log.error(`Failed to delete file ${fileName}: ${msg}`);
|
|
413
|
+
throw error;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
/**
|
|
417
|
+
* Query an uploaded document
|
|
418
|
+
*/
|
|
419
|
+
async queryDocument(options) {
|
|
420
|
+
if (!this.client) {
|
|
421
|
+
throw new Error("Gemini API key not configured. Set GEMINI_API_KEY environment variable.");
|
|
422
|
+
}
|
|
423
|
+
const { fileName, query, model, additionalFiles, generationConfig } = options;
|
|
424
|
+
const modelId = model || CONFIG.geminiDefaultModel || "gemini-2.5-flash";
|
|
425
|
+
log.info(`Querying document ${fileName}: ${query.substring(0, 50)}...`);
|
|
426
|
+
try {
|
|
427
|
+
// Get file metadata for URI
|
|
428
|
+
const file = await this.getFile(fileName);
|
|
429
|
+
if (file.state !== "ACTIVE") {
|
|
430
|
+
throw new Error(`File is not ready for querying. State: ${file.state}`);
|
|
431
|
+
}
|
|
432
|
+
// Build content parts with file references
|
|
433
|
+
const fileParts = [
|
|
434
|
+
{ fileData: { fileUri: file.uri, mimeType: file.mimeType } },
|
|
435
|
+
];
|
|
436
|
+
// Add additional files if specified
|
|
437
|
+
const filesUsed = [fileName];
|
|
438
|
+
if (additionalFiles) {
|
|
439
|
+
for (const additionalFileName of additionalFiles) {
|
|
440
|
+
const additionalFile = await this.getFile(additionalFileName);
|
|
441
|
+
if (additionalFile.state === "ACTIVE") {
|
|
442
|
+
fileParts.push({
|
|
443
|
+
fileData: { fileUri: additionalFile.uri, mimeType: additionalFile.mimeType },
|
|
444
|
+
});
|
|
445
|
+
filesUsed.push(additionalFileName);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// Generate content with the document
|
|
450
|
+
const response = await this.client.models.generateContent({
|
|
451
|
+
model: modelId,
|
|
452
|
+
contents: [
|
|
453
|
+
{
|
|
454
|
+
role: "user",
|
|
455
|
+
parts: [
|
|
456
|
+
...fileParts,
|
|
457
|
+
{ text: query },
|
|
458
|
+
],
|
|
459
|
+
},
|
|
460
|
+
],
|
|
461
|
+
generationConfig: generationConfig ? {
|
|
462
|
+
temperature: generationConfig.temperature,
|
|
463
|
+
maxOutputTokens: generationConfig.maxOutputTokens,
|
|
464
|
+
} : undefined,
|
|
465
|
+
});
|
|
466
|
+
// Extract response text
|
|
467
|
+
const answer = response.response?.text?.() ||
|
|
468
|
+
response.response?.candidates?.[0]?.content?.parts?.[0]?.text ||
|
|
469
|
+
"";
|
|
470
|
+
// Extract usage
|
|
471
|
+
const usage = response.response?.usageMetadata;
|
|
472
|
+
log.success(`Document query completed`);
|
|
473
|
+
return {
|
|
474
|
+
answer,
|
|
475
|
+
model: modelId,
|
|
476
|
+
tokensUsed: usage?.totalTokenCount,
|
|
477
|
+
filesUsed,
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
482
|
+
log.error(`Document query failed: ${msg}`);
|
|
483
|
+
throw error;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* Query multiple document chunks and aggregate results
|
|
488
|
+
* This is useful for querying large documents that were split into chunks
|
|
489
|
+
*/
|
|
490
|
+
async queryChunkedDocument(fileNames, query, options) {
|
|
491
|
+
if (!this.client) {
|
|
492
|
+
throw new Error("Gemini API key not configured.");
|
|
493
|
+
}
|
|
494
|
+
if (fileNames.length === 0) {
|
|
495
|
+
throw new Error("No file names provided");
|
|
496
|
+
}
|
|
497
|
+
// Single file - just query normally
|
|
498
|
+
if (fileNames.length === 1) {
|
|
499
|
+
return this.queryDocument({
|
|
500
|
+
fileName: fileNames[0],
|
|
501
|
+
query,
|
|
502
|
+
model: options?.model,
|
|
503
|
+
});
|
|
504
|
+
}
|
|
505
|
+
const modelId = options?.model || CONFIG.geminiDefaultModel || "gemini-2.5-flash";
|
|
506
|
+
log.info(`Querying ${fileNames.length} document chunks...`);
|
|
507
|
+
// Query each chunk
|
|
508
|
+
const chunkResults = [];
|
|
509
|
+
let totalTokens = 0;
|
|
510
|
+
for (let i = 0; i < fileNames.length; i++) {
|
|
511
|
+
log.info(` Querying chunk ${i + 1}/${fileNames.length}...`);
|
|
512
|
+
const result = await this.queryDocument({
|
|
513
|
+
fileName: fileNames[i],
|
|
514
|
+
query,
|
|
515
|
+
model: options?.model,
|
|
516
|
+
});
|
|
517
|
+
chunkResults.push({
|
|
518
|
+
chunkIndex: i,
|
|
519
|
+
answer: result.answer,
|
|
520
|
+
});
|
|
521
|
+
totalTokens += result.tokensUsed || 0;
|
|
522
|
+
}
|
|
523
|
+
// Aggregate results using Gemini
|
|
524
|
+
const aggregatePrompt = options?.aggregatePrompt ||
|
|
525
|
+
`You received the following answers from different parts of a large document.
|
|
526
|
+
Please synthesize these into a single, coherent response that addresses the original query.
|
|
527
|
+
Remove any redundancy and present the information in a clear, organized manner.
|
|
528
|
+
|
|
529
|
+
Original query: ${query}
|
|
530
|
+
|
|
531
|
+
Answers from document parts:
|
|
532
|
+
${chunkResults.map((r, i) => `--- Part ${i + 1} ---\n${r.answer}`).join("\n\n")}
|
|
533
|
+
|
|
534
|
+
Synthesized answer:`;
|
|
535
|
+
log.info(` Aggregating ${chunkResults.length} chunk results...`);
|
|
536
|
+
const aggregateResult = await this.query({
|
|
537
|
+
query: aggregatePrompt,
|
|
538
|
+
model: modelId,
|
|
539
|
+
});
|
|
540
|
+
const answer = aggregateResult.outputs.find(o => o.type === "text")?.text || "";
|
|
541
|
+
totalTokens += aggregateResult.usage?.totalTokens || 0;
|
|
542
|
+
log.success(`Chunked document query completed`);
|
|
543
|
+
return {
|
|
544
|
+
answer,
|
|
545
|
+
model: modelId,
|
|
546
|
+
tokensUsed: totalTokens,
|
|
547
|
+
filesUsed: fileNames,
|
|
548
|
+
};
|
|
549
|
+
}
|
|
550
|
+
/**
|
|
551
|
+
* Map SDK file response to our interface
|
|
552
|
+
*/
|
|
553
|
+
mapFile(response) {
|
|
554
|
+
const r = response;
|
|
555
|
+
return {
|
|
556
|
+
name: r.name || "",
|
|
557
|
+
displayName: r.displayName,
|
|
558
|
+
mimeType: r.mimeType || "application/octet-stream",
|
|
559
|
+
sizeBytes: typeof r.sizeBytes === "string" ? parseInt(r.sizeBytes, 10) : r.sizeBytes,
|
|
560
|
+
createTime: r.createTime,
|
|
561
|
+
expirationTime: r.expirationTime,
|
|
562
|
+
state: r.state || "PROCESSING",
|
|
563
|
+
uri: r.uri || "",
|
|
564
|
+
error: r.error?.message,
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
/**
|
|
568
|
+
* Detect MIME type from file extension
|
|
569
|
+
*/
|
|
570
|
+
detectMimeType(filePath) {
|
|
571
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
572
|
+
const mimeTypes = {
|
|
573
|
+
".pdf": "application/pdf",
|
|
574
|
+
".txt": "text/plain",
|
|
575
|
+
".md": "text/markdown",
|
|
576
|
+
".html": "text/html",
|
|
577
|
+
".htm": "text/html",
|
|
578
|
+
".csv": "text/csv",
|
|
579
|
+
".json": "application/json",
|
|
580
|
+
".xml": "application/xml",
|
|
581
|
+
".doc": "application/msword",
|
|
582
|
+
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
583
|
+
".png": "image/png",
|
|
584
|
+
".jpg": "image/jpeg",
|
|
585
|
+
".jpeg": "image/jpeg",
|
|
586
|
+
".gif": "image/gif",
|
|
587
|
+
".webp": "image/webp",
|
|
588
|
+
".mp3": "audio/mpeg",
|
|
589
|
+
".wav": "audio/wav",
|
|
590
|
+
".mp4": "video/mp4",
|
|
591
|
+
};
|
|
592
|
+
return mimeTypes[ext] || "application/octet-stream";
|
|
593
|
+
}
|
|
594
|
+
/**
|
|
595
|
+
* Format bytes to human-readable string
|
|
596
|
+
*/
|
|
597
|
+
formatBytes(bytes) {
|
|
598
|
+
if (bytes < 1024)
|
|
599
|
+
return `${bytes} B`;
|
|
600
|
+
if (bytes < 1024 * 1024)
|
|
601
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
602
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
603
|
+
}
|
|
604
|
+
/**
|
|
605
|
+
* Calculate expiration time (48 hours from now)
|
|
606
|
+
*/
|
|
607
|
+
calculateExpiration() {
|
|
608
|
+
const expiration = new Date();
|
|
609
|
+
expiration.setHours(expiration.getHours() + 48);
|
|
610
|
+
return expiration.toISOString();
|
|
611
|
+
}
|
|
210
612
|
}
|
|
211
613
|
//# sourceMappingURL=gemini-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-client.js","sourceRoot":"","sources":["../../src/gemini/gemini-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gemini-client.js","sourceRoot":"","sources":["../../src/gemini/gemini-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAiBtC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,+BAA+B;AAC/B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,OAAO,YAAY;IACf,MAAM,GAAuB,IAAI,CAAC;IAE1C,YAAY,MAAe;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAA2B;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,+DAA+D;YAC/D,MAAM,KAAK,GAAc,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACjC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,+CAA+C;YAC/C,IAAI,KAAK,GAAW,OAAO,CAAC,KAAK,CAAC;YAElC,iDAAiD;YACjD,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,KAAK,GAAG,GAAG,OAAO,CAAC,KAAK,mCAAmC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvF,CAAC;YAED,kEAAkE;YAClE,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,YAAoB,CAAC,MAAM,CAAC;gBAC9D,KAAK;gBACL,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC3C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;gBACpD,KAAK,EAAE,IAAI;gBACX,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC3C,WAAW,EAAE,OAAO,CAAC,gBAAgB,CAAC,WAAW;oBACjD,eAAe,EAAE,OAAO,CAAC,gBAAgB,CAAC,eAAe;oBACzD,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC,aAAa;iBACtD,CAAC,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAA4B;QAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;QACjG,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzE,IAAI,CAAC;YACH,4EAA4E;YAC5E,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,YAAoB,CAAC,MAAM,CAAC;gBAC9D,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,mCAAmC;gBAC1C,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,KAAK;gBACxC,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAClD,GAAG,CAAC,IAAI,CAAC,0BAA0B,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;YAErD,kCAAkC;YAClC,IAAI,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE,CAAC;gBACxC,OAAO,IAAI,CAAC,iBAAiB,CAC3B,WAAW,CAAC,EAAE,EACd,OAAO,CAAC,SAAS,IAAI,MAAM,EAAE,oBAAoB;gBACjD,OAAO,CAAC,gBAAgB,CACzB,CAAC;YACJ,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,aAAqB;QACxC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,YAAoB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,6BAA6B,aAAa,KAAK,GAAG,EAAE,CAAC,CAAC;YAChE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CACrB,aAAqB,EACrB,SAAiB,EACjB,gBAAmC;QAEnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,aAAa;QACzC,IAAI,UAAU,GAA6B,IAAI,CAAC;QAEhD,GAAG,CAAC,IAAI,CAAC,2BAA2B,aAAa,SAAS,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC;QAEhF,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;YAE5D,+EAA+E;YAC/E,IAAI,gBAAgB,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBAChF,MAAM,gBAAgB,CACpB,YAAY,WAAW,CAAC,MAAM,QAAQ,OAAO,YAAY,EACzD,QAAQ,EACR,GAAG,CACJ,CAAC;gBACF,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;YAClC,CAAC;YAED,gBAAgB;YAChB,IAAI,WAAW,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;gBACvC,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,gBAAgB,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxD,CAAC;gBACD,GAAG,CAAC,OAAO,CAAC,yBAAyB,OAAO,GAAG,CAAC,CAAC;gBACjD,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,IAAI,WAAW,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACpC,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACtD,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,oBAAoB,WAAW,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;gBACtE,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,wBAAwB;YACxB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,UAAU;QACV,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,UAAU,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,aAAqB;QAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC;YACH,MAAO,IAAI,CAAC,MAAM,CAAC,YAAoB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9D,GAAG,CAAC,IAAI,CAAC,wBAAwB,aAAa,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,iCAAiC,GAAG,EAAE,CAAC,CAAC;YAClD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAiB;QACtC,mEAAmE;QACnE,MAAM,CAAC,GAAG,QAoBT,CAAC;QAEF,MAAM,OAAO,GAAmB,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,EAAG,CAAC,CAAC,IAA2C,IAAI,MAAM;YAC9D,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,EAAE,EAAE,CAAC,CAAC,EAAE;SACT,CAAC,CAAC,CAAC;QAEJ,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAG,CAAC,CAAC,MAA4B,IAAI,SAAS;YACpD,OAAO;YACP,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;gBACf,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC;gBAC7D,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa;gBAC3D,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,KAAK,CAAC,iBAAiB;aACxE,CAAC,CAAC,CAAC,SAAS;YACb,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC;IACJ,CAAC;IAED,8EAA8E;IAC9E,6BAA6B;IAC7B,8EAA8E;IAE9E;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,OAA8B;QACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEpD,qBAAqB;QACrB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,iBAAiB;QACjB,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAExD,wCAAwC;QACxC,MAAM,gBAAgB,GAAG,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAEnE,kDAAkD;QAClD,MAAM,KAAK,GAAG,gBAAgB,KAAK,iBAAiB;YACtC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAEtD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAE5C,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;gBAC3B,GAAG,CAAC,IAAI,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBACnD,GAAG,CAAC,IAAI,CAAC,mBAAmB,QAAQ,CAAC,eAAe,YAAY,CAAC,CAAC;gBAElE,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,GAAG,CAAC,IAAI,CAAC,uBAAuB,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,wBAAwB;YACxB,MAAM,YAAY,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,KAAa,CAAC,MAAM,CAAC;gBAC3D,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE;oBACN,WAAW,EAAE,QAAQ;oBACrB,QAAQ,EAAE,gBAAgB;iBAC3B;aACF,CAAC,CAAC;YAEH,iCAAiC;YACjC,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAE/D,GAAG,CAAC,OAAO,CAAC,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAE/C,OAAO;gBACL,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ;gBACzC,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5D,KAAK,EAAE,IAAI,CAAC,KAAkB;gBAC9B,UAAU,EAAE,KAAK;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAC5B,QAAgB,EAChB,WAAmB,EACnB,WAAmB;QAEnB,gBAAgB;QAChB,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,wBAAwB,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,aAAa,WAAW,CAAC,MAAM,CAAC,MAAM,YAAY,CAAC,CAAC;QAE7D,MAAM,cAAc,GAAoB,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,IAAI,CAAC;YACH,oBAAoB;YACpB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBACvC,GAAG,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,WAAW,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC;gBAE1H,MAAM,YAAY,GAAG,MAAO,IAAI,CAAC,MAAO,CAAC,KAAa,CAAC,MAAM,CAAC;oBAC5D,IAAI,EAAE,KAAK,CAAC,QAAQ;oBACpB,MAAM,EAAE;wBACN,WAAW,EAAE,GAAG,WAAW,UAAU,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,GAAG;wBACjF,QAAQ,EAAE,iBAAiB;qBAC5B;iBACF,CAAC,CAAC;gBAEH,sBAAsB;gBACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAEjE,cAAc,CAAC,IAAI,CAAC;oBAClB,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,GAAG,EAAE,IAAI,CAAC,GAAG;iBACd,CAAC,CAAC;gBAEH,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE7B,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,UAAU,GAAG,CAAC,cAAc,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;YAED,4BAA4B;YAC5B,MAAM,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAExC,4CAA4C;YAC5C,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAErC,GAAG,CAAC,OAAO,CAAC,OAAO,cAAc,CAAC,MAAM,+BAA+B,CAAC,CAAC;YAEzE,OAAO;gBACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;gBAC7B,WAAW,EAAE,WAAW;gBACxB,GAAG,EAAE,UAAU,CAAC,GAAG;gBACnB,QAAQ,EAAE,iBAAiB;gBAC3B,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI;gBACrC,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBACrC,KAAK,EAAE,QAAQ;gBACf,UAAU,EAAE,IAAI;gBAChB,UAAU,EAAE,WAAW,CAAC,UAAU;gBAClC,MAAM,EAAE,cAAc;gBACtB,YAAY,EAAE,YAAY;aAC3B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,+BAA+B;YAC/B,MAAM,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,SAAS,GAAG,KAAK;QACrE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,YAAY;QAEvC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAE1C,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC;YAC9E,CAAC;YAED,mCAAmC;YACnC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC;IACjF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,QAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,KAAa,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,sBAAsB,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,EAAE,SAAkB;QAChD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,KAAa,CAAC,IAAI,CAAC;gBACrD,QAAQ;gBACR,SAAS;aACV,CAAC,CAAC;YAEH,MAAM,KAAK,GAAiB,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAExF,OAAO;gBACL,KAAK;gBACL,UAAU,EAAE,KAAK,CAAC,MAAM;gBACxB,aAAa,EAAE,QAAQ,CAAC,aAAa;aACtC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;YAC1C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,QAAgB;QAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC;YACH,MAAO,IAAI,CAAC,MAAM,CAAC,KAAa,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC5D,GAAG,CAAC,IAAI,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,yBAAyB,QAAQ,KAAK,GAAG,EAAE,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;QAC9E,MAAM,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;QAEzE,GAAG,CAAC,IAAI,CAAC,qBAAqB,QAAQ,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAExE,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1E,CAAC;YAED,2CAA2C;YAC3C,MAAM,SAAS,GAAc;gBAC3B,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE;aAC7D,CAAC;YAEF,oCAAoC;YACpC,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,eAAe,EAAE,CAAC;gBACpB,KAAK,MAAM,kBAAkB,IAAI,eAAe,EAAE,CAAC;oBACjD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBAC9D,IAAI,cAAc,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACtC,SAAS,CAAC,IAAI,CAAC;4BACb,QAAQ,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;yBAC7E,CAAC,CAAC;wBACH,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACrC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,MAAM,QAAQ,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,MAAc,CAAC,eAAe,CAAC;gBACjE,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,KAAK,EAAE;4BACL,GAAG,SAAS;4BACZ,EAAE,IAAI,EAAE,KAAK,EAAE;yBAChB;qBACF;iBACF;gBACD,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC;oBACnC,WAAW,EAAE,gBAAgB,CAAC,WAAW;oBACzC,eAAe,EAAE,gBAAgB,CAAC,eAAe;iBAClD,CAAC,CAAC,CAAC,SAAS;aACd,CAAC,CAAC;YAEH,wBAAwB;YACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAC3B,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI;gBAC7D,EAAE,CAAC;YAElB,gBAAgB;YAChB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;YAE/C,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YAExC,OAAO;gBACL,MAAM;gBACN,KAAK,EAAE,OAAO;gBACd,UAAU,EAAE,KAAK,EAAE,eAAe;gBAClC,SAAS;aACV,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,GAAG,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;YAC3C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CACxB,SAAmB,EACnB,KAAa,EACb,OAGC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,oCAAoC;QACpC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,aAAa,CAAC;gBACxB,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACtB,KAAK;gBACL,KAAK,EAAE,OAAO,EAAE,KAAY;aAC7B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,MAAM,qBAAqB,CAAC,CAAC;QAE5D,mBAAmB;QACnB,MAAM,YAAY,GAA6C,EAAE,CAAC;QAClE,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC;gBACtC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;gBACtB,KAAK;gBACL,KAAK,EAAE,OAAO,EAAE,KAAY;aAC7B,CAAC,CAAC;YAEH,YAAY,CAAC,IAAI,CAAC;gBAChB,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YAEH,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,iCAAiC;QACjC,MAAM,eAAe,GAAG,OAAO,EAAE,eAAe;YAC9C;;;;kBAIY,KAAK;;;EAGrB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;oBAE3D,CAAC;QAEjB,GAAG,CAAC,IAAI,CAAC,iBAAiB,YAAY,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAElE,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC;YACvC,KAAK,EAAE,eAAe;YACtB,KAAK,EAAE,OAAc;SACtB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QAChF,WAAW,IAAI,eAAe,CAAC,KAAK,EAAE,WAAW,IAAI,CAAC,CAAC;QAEvD,GAAG,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAEhD,OAAO;YACL,MAAM;YACN,KAAK,EAAE,OAAO;YACd,UAAU,EAAE,WAAW;YACvB,SAAS,EAAE,SAAS;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,QAAiB;QAC/B,MAAM,CAAC,GAAG,QAUT,CAAC;QAEF,OAAO;YACL,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE;YAClB,WAAW,EAAE,CAAC,CAAC,WAAW;YAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,0BAA0B;YAClD,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACpF,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,KAAK,EAAG,CAAC,CAAC,KAAmB,IAAI,YAAY;YAC7C,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAgB;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,SAAS,GAA2B;YACxC,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,iBAAiB;YACzB,MAAM,EAAE,oBAAoB;YAC5B,OAAO,EAAE,yEAAyE;YAClF,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,YAAY;YACpB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,WAAW;SACpB,CAAC;QACF,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAa;QAC/B,IAAI,KAAK,GAAG,IAAI;YAAE,OAAO,GAAG,KAAK,IAAI,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;YAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;QAC9B,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;QAChD,OAAO,UAAU,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;CACF"}
|
package/dist/gemini/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
package/dist/gemini/index.js
CHANGED
package/dist/gemini/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gemini/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PDF Chunker Utility
|
|
3
|
+
*
|
|
4
|
+
* Splits large PDFs into smaller chunks that fit within Gemini's limits:
|
|
5
|
+
* - Max 50MB per file
|
|
6
|
+
* - Max 1000 pages per file
|
|
7
|
+
*
|
|
8
|
+
* Uses pdf-lib for pure JavaScript PDF manipulation (no system dependencies).
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Gemini file limits
|
|
12
|
+
*/
|
|
13
|
+
export declare const GEMINI_LIMITS: {
|
|
14
|
+
maxFileSizeBytes: number;
|
|
15
|
+
maxPages: number;
|
|
16
|
+
chunkPages: number;
|
|
17
|
+
chunkSizeBytes: number;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Result of PDF analysis
|
|
21
|
+
*/
|
|
22
|
+
export interface PdfAnalysis {
|
|
23
|
+
filePath: string;
|
|
24
|
+
fileName: string;
|
|
25
|
+
fileSize: number;
|
|
26
|
+
pageCount: number;
|
|
27
|
+
needsChunking: boolean;
|
|
28
|
+
estimatedChunks: number;
|
|
29
|
+
reason?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result of PDF chunking
|
|
33
|
+
*/
|
|
34
|
+
export interface PdfChunk {
|
|
35
|
+
chunkIndex: number;
|
|
36
|
+
totalChunks: number;
|
|
37
|
+
filePath: string;
|
|
38
|
+
fileName: string;
|
|
39
|
+
pageStart: number;
|
|
40
|
+
pageEnd: number;
|
|
41
|
+
pageCount: number;
|
|
42
|
+
fileSize: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Result of chunking operation
|
|
46
|
+
*/
|
|
47
|
+
export interface ChunkingResult {
|
|
48
|
+
success: boolean;
|
|
49
|
+
originalFile: string;
|
|
50
|
+
chunks: PdfChunk[];
|
|
51
|
+
totalPages: number;
|
|
52
|
+
error?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Analyze a PDF to determine if it needs chunking
|
|
56
|
+
*/
|
|
57
|
+
export declare function analyzePdf(filePath: string): Promise<PdfAnalysis>;
|
|
58
|
+
/**
|
|
59
|
+
* Split a PDF into chunks
|
|
60
|
+
*/
|
|
61
|
+
export declare function chunkPdf(filePath: string): Promise<ChunkingResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Clean up chunk files after upload
|
|
64
|
+
*/
|
|
65
|
+
export declare function cleanupChunks(chunks: PdfChunk[]): Promise<void>;
|
|
66
|
+
//# sourceMappingURL=pdf-chunker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf-chunker.d.ts","sourceRoot":"","sources":["../../src/gemini/pdf-chunker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;CAMzB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAgEvE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAwGxE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAYrE"}
|