@cdklabs/cdk-appmod-catalog-blueprints 1.5.0 → 1.6.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.
Files changed (92) hide show
  1. package/.jsii +2537 -204
  2. package/lib/document-processing/adapter/adapter.d.ts +4 -2
  3. package/lib/document-processing/adapter/adapter.js +1 -1
  4. package/lib/document-processing/adapter/queued-s3-adapter.d.ts +9 -2
  5. package/lib/document-processing/adapter/queued-s3-adapter.js +29 -15
  6. package/lib/document-processing/agentic-document-processing.d.ts +4 -0
  7. package/lib/document-processing/agentic-document-processing.js +20 -10
  8. package/lib/document-processing/base-document-processing.d.ts +54 -2
  9. package/lib/document-processing/base-document-processing.js +136 -82
  10. package/lib/document-processing/bedrock-document-processing.d.ts +202 -2
  11. package/lib/document-processing/bedrock-document-processing.js +717 -77
  12. package/lib/document-processing/chunking-config.d.ts +614 -0
  13. package/lib/document-processing/chunking-config.js +5 -0
  14. package/lib/document-processing/default-document-processing-config.js +1 -1
  15. package/lib/document-processing/index.d.ts +1 -0
  16. package/lib/document-processing/index.js +2 -1
  17. package/lib/document-processing/resources/aggregation/handler.py +567 -0
  18. package/lib/document-processing/resources/aggregation/requirements.txt +7 -0
  19. package/lib/document-processing/resources/aggregation/test_handler.py +362 -0
  20. package/lib/document-processing/resources/cleanup/handler.py +276 -0
  21. package/lib/document-processing/resources/cleanup/requirements.txt +5 -0
  22. package/lib/document-processing/resources/cleanup/test_handler.py +436 -0
  23. package/lib/document-processing/resources/default-bedrock-invoke/index.py +85 -3
  24. package/lib/document-processing/resources/default-bedrock-invoke/test_index.py +622 -0
  25. package/lib/document-processing/resources/pdf-chunking/README.md +313 -0
  26. package/lib/document-processing/resources/pdf-chunking/chunking_strategies.py +460 -0
  27. package/lib/document-processing/resources/pdf-chunking/error_handling.py +491 -0
  28. package/lib/document-processing/resources/pdf-chunking/handler.py +958 -0
  29. package/lib/document-processing/resources/pdf-chunking/metrics.py +435 -0
  30. package/lib/document-processing/resources/pdf-chunking/requirements.txt +3 -0
  31. package/lib/document-processing/resources/pdf-chunking/strategy_selection.py +420 -0
  32. package/lib/document-processing/resources/pdf-chunking/structured_logging.py +457 -0
  33. package/lib/document-processing/resources/pdf-chunking/test_chunking_strategies.py +353 -0
  34. package/lib/document-processing/resources/pdf-chunking/test_error_handling.py +487 -0
  35. package/lib/document-processing/resources/pdf-chunking/test_handler.py +609 -0
  36. package/lib/document-processing/resources/pdf-chunking/test_integration.py +694 -0
  37. package/lib/document-processing/resources/pdf-chunking/test_metrics.py +532 -0
  38. package/lib/document-processing/resources/pdf-chunking/test_strategy_selection.py +471 -0
  39. package/lib/document-processing/resources/pdf-chunking/test_structured_logging.py +449 -0
  40. package/lib/document-processing/resources/pdf-chunking/test_token_estimation.py +374 -0
  41. package/lib/document-processing/resources/pdf-chunking/token_estimation.py +189 -0
  42. package/lib/document-processing/tests/agentic-document-processing-nag.test.js +4 -3
  43. package/lib/document-processing/tests/agentic-document-processing.test.js +488 -4
  44. package/lib/document-processing/tests/base-document-processing-nag.test.js +9 -2
  45. package/lib/document-processing/tests/base-document-processing-schema.test.d.ts +1 -0
  46. package/lib/document-processing/tests/base-document-processing-schema.test.js +337 -0
  47. package/lib/document-processing/tests/base-document-processing.test.js +114 -8
  48. package/lib/document-processing/tests/bedrock-document-processing-chunking-nag.test.d.ts +1 -0
  49. package/lib/document-processing/tests/bedrock-document-processing-chunking-nag.test.js +382 -0
  50. package/lib/document-processing/tests/bedrock-document-processing-nag.test.js +4 -3
  51. package/lib/document-processing/tests/bedrock-document-processing-security.test.d.ts +1 -0
  52. package/lib/document-processing/tests/bedrock-document-processing-security.test.js +389 -0
  53. package/lib/document-processing/tests/bedrock-document-processing.test.js +808 -8
  54. package/lib/document-processing/tests/chunking-config.test.d.ts +1 -0
  55. package/lib/document-processing/tests/chunking-config.test.js +238 -0
  56. package/lib/document-processing/tests/queued-s3-adapter-nag.test.js +9 -2
  57. package/lib/document-processing/tests/queued-s3-adapter.test.js +17 -6
  58. package/lib/framework/agents/base-agent.js +1 -1
  59. package/lib/framework/agents/batch-agent.js +1 -1
  60. package/lib/framework/agents/default-agent-config.js +1 -1
  61. package/lib/framework/bedrock/bedrock.js +1 -1
  62. package/lib/framework/custom-resource/default-runtimes.js +1 -1
  63. package/lib/framework/foundation/access-log.js +1 -1
  64. package/lib/framework/foundation/eventbridge-broker.js +1 -1
  65. package/lib/framework/foundation/network.js +1 -1
  66. package/lib/framework/tests/access-log.test.js +5 -2
  67. package/lib/framework/tests/batch-agent.test.js +5 -2
  68. package/lib/framework/tests/bedrock.test.js +5 -2
  69. package/lib/framework/tests/eventbridge-broker.test.js +5 -2
  70. package/lib/framework/tests/framework-nag.test.js +16 -8
  71. package/lib/framework/tests/network.test.js +9 -4
  72. package/lib/tsconfig.tsbuildinfo +1 -1
  73. package/lib/utilities/data-loader.js +1 -1
  74. package/lib/utilities/lambda-iam-utils.js +1 -1
  75. package/lib/utilities/observability/cloudfront-distribution-observability-property-injector.js +1 -1
  76. package/lib/utilities/observability/default-observability-config.js +1 -1
  77. package/lib/utilities/observability/lambda-observability-property-injector.js +1 -1
  78. package/lib/utilities/observability/log-group-data-protection-utils.js +1 -1
  79. package/lib/utilities/observability/powertools-config.d.ts +10 -1
  80. package/lib/utilities/observability/powertools-config.js +19 -3
  81. package/lib/utilities/observability/state-machine-observability-property-injector.js +1 -1
  82. package/lib/utilities/test-utils.d.ts +43 -0
  83. package/lib/utilities/test-utils.js +56 -0
  84. package/lib/utilities/tests/data-loader-nag.test.js +3 -2
  85. package/lib/utilities/tests/data-loader.test.js +3 -2
  86. package/lib/webapp/frontend-construct.js +1 -1
  87. package/lib/webapp/tests/frontend-construct-nag.test.js +3 -2
  88. package/lib/webapp/tests/frontend-construct.test.js +3 -2
  89. package/package.json +6 -5
  90. package/lib/document-processing/resources/default-error-handler/index.js +0 -46
  91. package/lib/document-processing/resources/default-pdf-processor/index.js +0 -46
  92. package/lib/document-processing/resources/default-pdf-validator/index.js +0 -36
