@mikashboks/capture-intelligence-core 0.2.10 → 0.2.12

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 (55) hide show
  1. package/dist/cjs/capture-envelope.d.ts +30 -0
  2. package/dist/cjs/capture-envelope.d.ts.map +1 -1
  3. package/dist/cjs/capture-envelope.js +3 -0
  4. package/dist/cjs/capture-envelope.js.map +1 -1
  5. package/dist/cjs/capture-trust.d.ts +22 -0
  6. package/dist/cjs/capture-trust.d.ts.map +1 -1
  7. package/dist/cjs/capture-trust.js +86 -0
  8. package/dist/cjs/capture-trust.js.map +1 -1
  9. package/dist/cjs/document-classifier.js +5 -5
  10. package/dist/cjs/document-classifier.js.map +1 -1
  11. package/dist/cjs/document-crop-arbitration.d.ts +33 -3
  12. package/dist/cjs/document-crop-arbitration.d.ts.map +1 -1
  13. package/dist/cjs/document-crop-arbitration.js +54 -11
  14. package/dist/cjs/document-crop-arbitration.js.map +1 -1
  15. package/dist/cjs/glare-mask.d.ts +99 -0
  16. package/dist/cjs/glare-mask.d.ts.map +1 -0
  17. package/dist/cjs/glare-mask.js +210 -0
  18. package/dist/cjs/glare-mask.js.map +1 -0
  19. package/dist/cjs/index.d.ts +6 -4
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +14 -3
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/types.d.ts +6 -0
  24. package/dist/cjs/types.d.ts.map +1 -1
  25. package/dist/cjs/types.js.map +1 -1
  26. package/dist/cjs/version.d.ts +1 -1
  27. package/dist/cjs/version.js +1 -1
  28. package/dist/esm/capture-envelope.d.ts +30 -0
  29. package/dist/esm/capture-envelope.d.ts.map +1 -1
  30. package/dist/esm/capture-envelope.js +3 -0
  31. package/dist/esm/capture-envelope.js.map +1 -1
  32. package/dist/esm/capture-trust.d.ts +22 -0
  33. package/dist/esm/capture-trust.d.ts.map +1 -1
  34. package/dist/esm/capture-trust.js +84 -0
  35. package/dist/esm/capture-trust.js.map +1 -1
  36. package/dist/esm/document-classifier.js +5 -5
  37. package/dist/esm/document-classifier.js.map +1 -1
  38. package/dist/esm/document-crop-arbitration.d.ts +33 -3
  39. package/dist/esm/document-crop-arbitration.d.ts.map +1 -1
  40. package/dist/esm/document-crop-arbitration.js +51 -10
  41. package/dist/esm/document-crop-arbitration.js.map +1 -1
  42. package/dist/esm/glare-mask.d.ts +99 -0
  43. package/dist/esm/glare-mask.d.ts.map +1 -0
  44. package/dist/esm/glare-mask.js +204 -0
  45. package/dist/esm/glare-mask.js.map +1 -0
  46. package/dist/esm/index.d.ts +6 -4
  47. package/dist/esm/index.d.ts.map +1 -1
  48. package/dist/esm/index.js +3 -2
  49. package/dist/esm/index.js.map +1 -1
  50. package/dist/esm/types.d.ts +6 -0
  51. package/dist/esm/types.d.ts.map +1 -1
  52. package/dist/esm/types.js.map +1 -1
  53. package/dist/esm/version.d.ts +1 -1
  54. package/dist/esm/version.js +1 -1
  55. package/package.json +1 -1
