react-native-timacare 3.3.56-alert → 3.3.57-cccd

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 (101) hide show
  1. package/lib/commonjs/assets/icons/index.js +1 -1
  2. package/lib/commonjs/assets/icons/index.js.flow +2 -0
  3. package/lib/commonjs/assets/icons/index.js.map +1 -1
  4. package/lib/commonjs/assets/icons/modal_confirm.svg +5 -5
  5. package/lib/commonjs/assets/icons/modal_notice.svg +32 -32
  6. package/lib/commonjs/assets/icons/modal_success.svg +26 -26
  7. package/lib/commonjs/assets/icons/modal_warning.svg +21 -21
  8. package/lib/commonjs/assets/icons/user_security.svg +10 -0
  9. package/lib/commonjs/assets/tts/Frame1000011947.png +0 -0
  10. package/lib/commonjs/navigation/primary-navigator.js +1 -1
  11. package/lib/commonjs/navigation/primary-navigator.js.flow +7 -0
  12. package/lib/commonjs/navigation/primary-navigator.js.map +1 -1
  13. package/lib/commonjs/screens/NFC/OcrStart.js +2 -0
  14. package/lib/commonjs/screens/NFC/OcrStart.js.flow +171 -0
  15. package/lib/commonjs/screens/NFC/OcrStart.js.map +1 -0
  16. package/lib/commonjs/screens/NFC/ScanMRZ.js +2 -0
  17. package/lib/commonjs/screens/NFC/ScanMRZ.js.flow +563 -0
  18. package/lib/commonjs/screens/NFC/ScanMRZ.js.map +1 -0
  19. package/lib/commonjs/screens/camera/CCCDCameraScreen.js +1 -1
  20. package/lib/commonjs/screens/camera/CCCDCameraScreen.js.flow +203 -133
  21. package/lib/commonjs/screens/camera/CCCDCameraScreen.js.map +1 -1
  22. package/lib/commonjs/screens/home/index.js +1 -1
  23. package/lib/commonjs/screens/home/index.js.flow +7 -112
  24. package/lib/commonjs/screens/home/index.js.map +1 -1
  25. package/lib/commonjs/screens/nationalID/index.js +1 -1
  26. package/lib/commonjs/screens/nationalID/index.js.flow +123 -218
  27. package/lib/commonjs/screens/nationalID/index.js.map +1 -1
  28. package/lib/commonjs/screens/nationalIDBack/index.js +1 -1
  29. package/lib/commonjs/screens/nationalIDBack/index.js.flow +129 -209
  30. package/lib/commonjs/screens/nationalIDBack/index.js.map +1 -1
  31. package/lib/commonjs/screens/toan-trinh-so/OCR.js +1 -1
  32. package/lib/commonjs/screens/toan-trinh-so/OCR.js.flow +269 -555
  33. package/lib/commonjs/screens/toan-trinh-so/OCR.js.map +1 -1
  34. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js +1 -1
  35. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js.flow +225 -287
  36. package/lib/commonjs/screens/toan-trinh-so/VehicleCamera.js.map +1 -1
  37. package/lib/commonjs/utils/cameraCrop.js +2 -0
  38. package/lib/commonjs/utils/cameraCrop.js.flow +96 -0
  39. package/lib/commonjs/utils/cameraCrop.js.map +1 -0
  40. package/lib/module/assets/icons/index.js +1 -1
  41. package/lib/module/assets/icons/index.js.map +1 -1
  42. package/lib/module/assets/icons/modal_confirm.svg +5 -5
  43. package/lib/module/assets/icons/modal_notice.svg +32 -32
  44. package/lib/module/assets/icons/modal_success.svg +26 -26
  45. package/lib/module/assets/icons/modal_warning.svg +21 -21
  46. package/lib/module/assets/icons/user_security.svg +10 -0
  47. package/lib/module/assets/tts/Frame1000011947.png +0 -0
  48. package/lib/module/navigation/primary-navigator.js +1 -1
  49. package/lib/module/navigation/primary-navigator.js.map +1 -1
  50. package/lib/module/screens/NFC/OcrStart.js +2 -0
  51. package/lib/module/screens/NFC/OcrStart.js.map +1 -0
  52. package/lib/module/screens/NFC/ScanMRZ.js +2 -0
  53. package/lib/module/screens/NFC/ScanMRZ.js.map +1 -0
  54. package/lib/module/screens/camera/CCCDCameraScreen.js +1 -1
  55. package/lib/module/screens/camera/CCCDCameraScreen.js.map +1 -1
  56. package/lib/module/screens/home/index.js +1 -1
  57. package/lib/module/screens/home/index.js.map +1 -1
  58. package/lib/module/screens/nationalID/index.js +1 -1
  59. package/lib/module/screens/nationalID/index.js.map +1 -1
  60. package/lib/module/screens/nationalIDBack/index.js +1 -1
  61. package/lib/module/screens/nationalIDBack/index.js.map +1 -1
  62. package/lib/module/screens/toan-trinh-so/OCR.js +1 -1
  63. package/lib/module/screens/toan-trinh-so/OCR.js.map +1 -1
  64. package/lib/module/screens/toan-trinh-so/VehicleCamera.js +1 -1
  65. package/lib/module/screens/toan-trinh-so/VehicleCamera.js.map +1 -1
  66. package/lib/module/utils/cameraCrop.js +2 -0
  67. package/lib/module/utils/cameraCrop.js.map +1 -0
  68. package/lib/typescript/assets/icons/index.d.ts +2 -1
  69. package/lib/typescript/assets/icons/index.d.ts.map +1 -1
  70. package/lib/typescript/navigation/primary-navigator.d.ts +3 -0
  71. package/lib/typescript/navigation/primary-navigator.d.ts.map +1 -1
  72. package/lib/typescript/screens/NFC/OcrStart.d.ts +2 -0
  73. package/lib/typescript/screens/NFC/OcrStart.d.ts.map +1 -0
  74. package/lib/typescript/screens/NFC/ScanMRZ.d.ts +15 -0
  75. package/lib/typescript/screens/NFC/ScanMRZ.d.ts.map +1 -0
  76. package/lib/typescript/screens/camera/CCCDCameraScreen.d.ts.map +1 -1
  77. package/lib/typescript/screens/home/index.d.ts.map +1 -1
  78. package/lib/typescript/screens/nationalID/index.d.ts.map +1 -1
  79. package/lib/typescript/screens/nationalIDBack/index.d.ts.map +1 -1
  80. package/lib/typescript/screens/toan-trinh-so/OCR.d.ts.map +1 -1
  81. package/lib/typescript/screens/toan-trinh-so/VehicleCamera.d.ts.map +1 -1
  82. package/lib/typescript/utils/cameraCrop.d.ts +43 -0
  83. package/lib/typescript/utils/cameraCrop.d.ts.map +1 -0
  84. package/package.json +2 -1
  85. package/src/assets/icons/index.tsx +2 -0
  86. package/src/assets/icons/modal_confirm.svg +5 -5
  87. package/src/assets/icons/modal_notice.svg +32 -32
  88. package/src/assets/icons/modal_success.svg +26 -26
  89. package/src/assets/icons/modal_warning.svg +21 -21
  90. package/src/assets/icons/user_security.svg +10 -0
  91. package/src/assets/tts/Frame1000011947.png +0 -0
  92. package/src/navigation/primary-navigator.tsx +7 -0
  93. package/src/screens/NFC/OcrStart.tsx +171 -0
  94. package/src/screens/NFC/ScanMRZ.tsx +563 -0
  95. package/src/screens/camera/CCCDCameraScreen.tsx +203 -133
  96. package/src/screens/home/index.tsx +7 -112
  97. package/src/screens/nationalID/index.tsx +123 -218
  98. package/src/screens/nationalIDBack/index.tsx +129 -209
  99. package/src/screens/toan-trinh-so/OCR.tsx +269 -555
  100. package/src/screens/toan-trinh-so/VehicleCamera.tsx +225 -287
  101. package/src/utils/cameraCrop.ts +96 -0