@@ -0,0 +1,614 @@
1
+ /**
2
+ * Chunking strategy options for PDF document processing.
3
+ *
4
+ * Choose the strategy based on your document characteristics:
5
+ *
6
+ * - **fixed-pages**: Legacy approach, splits by fixed page count.
7
+ * - Pros: Fast, simple, predictable chunk sizes
8
+ * - Cons: May exceed token limits for dense documents
9
+ * - Best for: Uniform density documents, simple text
10
+ *
11
+ * - **token-based**: Splits based on token count to respect model limits.
12
+ * - Pros: Respects model token limits, handles variable density
13
+ * - Cons: Slower analysis, variable chunk sizes
14
+ * - Best for: Variable density documents, technical content
15
+ *
16
+ * - **hybrid**: RECOMMENDED - Balances token count and page limits.
17
+ * - Pros: Best of both worlds, reliable, flexible
18
+ * - Cons: Slightly more complex configuration
19
+ * - Best for: Most documents, general-purpose processing
20
+ */
21
+ export type ChunkingStrategy = 'fixed-pages' | 'token-based' | 'hybrid';
22
+ /**
23
+ * Processing mode for chunked documents.
24
+ *
25
+ * - **sequential**: Process chunks one at a time (cost-optimized)
26
+ * - **parallel**: Process multiple chunks simultaneously (speed-optimized)
27
+ */
28
+ export type ProcessingMode = 'sequential' | 'parallel';
29
+ /**
30
+ * Aggregation strategy for combining chunk results.
31
+ *
32
+ * - **majority-vote**: Select most frequent classification across chunks
33
+ * - **weighted-vote**: Weight early chunks higher than later chunks
34
+ * - **first-chunk**: Use classification from first chunk only
35
+ */
36
+ export type AggregationStrategy = 'majority-vote' | 'weighted-vote' | 'first-chunk';
37
+ /**
38
+ * Configuration for fixed-pages chunking strategy.
39
+ * Splits documents by fixed page count (legacy approach).
40
+ */
41
+ export interface FixedPagesConfig {
42
+ /**
43
+ * Threshold for triggering chunking based on page count.
44
+ * Documents with pages > threshold will be chunked.
45
+ * @default 100
46
+ */
47
+ readonly pageThreshold?: number;
48
+ /**
49
+ * Number of pages per chunk.
50
+ * @default 50
51
+ */
52
+ readonly chunkSize?: number;
53
+ /**
54
+ * Number of overlapping pages between consecutive chunks.
55
+ * Must be less than chunkSize.
56
+ * @default 5
57
+ */
58
+ readonly overlapPages?: number;
59
+ }
60
+ /**
61
+ * Configuration for token-based chunking strategy.
62
+ * Splits documents based on estimated token count to respect model limits.
63
+ */
64
+ export interface TokenBasedConfig {
65
+ /**
66
+ * Threshold for triggering chunking based on token count.
67
+ * Documents with tokens > threshold will be chunked.
68
+ * @default 150000
69
+ */
70
+ readonly tokenThreshold?: number;
71
+ /**
72
+ * Maximum tokens per chunk.
73
+ * Ensures no chunk exceeds model token limits.
74
+ * @default 100000
75
+ */
76
+ readonly maxTokensPerChunk?: number;
77
+ /**
78
+ * Number of overlapping tokens between consecutive chunks.
79
+ * Provides context continuity across chunks.
80
+ * @default 5000
81
+ */
82
+ readonly overlapTokens?: number;
83
+ }
84
+ /**
85
+ * Configuration for hybrid chunking strategy (RECOMMENDED).
86
+ * Balances token count and page limits for optimal chunking.
87
+ */
88
+ export interface HybridConfig {
89
+ /**
90
+ * Hard limit on pages per chunk.
91
+ * Prevents very large chunks even if token count is low.
92
+ * Note: Bedrock has a hard limit of 100 pages per PDF, so we default to 99
93
+ * to provide a safety margin.
94
+ * @default 99
95
+ */
96
+ readonly maxPagesPerChunk?: number;
97
+ /**
98
+ * Soft target for tokens per chunk.
99
+ * Chunks aim for this token count but respect maxPagesPerChunk.
100
+ * @default 80000
101
+ */
102
+ readonly targetTokensPerChunk?: number;
103
+ /**
104
+ * Threshold for triggering chunking based on page count.
105
+ * Documents with pages > threshold will be chunked.
106
+ * @default 100
107
+ */
108
+ readonly pageThreshold?: number;
109
+ /**
110
+ * Threshold for triggering chunking based on token count.
111
+ * Documents with tokens > threshold will be chunked.
112
+ * @default 150000
113
+ */
114
+ readonly tokenThreshold?: number;
115
+ /**
116
+ * Number of overlapping tokens between consecutive chunks.
117
+ * Provides context continuity across chunks.
118
+ * @default 5000
119
+ */
120
+ readonly overlapTokens?: number;
121
+ }
122
+ /**
123
+ * Comprehensive configuration for PDF chunking behavior.
124
+ *
125
+ * This interface provides fine-grained control over how large PDF documents are
126
+ * split into manageable chunks for processing. The chunking system supports three
127
+ * strategies, each optimized for different document types and use cases.
128
+ *
129
+ * ## Chunking Strategies
130
+ *
131
+ * ### 1. Hybrid Strategy (RECOMMENDED)
132
+ * Balances both token count and page limits for optimal chunking. Best for most
133
+ * documents as it respects model token limits while preventing excessively large chunks.
134
+ *
135
+ * ### 2. Token-Based Strategy
136
+ * Splits documents based on estimated token count. Best for documents with variable
137
+ * content density (e.g., mixed text and images, tables, charts).
138
+ *
139
+ * ### 3. Fixed-Pages Strategy (Legacy)
140
+ * Simple page-based splitting. Fast but may exceed token limits for dense documents.
141
+ * Use only for documents with uniform content density.
142
+ *
143
+ * ## Processing Modes
144
+ *
145
+ * - **parallel**: Process multiple chunks simultaneously (faster, higher cost)
146
+ * - **sequential**: Process chunks one at a time (slower, lower cost)
147
+ *
148
+ * ## Aggregation Strategies
149
+ *
150
+ * - **majority-vote**: Most frequent classification wins (recommended)
151
+ * - **weighted-vote**: Early chunks weighted higher
152
+ * - **first-chunk**: Use first chunk's classification only
153
+ *
154
+ * ## Default Values
155
+ *
156
+ * | Parameter | Default | Description |
157
+ * |-----------|---------|-------------|
158
+ * | strategy | 'hybrid' | Chunking strategy |
159
+ * | pageThreshold | 100 | Pages to trigger chunking |
160
+ * | tokenThreshold | 150000 | Tokens to trigger chunking |
161
+ * | chunkSize | 50 | Pages per chunk (fixed-pages) |
162
+ * | overlapPages | 5 | Overlap pages (fixed-pages) |
163
+ * | maxTokensPerChunk | 100000 | Max tokens per chunk (token-based) |
164
+ * | overlapTokens | 5000 | Overlap tokens (token-based, hybrid) |
165
+ * | targetTokensPerChunk | 80000 | Target tokens per chunk (hybrid) |
166
+ * | maxPagesPerChunk | 99 | Max pages per chunk (hybrid) |
167
+ * | processingMode | 'parallel' | Processing mode |
168
+ * | maxConcurrency | 10 | Max parallel chunks |
169
+ * | aggregationStrategy | 'majority-vote' | Result aggregation |
170
+ * | minSuccessThreshold | 0.5 | Min success rate for valid result |
171
+ */
172
+ export interface ChunkingConfig {
173
+ /**
174
+ * Chunking strategy to use.
175
+ *
176
+ * - **hybrid** (RECOMMENDED): Balances token count and page limits
177
+ * - **token-based**: Respects model token limits, good for variable density
178
+ * - **fixed-pages**: Simple page-based splitting (legacy, not recommended)
179
+ *
180
+ * @default 'hybrid'
181
+ */
182
+ readonly strategy?: ChunkingStrategy;
183
+ /**
184
+ * Threshold for triggering chunking based on page count (fixed-pages strategy).
185
+ * @default 100
186
+ */
187
+ readonly pageThreshold?: number;
188
+ /**
189
+ * Number of pages per chunk (fixed-pages strategy).
190
+ * @default 50
191
+ */
192
+ readonly chunkSize?: number;
193
+ /**
194
+ * Number of overlapping pages between chunks (fixed-pages strategy).
195
+ * @default 5
196
+ */
197
+ readonly overlapPages?: number;
198
+ /**
199
+ * Threshold for triggering chunking based on token count (token-based strategy).
200
+ * @default 150000
201
+ */
202
+ readonly tokenThreshold?: number;
203
+ /**
204
+ * Maximum tokens per chunk (token-based strategy).
205
+ * @default 100000
206
+ */
207
+ readonly maxTokensPerChunk?: number;
208
+ /**
209
+ * Number of overlapping tokens between chunks (token-based and hybrid strategies).
210
+ * @default 5000
211
+ */
212
+ readonly overlapTokens?: number;
213
+ /**
214
+ * Hard limit on pages per chunk (hybrid strategy).
215
+ * Note: Bedrock has a hard limit of 100 pages per PDF, so we default to 99
216
+ * to provide a safety margin.
217
+ * @default 99
218
+ */
219
+ readonly maxPagesPerChunk?: number;
220
+ /**
221
+ * Soft target for tokens per chunk (hybrid strategy).
222
+ * @default 80000
223
+ */
224
+ readonly targetTokensPerChunk?: number;
225
+ /**
226
+ * Processing mode for chunks.
227
+ *
228
+ * - **parallel**: Process multiple chunks simultaneously (faster, higher cost)
229
+ * - **sequential**: Process chunks one at a time (slower, lower cost)
230
+ *
231
+ * @default 'parallel'
232
+ */
233
+ readonly processingMode?: ProcessingMode;
234
+ /**
235
+ * Maximum number of chunks to process concurrently (parallel mode only).
236
+ * Higher values increase speed but also cost.
237
+ *
238
+ * @default 10
239
+ */
240
+ readonly maxConcurrency?: number;
241
+ /**
242
+ * Strategy for aggregating results from multiple chunks.
243
+ *
244
+ * - **majority-vote**: Most frequent classification wins
245
+ * - **weighted-vote**: Early chunks weighted higher
246
+ * - **first-chunk**: Use first chunk's classification
247
+ *
248
+ * @default 'majority-vote'
249
+ */
250
+ readonly aggregationStrategy?: AggregationStrategy;
251
+ /**
252
+ * Minimum percentage of chunks that must succeed for aggregation.
253
+ * If fewer chunks succeed, the result is marked as partial failure.
254
+ *
255
+ * @default 0.5 (50%)
256
+ */
257
+ readonly minSuccessThreshold?: number;
258
+ }
259
+ /**
260
+ * Metadata about a single chunk of a document.
261
+ * Contains information about the chunk's position, size, and S3 location.
262
+ */
263
+ export interface ChunkMetadata {
264
+ /**
265
+ * Unique identifier for this chunk.
266
+ * Format: {documentId}_chunk_{index}
267
+ */
268
+ readonly chunkId: string;
269
+ /**
270
+ * Zero-based index of this chunk in the document.
271
+ */
272
+ readonly chunkIndex: number;
273
+ /**
274
+ * Total number of chunks in the document.
275
+ */
276
+ readonly totalChunks: number;
277
+ /**
278
+ * Starting page number (zero-based) of this chunk.
279
+ */
280
+ readonly startPage: number;
281
+ /**
282
+ * Ending page number (zero-based, inclusive) of this chunk.
283
+ */
284
+ readonly endPage: number;
285
+ /**
286
+ * Number of pages in this chunk.
287
+ */
288
+ readonly pageCount: number;
289
+ /**
290
+ * Estimated token count for this chunk.
291
+ * Based on word-count heuristic (1.3 tokens per word).
292
+ */
293
+ readonly estimatedTokens: number;
294
+ /**
295
+ * S3 bucket containing the chunk file.
296
+ */
297
+ readonly bucket: string;
298
+ /**
299
+ * S3 key for the chunk file.
300
+ * Typically in chunks/ prefix.
301
+ */
302
+ readonly key: string;
303
+ }
304
+ /**
305
+ * Document content location information.
306
+ */
307
+ export interface DocumentContent {
308
+ /**
309
+ * Storage location type (e.g., 's3').
310
+ */
311
+ readonly location: string;
312
+ /**
313
+ * S3 bucket containing the document.
314
+ */
315
+ readonly bucket: string;
316
+ /**
317
+ * S3 key for the document.
318
+ */
319
+ readonly key: string;
320
+ /**
321
+ * Original filename of the document.
322
+ */
323
+ readonly filename: string;
324
+ }
325
+ /**
326
+ * Request payload for PDF analysis and chunking Lambda.
327
+ * Contains document information and chunking configuration.
328
+ */
329
+ export interface ChunkingRequest {
330
+ /**
331
+ * Unique identifier for the document.
332
+ */
333
+ readonly documentId: string;
334
+ /**
335
+ * Content type of the document.
336
+ * Typically 'file' for S3-based documents.
337
+ */
338
+ readonly contentType: string;
339
+ /**
340
+ * Document content location information.
341
+ */
342
+ readonly content: DocumentContent;
343
+ /**
344
+ * Optional chunking configuration.
345
+ * If not provided, uses default configuration.
346
+ */
347
+ readonly config?: ChunkingConfig;
348
+ }
349
+ /**
350
+ * Token analysis results from PDF analysis.
351
+ * Provides information about document size and token distribution.
352
+ */
353
+ export interface TokenAnalysis {
354
+ /**
355
+ * Total estimated tokens in the document.
356
+ */
357
+ readonly totalTokens: number;
358
+ /**
359
+ * Total number of pages in the document.
360
+ */
361
+ readonly totalPages: number;
362
+ /**
363
+ * Average tokens per page across the document.
364
+ */
365
+ readonly avgTokensPerPage: number;
366
+ /**
367
+ * Optional detailed token count for each page.
368
+ * Used for token-based and hybrid chunking strategies.
369
+ */
370
+ readonly tokensPerPage?: number[];
371
+ }
372
+ /**
373
+ * Response when chunking is NOT required.
374
+ * Document is below thresholds and will be processed without chunking.
375
+ */
376
+ export interface NoChunkingResponse {
377
+ /**
378
+ * Document identifier.
379
+ */
380
+ readonly documentId: string;
381
+ /**
382
+ * Indicates chunking is not required.
383
+ */
384
+ readonly requiresChunking: false;
385
+ /**
386
+ * Token analysis results.
387
+ */
388
+ readonly tokenAnalysis: TokenAnalysis;
389
+ /**
390
+ * Human-readable reason why chunking was not applied.
391
+ * Example: "Document has 50 pages, below threshold of 100"
392
+ */
393
+ readonly reason: string;
394
+ }
395
+ /**
396
+ * Chunking configuration used for processing.
397
+ * Includes both user-provided and default values.
398
+ */
399
+ export interface ChunkingConfigUsed {
400
+ readonly strategy: ChunkingStrategy;
401
+ readonly totalPages: number;
402
+ readonly totalTokens: number;
403
+ readonly chunkSize?: number;
404
+ readonly overlapPages?: number;
405
+ readonly maxTokensPerChunk?: number;
406
+ readonly overlapTokens?: number;
407
+ readonly targetTokensPerChunk?: number;
408
+ readonly maxPagesPerChunk?: number;
409
+ readonly processingMode?: string;
410
+ }
411
+ /**
412
+ * Response when chunking IS required.
413
+ * Document exceeds thresholds and has been split into chunks.
414
+ */
415
+ export interface ChunkingResponse {
416
+ /**
417
+ * Document identifier.
418
+ */
419
+ readonly documentId: string;
420
+ /**
421
+ * Indicates chunking is required.
422
+ */
423
+ readonly requiresChunking: true;
424
+ /**
425
+ * Token analysis results with detailed per-page information.
426
+ */
427
+ readonly tokenAnalysis: TokenAnalysis;
428
+ /**
429
+ * Strategy used for chunking.
430
+ */
431
+ readonly strategy: ChunkingStrategy;
432
+ /**
433
+ * Array of chunk metadata for all created chunks.
434
+ */
435
+ readonly chunks: ChunkMetadata[];
436
+ /**
437
+ * Configuration used for chunking.
438
+ * Includes both user-provided and default values.
439
+ */
440
+ readonly config: ChunkingConfigUsed;
441
+ }
442
+ /**
443
+ * Union type for chunking Lambda response.
444
+ * Either chunking is required or not.
445
+ */
446
+ export type ChunkingLambdaResponse = NoChunkingResponse | ChunkingResponse;
447
+ /**
448
+ * Classification result for a chunk.
449
+ */
450
+ export interface ChunkClassificationResult {
451
+ readonly documentClassification: string;
452
+ readonly confidence?: number;
453
+ }
454
+ /**
455
+ * Processing result for a chunk.
456
+ */
457
+ export interface ChunkProcessingResult {
458
+ readonly entities: Entity[];
459
+ }
460
+ /**
461
+ * Result from processing a single chunk.
462
+ * Contains classification and extraction results, or error information.
463
+ */
464
+ export interface ChunkResult {
465
+ /**
466
+ * Chunk identifier.
467
+ */
468
+ readonly chunkId: string;
469
+ /**
470
+ * Zero-based chunk index.
471
+ */
472
+ readonly chunkIndex: number;
473
+ /**
474
+ * Optional classification result for this chunk.
475
+ */
476
+ readonly classificationResult?: ChunkClassificationResult;
477
+ /**
478
+ * Optional extraction result for this chunk.
479
+ */
480
+ readonly processingResult?: ChunkProcessingResult;
481
+ /**
482
+ * Error message if chunk processing failed.
483
+ */
484
+ readonly error?: string;
485
+ }
486
+ /**
487
+ * Extracted entity from document processing.
488
+ */
489
+ export interface Entity {
490
+ /**
491
+ * Type of entity (e.g., 'NAME', 'DATE', 'AMOUNT', 'ADDRESS').
492
+ */
493
+ readonly type: string;
494
+ /**
495
+ * Value of the entity.
496
+ */
497
+ readonly value: string;
498
+ /**
499
+ * Optional page number where entity was found.
500
+ * Entities with page numbers are preserved even if duplicated.
501
+ */
502
+ readonly page?: number;
503
+ /**
504
+ * Optional chunk index where entity was found.
505
+ */
506
+ readonly chunkIndex?: number;
507
+ }
508
+ /**
509
+ * Request payload for aggregation Lambda.
510
+ * Contains results from all processed chunks.
511
+ */
512
+ export interface AggregationRequest {
513
+ /**
514
+ * Document identifier.
515
+ */
516
+ readonly documentId: string;
517
+ /**
518
+ * Results from all processed chunks.
519
+ */
520
+ readonly chunkResults: ChunkResult[];
521
+ /**
522
+ * Strategy to use for aggregation.
523
+ * @default 'majority-vote'
524
+ */
525
+ readonly aggregationStrategy?: AggregationStrategy;
526
+ }
527
+ /**
528
+ * Summary of chunk processing results.
529
+ */
530
+ export interface ChunksSummary {
531
+ /**
532
+ * Total number of chunks created.
533
+ */
534
+ readonly totalChunks: number;
535
+ /**
536
+ * Number of chunks that processed successfully.
537
+ */
538
+ readonly successfulChunks: number;
539
+ /**
540
+ * Number of chunks that failed processing.
541
+ */
542
+ readonly failedChunks: number;
543
+ /**
544
+ * Optional total tokens processed across all chunks.
545
+ */
546
+ readonly totalTokensProcessed?: number;
547
+ }
548
+ /**
549
+ * Aggregated result from processing all chunks.
550
+ * Combines classification and extraction results into final output.
551
+ */
552
+ export interface AggregatedResult {
553
+ /**
554
+ * Document identifier.
555
+ */
556
+ readonly documentId: string;
557
+ /**
558
+ * Final document classification (from majority vote or other strategy).
559
+ */
560
+ readonly classification: string;
561
+ /**
562
+ * Confidence score for the classification (0-1).
563
+ * For majority vote: (count of majority / total chunks)
564
+ */
565
+ readonly classificationConfidence: number;
566
+ /**
567
+ * Deduplicated entities from all chunks.
568
+ * Entities without page numbers are deduplicated by (type, value).
569
+ * Entities with page numbers are preserved even if duplicated.
570
+ */
571
+ readonly entities: Entity[];
572
+ /**
573
+ * Summary of chunk processing results.
574
+ */
575
+ readonly chunksSummary: ChunksSummary;
576
+ /**
577
+ * Indicates if result is partial due to chunk failures.
578
+ * True if fewer than minSuccessThreshold chunks succeeded.
579
+ */
580
+ readonly partialResult: boolean;
581
+ }
582
+ /**
583
+ * Request payload for cleanup Lambda.
584
+ * Contains information about chunks to delete.
585
+ */
586
+ export interface CleanupRequest {
587
+ /**
588
+ * Document identifier.
589
+ */
590
+ readonly documentId: string;
591
+ /**
592
+ * Array of chunk metadata for chunks to delete.
593
+ */
594
+ readonly chunks: ChunkMetadata[];
595
+ }
596
+ /**
597
+ * Response from cleanup Lambda.
598
+ * Reports success and any errors encountered.
599
+ */
600
+ export interface CleanupResponse {
601
+ /**
602
+ * Document identifier.
603
+ */
604
+ readonly documentId: string;
605
+ /**
606
+ * Number of chunks successfully deleted.
607
+ */
608
+ readonly deletedChunks: number;
609
+ /**
610
+ * Array of error messages for failed deletions.
611
+ * Empty if all deletions succeeded.
612
+ */
613
+ readonly errors: string[];
614
+ }
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmtpbmctY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdXNlLWNhc2VzL2RvY3VtZW50LXByb2Nlc3NpbmcvY2h1bmtpbmctY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG4vKipcbiAqIENodW5raW5nIHN0cmF0ZWd5IG9wdGlvbnMgZm9yIFBERiBkb2N1bWVudCBwcm9jZXNzaW5nLlxuICpcbiAqIENob29zZSB0aGUgc3RyYXRlZ3kgYmFzZWQgb24geW91ciBkb2N1bWVudCBjaGFyYWN0ZXJpc3RpY3M6XG4gKlxuICogLSAqKmZpeGVkLXBhZ2VzKio6IExlZ2FjeSBhcHByb2FjaCwgc3BsaXRzIGJ5IGZpeGVkIHBhZ2UgY291bnQuXG4gKiAgIC0gUHJvczogRmFzdCwgc2ltcGxlLCBwcmVkaWN0YWJsZSBjaHVuayBzaXplc1xuICogICAtIENvbnM6IE1heSBleGNlZWQgdG9rZW4gbGltaXRzIGZvciBkZW5zZSBkb2N1bWVudHNcbiAqICAgLSBCZXN0IGZvcjogVW5pZm9ybSBkZW5zaXR5IGRvY3VtZW50cywgc2ltcGxlIHRleHRcbiAqXG4gKiAtICoqdG9rZW4tYmFzZWQqKjogU3BsaXRzIGJhc2VkIG9uIHRva2VuIGNvdW50IHRvIHJlc3BlY3QgbW9kZWwgbGltaXRzLlxuICogICAtIFByb3M6IFJlc3BlY3RzIG1vZGVsIHRva2VuIGxpbWl0cywgaGFuZGxlcyB2YXJpYWJsZSBkZW5zaXR5XG4gKiAgIC0gQ29uczogU2xvd2VyIGFuYWx5c2lzLCB2YXJpYWJsZSBjaHVuayBzaXplc1xuICogICAtIEJlc3QgZm9yOiBWYXJpYWJsZSBkZW5zaXR5IGRvY3VtZW50cywgdGVjaG5pY2FsIGNvbnRlbnRcbiAqXG4gKiAtICoqaHlicmlkKio6IFJFQ09NTUVOREVEIC0gQmFsYW5jZXMgdG9rZW4gY291bnQgYW5kIHBhZ2UgbGltaXRzLlxuICogICAtIFByb3M6IEJlc3Qgb2YgYm90aCB3b3JsZHMsIHJlbGlhYmxlLCBmbGV4aWJsZVxuICogICAtIENvbnM6IFNsaWdodGx5IG1vcmUgY29tcGxleCBjb25maWd1cmF0aW9uXG4gKiAgIC0gQmVzdCBmb3I6IE1vc3QgZG9jdW1lbnRzLCBnZW5lcmFsLXB1cnBvc2UgcHJvY2Vzc2luZ1xuICovXG5leHBvcnQgdHlwZSBDaHVua2luZ1N0cmF0ZWd5ID0gJ2ZpeGVkLXBhZ2VzJyB8ICd0b2tlbi1iYXNlZCcgfCAnaHlicmlkJztcblxuLyoqXG4gKiBQcm9jZXNzaW5nIG1vZGUgZm9yIGNodW5rZWQgZG9jdW1lbnRzLlxuICpcbiAqIC0gKipzZXF1ZW50aWFsKio6IFByb2Nlc3MgY2h1bmtzIG9uZSBhdCBhIHRpbWUgKGNvc3Qtb3B0aW1pemVkKVxuICogLSAqKnBhcmFsbGVsKio6IFByb2Nlc3MgbXVsdGlwbGUgY2h1bmtzIHNpbXVsdGFuZW91c2x5IChzcGVlZC1vcHRpbWl6ZWQpXG4gKi9cbmV4cG9ydCB0eXBlIFByb2Nlc3NpbmdNb2RlID0gJ3NlcXVlbnRpYWwnIHwgJ3BhcmFsbGVsJztcblxuLyoqXG4gKiBBZ2dyZWdhdGlvbiBzdHJhdGVneSBmb3IgY29tYmluaW5nIGNodW5rIHJlc3VsdHMuXG4gKlxuICogLSAqKm1ham9yaXR5LXZvdGUqKjogU2VsZWN0IG1vc3QgZnJlcXVlbnQgY2xhc3NpZmljYXRpb24gYWNyb3NzIGNodW5rc1xuICogLSAqKndlaWdodGVkLXZvdGUqKjogV2VpZ2h0IGVhcmx5IGNodW5rcyBoaWdoZXIgdGhhbiBsYXRlciBjaHVua3NcbiAqIC0gKipmaXJzdC1jaHVuayoqOiBVc2UgY2xhc3NpZmljYXRpb24gZnJvbSBmaXJzdCBjaHVuayBvbmx5XG4gKi9cbmV4cG9ydCB0eXBlIEFnZ3JlZ2F0aW9uU3RyYXRlZ3kgPSAnbWFqb3JpdHktdm90ZScgfCAnd2VpZ2h0ZWQtdm90ZScgfCAnZmlyc3QtY2h1bmsnO1xuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGZpeGVkLXBhZ2VzIGNodW5raW5nIHN0cmF0ZWd5LlxuICogU3BsaXRzIGRvY3VtZW50cyBieSBmaXhlZCBwYWdlIGNvdW50IChsZWdhY3kgYXBwcm9hY2gpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpeGVkUGFnZXNDb25maWcge1xuICAvKipcbiAgICogVGhyZXNob2xkIGZvciB0cmlnZ2VyaW5nIGNodW5raW5nIGJhc2VkIG9uIHBhZ2UgY291bnQuXG4gICAqIERvY3VtZW50cyB3aXRoIHBhZ2VzID4gdGhyZXNob2xkIHdpbGwgYmUgY2h1bmtlZC5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICByZWFkb25seSBwYWdlVGhyZXNob2xkPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGFnZXMgcGVyIGNodW5rLlxuICAgKiBAZGVmYXVsdCA1MFxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygb3ZlcmxhcHBpbmcgcGFnZXMgYmV0d2VlbiBjb25zZWN1dGl2ZSBjaHVua3MuXG4gICAqIE11c3QgYmUgbGVzcyB0aGFuIGNodW5rU2l6ZS5cbiAgICogQGRlZmF1bHQgNVxuICAgKi9cbiAgcmVhZG9ubHkgb3ZlcmxhcFBhZ2VzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHRva2VuLWJhc2VkIGNodW5raW5nIHN0cmF0ZWd5LlxuICogU3BsaXRzIGRvY3VtZW50cyBiYXNlZCBvbiBlc3RpbWF0ZWQgdG9rZW4gY291bnQgdG8gcmVzcGVjdCBtb2RlbCBsaW1pdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5CYXNlZENvbmZpZyB7XG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gdG9rZW4gY291bnQuXG4gICAqIERvY3VtZW50cyB3aXRoIHRva2VucyA+IHRocmVzaG9sZCB3aWxsIGJlIGNodW5rZWQuXG4gICAqIEBkZWZhdWx0IDE1MDAwMFxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heGltdW0gdG9rZW5zIHBlciBjaHVuay5cbiAgICogRW5zdXJlcyBubyBjaHVuayBleGNlZWRzIG1vZGVsIHRva2VuIGxpbWl0cy5cbiAgICogQGRlZmF1bHQgMTAwMDAwXG4gICAqL1xuICByZWFkb25seSBtYXhUb2tlbnNQZXJDaHVuaz86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG92ZXJsYXBwaW5nIHRva2VucyBiZXR3ZWVuIGNvbnNlY3V0aXZlIGNodW5rcy5cbiAgICogUHJvdmlkZXMgY29udGV4dCBjb250aW51aXR5IGFjcm9zcyBjaHVua3MuXG4gICAqIEBkZWZhdWx0IDUwMDBcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBUb2tlbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgaHlicmlkIGNodW5raW5nIHN0cmF0ZWd5IChSRUNPTU1FTkRFRCkuXG4gKiBCYWxhbmNlcyB0b2tlbiBjb3VudCBhbmQgcGFnZSBsaW1pdHMgZm9yIG9wdGltYWwgY2h1bmtpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSHlicmlkQ29uZmlnIHtcbiAgLyoqXG4gICAqIEhhcmQgbGltaXQgb24gcGFnZXMgcGVyIGNodW5rLlxuICAgKiBQcmV2ZW50cyB2ZXJ5IGxhcmdlIGNodW5rcyBldmVuIGlmIHRva2VuIGNvdW50IGlzIGxvdy5cbiAgICogTm90ZTogQmVkcm9jayBoYXMgYSBoYXJkIGxpbWl0IG9mIDEwMCBwYWdlcyBwZXIgUERGLCBzbyB3ZSBkZWZhdWx0IHRvIDk5XG4gICAqIHRvIHByb3ZpZGUgYSBzYWZldHkgbWFyZ2luLlxuICAgKiBAZGVmYXVsdCA5OVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UGFnZXNQZXJDaHVuaz86IG51bWJlcjtcblxuICAvKipcbiAgICogU29mdCB0YXJnZXQgZm9yIHRva2VucyBwZXIgY2h1bmsuXG4gICAqIENodW5rcyBhaW0gZm9yIHRoaXMgdG9rZW4gY291bnQgYnV0IHJlc3BlY3QgbWF4UGFnZXNQZXJDaHVuay5cbiAgICogQGRlZmF1bHQgODAwMDBcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFRva2Vuc1BlckNodW5rPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gcGFnZSBjb3VudC5cbiAgICogRG9jdW1lbnRzIHdpdGggcGFnZXMgPiB0aHJlc2hvbGQgd2lsbCBiZSBjaHVua2VkLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRocmVzaG9sZCBmb3IgdHJpZ2dlcmluZyBjaHVua2luZyBiYXNlZCBvbiB0b2tlbiBjb3VudC5cbiAgICogRG9jdW1lbnRzIHdpdGggdG9rZW5zID4gdGhyZXNob2xkIHdpbGwgYmUgY2h1bmtlZC5cbiAgICogQGRlZmF1bHQgMTUwMDAwXG4gICAqL1xuICByZWFkb25seSB0b2tlblRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG92ZXJsYXBwaW5nIHRva2VucyBiZXR3ZWVuIGNvbnNlY3V0aXZlIGNodW5rcy5cbiAgICogUHJvdmlkZXMgY29udGV4dCBjb250aW51aXR5IGFjcm9zcyBjaHVua3MuXG4gICAqIEBkZWZhdWx0IDUwMDBcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBUb2tlbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29tcHJlaGVuc2l2ZSBjb25maWd1cmF0aW9uIGZvciBQREYgY2h1bmtpbmcgYmVoYXZpb3IuXG4gKlxuICogVGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgZmluZS1ncmFpbmVkIGNvbnRyb2wgb3ZlciBob3cgbGFyZ2UgUERGIGRvY3VtZW50cyBhcmVcbiAqIHNwbGl0IGludG8gbWFuYWdlYWJsZSBjaHVua3MgZm9yIHByb2Nlc3NpbmcuIFRoZSBjaHVua2luZyBzeXN0ZW0gc3VwcG9ydHMgdGhyZWVcbiAqIHN0cmF0ZWdpZXMsIGVhY2ggb3B0aW1pemVkIGZvciBkaWZmZXJlbnQgZG9jdW1lbnQgdHlwZXMgYW5kIHVzZSBjYXNlcy5cbiAqXG4gKiAjIyBDaHVua2luZyBTdHJhdGVnaWVzXG4gKlxuICogIyMjIDEuIEh5YnJpZCBTdHJhdGVneSAoUkVDT01NRU5ERUQpXG4gKiBCYWxhbmNlcyBib3RoIHRva2VuIGNvdW50IGFuZCBwYWdlIGxpbWl0cyBmb3Igb3B0aW1hbCBjaHVua2luZy4gQmVzdCBmb3IgbW9zdFxuICogZG9jdW1lbnRzIGFzIGl0IHJlc3BlY3RzIG1vZGVsIHRva2VuIGxpbWl0cyB3aGlsZSBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZWx5IGxhcmdlIGNodW5rcy5cbiAqXG4gKiAjIyMgMi4gVG9rZW4tQmFzZWQgU3RyYXRlZ3lcbiAqIFNwbGl0cyBkb2N1bWVudHMgYmFzZWQgb24gZXN0aW1hdGVkIHRva2VuIGNvdW50LiBCZXN0IGZvciBkb2N1bWVudHMgd2l0aCB2YXJpYWJsZVxuICogY29udGVudCBkZW5zaXR5IChlLmcuLCBtaXhlZCB0ZXh0IGFuZCBpbWFnZXMsIHRhYmxlcywgY2hhcnRzKS5cbiAqXG4gKiAjIyMgMy4gRml4ZWQtUGFnZXMgU3RyYXRlZ3kgKExlZ2FjeSlcbiAqIFNpbXBsZSBwYWdlLWJhc2VkIHNwbGl0dGluZy4gRmFzdCBidXQgbWF5IGV4Y2VlZCB0b2tlbiBsaW1pdHMgZm9yIGRlbnNlIGRvY3VtZW50cy5cbiAqIFVzZSBvbmx5IGZvciBkb2N1bWVudHMgd2l0aCB1bmlmb3JtIGNvbnRlbnQgZGVuc2l0eS5cbiAqXG4gKiAjIyBQcm9jZXNzaW5nIE1vZGVzXG4gKlxuICogLSAqKnBhcmFsbGVsKio6IFByb2Nlc3MgbXVsdGlwbGUgY2h1bmtzIHNpbXVsdGFuZW91c2x5IChmYXN0ZXIsIGhpZ2hlciBjb3N0KVxuICogLSAqKnNlcXVlbnRpYWwqKjogUHJvY2VzcyBjaHVua3Mgb25lIGF0IGEgdGltZSAoc2xvd2VyLCBsb3dlciBjb3N0KVxuICpcbiAqICMjIEFnZ3JlZ2F0aW9uIFN0cmF0ZWdpZXNcbiAqXG4gKiAtICoqbWFqb3JpdHktdm90ZSoqOiBNb3N0IGZyZXF1ZW50IGNsYXNzaWZpY2F0aW9uIHdpbnMgKHJlY29tbWVuZGVkKVxuICogLSAqKndlaWdodGVkLXZvdGUqKjogRWFybHkgY2h1bmtzIHdlaWdodGVkIGhpZ2hlclxuICogLSAqKmZpcnN0LWNodW5rKio6IFVzZSBmaXJzdCBjaHVuaydzIGNsYXNzaWZpY2F0aW9uIG9ubHlcbiAqXG4gKiAjIyBEZWZhdWx0IFZhbHVlc1xuICpcbiAqIHwgUGFyYW1ldGVyIHwgRGVmYXVsdCB8IERlc2NyaXB0aW9uIHxcbiAqIHwtLS0tLS0tLS0tLXwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLXxcbiAqIHwgc3RyYXRlZ3kgfCAnaHlicmlkJyB8IENodW5raW5nIHN0cmF0ZWd5IHxcbiAqIHwgcGFnZVRocmVzaG9sZCB8IDEwMCB8IFBhZ2VzIHRvIHRyaWdnZXIgY2h1bmtpbmcgfFxuICogfCB0b2tlblRocmVzaG9sZCB8IDE1MDAwMCB8IFRva2VucyB0byB0cmlnZ2VyIGNodW5raW5nIHxcbiAqIHwgY2h1bmtTaXplIHwgNTAgfCBQYWdlcyBwZXIgY2h1bmsgKGZpeGVkLXBhZ2VzKSB8XG4gKiB8IG92ZXJsYXBQYWdlcyB8IDUgfCBPdmVybGFwIHBhZ2VzIChmaXhlZC1wYWdlcykgfFxuICogfCBtYXhUb2tlbnNQZXJDaHVuayB8IDEwMDAwMCB8IE1heCB0b2tlbnMgcGVyIGNodW5rICh0b2tlbi1iYXNlZCkgfFxuICogfCBvdmVybGFwVG9rZW5zIHwgNTAwMCB8IE92ZXJsYXAgdG9rZW5zICh0b2tlbi1iYXNlZCwgaHlicmlkKSB8XG4gKiB8IHRhcmdldFRva2Vuc1BlckNodW5rIHwgODAwMDAgfCBUYXJnZXQgdG9rZW5zIHBlciBjaHVuayAoaHlicmlkKSB8XG4gKiB8IG1heFBhZ2VzUGVyQ2h1bmsgfCA5OSB8IE1heCBwYWdlcyBwZXIgY2h1bmsgKGh5YnJpZCkgfFxuICogfCBwcm9jZXNzaW5nTW9kZSB8ICdwYXJhbGxlbCcgfCBQcm9jZXNzaW5nIG1vZGUgfFxuICogfCBtYXhDb25jdXJyZW5jeSB8IDEwIHwgTWF4IHBhcmFsbGVsIGNodW5rcyB8XG4gKiB8IGFnZ3JlZ2F0aW9uU3RyYXRlZ3kgfCAnbWFqb3JpdHktdm90ZScgfCBSZXN1bHQgYWdncmVnYXRpb24gfFxuICogfCBtaW5TdWNjZXNzVGhyZXNob2xkIHwgMC41IHwgTWluIHN1Y2Nlc3MgcmF0ZSBmb3IgdmFsaWQgcmVzdWx0IHxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaHVua2luZ0NvbmZpZyB7XG4gIC8qKlxuICAgKiBDaHVua2luZyBzdHJhdGVneSB0byB1c2UuXG4gICAqXG4gICAqIC0gKipoeWJyaWQqKiAoUkVDT01NRU5ERUQpOiBCYWxhbmNlcyB0b2tlbiBjb3VudCBhbmQgcGFnZSBsaW1pdHNcbiAgICogLSAqKnRva2VuLWJhc2VkKio6IFJlc3BlY3RzIG1vZGVsIHRva2VuIGxpbWl0cywgZ29vZCBmb3IgdmFyaWFibGUgZGVuc2l0eVxuICAgKiAtICoqZml4ZWQtcGFnZXMqKjogU2ltcGxlIHBhZ2UtYmFzZWQgc3BsaXR0aW5nIChsZWdhY3ksIG5vdCByZWNvbW1lbmRlZClcbiAgICpcbiAgICogQGRlZmF1bHQgJ2h5YnJpZCdcbiAgICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5PzogQ2h1bmtpbmdTdHJhdGVneTtcblxuICAvLyBGaXhlZC1wYWdlcyBzdHJhdGVneSBjb25maWd1cmF0aW9uXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gcGFnZSBjb3VudCAoZml4ZWQtcGFnZXMgc3RyYXRlZ3kpLlxuICAgKiBAZGVmYXVsdCAxMDBcbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VUaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBwYWdlcyBwZXIgY2h1bmsgKGZpeGVkLXBhZ2VzIHN0cmF0ZWd5KS5cbiAgICogQGRlZmF1bHQgNTBcbiAgICovXG4gIHJlYWRvbmx5IGNodW5rU2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIG92ZXJsYXBwaW5nIHBhZ2VzIGJldHdlZW4gY2h1bmtzIChmaXhlZC1wYWdlcyBzdHJhdGVneSkuXG4gICAqIEBkZWZhdWx0IDVcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBQYWdlcz86IG51bWJlcjtcblxuICAvLyBUb2tlbi1iYXNlZCBzdHJhdGVneSBjb25maWd1cmF0aW9uXG4gIC8qKlxuICAgKiBUaHJlc2hvbGQgZm9yIHRyaWdnZXJpbmcgY2h1bmtpbmcgYmFzZWQgb24gdG9rZW4gY291bnQgKHRva2VuLWJhc2VkIHN0cmF0ZWd5KS5cbiAgICogQGRlZmF1bHQgMTUwMDAwXG4gICAqL1xuICByZWFkb25seSB0b2tlblRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogTWF4aW11bSB0b2tlbnMgcGVyIGNodW5rICh0b2tlbi1iYXNlZCBzdHJhdGVneSkuXG4gICAqIEBkZWZhdWx0IDEwMDAwMFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4VG9rZW5zUGVyQ2h1bms/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBvdmVybGFwcGluZyB0b2tlbnMgYmV0d2VlbiBjaHVua3MgKHRva2VuLWJhc2VkIGFuZCBoeWJyaWQgc3RyYXRlZ2llcykuXG4gICAqIEBkZWZhdWx0IDUwMDBcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJsYXBUb2tlbnM/OiBudW1iZXI7XG5cbiAgLy8gSHlicmlkIHN0cmF0ZWd5IGNvbmZpZ3VyYXRpb25cbiAgLyoqXG4gICAqIEhhcmQgbGltaXQgb24gcGFnZXMgcGVyIGNodW5rIChoeWJyaWQgc3RyYXRlZ3kpLlxuICAgKiBOb3RlOiBCZWRyb2NrIGhhcyBhIGhhcmQgbGltaXQgb2YgMTAwIHBhZ2VzIHBlciBQREYsIHNvIHdlIGRlZmF1bHQgdG8gOTlcbiAgICogdG8gcHJvdmlkZSBhIHNhZmV0eSBtYXJnaW4uXG4gICAqIEBkZWZhdWx0IDk5XG4gICAqL1xuICByZWFkb25seSBtYXhQYWdlc1BlckNodW5rPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTb2Z0IHRhcmdldCBmb3IgdG9rZW5zIHBlciBjaHVuayAoaHlicmlkIHN0cmF0ZWd5KS5cbiAgICogQGRlZmF1bHQgODAwMDBcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFRva2Vuc1BlckNodW5rPzogbnVtYmVyO1xuXG4gIC8vIENvbW1vbiBzZXR0aW5nc1xuICAvKipcbiAgICogUHJvY2Vzc2luZyBtb2RlIGZvciBjaHVua3MuXG4gICAqXG4gICAqIC0gKipwYXJhbGxlbCoqOiBQcm9jZXNzIG11bHRpcGxlIGNodW5rcyBzaW11bHRhbmVvdXNseSAoZmFzdGVyLCBoaWdoZXIgY29zdClcbiAgICogLSAqKnNlcXVlbnRpYWwqKjogUHJvY2VzcyBjaHVua3Mgb25lIGF0IGEgdGltZSAoc2xvd2VyLCBsb3dlciBjb3N0KVxuICAgKlxuICAgKiBAZGVmYXVsdCAncGFyYWxsZWwnXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzaW5nTW9kZT86IFByb2Nlc3NpbmdNb2RlO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG51bWJlciBvZiBjaHVua3MgdG8gcHJvY2VzcyBjb25jdXJyZW50bHkgKHBhcmFsbGVsIG1vZGUgb25seSkuXG4gICAqIEhpZ2hlciB2YWx1ZXMgaW5jcmVhc2Ugc3BlZWQgYnV0IGFsc28gY29zdC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IG1heENvbmN1cnJlbmN5PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTdHJhdGVneSBmb3IgYWdncmVnYXRpbmcgcmVzdWx0cyBmcm9tIG11bHRpcGxlIGNodW5rcy5cbiAgICpcbiAgICogLSAqKm1ham9yaXR5LXZvdGUqKjogTW9zdCBmcmVxdWVudCBjbGFzc2lmaWNhdGlvbiB3aW5zXG4gICAqIC0gKip3ZWlnaHRlZC12b3RlKio6IEVhcmx5IGNodW5rcyB3ZWlnaHRlZCBoaWdoZXJcbiAgICogLSAqKmZpcnN0LWNodW5rKio6IFVzZSBmaXJzdCBjaHVuaydzIGNsYXNzaWZpY2F0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYWpvcml0eS12b3RlJ1xuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRpb25TdHJhdGVneT86IEFnZ3JlZ2F0aW9uU3RyYXRlZ3k7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gcGVyY2VudGFnZSBvZiBjaHVua3MgdGhhdCBtdXN0IHN1Y2NlZWQgZm9yIGFnZ3JlZ2F0aW9uLlxuICAgKiBJZiBmZXdlciBjaHVua3Mgc3VjY2VlZCwgdGhlIHJlc3VsdCBpcyBtYXJrZWQgYXMgcGFydGlhbCBmYWlsdXJlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAwLjUgKDUwJSlcbiAgICovXG4gIHJlYWRvbmx5IG1pblN1Y2Nlc3NUaHJlc2hvbGQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgYWJvdXQgYSBzaW5nbGUgY2h1bmsgb2YgYSBkb2N1bWVudC5cbiAqIENvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjaHVuaydzIHBvc2l0aW9uLCBzaXplLCBhbmQgUzMgbG9jYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtNZXRhZGF0YSB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBjaHVuay5cbiAgICogRm9ybWF0OiB7ZG9jdW1lbnRJZH1fY2h1bmtfe2luZGV4fVxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBaZXJvLWJhc2VkIGluZGV4IG9mIHRoaXMgY2h1bmsgaW4gdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtJbmRleDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgY2h1bmtzIGluIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsQ2h1bmtzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFN0YXJ0aW5nIHBhZ2UgbnVtYmVyICh6ZXJvLWJhc2VkKSBvZiB0aGlzIGNodW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRQYWdlOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZGluZyBwYWdlIG51bWJlciAoemVyby1iYXNlZCwgaW5jbHVzaXZlKSBvZiB0aGlzIGNodW5rLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5kUGFnZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcGFnZXMgaW4gdGhpcyBjaHVuay5cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2VDb3VudDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFc3RpbWF0ZWQgdG9rZW4gY291bnQgZm9yIHRoaXMgY2h1bmsuXG4gICAqIEJhc2VkIG9uIHdvcmQtY291bnQgaGV1cmlzdGljICgxLjMgdG9rZW5zIHBlciB3b3JkKS5cbiAgICovXG4gIHJlYWRvbmx5IGVzdGltYXRlZFRva2VuczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTMyBidWNrZXQgY29udGFpbmluZyB0aGUgY2h1bmsgZmlsZS5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTMyBrZXkgZm9yIHRoZSBjaHVuayBmaWxlLlxuICAgKiBUeXBpY2FsbHkgaW4gY2h1bmtzLyBwcmVmaXguXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcbn1cblxuLyoqXG4gKiBEb2N1bWVudCBjb250ZW50IGxvY2F0aW9uIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50Q29udGVudCB7XG4gIC8qKlxuICAgKiBTdG9yYWdlIGxvY2F0aW9uIHR5cGUgKGUuZy4sICdzMycpLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9jYXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogUzMgYnVja2V0IGNvbnRhaW5pbmcgdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFMzIGtleSBmb3IgdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9yaWdpbmFsIGZpbGVuYW1lIG9mIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGZpbGVuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXlsb2FkIGZvciBQREYgYW5hbHlzaXMgYW5kIGNodW5raW5nIExhbWJkYS5cbiAqIENvbnRhaW5zIGRvY3VtZW50IGluZm9ybWF0aW9uIGFuZCBjaHVua2luZyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENodW5raW5nUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb250ZW50IHR5cGUgb2YgdGhlIGRvY3VtZW50LlxuICAgKiBUeXBpY2FsbHkgJ2ZpbGUnIGZvciBTMy1iYXNlZCBkb2N1bWVudHMuXG4gICAqL1xuICByZWFkb25seSBjb250ZW50VHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudCBjb250ZW50IGxvY2F0aW9uIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGVudDogRG9jdW1lbnRDb250ZW50O1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjaHVua2luZyBjb25maWd1cmF0aW9uLlxuICAgKiBJZiBub3QgcHJvdmlkZWQsIHVzZXMgZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlnPzogQ2h1bmtpbmdDb25maWc7XG59XG5cbi8qKlxuICogVG9rZW4gYW5hbHlzaXMgcmVzdWx0cyBmcm9tIFBERiBhbmFseXNpcy5cbiAqIFByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IGRvY3VtZW50IHNpemUgYW5kIHRva2VuIGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUb2tlbkFuYWx5c2lzIHtcbiAgLyoqXG4gICAqIFRvdGFsIGVzdGltYXRlZCB0b2tlbnMgaW4gdGhlIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgdG90YWxUb2tlbnM6IG51bWJlcjtcblxuICAvKipcbiAgICogVG90YWwgbnVtYmVyIG9mIHBhZ2VzIGluIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IHRvdGFsUGFnZXM6IG51bWJlcjtcblxuICAvKipcbiAgICogQXZlcmFnZSB0b2tlbnMgcGVyIHBhZ2UgYWNyb3NzIHRoZSBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGF2Z1Rva2Vuc1BlclBhZ2U6IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZGV0YWlsZWQgdG9rZW4gY291bnQgZm9yIGVhY2ggcGFnZS5cbiAgICogVXNlZCBmb3IgdG9rZW4tYmFzZWQgYW5kIGh5YnJpZCBjaHVua2luZyBzdHJhdGVnaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5zUGVyUGFnZT86IG51bWJlcltdO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIHdoZW4gY2h1bmtpbmcgaXMgTk9UIHJlcXVpcmVkLlxuICogRG9jdW1lbnQgaXMgYmVsb3cgdGhyZXNob2xkcyBhbmQgd2lsbCBiZSBwcm9jZXNzZWQgd2l0aG91dCBjaHVua2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb0NodW5raW5nUmVzcG9uc2Uge1xuICAvKipcbiAgICogRG9jdW1lbnQgaWRlbnRpZmllci5cbiAgICovXG4gIHJlYWRvbmx5IGRvY3VtZW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGNodW5raW5nIGlzIG5vdCByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQ2h1bmtpbmc6IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBUb2tlbiBhbmFseXNpcyByZXN1bHRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdG9rZW5BbmFseXNpczogVG9rZW5BbmFseXNpcztcblxuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgcmVhc29uIHdoeSBjaHVua2luZyB3YXMgbm90IGFwcGxpZWQuXG4gICAqIEV4YW1wbGU6IFwiRG9jdW1lbnQgaGFzIDUwIHBhZ2VzLCBiZWxvdyB0aHJlc2hvbGQgb2YgMTAwXCJcbiAgICovXG4gIHJlYWRvbmx5IHJlYXNvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIENodW5raW5nIGNvbmZpZ3VyYXRpb24gdXNlZCBmb3IgcHJvY2Vzc2luZy5cbiAqIEluY2x1ZGVzIGJvdGggdXNlci1wcm92aWRlZCBhbmQgZGVmYXVsdCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtpbmdDb25maWdVc2VkIHtcbiAgcmVhZG9ubHkgc3RyYXRlZ3k6IENodW5raW5nU3RyYXRlZ3k7XG4gIHJlYWRvbmx5IHRvdGFsUGFnZXM6IG51bWJlcjtcbiAgcmVhZG9ubHkgdG90YWxUb2tlbnM6IG51bWJlcjtcbiAgcmVhZG9ubHkgY2h1bmtTaXplPzogbnVtYmVyO1xuICByZWFkb25seSBvdmVybGFwUGFnZXM/OiBudW1iZXI7XG4gIHJlYWRvbmx5IG1heFRva2Vuc1BlckNodW5rPzogbnVtYmVyO1xuICByZWFkb25seSBvdmVybGFwVG9rZW5zPzogbnVtYmVyO1xuICByZWFkb25seSB0YXJnZXRUb2tlbnNQZXJDaHVuaz86IG51bWJlcjtcbiAgcmVhZG9ubHkgbWF4UGFnZXNQZXJDaHVuaz86IG51bWJlcjtcbiAgcmVhZG9ubHkgcHJvY2Vzc2luZ01vZGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2Ugd2hlbiBjaHVua2luZyBJUyByZXF1aXJlZC5cbiAqIERvY3VtZW50IGV4Y2VlZHMgdGhyZXNob2xkcyBhbmQgaGFzIGJlZW4gc3BsaXQgaW50byBjaHVua3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtpbmdSZXNwb25zZSB7XG4gIC8qKlxuICAgKiBEb2N1bWVudCBpZGVudGlmaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgY2h1bmtpbmcgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSByZXF1aXJlc0NodW5raW5nOiB0cnVlO1xuXG4gIC8qKlxuICAgKiBUb2tlbiBhbmFseXNpcyByZXN1bHRzIHdpdGggZGV0YWlsZWQgcGVyLXBhZ2UgaW5mb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0b2tlbkFuYWx5c2lzOiBUb2tlbkFuYWx5c2lzO1xuXG4gIC8qKlxuICAgKiBTdHJhdGVneSB1c2VkIGZvciBjaHVua2luZy5cbiAgICovXG4gIHJlYWRvbmx5IHN0cmF0ZWd5OiBDaHVua2luZ1N0cmF0ZWd5O1xuXG4gIC8qKlxuICAgKiBBcnJheSBvZiBjaHVuayBtZXRhZGF0YSBmb3IgYWxsIGNyZWF0ZWQgY2h1bmtzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtzOiBDaHVua01ldGFkYXRhW107XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gdXNlZCBmb3IgY2h1bmtpbmcuXG4gICAqIEluY2x1ZGVzIGJvdGggdXNlci1wcm92aWRlZCBhbmQgZGVmYXVsdCB2YWx1ZXMuXG4gICAqL1xuICByZWFkb25seSBjb25maWc6IENodW5raW5nQ29uZmlnVXNlZDtcbn1cblxuLyoqXG4gKiBVbmlvbiB0eXBlIGZvciBjaHVua2luZyBMYW1iZGEgcmVzcG9uc2UuXG4gKiBFaXRoZXIgY2h1bmtpbmcgaXMgcmVxdWlyZWQgb3Igbm90LlxuICovXG5leHBvcnQgdHlwZSBDaHVua2luZ0xhbWJkYVJlc3BvbnNlID0gTm9DaHVua2luZ1Jlc3BvbnNlIHwgQ2h1bmtpbmdSZXNwb25zZTtcblxuLyoqXG4gKiBDbGFzc2lmaWNhdGlvbiByZXN1bHQgZm9yIGEgY2h1bmsuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtDbGFzc2lmaWNhdGlvblJlc3VsdCB7XG4gIHJlYWRvbmx5IGRvY3VtZW50Q2xhc3NpZmljYXRpb246IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZmlkZW5jZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9jZXNzaW5nIHJlc3VsdCBmb3IgYSBjaHVuay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaHVua1Byb2Nlc3NpbmdSZXN1bHQge1xuICByZWFkb25seSBlbnRpdGllczogRW50aXR5W107XG59XG5cbi8qKlxuICogUmVzdWx0IGZyb20gcHJvY2Vzc2luZyBhIHNpbmdsZSBjaHVuay5cbiAqIENvbnRhaW5zIGNsYXNzaWZpY2F0aW9uIGFuZCBleHRyYWN0aW9uIHJlc3VsdHMsIG9yIGVycm9yIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENodW5rUmVzdWx0IHtcbiAgLyoqXG4gICAqIENodW5rIGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBjaHVua0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFplcm8tYmFzZWQgY2h1bmsgaW5kZXguXG4gICAqL1xuICByZWFkb25seSBjaHVua0luZGV4OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNsYXNzaWZpY2F0aW9uIHJlc3VsdCBmb3IgdGhpcyBjaHVuay5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uUmVzdWx0PzogQ2h1bmtDbGFzc2lmaWNhdGlvblJlc3VsdDtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXh0cmFjdGlvbiByZXN1bHQgZm9yIHRoaXMgY2h1bmsuXG4gICAqL1xuICByZWFkb25seSBwcm9jZXNzaW5nUmVzdWx0PzogQ2h1bmtQcm9jZXNzaW5nUmVzdWx0O1xuXG4gIC8qKlxuICAgKiBFcnJvciBtZXNzYWdlIGlmIGNodW5rIHByb2Nlc3NpbmcgZmFpbGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3I/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXh0cmFjdGVkIGVudGl0eSBmcm9tIGRvY3VtZW50IHByb2Nlc3NpbmcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW50aXR5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgZW50aXR5IChlLmcuLCAnTkFNRScsICdEQVRFJywgJ0FNT1VOVCcsICdBRERSRVNTJykuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIHRoZSBlbnRpdHkuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBwYWdlIG51bWJlciB3aGVyZSBlbnRpdHkgd2FzIGZvdW5kLlxuICAgKiBFbnRpdGllcyB3aXRoIHBhZ2UgbnVtYmVycyBhcmUgcHJlc2VydmVkIGV2ZW4gaWYgZHVwbGljYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhZ2U/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNodW5rIGluZGV4IHdoZXJlIGVudGl0eSB3YXMgZm91bmQuXG4gICAqL1xuICByZWFkb25seSBjaHVua0luZGV4PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGF5bG9hZCBmb3IgYWdncmVnYXRpb24gTGFtYmRhLlxuICogQ29udGFpbnMgcmVzdWx0cyBmcm9tIGFsbCBwcm9jZXNzZWQgY2h1bmtzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFnZ3JlZ2F0aW9uUmVxdWVzdCB7XG4gIC8qKlxuICAgKiBEb2N1bWVudCBpZGVudGlmaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXN1bHRzIGZyb20gYWxsIHByb2Nlc3NlZCBjaHVua3MuXG4gICAqL1xuICByZWFkb25seSBjaHVua1Jlc3VsdHM6IENodW5rUmVzdWx0W107XG5cbiAgLyoqXG4gICAqIFN0cmF0ZWd5IHRvIHVzZSBmb3IgYWdncmVnYXRpb24uXG4gICAqIEBkZWZhdWx0ICdtYWpvcml0eS12b3RlJ1xuICAgKi9cbiAgcmVhZG9ubHkgYWdncmVnYXRpb25TdHJhdGVneT86IEFnZ3JlZ2F0aW9uU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogU3VtbWFyeSBvZiBjaHVuayBwcm9jZXNzaW5nIHJlc3VsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2h1bmtzU3VtbWFyeSB7XG4gIC8qKlxuICAgKiBUb3RhbCBudW1iZXIgb2YgY2h1bmtzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSB0b3RhbENodW5rczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY2h1bmtzIHRoYXQgcHJvY2Vzc2VkIHN1Y2Nlc3NmdWxseS5cbiAgICovXG4gIHJlYWRvbmx5IHN1Y2Nlc3NmdWxDaHVua3M6IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGNodW5rcyB0aGF0IGZhaWxlZCBwcm9jZXNzaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgZmFpbGVkQ2h1bmtzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHRvdGFsIHRva2VucyBwcm9jZXNzZWQgYWNyb3NzIGFsbCBjaHVua3MuXG4gICAqL1xuICByZWFkb25seSB0b3RhbFRva2Vuc1Byb2Nlc3NlZD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBBZ2dyZWdhdGVkIHJlc3VsdCBmcm9tIHByb2Nlc3NpbmcgYWxsIGNodW5rcy5cbiAqIENvbWJpbmVzIGNsYXNzaWZpY2F0aW9uIGFuZCBleHRyYWN0aW9uIHJlc3VsdHMgaW50byBmaW5hbCBvdXRwdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdncmVnYXRlZFJlc3VsdCB7XG4gIC8qKlxuICAgKiBEb2N1bWVudCBpZGVudGlmaWVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9jdW1lbnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaW5hbCBkb2N1bWVudCBjbGFzc2lmaWNhdGlvbiAoZnJvbSBtYWpvcml0eSB2b3RlIG9yIG90aGVyIHN0cmF0ZWd5KS5cbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbmZpZGVuY2Ugc2NvcmUgZm9yIHRoZSBjbGFzc2lmaWNhdGlvbiAoMC0xKS5cbiAgICogRm9yIG1ham9yaXR5IHZvdGU6IChjb3VudCBvZiBtYWpvcml0eSAvIHRvdGFsIGNodW5rcylcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzaWZpY2F0aW9uQ29uZmlkZW5jZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWR1cGxpY2F0ZWQgZW50aXRpZXMgZnJvbSBhbGwgY2h1bmtzLlxuICAgKiBFbnRpdGllcyB3aXRob3V0IHBhZ2UgbnVtYmVycyBhcmUgZGVkdXBsaWNhdGVkIGJ5ICh0eXBlLCB2YWx1ZSkuXG4gICAqIEVudGl0aWVzIHdpdGggcGFnZSBudW1iZXJzIGFyZSBwcmVzZXJ2ZWQgZXZlbiBpZiBkdXBsaWNhdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50aXRpZXM6IEVudGl0eVtdO1xuXG4gIC8qKlxuICAgKiBTdW1tYXJ5IG9mIGNodW5rIHByb2Nlc3NpbmcgcmVzdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGNodW5rc1N1bW1hcnk6IENodW5rc1N1bW1hcnk7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiByZXN1bHQgaXMgcGFydGlhbCBkdWUgdG8gY2h1bmsgZmFpbHVyZXMuXG4gICAqIFRydWUgaWYgZmV3ZXIgdGhhbiBtaW5TdWNjZXNzVGhyZXNob2xkIGNodW5rcyBzdWNjZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBwYXJ0aWFsUmVzdWx0OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGF5bG9hZCBmb3IgY2xlYW51cCBMYW1iZGEuXG4gKiBDb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBjaHVua3MgdG8gZGVsZXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsZWFudXBSZXF1ZXN0IHtcbiAgLyoqXG4gICAqIERvY3VtZW50IGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBkb2N1bWVudElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFycmF5IG9mIGNodW5rIG1ldGFkYXRhIGZvciBjaHVua3MgdG8gZGVsZXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2h1bmtzOiBDaHVua01ldGFkYXRhW107XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZnJvbSBjbGVhbnVwIExhbWJkYS5cbiAqIFJlcG9ydHMgc3VjY2VzcyBhbmQgYW55IGVycm9ycyBlbmNvdW50ZXJlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbGVhbnVwUmVzcG9uc2Uge1xuICAvKipcbiAgICogRG9jdW1lbnQgaWRlbnRpZmllci5cbiAgICovXG4gIHJlYWRvbmx5IGRvY3VtZW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogTnVtYmVyIG9mIGNodW5rcyBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZWRDaHVua3M6IG51bWJlcjtcblxuICAvKipcbiAgICogQXJyYXkgb2YgZXJyb3IgbWVzc2FnZXMgZm9yIGZhaWxlZCBkZWxldGlvbnMuXG4gICAqIEVtcHR5IGlmIGFsbCBkZWxldGlvbnMgc3VjY2VlZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JzOiBzdHJpbmdbXTtcbn1cbiJdfQ==
@@ -9,6 +9,6 @@ class DefaultDocumentProcessingConfig {
9
9
  }