@@ -38,6 +38,10 @@ export interface DocumentCropArbitrationMetadata {
38
38
  reason?: string | null;
39
39
  method?: 'perspective' | 'rectangle' | 'none' | string | null;
40
40
  scannerEngine?: string | null;
41
+ selectedCandidateSource?: 'sobel' | 'kt-jscanify' | string | null;
42
+ candidateCount?: number | null;
43
+ runnerUpScore?: number | null;
44
+ candidateRejectReasons?: string[] | null;
41
45
  cropSource?: string | null;
42
46
  cropProvenance?: string | null;
43
47
  rect?: DocumentCropRect | null;
@@ -54,6 +58,13 @@ export interface DocumentCropArbitrationMetadata {
54
58
  cropSelectable?: boolean | null;
55
59
  cutOffRisk?: 'low' | 'medium' | 'high' | string | null;
56
60
  quietZoneClampLossFraction?: number | null;
61
+ quietZoneClampLossByEdge?: {
62
+ left?: number | null;
63
+ top?: number | null;
64
+ right?: number | null;
65
+ bottom?: number | null;
66
+ } | null;
67
+ quietZoneClampMaxEdge?: 'left' | 'top' | 'right' | 'bottom' | string | null;
57
68
  liveRecognitionAccepted?: boolean | null;
58
69
  liveRecognitionReason?: string | null;
59
70
  liveRecognitionPath?: string | null;
@@ -68,6 +79,23 @@ export interface DocumentCropArbitrationMetadata {
68
79
  liveMrzUnexpectedForSide?: boolean | null;
69
80
  captureCandidateDecision?: string | null;
70
81
  classifierConfidence?: number | null;
82
+ /**
83
+ * Cluster-glare coverage (0..1) of the crop region, computed by the SDK from
84
+ * pixels via computeSaturatedClusterCoverage. Present only when the
85
+ * glare-aware demotion flag is enabled (default OFF, pending crop-lab
86
+ * calibration + device QA). When >= GLARE_DOMINANT_COVERAGE the crop geometry
87
+ * is treated as glare-corrupted and demoted to the original frame.
88
+ */
89
+ glareCoverageFraction?: number | null;
90
+ /** True only when the glare mask preprocessor changed at least one analysis pixel. */
91
+ glareMaskApplied?: boolean | null;
92
+ /** Fraction (0..1) of the analysis raster changed by the glare mask preprocessor. */
93
+ glareMaskCoverageFraction?: number | null;
94
+ }
95
+ export interface DocumentCropCaptureEvidenceContext {
96
+ documentType?: string | null;
97
+ documentSide?: 'front' | 'back' | null;
98
+ cropShapeFamily?: DocumentCropShapeFamily | null;
71
99
  }
72
100
  interface DocumentCropSafetyThresholds {
73
101
  minAreaRatio: number;
@@ -99,15 +127,17 @@ export declare const hasCaptureDocumentCutOffEvidence: (metadata: Pick<DocumentC
99
127
  export declare const hasMarginSafeDocumentCropEvidence: (metadata: DocumentCropArbitrationMetadata) => boolean;
100
128
  export declare const hasMarginSafeReliableCaptureQuad: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
101
129
  export declare const hasUnsafeInsetReliableCaptureQuad: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
130
+ export declare const isCardLikeCaptureContext: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
131
+ export declare const isCardFrontCaptureContext: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
102
132
  export declare const getCapturePageRecognitionText: (metadata: DocumentCropArbitrationMetadata | null | undefined, extraText?: string | null) => string;
103
133
  export declare const hasTrustedMrzCaptureEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined, recognitionText?: string | null) => boolean;
104
- export declare const hasTrustedCardFrontRecognitionReason: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
134
+ export declare const hasTrustedCardFrontRecognitionReason: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
105
135
  export declare const hasReadyCaptureCandidateDecision: (metadata: Pick<DocumentCropArbitrationMetadata, "captureCandidateDecision"> | null | undefined) => boolean;
106
- export declare const hasReadySafeCardLiveEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
136
+ export declare const hasReadySafeCardLiveEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
107
137
  export declare const hasHardCaptureCutOffEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
108
138
  export declare const hasNativeOverfullCaptureRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
109
139
  export declare const hasNativeClampedCaptureRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
110
- export declare const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
140
+ export declare const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
111
141
  export declare const isDocumentCropVerified: (metadata: DocumentCropArbitrationMetadata) => boolean;
112
142
  export declare const getDocumentCropRejectedReason: (metadata: DocumentCropArbitrationMetadata) => string;
113
143
  export declare function assessDocumentCropCandidate(croppedBase64: string, cropMetadata: DocumentCropArbitrationMetadata | undefined): DocumentCropArbitrationAssessment;
@@ -1 +1 @@
1
- {"version":3,"file":"document-crop-arbitration.d.ts","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-crop-arbitration.d.ts","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import { decideCaptureTrust } from './capture-trust.js';
2
+ import { getDocumentProfile } from './document-profiles.js';
3
+ import { isGlareDominantRegion } from './glare-mask.js';
2
4
  export const DEFAULT_CROP_CONFIDENCE_THRESHOLD = 0.8;
3
5
  export const DEFAULT_RECTANGLE_CROP_CONFIDENCE_THRESHOLD = 0.88;
4
6
  export const DEFAULT_SUBMIT_CROP_INSET_FLOOR_ENABLED = true;
@@ -284,14 +286,35 @@ const normalizeEvidenceKey = (value) => String(value || '')
284
286
  .toLowerCase()
285
287
  .replace(/[\s-]+/g, '_');
286
288
  const isBackSideStrategy = (strategy) => normalizeEvidenceKey(strategy).endsWith('_back');
287
- const isCardFrontCaptureContext = (metadata) => {
288
- if (metadata?.cropShapeFamily !== 'card-like')
289
+ const getDocumentTypeCropShapeFamily = (documentType) => {
290
+ const trimmed = String(documentType || '').trim();
291
+ if (!trimmed)
292
+ return null;
293
+ switch (getDocumentProfile(trimmed).family) {
294
+ case 'card':
295
+ return 'card-like';
296
+ case 'passport':
297
+ return 'passport-like';
298
+ case 'page':
299
+ return 'document-page-like';
300
+ default:
301
+ return null;
302
+ }
303
+ };
304
+ export const isCardLikeCaptureContext = (metadata, context = {}) => {
305
+ const contextShapeFamily = context.cropShapeFamily ?? getDocumentTypeCropShapeFamily(context.documentType);
306
+ return (contextShapeFamily ?? metadata?.cropShapeFamily) === 'card-like';
307
+ };
308
+ export const isCardFrontCaptureContext = (metadata, context = {}) => {
309
+ if (!isCardLikeCaptureContext(metadata, context))
310
+ return false;
311
+ if (context.documentSide === 'back')
289
312
  return false;
290
313
  if (isBackSideStrategy(metadata?.liveRecognitionStrategy))
291
314
  return false;
292
315
  if (metadata?.liveRecognitionStrategy)
293
316
  return true;
294
- return !metadata?.liveRecognitionStrategy;
317
+ return context.documentSide === 'front' || !metadata?.liveRecognitionStrategy;
295
318
  };
296
319
  export const getCapturePageRecognitionText = (metadata, extraText) => `${metadata?.liveRecognitionReason ?? ''} ${metadata?.liveRecognitionPath ?? ''} ${extraText ?? ''}`
297
320
  .trim()
@@ -316,9 +339,11 @@ export const hasTrustedMrzCaptureEvidence = (metadata, recognitionText) => {
316
339
  const text = getCapturePageRecognitionText(metadata, recognitionText);
317
340
  return metadata.liveRecognitionAccepted === true && text.includes('mrz');
318
341
  };
319
- export const hasTrustedCardFrontRecognitionReason = (metadata) => {
320
- if (!isCardFrontCaptureContext(metadata))
342
+ export const hasTrustedCardFrontRecognitionReason = (metadata, context = {}) => {
343
+ if (!isCardFrontCaptureContext(metadata, context))
321
344
  return true;
345
+ if (!metadata)
346
+ return false;
322
347
  const reason = normalizeEvidenceKey(metadata?.liveRecognitionReason);
323
348
  if (reason === 'quad' || reason === 'classifier')
324
349
  return true;
@@ -331,16 +356,16 @@ export const hasTrustedCardFrontRecognitionReason = (metadata) => {
331
356
  export const hasReadyCaptureCandidateDecision = (metadata) => metadata?.captureCandidateDecision === 'review_candidate' ||
332
357
  metadata?.captureCandidateDecision === 'manual_ready' ||
333
358
  metadata?.captureCandidateDecision === 'auto_ready';
334
- export const hasReadySafeCardLiveEvidence = (metadata) => {
359
+ export const hasReadySafeCardLiveEvidence = (metadata, context = {}) => {
335
360
  if (!metadata)
336
361
  return false;
337
- if (metadata.cropShapeFamily !== 'card-like')
362
+ if (!isCardLikeCaptureContext(metadata, context))
338
363
  return false;
339
364
  const hasReadyCandidateDecision = hasReadyCaptureCandidateDecision(metadata);
340
365
  const hasAcceptedLiveRecognition = metadata.liveRecognitionAccepted === true;
341
366
  if (!hasReadyCandidateDecision && !hasAcceptedLiveRecognition)
342
367
  return false;
343
- if (!hasTrustedCardFrontRecognitionReason(metadata))
368
+ if (!hasTrustedCardFrontRecognitionReason(metadata, context))
344
369
  return false;
345
370
  return hasMarginSafeReliableCaptureQuad(metadata);
346
371
  };
@@ -370,10 +395,10 @@ export const hasNativeOverfullCaptureRisk = (metadata) => Boolean(isNativeViewfi
370
395
  hasHighAreaNativeViewfinderEvidence(metadata)));
371
396
  export const hasNativeClampedCaptureRisk = (metadata) => Boolean(isNativeViewfinderCaptureReason(metadata?.reason) &&
372
397
  (metadata?.clamped === true || metadata?.unsafeReason === 'clamped_edge'));
373
- export const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = (metadata) => (hasReadySafeCardLiveEvidence(metadata) &&
398
+ export const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = (metadata, context = {}) => (hasReadySafeCardLiveEvidence(metadata, context) &&
374
399
  !hasHardCaptureCutOffEvidence(metadata) &&
375
400
  hasNativeOverfullCaptureRisk(metadata)) ||
376
- (hasReadySafeCardLiveEvidence(metadata) &&
401
+ (hasReadySafeCardLiveEvidence(metadata, context) &&
377
402
  hasNativeClampedCaptureRisk(metadata) &&
378
403
  !hasUnsafeInsetReliableCaptureQuad(metadata));
379
404
  const hasReadySafeCardCropEvidence = (metadata) => !hasCaptureDocumentCutOffEvidence(metadata) &&
@@ -483,6 +508,22 @@ export function assessDocumentCropCandidate(croppedBase64, cropMetadata) {
483
508
  cropSelectable: false,
484
509
  });
485
510
  }
511
+ if (isGlareDominantRegion(cropMetadata.glareCoverageFraction)) {
512
+ // Specular glare dominates the crop region: the detected geometry is not
513
+ // trustworthy (the contour may have locked onto the glare blob). Fail safe
514
+ // to the original frame rather than ship a glare-corrupted crop. This is a
515
+ // demotion, not a hard block — the user still submits the original.
516
+ return buildCropArbitrationAssessment({
517
+ decision: 'original_with_overlay',
518
+ policy: 'original_only',
519
+ score: Math.max(0, Math.round((cropMetadata.confidence ?? 0) * 45)),
520
+ reason: 'glare_dominant',
521
+ reviewSafe: true,
522
+ defaultSafe: false,
523
+ cropVerified: false,
524
+ cropSelectable: false,
525
+ });
526
+ }
486
527
  if (hasUnsafeLiveQuadCropEvidence(cropMetadata)) {
487
528
  return buildCropArbitrationAssessment({
488
529
  decision: 'unsafe_crop',
@@ -1 +1 @@
1
- {"version":3,"file":"document-crop-arbitration.js","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-crop-arbitration.js","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA6HxD,MAAM,CAAC,MAAM,iCAAiC,GAAG,GAAG,CAAC;AACrD,MAAM,CAAC,MAAM,2CAA2C,GAAG,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,uCAAuC,GAAG,IAAI,CAAC;AAC5D,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAC7C,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;AAC3D,MAAM,CAAC,MAAM,kCAAkC,GAAG,GAAG,CAAC;AACtD,MAAM,CAAC,MAAM,wBAAwB,GAAG,IAAI,CAAC;AAE7C,MAAM,sCAAsC,GAAG,IAAI,CAAC;AACpD,MAAM,yCAAyC,GAAG,IAAI,CAAC;AACvD,MAAM,4CAA4C,GAAG,KAAK,CAAC;AAC3D,MAAM,kCAAkC,GAAG,KAAK,CAAC;AACjD,MAAM,iCAAiC,GAAG,GAAG,CAAC;AAC9C,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAC/C,MAAM,6CAA6C,GAAG,GAAG,CAAC;AAC1D,MAAM,8CAA8C,GAAG,GAAG,CAAC;AAC3D,MAAM,4CAA4C,GAAG,EAAE,CAAC;AACxD,MAAM,8CAA8C,GAAG,IAAI,CAAC;AAC5D,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAE5C,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC;IAChD,SAAS;IACT,QAAQ;IACR,kBAAkB;IAClB,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,GAAG,iCAAiC;IACpC,aAAa;IACb,sBAAsB;IACtB,iBAAiB;IACjB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,yCAAyC,GAG3C;IACF,WAAW,EAAE;QACX,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,+BAA+B,EAAE,IAAI;QACrC,6BAA6B,EAAE,IAAI;QACnC,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,wBAAwB;KACpC;IACD,eAAe,EAAE;QACf,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,+BAA+B,EAAE,IAAI;QACrC,6BAA6B,EAAE,IAAI;QACnC,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,IAAI;KAC1B;IACD,oBAAoB,EAAE;QACpB,YAAY,EAAE,IAAI;QAClB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,+BAA+B,EAAE,IAAI;QACrC,6BAA6B,EAAE,IAAI;QACnC,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,IAAI;QACf,mBAAmB,EAAE,IAAI;KAC1B;CACF,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAmB,EAAE,CACzD,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEtD,MAAM,eAAe,GAAG,CAAC,MAAiC,EAAU,EAAE,CACpE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEtC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAW,EAAE,CACnE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,wBAAwB,CAAC;AAEhG,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,WAAmB,EAA2B,EAAE;IACzF,IAAI,oBAAoB,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,GAAG,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QAC9E,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,WAAmB,EACnB,WAA4C,EACd,EAAE;IAChC,OAAO,yCAAyC,CAC9C,WAAW,IAAI,0BAA0B,CAAC,WAAW,CAAC,CACvD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,WAAmB,EACnB,gBAA2E,EACnE,EAAE,CACV,gBAAgB,CAAC,mBAAmB,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC;IACrF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;IACxC,CAAC,CAAC,WAAW,CAAC;AAElB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,WAAmB,EACnB,gBAGC,EACQ,EAAE;IACX,MAAM,oBAAoB,GAAG,gCAAgC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAE7F,OAAO,CACL,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC;QACrC,oBAAoB,IAAI,gBAAgB,CAAC,SAAS;QAClD,oBAAoB,IAAI,gBAAgB,CAAC,SAAS,CACnD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mCAAmC,GAAG,CACjD,WAAmB,EACnB,WAA4C,EACpC,EAAE;IACV,MAAM,mBAAmB,GAAG,WAAW,IAAI,0BAA0B,CAAC,WAAW,CAAC,CAAC;IACnF,MAAM,gBAAgB,GAAG,+BAA+B,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAE3F,IACE,mBAAmB,KAAK,WAAW;QACnC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,CAAC,EACvD,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,EAAE,sCAAsC,CAAC,CAAC;IACzF,CAAC;IAED,OAAO,gBAAgB,CAAC,YAAY,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,MAAiC,EAAW,EAAE,CAC5F,iCAAiC,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,MAAiC,EAAW,EAAE,CAC3F,+BAA+B,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,QAA4E,EACnE,EAAE;IACX,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,OAAO,CACL,+BAA+B,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChD,8BAA8B,CAAC,QAAQ,CAAC,MAAM,CAAC,CAChD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,qCAAqC,GAAG,CAAC,QAAmC,EAAW,EAAE,CAC7F,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,aAAa,CAAC;AAEtD,MAAM,sBAAsB,GAAG,CAAC,QAAqD,EAAW,EAAE,CAChG,OAAO,CACL,QAAQ;IACN,CAAC,QAAQ,CAAC,UAAU,KAAK,sBAAsB;QAC7C,QAAQ,CAAC,aAAa,KAAK,mBAAmB;QAC9C,QAAQ,CAAC,MAAM,KAAK,+BAA+B,CAAC,CACzD,CAAC;AAEJ,MAAM,4BAA4B,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC1F,QAAQ,CAAC,aAAa,KAAK,mBAAmB;IAC9C,QAAQ,CAAC,UAAU,KAAK,sBAAsB;IAC9C,QAAQ,CAAC,eAAe,KAAK,WAAW,CAAC;AAE3C,MAAM,uBAAuB,GAAG,CAAC,QAAyC,EAAW,EAAE,CACrF,QAAQ,CAAC,UAAU,KAAK,qBAAqB;IAC7C,QAAQ,CAAC,YAAY,KAAK,IAAI;IAC9B,QAAQ,CAAC,SAAS,KAAK,IAAI;IAC3B,QAAQ,CAAC,kBAAkB,KAAK,KAAK;IACrC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,IAAI,wBAAwB;IACrD,CAAC,QAAQ,CAAC,eAAe,KAAK,WAAW,IAAI,QAAQ,CAAC,eAAe,KAAK,eAAe,CAAC,CAAC;AAE7F,MAAM,iCAAiC,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC/F,QAAQ,CAAC,UAAU,KAAK,sBAAsB;IAC9C,QAAQ,CAAC,MAAM,KAAK,6BAA6B;IACjD,QAAQ,CAAC,SAAS,KAAK,IAAI;IAC3B,QAAQ,CAAC,eAAe,KAAK,eAAe,CAAC;AAE/C,MAAM,6BAA6B,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC3F,OAAO,CACL,QAAQ,CAAC,UAAU,KAAK,qBAAqB;IAC3C,QAAQ,CAAC,eAAe,KAAK,KAAK;IAClC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,GAAG,wBAAwB,CACvD,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC9E,QAAQ,CAAC,cAAc,KAAK,kBAAkB,IAAI,QAAQ,CAAC,UAAU,KAAK,kBAAkB,CAAC;AAE/F,MAAM,mCAAmC,GAAG,CAAC,QAAyC,EAAU,EAAE,CAChG,gBAAgB,CAAC,QAAQ,CAAC;IACxB,CAAC,CAAC,yCAAyC;IAC3C,CAAC,CAAC,sCAAsC,CAAC;AAE7C,MAAM,+BAA+B,GAAG,CACtC,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ;IACN,cAAc,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACnD,QAAQ,CAAC,0BAA0B,IAAI,kCAAkC,CAC5E,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CAAC,IAAsB,EAAE,eAAsC,EAAU,EAAE,CAClG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,kBAAkB,GAAG,CAAC,IAAsB,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAElG,MAAM,mBAAmB,GAAG,CAC1B,QAAyC,EACzC,WAAmB,EACnB,WAAuD,EAC/C,EAAE;IACV,IAAI,uBAAuB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,GAAG,CACb,+BAA+B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,YAAY,EACtE,kCAAkC,CACnC,CAAC;IACJ,CAAC;IAED,IAAI,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3C,OAAO,mCAAmC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;IAED,OAAO,+BAA+B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,YAAY,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,uBAAuB,GAAG,CAAC,QAAyC,EAAW,EAAE,CACrF,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,eAAe,CAAC,CAAC;AAErD,MAAM,mBAAmB,GAAG,CAC1B,QAAyC,EAalC,EAAE;IACT,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAC3C,IACE,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC;QACtC,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,eAAe,CAAC,KAAK,IAAI,CAAC;QAC1B,eAAe,CAAC,MAAM,IAAI,CAAC;QAC3B,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,CAAC,CAAC,IAAI,CAAC,EACX,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACpC,MAAM,eAAe,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACvC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;IACvC,MAAM,gBAAgB,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC7E,MAAM,iBAAiB,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IAChF,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;QAClD,CAAC,CAAC,QAAQ,CAAC,SAAS;QACpB,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC;QACtD,CAAC,CAAC,QAAQ,CAAC,WAAW;QACtB,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE7B,OAAO;QACL,IAAI;QACJ,eAAe;QACf,UAAU;QACV,WAAW;QACX,eAAe;QACf,cAAc;QACd,gBAAgB;QAChB,iBAAiB;QACjB,SAAS;QACT,WAAW;QACX,WAAW,EAAE,QAAQ,CAAC,eAAe;KACtC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,QAAyC,EAAW,EAAE;IACxF,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAEhC,MAAM,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,GACZ,GAAG,YAAY,CAAC;IACjB,MAAM,gBAAgB,GAAG,+BAA+B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE7E,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,SAAS,GAAG,YAAY;QAAE,OAAO,KAAK,CAAC;IAC3C,IACE,UAAU,GAAG,gBAAgB,CAAC,aAAa;QAC3C,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,IACE,eAAe,GAAG,CAAC;QACnB,gBAAgB,GAAG,CAAC;QACpB,cAAc,GAAG,CAAC;QAClB,iBAAiB,GAAG,CAAC;QACrB,eAAe,GAAG,gBAAgB,CAAC,+BAA+B;QAClE,gBAAgB,GAAG,gBAAgB,CAAC,+BAA+B;QACnE,cAAc,GAAG,gBAAgB,CAAC,6BAA6B;QAC/D,iBAAiB,GAAG,gBAAgB,CAAC,6BAA6B,EAClE,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,KAAwB,EACxB,eAAsC,EAC9B,EAAE,CACV,IAAI,CAAC,GAAG,CACN,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,EAC5C,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,EAC7C,CAAC,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,EACtE,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CACzE,CAAC;AAEJ,MAAM,2BAA2B,GAAG,CAAC,QAAyC,EAAiB,EAAE;IAC/F,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,QAAQ,CAAC;IAC9C,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5F,IACE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC;QACtC,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,eAAe,CAAC,KAAK,IAAI,CAAC;QAC1B,eAAe,CAAC,MAAM,IAAI,CAAC,EAC3B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAAC,QAAyC,EAAiB,EAAE;IAC5F,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,iBAAiB,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAC;IACzD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,IAAI,CAAC,GAAG,CACb,YAAY,CAAC,eAAe,EAC5B,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,gBAAgB,EAC7B,YAAY,CAAC,iBAAiB,CAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,CACrC,QAAyC,EAC1B,EAAE;IACjB,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,iBAAiB,KAAK,IAAI;QAAE,OAAO,iBAAiB,CAAC;IAEzD,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAE/B,OAAO,IAAI,CAAC,GAAG,CACb,YAAY,CAAC,eAAe,EAC5B,YAAY,CAAC,cAAc,EAC3B,YAAY,CAAC,gBAAgB,EAC7B,YAAY,CAAC,iBAAiB,CAC/B,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,QAAyC,EAChC,EAAE;IACX,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,yBAAyB,GAAG,mCAAmC,CAAC,QAAQ,CAAC,CAAC;IAEhF,OAAO,OAAO,CACZ,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,GAAG;QAC/B,iBAAiB,KAAK,IAAI;QAC1B,iBAAiB,IAAI,yBAAyB;QAC9C,0BAA0B,CAAC,QAAQ,CAAC,CACvC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ,EAAE,eAAe;IACvB,qCAAqC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAClE,QAAQ,CAAC,kBAAkB,KAAK,KAAK;IACrC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,IAAI,wBAAwB,CACxD,CAAC;AAEJ,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAC/C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ,EAAE,eAAe;IACvB,qCAAqC,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAClE,QAAQ,CAAC,kBAAkB,KAAK,KAAK;IACrC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,GAAG,wBAAwB,CACvD,CAAC;AAEJ,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAU,EAAE,CACxE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;KAChB,IAAI,EAAE;KACN,WAAW,EAAE;KACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAE7B,MAAM,kBAAkB,GAAG,CAAC,QAAmC,EAAW,EAAE,CAC1E,oBAAoB,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAEnD,MAAM,8BAA8B,GAAG,CACrC,YAAuC,EACP,EAAE;IAClC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAE1B,QAAQ,kBAAkB,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QAC3C,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,UAAU;YACb,OAAO,eAAe,CAAC;QACzB,KAAK,MAAM;YACT,OAAO,oBAAoB,CAAC;QAC9B;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,QAA4D,EAC5D,UAA8C,EAAE,EACvC,EAAE;IACX,MAAM,kBAAkB,GACtB,OAAO,CAAC,eAAe,IAAI,8BAA8B,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAElF,OAAO,CAAC,kBAAkB,IAAI,QAAQ,EAAE,eAAe,CAAC,KAAK,WAAW,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,QAA4D,EAC5D,UAA8C,EAAE,EACvC,EAAE;IACX,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAClD,IAAI,kBAAkB,CAAC,QAAQ,EAAE,uBAAuB,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,IAAI,QAAQ,EAAE,uBAAuB;QAAE,OAAO,IAAI,CAAC;IAEnD,OAAO,OAAO,CAAC,YAAY,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,uBAAuB,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,QAA4D,EAC5D,SAAyB,EACjB,EAAE,CACV,GAAG,QAAQ,EAAE,qBAAqB,IAAI,EAAE,IAAI,QAAQ,EAAE,mBAAmB,IAAI,EAAE,IAC7E,SAAS,IAAI,EACf,EAAE;KACC,IAAI,EAAE;KACN,WAAW,EAAE,CAAC;AAEnB,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EAC5D,eAA+B,EACtB,EAAE;IACX,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,QAAQ,CAAC,wBAAwB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7D,IAAI,QAAQ,CAAC,uBAAuB,KAAK,KAAK,IAAI,QAAQ,CAAC,gBAAgB,KAAK,KAAK,EAAE,CAAC;QACtF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,kBAAkB,KAAK,KAAK,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9F,IAAI,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,8CAA8C,EAAE,CAAC;QACvF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,QAAQ,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,QAAQ,CAAC,uBAAuB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAE5D,MAAM,IAAI,GAAG,6BAA6B,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IACtE,OAAO,QAAQ,CAAC,uBAAuB,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oCAAoC,GAAG,CAClD,QAA4D,EAC5D,UAA8C,EAAE,EACvC,EAAE;IACX,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACrE,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IAC9D,IACE,cAAc,CAAC,QAAQ,EAAE,oBAAoB,CAAC;QAC9C,QAAQ,CAAC,oBAAoB,IAAI,4CAA4C,EAC7E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,4BAA4B,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAC9C,QAA8F,EACrF,EAAE,CACX,QAAQ,EAAE,wBAAwB,KAAK,kBAAkB;IACzD,QAAQ,EAAE,wBAAwB,KAAK,cAAc;IACrD,QAAQ,EAAE,wBAAwB,KAAK,YAAY,CAAC;AAEtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EAC5D,UAA8C,EAAE,EACvC,EAAE;IACX,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,MAAM,yBAAyB,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,0BAA0B,GAAG,QAAQ,CAAC,uBAAuB,KAAK,IAAI,CAAC;IAC7E,IAAI,CAAC,yBAAyB,IAAI,CAAC,0BAA0B;QAAE,OAAO,KAAK,CAAC;IAC5E,IAAI,CAAC,oCAAoC,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3E,OAAO,gCAAgC,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,QAAQ,EAAE,OAAO,KAAK,IAAI;IACxB,QAAQ,EAAE,YAAY,KAAK,cAAc;IACzC,iCAAiC,CAAC,QAAQ,CAAC,CAC9C,CAAC;AAEJ,MAAM,+BAA+B,GAAG,CAAC,MAAiC,EAAW,EAAE;IACrF,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtD,OAAO,CACL,UAAU,KAAK,+BAA+B;QAC9C,UAAU,CAAC,UAAU,CAAC,gCAAgC,CAAC,CACxD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAAC,MAAiC,EAAW,EAAE;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAEtD,OAAO,CACL,+BAA+B,CAAC,UAAU,CAAC;QAC3C,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC/B,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACxC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC/B,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CACrC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,mCAAmC,GAAG,CAC1C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC/C,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC;IACnC,QAAQ,CAAC,SAAS,IAAI,8BAA8B,CACvD,CAAC;AAEJ,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC/C,CAAC,QAAQ,EAAE,YAAY,KAAK,WAAW;QACrC,QAAQ,EAAE,YAAY,KAAK,mBAAmB;QAC9C,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC;QACxC,mCAAmC,CAAC,QAAQ,CAAC,CAAC,CACnD,CAAC;AAEJ,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,QAA4D,EACnD,EAAE,CACX,OAAO,CACL,+BAA+B,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC/C,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,IAAI,QAAQ,EAAE,YAAY,KAAK,cAAc,CAAC,CAC5E,CAAC;AAEJ,MAAM,CAAC,MAAM,iDAAiD,GAAG,CAC/D,QAA4D,EAC5D,UAA8C,EAAE,EACvC,EAAE,CACX,CAAC,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC9C,CAAC,4BAA4B,CAAC,QAAQ,CAAC;IACvC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC,4BAA4B,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC9C,2BAA2B,CAAC,QAAQ,CAAC;QACrC,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAElD,MAAM,4BAA4B,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC1F,CAAC,gCAAgC,CAAC,QAAQ,CAAC;IAC3C,CAAC,4BAA4B,CAAC,QAAQ,CAAC;IACvC,0BAA0B,CAAC,QAAQ,CAAC;IACpC,4BAA4B,CAAC,QAAQ,CAAC;IACtC,CAAC,QAAQ,CAAC,UAAU,KAAK,MAAM,IAAI,iDAAiD,CAAC,QAAQ,CAAC,CAAC,CAAC;AAElG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,QAAyC,EAAW,EAAE,CAC3F,QAAQ,CAAC,OAAO,KAAK,IAAI;IACzB,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,IAAI;QAC9B,CAAC,4BAA4B,CAAC,QAAQ,CAAC;QACvC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC5D,4BAA4B,CAAC,QAAQ,CAAC;QACtC,CAAC,QAAQ,CAAC,SAAS,KAAK,KAAK,IAAI,iCAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEnF,MAAM,wBAAwB,GAAG,CAAC,QAAyC,EAAW,EAAE,CACtF,sBAAsB,CAAC,QAAQ,CAAC;IAChC,sBAAsB,CAAC,QAAQ,CAAC;IAChC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,QAAyC,EACjC,EAAE;IACV,IAAI,+BAA+B,CAAC,QAAQ,CAAC;QAAE,OAAO,oBAAoB,CAAC;IAC3E,IAAI,QAAQ,CAAC,YAAY;QAAE,OAAO,QAAQ,CAAC,YAAY,CAAC;IACxD,IAAI,QAAQ,CAAC,OAAO;QAAE,OAAO,cAAc,CAAC;IAE5C,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,YAAY;QAAE,OAAO,sBAAsB,CAAC;IAEjD,MAAM,EACJ,UAAU,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,WAAW,GACZ,GAAG,YAAY,CAAC;IACjB,MAAM,gBAAgB,GAAG,+BAA+B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE7E,IACE,CAAC,cAAc,CAAC,WAAW,CAAC;QAC5B,UAAU,GAAG,gBAAgB,CAAC,aAAa;QAC3C,WAAW,GAAG,gBAAgB,CAAC,cAAc;QAC7C,CAAC,wBAAwB,CAAC,WAAW,EAAE,gBAAgB,CAAC,EACxD,CAAC;QACD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED,IACE,eAAe,GAAG,CAAC;QACnB,gBAAgB,GAAG,CAAC;QACpB,cAAc,GAAG,CAAC;QAClB,iBAAiB,GAAG,CAAC;QACrB,eAAe,GAAG,gBAAgB,CAAC,+BAA+B;QAClE,gBAAgB,GAAG,gBAAgB,CAAC,+BAA+B;QACnE,cAAc,GAAG,gBAAgB,CAAC,6BAA6B;QAC/D,iBAAiB,GAAG,gBAAgB,CAAC,6BAA6B,EAClE,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAED,IAAI,SAAS,GAAG,YAAY;QAAE,OAAO,gBAAgB,CAAC;IAEtD,OAAO,sBAAsB,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,iCAAiC,GAAG,CAAC,YAA6C,EAAU,EAAE,CAClG,YAAY,CAAC,MAAM,KAAK,aAAa;IACnC,CAAC,CAAC,iCAAiC;IACnC,CAAC,CAAC,2CAA2C,CAAC;AAElD,MAAM,8BAA8B,GAAG,CAAC,EACtC,QAAQ,EACR,MAAM,EACN,KAAK,EACL,MAAM,EACN,UAAU,EACV,WAAW,GAAG,KAAK,EACnB,YAAY,GAAG,KAAK,EACpB,cAAc,GAAG,KAAK,GACY,EAAqC,EAAE,CAAC,CAAC;IAC3E,QAAQ;IACR,MAAM;IACN,KAAK;IACL,MAAM;IACN,UAAU;IACV,WAAW;IACX,YAAY;IACZ,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,CAAC,YAA6C,EAAW,EAAE;IAChG,MAAM,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,mBAAmB,GACvB,uBAAuB,CAAC,YAAY,CAAC,IAAI,iCAAiC,CAAC,YAAY,CAAC,CAAC;IAC3F,MAAM,WAAW,GAAG,mBAAmB;QACrC,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,iCAAiC,CAAC;IACtC,MAAM,YAAY,GAAG,mBAAmB;QACtC,CAAC,CAAC,8CAA8C;QAChD,CAAC,CAAC,kCAAkC,CAAC;IAEvC,OAAO,CACL,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW;QAChD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,YAAY,CAClD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAAC,QAAyC,EAAW,EAAE;IAC3F,MAAM,iBAAiB,GAAG,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAEnE,OAAO,CACL,iBAAiB,KAAK,IAAI,IAAI,iBAAiB,IAAI,4CAA4C,CAChG,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,2BAA2B,CACzC,aAAqB,EACrB,YAAyD;IAEzD,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC7D,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,kBAAkB;YACpE,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IACE,gCAAgC,CAAC,YAAY,CAAC;QAC9C,+BAA+B,CAAC,YAAY,CAAC,EAC7C,CAAC;QACD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,+BAA+B,CAAC,YAAY,CAAC;gBACnD,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,YAAY,CAAC,MAAM,IAAI,0BAA0B;YACrD,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,qBAAqB,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC9D,yEAAyE;QACzE,2EAA2E;QAC3E,2EAA2E;QAC3E,oEAAoE;QACpE,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,gBAAgB;YACxB,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,6BAA6B,CAAC,YAAY,CAAC,EAAE,CAAC;QAChD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,CAAC,cAAc,KAAK,KAAK,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,CAAC;QACnF,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,0BAA0B;YAClC,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,eAAe;YACzB,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9C,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,iBAAiB;YACzB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,6BAA6B,CAAC,YAAY,CAAC;YACnD,UAAU,EAAE,KAAK;YACjB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,wBAAwB,GAC5B,sBAAsB,CAAC,YAAY,CAAC,IAAI,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAEjF,IAAI,YAAY,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QACrC,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,uBAAuB;YAC/B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,wBAAwB;YACtC,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IACE,uCAAuC;QACvC,wBAAwB;QACxB,CAAC,6BAA6B,CAAC,YAAY,CAAC,EAC5C,CAAC;QACD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,uBAAuB;YACjC,MAAM,EAAE,eAAe;YACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACnE,MAAM,EAAE,sBAAsB;YAC9B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,wBAAwB;YACtC,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,wBAAwB,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;YACxE,MAAM,EAAE,2BAA2B;YACnC,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED,IACE,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,iCAAiC,CAAC,YAAY,CAAC;QACjF,wBAAwB,EACxB,CAAC;QACD,OAAO,8BAA8B,CAAC;YACpC,QAAQ,EAAE,cAAc;YACxB,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACrE,MAAM,EAAE,oBAAoB;YAC5B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,8BAA8B,CAAC;QACpC,QAAQ,EAAE,uBAAuB;QACjC,MAAM,EAAE,eAAe;QACvB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACnE,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,mBAAmB;QAClF,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,wBAAwB;QACtC,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,aAAqB,EACrB,YAAyD;IAEzD,OAAO,2BAA2B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,aAAqB,EACrB,YAAyD,EACzD,SAA6B,KAAK;IAElC,MAAM,UAAU,GAAG,2BAA2B,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE5E,OAAO,kBAAkB,CAAC;QACxB,OAAO,EAAE;YACP,MAAM;YACN,KAAK,EAAE,SAAS;YAChB,aAAa,EACX,YAAY,EAAE,UAAU,KAAK,yBAAyB;gBACpD,CAAC,CAAC,yBAAyB;gBAC3B,CAAC,CAAC,QAAQ;SACf;QACD,OAAO,EAAE;YACP,UAAU,EAAE,IAAI;YAChB,iBAAiB,EAAE,IAAI;YACvB,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,QAAQ,EAAE,KAAK;SAChB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,YAAY,EAAE,OAAO;YAC9B,UAAU,EAAE,YAAY,EAAE,cAAc,IAAI,YAAY,EAAE,UAAU,IAAI,IAAI;YAC5E,MAAM,EAAE,UAAU,CAAC,QAAQ,KAAK,aAAa,IAAI,UAAU,CAAC,MAAM,KAAK,iBAAiB;YACxF,YAAY,EAAE,YAAY,EAAE,YAAY,IAAI,SAAS;YACrD,OAAO,EAAE,YAAY,EAAE,OAAO;YAC9B,UAAU,EAAE,YAAY,EAAE,UAAU;YACpC,UAAU,EAAE,UAAU,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACvE,SAAS,EAAE,YAAY,EAAE,SAAS;YAClC,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,gBAAgB,EAAE,UAAU,CAAC,WAAW;YACxC,iBAAiB,EAAE,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,UAAU;SACnE;KACF,CAAC,CAAC,aAAa,CAAC;AACnB,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Glare / specular masking for the document crop path.
3
+ *
4
+ * Problem (prod failure class #4, "glare steals the contour"): on reflective
5
+ * laminated Sierra Leone IDs and glossy security overlays a specular highlight
6
+ * forms a high-contrast blob whose edges out-compete the true document edge.
7
+ * The contour/Sobel detectors run on a plain luma grayscale with NO pre-mask, so
8
+ * (a) the detector can lock onto the glare boundary -> wrong crop, or (b) glare
9
+ * washes out a true edge -> under-segmentation.
10
+ *
11
+ * This module provides two pure, DOM-free primitives over a luma grey buffer:
12
+ *
13
+ * 1. computeSaturatedClusterCoverage() - what fraction of a region is
14
+ * *cluster* glare (a saturated pixel surrounded by saturated pixels - a
15
+ * specular blob, not an isolated bright speck). Used as a fail-safe
16
+ * DEMOTION signal: a crop whose region is glare-dominant should not be
17
+ * trusted (fall back to the original frame) - see document-crop-arbitration.
18
+ *
19
+ * 2. maskSaturatedClusters() - neutralize cluster-glare pixels to a local
20
+ * non-saturated mean BEFORE edge/contour scoring so the blob stops forming
21
+ * a fake edge. Used (flag-gated) on the review/redetect crop grey buffer.
22
+ *
23
+ * "cluster" is the same intent as quality-checks.hasReviewStageGlare's
24
+ * saturated-cluster definition (deliberately NOT a single-pixel maxBrightness -
25
+ * that was the over-sensitive glare bug). A uniformly bright (non-specular)
26
+ * document is NOT cluster glare because its bright pixels are everywhere, not in
27
+ * a tight blob; the neighbor-ratio test is what separates specular blobs from a
28
+ * generally bright frame, protecting bright/over-exposed but valid documents.
29
+ *
30
+ * NOTE: thresholds here are conservative initial values. They MUST be calibrated
31
+ * against real glare images (crop-lab) and device-QA'd before the SDK is allowed
32
+ * to compute + feed coverage into the live decision. The SDK computation is
33
+ * gated OFF by default for exactly this reason (see runtime-flags
34
+ * isGlareAwareCropDemotionEnabled); the arbitration logic below is always-on but
35
+ * inert until a caller supplies glareCoverageFraction.
36
+ */
37
+ /** Luma at/above this is "saturated" (specular white). */
38
+ export declare const GLARE_SATURATION_LUMA = 250;
39
+ /**
40
+ * A saturated pixel is part of a *cluster* (specular blob) only when at least
41
+ * this fraction of its 8-neighborhood is also saturated. Isolated saturated
42
+ * specks (text highlights, single hot pixels) are NOT counted - this is the
43
+ * guard that keeps a generally bright document from reading as glare.
44
+ */
45
+ export declare const GLARE_CLUSTER_MIN_NEIGHBOR_RATIO = 0.625;
46
+ /**
47
+ * Crop-region cluster-glare coverage at/above this fraction => the crop geometry
48
+ * is considered glare-corrupted and the crop should be DEMOTED to the original
49
+ * frame (fail-safe). Conservative initial value; calibrate via crop-lab.
50
+ */
51
+ export declare const GLARE_DOMINANT_COVERAGE = 0.18;
52
+ export interface GlareMaskRegion {
53
+ x: number;
54
+ y: number;
55
+ w: number;
56
+ h: number;
57
+ }
58
+ export interface SaturatedClusterCoverage {
59
+ /** Fraction (0..1) of region pixels that are cluster glare. */
60
+ coverageFraction: number;
61
+ /** Fraction (0..1) of region pixels that are raw-saturated (pre-cluster). */
62
+ saturatedFraction: number;
63
+ /** Pixels examined in the region (0 when the region is empty/invalid). */
64
+ sampledPixels: number;
65
+ }
66
+ type GreyBuffer = Uint8Array | Uint8ClampedArray | ReadonlyArray<number>;
67
+ /**
68
+ * Fraction of the region that is cluster glare (specular blob). Pure; safe on
69
+ * any luma buffer. Returns zeros for an empty/invalid region.
70
+ */
71
+ export declare function computeSaturatedClusterCoverage(grey: GreyBuffer, width: number, height: number, region?: GlareMaskRegion, options?: {
72
+ saturationLuma?: number;
73
+ neighborRatio?: number;
74
+ }): SaturatedClusterCoverage;
75
+ /** True when the region's cluster-glare coverage is dominant enough to distrust the crop. */
76
+ export declare function isGlareDominantRegion(coverage: SaturatedClusterCoverage | number | null | undefined, threshold?: number): boolean;
77
+ export interface MaskSaturatedClustersResult {
78
+ /** New buffer with cluster-glare pixels neutralized to a local non-saturated mean. */
79
+ masked: Uint8ClampedArray;
80
+ /** Fraction (0..1) of the buffer that was masked. */
81
+ coverageFraction: number;
82
+ }
83
+ /**
84
+ * Neutralize cluster-glare pixels to the mean of nearby NON-saturated pixels so
85
+ * the specular blob stops forming a fake edge for Sobel/Canny. Isolated
86
+ * saturated specks are left intact (only clusters are masked). Pixels are
87
+ * replaced with a local non-saturated mean (window radius `radius`); if a
88
+ * cluster pixel has no non-saturated neighbor in range it is left unchanged
89
+ * (avoids smearing a fully-blown region into a fake flat edge).
90
+ *
91
+ * Returns a COPY - never mutates the input. Pure and DOM-free.
92
+ */
93
+ export declare function maskSaturatedClusters(grey: GreyBuffer, width: number, height: number, options?: {
94
+ saturationLuma?: number;
95
+ neighborRatio?: number;
96
+ radius?: number;
97
+ }): MaskSaturatedClustersResult;
98
+ export {};
99
+ //# sourceMappingURL=glare-mask.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glare-mask.d.ts","sourceRoot":"","sources":["../../src/glare-mask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAS5C,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,wBAAwB;IACvC,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,UAAU,GAAG,UAAU,GAAG,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAkDzE;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,wBAAwB,CA0C1B;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9D,SAAS,GAAE,MAAgC,GAC1C,OAAO,CAIT;AAED,MAAM,WAAW,2BAA2B;IAC1C,sFAAsF;IACtF,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,2BAA2B,CA6C7B"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Glare / specular masking for the document crop path.
3
+ *
4
+ * Problem (prod failure class #4, "glare steals the contour"): on reflective
5
+ * laminated Sierra Leone IDs and glossy security overlays a specular highlight
6
+ * forms a high-contrast blob whose edges out-compete the true document edge.
7
+ * The contour/Sobel detectors run on a plain luma grayscale with NO pre-mask, so
8
+ * (a) the detector can lock onto the glare boundary -> wrong crop, or (b) glare
9
+ * washes out a true edge -> under-segmentation.
10
+ *
11
+ * This module provides two pure, DOM-free primitives over a luma grey buffer:
12
+ *
13
+ * 1. computeSaturatedClusterCoverage() - what fraction of a region is
14
+ * *cluster* glare (a saturated pixel surrounded by saturated pixels - a
15
+ * specular blob, not an isolated bright speck). Used as a fail-safe
16
+ * DEMOTION signal: a crop whose region is glare-dominant should not be
17
+ * trusted (fall back to the original frame) - see document-crop-arbitration.
18
+ *
19
+ * 2. maskSaturatedClusters() - neutralize cluster-glare pixels to a local
20
+ * non-saturated mean BEFORE edge/contour scoring so the blob stops forming
21
+ * a fake edge. Used (flag-gated) on the review/redetect crop grey buffer.
22
+ *
23
+ * "cluster" is the same intent as quality-checks.hasReviewStageGlare's
24
+ * saturated-cluster definition (deliberately NOT a single-pixel maxBrightness -
25
+ * that was the over-sensitive glare bug). A uniformly bright (non-specular)
26
+ * document is NOT cluster glare because its bright pixels are everywhere, not in
27
+ * a tight blob; the neighbor-ratio test is what separates specular blobs from a
28
+ * generally bright frame, protecting bright/over-exposed but valid documents.
29
+ *
30
+ * NOTE: thresholds here are conservative initial values. They MUST be calibrated
31
+ * against real glare images (crop-lab) and device-QA'd before the SDK is allowed
32
+ * to compute + feed coverage into the live decision. The SDK computation is
33
+ * gated OFF by default for exactly this reason (see runtime-flags
34
+ * isGlareAwareCropDemotionEnabled); the arbitration logic below is always-on but
35
+ * inert until a caller supplies glareCoverageFraction.
36
+ */
37
+ /** Luma at/above this is "saturated" (specular white). */
38
+ export const GLARE_SATURATION_LUMA = 250;
39
+ /**
40
+ * A saturated pixel is part of a *cluster* (specular blob) only when at least
41
+ * this fraction of its 8-neighborhood is also saturated. Isolated saturated
42
+ * specks (text highlights, single hot pixels) are NOT counted - this is the
43
+ * guard that keeps a generally bright document from reading as glare.
44
+ */
45
+ export const GLARE_CLUSTER_MIN_NEIGHBOR_RATIO = 0.625;
46
+ /**
47
+ * Crop-region cluster-glare coverage at/above this fraction => the crop geometry
48
+ * is considered glare-corrupted and the crop should be DEMOTED to the original
49
+ * frame (fail-safe). Conservative initial value; calibrate via crop-lab.
50
+ */
51
+ export const GLARE_DOMINANT_COVERAGE = 0.18;
52
+ /**
53
+ * If essentially the whole examined region is saturated, treat it as high-key /
54
+ * over-exposed rather than localized specular glare. Keep the raw saturation
55
+ * telemetry, but do not demote or mass-mask the crop on this signal alone.
56
+ */
57
+ const GLARE_HIGH_KEY_SATURATED_FRACTION = 0.9;
58
+ const clampRegion = (width, height, region) => {
59
+ if (!region)
60
+ return { x: 0, y: 0, w: width, h: height };
61
+ const x = Math.max(0, Math.min(width, Math.floor(region.x)));
62
+ const y = Math.max(0, Math.min(height, Math.floor(region.y)));
63
+ const w = Math.max(0, Math.min(width - x, Math.floor(region.w)));
64
+ const h = Math.max(0, Math.min(height - y, Math.floor(region.h)));
65
+ return { x, y, w, h };
66
+ };
67
+ const isSaturatedAt = (grey, width, height, px, py, saturationLuma) => {
68
+ if (px < 0 || py < 0 || px >= width || py >= height)
69
+ return false;
70
+ return (grey[py * width + px] ?? 0) >= saturationLuma;
71
+ };
72
+ const saturatedNeighborRatio = (grey, width, height, px, py, saturationLuma) => {
73
+ let saturated = 0;
74
+ let counted = 0;
75
+ for (let dy = -1; dy <= 1; dy += 1) {
76
+ for (let dx = -1; dx <= 1; dx += 1) {
77
+ if (dx === 0 && dy === 0)
78
+ continue;
79
+ const nx = px + dx;
80
+ const ny = py + dy;
81
+ if (nx < 0 || ny < 0 || nx >= width || ny >= height)
82
+ continue;
83
+ counted += 1;
84
+ if (isSaturatedAt(grey, width, height, nx, ny, saturationLuma))
85
+ saturated += 1;
86
+ }
87
+ }
88
+ return counted === 0 ? 0 : saturated / counted;
89
+ };
90
+ /**
91
+ * Fraction of the region that is cluster glare (specular blob). Pure; safe on
92
+ * any luma buffer. Returns zeros for an empty/invalid region.
93
+ */
94
+ export function computeSaturatedClusterCoverage(grey, width, height, region, options) {
95
+ const empty = {
96
+ coverageFraction: 0,
97
+ saturatedFraction: 0,
98
+ sampledPixels: 0,
99
+ };
100
+ if (!grey || !Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {
101
+ return empty;
102
+ }
103
+ const saturationLuma = options?.saturationLuma ?? GLARE_SATURATION_LUMA;
104
+ const neighborRatio = options?.neighborRatio ?? GLARE_CLUSTER_MIN_NEIGHBOR_RATIO;
105
+ const { x, y, w, h } = clampRegion(width, height, region);
106
+ if (w <= 0 || h <= 0)
107
+ return empty;
108
+ let saturated = 0;
109
+ let cluster = 0;
110
+ let sampled = 0;
111
+ for (let ry = y; ry < y + h; ry += 1) {
112
+ for (let rx = x; rx < x + w; rx += 1) {
113
+ sampled += 1;
114
+ if (!isSaturatedAt(grey, width, height, rx, ry, saturationLuma))
115
+ continue;
116
+ saturated += 1;
117
+ if (saturatedNeighborRatio(grey, width, height, rx, ry, saturationLuma) >= neighborRatio) {
118
+ cluster += 1;
119
+ }
120
+ }
121
+ }
122
+ if (sampled === 0)
123
+ return empty;
124
+ const saturatedFraction = saturated / sampled;
125
+ if (saturatedFraction >= GLARE_HIGH_KEY_SATURATED_FRACTION) {
126
+ return {
127
+ coverageFraction: 0,
128
+ saturatedFraction,
129
+ sampledPixels: sampled,
130
+ };
131
+ }
132
+ return {
133
+ coverageFraction: cluster / sampled,
134
+ saturatedFraction,
135
+ sampledPixels: sampled,
136
+ };
137
+ }
138
+ /** True when the region's cluster-glare coverage is dominant enough to distrust the crop. */
139
+ export function isGlareDominantRegion(coverage, threshold = GLARE_DOMINANT_COVERAGE) {
140
+ if (coverage == null)
141
+ return false;
142
+ const fraction = typeof coverage === 'number' ? coverage : coverage.coverageFraction;
143
+ return Number.isFinite(fraction) && fraction >= threshold;
144
+ }
145
+ /**
146
+ * Neutralize cluster-glare pixels to the mean of nearby NON-saturated pixels so
147
+ * the specular blob stops forming a fake edge for Sobel/Canny. Isolated
148
+ * saturated specks are left intact (only clusters are masked). Pixels are
149
+ * replaced with a local non-saturated mean (window radius `radius`); if a
150
+ * cluster pixel has no non-saturated neighbor in range it is left unchanged
151
+ * (avoids smearing a fully-blown region into a fake flat edge).
152
+ *
153
+ * Returns a COPY - never mutates the input. Pure and DOM-free.
154
+ */
155
+ export function maskSaturatedClusters(grey, width, height, options) {
156
+ const saturationLuma = options?.saturationLuma ?? GLARE_SATURATION_LUMA;
157
+ const out = new Uint8ClampedArray(width > 0 && height > 0 ? width * height : 0);
158
+ let saturated = 0;
159
+ for (let i = 0; i < out.length; i += 1) {
160
+ const value = grey[i] ?? 0;
161
+ out[i] = value;
162
+ if (value >= saturationLuma)
163
+ saturated += 1;
164
+ }
165
+ if (out.length === 0)
166
+ return { masked: out, coverageFraction: 0 };
167
+ if (saturated / out.length >= GLARE_HIGH_KEY_SATURATED_FRACTION) {
168
+ return { masked: out, coverageFraction: 0 };
169
+ }
170
+ const neighborRatio = options?.neighborRatio ?? GLARE_CLUSTER_MIN_NEIGHBOR_RATIO;
171
+ const radius = Math.max(1, Math.floor(options?.radius ?? 3));
172
+ let masked = 0;
173
+ for (let py = 0; py < height; py += 1) {
174
+ for (let px = 0; px < width; px += 1) {
175
+ if (!isSaturatedAt(grey, width, height, px, py, saturationLuma))
176
+ continue;
177
+ if (saturatedNeighborRatio(grey, width, height, px, py, saturationLuma) < neighborRatio) {
178
+ continue;
179
+ }
180
+ // cluster pixel - replace with local non-saturated mean
181
+ let sum = 0;
182
+ let count = 0;
183
+ for (let dy = -radius; dy <= radius; dy += 1) {
184
+ for (let dx = -radius; dx <= radius; dx += 1) {
185
+ const nx = px + dx;
186
+ const ny = py + dy;
187
+ if (nx < 0 || ny < 0 || nx >= width || ny >= height)
188
+ continue;
189
+ const v = grey[ny * width + nx] ?? 0;
190
+ if (v >= saturationLuma)
191
+ continue;
192
+ sum += v;
193
+ count += 1;
194
+ }
195
+ }
196
+ if (count > 0) {
197
+ out[py * width + px] = Math.round(sum / count);
198
+ masked += 1;
199
+ }
200
+ }
201
+ }
202
+ return { masked: out, coverageFraction: masked / out.length };
203
+ }
204
+ //# sourceMappingURL=glare-mask.js.map