@succinctlabs/react-native-zcam1 0.2.5

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 (139) hide show
  1. package/README.md +61 -0
  2. package/Zcam1Sdk.podspec +157 -0
  3. package/app.plugin.js +11 -0
  4. package/cpp/generated/zcam1_c2pa_utils.cpp +4091 -0
  5. package/cpp/generated/zcam1_c2pa_utils.hpp +367 -0
  6. package/cpp/generated/zcam1_certs_utils.cpp +1799 -0
  7. package/cpp/generated/zcam1_certs_utils.hpp +72 -0
  8. package/cpp/generated/zcam1_verify_utils.cpp +1857 -0
  9. package/cpp/generated/zcam1_verify_utils.hpp +79 -0
  10. package/cpp/proving/generated/zcam1_proving_utils.cpp +3661 -0
  11. package/cpp/proving/generated/zcam1_proving_utils.hpp +275 -0
  12. package/cpp/proving/zcam1-proving.cpp +16 -0
  13. package/cpp/proving/zcam1-proving.h +15 -0
  14. package/cpp/zcam1-sdk.cpp +20 -0
  15. package/cpp/zcam1-sdk.h +15 -0
  16. package/ios/Zcam1Camera.swift +2945 -0
  17. package/ios/Zcam1CameraFilmStyle.swift +191 -0
  18. package/ios/Zcam1CameraViewManager.m +86 -0
  19. package/ios/Zcam1Capture.h +13 -0
  20. package/ios/Zcam1Capture.mm +500 -0
  21. package/ios/Zcam1DepthData.swift +417 -0
  22. package/ios/Zcam1Sdk.h +16 -0
  23. package/ios/Zcam1Sdk.mm +66 -0
  24. package/ios/proving/Zcam1Proving.h +16 -0
  25. package/ios/proving/Zcam1Proving.mm +66 -0
  26. package/lib/module/NativeZcam1Capture.js +12 -0
  27. package/lib/module/NativeZcam1Capture.js.map +1 -0
  28. package/lib/module/NativeZcam1Sdk.js +7 -0
  29. package/lib/module/NativeZcam1Sdk.js.map +1 -0
  30. package/lib/module/bindings.js +51 -0
  31. package/lib/module/bindings.js.map +1 -0
  32. package/lib/module/camera.js +522 -0
  33. package/lib/module/camera.js.map +1 -0
  34. package/lib/module/capture.js +120 -0
  35. package/lib/module/capture.js.map +1 -0
  36. package/lib/module/common.js +35 -0
  37. package/lib/module/common.js.map +1 -0
  38. package/lib/module/generated/zcam1_c2pa_utils-ffi.js +43 -0
  39. package/lib/module/generated/zcam1_c2pa_utils-ffi.js.map +1 -0
  40. package/lib/module/generated/zcam1_c2pa_utils.js +1202 -0
  41. package/lib/module/generated/zcam1_c2pa_utils.js.map +1 -0
  42. package/lib/module/generated/zcam1_certs_utils-ffi.js +43 -0
  43. package/lib/module/generated/zcam1_certs_utils-ffi.js.map +1 -0
  44. package/lib/module/generated/zcam1_certs_utils.js +399 -0
  45. package/lib/module/generated/zcam1_certs_utils.js.map +1 -0
  46. package/lib/module/generated/zcam1_proving_utils-ffi.js +43 -0
  47. package/lib/module/generated/zcam1_proving_utils-ffi.js.map +1 -0
  48. package/lib/module/generated/zcam1_proving_utils.js +515 -0
  49. package/lib/module/generated/zcam1_proving_utils.js.map +1 -0
  50. package/lib/module/generated/zcam1_verify_utils-ffi.js +43 -0
  51. package/lib/module/generated/zcam1_verify_utils-ffi.js.map +1 -0
  52. package/lib/module/generated/zcam1_verify_utils.js +252 -0
  53. package/lib/module/generated/zcam1_verify_utils.js.map +1 -0
  54. package/lib/module/index.js +31 -0
  55. package/lib/module/index.js.map +1 -0
  56. package/lib/module/package.json +1 -0
  57. package/lib/module/picker.js +222 -0
  58. package/lib/module/picker.js.map +1 -0
  59. package/lib/module/proving/NativeZcam1Proving.js +7 -0
  60. package/lib/module/proving/NativeZcam1Proving.js.map +1 -0
  61. package/lib/module/proving/bindings.js +46 -0
  62. package/lib/module/proving/bindings.js.map +1 -0
  63. package/lib/module/proving/index.js +5 -0
  64. package/lib/module/proving/index.js.map +1 -0
  65. package/lib/module/proving/prove.js +346 -0
  66. package/lib/module/proving/prove.js.map +1 -0
  67. package/lib/module/utils.js +27 -0
  68. package/lib/module/utils.js.map +1 -0
  69. package/lib/module/verify.js +82 -0
  70. package/lib/module/verify.js.map +1 -0
  71. package/lib/typescript/package.json +1 -0
  72. package/lib/typescript/src/NativeZcam1Capture.d.ts +280 -0
  73. package/lib/typescript/src/NativeZcam1Capture.d.ts.map +1 -0
  74. package/lib/typescript/src/NativeZcam1Sdk.d.ts +8 -0
  75. package/lib/typescript/src/NativeZcam1Sdk.d.ts.map +1 -0
  76. package/lib/typescript/src/bindings.d.ts +14 -0
  77. package/lib/typescript/src/bindings.d.ts.map +1 -0
  78. package/lib/typescript/src/camera.d.ts +300 -0
  79. package/lib/typescript/src/camera.d.ts.map +1 -0
  80. package/lib/typescript/src/capture.d.ts +59 -0
  81. package/lib/typescript/src/capture.d.ts.map +1 -0
  82. package/lib/typescript/src/common.d.ts +10 -0
  83. package/lib/typescript/src/common.d.ts.map +1 -0
  84. package/lib/typescript/src/generated/zcam1_c2pa_utils-ffi.d.ts +175 -0
  85. package/lib/typescript/src/generated/zcam1_c2pa_utils-ffi.d.ts.map +1 -0
  86. package/lib/typescript/src/generated/zcam1_c2pa_utils.d.ts +811 -0
  87. package/lib/typescript/src/generated/zcam1_c2pa_utils.d.ts.map +1 -0
  88. package/lib/typescript/src/generated/zcam1_certs_utils-ffi.d.ts +82 -0
  89. package/lib/typescript/src/generated/zcam1_certs_utils-ffi.d.ts.map +1 -0
  90. package/lib/typescript/src/generated/zcam1_certs_utils.d.ts +413 -0
  91. package/lib/typescript/src/generated/zcam1_certs_utils.d.ts.map +1 -0
  92. package/lib/typescript/src/generated/zcam1_proving_utils-ffi.d.ts +153 -0
  93. package/lib/typescript/src/generated/zcam1_proving_utils-ffi.d.ts.map +1 -0
  94. package/lib/typescript/src/generated/zcam1_proving_utils.d.ts +321 -0
  95. package/lib/typescript/src/generated/zcam1_proving_utils.d.ts.map +1 -0
  96. package/lib/typescript/src/generated/zcam1_verify_utils-ffi.d.ts +84 -0
  97. package/lib/typescript/src/generated/zcam1_verify_utils-ffi.d.ts.map +1 -0
  98. package/lib/typescript/src/generated/zcam1_verify_utils.d.ts +286 -0
  99. package/lib/typescript/src/generated/zcam1_verify_utils.d.ts.map +1 -0
  100. package/lib/typescript/src/index.d.ts +29 -0
  101. package/lib/typescript/src/index.d.ts.map +1 -0
  102. package/lib/typescript/src/picker.d.ts +103 -0
  103. package/lib/typescript/src/picker.d.ts.map +1 -0
  104. package/lib/typescript/src/proving/NativeZcam1Proving.d.ts +8 -0
  105. package/lib/typescript/src/proving/NativeZcam1Proving.d.ts.map +1 -0
  106. package/lib/typescript/src/proving/bindings.d.ts +8 -0
  107. package/lib/typescript/src/proving/bindings.d.ts.map +1 -0
  108. package/lib/typescript/src/proving/index.d.ts +3 -0
  109. package/lib/typescript/src/proving/index.d.ts.map +1 -0
  110. package/lib/typescript/src/proving/prove.d.ts +74 -0
  111. package/lib/typescript/src/proving/prove.d.ts.map +1 -0
  112. package/lib/typescript/src/utils.d.ts +2 -0
  113. package/lib/typescript/src/utils.d.ts.map +1 -0
  114. package/lib/typescript/src/verify.d.ts +45 -0
  115. package/lib/typescript/src/verify.d.ts.map +1 -0
  116. package/package.json +118 -0
  117. package/src/NativeZcam1Capture.ts +335 -0
  118. package/src/NativeZcam1Sdk.ts +10 -0
  119. package/src/bindings.tsx +49 -0
  120. package/src/camera.tsx +705 -0
  121. package/src/capture.tsx +165 -0
  122. package/src/common.tsx +46 -0
  123. package/src/generated/zcam1_c2pa_utils-ffi.ts +456 -0
  124. package/src/generated/zcam1_c2pa_utils.ts +1866 -0
  125. package/src/generated/zcam1_certs_utils-ffi.ts +187 -0
  126. package/src/generated/zcam1_certs_utils.ts +549 -0
  127. package/src/generated/zcam1_proving_utils-ffi.ts +374 -0
  128. package/src/generated/zcam1_proving_utils.ts +804 -0
  129. package/src/generated/zcam1_verify_utils-ffi.ts +196 -0
  130. package/src/generated/zcam1_verify_utils.ts +372 -0
  131. package/src/index.ts +73 -0
  132. package/src/picker.tsx +342 -0
  133. package/src/proving/NativeZcam1Proving.ts +10 -0
  134. package/src/proving/bindings.tsx +50 -0
  135. package/src/proving/index.ts +8 -0
  136. package/src/proving/prove.tsx +492 -0
  137. package/src/utils.ts +38 -0
  138. package/src/verify.tsx +119 -0
  139. package/turbo.json +27 -0