@@ -0,0 +1,563 @@
1
+ //@ts-nocheck
2
+ import { observer } from 'mobx-react-lite';
3
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
4
+ import {
5
+ Alert,
6
+ Image,
7
+ Linking,
8
+ NativeModules,
9
+ PermissionsAndroid,
10
+ Platform,
11
+ StyleSheet,
12
+ Text,
13
+ TouchableOpacity,
14
+ View,
15
+ } from 'react-native';
16
+ import {
17
+ MrzScannerView,
18
+ type MrzError,
19
+ type MrzResult,
20
+ type MrzScannerHandle,
21
+ } from 'react-native-mrz-scanner';
22
+ import {
23
+ Camera as VisionCamera,
24
+ useCameraDevice,
25
+ useCameraFormat,
26
+ } from 'react-native-vision-camera';
27
+ import RNImageManipulator from '@oguzhnatly/react-native-image-manipulator';
28
+ import ImagePicker from 'react-native-image-crop-picker';
29
+ import { launchImageLibrary } from 'react-native-image-picker';
30
+ import { AlertGlobal } from '../../components/ModalNotification/AlertGlobal';
31
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
32
+ import { useIsFocused, useNavigation } from '@react-navigation/native';
33
+ import { IconBack, TakePhotoSvg } from '../../assets/icons';
34
+ import { IconUpload } from '../../assets/svgs';
35
+ import { MText } from '../../components/MText';
36
+
37
+ const { NFCReader } = NativeModules;
38
+
39
+ const ORANGE = '#F05123';
40
+ // Tỉ lệ thẻ CCCD/CMND theo chuẩn ID-1: 85.6mm x 54mm
41
+ const CARD_ASPECT_RATIO = 85.6 / 54;
42
+
43
+ // iPhone 7 trở lên (iOS 13+) đều có NFC và iOS không cho tắt NFC nên iOS
44
+ // mặc định là hỗ trợ + đang bật. Android hỏi native module; máy không có
45
+ // phần cứng NFC (hoặc app chủ chưa implement getNfcStatus) trả về false.
46
+ const getNfcStatus = async () => {
47
+ if (Platform.OS === 'ios') return { supported: true, enabled: true };
48
+ try {
49
+ const status = await NFCReader?.getNfcStatus?.();
50
+ return { supported: !!status?.supported, enabled: !!status?.enabled };
51
+ } catch (e) {
52
+ return { supported: false, enabled: false };
53
+ }
54
+ };
55
+
56
+ const promptEnableNfc = () => {
57
+ AlertGlobal.show({
58
+ type: 'warning',
59
+ title: 'NFC đang tắt',
60
+ message:
61
+ 'Thiết bị của bạn hỗ trợ NFC nhưng đang tắt. Vui lòng bật NFC để đọc thông tin thẻ CCCD.',
62
+ primaryText: 'Mở cài đặt',
63
+ secondaryText: 'Để sau',
64
+ onPrimaryPress: () => {
65
+ Linking.sendIntent('android.settings.NFC_SETTINGS').catch(() => {});
66
+ },
67
+ });
68
+ };
69
+
70
+ const getImageSize = (uri) =>
71
+ new Promise((resolve, reject) => {
72
+ Image.getSize(uri, (width, height) => resolve({ width, height }), reject);
73
+ });
74
+
75
+ /**
76
+ * Tính vùng crop (pixel trên ảnh gốc) tương ứng với phần preview nhìn thấy
77
+ * trong khung. VisionCamera fill khung theo kiểu "cover": ảnh được scale để
78
+ * phủ kín khung rồi cắt phần thừa, nên vùng nhìn thấy là hình chữ nhật đồng
79
+ * dạng với khung và nằm chính giữa ảnh.
80
+ */
81
+ export const computeCropRegion = (photoW, photoH, frameW, frameH) => {
82
+ // Ảnh lưu ngang nhưng khung dọc (hoặc ngược lại) -> tính trên hệ trục đã xoay 90°
83
+ const rotated = photoW > photoH !== frameW > frameH;
84
+ const w = rotated ? photoH : photoW;
85
+ const h = rotated ? photoW : photoH;
86
+
87
+ const scale = Math.max(frameW / w, frameH / h);
88
+ const cropW = Math.min(w, Math.round(frameW / scale));
89
+ const cropH = Math.min(h, Math.round(frameH / scale));
90
+ const cropX = Math.max(0, Math.round((w - cropW) / 2));
91
+ const cropY = Math.max(0, Math.round((h - cropH) / 2));
92
+
93
+ // Vùng crop luôn nằm chính giữa nên khi ảnh xoay 90° chỉ cần đảo trục
94
+ return rotated
95
+ ? { originX: cropY, originY: cropX, width: cropH, height: cropW }
96
+ : { originX: cropX, originY: cropY, width: cropW, height: cropH };
97
+ };
98
+
99
+ const ScanMRZ = (props: any) => {
100
+ const insets = useSafeAreaInsets();
101
+ const navigation = useNavigation();
102
+ const isFocused = useIsFocused();
103
+ const scannerRef = useRef<MrzScannerHandle>(null);
104
+ const cameraRef = useRef(null);
105
+ const frameLayout = useRef({ width: 0, height: 0 });
106
+ const [mode, setMode] = useState(props.route?.params?.initialMode ?? null);
107
+ const [autoCapture, setAutoCapture] = useState(true);
108
+ const [hasPermission, setHasPermission] = useState(Platform.OS === 'ios');
109
+ const [cameraReady, setCameraReady] = useState(false);
110
+ const [taking, setTaking] = useState(false);
111
+ const [captured, setCaptured] = useState(null);
112
+
113
+ const device = useCameraDevice('back');
114
+ const format = useCameraFormat(device, [
115
+ { photoResolution: { width: 1280, height: 720 } },
116
+ ]);
117
+
118
+ const front = props.route?.params?.front !== false;
119
+
120
+ useEffect(() => {
121
+ if (Platform.OS === 'android') {
122
+ PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.CAMERA, {
123
+ title: 'Quyền camera',
124
+ message:
125
+ 'Ứng dụng cần camera để quét chuỗi ký tự trên mặt sau thẻ CCCD.',
126
+ buttonPositive: 'Đồng ý',
127
+ buttonNegative: 'Từ chối',
128
+ }).then((status) =>
129
+ setHasPermission(status === PermissionsAndroid.RESULTS.GRANTED)
130
+ );
131
+ }
132
+ }, []);
133
+
134
+ // Chưa chỉ định initialMode: thiết bị hỗ trợ NFC thì ưu tiên tab Đọc NFC,
135
+ // không hỗ trợ thì vào thẳng tab Chụp CCCD. Có NFC nhưng đang tắt thì vẫn
136
+ // vào tab NFC kèm nhắc bật NFC trong cài đặt.
137
+ useEffect(() => {
138
+ if (props.route?.params?.initialMode) return;
139
+ getNfcStatus().then(({ supported, enabled }) => {
140
+ setMode(supported ? 'nfc' : 'photo');
141
+ if (supported && !enabled) {
142
+ promptEnableNfc();
143
+ }
144
+ });
145
+ // eslint-disable-next-line react-hooks/exhaustive-deps
146
+ }, []);
147
+
148
+ // Bấm tab Đọc NFC: check lại trạng thái vì người dùng có thể vừa tắt/bật NFC
149
+ const switchToNfc = async () => {
150
+ setMode('nfc');
151
+ const { supported, enabled } = await getNfcStatus();
152
+ if (supported && !enabled) {
153
+ promptEnableNfc();
154
+ }
155
+ };
156
+
157
+ // Đổi chế độ: gỡ camera cũ trước, chờ Android nhả camera rồi mới gắn camera mới
158
+ useEffect(() => {
159
+ setCameraReady(false);
160
+ const timeout = setTimeout(() => setCameraReady(true), 500);
161
+ return () => clearTimeout(timeout);
162
+ }, [mode]);
163
+
164
+ const handleDetected = useCallback((result: MrzResult) => {
165
+ Alert.alert(
166
+ 'Đã đọc MRZ',
167
+ [
168
+ `Họ tên: ${result.fullName}`,
169
+ `Số định danh: ${result.idNumber ?? result.documentNumber}`,
170
+ `Ngày sinh: ${result.dateOfBirth}`,
171
+ `Hết hạn: ${result.dateOfExpiry}`,
172
+ `Hợp lệ: ${result.valid ? 'Có' : 'Không'}`,
173
+ ].join('\n'),
174
+ [{ text: 'Quét lại', onPress: () => scannerRef.current?.resume() }]
175
+ );
176
+ }, []);
177
+
178
+ const handleError = useCallback((error: MrzError) => {
179
+ AlertGlobal.show({
180
+ type: 'warning',
181
+ title: 'Thông báo',
182
+ message: error?.message,
183
+ });
184
+ }, []);
185
+
186
+ const cropToFrame = async (uri) => {
187
+ const { width: frameW, height: frameH } = frameLayout.current;
188
+ if (!frameW || !frameH) return uri;
189
+ const { width: photoW, height: photoH } = await getImageSize(uri);
190
+ const crop = computeCropRegion(photoW, photoH, frameW, frameH);
191
+ console.log('CCCD crop region', { photoW, photoH, frameW, frameH, crop });
192
+ const result = await RNImageManipulator.manipulate(uri, [{ crop }], {
193
+ compress: 0.9,
194
+ format: 'jpeg',
195
+ });
196
+ return result.uri;
197
+ };
198
+
199
+ const takePicture = async () => {
200
+ if (cameraRef.current == null || taking) return;
201
+ setTaking(true);
202
+ try {
203
+ const photo = await cameraRef.current.takePhoto({
204
+ qualityPrioritization: 'quality',
205
+ });
206
+ const uri = 'file://' + photo.path;
207
+ const cropped = await cropToFrame(uri);
208
+ setCaptured(cropped);
209
+ } catch (err) {
210
+ console.error(err);
211
+ AlertGlobal.show({
212
+ type: 'warning',
213
+ title: 'Thông báo',
214
+ message: 'Không chụp được ảnh. Vui lòng thử lại.',
215
+ });
216
+ } finally {
217
+ setTaking(false);
218
+ }
219
+ };
220
+
221
+ // Ảnh từ thư viện không đi qua preview nên không có toạ độ khung để crop
222
+ const pickImageFromGallery = async () => {
223
+ if (Platform.OS === 'android') {
224
+ const result = await launchImageLibrary({ mediaType: 'photo' });
225
+ if (result.assets?.[0]?.uri) {
226
+ setCaptured(result.assets[0].uri);
227
+ }
228
+ } else {
229
+ ImagePicker.openPicker({}).then((image) => {
230
+ if (image?.path) {
231
+ setCaptured('file://' + image.path);
232
+ }
233
+ });
234
+ }
235
+ };
236
+
237
+ const usePhoto = () => {
238
+ const callback =
239
+ props.route?.params?.onCaptured ?? props.route?.params?.callback;
240
+ if (callback) {
241
+ navigation.goBack();
242
+ callback(captured);
243
+ } else {
244
+ AlertGlobal.show({
245
+ type: 'success',
246
+ title: 'Đã chụp ảnh',
247
+ message: captured,
248
+ });
249
+ }
250
+ };
251
+
252
+ return (
253
+ <View style={styles.container}>
254
+ <View style={[styles.header, { paddingTop: insets.top + 16 }]}>
255
+ <TouchableOpacity
256
+ onPress={() => {
257
+ navigation.goBack();
258
+ }}
259
+ hitSlop={{ top: 12, bottom: 12, left: 12, right: 12 }}
260
+ >
261
+ <IconBack />
262
+ </TouchableOpacity>
263
+ <View style={styles.tabs}>
264
+ <TouchableOpacity
265
+ style={[
266
+ styles.tab,
267
+ mode === 'photo' ? styles.tabActive : styles.tabInactive,
268
+ ]}
269
+ onPress={() => setMode('photo')}
270
+ >
271
+ <MText
272
+ style={
273
+ mode === 'photo' ? styles.tabTextActive : styles.tabTextInactive
274
+ }
275
+ >
276
+ Chụp CCCD
277
+ </MText>
278
+ </TouchableOpacity>
279
+ <TouchableOpacity
280
+ style={[
281
+ styles.tab,
282
+ mode === 'nfc' ? styles.tabActive : styles.tabInactive,
283
+ ]}
284
+ onPress={switchToNfc}
285
+ >
286
+ <MText
287
+ style={
288
+ mode === 'nfc' ? styles.tabTextActive : styles.tabTextInactive
289
+ }
290
+ >
291
+ Đọc NFC
292
+ </MText>
293
+ </TouchableOpacity>
294
+ </View>
295
+ </View>
296
+
297
+ {mode === 'nfc' ? (
298
+ <>
299
+ <MText style={styles.instruction}>
300
+ Dùng camera để quét chuỗi ký tự mặt sau thẻ{'\n'}CCCD gắn chíp ở
301
+ phía dưới
302
+ </MText>
303
+ {/* Khung camera + 4 góc cam */}
304
+ <View style={styles.cameraWrap}>
305
+ {hasPermission && cameraReady && isFocused && (
306
+ <MrzScannerView
307
+ ref={scannerRef}
308
+ style={StyleSheet.absoluteFill}
309
+ autoCapture={autoCapture}
310
+ onMrzDetected={handleDetected}
311
+ onError={handleError}
312
+ />
313
+ )}
314
+ <View style={[styles.corner, styles.cornerTL]} />
315
+ <View style={[styles.corner, styles.cornerTR]} />
316
+ <View style={[styles.corner, styles.cornerBL]} />
317
+ <View style={[styles.corner, styles.cornerBR]} />
318
+ </View>
319
+ {/* Checkbox chụp tự động */}
320
+ <TouchableOpacity
321
+ style={styles.checkboxRow}
322
+ onPress={() => setAutoCapture((v) => !v)}
323
+ activeOpacity={0.7}
324
+ >
325
+ <Text style={styles.checkboxLabel}>Chụp tự động</Text>
326
+ <View
327
+ style={[styles.checkbox, autoCapture && styles.checkboxChecked]}
328
+ >
329
+ {autoCapture && <Text style={styles.checkmark}>✓</Text>}
330
+ </View>
331
+ </TouchableOpacity>
332
+
333
+ <MText style={styles.hint}>
334
+ Vui lòng đặt chuỗi kí tự nằm vừa khung{'\n'}hình chữ nhật, chụp đủ
335
+ ánh sáng và rõ nét.
336
+ </MText>
337
+ </>
338
+ ) : mode === 'photo' ? (
339
+ <>
340
+ <MText style={styles.instruction}>
341
+ {front ? 'Chụp CMND/ CCCD mặt trước' : 'Chụp CMND/ CCCD mặt sau'}
342
+ </MText>
343
+ {/* Khung tỉ lệ thẻ CCCD: vùng nhìn thấy của preview = vùng sẽ crop */}
344
+ <View
345
+ style={styles.photoFrame}
346
+ onLayout={(e) => {
347
+ frameLayout.current = e.nativeEvent.layout;
348
+ }}
349
+ >
350
+ {captured ? (
351
+ <Image
352
+ source={{ uri: captured }}
353
+ style={StyleSheet.absoluteFill}
354
+ resizeMode="cover"
355
+ />
356
+ ) : hasPermission && cameraReady && device ? (
357
+ <VisionCamera
358
+ ref={cameraRef}
359
+ style={StyleSheet.absoluteFill}
360
+ device={device}
361
+ isActive={isFocused && mode === 'photo' && !captured}
362
+ photo={true}
363
+ format={format}
364
+ />
365
+ ) : null}
366
+ <View style={[styles.corner, styles.cornerTL]} />
367
+ <View style={[styles.corner, styles.cornerTR]} />
368
+ <View style={[styles.corner, styles.cornerBL]} />
369
+ <View style={[styles.corner, styles.cornerBR]} />
370
+ </View>
371
+
372
+ {captured ? (
373
+ <View style={styles.previewActions}>
374
+ <TouchableOpacity
375
+ style={styles.retakeButton}
376
+ onPress={() => setCaptured(null)}
377
+ >
378
+ <MText style={styles.retakeText}>Chụp lại</MText>
379
+ </TouchableOpacity>
380
+ <TouchableOpacity style={styles.useButton} onPress={usePhoto}>
381
+ <MText style={styles.useText}>Dùng ảnh này</MText>
382
+ </TouchableOpacity>
383
+ </View>
384
+ ) : (
385
+ <>
386
+ <TouchableOpacity
387
+ style={styles.galleryButton}
388
+ onPress={pickImageFromGallery}
389
+ >
390
+ <IconUpload />
391
+ <MText style={styles.galleryText}>Tải ảnh từ thư viện</MText>
392
+ </TouchableOpacity>
393
+ <View style={styles.spacer} />
394
+ <MText style={[styles.hint, { marginTop: 0, marginBottom: 20 }]}>
395
+ Vui lòng đặt giấy tờ nằm vừa khung hình chữ nhật,{'\n'}chụp đủ
396
+ ánh sáng và rõ nét.
397
+ </MText>
398
+ <TouchableOpacity
399
+ style={[
400
+ styles.captureButton,
401
+ { marginBottom: insets.bottom + 24 },
402
+ ]}
403
+ onPress={takePicture}
404
+ disabled={taking}
405
+ >
406
+ <TakePhotoSvg />
407
+ </TouchableOpacity>
408
+ </>
409
+ )}
410
+ </>
411
+ ) : null}
412
+ </View>
413
+ );
414
+ };
415
+
416
+ export default observer(ScanMRZ);
417
+ const styles = StyleSheet.create({
418
+ container: { flex: 1, backgroundColor: '#FFFFFF' },
419
+ header: {
420
+ flexDirection: 'row',
421
+ alignItems: 'center',
422
+ paddingHorizontal: 16,
423
+ paddingTop: 8,
424
+ },
425
+ tabs: {
426
+ flex: 1,
427
+ flexDirection: 'row',
428
+ justifyContent: 'center',
429
+ gap: 8,
430
+ },
431
+ tab: {
432
+ paddingHorizontal: 14,
433
+ paddingVertical: 7,
434
+ borderRadius: 8,
435
+ },
436
+ tabInactive: { backgroundColor: '#F1F1F1' },
437
+ tabActive: { backgroundColor: ORANGE },
438
+ tabTextInactive: { color: '#555555', fontSize: 13, fontWeight: '500' },
439
+ tabTextActive: { color: '#FFFFFF', fontSize: 13, fontWeight: '600' },
440
+ instruction: {
441
+ textAlign: 'center',
442
+ color: '#333333',
443
+ fontSize: 14,
444
+ lineHeight: 20,
445
+ marginTop: 20,
446
+ marginBottom: 28,
447
+ },
448
+ cameraWrap: {
449
+ marginHorizontal: 16,
450
+ height: 220,
451
+ borderRadius: 8,
452
+ overflow: 'hidden',
453
+ backgroundColor: '#000000',
454
+ },
455
+ photoFrame: {
456
+ marginHorizontal: 24,
457
+ aspectRatio: CARD_ASPECT_RATIO,
458
+ borderRadius: 8,
459
+ overflow: 'hidden',
460
+ backgroundColor: '#000000',
461
+ },
462
+ corner: {
463
+ position: 'absolute',
464
+ width: 26,
465
+ height: 26,
466
+ borderColor: ORANGE,
467
+ },
468
+ cornerTL: {
469
+ top: 0,
470
+ left: 0,
471
+ borderTopWidth: 4,
472
+ borderLeftWidth: 4,
473
+ borderTopLeftRadius: 8,
474
+ },
475
+ cornerTR: {
476
+ top: 0,
477
+ right: 0,
478
+ borderTopWidth: 4,
479
+ borderRightWidth: 4,
480
+ borderTopRightRadius: 8,
481
+ },
482
+ cornerBL: {
483
+ bottom: 0,
484
+ left: 0,
485
+ borderBottomWidth: 4,
486
+ borderLeftWidth: 4,
487
+ borderBottomLeftRadius: 8,
488
+ },
489
+ cornerBR: {
490
+ bottom: 0,
491
+ right: 0,
492
+ borderBottomWidth: 4,
493
+ borderRightWidth: 4,
494
+ borderBottomRightRadius: 8,
495
+ },
496
+ checkboxRow: {
497
+ flexDirection: 'row',
498
+ alignItems: 'center',
499
+ justifyContent: 'center',
500
+ marginTop: 24,
501
+ gap: 8,
502
+ },
503
+ checkboxLabel: { fontSize: 14, color: '#333333' },
504
+ checkbox: {
505
+ width: 20,
506
+ height: 20,
507
+ borderRadius: 4,
508
+ borderWidth: 1.5,
509
+ borderColor: '#BBBBBB',
510
+ alignItems: 'center',
511
+ justifyContent: 'center',
512
+ },
513
+ checkboxChecked: { backgroundColor: '#22A45D', borderColor: '#22A45D' },
514
+ checkmark: { color: '#FFFFFF', fontSize: 13, fontWeight: '700' },
515
+ hint: {
516
+ textAlign: 'center',
517
+ color: '#555555',
518
+ fontSize: 13,
519
+ lineHeight: 19,
520
+ marginTop: 48,
521
+ },
522
+ galleryButton: {
523
+ alignSelf: 'center',
524
+ flexDirection: 'row',
525
+ alignItems: 'center',
526
+ gap: 8,
527
+ marginTop: 20,
528
+ paddingHorizontal: 14,
529
+ paddingVertical: 8,
530
+ borderRadius: 8,
531
+ borderWidth: 1,
532
+ borderColor: ORANGE,
533
+ backgroundColor: '#FFFFFF',
534
+ },
535
+ galleryText: { color: '#333333', fontSize: 13 },
536
+ spacer: { flex: 1 },
537
+ captureButton: { alignSelf: 'center' },
538
+ previewActions: {
539
+ flexDirection: 'row',
540
+ gap: 12,
541
+ marginTop: 24,
542
+ marginHorizontal: 24,
543
+ },
544
+ retakeButton: {
545
+ flex: 1,
546
+ height: 40,
547
+ borderRadius: 20,
548
+ borderWidth: 1,
549
+ borderColor: ORANGE,
550
+ alignItems: 'center',
551
+ justifyContent: 'center',
552
+ },
553
+ retakeText: { color: ORANGE, fontSize: 14, fontWeight: '600' },
554
+ useButton: {
555
+ flex: 1,
556
+ height: 40,
557
+ borderRadius: 20,
558
+ backgroundColor: ORANGE,
559
+ alignItems: 'center',
560
+ justifyContent: 'center',
561
+ },
562
+ useText: { color: '#FFFFFF', fontSize: 14, fontWeight: '600' },
563
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_mobxReactLite","require","_react","_interopRequireWildcard","_reactNative","_reactNativeMrzScanner","_reactNativeVisionCamera","_reactNativeImageManipulator","_interopRequireDefault","_reactNativeImageCropPicker","_reactNativeImagePicker","_AlertGlobal","_reactNativeSafeAreaContext","_native","_icons","_svgs","_MText","_this","_jsxFileName","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","_t3","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","NFCReader","NativeModules","ORANGE","CARD_ASPECT_RATIO","getNfcStatus","_callee","status","_t","_regenerator","async","_context","prev","next","Platform","OS","abrupt","supported","enabled","awrap","sent","stop","Promise","promptEnableNfc","AlertGlobal","show","type","title","message","primaryText","secondaryText","onPrimaryPress","Linking","sendIntent","catch","getImageSize","uri","resolve","reject","Image","getSize","width","height","computeCropRegion","exports","photoW","photoH","frameW","frameH","rotated","w","h","scale","Math","max","cropW","min","round","cropH","cropX","cropY","originX","originY","ScanMRZ","props","_props$route$params$i","_props$route","_props$route$params","_props$route2","_props$route2$params","insets","useSafeAreaInsets","navigation","useNavigation","isFocused","useIsFocused","scannerRef","useRef","cameraRef","frameLayout","_useState","useState","route","params","initialMode","_useState2","_slicedToArray2","mode","setMode","_useState3","_useState4","autoCapture","setAutoCapture","_useState5","_useState6","hasPermission","setHasPermission","_useState7","_useState8","cameraReady","setCameraReady","_useState9","_useState0","taking","setTaking","_useState1","_useState10","captured","setCaptured","device","useCameraDevice","format","useCameraFormat","photoResolution","front","useEffect","PermissionsAndroid","request","PERMISSIONS","CAMERA","buttonPositive","buttonNegative","then","RESULTS","GRANTED","_props$route3","_props$route3$params","_ref","switchToNfc","_callee2","_await$getNfcStatus","_context2","timeout","setTimeout","clearTimeout","handleDetected","useCallback","result","_result$idNumber","Alert","alert","fullName","idNumber","documentNumber","dateOfBirth","dateOfExpiry","valid","join","text","onPress","_scannerRef$current","current","resume","handleError","error","cropToFrame","_callee3","_frameLayout$current","_await$getImageSize","crop","_context3","console","log","RNImageManipulator","manipulate","compress","takePicture","_callee4","photo","cropped","_t2","_context4","takePhoto","qualityPrioritization","path","finish","pickImageFromGallery","_callee5","_result$assets","_result$assets$","_context5","launchImageLibrary","mediaType","assets","ImagePicker","openPicker","image","usePhoto","_props$route$params$o","_props$route4","_props$route4$params","_props$route5","_props$route5$params","callback","onCaptured","goBack","createElement","View","style","styles","container","__self","__source","fileName","lineNumber","columnNumber","header","paddingTop","top","TouchableOpacity","hitSlop","bottom","left","right","IconBack","tabs","tab","tabActive","tabInactive","MText","tabTextActive","tabTextInactive","Fragment","instruction","cameraWrap","MrzScannerView","ref","StyleSheet","absoluteFill","onMrzDetected","onError","corner","cornerTL","cornerTR","cornerBL","cornerBR","checkboxRow","v","activeOpacity","Text","checkboxLabel","checkbox","checkboxChecked","checkmark","hint","photoFrame","onLayout","nativeEvent","layout","source","resizeMode","Camera","isActive","previewActions","retakeButton","retakeText","useButton","useText","galleryButton","IconUpload","galleryText","spacer","marginTop","marginBottom","captureButton","disabled","TakePhotoSvg","_default","observer","create","flex","backgroundColor","flexDirection","alignItems","paddingHorizontal","justifyContent","gap","paddingVertical","borderRadius","color","fontSize","fontWeight","textAlign","lineHeight","marginHorizontal","overflow","aspectRatio","position","borderColor","borderTopWidth","borderLeftWidth","borderTopLeftRadius","borderRightWidth","borderTopRightRadius","borderBottomWidth","borderBottomLeftRadius","borderBottomRightRadius","borderWidth","alignSelf"],"sourceRoot":"../../../../src","sources":["screens/NFC/ScanMRZ.tsx"],"mappings":"wWACA,IAAAA,cAAA,CAAAC,OAAA,oBACA,IAAAC,MAAA,CAAAC,uBAAA,CAAAF,OAAA,WACA,IAAAG,YAAA,CAAAH,OAAA,iBAYA,IAAAI,sBAAA,CAAAJ,OAAA,6BAMA,IAAAK,wBAAA,CAAAL,OAAA,+BAKA,IAAAM,4BAAA,CAAAC,sBAAA,CAAAP,OAAA,gDACA,IAAAQ,2BAAA,CAAAD,sBAAA,CAAAP,OAAA,oCACA,IAAAS,uBAAA,CAAAT,OAAA,8BACA,IAAAU,YAAA,CAAAV,OAAA,mDACA,IAAAW,2BAAA,CAAAX,OAAA,mCACA,IAAAY,OAAA,CAAAZ,OAAA,6BACA,IAAAa,MAAA,CAAAb,OAAA,uBACA,IAAAc,KAAA,CAAAd,OAAA,sBACA,IAAAe,MAAA,CAAAf,OAAA,2BAA+C,IAAAgB,KAAA,MAAAC,YAAA,+EAAAf,wBAAAgB,CAAA,CAAAC,CAAA,wBAAAC,OAAA,KAAAC,CAAA,KAAAD,OAAA,GAAAE,CAAA,KAAAF,OAAA,UAAAlB,uBAAA,UAAAA,wBAAAgB,CAAA,CAAAC,CAAA,MAAAA,CAAA,EAAAD,CAAA,EAAAA,CAAA,CAAAK,UAAA,QAAAL,CAAA,KAAAM,CAAA,CAAAC,CAAA,CAAAC,CAAA,EAAAC,SAAA,MAAAC,OAAA,CAAAV,CAAA,YAAAA,CAAA,mBAAAA,CAAA,qBAAAA,CAAA,QAAAQ,CAAA,IAAAF,CAAA,CAAAL,CAAA,CAAAG,CAAA,CAAAD,CAAA,KAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,SAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,CAAAM,CAAA,EAAAO,GAAA,CAAAb,CAAA,CAAAQ,CAAA,WAAAM,GAAA,IAAAd,CAAA,aAAAc,GAAA,KAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,CAAAc,GAAA,KAAAP,CAAA,EAAAD,CAAA,CAAAW,MAAA,CAAAC,cAAA,GAAAD,MAAA,CAAAE,wBAAA,CAAAnB,CAAA,CAAAc,GAAA,KAAAP,CAAA,CAAAK,GAAA,EAAAL,CAAA,CAAAM,GAAA,EAAAP,CAAA,CAAAE,CAAA,CAAAM,GAAA,CAAAP,CAAA,EAAAC,CAAA,CAAAM,GAAA,EAAAd,CAAA,CAAAc,GAAA,UAAAN,CAAA,IAAAR,CAAA,CAAAC,CAAA,GAE/C,GAAQ,CAAAmB,SAAS,CAAKC,0BAAa,CAA3BD,SAAS,CAEjB,GAAM,CAAAE,MAAM,CAAG,SAAS,CAExB,GAAM,CAAAC,iBAAiB,CAAG,IAAI,CAAG,EAAE,CAKnC,GAAM,CAAAC,YAAY,CAAG,SAAAC,QAAA,MAAAC,MAAA,CAAAC,EAAA,QAAAC,YAAA,CAAAlB,OAAA,CAAAmB,KAAA,UAAAC,QAAA,iBAAAA,QAAA,CAAAC,IAAA,CAAAD,QAAA,CAAAE,IAAA,cACfC,qBAAQ,CAACC,EAAE,GAAK,KAAK,GAAAJ,QAAA,CAAAE,IAAA,iBAAAF,QAAA,CAAAK,MAAA,UAAS,CAAEC,SAAS,CAAE,IAAI,CAAEC,OAAO,CAAE,IAAK,CAAC,SAAAP,QAAA,CAAAC,IAAA,EAAAD,CAAA,SAAAE,IAAA,UAAAJ,YAAA,CAAAlB,OAAA,CAAA4B,KAAA,CAE7ClB,SAAS,cAATA,SAAS,CAAEI,YAAY,cAAvBJ,SAAS,CAAEI,YAAY,CAAG,CAAC,SAA1CE,MAAM,CAAAI,QAAA,CAAAS,IAAA,QAAAT,QAAA,CAAAK,MAAA,UACL,CAAEC,SAAS,CAAE,CAAC,EAACV,MAAM,QAANA,MAAM,CAAEU,SAAS,EAAEC,OAAO,CAAE,CAAC,EAACX,MAAM,QAANA,MAAM,CAAEW,OAAO,CAAC,CAAC,SAAAP,QAAA,CAAAC,IAAA,EAAAJ,CAAA,GAAAG,QAAA,oBAAAA,QAAA,CAAAK,MAAA,UAE9D,CAAEC,SAAS,CAAE,KAAK,CAAEC,OAAO,CAAE,KAAM,CAAC,0BAAAP,QAAA,CAAAU,IAAA,wBAAAC,OAAA,GAE9C,CAED,GAAM,CAAAC,eAAe,CAAG,QAAlB,CAAAA,eAAeA,CAAA,CAAS,CAC5BC,wBAAW,CAACC,IAAI,CAAC,CACfC,IAAI,CAAE,SAAS,CACfC,KAAK,CAAE,cAAc,CACrBC,OAAO,CACL,yFAAyF,CAC3FC,WAAW,CAAE,YAAY,CACzBC,aAAa,CAAE,QAAQ,CACvBC,cAAc,CAAE,QAAhB,CAAAA,cAAcA,CAAA,CAAQ,CACpBC,oBAAO,CAACC,UAAU,CAAC,+BAA+B,CAAC,CAACC,KAAK,CAAC,UAAM,CAAC,CAAC,CAAC,CACrE,CACF,CAAC,CAAC,CACJ,CAAC,CAED,GAAM,CAAAC,YAAY,CAAG,QAAf,CAAAA,YAAYA,CAAIC,GAAG,QACvB,IAAI,CAAAd,OAAO,CAAC,SAACe,OAAO,CAAEC,MAAM,CAAK,CAC/BC,kBAAK,CAACC,OAAO,CAACJ,GAAG,CAAE,SAACK,KAAK,CAAEC,MAAM,QAAK,CAAAL,OAAO,CAAC,CAAEI,KAAK,CAALA,KAAK,CAAEC,MAAM,CAANA,MAAO,CAAC,CAAC,GAAEJ,MAAM,CAAC,CAC3E,CAAC,CAAC,GAQG,GAAM,CAAAK,iBAAiB,CAAAC,OAAA,CAAAD,iBAAA,CAAG,QAApB,CAAAA,iBAAiBA,CAAIE,MAAM,CAAEC,MAAM,CAAEC,MAAM,CAAEC,MAAM,CAAK,CAEnE,GAAM,CAAAC,OAAO,CAAGJ,MAAM,CAAGC,MAAM,GAAKC,MAAM,CAAGC,MAAM,CACnD,GAAM,CAAAE,CAAC,CAAGD,OAAO,CAAGH,MAAM,CAAGD,MAAM,CACnC,GAAM,CAAAM,CAAC,CAAGF,OAAO,CAAGJ,MAAM,CAAGC,MAAM,CAEnC,GAAM,CAAAM,KAAK,CAAGC,IAAI,CAACC,GAAG,CAACP,MAAM,CAAGG,CAAC,CAAEF,MAAM,CAAGG,CAAC,CAAC,CAC9C,GAAM,CAAAI,KAAK,CAAGF,IAAI,CAACG,GAAG,CAACN,CAAC,CAAEG,IAAI,CAACI,KAAK,CAACV,MAAM,CAAGK,KAAK,CAAC,CAAC,CACrD,GAAM,CAAAM,KAAK,CAAGL,IAAI,CAACG,GAAG,CAACL,CAAC,CAAEE,IAAI,CAACI,KAAK,CAACT,MAAM,CAAGI,KAAK,CAAC,CAAC,CACrD,GAAM,CAAAO,KAAK,CAAGN,IAAI,CAACC,GAAG,CAAC,CAAC,CAAED,IAAI,CAACI,KAAK,CAAC,CAACP,CAAC,CAAGK,KAAK,EAAI,CAAC,CAAC,CAAC,CACtD,GAAM,CAAAK,KAAK,CAAGP,IAAI,CAACC,GAAG,CAAC,CAAC,CAAED,IAAI,CAACI,KAAK,CAAC,CAACN,CAAC,CAAGO,KAAK,EAAI,CAAC,CAAC,CAAC,CAGtD,MAAO,CAAAT,OAAO,CACV,CAAEY,OAAO,CAAED,KAAK,CAAEE,OAAO,CAAEH,KAAK,CAAElB,KAAK,CAAEiB,KAAK,CAAEhB,MAAM,CAAEa,KAAM,CAAC,CAC/D,CAAEM,OAAO,CAAEF,KAAK,CAAEG,OAAO,CAAEF,KAAK,CAAEnB,KAAK,CAAEc,KAAK,CAAEb,MAAM,CAAEgB,KAAM,CAAC,CACrE,CAAC,CAED,GAAM,CAAAK,OAAO,CAAG,QAAV,CAAAA,OAAOA,CAAIC,KAAU,CAAK,KAAAC,qBAAA,CAAAC,YAAA,CAAAC,mBAAA,CAAAC,aAAA,CAAAC,oBAAA,CAC9B,GAAM,CAAAC,MAAM,CAAG,GAAAC,6CAAiB,EAAC,CAAC,CAClC,GAAM,CAAAC,UAAU,CAAG,GAAAC,qBAAa,EAAC,CAAC,CAClC,GAAM,CAAAC,SAAS,CAAG,GAAAC,oBAAY,EAAC,CAAC,CAChC,GAAM,CAAAC,UAAU,CAAG,GAAAC,aAAM,EAAmB,IAAI,CAAC,CACjD,GAAM,CAAAC,SAAS,CAAG,GAAAD,aAAM,EAAC,IAAI,CAAC,CAC9B,GAAM,CAAAE,WAAW,CAAG,GAAAF,aAAM,EAAC,CAAEpC,KAAK,CAAE,CAAC,CAAEC,MAAM,CAAE,CAAE,CAAC,CAAC,CACnD,IAAAsC,SAAA,CAAwB,GAAAC,eAAQ,GAAAhB,qBAAA,EAAAC,YAAA,CAACF,KAAK,CAACkB,KAAK,gBAAAf,mBAAA,CAAXD,YAAA,CAAaiB,MAAM,eAAnBhB,mBAAA,CAAqBiB,WAAW,QAAAnB,qBAAA,CAAI,IAAI,CAAC,CAAAoB,UAAA,IAAAC,eAAA,CAAA/F,OAAA,EAAAyF,SAAA,IAAnEO,IAAI,CAAAF,UAAA,IAAEG,OAAO,CAAAH,UAAA,IACpB,IAAAI,UAAA,CAAsC,GAAAR,eAAQ,EAAC,IAAI,CAAC,CAAAS,UAAA,IAAAJ,eAAA,CAAA/F,OAAA,EAAAkG,UAAA,IAA7CE,WAAW,CAAAD,UAAA,IAAEE,cAAc,CAAAF,UAAA,IAClC,IAAAG,UAAA,CAA0C,GAAAZ,eAAQ,EAACnE,qBAAQ,CAACC,EAAE,GAAK,KAAK,CAAC,CAAA+E,UAAA,IAAAR,eAAA,CAAA/F,OAAA,EAAAsG,UAAA,IAAlEE,aAAa,CAAAD,UAAA,IAAEE,gBAAgB,CAAAF,UAAA,IACtC,IAAAG,UAAA,CAAsC,GAAAhB,eAAQ,EAAC,KAAK,CAAC,CAAAiB,UAAA,IAAAZ,eAAA,CAAA/F,OAAA,EAAA0G,UAAA,IAA9CE,WAAW,CAAAD,UAAA,IAAEE,cAAc,CAAAF,UAAA,IAClC,IAAAG,UAAA,CAA4B,GAAApB,eAAQ,EAAC,KAAK,CAAC,CAAAqB,UAAA,IAAAhB,eAAA,CAAA/F,OAAA,EAAA8G,UAAA,IAApCE,MAAM,CAAAD,UAAA,IAAEE,SAAS,CAAAF,UAAA,IACxB,IAAAG,UAAA,CAAgC,GAAAxB,eAAQ,EAAC,IAAI,CAAC,CAAAyB,WAAA,IAAApB,eAAA,CAAA/F,OAAA,EAAAkH,UAAA,IAAvCE,QAAQ,CAAAD,WAAA,IAAEE,WAAW,CAAAF,WAAA,IAE5B,GAAM,CAAAG,MAAM,CAAG,GAAAC,wCAAe,EAAC,MAAM,CAAC,CACtC,GAAM,CAAAC,MAAM,CAAG,GAAAC,wCAAe,EAACH,MAAM,CAAE,CACrC,CAAEI,eAAe,CAAE,CAAExE,KAAK,CAAE,IAAI,CAAEC,MAAM,CAAE,GAAI,CAAE,CAAC,CAClD,CAAC,CAEF,GAAM,CAAAwE,KAAK,CAAG,EAAA9C,aAAA,CAAAJ,KAAK,CAACkB,KAAK,gBAAAb,oBAAA,CAAXD,aAAA,CAAae,MAAM,eAAnBd,oBAAA,CAAqB6C,KAAK,IAAK,KAAK,CAElD,GAAAC,gBAAS,EAAC,UAAM,CACd,GAAIrG,qBAAQ,CAACC,EAAE,GAAK,SAAS,CAAE,CAC7BqG,+BAAkB,CAACC,OAAO,CAACD,+BAAkB,CAACE,WAAW,CAACC,MAAM,CAAE,CAChE5F,KAAK,CAAE,cAAc,CACrBC,OAAO,CACL,gEAAgE,CAClE4F,cAAc,CAAE,QAAQ,CACxBC,cAAc,CAAE,SAClB,CAAC,CAAC,CAACC,IAAI,CAAC,SAACnH,MAAM,QACb,CAAAyF,gBAAgB,CAACzF,MAAM,GAAK6G,+BAAkB,CAACO,OAAO,CAACC,OAAO,CAAC,EACjE,CAAC,CACH,CACF,CAAC,CAAE,EAAE,CAAC,CAKN,GAAAT,gBAAS,EAAC,UAAM,KAAAU,aAAA,CAAAC,oBAAA,CACd,IAAAD,aAAA,CAAI7D,KAAK,CAACkB,KAAK,UAAA4C,oBAAA,CAAXD,aAAA,CAAa1C,MAAM,SAAnB2C,oBAAA,CAAqB1C,WAAW,CAAE,OACtC/E,YAAY,CAAC,CAAC,CAACqH,IAAI,CAAC,SAAAK,IAAA,CAA4B,IAAzB,CAAA9G,SAAS,CAAA8G,IAAA,CAAT9G,SAAS,CAAEC,OAAO,CAAA6G,IAAA,CAAP7G,OAAO,CACvCsE,OAAO,CAACvE,SAAS,CAAG,KAAK,CAAG,OAAO,CAAC,CACpC,GAAIA,SAAS,EAAI,CAACC,OAAO,CAAE,CACzBK,eAAe,CAAC,CAAC,CACnB,CACF,CAAC,CAAC,CAEJ,CAAC,CAAE,EAAE,CAAC,CAGN,GAAM,CAAAyG,WAAW,CAAG,SAAAC,SAAA,MAAAC,mBAAA,CAAAjH,SAAA,CAAAC,OAAA,QAAAT,YAAA,CAAAlB,OAAA,CAAAmB,KAAA,UAAAyH,SAAA,iBAAAA,SAAA,CAAAvH,IAAA,CAAAuH,SAAA,CAAAtH,IAAA,SAClB2E,OAAO,CAAC,KAAK,CAAC,CAAC2C,SAAA,CAAAtH,IAAA,UAAAJ,YAAA,CAAAlB,OAAA,CAAA4B,KAAA,CACsBd,YAAY,CAAC,CAAC,SAAA6H,mBAAA,CAAAC,SAAA,CAAA/G,IAAA,CAA3CH,SAAS,CAAAiH,mBAAA,CAATjH,SAAS,CAAEC,OAAO,CAAAgH,mBAAA,CAAPhH,OAAO,CAC1B,GAAID,SAAS,EAAI,CAACC,OAAO,CAAE,CACzBK,eAAe,CAAC,CAAC,CACnB,CAAC,wBAAA4G,SAAA,CAAA9G,IAAA,qBAAAC,OAAA,GACF,CAGD,GAAA6F,gBAAS,EAAC,UAAM,CACdf,cAAc,CAAC,KAAK,CAAC,CACrB,GAAM,CAAAgC,OAAO,CAAGC,UAAU,CAAC,iBAAM,CAAAjC,cAAc,CAAC,IAAI,CAAC,GAAE,GAAG,CAAC,CAC3D,MAAO,kBAAM,CAAAkC,YAAY,CAACF,OAAO,CAAC,GACpC,CAAC,CAAE,CAAC7C,IAAI,CAAC,CAAC,CAEV,GAAM,CAAAgD,cAAc,CAAG,GAAAC,kBAAW,EAAC,SAACC,MAAiB,CAAK,KAAAC,gBAAA,CACxDC,kBAAK,CAACC,KAAK,CACT,YAAY,CACZ,oBACaH,MAAM,CAACI,QAAQ,mCAAAH,gBAAA,CACTD,MAAM,CAACK,QAAQ,QAAAJ,gBAAA,CAAID,MAAM,CAACM,cAAc,mBAC3CN,MAAM,CAACO,WAAW,uBACpBP,MAAM,CAACQ,YAAY,uBACpBR,MAAM,CAACS,KAAK,CAAG,IAAI,CAAG,OAAO,EACzC,CAACC,IAAI,CAAC,IAAI,CAAC,CACZ,CAAC,CAAEC,IAAI,CAAE,UAAU,CAAEC,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAA,MAAAC,mBAAA,QAAAA,mBAAA,CAAQ1E,UAAU,CAAC2E,OAAO,eAAlBD,mBAAA,CAAoBE,MAAM,CAAC,CAAC,EAAC,CAAC,CACpE,CAAC,CACH,CAAC,CAAE,EAAE,CAAC,CAEN,GAAM,CAAAC,WAAW,CAAG,GAAAjB,kBAAW,EAAC,SAACkB,KAAe,CAAK,CACnDlI,wBAAW,CAACC,IAAI,CAAC,CACfC,IAAI,CAAE,SAAS,CACfC,KAAK,CAAE,WAAW,CAClBC,OAAO,CAAE8H,KAAK,cAALA,KAAK,CAAE9H,OAClB,CAAC,CAAC,CACJ,CAAC,CAAE,EAAE,CAAC,CAEN,GAAM,CAAA+H,WAAW,CAAG,SAAAC,SAAOxH,GAAG,MAAAyH,oBAAA,CAAA9G,MAAA,CAAAC,MAAA,CAAA8G,mBAAA,CAAAjH,MAAA,CAAAC,MAAA,CAAAiH,IAAA,CAAAtB,MAAA,QAAAhI,YAAA,CAAAlB,OAAA,CAAAmB,KAAA,UAAAsJ,SAAA,iBAAAA,SAAA,CAAApJ,IAAA,CAAAoJ,SAAA,CAAAnJ,IAAA,SAAAgJ,oBAAA,CACc9E,WAAW,CAACwE,OAAO,CAA9CxG,MAAM,CAAA8G,oBAAA,CAAbpH,KAAK,CAAkBO,MAAM,CAAA6G,oBAAA,CAAdnH,MAAM,MACzB,CAACK,MAAM,EAAI,CAACC,MAAM,GAAAgH,SAAA,CAAAnJ,IAAA,iBAAAmJ,SAAA,CAAAhJ,MAAA,UAASoB,GAAG,SAAA4H,SAAA,CAAAnJ,IAAA,UAAAJ,YAAA,CAAAlB,OAAA,CAAA4B,KAAA,CACcgB,YAAY,CAACC,GAAG,CAAC,SAAA0H,mBAAA,CAAAE,SAAA,CAAA5I,IAAA,CAAlDyB,MAAM,CAAAiH,mBAAA,CAAbrH,KAAK,CAAkBK,MAAM,CAAAgH,mBAAA,CAAdpH,MAAM,CACvBqH,IAAI,CAAGpH,iBAAiB,CAACE,MAAM,CAAEC,MAAM,CAAEC,MAAM,CAAEC,MAAM,CAAC,CAC9DiH,OAAO,CAACC,GAAG,CAAC,kBAAkB,CAAE,CAAErH,MAAM,CAANA,MAAM,CAAEC,MAAM,CAANA,MAAM,CAAEC,MAAM,CAANA,MAAM,CAAEC,MAAM,CAANA,MAAM,CAAE+G,IAAI,CAAJA,IAAK,CAAC,CAAC,CAACC,SAAA,CAAAnJ,IAAA,UAAAJ,YAAA,CAAAlB,OAAA,CAAA4B,KAAA,CACrDgJ,oCAAkB,CAACC,UAAU,CAAChI,GAAG,CAAE,CAAC,CAAE2H,IAAI,CAAJA,IAAK,CAAC,CAAC,CAAE,CAClEM,QAAQ,CAAE,GAAG,CACbtD,MAAM,CAAE,MACV,CAAC,CAAC,SAHI0B,MAAM,CAAAuB,SAAA,CAAA5I,IAAA,QAAA4I,SAAA,CAAAhJ,MAAA,UAILyH,MAAM,CAACrG,GAAG,0BAAA4H,SAAA,CAAA3I,IAAA,qBAAAC,OAAA,GAClB,CAED,GAAM,CAAAgJ,WAAW,CAAG,SAAAC,SAAA,MAAAC,KAAA,CAAApI,GAAA,CAAAqI,OAAA,CAAAC,GAAA,QAAAjK,YAAA,CAAAlB,OAAA,CAAAmB,KAAA,UAAAiK,SAAA,iBAAAA,SAAA,CAAA/J,IAAA,CAAA+J,SAAA,CAAA9J,IAAA,cACdiE,SAAS,CAACyE,OAAO,EAAI,IAAI,EAAIhD,MAAM,GAAAoE,SAAA,CAAA9J,IAAA,iBAAA8J,SAAA,CAAA3J,MAAA,kBACvCwF,SAAS,CAAC,IAAI,CAAC,CAACmE,SAAA,CAAA/J,IAAA,EAAA+J,CAAA,UAAA9J,IAAA,UAAAJ,YAAA,CAAAlB,OAAA,CAAA4B,KAAA,CAEM2D,SAAS,CAACyE,OAAO,CAACqB,SAAS,CAAC,CAC9CC,qBAAqB,CAAE,SACzB,CAAC,CAAC,SAFIL,KAAK,CAAAG,SAAA,CAAAvJ,IAAA,CAGLgB,GAAG,CAAG,SAAS,CAAGoI,KAAK,CAACM,IAAIH,CAAA,UAAA9J,IAAA,UAAAJ,YAAA,CAAAlB,OAAA,CAAA4B,KAAA,CACZwI,WAAW,CAACvH,GAAG,CAAC,SAAhCqI,OAAO,CAAAE,SAAA,CAAAvJ,IAAA,CACbwF,WAAW,CAAC6D,OAAO,CAAC,CAACE,SAAA,CAAA9J,IAAA,gBAAA8J,SAAA,CAAA/J,IAAA,EAAA8J,CAAA,IAAAC,SAAA,aAErBV,OAAO,CAACP,KAAK,CAAAgB,GAAI,CAAC,CAClBlJ,wBAAW,CAACC,IAAI,CAAC,CACfC,IAAI,CAAE,SAAS,CACfC,KAAK,CAAE,WAAW,CAClBC,OAAO,CAAE,wCACX,CAAC,CAAC,CAAC,OAAA+I,SAAA,CAAA/J,IAAA,GAEH4F,SAAS,CAAC,KAAK,CAAC,CAAC,OAAAmE,SAAA,CAAAI,MAAA,4BAAAJ,SAAA,CAAAtJ,IAAA,4BAAAC,OAAA,GAEpB,CAGD,GAAM,CAAA0J,oBAAoB,CAAG,SAAAC,SAAA,MAAAC,cAAA,CAAAC,eAAA,CAAA1C,MAAA,QAAAhI,YAAA,CAAAlB,OAAA,CAAAmB,KAAA,UAAA0K,SAAA,iBAAAA,SAAA,CAAAxK,IAAA,CAAAwK,SAAA,CAAAvK,IAAA,cACvBC,qBAAQ,CAACC,EAAE,GAAK,SAAS,GAAAqK,SAAA,CAAAvK,IAAA,UAAAuK,SAAA,CAAAvK,IAAA,UAAAJ,YAAA,CAAAlB,OAAA,CAAA4B,KAAA,CACN,GAAAkK,0CAAkB,EAAC,CAAEC,SAAS,CAAE,OAAQ,CAAC,CAAC,SAAzD7C,MAAM,CAAA2C,SAAA,CAAAhK,IAAA,CACZ,IAAA8J,cAAA,CAAIzC,MAAM,CAAC8C,MAAM,UAAAJ,eAAA,CAAbD,cAAA,CAAgB,CAAC,CAAC,SAAlBC,eAAA,CAAoB/I,GAAG,CAAE,CAC3BwE,WAAW,CAAC6B,MAAM,CAAC8C,MAAM,CAAC,CAAC,CAAC,CAACnJ,GAAG,CAAC,CACnC,CAACgJ,SAAA,CAAAvK,IAAA,gBAED2K,mCAAW,CAACC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC/D,IAAI,CAAC,SAACgE,KAAK,CAAK,CACzC,GAAIA,KAAK,QAALA,KAAK,CAAEZ,IAAI,CAAE,CACflE,WAAW,CAAC,SAAS,CAAG8E,KAAK,CAACZ,IAAI,CAAC,CACrC,CACF,CAAC,CAAC,CAAC,wBAAAM,SAAA,CAAA/J,IAAA,qBAAAC,OAAA,GAEN,CAED,GAAM,CAAAqK,QAAQ,CAAG,QAAX,CAAAA,QAAQA,CAAA,CAAS,KAAAC,qBAAA,CAAAC,aAAA,CAAAC,oBAAA,CAAAC,aAAA,CAAAC,oBAAA,CACrB,GAAM,CAAAC,QAAQ,EAAAL,qBAAA,EAAAC,aAAA,CACZ7H,KAAK,CAACkB,KAAK,gBAAA4G,oBAAA,CAAXD,aAAA,CAAa1G,MAAM,eAAnB2G,oBAAA,CAAqBI,UAAU,QAAAN,qBAAA,EAAAG,aAAA,CAAI/H,KAAK,CAACkB,KAAK,gBAAA8G,oBAAA,CAAXD,aAAA,CAAa5G,MAAM,eAAnB6G,oBAAA,CAAqBC,QAAQ,CAClE,GAAIA,QAAQ,CAAE,CACZzH,UAAU,CAAC2H,MAAM,CAAC,CAAC,CACnBF,QAAQ,CAACtF,QAAQ,CAAC,CACpB,CAAC,IAAM,CACLnF,wBAAW,CAACC,IAAI,CAAC,CACfC,IAAI,CAAE,SAAS,CACfC,KAAK,CAAE,aAAa,CACpBC,OAAO,CAAE+E,QACX,CAAC,CAAC,CACJ,CACF,CAAC,CAED,MACE,CAAA/I,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAEC,MAAM,CAACC,SAAU,CAAAC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAC5BjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACO,MAAM,CAAE,CAAEC,UAAU,CAAEzI,MAAM,CAAC0I,GAAG,CAAG,EAAG,CAAC,CAAE,CAAAP,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAC5DjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EACf5D,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAA,CAAQ,CACb7E,UAAU,CAAC2H,MAAM,CAAC,CAAC,CACrB,CAAE,CACFe,OAAO,CAAE,CAAEF,GAAG,CAAE,EAAE,CAAEG,MAAM,CAAE,EAAE,CAAEC,IAAI,CAAE,EAAE,CAAEC,KAAK,CAAE,EAAG,CAAE,CAAAZ,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAEtDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC5N,MAAA,CAAA8O,QAAQ,EAAAb,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CACK,CAAC,CACnBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAEC,MAAM,CAACgB,IAAK,CAAAd,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KACvBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EACfX,KAAK,CAAE,CACLC,MAAM,CAACiB,GAAG,CACVjI,IAAI,GAAK,OAAO,CAAGgH,MAAM,CAACkB,SAAS,CAAGlB,MAAM,CAACmB,WAAW,CACxD,CACFrE,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAA,QAAQ,CAAA7D,OAAO,CAAC,OAAO,CAAC,EAAC,CAAAiH,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAEhCjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EACJrB,KAAK,CACH/G,IAAI,GAAK,OAAO,CAAGgH,MAAM,CAACqB,aAAa,CAAGrB,MAAM,CAACsB,eAClD,CAAApB,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MACF,gBAEM,CACS,CAAC,CACnBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EACfX,KAAK,CAAE,CACLC,MAAM,CAACiB,GAAG,CACVjI,IAAI,GAAK,KAAK,CAAGgH,MAAM,CAACkB,SAAS,CAAGlB,MAAM,CAACmB,WAAW,CACtD,CACFrE,OAAO,CAAErB,WAAY,CAAAyE,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAErBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EACJrB,KAAK,CACH/G,IAAI,GAAK,KAAK,CAAGgH,MAAM,CAACqB,aAAa,CAAGrB,MAAM,CAACsB,eAChD,CAAApB,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MACF,mBAEM,CACS,CACd,CACF,CAAC,CAENtH,IAAI,GAAK,KAAK,CACb3H,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAAxO,MAAA,CAAA2B,OAAA,CAAAuO,QAAA,MACElQ,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EAACrB,KAAK,CAAEC,MAAM,CAACwB,WAAY,CAAAtB,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,oFACW,CAAC,IAAI,CAAC,qDAE5C,CAAC,CAERjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAEC,MAAM,CAACyB,UAAW,CAAAvB,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAC5B9G,aAAa,EAAII,WAAW,EAAIzB,SAAS,EACxC9G,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACrO,sBAAA,CAAAkQ,cAAc,EACbC,GAAG,CAAEtJ,UAAW,CAChB0H,KAAK,CAAE6B,uBAAU,CAACC,YAAa,CAC/BzI,WAAW,CAAEA,WAAY,CACzB0I,aAAa,CAAE9F,cAAe,CAC9B+F,OAAO,CAAE7E,WAAY,CAAAgD,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KACtB,CACF,CACDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACiC,QAAQ,CAAE,CAAA/B,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CACjDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACkC,QAAQ,CAAE,CAAAhC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CACjDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACmC,QAAQ,CAAE,CAAAjC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CACjDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACoC,QAAQ,CAAE,CAAAlC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAC5C,CAAC,CAEPjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EACfX,KAAK,CAAEC,MAAM,CAACqC,WAAY,CAC1BvF,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAA,QAAQ,CAAAzD,cAAc,CAAC,SAACiJ,CAAC,QAAK,CAACA,CAAC,GAAC,EAAC,CACzCC,aAAa,CAAE,GAAI,CAAArC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAEnBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAiR,IAAI,EAACzC,KAAK,CAAEC,MAAM,CAACyC,aAAc,CAAAvC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,kCAAkB,CAAC,CACtDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EACHC,KAAK,CAAE,CAACC,MAAM,CAAC0C,QAAQ,CAAEtJ,WAAW,EAAI4G,MAAM,CAAC2C,eAAe,CAAE,CAAAzC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAE/DlH,WAAW,EAAI/H,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAiR,IAAI,EAACzC,KAAK,CAAEC,MAAM,CAAC4C,SAAU,CAAA1C,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,QAAO,CAClD,CACU,CAAC,CAEnBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EAACrB,KAAK,CAAEC,MAAM,CAAC6C,IAAK,CAAA3C,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,4EACa,CAAC,IAAI,CAAC,uFAEvC,CACP,CAAC,CACDtH,IAAI,GAAK,OAAO,CAClB3H,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAAxO,MAAA,CAAA2B,OAAA,CAAAuO,QAAA,MACElQ,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EAACrB,KAAK,CAAEC,MAAM,CAACwB,WAAY,CAAAtB,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAC9B3F,KAAK,CAAG,2BAA2B,CAAG,yBAClC,CAAC,CAERtJ,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EACHC,KAAK,CAAEC,MAAM,CAAC8C,UAAW,CACzBC,QAAQ,CAAE,QAAV,CAAAA,QAAQA,CAAGzQ,CAAC,CAAK,CACfkG,WAAW,CAACwE,OAAO,CAAG1K,CAAC,CAAC0Q,WAAW,CAACC,MAAM,CAC5C,CAAE,CAAA/C,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAEDlG,QAAQ,CACP/I,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAyE,KAAK,EACJkN,MAAM,CAAE,CAAErN,GAAG,CAAEuE,QAAS,CAAE,CAC1B2F,KAAK,CAAE6B,uBAAU,CAACC,YAAa,CAC/BsB,UAAU,CAAC,OAAO,CAAAjD,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KACnB,CAAC,CACA9G,aAAa,EAAII,WAAW,EAAIU,MAAM,CACxCjJ,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACpO,wBAAA,CAAA2R,MAAY,EACXzB,GAAG,CAAEpJ,SAAU,CACfwH,KAAK,CAAE6B,uBAAU,CAACC,YAAa,CAC/BvH,MAAM,CAAEA,MAAO,CACf+I,QAAQ,CAAElL,SAAS,EAAIa,IAAI,GAAK,OAAO,EAAI,CAACoB,QAAS,CACrD6D,KAAK,CAAE,IAAK,CACZzD,MAAM,CAAEA,MAAO,CAAA0F,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAChB,CAAC,CACA,IAAI,CACRjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACiC,QAAQ,CAAE,CAAA/B,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CACjDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACkC,QAAQ,CAAE,CAAAhC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CACjDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACmC,QAAQ,CAAE,CAAAjC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CACjDjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAE,CAACC,MAAM,CAACgC,MAAM,CAAEhC,MAAM,CAACoC,QAAQ,CAAE,CAAAlC,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAC5C,CAAC,CAENlG,QAAQ,CACP/I,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAEC,MAAM,CAACsD,cAAe,CAAApD,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MACjCjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EACfX,KAAK,CAAEC,MAAM,CAACuD,YAAa,CAC3BzG,OAAO,CAAE,QAAT,CAAAA,OAAOA,CAAA,QAAQ,CAAAzC,WAAW,CAAC,IAAI,CAAC,EAAC,CAAA6F,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAEjCjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EAACrB,KAAK,CAAEC,MAAM,CAACwD,UAAW,CAAAtD,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,oBAAe,CAChC,CAAC,CACnBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EAACX,KAAK,CAAEC,MAAM,CAACyD,SAAU,CAAC3G,OAAO,CAAEsC,QAAS,CAAAc,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAC3DjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EAACrB,KAAK,CAAEC,MAAM,CAAC0D,OAAQ,CAAAxD,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,yBAAmB,CACjC,CACd,CAAC,CAEPjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAAxO,MAAA,CAAA2B,OAAA,CAAAuO,QAAA,MACElQ,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EACfX,KAAK,CAAEC,MAAM,CAAC2D,aAAc,CAC5B7G,OAAO,CAAE2B,oBAAqB,CAAAyB,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAE9BjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC3N,KAAA,CAAA0R,UAAU,EAAA1D,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CACdjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EAACrB,KAAK,CAAEC,MAAM,CAAC6D,WAAY,CAAA3D,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,8CAA0B,CAC5C,CAAC,CACnBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAuO,IAAI,EAACC,KAAK,CAAEC,MAAM,CAAC8D,MAAO,CAAA5D,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CAAC,CAC9BjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC1N,MAAA,CAAAiP,KAAK,EAACrB,KAAK,CAAE,CAACC,MAAM,CAAC6C,IAAI,CAAE,CAAEkB,SAAS,CAAE,CAAC,CAAEC,YAAY,CAAE,EAAG,CAAC,CAAE,CAAA9D,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAAC,iGACd,CAAC,IAAI,CAAC,2DAElD,CAAC,CACRjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAACtO,YAAA,CAAAmP,gBAAgB,EACfX,KAAK,CAAE,CACLC,MAAM,CAACiE,aAAa,CACpB,CAAED,YAAY,CAAEjM,MAAM,CAAC6I,MAAM,CAAG,EAAG,CAAC,CACpC,CACF9D,OAAO,CAAEiB,WAAY,CACrBmG,QAAQ,CAAElK,MAAO,CAAAkG,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,MAEjBjP,MAAA,CAAA2B,OAAA,CAAA6M,aAAA,CAAC5N,MAAA,CAAAkS,YAAY,EAAAjE,MAAA,CAAA9N,KAAA,CAAA+N,QAAA,EAAAC,QAAA,CAAA/N,YAAA,CAAAgO,UAAA,KAAAC,YAAA,KAAE,CACC,CAClB,CAEJ,CAAC,CACD,IACA,CAAC,CAEX,CAAC,CAAC,IAAA8D,QAAA,CAAA/N,OAAA,CAAArD,OAAA,CAEa,GAAAqR,uBAAQ,EAAC7M,OAAO,CAAC,CAChC,GAAM,CAAAwI,MAAM,CAAG4B,uBAAU,CAAC0C,MAAM,CAAC,CAC/BrE,SAAS,CAAE,CAAEsE,IAAI,CAAE,CAAC,CAAEC,eAAe,CAAE,SAAU,CAAC,CAClDjE,MAAM,CAAE,CACNkE,aAAa,CAAE,KAAK,CACpBC,UAAU,CAAE,QAAQ,CACpBC,iBAAiB,CAAE,EAAE,CACrBnE,UAAU,CAAE,CACd,CAAC,CACDQ,IAAI,CAAE,CACJuD,IAAI,CAAE,CAAC,CACPE,aAAa,CAAE,KAAK,CACpBG,cAAc,CAAE,QAAQ,CACxBC,GAAG,CAAE,CACP,CAAC,CACD5D,GAAG,CAAE,CACH0D,iBAAiB,CAAE,EAAE,CACrBG,eAAe,CAAE,CAAC,CAClBC,YAAY,CAAE,CAChB,CAAC,CACD5D,WAAW,CAAE,CAAEqD,eAAe,CAAE,SAAU,CAAC,CAC3CtD,SAAS,CAAE,CAAEsD,eAAe,CAAE5Q,MAAO,CAAC,CACtC0N,eAAe,CAAE,CAAE0D,KAAK,CAAE,SAAS,CAAEC,QAAQ,CAAE,EAAE,CAAEC,UAAU,CAAE,KAAM,CAAC,CACtE7D,aAAa,CAAE,CAAE2D,KAAK,CAAE,SAAS,CAAEC,QAAQ,CAAE,EAAE,CAAEC,UAAU,CAAE,KAAM,CAAC,CACpE1D,WAAW,CAAE,CACX2D,SAAS,CAAE,QAAQ,CACnBH,KAAK,CAAE,SAAS,CAChBC,QAAQ,CAAE,EAAE,CACZG,UAAU,CAAE,EAAE,CACdrB,SAAS,CAAE,EAAE,CACbC,YAAY,CAAE,EAChB,CAAC,CACDvC,UAAU,CAAE,CACV4D,gBAAgB,CAAE,EAAE,CACpBlP,MAAM,CAAE,GAAG,CACX4O,YAAY,CAAE,CAAC,CACfO,QAAQ,CAAE,QAAQ,CAClBd,eAAe,CAAE,SACnB,CAAC,CACD1B,UAAU,CAAE,CACVuC,gBAAgB,CAAE,EAAE,CACpBE,WAAW,CAAE1R,iBAAiB,CAC9BkR,YAAY,CAAE,CAAC,CACfO,QAAQ,CAAE,QAAQ,CAClBd,eAAe,CAAE,SACnB,CAAC,CACDxC,MAAM,CAAE,CACNwD,QAAQ,CAAE,UAAU,CACpBtP,KAAK,CAAE,EAAE,CACTC,MAAM,CAAE,EAAE,CACVsP,WAAW,CAAE7R,MACf,CAAC,CACDqO,QAAQ,CAAE,CACRxB,GAAG,CAAE,CAAC,CACNI,IAAI,CAAE,CAAC,CACP6E,cAAc,CAAE,CAAC,CACjBC,eAAe,CAAE,CAAC,CAClBC,mBAAmB,CAAE,CACvB,CAAC,CACD1D,QAAQ,CAAE,CACRzB,GAAG,CAAE,CAAC,CACNK,KAAK,CAAE,CAAC,CACR4E,cAAc,CAAE,CAAC,CACjBG,gBAAgB,CAAE,CAAC,CACnBC,oBAAoB,CAAE,CACxB,CAAC,CACD3D,QAAQ,CAAE,CACRvB,MAAM,CAAE,CAAC,CACTC,IAAI,CAAE,CAAC,CACPkF,iBAAiB,CAAE,CAAC,CACpBJ,eAAe,CAAE,CAAC,CAClBK,sBAAsB,CAAE,CAC1B,CAAC,CACD5D,QAAQ,CAAE,CACRxB,MAAM,CAAE,CAAC,CACTE,KAAK,CAAE,CAAC,CACRiF,iBAAiB,CAAE,CAAC,CACpBF,gBAAgB,CAAE,CAAC,CACnBI,uBAAuB,CAAE,CAC3B,CAAC,CACD5D,WAAW,CAAE,CACXoC,aAAa,CAAE,KAAK,CACpBC,UAAU,CAAE,QAAQ,CACpBE,cAAc,CAAE,QAAQ,CACxBb,SAAS,CAAE,EAAE,CACbc,GAAG,CAAE,CACP,CAAC,CACDpC,aAAa,CAAE,CAAEwC,QAAQ,CAAE,EAAE,CAAED,KAAK,CAAE,SAAU,CAAC,CACjDtC,QAAQ,CAAE,CACRxM,KAAK,CAAE,EAAE,CACTC,MAAM,CAAE,EAAE,CACV4O,YAAY,CAAE,CAAC,CACfmB,WAAW,CAAE,GAAG,CAChBT,WAAW,CAAE,SAAS,CACtBf,UAAU,CAAE,QAAQ,CACpBE,cAAc,CAAE,QAClB,CAAC,CACDjC,eAAe,CAAE,CAAE6B,eAAe,CAAE,SAAS,CAAEiB,WAAW,CAAE,SAAU,CAAC,CACvE7C,SAAS,CAAE,CAAEoC,KAAK,CAAE,SAAS,CAAEC,QAAQ,CAAE,EAAE,CAAEC,UAAU,CAAE,KAAM,CAAC,CAChErC,IAAI,CAAE,CACJsC,SAAS,CAAE,QAAQ,CACnBH,KAAK,CAAE,SAAS,CAChBC,QAAQ,CAAE,EAAE,CACZG,UAAU,CAAE,EAAE,CACdrB,SAAS,CAAE,EACb,CAAC,CACDJ,aAAa,CAAE,CACbwC,SAAS,CAAE,QAAQ,CACnB1B,aAAa,CAAE,KAAK,CACpBC,UAAU,CAAE,QAAQ,CACpBG,GAAG,CAAE,CAAC,CACNd,SAAS,CAAE,EAAE,CACbY,iBAAiB,CAAE,EAAE,CACrBG,eAAe,CAAE,CAAC,CAClBC,YAAY,CAAE,CAAC,CACfmB,WAAW,CAAE,CAAC,CACdT,WAAW,CAAE7R,MAAM,CACnB4Q,eAAe,CAAE,SACnB,CAAC,CACDX,WAAW,CAAE,CAAEmB,KAAK,CAAE,SAAS,CAAEC,QAAQ,CAAE,EAAG,CAAC,CAC/CnB,MAAM,CAAE,CAAES,IAAI,CAAE,CAAE,CAAC,CACnBN,aAAa,CAAE,CAAEkC,SAAS,CAAE,QAAS,CAAC,CACtC7C,cAAc,CAAE,CACdmB,aAAa,CAAE,KAAK,CACpBI,GAAG,CAAE,EAAE,CACPd,SAAS,CAAE,EAAE,CACbsB,gBAAgB,CAAE,EACpB,CAAC,CACD9B,YAAY,CAAE,CACZgB,IAAI,CAAE,CAAC,CACPpO,MAAM,CAAE,EAAE,CACV4O,YAAY,CAAE,EAAE,CAChBmB,WAAW,CAAE,CAAC,CACdT,WAAW,CAAE7R,MAAM,CACnB8Q,UAAU,CAAE,QAAQ,CACpBE,cAAc,CAAE,QAClB,CAAC,CACDpB,UAAU,CAAE,CAAEwB,KAAK,CAAEpR,MAAM,CAAEqR,QAAQ,CAAE,EAAE,CAAEC,UAAU,CAAE,KAAM,CAAC,CAC9DzB,SAAS,CAAE,CACTc,IAAI,CAAE,CAAC,CACPpO,MAAM,CAAE,EAAE,CACV4O,YAAY,CAAE,EAAE,CAChBP,eAAe,CAAE5Q,MAAM,CACvB8Q,UAAU,CAAE,QAAQ,CACpBE,cAAc,CAAE,QAClB,CAAC,CACDlB,OAAO,CAAE,CAAEsB,KAAK,CAAE,SAAS,CAAEC,QAAQ,CAAE,EAAE,CAAEC,UAAU,CAAE,KAAM,CAC/D,CAAC,CAAC","ignoreList":[]}