10
10
  exports.DefaultDocumentProcessingConfig = DefaultDocumentProcessingConfig;
11
11
  _a = JSII_RTTI_SYMBOL_1;
12
- DefaultDocumentProcessingConfig[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultDocumentProcessingConfig", version: "1.5.0" };
12
+ DefaultDocumentProcessingConfig[_a] = { fqn: "@cdklabs/cdk-appmod-catalog-blueprints.DefaultDocumentProcessingConfig", version: "1.6.0" };
13
13
  DefaultDocumentProcessingConfig.DEFAULT_OBSERVABILITY_METRIC_SVC_NAME = 'document-processing';
14
14
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1kb2N1bWVudC1wcm9jZXNzaW5nLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3VzZS1jYXNlcy9kb2N1bWVudC1wcm9jZXNzaW5nL2RlZmF1bHQtZG9jdW1lbnQtcHJvY2Vzc2luZy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBRXRDLE1BQWEsK0JBQStCOztBQUE1QywwRUFFQzs7O0FBRHdCLHFFQUFxQyxHQUFHLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5leHBvcnQgY2xhc3MgRGVmYXVsdERvY3VtZW50UHJvY2Vzc2luZ0NvbmZpZyB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9PQlNFUlZBQklMSVRZX01FVFJJQ19TVkNfTkFNRSA9ICdkb2N1bWVudC1wcm9jZXNzaW5nJztcbn0iXX0=
@@ -3,3 +3,4 @@ export * from './bedrock-document-processing';
3
3
  export * from './agentic-document-processing';
4
4
  export * from './adapter';
5
5
  export * from './default-document-processing-config';
6
+ export * from './chunking-config';