@@ -0,0 +1,280 @@
1
+ import { type TurboModule } from "react-native";
2
+ export type TakeNativePhotoFormat = "jpeg" | "dng";
3
+ export interface TakeNativePhotoOptions {
4
+ /**
5
+ * Desired output format. Defaults to "jpeg" if not provided.
6
+ */
7
+ format?: TakeNativePhotoFormat;
8
+ /**
9
+ * Optional quality hint for JPEG captures (0–1).
10
+ * Ignored for DNG.
11
+ */
12
+ quality?: number;
13
+ }
14
+ export interface TakeNativePhotoResult {
15
+ /**
16
+ * Local filesystem path to the captured image file.
17
+ * This is typically a "file://" URL or absolute path.
18
+ */
19
+ filePath: string;
20
+ /**
21
+ * The actual format of the captured file.
22
+ */
23
+ format: TakeNativePhotoFormat;
24
+ /**
25
+ * Optional metadata extracted by the native layer (EXIF, etc).
26
+ */
27
+ metadata?: {
28
+ [key: string]: unknown;
29
+ } | null;
30
+ /**
31
+ * Depth data extracted from the captured photo (if available).
32
+ *
33
+ * This is only returned when the caller requested it via the `includeDepthData`
34
+ * parameter on `takeNativePhoto(...)`, and only on devices/capture formats that
35
+ * support depth delivery.
36
+ */
37
+ depthData?: {
38
+ [key: string]: unknown;
39
+ } | null;
40
+ }
41
+ export type NativeVideoRecordingFormat = "mov";
42
+ export interface StartNativeVideoRecordingResult {
43
+ /**
44
+ * Indicates that recording successfully started.
45
+ */
46
+ status: "recording";
47
+ /**
48
+ * Local filesystem path to the in-progress movie file.
49
+ */
50
+ filePath: string;
51
+ /**
52
+ * Container format for the recording.
53
+ */
54
+ format: NativeVideoRecordingFormat;
55
+ /**
56
+ * Whether audio is included in this recording.
57
+ * This depends on microphone permission and native session configuration.
58
+ */
59
+ hasAudio: boolean;
60
+ }
61
+ export interface StopNativeVideoRecordingResult {
62
+ /**
63
+ * Local filesystem path to the finalized movie file.
64
+ */
65
+ filePath: string;
66
+ /**
67
+ * Container format for the recording.
68
+ */
69
+ format: NativeVideoRecordingFormat;
70
+ /**
71
+ * Whether audio is included in this recording.
72
+ */
73
+ hasAudio: boolean;
74
+ /**
75
+ * Device make (if available).
76
+ */
77
+ deviceMake: string;
78
+ /**
79
+ * Device model (if available).
80
+ */
81
+ deviceModel: string;
82
+ /**
83
+ * Software version (if available).
84
+ */
85
+ softwareVersion: string;
86
+ /**
87
+ * Duration of the recorded clip in seconds (if available).
88
+ */
89
+ durationSeconds: number;
90
+ /**
91
+ * File size in bytes (if available).
92
+ */
93
+ fileSizeBytes: number;
94
+ /**
95
+ * Video pixel width (rotation-corrected, if available).
96
+ */
97
+ width: number;
98
+ /**
99
+ * Video pixel height (rotation-corrected, if available).
100
+ */
101
+ height: number;
102
+ /**
103
+ * Rotation in degrees derived from the video track transform (if available).
104
+ * Common values: 0, 90, 180, 270.
105
+ */
106
+ rotationDegrees: number;
107
+ /**
108
+ * Nominal frame rate (fps, if available).
109
+ */
110
+ frameRate: number;
111
+ /**
112
+ * Video codec FourCC (e.g. "avc1", "hvc1") if available.
113
+ */
114
+ videoCodec?: string;
115
+ /**
116
+ * Audio codec FourCC (e.g. "aac ") if available.
117
+ */
118
+ audioCodec?: string;
119
+ /**
120
+ * Audio sample rate in Hz (if available).
121
+ */
122
+ audioSampleRate?: number;
123
+ /**
124
+ * Audio channel count (if available).
125
+ */
126
+ audioChannels?: number;
127
+ }
128
+ export type FlashMode = "off" | "on" | "auto";
129
+ export type AspectRatio = "4:3" | "16:9" | "1:1";
130
+ export type Orientation = "auto" | "portrait" | "landscape";
131
+ /**
132
+ * Physical device orientation as reported by the accelerometer.
133
+ * Unlike Orientation (which is a capture setting), this reflects the
134
+ * actual device position and is emitted via onOrientationChange events.
135
+ */
136
+ export type DeviceOrientation = "portrait" | "portraitUpsideDown" | "landscapeLeft" | "landscapeRight";
137
+ export interface Spec extends TurboModule {
138
+ /**
139
+ * Capture a photo using the native camera stack (Swift/AVFoundation)
140
+ * without going through react-native-vision-camera.
141
+ *
142
+ * The native implementation is responsible for:
143
+ * - Handling permissions
144
+ * - Presenting a preview / capture UI as needed
145
+ * - Writing the resulting JPEG or DNG file and returning its path
146
+ *
147
+ * @param includeDepthData When true, native should request depth (+ calibration)
148
+ * data delivery for this capture (if supported). When false, native should avoid
149
+ * enabling depth delivery and `depthData` will be omitted from the result.
150
+ * @param skipPostProcessing When true, returns raw sensor output without cropping
151
+ * or rotation. Useful for developers who want to handle their own post-processing.
152
+ */
153
+ takeNativePhoto(format: TakeNativePhotoFormat, position: "front" | "back", flash: FlashMode, includeDepthData: boolean, aspectRatio: AspectRatio, orientation: Orientation, skipPostProcessing: boolean): Promise<TakeNativePhotoResult>;
154
+ /**
155
+ * Start recording a video using the native camera stack.
156
+ *
157
+ * The recording is written to a temporary file and continues until
158
+ * `stopNativeVideoRecording()` is called or the optional duration cap is reached.
159
+ *
160
+ * @param position Which camera to use.
161
+ * @param maxDurationSeconds Maximum recording duration in seconds. The native
162
+ * layer will automatically stop recording when this limit is reached. Pass 0
163
+ * for unlimited recording.
164
+ */
165
+ startNativeVideoRecording(position: "front" | "back", maxDurationSeconds: number): Promise<StartNativeVideoRecordingResult>;
166
+ /**
167
+ * Stop an in-progress recording and return the finalized file path + metadata.
168
+ */
169
+ stopNativeVideoRecording(): Promise<StopNativeVideoRecordingResult>;
170
+ /**
171
+ * Set zoom factor programmatically (instant, no animation).
172
+ * For virtual devices with ultra-wide, 1.0 is ultra-wide (0.5x user-facing),
173
+ * 2.0 is wide-angle (1x user-facing), etc.
174
+ * @param factor Device zoom factor (use getMinZoom/getMaxZoom for valid range)
175
+ */
176
+ setZoom(factor: number): void;
177
+ /**
178
+ * Set zoom factor with smooth animation (recommended for pinch-to-zoom gestures).
179
+ * Uses native AVFoundation ramp for smooth transitions across lens switchover boundaries.
180
+ * @param factor Device zoom factor (use getMinZoom/getMaxZoom for valid range)
181
+ */
182
+ setZoomAnimated(factor: number): void;
183
+ /**
184
+ * Get the minimum supported zoom factor.
185
+ * For virtual devices with ultra-wide, this is 1.0 (corresponds to 0.5x user-facing).
186
+ */
187
+ getMinZoom(): Promise<number>;
188
+ /**
189
+ * Get the maximum supported zoom factor (capped at 15x for UX).
190
+ */
191
+ getMaxZoom(): Promise<number>;
192
+ /**
193
+ * Get the zoom factors where the device switches between physical lenses.
194
+ * Returns empty array for single-camera devices.
195
+ * For triple camera: typically [2.0, 6.0] meaning:
196
+ * - Below 2.0: ultra-wide lens (0.5x-1x user-facing)
197
+ * - At 2.0: switches FROM ultra-wide TO wide lens (1x user-facing)
198
+ * - At 6.0: switches FROM wide TO telephoto lens (3x user-facing)
199
+ */
200
+ getSwitchOverZoomFactors(): Promise<number[]>;
201
+ /**
202
+ * Check if the current device has an ultra-wide camera.
203
+ * This is true for builtInTripleCamera and builtInDualWideCamera (iPhone 11+, Pro models).
204
+ * This is false for builtInDualCamera (Wide + Telephoto, e.g., iPhone X/XS) and single-lens devices.
205
+ *
206
+ * Use this to correctly interpret zoom factors:
207
+ * - If hasUltraWide: minZoom (1.0) = 0.5x user-facing, switchOverFactors[0] (2.0) = 1x user-facing
208
+ * - If !hasUltraWide: minZoom (1.0) = 1x user-facing, switchOverFactors[0] (2.0) = 2x user-facing (telephoto)
209
+ */
210
+ hasUltraWideCamera(): Promise<boolean>;
211
+ /**
212
+ * Get the supported exposure compensation range in EV units.
213
+ * Returns the device's min and max exposure target bias values.
214
+ */
215
+ getExposureRange(): Promise<{
216
+ min: number;
217
+ max: number;
218
+ }>;
219
+ /**
220
+ * Reset exposure compensation to neutral (0 EV).
221
+ */
222
+ resetExposure(): void;
223
+ /**
224
+ * Focus at a normalized point in the preview.
225
+ * Also adjusts exposure point if supported.
226
+ * @param x Normalized x coordinate (0-1, left to right)
227
+ * @param y Normalized y coordinate (0-1, top to bottom)
228
+ */
229
+ focusAtPoint(x: number, y: number): void;
230
+ /**
231
+ * Get diagnostic info about the current camera device for debugging.
232
+ * Returns device type, supported zoom range, switching behavior, and more.
233
+ * Useful for debugging zoom issues on different device configurations.
234
+ */
235
+ getDeviceDiagnostics(): Promise<{
236
+ deviceType: string;
237
+ minZoom: number;
238
+ maxZoom: number;
239
+ currentZoom: number;
240
+ switchOverFactors: number[];
241
+ switchingBehavior: number;
242
+ isVirtualDevice: boolean;
243
+ currentExposureBias: number;
244
+ minExposureBias: number;
245
+ maxExposureBias: number;
246
+ currentISO: number;
247
+ exposureDuration: number;
248
+ }>;
249
+ /**
250
+ * Check if the current camera device supports depth data capture.
251
+ * Returns true for dual/triple rear cameras and TrueDepth front camera.
252
+ * Returns false for single rear cameras (iPhone SE, 16e, Air).
253
+ */
254
+ isDepthSupported(): Promise<boolean>;
255
+ /**
256
+ * Check if enabling depth would restrict zoom on this device.
257
+ * Returns true if zoom is limited to discrete levels (min == max in all ranges).
258
+ * This typically happens on dual-camera devices (iPhone 12-16 base).
259
+ * Returns false for triple-camera devices (Pro) and TrueDepth front cameras.
260
+ */
261
+ hasDepthZoomLimitations(): Promise<boolean>;
262
+ /**
263
+ * Get zoom ranges supported when depth data delivery is enabled.
264
+ * Returns array of [min, max] pairs. If min == max, it's a discrete level.
265
+ * Empty array means no depth support or no zoom restrictions.
266
+ *
267
+ * Example for dual-camera iPhone: [[2.0, 2.0], [4.0, 4.0]] (discrete 1x and 2x only)
268
+ * Example for triple-camera iPhone: [[1.0, 6.0]] (continuous zoom supported)
269
+ */
270
+ getDepthSupportedZoomRanges(): Promise<number[][]>;
271
+ /**
272
+ * Present a native full-screen preview for any file using QLPreviewController.
273
+ * Supports images, videos, PDFs, and other common file types.
274
+ * @param filePath Absolute filesystem path to the file.
275
+ */
276
+ previewFile(filePath: string): Promise<void>;
277
+ }
278
+ declare const _default: Spec;
279
+ export default _default;
280
+ //# sourceMappingURL=NativeZcam1Capture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeZcam1Capture.d.ts","sourceRoot":"","sources":["../../../src/NativeZcam1Capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,cAAc,CAAC;AAErE,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAE9B;;OAEG;IACH,QAAQ,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAE7C;;;;;;OAMG;IACH,SAAS,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CAC/C;AAED,MAAM,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAE/C,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,0BAA0B,CAAC;IAEnC;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,0BAA0B,CAAC;IAEnC;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAE9C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAE5D;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GACzB,UAAU,GACV,oBAAoB,GACpB,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC;;;;;;;;;;;;;;OAcG;IACH,eAAe,CACb,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,kBAAkB,EAAE,OAAO,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAElC;;;;;;;;;;OAUG;IACH,yBAAyB,CACvB,QAAQ,EAAE,OAAO,GAAG,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAE5C;;OAEG;IACH,wBAAwB,IAAI,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAEpE;;;;;OAKG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE9B;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B;;;;;;;OAOG;IACH,wBAAwB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAE9C;;;;;;;;OAQG;IACH,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvC;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE1D;;OAEG;IACH,aAAa,IAAI,IAAI,CAAC;IAEtB;;;;;OAKG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzC;;;;OAIG;IACH,oBAAoB,IAAI,OAAO,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,OAAO,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC,CAAC;IAEH;;;;OAIG;IACH,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAErC;;;;;OAKG;IACH,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5C;;;;;;;OAOG;IACH,2BAA2B,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEnD;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;;AACD,wBAAsE"}
@@ -0,0 +1,8 @@
1
+ import type { TurboModule } from 'react-native';
2
+ export interface Spec extends TurboModule {
3
+ installRustCrate(): boolean;
4
+ cleanupRustCrate(): boolean;
5
+ }
6
+ declare const _default: Spec;
7
+ export default _default;
8
+ //# sourceMappingURL=NativeZcam1Sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeZcam1Sdk.d.ts","sourceRoot":"","sources":["../../../src/NativeZcam1Sdk.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,gBAAgB,IAAI,OAAO,CAAC;IAC5B,gBAAgB,IAAI,OAAO,CAAC;CAC7B;;AAED,wBAAkE"}
@@ -0,0 +1,14 @@
1
+ export * from './generated/zcam1_c2pa_utils';
2
+ export * from './generated/zcam1_certs_utils';
3
+ export * from './generated/zcam1_verify_utils';
4
+ import * as zcam1_c2pa_utils from './generated/zcam1_c2pa_utils';
5
+ import * as zcam1_certs_utils from './generated/zcam1_certs_utils';
6
+ import * as zcam1_verify_utils from './generated/zcam1_verify_utils';
7
+ export declare function uniffiInitAsync(): Promise<void>;
8
+ declare const _default: {
9
+ zcam1_c2pa_utils: typeof zcam1_c2pa_utils;
10
+ zcam1_certs_utils: typeof zcam1_certs_utils;
11
+ zcam1_verify_utils: typeof zcam1_verify_utils;
12
+ };
13
+ export default _default;
14
+ //# sourceMappingURL=bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../src/bindings.tsx"],"names":[],"mappings":"AAaA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAK/C,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,kBAAkB,MAAM,gCAAgC,CAAC;AAgBrE,wBAAsB,eAAe,kBAEpC;;;;;;AAGD,wBAIE"}
@@ -0,0 +1,300 @@
1
+ import React from "react";
2
+ import { type StyleProp, type ViewStyle } from "react-native";
3
+ import { ExistingCertChain, SelfSignedCertChain } from "./bindings";
4
+ import { type CaptureInfo, ZPhoto } from "./capture";
5
+ import { type AspectRatio, type DeviceOrientation, type FlashMode, type Orientation, type StartNativeVideoRecordingResult, type StopNativeVideoRecordingResult } from "./NativeZcam1Capture";
6
+ export declare const CERT_KEY_TAG = "CERT_KEY_TAG";
7
+ /**
8
+ * Capture format produced by the native Swift camera.
9
+ * - "jpeg": standard compressed JPEG file
10
+ * - "dng": RAW DNG file (original), C2PA-signed JPEG copy is still produced
11
+ */
12
+ export type CaptureFormat = "jpeg" | "dng";
13
+ /**
14
+ * Camera film style presets.
15
+ * - "normal": No film style (default)
16
+ * - "mellow": Negative Film Gold style - warm, saturated, lifted shadows
17
+ * - "nostalgic": Kodak Portra 400 style - warm amber, faded, bright
18
+ * - "bw": Contrasty B&W with warm tint
19
+ */
20
+ export type CameraFilmStyle = "normal" | "mellow" | "nostalgic" | "bw";
21
+ /** White balance adjustment configuration. */
22
+ export type WhiteBalanceConfig = {
23
+ /** Color temperature in Kelvin (e.g., 5500 for daylight, 6500 for cloudy). */
24
+ temperature: number;
25
+ /** Tint adjustment (-100 to 100, green to magenta). Defaults to 0. */
26
+ tint?: number;
27
+ };
28
+ /** Highlight and shadow adjustment configuration. */
29
+ export type HighlightShadowConfig = {
30
+ /** Highlight adjustment (0 = no change, negative = reduce, positive = boost). */
31
+ highlights: number;
32
+ /** Shadow adjustment (0 = no change, positive = lift shadows). */
33
+ shadows: number;
34
+ };
35
+ /** Monochrome (black & white) film style configuration. */
36
+ export type MonochromeConfig = {
37
+ /** Intensity of the monochrome effect (0 = none, 1 = full B&W). */
38
+ intensity: number;
39
+ /** Optional tint color for the monochrome effect. */
40
+ color?: {
41
+ r: number;
42
+ g: number;
43
+ b: number;
44
+ };
45
+ };
46
+ /**
47
+ * Individual film style effect that can be combined into a recipe.
48
+ * Effects are applied in the order they appear in the recipe array.
49
+ */
50
+ export type FilmStyleEffect = {
51
+ type: "whiteBalance";
52
+ config: WhiteBalanceConfig;
53
+ } | {
54
+ type: "saturation";
55
+ value: number;
56
+ } | {
57
+ type: "contrast";
58
+ value: number;
59
+ } | {
60
+ type: "brightness";
61
+ value: number;
62
+ } | {
63
+ type: "hue";
64
+ value: number;
65
+ } | {
66
+ type: "vibrance";
67
+ value: number;
68
+ } | {
69
+ type: "highlightShadow";
70
+ config: HighlightShadowConfig;
71
+ } | {
72
+ type: "monochrome";
73
+ config: MonochromeConfig;
74
+ };
75
+ /**
76
+ * A film style recipe is an ordered array of film style effects.
77
+ * Effects are applied sequentially to produce the final look.
78
+ */
79
+ export type FilmStyleRecipe = FilmStyleEffect[];
80
+ export interface ZCameraProps {
81
+ /** Which camera to use. Defaults to "back". */
82
+ position?: "front" | "back";
83
+ /** Whether the camera is actively running. Defaults to true. */
84
+ isActive?: boolean;
85
+ /** Desired capture format. Defaults to "jpeg". */
86
+ captureFormat?: CaptureFormat;
87
+ /**
88
+ * Zoom factor. For back camera devices with ultra-wide lens, 1.0 = ultra-wide (0.5x user-facing),
89
+ * 2.0 = wide-angle (1x user-facing). Use getMinZoom/getMaxZoom for valid range.
90
+ * Defaults to 2.0 (1x user-facing) for back camera, 1.0 for front camera (to avoid digital zoom).
91
+ */
92
+ zoom?: number;
93
+ /** Whether torch (flashlight) is enabled during preview. Defaults to false. */
94
+ torch?: boolean;
95
+ /** Exposure compensation in EV units. Defaults to 0. */
96
+ exposure?: number;
97
+ /** Film style preset to apply to preview and captured photos. Defaults to "normal". */
98
+ filmStyle?: CameraFilmStyle;
99
+ /**
100
+ * Override built-in film style presets with custom recipes.
101
+ * When a preset name is used with `filmStyle` prop and an override exists,
102
+ * the custom recipe is applied instead of the built-in preset.
103
+ */
104
+ filmStyleOverrides?: Partial<Record<CameraFilmStyle, FilmStyleRecipe>>;
105
+ /**
106
+ * Define additional custom film styles referenced by name.
107
+ * Use with `filmStyle` prop by casting the custom name: `filmStyle={"myStyle" as CameraFilmStyle}`.
108
+ */
109
+ customFilmStyles?: Record<string, FilmStyleRecipe>;
110
+ /**
111
+ * Enable depth data capture at session level.
112
+ * When true, depth data can be captured but zoom may be restricted on dual-camera devices.
113
+ * When false (default), full zoom range is available.
114
+ * Use isDepthSupported() and hasDepthZoomLimitations() to check device capabilities.
115
+ * @default false
116
+ */
117
+ depthEnabled?: boolean;
118
+ /**
119
+ * Callback fired when the device physical orientation changes.
120
+ * Uses accelerometer data to detect orientation even when iOS orientation lock is enabled.
121
+ * @param orientation The new physical orientation of the device.
122
+ */
123
+ onOrientationChange?: (orientation: DeviceOrientation) => void;
124
+ /** Capture information used to generate C2PA bindings for each photo. */
125
+ captureInfo: CaptureInfo;
126
+ /** Optional certificate chain used to sign the C2PA manifest. */
127
+ certChain?: SelfSignedCertChain | ExistingCertChain;
128
+ /** Optional style for the underlying native view. */
129
+ style?: StyleProp<ViewStyle>;
130
+ }
131
+ /** Options for a single capture call. */
132
+ export interface TakePhotoOptions {
133
+ format?: CaptureFormat;
134
+ /** Flash mode for this capture. Defaults to "off". */
135
+ flash?: FlashMode;
136
+ /**
137
+ * Whether to include depth data (if available) in the capture results.
138
+ * - When true: depth data is embedded into the C2PA metadata.
139
+ * - When false (default): depth data is omitted.
140
+ */
141
+ includeDepthData?: boolean;
142
+ /** Aspect ratio for the captured photo. Defaults to "4:3". */
143
+ aspectRatio?: AspectRatio;
144
+ /** Orientation for the crop. Defaults to "auto". */
145
+ orientation?: Orientation;
146
+ }
147
+ /**
148
+ * React wrapper around the native Swift camera.
149
+ *
150
+ * Responsibilities:
151
+ * - Render native camera preview (AVFoundation in Swift).
152
+ * - Trigger native capture (JPEG / DNG) via the TurboModule `Zcam1Sdk`.
153
+ * - Run C2PA signing on the captured image and return a `ZPhoto`.
154
+ *
155
+ * Exposed API remains compatible with the previous VisionCamera-based
156
+ * implementation: `cameraRef.current?.takePhoto()`.
157
+ */
158
+ export declare class ZCamera extends React.PureComponent<ZCameraProps> {
159
+ /** Reference to the underlying native view (if needed later). */
160
+ private nativeRef;
161
+ /** Best-effort JS-side guard; native is the source of truth. */
162
+ private recordingInProgress;
163
+ /** Captured for convenience/debugging; cleared after stop. */
164
+ private lastVideoStartResult;
165
+ private certChainPem;
166
+ constructor(props: ZCameraProps);
167
+ /**
168
+ * Resolve the current film style info for embedding in capture metadata.
169
+ * Returns null for "normal" with no overrides (no filter applied).
170
+ */
171
+ private resolveFilmStyleInfo;
172
+ /**
173
+ * Get the minimum supported zoom factor.
174
+ * For virtual devices with ultra-wide, this is 1.0 (corresponds to 0.5x user-facing).
175
+ */
176
+ getMinZoom(): Promise<number>;
177
+ /**
178
+ * Get the maximum supported zoom factor (capped at 15x for UX).
179
+ */
180
+ getMaxZoom(): Promise<number>;
181
+ /**
182
+ * Get the zoom factors where the device switches between physical lenses.
183
+ * Returns empty array for single-camera devices.
184
+ * For triple camera: typically [2.0, 6.0] meaning:
185
+ * - Below 2.0: ultra-wide lens (0.5x-1x user-facing)
186
+ * - At 2.0: switches FROM ultra-wide TO wide lens (1x user-facing)
187
+ * - At 6.0: switches FROM wide TO telephoto lens (3x user-facing)
188
+ */
189
+ getSwitchOverZoomFactors(): Promise<number[]>;
190
+ /**
191
+ * Check if the current device has an ultra-wide camera.
192
+ * This is true for builtInTripleCamera and builtInDualWideCamera (iPhone 11+, Pro models).
193
+ * This is false for builtInDualCamera (Wide + Telephoto, e.g., iPhone X/XS) and single-lens devices.
194
+ *
195
+ * Use this to correctly interpret zoom factors:
196
+ * - If hasUltraWide: minZoom (1.0) = 0.5x user-facing, switchOverFactors[0] (2.0) = 1x user-facing
197
+ * - If !hasUltraWide: minZoom (1.0) = 1x user-facing, switchOverFactors[0] (2.0) = 2x user-facing (telephoto)
198
+ */
199
+ hasUltraWideCamera(): Promise<boolean>;
200
+ /**
201
+ * Get the supported exposure compensation range in EV units.
202
+ * Returns the device's min and max exposure target bias values.
203
+ * Use this to configure slider bounds for exposure UI controls.
204
+ */
205
+ getExposureRange(): Promise<{
206
+ min: number;
207
+ max: number;
208
+ }>;
209
+ /**
210
+ * Reset exposure compensation to neutral (0 EV).
211
+ * Convenience method equivalent to setting the exposure prop to 0.
212
+ */
213
+ resetExposure(): void;
214
+ /**
215
+ * Focus at a point in the preview. Also adjusts exposure point if supported.
216
+ * @param x Normalized x coordinate (0-1, left to right)
217
+ * @param y Normalized y coordinate (0-1, top to bottom)
218
+ */
219
+ focusAtPoint(x: number, y: number): void;
220
+ /**
221
+ * Set zoom with smooth animation. Recommended for pinch-to-zoom gestures.
222
+ * Uses native AVFoundation ramp for smooth transitions across lens switchover boundaries.
223
+ * This method bypasses React re-renders for lowest latency during continuous gestures.
224
+ * @param factor Device zoom factor (use getMinZoom/getMaxZoom for valid range)
225
+ */
226
+ setZoomAnimated(factor: number): void;
227
+ /**
228
+ * Get diagnostic info about the current camera device for debugging.
229
+ * Returns device type, supported zoom range, switching behavior, and more.
230
+ * Useful for debugging zoom issues on different device configurations.
231
+ */
232
+ getDeviceDiagnostics(): Promise<{
233
+ deviceType: string;
234
+ minZoom: number;
235
+ maxZoom: number;
236
+ currentZoom: number;
237
+ switchOverFactors: number[];
238
+ switchingBehavior: number;
239
+ isVirtualDevice: boolean;
240
+ currentExposureBias: number;
241
+ minExposureBias: number;
242
+ maxExposureBias: number;
243
+ currentISO: number;
244
+ exposureDuration: number;
245
+ }>;
246
+ /**
247
+ * Check if the current camera device supports depth data capture.
248
+ * Returns true for dual/triple rear cameras and TrueDepth front camera.
249
+ * Returns false for single rear cameras (iPhone SE, 16e, Air).
250
+ */
251
+ isDepthSupported(): Promise<boolean>;
252
+ /**
253
+ * Check if enabling depth would restrict zoom on this device.
254
+ * Returns true if zoom is limited to discrete levels (min == max in all ranges).
255
+ * This typically happens on dual-camera devices (iPhone 12-16 base).
256
+ * Returns false for triple-camera devices (Pro) and TrueDepth front cameras.
257
+ */
258
+ hasDepthZoomLimitations(): Promise<boolean>;
259
+ /**
260
+ * Get zoom ranges supported when depth data delivery is enabled.
261
+ * Returns array of [min, max] pairs. If min == max, it's a discrete level.
262
+ * Empty array means no depth support or no zoom restrictions.
263
+ *
264
+ * Example for dual-camera iPhone: [[2.0, 2.0], [4.0, 4.0]] (discrete 1x and 2x only)
265
+ * Example for triple-camera iPhone: [[1.0, 6.0]] (continuous zoom supported)
266
+ */
267
+ getDepthSupportedZoomRanges(): Promise<number[][]>;
268
+ /**
269
+ * Start recording a native video to a temporary `.mov` file.
270
+ *
271
+ * Promise resolves once the native recorder reports it has started.
272
+ *
273
+ * @param position Which camera to record from.
274
+ * @param options Optional recording configuration.
275
+ * @param options.maxDurationSeconds Maximum recording duration in seconds.
276
+ * The native layer will automatically stop the recording when this limit is
277
+ * reached. Pass 0 or omit for unlimited recording.
278
+ */
279
+ startVideoRecording(position?: "front" | "back", options?: {
280
+ maxDurationSeconds?: number;
281
+ }): Promise<StartNativeVideoRecordingResult>;
282
+ /**
283
+ * Stop the current native video recording and return the finalized file path + metadata.
284
+ */
285
+ stopVideoRecording(): Promise<StopNativeVideoRecordingResult>;
286
+ /**
287
+ * Capture a photo using the native Swift camera and return a signed `ZPhoto`.
288
+ *
289
+ * The native side is expected to expose a `capturePhoto` method on the
290
+ * `Zcam1Sdk` TurboModule with signature:
291
+ *
292
+ * capturePhoto(options: {
293
+ * position?: "front" | "back";
294
+ * format?: "jpeg" | "dng";
295
+ * }): Promise<{ path: string; metadata?: any }>
296
+ */
297
+ takePhoto(options?: TakePhotoOptions): Promise<ZPhoto>;
298
+ render(): React.ReactNode;
299
+ }
300
+ //# sourceMappingURL=camera.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camera.d.ts","sourceRoot":"","sources":["../../../src/camera.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA0B,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAGtF,OAAO,EAIL,iBAAiB,EAIjB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACrD,OAAuB,EACrB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACpC,MAAM,sBAAsB,CAAC;AAG9B,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;AAMvE,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,qBAAqB,GAAG;IAClC,iFAAiF;IACjF,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,eAAe,EAAE,CAAC;AAkChD,MAAM,WAAW,YAAY;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC;IACvE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACnD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/D,yEAAyE;IACzE,WAAW,EAAE,WAAW,CAAC;IACzB,iEAAiE;IACjE,SAAS,CAAC,EAAE,mBAAmB,GAAG,iBAAiB,CAAC;IACpD,qDAAqD;IACrD,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,sDAAsD;IACtD,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oDAAoD;IACpD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAwBD;;;;;;;;;;GAUG;AACH,qBAAa,OAAQ,SAAQ,KAAK,CAAC,aAAa,CAAC,YAAY,CAAC;IAC5D,iEAAiE;IAEjE,OAAO,CAAC,SAAS,CAA0B;IAE3C,gEAAgE;IAChE,OAAO,CAAC,mBAAmB,CAAkB;IAE7C,8DAA8D;IAC9D,OAAO,CAAC,oBAAoB,CAAgD;IAE5E,OAAO,CAAC,YAAY,CAAS;gBAEjB,KAAK,EAAE,YAAY;IAkB/B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAiC5B;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAInC;;;;;;;OAOG;IACG,wBAAwB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAInD;;;;;;;;OAQG;IACG,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI5C;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAI/D;;;OAGG;IACH,aAAa,IAAI,IAAI;IAIrB;;;;OAIG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAIxC;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;OAIG;IACG,oBAAoB,IAAI,OAAO,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,OAAO,CAAC;QACzB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,eAAe,EAAE,MAAM,CAAC;QACxB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IAIF;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI1C;;;;;OAKG;IACG,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjD;;;;;;;OAOG;IACG,2BAA2B,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAIxD;;;;;;;;;;OAUG;IACG,mBAAmB,CACvB,QAAQ,GAAE,OAAO,GAAG,MAAsC,EAC1D,OAAO,CAAC,EAAE;QAAE,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,+BAA+B,CAAC;IAuB3C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,8BAA8B,CAAC;IAgDnE;;;;;;;;;;OAUG;IACG,SAAS,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC;IA0EzD,MAAM,IAAI,KAAK,CAAC,SAAS;CA+CjC"}