@ceraph/react-native-mcp 0.3.3 → 0.4.6

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 (132) hide show
  1. package/README.md +335 -68
  2. package/dist/babel-plugin/index.cjs +1 -0
  3. package/dist/babel-plugin/index.js +1 -0
  4. package/dist/cli.d.ts +3 -1
  5. package/dist/cli.js +1 -47
  6. package/dist/index.d.ts +106 -1
  7. package/dist/index.js +2 -1651
  8. package/dist/shim/async-storage-ops.d.ts +26 -0
  9. package/dist/shim/async-storage-ops.js +1 -0
  10. package/dist/shim/boot.d.ts +9 -0
  11. package/dist/shim/boot.js +1 -141
  12. package/dist/shim/camera.js +1 -62
  13. package/dist/shim/command-poll.d.ts +18 -0
  14. package/dist/shim/command-poll.js +1 -0
  15. package/dist/shim/config.js +1 -56
  16. package/dist/shim/console-capture.d.ts +16 -0
  17. package/dist/shim/console-capture.js +1 -0
  18. package/dist/shim/deep-link.js +1 -25
  19. package/dist/shim/dev-guard.js +1 -3
  20. package/dist/shim/dev-host.d.ts +1 -0
  21. package/dist/shim/dev-host.js +1 -0
  22. package/dist/shim/error-handler.js +1 -66
  23. package/dist/shim/fetch-interceptor.js +1 -93
  24. package/dist/shim/index.d.ts +3 -0
  25. package/dist/shim/index.js +1 -6
  26. package/dist/shim/keep-awake.js +1 -118
  27. package/dist/shim/network-ownership.d.ts +4 -0
  28. package/dist/shim/network-ownership.js +1 -0
  29. package/dist/shim/optimistic-observer.d.ts +29 -0
  30. package/dist/shim/optimistic-observer.js +1 -0
  31. package/dist/shim/reload.js +1 -76
  32. package/dist/shim/reset.d.ts +30 -0
  33. package/dist/shim/reset.js +1 -0
  34. package/dist/shim/signal-capture.d.ts +8 -0
  35. package/dist/shim/signal-capture.js +1 -15
  36. package/dist/shim/signal-transport.d.ts +14 -1
  37. package/dist/shim/signal-transport.js +1 -43
  38. package/dist/shim/xhr-interceptor.d.ts +39 -0
  39. package/dist/shim/xhr-interceptor.js +1 -0
  40. package/package.json +40 -11
  41. package/dist/app-lifecycle.d.ts +0 -50
  42. package/dist/app-lifecycle.js +0 -487
  43. package/dist/camera-image-writer.d.ts +0 -43
  44. package/dist/camera-image-writer.js +0 -280
  45. package/dist/camera-registry-sync.d.ts +0 -18
  46. package/dist/camera-registry-sync.js +0 -117
  47. package/dist/device-autonomy.d.ts +0 -30
  48. package/dist/device-autonomy.js +0 -117
  49. package/dist/error-parser.d.ts +0 -51
  50. package/dist/error-parser.js +0 -275
  51. package/dist/expo-manager.d.ts +0 -62
  52. package/dist/expo-manager.js +0 -447
  53. package/dist/init/ast-camera.d.ts +0 -29
  54. package/dist/init/ast-camera.js +0 -267
  55. package/dist/init/ast-layout.d.ts +0 -15
  56. package/dist/init/ast-layout.js +0 -167
  57. package/dist/init/claude-hook-constants.d.ts +0 -9
  58. package/dist/init/claude-hook-constants.js +0 -91
  59. package/dist/init/lan-ip.d.ts +0 -11
  60. package/dist/init/lan-ip.js +0 -51
  61. package/dist/init/monorepo.d.ts +0 -13
  62. package/dist/init/monorepo.js +0 -185
  63. package/dist/init/oauth.d.ts +0 -52
  64. package/dist/init/oauth.js +0 -220
  65. package/dist/init/package-manager.d.ts +0 -11
  66. package/dist/init/package-manager.js +0 -60
  67. package/dist/init/prompt.d.ts +0 -12
  68. package/dist/init/prompt.js +0 -68
  69. package/dist/init/shell-profile.d.ts +0 -22
  70. package/dist/init/shell-profile.js +0 -85
  71. package/dist/init/steps.d.ts +0 -135
  72. package/dist/init/steps.js +0 -399
  73. package/dist/init/url-scheme.d.ts +0 -42
  74. package/dist/init/url-scheme.js +0 -187
  75. package/dist/init/walkthrough.d.ts +0 -76
  76. package/dist/init/walkthrough.js +0 -340
  77. package/dist/init.d.ts +0 -8
  78. package/dist/init.js +0 -395
  79. package/dist/iproxy-manager.d.ts +0 -32
  80. package/dist/iproxy-manager.js +0 -216
  81. package/dist/mac-caffeinate.d.ts +0 -10
  82. package/dist/mac-caffeinate.js +0 -56
  83. package/dist/permission-interceptor.d.ts +0 -29
  84. package/dist/permission-interceptor.js +0 -185
  85. package/dist/prebuild-detector.d.ts +0 -19
  86. package/dist/prebuild-detector.js +0 -174
  87. package/dist/preflight.d.ts +0 -34
  88. package/dist/preflight.js +0 -847
  89. package/dist/screen.d.ts +0 -184
  90. package/dist/screen.js +0 -931
  91. package/dist/signal-listener.d.ts +0 -27
  92. package/dist/signal-listener.js +0 -135
  93. package/dist/simulator-boot.d.ts +0 -52
  94. package/dist/simulator-boot.js +0 -227
  95. package/dist/target.d.ts +0 -48
  96. package/dist/target.js +0 -267
  97. package/dist/uninstall/cli-runner.d.ts +0 -32
  98. package/dist/uninstall/cli-runner.js +0 -223
  99. package/dist/uninstall/footprint.d.ts +0 -40
  100. package/dist/uninstall/footprint.js +0 -288
  101. package/dist/uninstall/mcp-tools.d.ts +0 -14
  102. package/dist/uninstall/mcp-tools.js +0 -175
  103. package/dist/uninstall/revert-auth.d.ts +0 -22
  104. package/dist/uninstall/revert-auth.js +0 -31
  105. package/dist/uninstall/revert-boot.d.ts +0 -24
  106. package/dist/uninstall/revert-boot.js +0 -242
  107. package/dist/uninstall/revert-camera.d.ts +0 -12
  108. package/dist/uninstall/revert-camera.js +0 -199
  109. package/dist/uninstall/revert-ceraph-dir.d.ts +0 -27
  110. package/dist/uninstall/revert-ceraph-dir.js +0 -38
  111. package/dist/uninstall/revert-claude-hooks.d.ts +0 -19
  112. package/dist/uninstall/revert-claude-hooks.js +0 -191
  113. package/dist/uninstall/revert-gitignore.d.ts +0 -17
  114. package/dist/uninstall/revert-gitignore.js +0 -43
  115. package/dist/uninstall/revert-mcp-clients.d.ts +0 -57
  116. package/dist/uninstall/revert-mcp-clients.js +0 -194
  117. package/dist/uninstall/revert-package.d.ts +0 -34
  118. package/dist/uninstall/revert-package.js +0 -98
  119. package/dist/uninstall/revert-scheme.d.ts +0 -36
  120. package/dist/uninstall/revert-scheme.js +0 -139
  121. package/dist/uninstall/revert-signal-host-env.d.ts +0 -31
  122. package/dist/uninstall/revert-signal-host-env.js +0 -61
  123. package/dist/uninstall/walkthrough.d.ts +0 -80
  124. package/dist/uninstall/walkthrough.js +0 -1244
  125. package/dist/utils/atomic-write.d.ts +0 -1
  126. package/dist/utils/atomic-write.js +0 -30
  127. package/dist/wait-for-device.d.ts +0 -68
  128. package/dist/wait-for-device.js +0 -368
  129. package/dist/wda-manager.d.ts +0 -38
  130. package/dist/wda-manager.js +0 -186
  131. package/dist/wda-simulator.d.ts +0 -28
  132. package/dist/wda-simulator.js +0 -257
package/dist/index.js CHANGED
@@ -1,1652 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import { join } from "node:path";
3
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
5
- import { z } from "zod";
6
- import { RNManager } from "./expo-manager.js";
7
- import { ScreenManager } from "./screen.js";
8
- import { PrebuildDetector } from "./prebuild-detector.js";
9
- import { AppLifecycle } from "./app-lifecycle.js";
10
- import { DeviceAutonomy } from "./device-autonomy.js";
11
- import { IproxyManager } from "./iproxy-manager.js";
12
- import { runPreflight } from "./preflight.js";
13
- import { TargetResolver } from "./target.js";
14
- import { WdaManager } from "./wda-manager.js";
15
- import { bootSimulator } from "./simulator-boot.js";
16
- import { waitForDevice } from "./wait-for-device.js";
17
- import { syncCameraRegistry, relativeRegistryPath, } from "./camera-registry-sync.js";
18
- import { addCameraImage, AddCameraImageError, } from "./camera-image-writer.js";
19
- import { SignalListener } from "./signal-listener.js";
20
- import { PermissionInterceptor, modeFromEnv, } from "./permission-interceptor.js";
21
- import { detectMonorepoStatus, getInitStatus, injectBoot, installCeraphPackage, pollAuthFlow, preflightForMcp, registerScheme, replaceCameraView, scanCameraUsages, setupImagesDir, setupMcpClients, startAuthFlow, } from "./init/steps.js";
22
- import { detectMacLanIp } from "./init/lan-ip.js";
23
- import { registerUninstallTools } from "./uninstall/mcp-tools.js";
24
- const PROJECT_DIR = process.cwd();
25
- const CACHE_DIR = join(PROJECT_DIR, ".rn-mcp-cache");
26
- const rnManager = new RNManager(PROJECT_DIR);
27
- const targetResolver = new TargetResolver();
28
- const screenManager = new ScreenManager({ targetResolver });
29
- const prebuildDetector = new PrebuildDetector(PROJECT_DIR, CACHE_DIR);
30
- const appLifecycle = new AppLifecycle(screenManager, targetResolver);
31
- targetResolver.setAppLifecycle(appLifecycle);
32
- const deviceAutonomy = new DeviceAutonomy(screenManager);
33
- const wdaManager = new WdaManager(targetResolver, CACHE_DIR, PROJECT_DIR);
34
- const iproxyManager = new IproxyManager();
35
- const permissionInterceptor = new PermissionInterceptor({
36
- screen: screenManager,
37
- mode: modeFromEnv(process.env.CERAPH_AUTO_ACCEPT_PERMISSIONS),
38
- });
39
- const signalListenerPort = process.env.CERAPH_SIGNAL_PORT
40
- ? Number(process.env.CERAPH_SIGNAL_PORT)
41
- : undefined;
42
- const signalListener = new SignalListener(rnManager, {
43
- port: Number.isFinite(signalListenerPort) ? signalListenerPort : undefined,
44
- });
45
- const server = new McpServer({
46
- name: "react-native-mcp",
47
- version: "0.3.3",
48
- }, {
49
- capabilities: {
50
- tools: {},
51
- },
52
- instructions: "React Native / Expo development workflow tools. Auto-detects project type.\n\n" +
53
- "HOW TO DRIVE THE APP:\n" +
54
- "Compose screen_* and app_* primitives to exercise the app on a real iOS " +
55
- "device or simulator. You plan the steps yourself; this MCP just drives " +
56
- "WebDriverAgent. Use screen_screenshot and screen_get_source between " +
57
- "actions to observe state and decide the next step. Typical scenarios: " +
58
- "'tap the Premium plan and verify checkout opens', 'sign in as user X and " +
59
- "confirm the dashboard loads', 'reproduce the bug where tapping save " +
60
- "crashes the app'.\n\n" +
61
- "STARTUP FLOW WHEN NO TARGET IS AVAILABLE:\n" +
62
- " - User wants a quick start with no device attached → rn_boot_simulator " +
63
- "(auto-picks newest iPhone), then rn_wda_start, then retry the original tool.\n" +
64
- " - User wants to test on their phone (or CERAPH_TARGET=device is set) → " +
65
- "tell the user to plug in their iPhone, then rn_wait_for_device (event-driven " +
66
- "via usbmuxd, no timeout) — the original tool can be re-run as soon as that " +
67
- "returns success.\n" +
68
- " - Ambiguous first-time setup: prefer the simulator path unless the user " +
69
- "has signalled device intent (mentioned their phone, set CERAPH_TARGET=device, " +
70
- "etc). Simulator avoids cable/trust friction for the first happy path.\n\n" +
71
- "WDA-direct primitives (you orchestrate): app_launch/terminate/activate, " +
72
- "screen_tap, screen_find_and_tap, screen_swipe, screen_scroll_to, " +
73
- "screen_long_press, screen_type, screen_clear_text, screen_press_key, " +
74
- "screen_screenshot, screen_get_source, screen_wait_for, screen_assert_visible.\n\n" +
75
- "Build with rn_build_ios, run Metro with rn_start, inspect errors with " +
76
- "rn_get_errors, check rn_check_prebuild when native deps change (Expo only). " +
77
- "Camera testing: test images for the React Native camera live in " +
78
- "`.ceraph/camera-images/` in the user's repo. When the user provides " +
79
- "an image for camera testing, paste it into that folder with a " +
80
- "descriptive lowercase filename (e.g. `profile.jpg`, `id-card.png`, " +
81
- "`product.jpg`). The filename without extension is the imageKey. " +
82
- "In source code, replace `<CameraView>` (from expo-camera) with " +
83
- "`<CeraphCamera imageKey=\"profile\" />` from " +
84
- "`@ceraph/react-native-mcp/shim`, choosing the imageKey based on " +
85
- "what the camera screen captures conceptually. Then call " +
86
- "`rn_sync_camera_registry` to regenerate the registry. The " +
87
- "`rn_preflight` tool will warn about any unwrapped `<CameraView>`, " +
88
- "missing imageKey props, or orphan imageKey references.",
89
- });
90
- server.tool("rn_build_ios", "Build and run the React Native app on an iOS device or simulator. " +
91
- "Auto-detects Expo vs bare React Native and uses the correct command. " +
92
- "Captures Xcode build output and returns structured error information. " +
93
- "If clean is true, runs `npx expo prebuild --clean` first (Expo only).", {
94
- clean: z
95
- .boolean()
96
- .optional()
97
- .describe("Run prebuild --clean before building (Expo only)"),
98
- device: z
99
- .string()
100
- .optional()
101
- .describe("Device UDID to target (e.g., 00008140-001958943A78801C)"),
102
- }, async ({ clean, device }) => {
103
- try {
104
- const result = await rnManager.runBuild({ clean, device });
105
- if (result.success) {
106
- await prebuildDetector.saveSnapshot().catch(() => {
107
- });
108
- }
109
- return {
110
- content: [
111
- {
112
- type: "text",
113
- text: JSON.stringify(result, null, 2),
114
- },
115
- ],
116
- isError: !result.success,
117
- };
118
- }
119
- catch (err) {
120
- return {
121
- content: [
122
- {
123
- type: "text",
124
- text: `rn_build_ios failed: ${err instanceof Error ? err.message : String(err)}`,
125
- },
126
- ],
127
- isError: true,
128
- };
129
- }
130
- });
131
- server.tool("rn_start", "Start the Metro dev server. Auto-detects Expo vs bare React Native. " +
132
- "Monitors console output for runtime errors and warnings.", {
133
- port: z
134
- .number()
135
- .optional()
136
- .describe("Port for Metro bundler (default: 8081)"),
137
- clear: z
138
- .boolean()
139
- .optional()
140
- .describe("Clear Metro bundler cache on start"),
141
- }, async ({ port, clear }) => {
142
- try {
143
- const result = await rnManager.startMetro({ port, clear });
144
- return {
145
- content: [
146
- {
147
- type: "text",
148
- text: JSON.stringify(result, null, 2),
149
- },
150
- ],
151
- isError: !result.success,
152
- };
153
- }
154
- catch (err) {
155
- return {
156
- content: [
157
- {
158
- type: "text",
159
- text: `rn_start failed: ${err instanceof Error ? err.message : String(err)}`,
160
- },
161
- ],
162
- isError: true,
163
- };
164
- }
165
- });
166
- server.tool("rn_get_errors", "Return all captured errors from build and runtime. " +
167
- "Includes structured build errors (file, line, column, message), " +
168
- "runtime JS errors (message, stack trace), and warnings.", {}, async () => {
169
- try {
170
- const errors = rnManager.getErrors();
171
- return {
172
- content: [
173
- {
174
- type: "text",
175
- text: JSON.stringify(errors, null, 2),
176
- },
177
- ],
178
- };
179
- }
180
- catch (err) {
181
- return {
182
- content: [
183
- {
184
- type: "text",
185
- text: `rn_get_errors failed: ${err instanceof Error ? err.message : String(err)}`,
186
- },
187
- ],
188
- isError: true,
189
- };
190
- }
191
- });
192
- server.tool("rn_get_console", "Return recent console output from Metro dev server, " +
193
- "optionally filtered by log level.", {
194
- lines: z
195
- .number()
196
- .optional()
197
- .describe("Number of recent lines to return (default: 50)"),
198
- level: z
199
- .enum(["all", "error", "warn", "log"])
200
- .optional()
201
- .describe("Filter by log level (default: all)"),
202
- }, async ({ lines, level }) => {
203
- try {
204
- const output = rnManager.getConsole({ lines, level });
205
- if (output.length === 0) {
206
- return {
207
- content: [
208
- {
209
- type: "text",
210
- text: "No console output captured. Is Metro running? Use rn_start to launch it.",
211
- },
212
- ],
213
- };
214
- }
215
- return {
216
- content: [
217
- {
218
- type: "text",
219
- text: output.join("\n"),
220
- },
221
- ],
222
- };
223
- }
224
- catch (err) {
225
- return {
226
- content: [
227
- {
228
- type: "text",
229
- text: `rn_get_console failed: ${err instanceof Error ? err.message : String(err)}`,
230
- },
231
- ],
232
- isError: true,
233
- };
234
- }
235
- });
236
- server.tool("rn_check_prebuild", "Check if a clean Expo prebuild is needed (Expo projects only). " +
237
- "Compares current package.json dependencies, app.json config, and " +
238
- "ios/Podfile.lock against a cached snapshot from the last successful build.", {}, async () => {
239
- try {
240
- const isExpo = await rnManager.detectProjectType();
241
- if (!isExpo) {
242
- return {
243
- content: [
244
- {
245
- type: "text",
246
- text: JSON.stringify({
247
- needsClean: false,
248
- reasons: ["Not an Expo project. Prebuild detection is Expo-only."],
249
- }),
250
- },
251
- ],
252
- };
253
- }
254
- const result = await prebuildDetector.check();
255
- return {
256
- content: [
257
- {
258
- type: "text",
259
- text: JSON.stringify(result, null, 2),
260
- },
261
- ],
262
- };
263
- }
264
- catch (err) {
265
- return {
266
- content: [
267
- {
268
- type: "text",
269
- text: `rn_check_prebuild failed: ${err instanceof Error ? err.message : String(err)}`,
270
- },
271
- ],
272
- isError: true,
273
- };
274
- }
275
- });
276
- server.tool("screen_tap", "Tap at specific coordinates on the iOS device screen via WebDriverAgent. " +
277
- "Automatically corrects for pixel ratio mismatch when coordinates come " +
278
- "from a screenshot (divides by device pixel ratio). " +
279
- "Requires WebDriverAgent running on localhost:8100.", {
280
- x: z.number().describe("X coordinate to tap"),
281
- y: z.number().describe("Y coordinate to tap"),
282
- coordinateSource: z
283
- .enum(["screenshot", "device"])
284
- .optional()
285
- .describe("Source of coordinates: 'screenshot' (default) auto-corrects " +
286
- "for pixel ratio; 'device' uses coordinates as-is"),
287
- }, async ({ x, y, coordinateSource }) => {
288
- try {
289
- const available = await screenManager.isAvailable();
290
- if (!available) {
291
- return {
292
- content: [
293
- {
294
- type: "text",
295
- text: JSON.stringify({
296
- success: false,
297
- error: "WebDriverAgent is not reachable at localhost:8100. " +
298
- "Ensure it is running on the device.",
299
- tappedAt: { x, y },
300
- pixelRatio: 0,
301
- correction: "N/A",
302
- }),
303
- },
304
- ],
305
- isError: true,
306
- };
307
- }
308
- const fromScreenshot = (coordinateSource ?? "screenshot") === "screenshot";
309
- const result = await screenManager.tap(x, y, fromScreenshot);
310
- return {
311
- content: [
312
- {
313
- type: "text",
314
- text: JSON.stringify(result, null, 2),
315
- },
316
- ],
317
- isError: !result.success,
318
- };
319
- }
320
- catch (err) {
321
- return {
322
- content: [
323
- {
324
- type: "text",
325
- text: `screen_tap failed: ${err instanceof Error ? err.message : String(err)}`,
326
- },
327
- ],
328
- isError: true,
329
- };
330
- }
331
- });
332
- server.tool("screen_find_and_tap", "Find a UI element on the iOS device screen by text, accessibility label, " +
333
- "or element type, then tap its center. Uses the WebDriverAgent element tree. " +
334
- "If no match is found, returns a summary of visible elements for debugging. " +
335
- "Requires WebDriverAgent running on localhost:8100.", {
336
- text: z
337
- .string()
338
- .optional()
339
- .describe("Text content to search for (case-insensitive substring match)"),
340
- accessibilityLabel: z
341
- .string()
342
- .optional()
343
- .describe("Accessibility label to search for (case-insensitive substring match)"),
344
- type: z
345
- .string()
346
- .optional()
347
- .describe("Element type to filter by (e.g., XCUIElementTypeButton, XCUIElementTypeStaticText)"),
348
- index: z
349
- .number()
350
- .optional()
351
- .describe("If multiple matches, tap the nth match (0-indexed, default: 0)"),
352
- }, async ({ text, accessibilityLabel, type, index }) => {
353
- try {
354
- const available = await screenManager.isAvailable();
355
- if (!available) {
356
- return {
357
- content: [
358
- {
359
- type: "text",
360
- text: JSON.stringify({
361
- success: false,
362
- error: "WebDriverAgent is not reachable at localhost:8100. " +
363
- "Ensure it is running on the device.",
364
- }),
365
- },
366
- ],
367
- isError: true,
368
- };
369
- }
370
- if (!text && !accessibilityLabel && !type) {
371
- return {
372
- content: [
373
- {
374
- type: "text",
375
- text: JSON.stringify({
376
- success: false,
377
- error: "At least one of text, accessibilityLabel, or type must be provided.",
378
- }),
379
- },
380
- ],
381
- isError: true,
382
- };
383
- }
384
- const result = await screenManager.findAndTap({
385
- text,
386
- accessibilityLabel,
387
- type,
388
- index,
389
- });
390
- return {
391
- content: [
392
- {
393
- type: "text",
394
- text: JSON.stringify(result, null, 2),
395
- },
396
- ],
397
- isError: !result.success,
398
- };
399
- }
400
- catch (err) {
401
- return {
402
- content: [
403
- {
404
- type: "text",
405
- text: `screen_find_and_tap failed: ${err instanceof Error ? err.message : String(err)}`,
406
- },
407
- ],
408
- isError: true,
409
- };
410
- }
411
- });
412
- async function requireWDA() {
413
- const available = await screenManager.isAvailable();
414
- if (available)
415
- return { ok: true };
416
- return {
417
- ok: false,
418
- payload: {
419
- success: false,
420
- error: "WebDriverAgent is not reachable at localhost:8100. " +
421
- "Ensure it is running on the device.",
422
- },
423
- };
424
- }
425
- function jsonText(value) {
426
- return {
427
- content: [
428
- {
429
- type: "text",
430
- text: JSON.stringify(value, null, 2),
431
- },
432
- ],
433
- };
434
- }
435
- function toolErrorContent(toolName, err) {
436
- return {
437
- content: [
438
- {
439
- type: "text",
440
- text: `${toolName} failed: ${err instanceof Error ? err.message : String(err)}`,
441
- },
442
- ],
443
- isError: true,
444
- };
445
- }
446
- server.tool("screen_swipe", "Swipe on the iOS device screen. Direction is up/down/left/right; " +
447
- "optional from-point and distance default to a center-screen swipe of " +
448
- "~60% of the relevant axis. Coordinates are device-space by default; " +
449
- "pass coordinateSource: 'screenshot' if `from` came from a screenshot.", {
450
- direction: z.enum(["up", "down", "left", "right"]),
451
- from: z
452
- .object({ x: z.number(), y: z.number() })
453
- .optional()
454
- .describe("Optional swipe start point. Defaults to screen center."),
455
- distancePx: z.number().optional().describe("Swipe distance in points."),
456
- durationMs: z.number().optional().describe("Swipe duration in ms."),
457
- coordinateSource: z.enum(["screenshot", "device"]).optional(),
458
- }, async (args) => {
459
- try {
460
- const guard = await requireWDA();
461
- if (!guard.ok)
462
- return { ...jsonText(guard.payload), isError: true };
463
- const res = await screenManager.swipe({
464
- direction: args.direction,
465
- from: args.from,
466
- distancePx: args.distancePx,
467
- durationMs: args.durationMs,
468
- coordinateSource: args.coordinateSource,
469
- });
470
- return { ...jsonText(res), isError: !res.success };
471
- }
472
- catch (err) {
473
- return {
474
- content: [
475
- {
476
- type: "text",
477
- text: `screen_swipe failed: ${err instanceof Error ? err.message : String(err)}`,
478
- },
479
- ],
480
- isError: true,
481
- };
482
- }
483
- });
484
- server.tool("screen_scroll_to", "Repeatedly swipe until an element matching text/accessibilityLabel " +
485
- "appears in the accessibility tree. Returns without tapping. Default " +
486
- "direction is 'down' (swipe up), max 10 swipes.", {
487
- text: z.string().optional(),
488
- accessibilityLabel: z.string().optional(),
489
- maxSwipes: z.number().optional(),
490
- direction: z.enum(["up", "down"]).optional(),
491
- }, async (args) => {
492
- try {
493
- const guard = await requireWDA();
494
- if (!guard.ok)
495
- return { ...jsonText(guard.payload), isError: true };
496
- if (!args.text && !args.accessibilityLabel) {
497
- return {
498
- ...jsonText({
499
- success: false,
500
- error: "text or accessibilityLabel is required.",
501
- }),
502
- isError: true,
503
- };
504
- }
505
- const res = await screenManager.scrollToElement({
506
- text: args.text,
507
- accessibilityLabel: args.accessibilityLabel,
508
- }, { maxSwipes: args.maxSwipes, direction: args.direction });
509
- return { ...jsonText(res), isError: !res.success };
510
- }
511
- catch (err) {
512
- return {
513
- content: [
514
- {
515
- type: "text",
516
- text: `screen_scroll_to failed: ${err instanceof Error ? err.message : String(err)}`,
517
- },
518
- ],
519
- isError: true,
520
- };
521
- }
522
- });
523
- server.tool("screen_long_press", "Long-press an element matched by text/accessibilityLabel. " +
524
- "Default duration is 1000ms.", {
525
- text: z.string().optional(),
526
- accessibilityLabel: z.string().optional(),
527
- durationMs: z.number().optional(),
528
- }, async (args) => {
529
- try {
530
- const guard = await requireWDA();
531
- if (!guard.ok)
532
- return { ...jsonText(guard.payload), isError: true };
533
- if (!args.text && !args.accessibilityLabel) {
534
- return {
535
- ...jsonText({
536
- success: false,
537
- error: "text or accessibilityLabel is required.",
538
- }),
539
- isError: true,
540
- };
541
- }
542
- const res = await screenManager.longPressElement({
543
- text: args.text,
544
- accessibilityLabel: args.accessibilityLabel,
545
- }, args.durationMs ?? 1000);
546
- return { ...jsonText(res), isError: !res.success };
547
- }
548
- catch (err) {
549
- return {
550
- content: [
551
- {
552
- type: "text",
553
- text: `screen_long_press failed: ${err instanceof Error ? err.message : String(err)}`,
554
- },
555
- ],
556
- isError: true,
557
- };
558
- }
559
- });
560
- server.tool("screen_type", "Type text into the currently focused element. If hideKeyboardAfter is " +
561
- "true, sends a newline after to dismiss the keyboard. Use screen_find_and_tap " +
562
- "to focus an input field first if needed.", {
563
- text: z.string(),
564
- hideKeyboardAfter: z.boolean().optional(),
565
- }, async ({ text, hideKeyboardAfter }) => {
566
- try {
567
- const guard = await requireWDA();
568
- if (!guard.ok)
569
- return { ...jsonText(guard.payload), isError: true };
570
- const res = await screenManager.type(text, { hideKeyboardAfter });
571
- return { ...jsonText(res), isError: !res.success };
572
- }
573
- catch (err) {
574
- return {
575
- content: [
576
- {
577
- type: "text",
578
- text: `screen_type failed: ${err instanceof Error ? err.message : String(err)}`,
579
- },
580
- ],
581
- isError: true,
582
- };
583
- }
584
- });
585
- server.tool("screen_clear_text", "Focus an input field and send backspaces equal to its current value length.", {
586
- text: z.string().optional(),
587
- accessibilityLabel: z.string().optional(),
588
- }, async (args) => {
589
- try {
590
- const guard = await requireWDA();
591
- if (!guard.ok)
592
- return { ...jsonText(guard.payload), isError: true };
593
- if (!args.text && !args.accessibilityLabel) {
594
- return {
595
- ...jsonText({
596
- success: false,
597
- error: "text or accessibilityLabel is required.",
598
- }),
599
- isError: true,
600
- };
601
- }
602
- const res = await screenManager.clearText({
603
- text: args.text,
604
- accessibilityLabel: args.accessibilityLabel,
605
- });
606
- return { ...jsonText(res), isError: !res.success };
607
- }
608
- catch (err) {
609
- return {
610
- content: [
611
- {
612
- type: "text",
613
- text: `screen_clear_text failed: ${err instanceof Error ? err.message : String(err)}`,
614
- },
615
- ],
616
- isError: true,
617
- };
618
- }
619
- });
620
- server.tool("screen_press_key", "Press a hardware/system button: home, volumeUp, volumeDown, or lock.", {
621
- key: z.enum(["home", "volumeUp", "volumeDown", "lock"]),
622
- }, async ({ key }) => {
623
- try {
624
- const guard = await requireWDA();
625
- if (!guard.ok)
626
- return { ...jsonText(guard.payload), isError: true };
627
- const res = await screenManager.pressKey(key);
628
- return { ...jsonText(res), isError: !res.success };
629
- }
630
- catch (err) {
631
- return {
632
- content: [
633
- {
634
- type: "text",
635
- text: `screen_press_key failed: ${err instanceof Error ? err.message : String(err)}`,
636
- },
637
- ],
638
- isError: true,
639
- };
640
- }
641
- });
642
- server.tool("screen_screenshot", "Capture a base64 PNG screenshot of the current iOS screen via WebDriverAgent.", {}, async () => {
643
- try {
644
- const guard = await requireWDA();
645
- if (!guard.ok)
646
- return { ...jsonText(guard.payload), isError: true };
647
- const res = await screenManager.screenshot();
648
- return { ...jsonText(res), isError: !res.success };
649
- }
650
- catch (err) {
651
- return {
652
- content: [
653
- {
654
- type: "text",
655
- text: `screen_screenshot failed: ${err instanceof Error ? err.message : String(err)}`,
656
- },
657
- ],
658
- isError: true,
659
- };
660
- }
661
- });
662
- server.tool("screen_get_source", "Return the full WebDriverAgent accessibility tree as JSON. " +
663
- "Useful for discovering element identifiers when no screenshot is available.", {}, async () => {
664
- try {
665
- const guard = await requireWDA();
666
- if (!guard.ok)
667
- return { ...jsonText(guard.payload), isError: true };
668
- const res = await screenManager.getSource();
669
- return { ...jsonText(res), isError: !res.success };
670
- }
671
- catch (err) {
672
- return {
673
- content: [
674
- {
675
- type: "text",
676
- text: `screen_get_source failed: ${err instanceof Error ? err.message : String(err)}`,
677
- },
678
- ],
679
- isError: true,
680
- };
681
- }
682
- });
683
- server.tool("screen_wait_for", "Poll the WDA source tree until an element matching the query is visible " +
684
- "(or, if disappear is true, until it vanishes). Default timeout is 5s.", {
685
- text: z.string().optional(),
686
- accessibilityLabel: z.string().optional(),
687
- type: z.string().optional(),
688
- timeoutMs: z.number().optional(),
689
- pollIntervalMs: z.number().optional(),
690
- disappear: z.boolean().optional(),
691
- }, async (args) => {
692
- try {
693
- const guard = await requireWDA();
694
- if (!guard.ok)
695
- return { ...jsonText(guard.payload), isError: true };
696
- if (!args.text && !args.accessibilityLabel && !args.type) {
697
- return {
698
- ...jsonText({
699
- success: false,
700
- error: "text, accessibilityLabel, or type is required.",
701
- }),
702
- isError: true,
703
- };
704
- }
705
- const res = await screenManager.waitFor({
706
- text: args.text,
707
- accessibilityLabel: args.accessibilityLabel,
708
- type: args.type,
709
- }, {
710
- timeoutMs: args.timeoutMs,
711
- pollIntervalMs: args.pollIntervalMs,
712
- disappear: args.disappear,
713
- });
714
- return { ...jsonText(res), isError: !res.success };
715
- }
716
- catch (err) {
717
- return {
718
- content: [
719
- {
720
- type: "text",
721
- text: `screen_wait_for failed: ${err instanceof Error ? err.message : String(err)}`,
722
- },
723
- ],
724
- isError: true,
725
- };
726
- }
727
- });
728
- server.tool("screen_assert_visible", "Single-shot check: is the element currently visible? Pass invert: true " +
729
- "to assert it is NOT visible.", {
730
- text: z.string().optional(),
731
- accessibilityLabel: z.string().optional(),
732
- type: z.string().optional(),
733
- invert: z.boolean().optional(),
734
- }, async (args) => {
735
- try {
736
- const guard = await requireWDA();
737
- if (!guard.ok)
738
- return { ...jsonText(guard.payload), isError: true };
739
- if (!args.text && !args.accessibilityLabel && !args.type) {
740
- return {
741
- ...jsonText({
742
- success: false,
743
- error: "text, accessibilityLabel, or type is required.",
744
- }),
745
- isError: true,
746
- };
747
- }
748
- const query = {
749
- text: args.text,
750
- accessibilityLabel: args.accessibilityLabel,
751
- type: args.type,
752
- };
753
- if (args.invert) {
754
- const res = await screenManager.assertNotVisible(query);
755
- return { ...jsonText(res), isError: !res.success || res.visible };
756
- }
757
- const res = await screenManager.assertVisible(query);
758
- return { ...jsonText(res), isError: !res.success || !res.visible };
759
- }
760
- catch (err) {
761
- return {
762
- content: [
763
- {
764
- type: "text",
765
- text: `screen_assert_visible failed: ${err instanceof Error ? err.message : String(err)}`,
766
- },
767
- ],
768
- isError: true,
769
- };
770
- }
771
- });
772
- server.tool("app_launch", "Launch an iOS app by bundle ID on a connected real device (preferred) or " +
773
- "the booted simulator (fallback). Terminates any existing instance first " +
774
- "via devicectl --terminate-existing.", {
775
- bundleId: z.string().describe("e.g., com.acme.myapp"),
776
- }, async ({ bundleId }) => {
777
- try {
778
- const res = await appLifecycle.launchApp(bundleId);
779
- return { ...jsonText(res), isError: !res.success };
780
- }
781
- catch (err) {
782
- return {
783
- content: [
784
- {
785
- type: "text",
786
- text: `app_launch failed: ${err instanceof Error ? err.message : String(err)}`,
787
- },
788
- ],
789
- isError: true,
790
- };
791
- }
792
- });
793
- server.tool("app_terminate", "Terminate an iOS app by bundle ID.", {
794
- bundleId: z.string(),
795
- }, async ({ bundleId }) => {
796
- try {
797
- const res = await appLifecycle.terminateApp(bundleId);
798
- return { ...jsonText(res), isError: !res.success };
799
- }
800
- catch (err) {
801
- return {
802
- content: [
803
- {
804
- type: "text",
805
- text: `app_terminate failed: ${err instanceof Error ? err.message : String(err)}`,
806
- },
807
- ],
808
- isError: true,
809
- };
810
- }
811
- });
812
- server.tool("app_activate", "Bring an app to the foreground without a cold restart. Uses WDA's " +
813
- "/wda/apps/launch, falls back to a fresh launch if WDA is unreachable.", {
814
- bundleId: z.string(),
815
- }, async ({ bundleId }) => {
816
- try {
817
- const res = await appLifecycle.activateApp(bundleId);
818
- return { ...jsonText(res), isError: !res.success };
819
- }
820
- catch (err) {
821
- return {
822
- content: [
823
- {
824
- type: "text",
825
- text: `app_activate failed: ${err instanceof Error ? err.message : String(err)}`,
826
- },
827
- ],
828
- isError: true,
829
- };
830
- }
831
- });
832
- server.tool("app_list_installed", "List apps installed on the connected real device via " +
833
- "`xcrun devicectl device info apps`. Cached for 30s.", {}, async () => {
834
- try {
835
- const res = await appLifecycle.listInstalledApps();
836
- return { ...jsonText(res), isError: !res.success };
837
- }
838
- catch (err) {
839
- return {
840
- content: [
841
- {
842
- type: "text",
843
- text: `app_list_installed failed: ${err instanceof Error ? err.message : String(err)}`,
844
- },
845
- ],
846
- isError: true,
847
- };
848
- }
849
- });
850
- server.tool("app_active", "Return info about the foreground app via WDA's /wda/activeAppInfo " +
851
- "(bundleId, pid, name).", {}, async () => {
852
- try {
853
- const res = await appLifecycle.getActiveApp();
854
- return { ...jsonText(res), isError: !res.success };
855
- }
856
- catch (err) {
857
- return {
858
- content: [
859
- {
860
- type: "text",
861
- text: `app_active failed: ${err instanceof Error ? err.message : String(err)}`,
862
- },
863
- ],
864
- isError: true,
865
- };
866
- }
867
- });
868
- server.tool("device_ensure_awake", "Ensure the iOS device is awake and unlocked. Returns a structured " +
869
- "result with remediation guidance when the device is locked.", {}, async () => {
870
- try {
871
- const res = await deviceAutonomy.ensureAwake();
872
- return { ...jsonText(res), isError: !res.awake };
873
- }
874
- catch (err) {
875
- return {
876
- content: [
877
- {
878
- type: "text",
879
- text: `device_ensure_awake failed: ${err instanceof Error ? err.message : String(err)}`,
880
- },
881
- ],
882
- isError: true,
883
- };
884
- }
885
- });
886
- server.tool("device_lock_state", "Report the current device lock state: unlocked, locked, screen-off, or unknown.", {}, async () => {
887
- try {
888
- const state = await deviceAutonomy.getLockState();
889
- return jsonText({ lockState: state });
890
- }
891
- catch (err) {
892
- return {
893
- content: [
894
- {
895
- type: "text",
896
- text: `device_lock_state failed: ${err instanceof Error ? err.message : String(err)}`,
897
- },
898
- ],
899
- isError: true,
900
- };
901
- }
902
- });
903
- server.tool("device_set_orientation", "Set the device orientation to portrait or landscape via WDA.", {
904
- orientation: z.enum(["portrait", "landscape"]),
905
- }, async ({ orientation }) => {
906
- try {
907
- const res = await deviceAutonomy.setOrientation(orientation);
908
- return { ...jsonText(res), isError: !res.success };
909
- }
910
- catch (err) {
911
- return {
912
- content: [
913
- {
914
- type: "text",
915
- text: `device_set_orientation failed: ${err instanceof Error ? err.message : String(err)}`,
916
- },
917
- ],
918
- isError: true,
919
- };
920
- }
921
- });
922
- server.tool("rn_preflight", "Run every setup check we can before flows execute: WDA reachable, " +
923
- "device connected, device awake, app installed, required env vars " +
924
- "present, laptop WiFi. Returns a structured PreflightResult — when " +
925
- "ok: false, surface the failing checks' remediation verbatim and " +
926
- "DO NOT attempt to fix environment issues by editing source code. " +
927
- "Call this once before a batch of rn_test_* runs.", {
928
- bundleId: z
929
- .string()
930
- .optional()
931
- .describe("Bundle ID of the app under test (e.g., com.acme.myapp). " +
932
- "Required for the app-installed check."),
933
- requiredEnv: z
934
- .array(z.string())
935
- .optional()
936
- .describe("Env var names the planned flows reference. " +
937
- "Each must be set + non-empty."),
938
- expectedNetwork: z
939
- .string()
940
- .optional()
941
- .describe("Optional WiFi SSID the user expects the laptop (and phone) " +
942
- "to be on. Mismatch is a warning, not an error."),
943
- }, async ({ bundleId, requiredEnv, expectedNetwork }) => {
944
- try {
945
- const result = await runPreflight({
946
- screen: screenManager,
947
- apps: appLifecycle,
948
- autonomy: deviceAutonomy,
949
- iproxyManager,
950
- bundleId,
951
- requiredEnv,
952
- expectedNetwork,
953
- projectDir: PROJECT_DIR,
954
- target: targetResolver,
955
- });
956
- return { ...jsonText(result), isError: !result.ok };
957
- }
958
- catch (err) {
959
- return {
960
- content: [
961
- {
962
- type: "text",
963
- text: `rn_preflight failed: ${err instanceof Error ? err.message : String(err)}`,
964
- },
965
- ],
966
- isError: true,
967
- };
968
- }
969
- });
970
- server.tool("rn_sync_camera_registry", "Scan .ceraph/camera-images/ for test images and (re)generate the " +
971
- "static `_registry.ts` the app imports at boot. The filename without " +
972
- "extension becomes the imageKey passed to <CeraphCamera imageKey>. " +
973
- "Call this after adding or removing image files manually (Finder, " +
974
- "git pull). `ceraph_add_camera_image` already auto-syncs after each " +
975
- "write — only call this tool for manual drops. Idempotent — does " +
976
- "not rewrite the registry when it already matches the discovered set.", {}, async () => {
977
- try {
978
- const result = await syncCameraRegistry(PROJECT_DIR);
979
- if (result.writtenOrUnchanged === "missing-dir") {
980
- return {
981
- ...jsonText({
982
- registered: [],
983
- registryPath: relativeRegistryPath(PROJECT_DIR, result.registryPath),
984
- state: result.writtenOrUnchanged,
985
- message: "Create `.ceraph/camera-images/` and add at least one image. " +
986
- "Run this tool again to generate the registry.",
987
- }),
988
- isError: true,
989
- };
990
- }
991
- return jsonText({
992
- registered: result.registered.map((r) => r.key),
993
- registryPath: relativeRegistryPath(PROJECT_DIR, result.registryPath),
994
- state: result.writtenOrUnchanged,
995
- });
996
- }
997
- catch (err) {
998
- return {
999
- content: [
1000
- {
1001
- type: "text",
1002
- text: `rn_sync_camera_registry failed: ${err instanceof Error ? err.message : String(err)}`,
1003
- },
1004
- ],
1005
- isError: true,
1006
- };
1007
- }
1008
- });
1009
- server.tool("ceraph_add_camera_image", "Drop a camera test image into `.ceraph/camera-images/` without the dev " +
1010
- "having to copy files by hand. Pass `imageBase64` (the bytes — no " +
1011
- "`data:` prefix needed) plus a lowercase hyphen-separated `imageKey` " +
1012
- "(e.g. `handwriting-sample-1`). `contentType` is a hint only — the " +
1013
- "extension is chosen from magic bytes (JPEG/PNG/WebP/HEIC). A " +
1014
- "collision with an existing imageKey is rejected unless `overwrite: " +
1015
- "true` is set. After writing, the static `_registry.ts` is " +
1016
- "regenerated automatically (same step as `rn_sync_camera_registry`).", {
1017
- imageKey: z
1018
- .string()
1019
- .describe("Lowercase + hyphen-separated stem (e.g. `profile`, `id-card`, " +
1020
- "`handwriting-sample-1`). Becomes both the filename stem AND " +
1021
- "the value devs pass to `<CeraphCamera imageKey>`."),
1022
- imageBase64: z
1023
- .string()
1024
- .describe("Base64-encoded image payload. A `data:image/...;base64,...` " +
1025
- "URI prefix is accepted and stripped automatically."),
1026
- contentType: z
1027
- .string()
1028
- .optional()
1029
- .describe("Optional MIME hint (e.g. `image/jpeg`). The actual extension is " +
1030
- "chosen from magic-byte detection; if the hint mismatches, the " +
1031
- "tool returns a warning but still writes using the detected type."),
1032
- overwrite: z
1033
- .boolean()
1034
- .optional()
1035
- .describe("Allow replacing an existing imageKey (across different " +
1036
- "extensions). Defaults to false."),
1037
- subDir: z
1038
- .string()
1039
- .optional()
1040
- .describe("Optional single-segment subdirectory under " +
1041
- "`.ceraph/camera-images/`. Most callers omit this. Must be " +
1042
- "lowercase + hyphen-separated; no slashes, no `..`."),
1043
- }, async ({ imageKey, imageBase64, contentType, overwrite, subDir }) => {
1044
- try {
1045
- const result = await addCameraImage(PROJECT_DIR, {
1046
- imageKey,
1047
- imageBase64,
1048
- contentType,
1049
- overwrite,
1050
- subDir,
1051
- });
1052
- return jsonText({
1053
- written: result.written,
1054
- registry: result.registry,
1055
- registered: result.registered,
1056
- detectedContentType: result.detectedContentType,
1057
- detectedExt: result.detectedExt,
1058
- replaced: result.replaced,
1059
- removedSiblingPath: result.removedSiblingPath,
1060
- bytes: result.bytes,
1061
- registryState: result.registryState,
1062
- warnings: result.warnings,
1063
- });
1064
- }
1065
- catch (err) {
1066
- if (err instanceof AddCameraImageError) {
1067
- return {
1068
- ...jsonText({
1069
- error: err.code,
1070
- message: err.message,
1071
- remediation: err.remediation,
1072
- }),
1073
- isError: true,
1074
- };
1075
- }
1076
- return {
1077
- content: [
1078
- {
1079
- type: "text",
1080
- text: `ceraph_add_camera_image failed: ${err instanceof Error ? err.message : String(err)}`,
1081
- },
1082
- ],
1083
- isError: true,
1084
- };
1085
- }
1086
- });
1087
- server.tool("rn_permission_auto_accept", "Toggle the iOS system-permission dialog interceptor for the running " +
1088
- "MCP process. 'auto-accept' (default) taps the permissive button on " +
1089
- "any known system dialog before each flow step; 'ask' invokes the " +
1090
- "configured callback (defaults to accept); 'off' is a no-op. " +
1091
- "Mode persists for the lifetime of this MCP process. To set the " +
1092
- "default for new processes, export CERAPH_AUTO_ACCEPT_PERMISSIONS.", {
1093
- mode: z.enum(["auto-accept", "ask", "off"]),
1094
- }, async ({ mode }) => {
1095
- try {
1096
- const next = mode;
1097
- permissionInterceptor.setMode(next);
1098
- return {
1099
- ...jsonText({
1100
- mode: next,
1101
- message: `Permission interceptor mode set to '${next}'.`,
1102
- }),
1103
- };
1104
- }
1105
- catch (err) {
1106
- return {
1107
- content: [
1108
- {
1109
- type: "text",
1110
- text: `rn_permission_auto_accept failed: ${err instanceof Error ? err.message : String(err)}`,
1111
- },
1112
- ],
1113
- isError: true,
1114
- };
1115
- }
1116
- });
1117
- server.tool("rn_reload", "Request a JS bundle reload on the running RN app by dispatching the " +
1118
- "`ceraph://reload` deep link through WDA. Requires the app to have " +
1119
- "called `installSignalCapture()` (or otherwise registered the " +
1120
- "reload deep-link listener) at boot. Waits up to `timeoutMs` for " +
1121
- "WDA to become responsive again, then captures a screenshot. " +
1122
- "Dev-only; does nothing in a production build.", {
1123
- timeoutMs: z
1124
- .number()
1125
- .optional()
1126
- .describe("Max time in ms to wait for the app to come back after the " +
1127
- "reload (default 10000)."),
1128
- }, async ({ timeoutMs }) => {
1129
- try {
1130
- const guard = await requireWDA();
1131
- if (!guard.ok)
1132
- return { ...jsonText(guard.payload), isError: true };
1133
- const dispatch = await screenManager.openUrl("ceraph://reload");
1134
- if (!dispatch.success) {
1135
- return {
1136
- ...jsonText({
1137
- success: false,
1138
- error: dispatch.error ?? "openUrl failed",
1139
- }),
1140
- isError: true,
1141
- };
1142
- }
1143
- const limit = timeoutMs ?? 10_000;
1144
- const start = Date.now();
1145
- let backUp = false;
1146
- while (Date.now() - start < limit) {
1147
- const ok = await screenManager.pingStatus().catch(() => false);
1148
- if (ok) {
1149
- backUp = true;
1150
- break;
1151
- }
1152
- await new Promise((r) => setTimeout(r, 200));
1153
- }
1154
- const shot = await screenManager.screenshot().catch(() => undefined);
1155
- return {
1156
- ...jsonText({
1157
- success: backUp,
1158
- elapsedMs: Date.now() - start,
1159
- screenshotBase64: shot?.base64,
1160
- error: backUp ? undefined : `WDA did not return within ${limit}ms`,
1161
- }),
1162
- isError: !backUp,
1163
- };
1164
- }
1165
- catch (err) {
1166
- return {
1167
- content: [
1168
- {
1169
- type: "text",
1170
- text: `rn_reload failed: ${err instanceof Error ? err.message : String(err)}`,
1171
- },
1172
- ],
1173
- isError: true,
1174
- };
1175
- }
1176
- });
1177
- server.tool("rn_stop", "Stop all managed React Native processes (Metro dev server and/or build process).", {}, async () => {
1178
- try {
1179
- const stopped = await rnManager.stopAll();
1180
- if (stopped.length === 0) {
1181
- return {
1182
- content: [
1183
- {
1184
- type: "text",
1185
- text: JSON.stringify({
1186
- stopped: [],
1187
- message: "No managed processes were running.",
1188
- }),
1189
- },
1190
- ],
1191
- };
1192
- }
1193
- return {
1194
- content: [
1195
- {
1196
- type: "text",
1197
- text: JSON.stringify({ stopped }, null, 2),
1198
- },
1199
- ],
1200
- };
1201
- }
1202
- catch (err) {
1203
- return {
1204
- content: [
1205
- {
1206
- type: "text",
1207
- text: `rn_stop failed: ${err instanceof Error ? err.message : String(err)}`,
1208
- },
1209
- ],
1210
- isError: true,
1211
- };
1212
- }
1213
- });
1214
- server.tool("rn_target_status", "Report which iOS target is currently selected (device vs simulator), " +
1215
- "the resolved WDA base URL, whether a simulator WDA session is " +
1216
- "running, and the CERAPH_TARGET env preference. Call this when the " +
1217
- "developer asks `am I testing on device or simulator?` or before " +
1218
- "starting a flow if uncertain which transport is active.", {}, async () => {
1219
- try {
1220
- targetResolver.invalidate();
1221
- const info = await targetResolver.resolve();
1222
- const session = wdaManager.getSession();
1223
- return jsonText({
1224
- target: info.target,
1225
- udid: info.udid,
1226
- baseUrl: info.baseUrl,
1227
- reason: info.reason,
1228
- preferenceEnv: process.env.CERAPH_TARGET ?? null,
1229
- simulatorWdaSession: session
1230
- ? { port: session.port, udid: session.udid, projectPath: session.projectPath }
1231
- : null,
1232
- });
1233
- }
1234
- catch (err) {
1235
- return {
1236
- content: [
1237
- {
1238
- type: "text",
1239
- text: `rn_target_status failed: ${err instanceof Error ? err.message : String(err)}`,
1240
- },
1241
- ],
1242
- isError: true,
1243
- };
1244
- }
1245
- });
1246
- server.tool("rn_wda_start", "Build and launch WebDriverAgent against a booted iOS simulator. " +
1247
- "Required ONCE per MCP session when testing on the simulator (real " +
1248
- "devices don't need this). Reads `appium-webdriveragent` from " +
1249
- "node_modules (optional dep — install with `npm i -D " +
1250
- "appium-webdriveragent` if missing). Captures the WDA port from " +
1251
- "xcodebuild's output and routes all screen_*/app_* tools to the " +
1252
- "simulator automatically. First-time build can take 60-120s and " +
1253
- "may require an Xcode signing prompt. Idempotent — re-calling " +
1254
- "returns the existing session.", {
1255
- udid: z
1256
- .string()
1257
- .optional()
1258
- .describe("Booted simulator UDID. When omitted, the first booted " +
1259
- "simulator is used. Run `xcrun simctl list devices booted` " +
1260
- "to see options."),
1261
- startupTimeoutMs: z
1262
- .number()
1263
- .int()
1264
- .positive()
1265
- .optional()
1266
- .describe("Max wait for the `ServerURLHere->...<-ServerURLHere` marker " +
1267
- "in xcodebuild's stdout. Default 120000ms (cold-build safe)."),
1268
- }, async ({ udid, startupTimeoutMs }) => {
1269
- try {
1270
- const result = await wdaManager.start({ udid, startupTimeoutMs });
1271
- return { ...jsonText(result), isError: !result.ok };
1272
- }
1273
- catch (err) {
1274
- return {
1275
- content: [
1276
- {
1277
- type: "text",
1278
- text: `rn_wda_start failed: ${err instanceof Error ? err.message : String(err)}`,
1279
- },
1280
- ],
1281
- isError: true,
1282
- };
1283
- }
1284
- });
1285
- server.tool("rn_wda_stop", "Stop the simulator WebDriverAgent session started by rn_wda_start. " +
1286
- "Idempotent — returns `{ stopped: false }` when no session is " +
1287
- "active. Real-device WDA is unaffected (it's managed by Xcode, " +
1288
- "not this MCP).", {}, async () => {
1289
- try {
1290
- const result = await wdaManager.stop();
1291
- return jsonText(result);
1292
- }
1293
- catch (err) {
1294
- return {
1295
- content: [
1296
- {
1297
- type: "text",
1298
- text: `rn_wda_stop failed: ${err instanceof Error ? err.message : String(err)}`,
1299
- },
1300
- ],
1301
- isError: true,
1302
- };
1303
- }
1304
- });
1305
- server.tool("rn_boot_simulator", "Boot an iOS simulator from cold via `xcrun simctl`. Use this when " +
1306
- "the developer doesn't have a real device plugged in and no " +
1307
- "simulator is already booted — preflight will surface that state. " +
1308
- "Auto-picks the newest available iPhone (preferring the plain " +
1309
- "model like `iPhone 15` over `iPhone 15 Pro Max`) unless `udid` " +
1310
- "or `deviceType` narrows the choice. Idempotent — returns " +
1311
- "`{ alreadyBooted: true }` when the chosen sim is already running. " +
1312
- "After this succeeds, call rn_wda_start to ready WebDriverAgent, " +
1313
- "then retry the original test tool.", {
1314
- udid: z
1315
- .string()
1316
- .optional()
1317
- .describe("Boot a specific simulator by UDID. When set, discovery is " +
1318
- "skipped (deviceType is ignored). Run `xcrun simctl list " +
1319
- "devices` to see options."),
1320
- deviceType: z
1321
- .string()
1322
- .optional()
1323
- .describe("Substring match against simulator names (case-insensitive, " +
1324
- "e.g. `iPhone 15`, `iPhone 14 Pro`). Picks the newest iOS " +
1325
- "runtime among matches. Ignored when `udid` is set."),
1326
- bootTimeoutMs: z
1327
- .number()
1328
- .int()
1329
- .positive()
1330
- .optional()
1331
- .describe("Max wait for `simctl bootstatus -b` to confirm the simulator " +
1332
- "has settled. Default 120000ms (first boots of a fresh " +
1333
- "runtime can take 60-90s)."),
1334
- }, async ({ udid, deviceType, bootTimeoutMs }) => {
1335
- try {
1336
- const result = await bootSimulator({ udid, deviceType, bootTimeoutMs });
1337
- targetResolver.invalidate();
1338
- return jsonText(result);
1339
- }
1340
- catch (err) {
1341
- return toolErrorContent("rn_boot_simulator", err);
1342
- }
1343
- });
1344
- server.tool("rn_wait_for_device", "Wait for an iPhone to be connected via USB-C. Uses macOS's " +
1345
- "usbmuxd daemon for sub-second event-driven detection (no " +
1346
- "polling). Waits indefinitely until either a device connects or " +
1347
- "the agent aborts the call. Use this after telling the user " +
1348
- "'please plug in your iPhone' — the call resolves immediately " +
1349
- "when they do, with zero detection lag.", {
1350
- timeoutMs: z
1351
- .number()
1352
- .int()
1353
- .positive()
1354
- .optional()
1355
- .describe("Optional explicit deadline in milliseconds. Default: none — " +
1356
- "the call waits forever and relies on the MCP abort signal " +
1357
- "for cancellation. Set this only when you want a hard cap."),
1358
- }, async ({ timeoutMs }, extra) => {
1359
- try {
1360
- const result = await waitForDevice({
1361
- timeoutMs,
1362
- signal: extra.signal,
1363
- });
1364
- targetResolver.invalidate();
1365
- return jsonText(result);
1366
- }
1367
- catch (err) {
1368
- return toolErrorContent("rn_wait_for_device", err);
1369
- }
1370
- });
1371
- function initToolResult(payload) {
1372
- return {
1373
- content: [
1374
- { type: "text", text: JSON.stringify(payload, null, 2) },
1375
- ],
1376
- };
1377
- }
1378
- function initToolError(toolName, err) {
1379
- return {
1380
- content: [
1381
- {
1382
- type: "text",
1383
- text: `${toolName} failed: ${err instanceof Error ? err.message : String(err)}`,
1384
- },
1385
- ],
1386
- isError: true,
1387
- };
1388
- }
1389
- server.tool("ceraph_init_status", "Snapshot the current init state of the project: which steps are " +
1390
- "complete (package installed, GitHub auth cached, ceraph:// scheme " +
1391
- "registered, installCeraph() injected, CameraView usages found) and " +
1392
- "which MCP-client config files exist. Use this FIRST to decide which " +
1393
- "individual init tools still need to run.", {
1394
- projectDir: z
1395
- .string()
1396
- .optional()
1397
- .describe("Directory to inspect. Defaults to the MCP server's cwd " +
1398
- "(usually the user's project root)."),
1399
- }, async ({ projectDir }) => {
1400
- try {
1401
- const result = await getInitStatus(projectDir ?? PROJECT_DIR);
1402
- return initToolResult(result);
1403
- }
1404
- catch (err) {
1405
- return initToolError("ceraph_init_status", err);
1406
- }
1407
- });
1408
- server.tool("ceraph_init_install_package", "Detect the project's package manager (pnpm/yarn/bun/npm via lockfile) " +
1409
- "and install @ceraph/react-native-mcp into dependencies. Idempotent — " +
1410
- "returns `{ already: true }` if the package is already in package.json.", {
1411
- projectDir: z.string().optional(),
1412
- }, async ({ projectDir }) => {
1413
- try {
1414
- const result = await installCeraphPackage(projectDir ?? PROJECT_DIR);
1415
- return initToolResult(result);
1416
- }
1417
- catch (err) {
1418
- return initToolError("ceraph_init_install_package", err);
1419
- }
1420
- });
1421
- server.tool("ceraph_init_auth_start", "Begin the GitHub OAuth device flow. Returns { verificationUri, " +
1422
- "userCode, pollUrl } — surface verificationUri + userCode to the user " +
1423
- "VERBATIM (don't paraphrase), then call ceraph_init_auth_poll with " +
1424
- "pollUrl in a short loop (every ~5 seconds) until status is 'complete' " +
1425
- "or 'failed'.", {}, async () => {
1426
- try {
1427
- const result = await startAuthFlow();
1428
- return initToolResult(result);
1429
- }
1430
- catch (err) {
1431
- return initToolError("ceraph_init_auth_start", err);
1432
- }
1433
- });
1434
- server.tool("ceraph_init_auth_poll", "Poll the in-progress device flow once. Returns one of: " +
1435
- "{ status: 'pending' }, { status: 'slow_down', intervalSeconds }, " +
1436
- "{ status: 'complete', login }, or { status: 'failed', reason }. " +
1437
- "Wait `intervalSeconds` before the next call on slow_down. Stop when " +
1438
- "status === 'complete' or 'failed'. On 'failed', restart with " +
1439
- "ceraph_init_auth_start (NOT a retry of the same pollUrl).", {
1440
- pollUrl: z
1441
- .string()
1442
- .describe("Opaque handle returned by ceraph_init_auth_start."),
1443
- }, async ({ pollUrl }) => {
1444
- try {
1445
- const result = await pollAuthFlow(pollUrl);
1446
- return initToolResult(result);
1447
- }
1448
- catch (err) {
1449
- return initToolError("ceraph_init_auth_poll", err);
1450
- }
1451
- });
1452
- server.tool("ceraph_init_scan_camera", "AST-scan the project for <CameraView> usages (from expo-camera). " +
1453
- "Returns each usage with its file path, line, suggested imageKey " +
1454
- "(heuristic), and ~30 lines of surrounding code so the AI can " +
1455
- "reason about what to put in imageKey. The AI should override the " +
1456
- "suggestion based on context (e.g. a `project.type === 'uppercase'` " +
1457
- "branch nearby implies imageKey='letter-uppercase').", {
1458
- projectDir: z.string().optional(),
1459
- }, async ({ projectDir }) => {
1460
- try {
1461
- const result = await scanCameraUsages(projectDir ?? PROJECT_DIR);
1462
- return initToolResult(result);
1463
- }
1464
- catch (err) {
1465
- return initToolError("ceraph_init_scan_camera", err);
1466
- }
1467
- });
1468
- server.tool("ceraph_init_replace_camera", "Apply ONE <CameraView> → <CeraphCamera imageKey=\"...\"> AST " +
1469
- "replacement. The AI provides the imageKey based on the context it " +
1470
- "saw in scan_camera's surroundingCode. Also adds the shim import " +
1471
- "and trims `CameraView` from the expo-camera import when no JSX " +
1472
- "uses it anymore. Idempotent — returns `{ already: true }` when " +
1473
- "the line is already CeraphCamera.", {
1474
- filePath: z.string().describe("Absolute path of the source file."),
1475
- line: z
1476
- .number()
1477
- .int()
1478
- .positive()
1479
- .describe("1-based line of the opening <CameraView> tag."),
1480
- imageKey: z
1481
- .string()
1482
- .min(1)
1483
- .describe("The imageKey to use. Should be lowercase-with-dashes."),
1484
- projectDir: z.string().optional(),
1485
- }, async ({ filePath, line, imageKey, projectDir }) => {
1486
- try {
1487
- const result = await replaceCameraView(projectDir ?? PROJECT_DIR, {
1488
- filePath,
1489
- line,
1490
- imageKey,
1491
- });
1492
- return initToolResult(result);
1493
- }
1494
- catch (err) {
1495
- return initToolError("ceraph_init_replace_camera", err);
1496
- }
1497
- });
1498
- server.tool("ceraph_init_inject_boot", "AST-inject `useEffect(() => { installCeraph(); }, [])` plus the " +
1499
- "shim + react imports into the root layout (app/_layout.tsx for " +
1500
- "Expo Router, App.tsx for bare RN). Idempotent — returns " +
1501
- "`{ already: true }` when installCeraph() is already present.", {
1502
- projectDir: z.string().optional(),
1503
- }, async ({ projectDir }) => {
1504
- try {
1505
- const result = await injectBoot(projectDir ?? PROJECT_DIR);
1506
- return initToolResult(result);
1507
- }
1508
- catch (err) {
1509
- return initToolError("ceraph_init_inject_boot", err);
1510
- }
1511
- });
1512
- server.tool("ceraph_init_register_scheme", "Register `ceraph` as a custom URL scheme so deep links " +
1513
- "(ceraph://test-image, ceraph://reload, ceraph://reset) reach the " +
1514
- "running app. Auto-edits static expo.scheme in app.json; for " +
1515
- "dynamic app.config.{js,ts} or bare RN, returns the exact " +
1516
- "instructions to surface to the user.", {
1517
- projectDir: z.string().optional(),
1518
- }, async ({ projectDir }) => {
1519
- try {
1520
- const result = await registerScheme(projectDir ?? PROJECT_DIR);
1521
- return initToolResult(result);
1522
- }
1523
- catch (err) {
1524
- return initToolError("ceraph_init_register_scheme", err);
1525
- }
1526
- });
1527
- server.tool("ceraph_init_setup_images_dir", "Create the `.ceraph/camera-images/` directory with a README that " +
1528
- "documents the imageKey naming convention, and append " +
1529
- "`.rn-errors.json`, `.rn-flow-progress.json`, `.rn-mcp-cache/` to " +
1530
- ".gitignore. Idempotent — second invocation reports no changes.", {
1531
- projectDir: z.string().optional(),
1532
- }, async ({ projectDir }) => {
1533
- try {
1534
- const result = await setupImagesDir(projectDir ?? PROJECT_DIR);
1535
- return initToolResult(result);
1536
- }
1537
- catch (err) {
1538
- return initToolError("ceraph_init_setup_images_dir", err);
1539
- }
1540
- });
1541
- server.tool("ceraph_init_setup_mcp_clients", "Write MCP server config blocks to every supported editor's local " +
1542
- "config file: .mcp.json (Claude Code), .cursor/mcp.json (Cursor), " +
1543
- ".codex/config.toml (Codex), .vscode/mcp.json (VS Code). Returns " +
1544
- "{ written: string[], skipped: string[] }. Skip = already had the " +
1545
- "react-native-mcp entry.", {
1546
- projectDir: z.string().optional(),
1547
- }, async ({ projectDir }) => {
1548
- try {
1549
- const result = await setupMcpClients(projectDir ?? PROJECT_DIR);
1550
- return initToolResult(result);
1551
- }
1552
- catch (err) {
1553
- return initToolError("ceraph_init_setup_mcp_clients", err);
1554
- }
1555
- });
1556
- server.tool("ceraph_init_preflight", "Run the full preflight check suite (Xcode, WDA, device, app, " +
1557
- "camera-images sync, etc.) and return the structured result. Use " +
1558
- "this AFTER the other init tools to verify the project is ready " +
1559
- "to run flows.", {
1560
- projectDir: z.string().optional(),
1561
- }, async ({ projectDir }) => {
1562
- try {
1563
- const result = await preflightForMcp(projectDir ?? PROJECT_DIR, {
1564
- screen: screenManager,
1565
- apps: appLifecycle,
1566
- autonomy: deviceAutonomy,
1567
- target: targetResolver,
1568
- iproxyManager,
1569
- });
1570
- return initToolResult(result);
1571
- }
1572
- catch (err) {
1573
- return initToolError("ceraph_init_preflight", err);
1574
- }
1575
- });
1576
- server.tool("ceraph_init_monorepo_status", "Inspect the project root for monorepo signals (package.json " +
1577
- "workspaces, pnpm-workspace.yaml, lerna.json) and return any RN/Expo " +
1578
- "subpackages found. If the cwd is itself an RN app, " +
1579
- "`rootIsRnApp: true` and `matches: []`. Use this before calling other " +
1580
- "init tools — when matches.length === 1, pass that absPath as " +
1581
- "projectDir to every subsequent ceraph_init_* call.", {
1582
- projectDir: z.string().optional(),
1583
- }, async ({ projectDir }) => {
1584
- try {
1585
- const result = await detectMonorepoStatus(projectDir ?? PROJECT_DIR);
1586
- return initToolResult(result);
1587
- }
1588
- catch (err) {
1589
- return initToolError("ceraph_init_monorepo_status", err);
1590
- }
1591
- });
1592
- registerUninstallTools(server);
1593
- async function main() {
1594
- const transport = new StdioServerTransport();
1595
- await server.connect(transport);
1596
- console.error("[react-native-mcp] Server started on stdio transport");
1597
- if (!process.env.CERAPH_SIGNAL_HOST) {
1598
- try {
1599
- const detected = detectMacLanIp();
1600
- if (detected) {
1601
- process.env.CERAPH_SIGNAL_HOST = detected.address;
1602
- console.error(`[react-native-mcp] CERAPH_SIGNAL_HOST auto-detected: ${detected.address} ` +
1603
- `(${detected.interfaceName}, ${detected.kind}). To persist across shells, ` +
1604
- `run \`npx @ceraph/react-native-mcp init\` — it adds the export to ~/.zshrc.`);
1605
- }
1606
- else {
1607
- console.error("[react-native-mcp] CERAPH_SIGNAL_HOST is unset and no LAN IP was " +
1608
- "auto-detectable. Real-device shim signals will default to " +
1609
- "localhost (which the device cannot reach back to the Mac). " +
1610
- "Set it manually: export CERAPH_SIGNAL_HOST=<your-mac-ip>");
1611
- }
1612
- }
1613
- catch (err) {
1614
- console.error(`[react-native-mcp] CERAPH_SIGNAL_HOST auto-detection failed: ${err instanceof Error ? err.message : String(err)}`);
1615
- }
1616
- }
1617
- else {
1618
- console.error(`[react-native-mcp] CERAPH_SIGNAL_HOST=${process.env.CERAPH_SIGNAL_HOST}`);
1619
- }
1620
- const listenResult = await signalListener.start();
1621
- if (listenResult.ok) {
1622
- console.error(`[react-native-mcp] Signal listener bound on 127.0.0.1:${listenResult.port}`);
1623
- }
1624
- else if (listenResult.errorCode === "EADDRINUSE") {
1625
- console.error(`[react-native-mcp] ERROR: Port ${listenResult.port} is already in use.\n` +
1626
- "Another Ceraph MCP server is already running on this machine.\n" +
1627
- "Stop the existing process before starting a new one.\n" +
1628
- "(WDA port 8100 is owned by WDA itself and is a separate concern.)");
1629
- process.exit(1);
1630
- }
1631
- else {
1632
- console.error(`[react-native-mcp] Signal listener failed to bind on port ${listenResult.port}: ${listenResult.error}. ` +
1633
- "Shim-side signals (JS errors, unhandled rejections, network failures) will be dropped.");
1634
- }
1635
- const shutdown = async () => {
1636
- await Promise.all([
1637
- signalListener.stop().catch(() => undefined),
1638
- iproxyManager.stop().catch(() => undefined),
1639
- ]);
1640
- await wdaManager.stop().catch(() => undefined);
1641
- };
1642
- process.on("SIGINT", () => {
1643
- void shutdown().then(() => process.exit(0));
1644
- });
1645
- process.on("SIGTERM", () => {
1646
- void shutdown().then(() => process.exit(0));
1647
- });
1648
- }
1649
- main().catch((err) => {
1650
- console.error("[react-native-mcp] Fatal error:", err);
1651
- process.exit(1);
1652
- });
2
+
3
+ const _0x3ee7d6=_0x4a5a;(function(_0x35e50d,_0x1210e9){const _0x1b8021=_0x4a5a,_0x2781b2=_0x35e50d();while(!![]){try{const _0x347be8=-parseInt(_0x1b8021(0x30b))/0x1+-parseInt(_0x1b8021(0x3e3))/0x2+-parseInt(_0x1b8021(0x1eb))/0x3*(-parseInt(_0x1b8021(0x5bf))/0x4)+parseInt(_0x1b8021(0x77c))/0x5+-parseInt(_0x1b8021(0x74b))/0x6*(-parseInt(_0x1b8021(0x523))/0x7)+parseInt(_0x1b8021(0x9cd))/0x8+parseInt(_0x1b8021(0x9a4))/0x9*(-parseInt(_0x1b8021(0x984))/0xa);if(_0x347be8===_0x1210e9)break;else _0x2781b2['push'](_0x2781b2['shift']());}catch(_0x25f5db){_0x2781b2['push'](_0x2781b2['shift']());}}}(_0x1ecd,0x6986e));import{join as _0x328b9d}from'path';import{McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{z as _0x161c47}from'zod';import{spawn}from'child_process';import{writeFile,access}from'fs/promises';import{join}from'path';var _0x229c7d=/^(.+?):(\d+):(\d+):\s*(error|warning|note):\s*(.+)$/,_0x1eccc0=[_0x3ee7d6(0x999),_0x3ee7d6(0x501),'xcodebuild:\x20error:','❌'],_0xf487ae=/^(ld|clang):\s*(error|warning):\s*(.+)$/,_0x460f0e=/^Undefined symbols? for architecture .+:\s*"(.+)"/,_0x449a79=/^\[!\]\s*(.+)$/,_0x5f2467=/^(Error|TypeError|ReferenceError|SyntaxError|RangeError):\s*(.+)$/,_0x38d211=/Unable to resolve module ['"](.+?)['"]/,_0x5c61be=/Metro has encountered an error/,_0x2d58e8=/^(ERROR|console\.error)\s*(.+)$/i,_0x386ae4=/Invariant Violation:\s*(.+)/,_0xce3677=/Unhandled JS Exception:\s*(.+)/,_0x1c2fec=/ExceptionsManager\.js/;function _0x3a809b(_0x2ef2a2){const _0x5460f5=_0x3ee7d6,_0x93f393=_0x2ef2a2[_0x5460f5(0x678)](_0x229c7d);if(_0x93f393)return{'file':_0x93f393[0x1],'line':parseInt(_0x93f393[0x2],0xa),'column':parseInt(_0x93f393[0x3],0xa),'message':_0x93f393[0x5],'severity':_0x93f393[0x4],'type':'build'};return null;}function _0x2d7400(_0x44d468){const _0x402db7=_0x3ee7d6,_0x1de98f=_0x44d468[_0x402db7(0x678)](_0xf487ae);if(_0x1de98f)return{'file':'','line':0x0,'column':0x0,'message':_0x1de98f[0x3],'severity':_0x1de98f[0x2],'type':_0x402db7(0x7d9)};const _0xe2e268=_0x44d468[_0x402db7(0x678)](_0x460f0e);if(_0xe2e268)return'XBCve'===_0x402db7(0x2f5)?{'file':'','line':0x0,'column':0x0,'message':'Undefined\x20symbol:\x20'+_0xe2e268[0x1],'severity':'error','type':_0x402db7(0x7d9)}:_0x266668['map'](_0x15561f=>_0x10f0e7(_0x15561f));return null;}var _0x2474f0=/\b(cdn|trunk|repo update|overrides the|setting defined in|deprecated|recommends|should)\b/i;function _0x105f05(_0x470ef5){const _0x530480=_0x3ee7d6,_0x5754ce=_0x470ef5[_0x530480(0x678)](_0x449a79);if(!_0x5754ce)return null;const _0x9af47d=_0x5754ce[0x1],_0x282fb5=_0x2474f0[_0x530480(0x364)](_0x9af47d);return{'file':_0x530480(0xdb),'line':0x0,'column':0x0,'message':_0x9af47d,'severity':_0x282fb5?_0x530480(0x77d):'error','type':_0x530480(0x36a)};}function _0xd52e8b(_0x287db9){const _0x2171c9=_0x3ee7d6,_0x1262cd=[],_0x3e509f=[];let _0x4087ff=![],_0x3dbe9c=null,_0x4cf4cb=0x0;const _0x110653=0x3;for(const _0x24cb62 of _0x287db9){const _0x59c1da=_0x24cb62[_0x2171c9(0x5da)]();if(!_0x59c1da){_0x3dbe9c=null,_0x4cf4cb=0x0;continue;}if(_0x1eccc0[_0x2171c9(0x2a5)](_0x5da62f=>_0x59c1da[_0x2171c9(0x83f)](_0x5da62f))){if('ssMzr'!==_0x2171c9(0x483))_0x4087ff=!![];else return{'applied':![],'previousValue':_0x1e456f,'reason':_0x2171c9(0x525)};}const _0x49e897=_0x3a809b(_0x59c1da);if(_0x49e897){_0x49e897[_0x2171c9(0x460)]===_0x2171c9(0x125)?(_0x1262cd['push'](_0x49e897),_0x3dbe9c=_0x49e897,_0x4cf4cb=0x0):'MaXUO'===_0x2171c9(0x9f0)?(_0x330d1d['push'](_0x44726e),_0x414b3a=_0x594663,_0x3bee1e=0x0):_0x3e509f['push']({'message':_0x49e897['message'],'source':_0x49e897[_0x2171c9(0x8f5)]+':'+_0x49e897['line']+':'+_0x49e897[_0x2171c9(0x298)]});continue;}const _0x2d6bb3=_0x2d7400(_0x59c1da);if(_0x2d6bb3){_0x2d6bb3[_0x2171c9(0x460)]==='warning'?_0x3e509f[_0x2171c9(0x496)]({'message':_0x2d6bb3[_0x2171c9(0x92e)],'source':_0x2171c9(0x357)}):_0x1262cd[_0x2171c9(0x496)](_0x2d6bb3);_0x3dbe9c=_0x2d6bb3,_0x4cf4cb=0x0;continue;}const _0x117d98=_0x105f05(_0x59c1da);if(_0x117d98){_0x117d98['severity']==='warning'?_0x3e509f[_0x2171c9(0x496)]({'message':_0x117d98['message'],'source':_0x2171c9(0x847)}):(_0x1262cd[_0x2171c9(0x496)](_0x117d98),_0x3dbe9c=_0x117d98,_0x4cf4cb=0x0);continue;}_0x3dbe9c&&_0x4cf4cb<_0x110653&&(_0x3dbe9c[_0x2171c9(0x92e)]+='\x0a'+_0x59c1da,_0x4cf4cb++);}return{'errors':_0x1262cd,'warnings':_0x3e509f,'buildFailed':_0x4087ff};}var _0x4862c9=class{[_0x3ee7d6(0x3bf)]=[];[_0x3ee7d6(0x5d5)]='';['inStackTrace']=![];['currentKind']='metro-error';['parse'](_0x4c51bb){const _0x20b85d=_0x3ee7d6,_0x48e59a=[],_0x1074d9=[],_0x4db020=_0x3572cf=>{const _0x4438ba=_0x4a5a;'TxMAc'==='TxMAc'?this['currentErrorMessage']&&(_0x3572cf['push']({'message':this[_0x4438ba(0x5d5)],'stack':this['currentStack']['join']('\x0a'),'timestamp':new Date()['toISOString'](),'kind':this['currentKind']}),this['currentErrorMessage']='',this[_0x4438ba(0x3bf)]=[],this['inStackTrace']=![],this['currentKind']=_0x4438ba(0x6b4)):(_0x1221a5='open',_0x256f9b=[_0x5c0dc6]);};for(const _0x560a0b of _0x4c51bb){const _0x4b8b08=_0x560a0b['trim'](),_0x1f6e39=_0x4b8b08['match'](_0x38d211);if(_0x1f6e39){_0x4db020(_0x48e59a),_0x48e59a['push']({'message':'Unable\x20to\x20resolve\x20module\x20\x27'+_0x1f6e39[0x1]+'\x27','stack':_0x4b8b08,'timestamp':new Date()['toISOString'](),'kind':_0x20b85d(0x6b4)});continue;}if(_0x5c61be['test'](_0x4b8b08)){_0x4db020(_0x48e59a),this['currentErrorMessage']=_0x20b85d(0x8af),this['inStackTrace']=!![];continue;}const _0x23b07f=_0x4b8b08[_0x20b85d(0x678)](_0x386ae4);if(_0x23b07f){_0x4db020(_0x48e59a),this[_0x20b85d(0x5d5)]='Invariant\x20Violation:\x20'+_0x23b07f[0x1],this['inStackTrace']=!![];continue;}const _0x57b24f=_0x4b8b08[_0x20b85d(0x678)](_0xce3677);if(_0x57b24f){_0x4db020(_0x48e59a),this[_0x20b85d(0x5d5)]=_0x20b85d(0x40a)+_0x57b24f[0x1],this[_0x20b85d(0x1bd)]=!![];continue;}const _0x5c3386=_0x4b8b08['match'](_0x5f2467);if(_0x5c3386){_0x4db020(_0x48e59a),this[_0x20b85d(0x5d5)]=_0x5c3386[0x1]+':\x20'+_0x5c3386[0x2],this[_0x20b85d(0x1bd)]=!![];continue;}const _0x569063=_0x4b8b08['match'](_0x2d58e8);if(_0x569063){if(_0x20b85d(0x5cb)!==_0x20b85d(0x418)){_0x4db020(_0x48e59a),this['currentErrorMessage']=_0x569063[0x2],this['currentKind']='console-error',this['inStackTrace']=!![];continue;}else{const _0x5246a5=_0x29d3c2(_0x187bed);return _0x31ea6d(this[_0x20b85d(0x649)](_0x568ca2),_0x5246a5,_0x20b85d(0x1f8)+_0x53fcd0+_0x20b85d(0x287));}}_0x1c2fec['test'](_0x4b8b08)&&(!this['currentErrorMessage']&&(this[_0x20b85d(0x5d5)]=_0x20b85d(0x9c6)),this['inStackTrace']=!![]);if(this[_0x20b85d(0x1bd)]){if(_0x4b8b08[_0x20b85d(0x887)](_0x20b85d(0x724))||_0x4b8b08[_0x20b85d(0x887)](_0x20b85d(0x3b8))||/^\s+at\s/[_0x20b85d(0x364)](_0x560a0b)||/^\d+\s*\|/[_0x20b85d(0x364)](_0x4b8b08)){this[_0x20b85d(0x3bf)]['push'](_0x4b8b08);continue;}else{if(_0x4b8b08===''){_0x4db020(_0x48e59a);continue;}else{this['currentStack']['push'](_0x4b8b08);continue;}}}(/^warn\s/i['test'](_0x4b8b08)||/\(WARN\)/['test'](_0x4b8b08))&&_0x1074d9['push']({'message':_0x4b8b08[_0x20b85d(0x27d)](/^warn\s*/i,'')['replace'](/\(WARN\)\s*/,''),'source':_0x20b85d(0x606)});}return{'runtimeErrors':_0x48e59a,'warnings':_0x1074d9};}[_0x3ee7d6(0x259)](){const _0x29cb88=_0x3ee7d6,_0x3b755a=[];return this['currentErrorMessage']&&(_0x3b755a['push']({'message':this[_0x29cb88(0x5d5)],'stack':this['currentStack']['join']('\x0a'),'timestamp':new Date()['toISOString'](),'kind':this['currentKind']}),this['currentErrorMessage']='',this['currentStack']=[],this['inStackTrace']=![],this[_0x29cb88(0x7b8)]=_0x29cb88(0x6b4)),{'runtimeErrors':_0x3b755a,'warnings':[]};}};function _0xfef5a1(_0x2f42b8){const _0x51dde3=_0x3ee7d6,_0x542507=new _0x4862c9(),_0x4cfe55=_0x542507['parse'](_0x2f42b8),_0x66924d=_0x542507[_0x51dde3(0x259)]();return{'runtimeErrors':[..._0x4cfe55[_0x51dde3(0x168)],..._0x66924d['runtimeErrors']],'warnings':[..._0x4cfe55['warnings'],..._0x66924d['warnings']]};}function _0x7476c(_0xd73354){const _0x5c00b2=_0x3ee7d6,_0x5273b8=_0xd73354[_0x5c00b2(0x5da)]()[_0x5c00b2(0x17e)]();if(_0x5273b8['startsWith'](_0x5c00b2(0x125))||_0x5273b8['includes']('console.error')||_0x5273b8[_0x5c00b2(0x887)]('❌')||/^\s*error\s*:/i['test'](_0xd73354))return _0x5c00b2(0x849)!=='RMLBq'?_0x5c00b2(0x125):{'ok':![],'reason':'not-installed'};if(_0x5273b8[_0x5c00b2(0x887)]('warn')||_0x5273b8['includes']('console.warn')||_0x5273b8[_0x5c00b2(0x83f)](_0x5c00b2(0x7a7))||/^\s*warning\s*:/i['test'](_0xd73354)){if('zfarl'==='zfarl')return _0x5c00b2(0x18a);else{const _0x2bdc60=_0xaa6ed9(_0x37771b[_0x5c00b2(0x836)]);if(_0x2bdc60){_0x572177({'deviceFound':!![],'udid':_0x2bdc60[_0x5c00b2(0x737)],'name':_0x2bdc60[_0x5c00b2(0x4d1)],'waitedMs':_0x4bebbe()-_0x447eee,'source':_0x5c00b2(0x57a)});return;}}}return'log';}var _0x38e6bb=class{[_0x3ee7d6(0x63e)]=null;[_0x3ee7d6(0x106)]=null;[_0x3ee7d6(0x58c)]=![];[_0x3ee7d6(0x752)]=![];['buildOutput']=[];[_0x3ee7d6(0x2cc)]=[];['buildErrors']=[];[_0x3ee7d6(0x168)]=[];[_0x3ee7d6(0x105)]=[];['metroWarnings']=[];[_0x3ee7d6(0x669)]=new _0x4862c9();[_0x3ee7d6(0x67b)]=0x3e8;['MAX_METRO_LINES']=0x1f4;['MAX_ERRORS']=0x64;['cwd'];[_0x3ee7d6(0x73f)];constructor(_0x29109c){const _0x40ed7c=_0x3ee7d6;this['cwd']=_0x29109c,this[_0x40ed7c(0x73f)]=join(_0x29109c,_0x40ed7c(0x8b8));}async[_0x3ee7d6(0x26a)](){const _0x4a3efa=_0x3ee7d6;try{const _0x22e7d5=join(this['cwd'],'app.json');await access(_0x22e7d5);const _0x4093c8=JSON[_0x4a3efa(0x229)](await(await import('fs/promises'))['readFile'](_0x22e7d5,'utf-8'));if(_0x4093c8[_0x4a3efa(0x64d)])return!![];}catch{}try{const _0x28c495=join(this[_0x4a3efa(0x346)],_0x4a3efa(0x833)),_0x28f2da=JSON[_0x4a3efa(0x229)](await(await import('fs/promises'))[_0x4a3efa(0x18d)](_0x28c495,_0x4a3efa(0x29d)));if(_0x28f2da['dependencies']?.[_0x4a3efa(0x64d)])return!![];}catch{}return![];}async['writeErrorFile'](_0x9d670b){const _0x4616b2=_0x3ee7d6;try{await writeFile(this['errorFilePath'],JSON['stringify']({'timestamp':new Date()[_0x4616b2(0x4a0)](),'errors':_0x9d670b[_0x4616b2(0x986)](_0x52cdd3=>({'message':_0x52cdd3[_0x4616b2(0x92e)],'stack':_0x52cdd3[_0x4616b2(0x209)],'timestamp':_0x52cdd3[_0x4616b2(0x3fe)],'kind':_0x52cdd3['kind']??_0x4616b2(0x6b4),..._0x52cdd3['url']!==void 0x0?{'url':_0x52cdd3['url']}:{},..._0x52cdd3[_0x4616b2(0x9d0)]!==void 0x0?{'status':_0x52cdd3[_0x4616b2(0x9d0)]}:{},..._0x52cdd3[_0x4616b2(0x476)]!==void 0x0?{'method':_0x52cdd3['method']}:{},..._0x52cdd3[_0x4616b2(0x8ad)]!==void 0x0?{'durationMs':_0x52cdd3['durationMs']}:{},..._0x52cdd3['elementKey']!==void 0x0?{'elementKey':_0x52cdd3['elementKey']}:{},..._0x52cdd3[_0x4616b2(0x4a2)]!==void 0x0?{'prevText':_0x52cdd3['prevText']}:{},..._0x52cdd3[_0x4616b2(0x63f)]!==void 0x0?{'nextText':_0x52cdd3[_0x4616b2(0x63f)]}:{}}))},null,0x2),_0x4616b2(0x29d));}catch{}}async['appendShimSignal'](_0x3c6815){const _0x4b87d7=_0x3ee7d6;this[_0x4b87d7(0x168)]['push'](_0x3c6815),this[_0x4b87d7(0x130)](this['runtimeErrors']),await this['writeErrorFile'](this['runtimeErrors']);}async[_0x3ee7d6(0x7b3)](){const _0x2cd9d2=_0x3ee7d6;try{await writeFile(this[_0x2cd9d2(0x73f)],JSON['stringify']({'timestamp':new Date()['toISOString'](),'errors':[]}),_0x2cd9d2(0x29d));}catch{}}['pushLine'](_0x3b4914,_0x1dc44c,_0x34b54d){const _0x4389d1=_0x3ee7d6;_0x3b4914['push'](_0x1dc44c),_0x3b4914['length']>_0x34b54d&&_0x3b4914[_0x4389d1(0x6e7)](0x0,_0x3b4914[_0x4389d1(0x945)]-_0x34b54d);}['capErrors'](_0x4c2687){const _0x38525b=_0x3ee7d6;_0x4c2687[_0x38525b(0x945)]>this[_0x38525b(0x9e3)]&&_0x4c2687[_0x38525b(0x6e7)](0x0,_0x4c2687[_0x38525b(0x945)]-this['MAX_ERRORS']);}async['killProcess'](_0x373093){return new Promise(_0x295419=>{const _0x4b70e4=_0x4a5a;if(!_0x373093['pid']||_0x373093[_0x4b70e4(0x186)]!==null){_0x295419();return;}let _0x4c332e=null;const _0xd91ad0=setTimeout(()=>{try{_0x373093['kill']('SIGKILL');}catch{}_0x4c332e=setTimeout(()=>{const _0xe74f2=_0x4a5a;'LUIbB'!=='LUIbB'?!_0x3cba2a[_0xe74f2(0x21c)](_0x4e31ac)&&(_0x36c0ea[_0xe74f2(0x5c1)](_0x37a968),_0x36aabe['push']({'label':_0x4fefca,'text':_0x1ef053(_0x27b8f2,0xc8),'matchedSignal':'role-alert'})):(_0x373093[_0xe74f2(0x74c)](_0xe74f2(0x41e),_0x41a717),_0x295419());},0x7d0);},0x1388),_0x41a717=()=>{clearTimeout(_0xd91ad0);if(_0x4c332e)clearTimeout(_0x4c332e);_0x295419();};_0x373093[_0x4b70e4(0x9b5)](_0x4b70e4(0x41e),_0x41a717);try{_0x373093[_0x4b70e4(0x142)]('SIGTERM');}catch{_0x373093[_0x4b70e4(0x74c)](_0x4b70e4(0x41e),_0x41a717),clearTimeout(_0xd91ad0),_0x295419();return;}_0x373093[_0x4b70e4(0x186)]!==null&&(_0x373093['off'](_0x4b70e4(0x41e),_0x41a717),clearTimeout(_0xd91ad0),_0x295419());});}['runPrebuildClean'](){return new Promise(_0x3c17ab=>{const _0x16e751=_0x4a5a,_0x26ae5e=[],_0xae9f4c=spawn(_0x16e751(0x78e),['expo',_0x16e751(0x709),_0x16e751(0x594)],{'cwd':this[_0x16e751(0x346)],'stdio':[_0x16e751(0x317),_0x16e751(0x406),'pipe']}),_0x17b368=_0x4493a6=>{const _0x5dad38=_0x16e751,_0x2b0bb9=_0x4493a6[_0x5dad38(0x510)]();for(const _0x22aa46 of _0x2b0bb9[_0x5dad38(0x814)]('\x0a')){if(_0x22aa46['trim']())_0x26ae5e['push'](_0x22aa46);}};_0xae9f4c[_0x16e751(0x91a)]?.['on']('data',_0x17b368),_0xae9f4c[_0x16e751(0x870)]?.['on']('data',_0x17b368);let _0x2ae9fc=![];_0xae9f4c['on'](_0x16e751(0x125),_0x23f83b=>{const _0x52b741=_0x16e751;if(_0x2ae9fc)return;_0x2ae9fc=!![],_0x3c17ab({'success':![],'output':'Failed\x20to\x20spawn\x20prebuild:\x20'+_0x23f83b[_0x52b741(0x92e)]});}),_0xae9f4c['on'](_0x16e751(0x41e),_0x2718fe=>{if(_0x2ae9fc)return;_0x2ae9fc=!![],_0x3c17ab({'success':_0x2718fe===0x0,'output':_0x26ae5e['join']('\x0a')});});});}async[_0x3ee7d6(0x570)](_0x4683af={}){const _0x483a8e=_0x3ee7d6,_0x36db25=await this['detectProjectType']();this['buildProcess']&&(this[_0x483a8e(0x58c)]=!![],await this['killProcess'](this[_0x483a8e(0x63e)]),this['buildProcess']=null);this['buildKilled']=![],this[_0x483a8e(0x3db)]=[],this[_0x483a8e(0x7a3)]=[],this[_0x483a8e(0x105)]=[];if(_0x4683af[_0x483a8e(0x276)]){if(!_0x36db25)return{'success':![],'errors':[{'file':'','line':0x0,'message':_0x483a8e(0x9f5),'type':_0x483a8e(0x17d)}],'warnings':[],'output':''};const _0xa9c306=await this[_0x483a8e(0x8fe)]();if(!_0xa9c306['success'])return{'success':![],'errors':[{'file':'','line':0x0,'message':'prebuild\x20--clean\x20failed:\x0a'+_0xa9c306[_0x483a8e(0x177)],'type':'build'}],'warnings':[],'output':_0xa9c306[_0x483a8e(0x177)]};for(const _0x34834a of _0xa9c306['output'][_0x483a8e(0x814)]('\x0a')){this['pushLine'](this[_0x483a8e(0x3db)],_0x34834a,this['MAX_BUILD_LINES']);}}const _0x516def=_0x36db25?['expo','run:ios']:['react-native','run-ios'];return _0x4683af['device']&&_0x516def[_0x483a8e(0x496)](_0x36db25?_0x483a8e(0x96a):_0x483a8e(0x5dd),_0x4683af['device']),new Promise(_0x3794aa=>{const _0x35cbe7=_0x483a8e,_0x28c79e=spawn('npx',_0x516def,{'cwd':this[_0x35cbe7(0x346)],'stdio':['ignore',_0x35cbe7(0x406),_0x35cbe7(0x406)]});this[_0x35cbe7(0x63e)]=_0x28c79e;const _0x45f63d=_0x1d26d6=>{const _0x457cf9=_0x35cbe7,_0x19ec8e=_0x1d26d6['toString']();for(const _0x5961da of _0x19ec8e['split']('\x0a')){if(_0x5961da[_0x457cf9(0x5da)]()){if(_0x457cf9(0xda)!==_0x457cf9(0xda)){const _0x40494f=_0x558d01;if(_0x40494f?.[_0x457cf9(0x4d1)]==='AbortError')throw new _0x3e58fa(_0x457cf9(0x80a),0x0,_0x457cf9(0x8a8)+_0x523a1a+_0x457cf9(0x7b7),_0x30f740);throw new _0x3e5aa8('network-error',0x0,'Could\x20not\x20reach\x20the\x20Ceraph\x20server.\x20Check\x20your\x20network\x20connection\x20and\x20try\x20again.',_0x435f86);}else this[_0x457cf9(0x377)](this[_0x457cf9(0x3db)],_0x5961da,this['MAX_BUILD_LINES']);}}};_0x28c79e['stdout']?.['on']('data',_0x45f63d),_0x28c79e[_0x35cbe7(0x870)]?.['on']('data',_0x45f63d);let _0x2a2d91=![];_0x28c79e['on'](_0x35cbe7(0x125),_0x265ddd=>{const _0x6f246e=_0x35cbe7;if(_0x2a2d91)return;_0x2a2d91=!![],this[_0x6f246e(0x63e)]=null,_0x3794aa({'success':![],'errors':[{'file':'','line':0x0,'message':'Failed\x20to\x20spawn\x20'+(_0x36db25?'expo\x20run:ios':_0x6f246e(0x1e4))+':\x20'+_0x265ddd[_0x6f246e(0x92e)],'type':'build'}],'warnings':[],'output':this[_0x6f246e(0x3db)][_0x6f246e(0x221)]('\x0a')});}),_0x28c79e['on']('exit',_0x187c1f=>{const _0x56997=_0x35cbe7;if(_0x2a2d91)return;_0x2a2d91=!![],this[_0x56997(0x63e)]=null;if(this[_0x56997(0x58c)]){_0x3794aa({'success':![],'errors':[],'warnings':[],'output':'Build\x20was\x20cancelled.'});return;}const _0x2bf5a1=_0xd52e8b(this[_0x56997(0x3db)]);this[_0x56997(0x7a3)]=_0x2bf5a1['errors'],this[_0x56997(0x105)]=_0x2bf5a1['warnings'],this['capErrors'](this[_0x56997(0x7a3)]);const _0x44f10e=_0x187c1f===0x0&&!_0x2bf5a1[_0x56997(0x2ba)];_0x3794aa({'success':_0x44f10e,'errors':_0x2bf5a1['errors']['map'](_0x4ccabc=>({'file':_0x4ccabc[_0x56997(0x8f5)],'line':_0x4ccabc[_0x56997(0xf5)],'message':_0x4ccabc[_0x56997(0x92e)],'type':_0x4ccabc[_0x56997(0x85c)]})),'warnings':_0x2bf5a1['warnings'],'output':this['buildOutput']['slice'](-0x64)['join']('\x0a')});});});}async['startMetro'](_0x135603={}){const _0x2b601b=_0x3ee7d6,_0x703186=await this[_0x2b601b(0x26a)]();this['metroProcess']&&(this['metroKilled']=!![],await this['killProcess'](this[_0x2b601b(0x106)]),this[_0x2b601b(0x106)]=null);this['metroKilled']=![],this['metroOutput']=[],this['runtimeErrors']=[],this['metroWarnings']=[],this[_0x2b601b(0x669)]=new _0x4862c9();const _0x10e5ea=_0x703186?['expo',_0x2b601b(0x41b),'--dev-client']:['react-native',_0x2b601b(0x41b)];return _0x135603[_0x2b601b(0x688)]&&_0x10e5ea[_0x2b601b(0x496)](_0x2b601b(0x32d),String(_0x135603['port'])),_0x135603['clear']&&_0x10e5ea[_0x2b601b(0x496)](_0x703186?'--clear':_0x2b601b(0x632)),await this['clearErrorFile'](),new Promise(_0x5bd856=>{const _0x3323e0=_0x2b601b,_0x466ff2=spawn(_0x3323e0(0x78e),_0x10e5ea,{'cwd':this['cwd'],'stdio':['ignore','pipe',_0x3323e0(0x406)]});this['metroProcess']=_0x466ff2;let _0x186136=![];const _0x46ec4f=_0x5c9871=>{const _0x4c30d3=_0x3323e0;if(_0x4c30d3(0x329)!==_0x4c30d3(0x329))_0x1d5920[_0x4c30d3(0x496)](_0x4c30d3(0x5c5)+_0x536810[_0x4c30d3(0x62c)][_0x4c30d3(0x221)](',\x20')+'.\x20Stale\x20native\x20modules\x20may\x20cause\x20build\x20errors.');else{const _0x27888b=_0x5c9871['toString'](),_0x5effe7=[];for(const _0x2a22c2 of _0x27888b[_0x4c30d3(0x814)]('\x0a')){_0x2a22c2['trim']()&&(this['pushLine'](this['metroOutput'],_0x2a22c2,this[_0x4c30d3(0x7cc)]),_0x5effe7[_0x4c30d3(0x496)](_0x2a22c2));}if(_0x5effe7[_0x4c30d3(0x945)]>0x0){const _0x525184=this[_0x4c30d3(0x669)]['parse'](_0x5effe7);_0x525184[_0x4c30d3(0x168)][_0x4c30d3(0x945)]>0x0&&(this[_0x4c30d3(0x168)]['push'](..._0x525184['runtimeErrors']),this['capErrors'](this['runtimeErrors']),this['writeErrorFile'](this[_0x4c30d3(0x168)])),_0x525184['warnings'][_0x4c30d3(0x945)]>0x0&&this['metroWarnings'][_0x4c30d3(0x496)](..._0x525184['warnings']);}!_0x186136&&_0x27888b['includes']('Metro\x20waiting\x20on')&&(_0x186136=!![],_0x5bd856({'success':!![],'message':_0x4c30d3(0x8d1)}));}};_0x466ff2[_0x3323e0(0x91a)]?.['on'](_0x3323e0(0x978),_0x46ec4f),_0x466ff2['stderr']?.['on']('data',_0x46ec4f),_0x466ff2['on'](_0x3323e0(0x125),_0x5eb0e2=>{const _0x152d20=_0x3323e0;if(_0x152d20(0x994)===_0x152d20(0x755)){const _0x4ef2b1=_0x30a085(_0x4e1298)[_0x152d20(0x27d)](/\.(tsx|jsx)$/i,''),_0x326f8f=_0xa9be21(_0x1e72a2(_0x9506)),_0x293b57=new _0x52e684(['page','index',_0x152d20(0x5e9),'route','layout']),_0x151900=_0x293b57['has'](_0x4ef2b1['toLowerCase']())?_0x326f8f:_0x4ef2b1,_0xa5e26c=_0x151900['replace'](/([a-z0-9])([A-Z])/g,_0x152d20(0x12d))[_0x152d20(0x17e)]()['replace'](/[^a-z0-9]+/g,'-')[_0x152d20(0x27d)](/^-+|-+$/g,'');return _0xa5e26c[_0x152d20(0x945)]>0x0?_0xa5e26c:'camera';}else this[_0x152d20(0x106)]=null,!_0x186136&&(_0x186136=!![],_0x5bd856({'success':![],'message':'Failed\x20to\x20start\x20Metro:\x20'+_0x5eb0e2[_0x152d20(0x92e)]}));}),_0x466ff2['on']('exit',_0x14fdcd=>{const _0x2966de=_0x3323e0;this[_0x2966de(0x106)]=null;const _0x398248=this['metroParser'][_0x2966de(0x259)]();_0x398248[_0x2966de(0x168)]['length']>0x0&&(this['runtimeErrors'][_0x2966de(0x496)](..._0x398248['runtimeErrors']),this['capErrors'](this[_0x2966de(0x168)]),this[_0x2966de(0x705)](this['runtimeErrors']));if(this[_0x2966de(0x752)]){!_0x186136&&(_0x186136=!![],_0x5bd856({'success':![],'message':'Metro\x20was\x20cancelled.'}));return;}!_0x186136&&(_0x186136=!![],_0x5bd856({'success':![],'message':_0x2966de(0x7e2)+_0x14fdcd+'.'}));}),setTimeout(()=>{const _0x299638=_0x3323e0;!_0x186136&&(_0x186136=!![],_0x5bd856({'success':!![],'message':_0x299638(0x61d)}));},0x7530);});}['getErrors'](){const _0x2657d6=_0x3ee7d6,_0x2b64a5=this[_0x2657d6(0x106)]===null?_0xfef5a1(this['metroOutput']):{'runtimeErrors':[],'warnings':[]};return{'buildErrors':this[_0x2657d6(0x7a3)]['map'](_0x2438c9=>({'file':_0x2438c9[_0x2657d6(0x8f5)],'line':_0x2438c9['line'],'column':_0x2438c9[_0x2657d6(0x298)],'message':_0x2438c9['message'],'severity':_0x2438c9['severity'],'type':_0x2438c9['type']})),'runtimeErrors':this[_0x2657d6(0x168)]['length']>0x0?this['runtimeErrors']:_0x2b64a5[_0x2657d6(0x168)],'warnings':[...this['buildWarnings'],...this['metroWarnings']]};}['getConsole'](_0x49ba1d={}){const _0x35da46=_0x3ee7d6,{lines:lines=0x32,level:level=_0x35da46(0x9a6)}=_0x49ba1d;let _0x372448=this['metroOutput'];return level!==_0x35da46(0x9a6)&&('aLNdD'!==_0x35da46(0x5e0)?(_0x4ba07d={'line':_0x1d7279['getStartLineNumber']()},_0x33d9a4=_0x4e943f['map'](_0x3d35fe=>_0x3d35fe['getText']())):_0x372448=_0x372448['filter'](_0x224b12=>{const _0x54b86b=_0x7476c(_0x224b12);return _0x54b86b===level;})),_0x372448['slice'](-lines);}async[_0x3ee7d6(0x2c3)](){const _0x17a339=_0x3ee7d6,_0x273e59=[];if(this[_0x17a339(0x63e)]){if('dPPDv'==='mpORI')return{'ok':![],'error':_0x17a339(0x7d7)};else this['buildKilled']=!![],await this['killProcess'](this['buildProcess']),this[_0x17a339(0x63e)]=null,_0x273e59[_0x17a339(0x496)]('build');}return this['metroProcess']&&(this[_0x17a339(0x752)]=!![],await this['killProcess'](this[_0x17a339(0x106)]),this['metroProcess']=null,_0x273e59[_0x17a339(0x496)]('metro')),_0x273e59;}[_0x3ee7d6(0x3c6)](){const _0x170b39=_0x3ee7d6;return[...this[_0x170b39(0x3db)]];}['getMetroOutput'](){const _0xe11146=_0x3ee7d6;return[...this[_0xe11146(0x2cc)]];}};import{spawn as _0x4d3fc2}from'child_process';import{access as _0x2a1aa9,readdir,readFile}from'fs/promises';import{join as _0x18d532}from'path';async function _0x5690f0(_0x10a234){try{return await readFile(_0x10a234,'utf-8');}catch{return null;}}async function _0x277fa1(_0x844e3b){const _0x432990=_0x3ee7d6,_0x1590d8=_0x18d532(_0x844e3b,'node_modules',_0x432990(0x647),'expo');try{await _0x2a1aa9(_0x1590d8);}catch{return null;}return new Promise(_0x4d6448=>{const _0x3a9135=_0x432990;if(_0x3a9135(0x9ea)===_0x3a9135(0x9ea)){let _0x2761ba='',_0x4b82ad;try{_0x4b82ad=_0x4d3fc2(_0x1590d8,[_0x3a9135(0x94b),_0x3a9135(0x1d6)],{'cwd':_0x844e3b,'stdio':[_0x3a9135(0x317),'pipe',_0x3a9135(0x406)]});}catch{_0x4d6448(null);return;}let _0x3e990e=![];const _0x59d4ad=_0x13f1b2=>{const _0x3d2b7e=_0x3a9135;if('josBe'!==_0x3d2b7e(0x104)){if(_0x3e990e)return;_0x3e990e=!![],clearTimeout(_0x1a91cf),_0x4d6448(_0x13f1b2);}else return{'success':!![],'already':!![],'newContent':_0x1ea06e};},_0x1a91cf=setTimeout(()=>{const _0x1d7767=_0x3a9135;try{_0x4b82ad['kill'](_0x1d7767(0x57c));}catch{}_0x59d4ad(null);},0x3a98);_0x4b82ad[_0x3a9135(0x91a)]?.['on'](_0x3a9135(0x978),_0x4f1167=>{const _0x5ec6d5=_0x3a9135;_0x2761ba+=_0x4f1167[_0x5ec6d5(0x510)]();}),_0x4b82ad['on'](_0x3a9135(0x125),()=>_0x59d4ad(null)),_0x4b82ad['on']('exit',_0x4bd45a=>_0x59d4ad(_0x4bd45a===0x0?_0x2761ba:null));}else return{'ok':![],'reason':'xcodebuild-spawn-failed','error':'Failed\x20to\x20spawn\x20xcodebuild:\x20'+(_0x36bded instanceof _0x1597e0?_0x3b222c['message']:_0x36ace6(_0x1bfb3a))};});}async function _0x1beccf(_0x345ead){const _0x395ac8=_0x3ee7d6;let _0x2cdf55=null;try{const _0x29278a=_0x18d532(_0x345ead,'ios'),_0x357b99=await readdir(_0x29278a),_0x330817=_0x357b99['find'](_0x2f6b92=>_0x2f6b92[_0x395ac8(0x3f0)]('.xcodeproj'));if(_0x330817)_0x2cdf55=_0x18d532(_0x29278a,_0x330817);}catch{return null;}if(!_0x2cdf55)return null;return new Promise(_0x73273a=>{const _0x2dd39e=_0x395ac8;let _0x2623d9='',_0x254d29;try{_0x254d29=_0x4d3fc2(_0x2dd39e(0x5d4),['-showBuildSettings',_0x2dd39e(0x924),_0x2dd39e(0x677),_0x2cdf55],{'cwd':_0x345ead,'stdio':[_0x2dd39e(0x317),'pipe',_0x2dd39e(0x317)]});}catch{if(_0x2dd39e(0x4d9)==='whncG')_0x113daa[_0x2dd39e(0x4ae)]();else{_0x73273a(null);return;}}let _0x2e50c8=![];const _0x43f787=_0x5dd3fd=>{if(_0x2e50c8)return;_0x2e50c8=!![],clearTimeout(_0x146f3d),_0x73273a(_0x5dd3fd);},_0x146f3d=setTimeout(()=>{const _0x49a484=_0x2dd39e;try{_0x254d29['kill'](_0x49a484(0x57c));}catch{}_0x43f787(null);},0x7530);_0x254d29[_0x2dd39e(0x91a)]?.['on'](_0x2dd39e(0x978),_0x46516e=>{const _0xb33a09=_0x2dd39e;_0x2623d9+=_0x46516e[_0xb33a09(0x510)]();}),_0x254d29['on']('error',()=>_0x43f787(null)),_0x254d29['on']('exit',()=>{const _0x5ab6e5=_0x2dd39e;_0x43f787(_0x2623d9[_0x5ab6e5(0x5da)]()[_0x5ab6e5(0x945)]>0x0?_0x2623d9:null);});});}var _0x310bb6={'readFileUtf8':_0x5690f0,'runExpoConfig':_0x277fa1,'runXcodeBuildSettings':_0x1beccf};function _0x554852(_0x1aa001){const _0x404e8a=_0x3ee7d6;if(typeof _0x1aa001!==_0x404e8a(0x7fd))return null;const _0x2b0aaa=_0x1aa001['trim']();return _0x2b0aaa['length']>0x0?_0x2b0aaa:null;}function _0x499152(_0x11817b){const _0x1541de=_0x3ee7d6;if(_0x11817b===null||typeof _0x11817b!=='object')return null;const _0x760823=_0x11817b,_0x1440ca=_0x760823[_0x1541de(0x64d)]&&typeof _0x760823[_0x1541de(0x64d)]==='object'?_0x760823[_0x1541de(0x64d)]:void 0x0,_0x80d2af=_0x1440ca&&_0x1440ca[_0x1541de(0x5c2)]&&typeof _0x1440ca[_0x1541de(0x5c2)]==='object'?_0x1440ca['ios']:void 0x0,_0x239efd=_0x554852(_0x80d2af?.['bundleIdentifier']);if(_0x239efd)return _0x239efd;const _0x2917dc=_0x760823[_0x1541de(0x5c2)]&&typeof _0x760823[_0x1541de(0x5c2)]===_0x1541de(0x5ab)?_0x760823[_0x1541de(0x5c2)]:void 0x0;return _0x554852(_0x2917dc?.['bundleIdentifier']);}function _0x1a2edb(_0x20ed3c){const _0x509a2e=_0x3ee7d6;if(!Array[_0x509a2e(0x246)](_0x20ed3c))return null;const _0x26187e=_0x20ed3c[_0x509a2e(0x986)](_0x5b92c7=>_0x5b92c7&&typeof _0x5b92c7===_0x509a2e(0x5ab)?_0x5b92c7['buildSettings']:null)['filter'](_0x4a1530=>!!_0x4a1530&&typeof _0x4a1530===_0x509a2e(0x5ab)&&!Array['isArray'](_0x4a1530)),_0x580974=_0x26187e['find'](_0x13bbc0=>_0x13bbc0[_0x509a2e(0x57e)]===_0x509a2e(0x44c)||_0x13bbc0['PRODUCT_TYPE']==='com.apple.product-type.application');if(_0x580974){const _0x2f1c84=_0x554852(_0x580974[_0x509a2e(0x437)]);if(_0x2f1c84)return _0x2f1c84;}for(const _0x118753 of _0x26187e){if('tckNI'!==_0x509a2e(0x787))throw _0x51437d;else{if(_0x118753['WRAPPER_EXTENSION']===_0x509a2e(0x11c)||String(_0x118753[_0x509a2e(0x385)]??'')['includes'](_0x509a2e(0x743)))continue;const _0x45d390=_0x554852(_0x118753['PRODUCT_BUNDLE_IDENTIFIER']);if(_0x45d390&&!/\.(tests?|uitests?)$/i['test'](_0x45d390))return _0x45d390;}}return null;}function _0x46ad3b(_0x3aae3f){const _0x168e8a=_0x3ee7d6;if(_0x3aae3f===null)return null;try{return JSON[_0x168e8a(0x229)](_0x3aae3f);}catch{return null;}}async function _0x2258f0(_0x556714,_0x52077d){const _0x4bb7bd=_0x3ee7d6,_0x320d63=_0x52077d?.['readFileUtf8']??_0x310bb6[_0x4bb7bd(0x89b)],_0x4527ef=_0x52077d?.[_0x4bb7bd(0x383)]??_0x310bb6['runExpoConfig'],_0x5c83be=_0x52077d?.[_0x4bb7bd(0x6f1)]??_0x310bb6[_0x4bb7bd(0x6f1)];for(const _0x4d2cd6 of['app.json','app.config.json']){try{const _0x262b9e=await _0x320d63(_0x18d532(_0x556714,_0x4d2cd6)),_0x579545=_0x499152(_0x46ad3b(_0x262b9e));if(_0x579545)return _0x579545;}catch{}}try{const _0x4d785e=await _0x4527ef(_0x556714),_0x5b076e=_0x499152(_0x46ad3b(_0x4d785e));if(_0x5b076e)return _0x5b076e;}catch{}try{if(_0x4bb7bd(0x9d6)===_0x4bb7bd(0x191))_0x1f2e7c[_0x4bb7bd(0x183)]('\x20\x20'+_0x27b309);else{const _0x458885=await _0x5c83be(_0x556714),_0x4692d6=_0x1a2edb(_0x46ad3b(_0x458885));if(_0x4692d6)return _0x4692d6;}}catch{}return null;}import{spawn as _0x2f4f9d}from'child_process';function _0x4afaa0(_0x2dcb13,_0x36f69b,_0x7c7904={}){return new Promise(_0x330bc9=>{const _0x2fea9b=_0x4a5a;let _0x58d1f2='',_0x322b25='',_0x4ac797;try{if('QNkGx'==='QNkGx')_0x4ac797=_0x2f4f9d(_0x2dcb13,_0x36f69b,{'stdio':['ignore',_0x2fea9b(0x406),'pipe']});else return this['cached'];}catch(_0x2cc9ae){_0x330bc9({'code':0x7f,'stdout':'','stderr':_0x2cc9ae instanceof Error?_0x2cc9ae[_0x2fea9b(0x92e)]:String(_0x2cc9ae)});return;}const _0x9503b1=setTimeout(()=>{const _0x1eaeee=_0x2fea9b;try{_0x4ac797[_0x1eaeee(0x142)](_0x1eaeee(0x57c));}catch{}},_0x7c7904['timeoutMs']??0x1f40);_0x4ac797['stdout']?.['on'](_0x2fea9b(0x978),_0x3e7faf=>{const _0x246f62=_0x2fea9b;_0x58d1f2+=_0x3e7faf[_0x246f62(0x510)]();}),_0x4ac797['stderr']?.['on'](_0x2fea9b(0x978),_0x35b8be=>{const _0xc4e9b7=_0x2fea9b;_0xc4e9b7(0x4c4)!=='aqKWa'?_0x322b25+=_0x35b8be['toString']():_0x57fdb6['type']=_0x253814[_0xc4e9b7(0x1a1)];});let _0x51efeb=![];_0x4ac797['on'](_0x2fea9b(0x125),_0x158c9c=>{const _0x9881cd=_0x2fea9b;if(_0x51efeb)return;_0x51efeb=!![],clearTimeout(_0x9503b1),_0x330bc9({'code':0x7f,'stdout':_0x58d1f2,'stderr':_0x322b25+(_0x158c9c[_0x9881cd(0x92e)]??String(_0x158c9c))});}),_0x4ac797['on'](_0x2fea9b(0x41e),_0x1366a3=>{const _0x13a37a=_0x2fea9b;if(_0x13a37a(0x597)==='HHVEk'){if(_0x51efeb)return;_0x51efeb=!![],clearTimeout(_0x9503b1),_0x330bc9({'code':_0x1366a3??0x1,'stdout':_0x58d1f2,'stderr':_0x322b25});}else return'No\x20device\x20hardware\x20UDID\x20resolved\x20—\x20could\x20not\x20start\x20the\x20iproxy\x20bridge.';});});}function _0x351838(_0x3f9f6d){const _0x191051=_0x3ee7d6,_0x4f381d=(_0x3f9f6d??'')['trim']()['toLowerCase']();if(_0x4f381d==='device')return _0x191051(0x931);if(_0x4f381d===_0x191051(0x21f)||_0x4f381d==='sim')return _0x191051(0x21f);return _0x191051(0x4fa);}async function _0x5d4596(){const _0x872154=_0x3ee7d6,_0x4da80f=await _0x4afaa0('xcrun',['simctl','list',_0x872154(0x598),_0x872154(0x93b),'-j']);if(_0x4da80f[_0x872154(0x845)]!==0x0)return[];try{const _0x58c340=JSON['parse'](_0x4da80f[_0x872154(0x91a)]),_0x56080a=[],_0x13b580=_0x58c340['devices']??{};for(const [_0xa78e1f,_0xdb0830]of Object[_0x872154(0x6b0)](_0x13b580)){const _0x3c5945=_0xa78e1f['toLowerCase']()[_0x872154(0x83f)](_0x872154(0x5c2))||_0xa78e1f[_0x872154(0x17e)]()[_0x872154(0x83f)](_0x872154(0x623));if(!_0x3c5945)continue;if(!Array['isArray'](_0xdb0830))continue;for(const _0x48c6c1 of _0xdb0830){if(!_0x48c6c1[_0x872154(0x737)])continue;if((_0x48c6c1['state']??'')['toLowerCase']()!==_0x872154(0x93b))continue;_0x56080a[_0x872154(0x496)]({'udid':_0x48c6c1[_0x872154(0x737)],'name':_0x48c6c1[_0x872154(0x4d1)]??_0x48c6c1['udid'],'runtime':_0x48c6c1[_0x872154(0x6dc)]??_0xa78e1f});}}return _0x56080a;}catch{return[];}}function _0x31da21(_0x5b3513){const _0x488b44=_0x3ee7d6,_0x4639f6=/ServerURLHere->https?:\/\/[^:/\s]+:(\d{2,5})<-ServerURLHere/,_0xbc3e9d=_0x4639f6['exec'](_0x5b3513);if(!_0xbc3e9d)return null;const _0x38ad88=Number(_0xbc3e9d[0x1]);if(!Number[_0x488b44(0x996)](_0x38ad88)||_0x38ad88<0x1||_0x38ad88>0xffff)return null;return _0x38ad88;}var _0x5208c3=_0x3ee7d6(0x876);function _0x122f26(_0x4b211d){const _0x35fe11=_0x3ee7d6;return _0x35fe11(0x26b)+_0x4b211d;}var _0x5e82ea=class{['apps'];['readPreference'];['cached']=null;['cachedAt']=0x0;[_0x3ee7d6(0x170)];[_0x3ee7d6(0x14e)]=null;[_0x3ee7d6(0x8fb)]=0x0;['simulatorWdaPort']=null;[_0x3ee7d6(0x7e6)]=null;[_0x3ee7d6(0x6ba)]=null;['realDeviceHookFiredFor']=new Set();[_0x3ee7d6(0x1bc)]=new Map();['listBooted'];constructor(_0x3b1a65={}){const _0x4c22f2=_0x3ee7d6;this['apps']=_0x3b1a65[_0x4c22f2(0x7dd)]??null,this['readPreference']=_0x3b1a65['readPreference']??(()=>_0x351838(process.env.CERAPH_TARGET)),this[_0x4c22f2(0x170)]=_0x3b1a65[_0x4c22f2(0x170)]??0x1388,this[_0x4c22f2(0x9a7)]=_0x3b1a65[_0x4c22f2(0x9a7)]??_0x5d4596;}['setAppLifecycle'](_0x239ee7){const _0xed0318=_0x3ee7d6;this['apps']=_0x239ee7,this[_0xed0318(0x6f6)]=null,this['stateVersion']++;}['setSimulatorWdaPort'](_0x123d33,_0x32626c){const _0x1b4d6a=_0x3ee7d6;this[_0x1b4d6a(0x353)]=_0x123d33,this[_0x1b4d6a(0x7e6)]=_0x32626c,this[_0x1b4d6a(0x6f6)]=null,this[_0x1b4d6a(0x8fb)]++;}['clearSimulatorWdaPort'](){const _0x23b902=_0x3ee7d6;this['simulatorWdaPort']=null,this[_0x23b902(0x7e6)]=null,this[_0x23b902(0x6f6)]=null,this['stateVersion']++;}['getSimulatorWdaPort'](){const _0x37b6de=_0x3ee7d6;return this[_0x37b6de(0x353)];}['getSimulatorWdaUdid'](){return this['simulatorWdaUdid'];}['invalidate'](){const _0x5d8334=_0x3ee7d6;this[_0x5d8334(0x6f6)]=null,this[_0x5d8334(0x8fb)]++;}['setRealDeviceHook'](_0x2360ae){this['realDeviceHook']=_0x2360ae;}async['getBaseUrl'](){const _0xcb41fa=_0x3ee7d6,_0x1e40da=await this[_0xcb41fa(0x75f)]();return _0x1e40da[_0xcb41fa(0x3a9)];}async['getTarget'](){const _0xf5e8ca=await this['resolve']();return _0xf5e8ca['target'];}async['resolve'](){const _0x17c0f9=_0x3ee7d6;if(this['cached']&&this[_0x17c0f9(0x170)]>0x0&&Date['now']()-this[_0x17c0f9(0x604)]<this[_0x17c0f9(0x170)])return this[_0x17c0f9(0x6f6)];if(this['inflight'])return this[_0x17c0f9(0x14e)];const _0x88ca76=this[_0x17c0f9(0x8fb)],_0x3b20af=((async()=>{const _0xc09040=_0x17c0f9,_0x4a075a=this['readPreference']();if(_0x4a075a===_0xc09040(0x931)){const _0x256f74=await this['apps']?.['getUdid']()??null;return{'target':_0xc09040(0x931),'udid':_0x256f74,'baseUrl':_0x5208c3,'wdaReady':!![],'reason':'env-override-device'};}if(_0x4a075a===_0xc09040(0x21f)){const _0x144a11=await this[_0xc09040(0x9a7)](),_0x31a579=this['simulatorWdaUdid']?_0x144a11[_0xc09040(0x7bd)](_0x12c4af=>_0x12c4af['udid']===this[_0xc09040(0x7e6)])??_0x144a11[0x0]:_0x144a11[0x0],_0x19b0fe=_0x31a579?.[_0xc09040(0x737)]??this[_0xc09040(0x7e6)]??null,_0x5e5223=this['simulatorWdaUdid']!==null&&_0x144a11['some'](_0x35e4cf=>_0x35e4cf[_0xc09040(0x737)]===this['simulatorWdaUdid']),_0x41dc39=this['simulatorWdaPort']!==null&&this[_0xc09040(0x7e6)]!==null&&_0x5e5223&&_0x19b0fe===this[_0xc09040(0x7e6)];return{'target':'simulator','udid':_0x19b0fe,'baseUrl':_0x41dc39?_0x122f26(this['simulatorWdaPort']):_0x5208c3,'wdaReady':_0x41dc39,'reason':_0xc09040(0x4df)};}const [_0x233baf,_0x3fbbfc]=await Promise[_0xc09040(0x9a6)]([this['apps']?.['getUdid']()??Promise['resolve'](null),this['listBooted']()]);if(_0x233baf)return{'target':_0xc09040(0x931),'udid':_0x233baf,'baseUrl':_0x5208c3,'wdaReady':!![],'reason':'auto-prefer-device'};if(_0x3fbbfc['length']>0x0){const _0x1e0a8b=this[_0xc09040(0x7e6)]?_0x3fbbfc['find'](_0x55b563=>_0x55b563['udid']===this[_0xc09040(0x7e6)])??_0x3fbbfc[0x0]:_0x3fbbfc[0x0],_0x16d930=this['simulatorWdaUdid']!==null&&_0x3fbbfc['some'](_0x49243a=>_0x49243a[_0xc09040(0x737)]===this[_0xc09040(0x7e6)]),_0x1e5f8a=this['simulatorWdaPort']!==null&&this[_0xc09040(0x7e6)]!==null&&_0x16d930&&_0x1e0a8b['udid']===this['simulatorWdaUdid'];return{'target':'simulator','udid':_0x1e0a8b['udid'],'baseUrl':_0x1e5f8a?_0x122f26(this[_0xc09040(0x353)]):_0x5208c3,'wdaReady':_0x1e5f8a,'reason':_0xc09040(0x3b5)};}return{'target':'device','udid':null,'baseUrl':_0x5208c3,'wdaReady':!![],'reason':_0xc09040(0xd0)};})());this[_0x17c0f9(0x14e)]=_0x3b20af;try{const _0x26ac70=await _0x3b20af;this[_0x17c0f9(0x8fb)]===_0x88ca76&&(this['cached']=_0x26ac70,this['cachedAt']=Date['now']());if(this['realDeviceHook']&&_0x26ac70[_0x17c0f9(0x555)]==='device'&&_0x26ac70['udid']&&!this[_0x17c0f9(0x3be)][_0x17c0f9(0x21c)](_0x26ac70['udid'])&&!this['realDeviceHookInflight']['has'](_0x26ac70['udid'])){const _0xbcfafb=_0x26ac70[_0x17c0f9(0x737)];this['realDeviceHookFiredFor']['add'](_0xbcfafb);const _0x3c7855=Promise['resolve']()[_0x17c0f9(0x4cf)](()=>this[_0x17c0f9(0x6ba)]?.(_0x26ac70))['catch'](()=>{})['finally'](()=>{const _0x7ea2af=_0x17c0f9;this[_0x7ea2af(0x1bc)]['delete'](_0xbcfafb);});this[_0x17c0f9(0x1bc)][_0x17c0f9(0x3b6)](_0xbcfafb,_0x3c7855);}return _0x26ac70;}finally{this[_0x17c0f9(0x14e)]=null;}}async['__awaitRealDeviceHookForTests'](_0x3ad783){const _0x161ff0=_0x3ee7d6,_0x368836=this[_0x161ff0(0x1bc)]['get'](_0x3ad783);if(_0x368836)await _0x368836;}['reset'](){const _0x1cf5df=_0x3ee7d6;this[_0x1cf5df(0x6f6)]=null,this['inflight']=null,this[_0x1cf5df(0x353)]=null,this['simulatorWdaUdid']=null,this['realDeviceHookFiredFor']['clear'](),this['realDeviceHookInflight'][_0x1cf5df(0x165)](),this['stateVersion']++;}},_0x496720=0x1388,_0xfe777=class{['sessionId']=null;[_0x3ee7d6(0x5ad)]=null;['targetResolver'];['sessionBaseUrl']=null;[_0x3ee7d6(0x5a9)]=null;constructor(_0x63305c={}){const _0x2bf994=_0x3ee7d6;this[_0x2bf994(0x7cb)]=_0x63305c[_0x2bf994(0x7cb)]??new _0x5e82ea();}async[_0x3ee7d6(0x13a)](_0x5a28a1,_0xf87d0c,_0x4d213f){const _0x330d3b=_0x3ee7d6;if(this[_0x330d3b(0x5a9)]!==_0x330d3b(0x327)){const _0x4087ed=await this[_0x330d3b(0xf9)](_0x5a28a1,[{'type':'pointer','id':'finger1','parameters':{'pointerType':'touch'},'actions':this['buildTapPointerActions'](_0xf87d0c,_0x4d213f)}]);if(_0x4087ed)return this['tapTransport']='actions',{'ok':!![]};if(this[_0x330d3b(0x5a9)]==='actions')return{'ok':![],'error':_0x330d3b(0x6b9)};}const _0x57f004=await this['wdaFetch']('/session/'+_0x5a28a1+'/wda/tap/0',{'method':_0x330d3b(0x2a0),'body':JSON['stringify']({'x':_0xf87d0c,'y':_0x4d213f})});if(_0x57f004['ok'])return this['tapTransport']=_0x330d3b(0x327),{'ok':!![]};const _0x3853e2=await _0x57f004[_0x330d3b(0x5d9)]()[_0x330d3b(0x4ba)](()=>'unknown');return{'ok':![],'error':'WDA\x20tap\x20failed:\x20/actions\x20rejected\x20the\x20tap\x20and\x20legacy\x20/wda/tap/0\x20returned\x20'+_0x57f004[_0x330d3b(0x9d0)]+'\x20'+_0x3853e2};}async['snapshotTarget'](){const _0x1a1e63=_0x3ee7d6;try{const _0x586174=await this['targetResolver'][_0x1a1e63(0x75f)]();return{'baseUrl':_0x586174[_0x1a1e63(0x3a9)],'ready':_0x586174['wdaReady']};}catch{return{'baseUrl':_0x5208c3,'ready':!![]};}}async[_0x3ee7d6(0x5c6)](_0x5616cf,_0x4679cf,_0x53bb72={},_0x9dc694=_0x496720){const _0x296553=_0x3ee7d6,_0x53f928=''+_0x5616cf+_0x4679cf,_0x2c8b40=new AbortController(),_0x291858=setTimeout(()=>_0x2c8b40['abort'](),_0x9dc694);try{const _0x48e102=await fetch(_0x53f928,{..._0x53bb72,'signal':_0x2c8b40[_0x296553(0x294)],'headers':{'Content-Type':'application/json',..._0x53bb72['headers']}});return _0x48e102;}finally{clearTimeout(_0x291858);}}async['wdaFetch'](_0x5f0bb7,_0x347516={},_0x1885de=_0x496720){const _0x3c1577=_0x3ee7d6,_0x130b67=await this['snapshotTarget']();if(!_0x130b67[_0x3c1577(0x798)])throw new Error(_0x3c1577(0x358));const _0x238c25=this['sessionBaseUrl']??_0x130b67['baseUrl'];return this[_0x3c1577(0x5c6)](_0x238c25,_0x5f0bb7,_0x347516,_0x1885de);}async['currentBaseUrl'](){const _0x20ba56=_0x3ee7d6;if(this['sessionBaseUrl'])return this[_0x20ba56(0x8d2)];const _0x2e2ded=await this['snapshotTarget']();return _0x2e2ded[_0x20ba56(0x3a9)];}async[_0x3ee7d6(0x9b2)](){const _0x379149=_0x3ee7d6,_0x43fc33=await this[_0x379149(0x43f)]();if(!_0x43fc33['ready'])return![];try{const _0x474957=await this[_0x379149(0x5c6)](_0x43fc33[_0x379149(0x3a9)],'/status');return _0x474957['ok'];}catch{return![];}}async['ensureSession'](){const _0x27ec40=_0x3ee7d6,_0x5d6a0b=await this['snapshotTarget']();if(!_0x5d6a0b[_0x27ec40(0x798)])throw new Error(_0x27ec40(0x358));const _0x3598ae=_0x5d6a0b['baseUrl'];this['sessionBaseUrl']&&this[_0x27ec40(0x8d2)]!==_0x3598ae&&(this['sessionId']=null,this[_0x27ec40(0x5ad)]=null);this['sessionBaseUrl']=_0x3598ae;if(this[_0x27ec40(0x648)]){try{const _0x24e9e8=await this['wdaFetchAt'](_0x3598ae,_0x27ec40(0x932)+this[_0x27ec40(0x648)]);if(_0x24e9e8['ok'])return this[_0x27ec40(0x648)];}catch{}this['sessionId']=null;}try{const _0x346d56=await this['wdaFetchAt'](_0x3598ae,'/status');if(_0x346d56['ok']){const _0x5f7c91=await _0x346d56[_0x27ec40(0x732)](),_0x1f2123=_0x5f7c91[_0x27ec40(0x648)]||_0x5f7c91['value']?.['sessionId'];if(_0x1f2123)return this['sessionId']=_0x1f2123,_0x1f2123;}}catch{}const _0x32bae4=await this[_0x27ec40(0x5c6)](_0x3598ae,_0x27ec40(0x831),{'method':'POST','body':JSON['stringify']({'capabilities':{'alwaysMatch':{}}})});if(!_0x32bae4['ok']){const _0x215f9f=await _0x32bae4[_0x27ec40(0x5d9)]()[_0x27ec40(0x4ba)](()=>_0x27ec40(0x5bb));throw new Error('Failed\x20to\x20create\x20WDA\x20session:\x20'+_0x32bae4['status']+'\x20'+_0x215f9f);}const _0x457a19=await _0x32bae4['json'](),_0x10a0fb=_0x457a19['sessionId']||_0x457a19[_0x27ec40(0x84f)]?.['sessionId'];if(!_0x10a0fb)throw new Error('WDA\x20session\x20creation\x20succeeded\x20but\x20no\x20sessionId\x20returned');return this['sessionId']=_0x10a0fb,_0x10a0fb;}async['getPixelRatio'](){const _0x2647c9=_0x3ee7d6;if(this['pixelRatio'])return this['pixelRatio'];const _0x4a5bcf=await this[_0x2647c9(0x675)](),_0x1306a8=await this['wdaFetch'](_0x2647c9(0x932)+_0x4a5bcf+_0x2647c9(0x611));if(!_0x1306a8['ok'])throw new Error(_0x2647c9(0x92a)+_0x1306a8[_0x2647c9(0x9d0)]);const _0x1a689b=await _0x1306a8[_0x2647c9(0x732)](),_0x3ca857=_0x1a689b['value'][_0x2647c9(0x5e2)],_0x2b8161=await this['wdaFetch'](_0x2647c9(0x932)+_0x4a5bcf+'/screenshot');if(!_0x2b8161['ok'])return this[_0x2647c9(0x5ad)]=0x3,this[_0x2647c9(0x5ad)];const _0x33585c=await _0x2b8161['json'](),_0x3f7c2b=_0x33585c[_0x2647c9(0x84f)],_0x542fcf=Buffer[_0x2647c9(0x70f)](_0x3f7c2b,_0x2647c9(0x589));if(_0x542fcf[_0x2647c9(0x945)]<0x18)return this[_0x2647c9(0x5ad)]=0x3,this[_0x2647c9(0x5ad)];const _0x22372d=_0x542fcf['readUInt32BE'](0x10);return this[_0x2647c9(0x5ad)]=Math[_0x2647c9(0x23a)](_0x22372d/_0x3ca857),(this[_0x2647c9(0x5ad)]<0x1||this['pixelRatio']>0x4)&&(this['pixelRatio']=0x3),this[_0x2647c9(0x5ad)];}async[_0x3ee7d6(0x5a0)](){const _0x58d0d9=_0x3ee7d6,_0x37dc05=await this['ensureSession'](),_0x2a6072=await this['wdaFetch'](_0x58d0d9(0x932)+_0x37dc05+_0x58d0d9(0x611));if(!_0x2a6072['ok'])throw new Error(_0x58d0d9(0x92a)+_0x2a6072['status']);const _0x16429c=await _0x2a6072[_0x58d0d9(0x732)]();return _0x16429c['value'];}async[_0x3ee7d6(0x454)](_0x276169,_0x1dd7f4,_0x890adc=!![]){const _0x4811e5=_0x3ee7d6;try{const _0x3a33f7=await this['ensureSession'](),_0x59e30e=await this[_0x4811e5(0x5c9)](),_0x1ecabe=_0x890adc?_0x276169/_0x59e30e:_0x276169,_0x24ea78=_0x890adc?_0x1dd7f4/_0x59e30e:_0x1dd7f4,_0x69c86c=await this['tapAtPoint'](_0x3a33f7,_0x1ecabe,_0x24ea78);if(!_0x69c86c['ok']){if(_0x4811e5(0x95d)!=='eiqKQ')return{'success':![],'tappedAt':{'x':_0x1ecabe,'y':_0x24ea78},'pixelRatio':_0x59e30e,'correction':_0x890adc?'Divided\x20by\x20'+_0x59e30e+_0x4811e5(0x751)+_0x276169+','+_0x1dd7f4+')\x20->\x20('+_0x1ecabe[_0x4811e5(0x65d)](0x1)+','+_0x24ea78['toFixed'](0x1)+')':_0x4811e5(0x10e),'error':_0x69c86c[_0x4811e5(0x125)]??'WDA\x20tap\x20failed'};else _0x44d628={'title':_0x2457b4[_0x4811e5(0x449)][_0x4811e5(0x8b2)],'action':_0x26cf4d['dialog']['action']};}return{'success':!![],'tappedAt':{'x':_0x1ecabe,'y':_0x24ea78},'pixelRatio':_0x59e30e,'correction':_0x890adc?_0x4811e5(0x1d3)+_0x59e30e+'x:\x20('+_0x276169+','+_0x1dd7f4+')\x20->\x20('+_0x1ecabe['toFixed'](0x1)+','+_0x24ea78['toFixed'](0x1)+')':'No\x20correction\x20(device\x20coordinates)'};}catch(_0x15ee7c){return{'success':![],'tappedAt':{'x':_0x276169,'y':_0x1dd7f4},'pixelRatio':this['pixelRatio']??0x0,'correction':'Failed\x20before\x20correction\x20could\x20be\x20applied','error':_0x15ee7c instanceof Error?_0x15ee7c[_0x4811e5(0x92e)]:_0x4811e5(0x112)};}}async[_0x3ee7d6(0x94a)](_0x3632c8){const _0x2bfe56=_0x3ee7d6;try{const _0x12049d=await this['ensureSession'](),_0x4bf7c1=await this[_0x2bfe56(0x8aa)](_0x2bfe56(0x932)+_0x12049d+_0x2bfe56(0x980));if(!_0x4bf7c1['ok'])return{'success':![],'error':_0x2bfe56(0x3dc)+_0x4bf7c1['status']};const _0x277a72=await _0x4bf7c1['json'](),_0x3d4e81=_0x277a72['value'],_0x5f2b0f=this['searchElements'](_0x3d4e81,_0x3632c8);if(_0x5f2b0f['length']===0x0){const _0x295609=this['collectVisibleElements'](_0x3d4e81,0x32);return{'success':![],'matchCount':0x0,'availableElements':_0x295609,'error':_0x2bfe56(0x3c7)+JSON[_0x2bfe56(0x2c1)](_0x3632c8)};}const _0x3597dc=_0x3632c8['index']??0x0;if(_0x3597dc>=_0x5f2b0f[_0x2bfe56(0x945)])return{'success':![],'matchCount':_0x5f2b0f[_0x2bfe56(0x945)],'error':_0x2bfe56(0x138)+_0x3597dc+'\x20out\x20of\x20range.\x20Found\x20'+_0x5f2b0f['length']+'\x20matching\x20element(s).','availableElements':_0x5f2b0f['map'](_0x27bb6d=>({'type':_0x27bb6d[_0x2bfe56(0x85c)]??'unknown','label':_0x27bb6d['label']??'','text':String(_0x27bb6d[_0x2bfe56(0x84f)]??_0x27bb6d[_0x2bfe56(0x10d)]??'')}))};const _0x3a5ae8=_0x5f2b0f[_0x3597dc],_0x3d1bc9=_0x3a5ae8[_0x2bfe56(0x578)];if(!_0x3d1bc9)return{'success':![],'matchCount':_0x5f2b0f['length'],'error':'Matched\x20element\x20has\x20no\x20bounds/rect\x20information.'};const _0x56e5bd=_0x3d1bc9['x']+_0x3d1bc9['width']/0x2,_0x3278df=_0x3d1bc9['y']+_0x3d1bc9[_0x2bfe56(0x652)]/0x2,_0x2b291f=await this[_0x2bfe56(0x13a)](_0x12049d,_0x56e5bd,_0x3278df);if(!_0x2b291f['ok']){if('rLsdK'===_0x2bfe56(0x490))return{'success':![],'matchCount':_0x5f2b0f['length'],'error':_0x2b291f[_0x2bfe56(0x125)]??_0x2bfe56(0x56a),'element':{'type':_0x3a5ae8[_0x2bfe56(0x85c)]??_0x2bfe56(0x3de),'label':_0x3a5ae8['label']??_0x3a5ae8['name']??'','bounds':_0x3d1bc9},'tappedAt':{'x':_0x56e5bd,'y':_0x3278df}};else{const _0x1ad5c1=_0x278220??_0x482d08;_0x1ad5c1&&_0x146b5e['push']({'bundleId':_0x1ad5c1,'name':_0x190b2c??_0x2bc2ae??_0x1ad5c1,'version':_0x192746??_0x4926c8??void 0x0}),_0x140255=![],_0x1f7c06=null,_0x53d05f=null,_0xb469b6=null,_0x5d9d9a=null,_0x2b5325=null,_0x4f056e=null;}}return{'success':!![],'matchCount':_0x5f2b0f['length'],'element':{'type':_0x3a5ae8[_0x2bfe56(0x85c)]??'unknown','label':_0x3a5ae8[_0x2bfe56(0x10d)]??_0x3a5ae8[_0x2bfe56(0x4d1)]??'','bounds':_0x3d1bc9},'tappedAt':{'x':_0x56e5bd,'y':_0x3278df}};}catch(_0x2fe53e){return{'success':![],'error':_0x2fe53e instanceof Error?_0x2fe53e['message']:_0x2bfe56(0x3f6)};}}async[_0x3ee7d6(0x879)](_0x14e829){const _0x4406fa=_0x3ee7d6;try{const _0x55a8f0=await this['ensureSession'](),_0x3831a6=await this[_0x4406fa(0x8aa)]('/session/'+_0x55a8f0+'/source?format=json');if(!_0x3831a6['ok'])return{'success':![],'error':_0x4406fa(0x3dc)+_0x3831a6[_0x4406fa(0x9d0)]};const _0x3dc8c7=await _0x3831a6[_0x4406fa(0x732)](),_0x3b737c=this[_0x4406fa(0x25b)](_0x3dc8c7[_0x4406fa(0x84f)],_0x14e829);if(_0x3b737c['length']===0x0)return{'success':![],'matchCount':0x0};const _0x3bca20=_0x14e829[_0x4406fa(0x1c4)]??0x0;if(_0x3bca20>=_0x3b737c[_0x4406fa(0x945)])return{'success':![],'matchCount':_0x3b737c['length']};return{'success':!![],'element':_0x3b737c[_0x3bca20],'matchCount':_0x3b737c[_0x4406fa(0x945)]};}catch(_0x491228){return{'success':![],'error':_0x491228 instanceof Error?_0x491228['message']:'Unknown\x20error\x20during\x20findElement'};}}async[_0x3ee7d6(0x81d)](_0x4cf73b){const _0x2827f1=_0x3ee7d6;try{const _0x2f16ed=await this[_0x2827f1(0x675)](),_0x4d7969=await this[_0x2827f1(0x5a0)](),_0x54ef67=await this['getPixelRatio'](),_0x32a9a5=(_0x4cf73b['coordinateSource']??_0x2827f1(0x931))==='screenshot';let _0x20866e=_0x4cf73b[_0x2827f1(0x70f)]?.['x']??_0x4d7969['width']/0x2,_0x4517a0=_0x4cf73b['from']?.['y']??_0x4d7969[_0x2827f1(0x652)]/0x2;_0x32a9a5&&(_0x20866e=_0x20866e/_0x54ef67,_0x4517a0=_0x4517a0/_0x54ef67);const _0x4a755a=_0x4cf73b['direction']==='up'||_0x4cf73b['direction']===_0x2827f1(0x622)?_0x4d7969['height']:_0x4d7969[_0x2827f1(0x5e2)],_0x59164d=_0x4cf73b[_0x2827f1(0x24f)]??Math[_0x2827f1(0x31a)](_0x4a755a*0.6);let _0x3ff6a4=_0x20866e,_0x2af101=_0x4517a0;switch(_0x4cf73b['direction']){case'up':_0x2af101=_0x4517a0-_0x59164d;break;case _0x2827f1(0x622):_0x2af101=_0x4517a0+_0x59164d;break;case _0x2827f1(0x401):_0x3ff6a4=_0x20866e-_0x59164d;break;case _0x2827f1(0x16a):_0x3ff6a4=_0x20866e+_0x59164d;break;}_0x3ff6a4=Math['max'](0x0,Math[_0x2827f1(0x71d)](_0x4d7969[_0x2827f1(0x5e2)]-0x1,_0x3ff6a4)),_0x2af101=Math['max'](0x0,Math['min'](_0x4d7969['height']-0x1,_0x2af101)),_0x20866e=Math['max'](0x0,Math[_0x2827f1(0x71d)](_0x4d7969[_0x2827f1(0x5e2)]-0x1,_0x20866e)),_0x4517a0=Math['max'](0x0,Math[_0x2827f1(0x71d)](_0x4d7969['height']-0x1,_0x4517a0));const _0xc1b673=_0x4cf73b[_0x2827f1(0x8ad)]??0x12c,_0x1ad341=await this[_0x2827f1(0x8aa)](_0x2827f1(0x932)+_0x2f16ed+'/wda/dragfromtoforduration',{'method':_0x2827f1(0x2a0),'body':JSON['stringify']({'fromX':_0x20866e,'fromY':_0x4517a0,'toX':_0x3ff6a4,'toY':_0x2af101,'duration':_0xc1b673/0x3e8})});if(!_0x1ad341['ok']){const _0x1f3ed5=await _0x1ad341[_0x2827f1(0x5d9)]()[_0x2827f1(0x4ba)](()=>'unknown');return{'success':![],'from':{'x':_0x20866e,'y':_0x4517a0},'to':{'x':_0x3ff6a4,'y':_0x2af101},'durationMs':_0xc1b673,'error':'WDA\x20swipe\x20failed:\x20'+_0x1ad341['status']+'\x20'+_0x1f3ed5};}return{'success':!![],'from':{'x':_0x20866e,'y':_0x4517a0},'to':{'x':_0x3ff6a4,'y':_0x2af101},'durationMs':_0xc1b673};}catch(_0x210062){return{'success':![],'from':{'x':0x0,'y':0x0},'to':{'x':0x0,'y':0x0},'durationMs':_0x4cf73b[_0x2827f1(0x8ad)]??0x12c,'error':_0x210062 instanceof Error?_0x210062[_0x2827f1(0x92e)]:'Unknown\x20error\x20during\x20swipe'};}}async['scrollToElement'](_0x843e62,_0x31fc48={}){const _0x4b1fac=_0x3ee7d6,_0x8172c4=_0x31fc48['maxSwipes']??0xa,_0x3a1ddb=_0x31fc48[_0x4b1fac(0x41f)]??'up';let _0x480706=void 0x0;for(let _0x37e5c3=0x0;_0x37e5c3<=_0x8172c4;_0x37e5c3++){const _0x19a6b0=await this[_0x4b1fac(0x879)](_0x843e62);if(_0x19a6b0[_0x4b1fac(0x42d)]&&_0x19a6b0['element']?.['rect'])return{'success':!![],'swipes':_0x37e5c3,'element':{'type':_0x19a6b0[_0x4b1fac(0x8ff)]['type']??_0x4b1fac(0x3de),'label':_0x19a6b0['element'][_0x4b1fac(0x10d)]??_0x19a6b0[_0x4b1fac(0x8ff)]['name']??'','bounds':_0x19a6b0['element'][_0x4b1fac(0x578)]}};if(_0x19a6b0[_0x4b1fac(0x362)]!==void 0x0){if(_0x4b1fac(0x45a)!==_0x4b1fac(0x45a)){const _0x1aa9f5=/ServerURLHere->https?:\/\/[^:/\s]+:(\d{2,5})<-ServerURLHere/,_0x4a3bcf=_0x1aa9f5[_0x4b1fac(0x66c)](_0x569cda);if(!_0x4a3bcf)return null;const _0x40e841=_0x4a2f9c(_0x4a3bcf[0x1]);if(!_0x575ece[_0x4b1fac(0x996)](_0x40e841)||_0x40e841<0x1||_0x40e841>0xffff)return null;return _0x40e841;}else _0x480706=_0x480706===void 0x0?_0x19a6b0[_0x4b1fac(0x362)]:Math['max'](_0x480706,_0x19a6b0[_0x4b1fac(0x362)]);}if(_0x37e5c3===_0x8172c4)break;const _0x3c5a60=await this['swipe']({'direction':_0x3a1ddb,'distancePx':_0x31fc48[_0x4b1fac(0x24f)]});if(!_0x3c5a60['success'])return{'success':![],'swipes':_0x37e5c3,'error':_0x3c5a60[_0x4b1fac(0x125)]??'Swipe\x20failed\x20during\x20scrollToElement'};}return{'success':![],'swipes':_0x8172c4,'matchCount':_0x480706,'error':_0x4b1fac(0x645)+_0x8172c4+_0x4b1fac(0x3cc)+JSON[_0x4b1fac(0x2c1)](_0x843e62)};}async['longPress'](_0x375202,_0x575103,_0x37c1d1=0x3e8,_0x3a0d47=![]){const _0x4775b3=_0x3ee7d6;try{const _0x480b49=await this[_0x4775b3(0x675)]();let _0x57f8a3=_0x375202,_0x11e41c=_0x575103;if(_0x3a0d47){const _0x18050b=await this['getPixelRatio']();_0x57f8a3=_0x375202/_0x18050b,_0x11e41c=_0x575103/_0x18050b;}const _0x114e28=await this['wdaFetch']('/session/'+_0x480b49+'/wda/touchAndHold',{'method':'POST','body':JSON[_0x4775b3(0x2c1)]({'x':_0x57f8a3,'y':_0x11e41c,'duration':_0x37c1d1/0x3e8})});if(!_0x114e28['ok']){const _0x171514=await _0x114e28[_0x4775b3(0x5d9)]()['catch'](()=>_0x4775b3(0x3de));return{'success':![],'error':_0x4775b3(0x2ae)+_0x114e28[_0x4775b3(0x9d0)]+'\x20'+_0x171514};}return{'success':!![],'details':{'x':_0x57f8a3,'y':_0x11e41c,'durationMs':_0x37c1d1}};}catch(_0x32ddad){return{'success':![],'error':_0x32ddad instanceof Error?_0x32ddad['message']:_0x4775b3(0x873)};}}async[_0x3ee7d6(0x5f7)](_0x5345d6,_0x1ca2c7=0x3e8){const _0x2df8af=_0x3ee7d6,_0x2460ba=await this['findElement'](_0x5345d6);if(!_0x2460ba['success']||!_0x2460ba['element']?.['rect'])return'ZDZcX'==='ZDZcX'?{'success':![],'matchCount':_0x2460ba['matchCount'],'error':_0x2460ba['error']??'No\x20element\x20found\x20matching\x20'+JSON['stringify'](_0x5345d6)}:{'objective':{'kind':_0x2df8af(0x117),'message':_0x599345[_0x2df8af(0x92e)],'detail':_0x190688[_0x2df8af(0x209)]||void 0x0,'flowId':_0xb7aab3}};const _0x403f14=_0x2460ba['element']['rect'],_0x3bd148=_0x403f14['x']+_0x403f14[_0x2df8af(0x5e2)]/0x2,_0x1bbe02=_0x403f14['y']+_0x403f14['height']/0x2,_0x3b5be8=await this['longPress'](_0x3bd148,_0x1bbe02,_0x1ca2c7,![]);return{..._0x3b5be8,'matchCount':_0x2460ba[_0x2df8af(0x362)],'element':{'type':_0x2460ba['element'][_0x2df8af(0x85c)]??_0x2df8af(0x3de),'label':_0x2460ba['element']['label']??_0x2460ba['element']['name']??'','bounds':_0x403f14}};}async['type'](_0x239ad5,_0xee9346={}){const _0x57c03f=_0x3ee7d6;try{const _0x494884=await this['ensureSession'](),_0x2a2e91=Array[_0x57c03f(0x70f)](_0x239ad5),_0x4ef325=await this[_0x57c03f(0x8aa)]('/session/'+_0x494884+_0x57c03f(0x858),{'method':'POST','body':JSON[_0x57c03f(0x2c1)]({'value':_0x2a2e91})});if(!_0x4ef325['ok']){const _0x23cfea=await _0x4ef325[_0x57c03f(0x5d9)]()['catch'](()=>_0x57c03f(0x3de));return{'success':![],'error':'WDA\x20keys\x20failed:\x20'+_0x4ef325['status']+'\x20'+_0x23cfea};}return _0xee9346[_0x57c03f(0x36f)]&&await this[_0x57c03f(0x8aa)]('/session/'+_0x494884+'/wda/keys',{'method':'POST','body':JSON['stringify']({'value':['\x0a']})})[_0x57c03f(0x4ba)](()=>void 0x0),{'success':!![]};}catch(_0x20818b){return _0x57c03f(0x782)===_0x57c03f(0x782)?{'success':![],'error':_0x20818b instanceof Error?_0x20818b[_0x57c03f(0x92e)]:_0x57c03f(0x997)}:{'name':_0x57c03f(0x36b),'status':_0x57c03f(0x125),'details':{'error':_0x48f15c(_0x373d27)}};}}async[_0x3ee7d6(0x425)](_0x41a208){const _0x26f2f7=_0x3ee7d6;try{const _0x1e9b01=await this[_0x26f2f7(0x879)](_0x41a208);if(!_0x1e9b01['success']||!_0x1e9b01[_0x26f2f7(0x8ff)]?.['rect'])return{'success':![],'error':_0x1e9b01[_0x26f2f7(0x125)]??'No\x20element\x20found\x20matching\x20'+JSON['stringify'](_0x41a208)};const _0x11c2f4=_0x1e9b01['element']['rect'],_0x838264=String(_0x1e9b01['element'][_0x26f2f7(0x84f)]??'');if(_0x838264[_0x26f2f7(0x945)]===0x0)return _0x26f2f7(0x1ac)!=='Npsvi'?_0x26f2f7(0x87d):{'success':!![]};const _0x34add2=await this['tap'](_0x11c2f4['x']+_0x11c2f4['width']/0x2,_0x11c2f4['y']+_0x11c2f4[_0x26f2f7(0x652)]/0x2,![]);if(!_0x34add2[_0x26f2f7(0x42d)])return{'success':![],'error':_0x34add2[_0x26f2f7(0x125)]??_0x26f2f7(0x393)};const _0x204ee8=new Array(_0x838264['length'])['fill'](''),_0x29d609=await this['ensureSession'](),_0x52e27d=await this[_0x26f2f7(0x8aa)]('/session/'+_0x29d609+'/wda/keys',{'method':_0x26f2f7(0x2a0),'body':JSON['stringify']({'value':_0x204ee8})});if(!_0x52e27d['ok']){const _0x3da985=await _0x52e27d['text']()[_0x26f2f7(0x4ba)](()=>_0x26f2f7(0x3de));return{'success':![],'error':_0x26f2f7(0x2c6)+_0x52e27d['status']+'\x20'+_0x3da985};}return{'success':!![],'details':{'cleared':_0x838264[_0x26f2f7(0x945)]}};}catch(_0x15eb50){return{'success':![],'error':_0x15eb50 instanceof Error?_0x15eb50['message']:_0x26f2f7(0x590)};}}async['pressKey'](_0x21ccf3){const _0x5383eb=_0x3ee7d6;try{const _0x186f87=await this['ensureSession']();if(_0x21ccf3==='lock'){const _0x4067e1=await this[_0x5383eb(0x8aa)]('/session/'+_0x186f87+_0x5383eb(0x79d),{'method':_0x5383eb(0x2a0),'body':JSON[_0x5383eb(0x2c1)]({})});if(!_0x4067e1['ok']){const _0x310856=await _0x4067e1['text']()[_0x5383eb(0x4ba)](()=>_0x5383eb(0x3de));return{'success':![],'error':'WDA\x20lock\x20failed:\x20'+_0x4067e1[_0x5383eb(0x9d0)]+'\x20'+_0x310856};}return{'success':!![]};}if(_0x21ccf3===_0x5383eb(0x83e))return await this[_0x5383eb(0x2fc)]();if(_0x21ccf3!=='home'&&_0x21ccf3!==_0x5383eb(0x5ea)&&_0x21ccf3!=='volumeDown')return{'success':![],'error':_0x5383eb(0x630)+String(_0x21ccf3)};const _0xf088a2=_0x21ccf3===_0x5383eb(0x2dd)?'home':_0x21ccf3===_0x5383eb(0x5ea)?'volumeup':'volumedown',_0x5393b8=await this['wdaFetch']('/session/'+_0x186f87+'/wda/pressButton',{'method':_0x5383eb(0x2a0),'body':JSON[_0x5383eb(0x2c1)]({'name':_0xf088a2})});if(!_0x5393b8['ok']){const _0x53ebc5=await _0x5393b8[_0x5383eb(0x5d9)]()['catch'](()=>'unknown');return{'success':![],'error':_0x5383eb(0x7ad)+_0x5393b8[_0x5383eb(0x9d0)]+'\x20'+_0x53ebc5};}return{'success':!![]};}catch(_0x5691b6){return{'success':![],'error':_0x5691b6 instanceof Error?_0x5691b6[_0x5383eb(0x92e)]:'Unknown\x20error\x20during\x20pressKey'};}}async['_systemBack'](){const _0x410541=_0x3ee7d6,_0x1aaff3=await this[_0x410541(0x4d7)]();if(_0x1aaff3){const _0x17447c=_0x1aaff3['x']+_0x1aaff3[_0x410541(0x5e2)]/0x2,_0x1cc5bc=_0x1aaff3['y']+_0x1aaff3[_0x410541(0x652)]/0x2,_0x2554df=await this['ensureSession'](),_0x37c2d2=await this['tapAtPoint'](_0x2554df,_0x17447c,_0x1cc5bc);if(_0x37c2d2['ok'])return{'success':!![],'details':{'method':_0x410541(0x545),'tappedAt':{'x':_0x17447c,'y':_0x1cc5bc}}};}const _0x2555df=await this['getWindowSize'](),_0x45f1aa=await this['swipe']({'direction':'right','from':{'x':0x0,'y':Math[_0x410541(0x31a)](_0x2555df[_0x410541(0x652)]/0x2)},'coordinateSource':'device'});return{'success':_0x45f1aa[_0x410541(0x42d)],'error':_0x45f1aa['error'],'details':{'method':'edge-swipe','from':_0x45f1aa['from'],'to':_0x45f1aa['to']}};}async['_findNavBarBackButton'](){const _0x541c74=_0x3ee7d6,_0x383821=await this['getSource']();if(!_0x383821['success']||!_0x383821['source'])return null;const _0xd8743e=await this[_0x541c74(0x5a0)](),_0x143fae=_0xd8743e[_0x541c74(0x5e2)]/0x2,_0x11715d=0x8c,_0x1195d9=[],_0x51b5c6=_0x22d6e8=>{const _0x3ff798=_0x541c74,_0x3522c3=String(_0x22d6e8[_0x3ff798(0x85c)]??''),_0x1dd7eb=_0x22d6e8['rect'],_0x7316ae=_0x3522c3[_0x3ff798(0x17e)]()[_0x3ff798(0x83f)]('button');if(_0x7316ae&&_0x1dd7eb&&typeof _0x1dd7eb['x']===_0x3ff798(0x513)){const _0x19c5e9=_0x1dd7eb['x']<_0x143fae&&_0x1dd7eb['y']<_0x11715d;if(_0x19c5e9&&_0x1dd7eb['width']>0x0&&_0x1dd7eb['height']>0x0){const _0x4e5d96=String(_0x22d6e8['label']??_0x22d6e8[_0x3ff798(0x4d1)]??'')[_0x3ff798(0x17e)]();_0x1195d9[_0x3ff798(0x496)]({'rect':_0x1dd7eb,'labelledBack':_0x4e5d96[_0x3ff798(0x83f)]('back')});}}const _0x21f16c=_0x22d6e8[_0x3ff798(0x9c3)];if(Array[_0x3ff798(0x246)](_0x21f16c)){for(const _0x569e1f of _0x21f16c)_0x51b5c6(_0x569e1f);}};_0x51b5c6(_0x383821[_0x541c74(0x827)]);if(_0x1195d9[_0x541c74(0x945)]===0x0)return null;return _0x1195d9[_0x541c74(0x837)]((_0x64f60b,_0x55af1c)=>{const _0x19883e=_0x541c74;if(_0x64f60b[_0x19883e(0x159)]!==_0x55af1c[_0x19883e(0x159)])return _0x64f60b['labelledBack']?-0x1:0x1;if(_0x64f60b['rect']['x']!==_0x55af1c['rect']['x'])return _0x64f60b[_0x19883e(0x578)]['x']-_0x55af1c['rect']['x'];return _0x64f60b[_0x19883e(0x578)]['y']-_0x55af1c['rect']['y'];}),_0x1195d9[0x0]['rect'];}async[_0x3ee7d6(0x463)](){const _0x14faf4=_0x3ee7d6;try{const _0x5182f5=await this[_0x14faf4(0x675)](),_0x1ba54f=await this[_0x14faf4(0x8aa)](_0x14faf4(0x932)+_0x5182f5+_0x14faf4(0x77a),{'method':_0x14faf4(0x2a0),'body':JSON['stringify']({})});if(!_0x1ba54f['ok']){const _0x2c59ce=await _0x1ba54f['text']()['catch'](()=>'unknown');return{'success':![],'error':'WDA\x20unlock\x20failed:\x20'+_0x1ba54f['status']+'\x20'+_0x2c59ce};}return{'success':!![]};}catch(_0x48041e){return{'success':![],'error':_0x48041e instanceof Error?_0x48041e['message']:'Unknown\x20error\x20during\x20unlock'};}}async['isLocked'](){const _0x45eae6=_0x3ee7d6;try{const _0x461a86=await this['ensureSession'](),_0x13ceed=await this['wdaFetch']('/session/'+_0x461a86+'/wda/locked');if(!_0x13ceed['ok'])return null;const _0x50be6f=await _0x13ceed[_0x45eae6(0x732)]();return typeof _0x50be6f['value']===_0x45eae6(0x715)?_0x50be6f[_0x45eae6(0x84f)]:null;}catch{return null;}}async[_0x3ee7d6(0x863)](){const _0x3b558f=_0x3ee7d6;try{const _0xad89de=await this[_0x3b558f(0x675)](),_0xb5c890=await this['wdaFetch'](_0x3b558f(0x932)+_0xad89de+_0x3b558f(0x817));if(!_0xb5c890['ok']){const _0x2dce30=await _0xb5c890[_0x3b558f(0x5d9)]()['catch'](()=>'unknown');return{'success':![],'error':_0x3b558f(0x2b2)+_0xb5c890[_0x3b558f(0x9d0)]+'\x20'+_0x2dce30};}const _0xb53de0=await _0xb5c890[_0x3b558f(0x732)]();return{'success':!![],'base64':_0xb53de0['value']};}catch(_0x2decad){return{'success':![],'error':_0x2decad instanceof Error?_0x2decad['message']:'Unknown\x20error\x20during\x20screenshot'};}}async[_0x3ee7d6(0x8c5)](){const _0x2a5c4b=_0x3ee7d6;try{const _0x4d8bae=await this[_0x2a5c4b(0x675)](),_0xc8f643=await this['wdaFetch']('/session/'+_0x4d8bae+'/source?format=json');if(!_0xc8f643['ok']){const _0x3cc190=await _0xc8f643[_0x2a5c4b(0x5d9)]()[_0x2a5c4b(0x4ba)](()=>'unknown');return{'success':![],'error':'WDA\x20source\x20failed:\x20'+_0xc8f643['status']+'\x20'+_0x3cc190};}const _0x4879bc=await _0xc8f643['json']();return{'success':!![],'source':_0x4879bc['value']};}catch(_0x146de8){if('GAImB'==='GAImB')return{'success':![],'error':_0x146de8 instanceof Error?_0x146de8[_0x2a5c4b(0x92e)]:_0x2a5c4b(0x804)};else throw new _0x5b2701('invalid-subdir',_0x2a5c4b(0x25d)+_0x36c132+_0x2a5c4b(0x470),_0x2a5c4b(0x68d));}}async['waitFor'](_0x50d908,_0x4b31d4={}){const _0x2c00bd=_0x3ee7d6,_0x31990a=_0x4b31d4[_0x2c00bd(0x5aa)]??0x1388,_0x415c4f=_0x4b31d4[_0x2c00bd(0x31e)]??0x96,_0x48bf67=_0x4b31d4[_0x2c00bd(0x44b)]??![],_0xbf956d=Date[_0x2c00bd(0x3d1)]();while(Date['now']()-_0xbf956d<_0x31990a){const _0x29b9b4=await this['findElement'](_0x50d908),_0x2170af=_0x29b9b4[_0x2c00bd(0x42d)]&&!!_0x29b9b4['element'];if(!_0x48bf67&&_0x2170af){if('xMaug'!==_0x2c00bd(0x566)){const _0x239877=_0x29b9b4[_0x2c00bd(0x8ff)][_0x2c00bd(0x578)];return{'success':!![],'found':!![],'elapsedMs':Date['now']()-_0xbf956d,'element':_0x239877?{'type':_0x29b9b4['element'][_0x2c00bd(0x85c)]??'unknown','label':_0x29b9b4[_0x2c00bd(0x8ff)]['label']??_0x29b9b4[_0x2c00bd(0x8ff)][_0x2c00bd(0x4d1)]??'','bounds':_0x239877}:void 0x0};}else return _0x3edf67('componentControl:\x20controlShape\x20must\x20be\x20one\x20of\x20\x22boolean-prop\x22|\x22ref-imperative\x22|\x22render-prop\x22\x20(got\x20'+_0x45c880['stringify'](_0x484ab7)+')'),null;}if(_0x48bf67&&!_0x2170af)return{'success':!![],'found':![],'elapsedMs':Date[_0x2c00bd(0x3d1)]()-_0xbf956d};await new Promise(_0x406083=>setTimeout(_0x406083,_0x415c4f));}return{'success':![],'found':!_0x48bf67,'elapsedMs':Date[_0x2c00bd(0x3d1)]()-_0xbf956d,'error':_0x48bf67?'Element\x20still\x20visible\x20after\x20'+_0x31990a+'ms:\x20'+JSON['stringify'](_0x50d908):'Element\x20not\x20visible\x20after\x20'+_0x31990a+'ms:\x20'+JSON['stringify'](_0x50d908)};}async['assertVisible'](_0x7200ab){const _0x160971=_0x3ee7d6,_0x18c746=await this['findElement'](_0x7200ab);if(_0x18c746['error'])return{'success':![],'visible':![],'error':_0x18c746['error']};if(_0x18c746['success']&&_0x18c746['element']?.['rect'])return{'success':!![],'visible':!![],'element':{'type':_0x18c746['element'][_0x160971(0x85c)]??_0x160971(0x3de),'label':_0x18c746[_0x160971(0x8ff)][_0x160971(0x10d)]??_0x18c746['element'][_0x160971(0x4d1)]??'','bounds':_0x18c746['element']['rect']}};return{'success':!![],'visible':![]};}async['assertNotVisible'](_0x53a383){const _0x41a6ca=_0x3ee7d6,_0x56d26c=await this[_0x41a6ca(0x879)](_0x53a383);if(_0x56d26c['error']){if(_0x41a6ca(0x9eb)==='INQzZ')_0x17f66e['accessibilityLabel']=_0x1bde82['into']['accessibilityLabel'];else return{'success':![],'visible':![],'error':_0x56d26c[_0x41a6ca(0x125)]};}const _0x154ceb=_0x56d26c['success']&&!!_0x56d26c[_0x41a6ca(0x8ff)];return{'success':!![],'visible':_0x154ceb};}async[_0x3ee7d6(0x771)](_0xa4fa45){const _0x16396b=_0x3ee7d6;try{const _0x51cd0f=_0xa4fa45??await this['ensureSession'](),_0x72c04a=await this['wdaFetch'](_0x16396b(0x932)+_0x51cd0f+'/source?format=json');if(!_0x72c04a['ok']){if(!_0xa4fa45){this[_0x16396b(0x648)]=null;const _0x562fd8=await this[_0x16396b(0x675)](),_0x22edcf=await this[_0x16396b(0x8aa)]('/session/'+_0x562fd8+'/source?format=json');if(!_0x22edcf['ok'])return null;const _0x4846ea=await _0x22edcf[_0x16396b(0x732)]();return _0x4846ea[_0x16396b(0x84f)]??null;}return null;}const _0x14db42=await _0x72c04a[_0x16396b(0x732)]();return _0x14db42[_0x16396b(0x84f)]??null;}catch{return null;}}[_0x3ee7d6(0x6a3)](_0x353ba6,_0x3811e2){return this['searchElements'](_0x353ba6,_0x3811e2);}async[_0x3ee7d6(0x15c)](_0x513a8c){const _0x3d6b53=_0x3ee7d6;try{const _0x4e3bd5=await this[_0x3d6b53(0x675)](),_0x17e2a1=await this['fetchSourceTree'](_0x4e3bd5);if(!_0x17e2a1)return{'result':{'success':![],'error':_0x3d6b53(0x883)},'tree':null};const _0x1e9279=this[_0x3d6b53(0x25b)](_0x17e2a1,_0x513a8c);if(_0x1e9279['length']===0x0){const _0x502338=this['collectVisibleElements'](_0x17e2a1,0x32);return{'result':{'success':![],'matchCount':0x0,'availableElements':_0x502338,'error':_0x3d6b53(0x3c7)+JSON['stringify'](_0x513a8c)},'tree':_0x17e2a1};}const _0x8a5141=_0x513a8c['index']??0x0;if(_0x8a5141>=_0x1e9279[_0x3d6b53(0x945)]){if('LDYbK'!=='exPhb')return{'result':{'success':![],'matchCount':_0x1e9279[_0x3d6b53(0x945)],'error':'Index\x20'+_0x8a5141+'\x20out\x20of\x20range.\x20Found\x20'+_0x1e9279['length']+'\x20matching\x20element(s).','availableElements':_0x1e9279[_0x3d6b53(0x986)](_0x51d3aa=>({'type':_0x51d3aa['type']??'unknown','label':_0x51d3aa[_0x3d6b53(0x10d)]??'','text':String(_0x51d3aa['value']??_0x51d3aa['label']??'')}))},'tree':_0x17e2a1};else _0x4eeb39=_0x540038['parse'](_0x2a8fd1);}const _0x4d14c8=_0x1e9279[_0x8a5141],_0x1625dc=_0x4d14c8[_0x3d6b53(0x578)];if(!_0x1625dc)return{'result':{'success':![],'matchCount':_0x1e9279['length'],'error':_0x3d6b53(0x5ce)},'tree':_0x17e2a1};const _0x2fc9b3=_0x1625dc['x']+_0x1625dc['width']/0x2,_0x52960d=_0x1625dc['y']+_0x1625dc[_0x3d6b53(0x652)]/0x2,_0x7cf81=await this[_0x3d6b53(0x13a)](_0x4e3bd5,_0x2fc9b3,_0x52960d);if(!_0x7cf81['ok'])return{'result':{'success':![],'matchCount':_0x1e9279[_0x3d6b53(0x945)],'error':_0x7cf81[_0x3d6b53(0x125)]??_0x3d6b53(0x56a),'element':{'type':_0x4d14c8[_0x3d6b53(0x85c)]??_0x3d6b53(0x3de),'label':_0x4d14c8[_0x3d6b53(0x10d)]??_0x4d14c8['name']??'','bounds':_0x1625dc},'tappedAt':{'x':_0x2fc9b3,'y':_0x52960d}},'tree':_0x17e2a1};return{'result':{'success':!![],'matchCount':_0x1e9279[_0x3d6b53(0x945)],'element':{'type':_0x4d14c8['type']??'unknown','label':_0x4d14c8[_0x3d6b53(0x10d)]??_0x4d14c8['name']??'','bounds':_0x1625dc},'tappedAt':{'x':_0x2fc9b3,'y':_0x52960d}},'tree':_0x17e2a1};}catch(_0x419f7d){return{'result':{'success':![],'error':_0x419f7d instanceof Error?_0x419f7d['message']:_0x3d6b53(0x35c)},'tree':null};}}async['sendW3CActions'](_0x5bed6e,_0x419fc8){const _0x17638c=_0x3ee7d6;try{const _0x709bc3=await this[_0x17638c(0x8aa)](_0x17638c(0x932)+_0x5bed6e+_0x17638c(0x457),{'method':'POST','body':JSON[_0x17638c(0x2c1)]({'actions':_0x419fc8})});return _0x709bc3['ok'];}catch{return![];}}['buildTapPointerActions'](_0x590f41,_0x55e006){const _0x411762=_0x3ee7d6;return[{'type':'pointerMove','duration':0x0,'x':_0x590f41,'y':_0x55e006},{'type':'pointerDown','button':0x0},{'type':_0x411762(0x133),'duration':0x32},{'type':_0x411762(0x1a9),'button':0x0}];}async[_0x3ee7d6(0x7f9)](_0x327309,_0x4eedac={}){const _0x10674f=_0x3ee7d6;try{const _0x3e1e56=_0x4eedac[_0x10674f(0x648)]??await this[_0x10674f(0x675)](),_0x1ef62=await this['fetchSourceTree'](_0x3e1e56);if(!_0x1ef62)return{'success':![],'error':_0x10674f(0x883),'batched':![]};const _0x5c3519=this['searchElements'](_0x1ef62,_0x327309);if(_0x5c3519['length']===0x0)return{'success':![],'error':'No\x20element\x20found\x20matching\x20query:\x20'+JSON['stringify'](_0x327309),'batched':![]};const _0x5c605f=_0x327309[_0x10674f(0x1c4)]??0x0,_0x30a5b0=_0x5c3519[_0x5c605f];if(!_0x30a5b0||!_0x30a5b0['rect'])return{'success':![],'error':_0x5c605f>=_0x5c3519['length']?'Index\x20'+_0x5c605f+_0x10674f(0x853)+_0x5c3519['length']+'\x20matching\x20element(s).':'Matched\x20element\x20has\x20no\x20bounds/rect\x20information.','batched':![]};const _0x1f68e1=_0x30a5b0['rect'],_0x14e3b2=_0x1f68e1['x']+_0x1f68e1[_0x10674f(0x5e2)]/0x2,_0x78a1d2=_0x1f68e1['y']+_0x1f68e1['height']/0x2,_0x1b8241={'type':_0x30a5b0['type']??'unknown','label':_0x30a5b0['label']??_0x30a5b0['name']??'','bounds':_0x1f68e1},_0x487116=await this[_0x10674f(0xf9)](_0x3e1e56,[{'type':_0x10674f(0x880),'id':'finger1','parameters':{'pointerType':'touch'},'actions':this[_0x10674f(0x9ec)](_0x14e3b2,_0x78a1d2)}]);let _0x1acbac=_0x487116;if(!_0x487116){if('ZNWWY'===_0x10674f(0x55f))return{'name':_0x51dbfa,'ok':![],'severity':_0x14f0f2,'message':_0x366cfb instanceof _0x438523?_0x118d27['message']:_0xcd3aa5(_0x48dfe7)};else{const _0x112624=await this['tap'](_0x14e3b2,_0x78a1d2,![]);if(!_0x112624[_0x10674f(0x42d)])return{'success':![],'error':_0x112624[_0x10674f(0x125)]??_0x10674f(0x59b),'element':_0x1b8241,'tappedAt':{'x':_0x14e3b2,'y':_0x78a1d2},'batched':![]};_0x1acbac=![];}}let _0x43e1e8,_0x583ac0,_0x4eec91=!![];if(_0x4eedac['verifySelector']){let _0x2364aa,_0x559408;if(_0x4eedac['sessionId']){const _0x39c906=Date[_0x10674f(0x3d1)]()+0xbb8;for(;;){const _0x4ac20=await this[_0x10674f(0x771)](_0x4eedac['sessionId']);if(_0x4ac20){const _0x4e40bb=this[_0x10674f(0x25b)](_0x4ac20,_0x4eedac[_0x10674f(0x67d)]);if(_0x4e40bb['length']>0x0&&_0x4e40bb[0x0]){_0x2364aa=_0x4e40bb[0x0];break;}}if(Date['now']()>=_0x39c906){_0x559408=_0x4ac20?_0x10674f(0x28b)+JSON['stringify'](_0x4eedac['verifySelector']):_0x10674f(0x7cd);break;}await new Promise(_0x38af51=>setTimeout(_0x38af51,0x1f4));}_0x43e1e8={'visible':!!_0x2364aa,'element':_0x2364aa&&_0x2364aa['rect']?{'type':_0x2364aa['type']??'unknown','label':_0x2364aa['label']??_0x2364aa[_0x10674f(0x4d1)]??'','bounds':_0x2364aa['rect']}:void 0x0},_0x4eec91=!!_0x2364aa,!_0x4eec91&&(_0x583ac0=_0x10674f(0x699)+_0x559408);}else{if('QvUuJ'!==_0x10674f(0x939)){const _0x5659e7=await this['waitFor'](_0x4eedac['verifySelector'],{'timeoutMs':0xbb8});_0x43e1e8={'visible':_0x5659e7[_0x10674f(0x2af)]&&_0x5659e7[_0x10674f(0x42d)],'element':_0x5659e7['element']},_0x4eec91=_0x5659e7['success']&&_0x5659e7['found'],!_0x4eec91&&(_0x583ac0='tap\x20succeeded\x20but\x20post-tap\x20verify\x20failed:\x20'+(_0x5659e7['error']??'expected\x20element\x20'+JSON[_0x10674f(0x2c1)](_0x4eedac[_0x10674f(0x67d)])+'\x20not\x20visible'));}else return{'ext':_0x10674f(0x600),'mime':_0x10674f(0x584)};}}return{'success':_0x4eec91,'element':_0x1b8241,'tappedAt':{'x':_0x14e3b2,'y':_0x78a1d2},'verifyResult':_0x43e1e8,'batched':_0x1acbac,..._0x583ac0?{'error':_0x583ac0}:{}};}catch(_0xe893f1){return{'success':![],'error':_0xe893f1 instanceof Error?_0xe893f1['message']:'Unknown\x20error\x20during\x20tapAndVerify','batched':![]};}}async['typeIntoField'](_0x57addf,_0x461b0e,_0x236ce6={}){const _0x1225fc=_0x3ee7d6;try{const _0x499f45=await this['ensureSession'](),_0x1c8a07=await this['fetchSourceTree'](_0x499f45);if(!_0x1c8a07)return{'success':![],'error':_0x1225fc(0x883),'batched':![]};const _0x5fa498=this['searchElements'](_0x1c8a07,_0x57addf);if(_0x5fa498[_0x1225fc(0x945)]===0x0)return{'success':![],'matchCount':0x0,'error':'No\x20element\x20found\x20matching\x20field\x20query:\x20'+JSON[_0x1225fc(0x2c1)](_0x57addf),'batched':![]};const _0x845ab3=_0x57addf[_0x1225fc(0x1c4)]??0x0,_0x1619c7=_0x5fa498[_0x845ab3];if(!_0x1619c7||!_0x1619c7['rect'])return{'success':![],'matchCount':_0x5fa498['length'],'error':_0x845ab3>=_0x5fa498[_0x1225fc(0x945)]?'Index\x20'+_0x845ab3+'\x20out\x20of\x20range.\x20Found\x20'+_0x5fa498['length']+'\x20matching\x20element(s).':_0x1225fc(0x5ce),'batched':![]};const _0xf5f49b=_0x1619c7['rect'],_0x54e0d8=_0xf5f49b['x']+_0xf5f49b[_0x1225fc(0x5e2)]/0x2,_0x1d442f=_0xf5f49b['y']+_0xf5f49b['height']/0x2,_0x1c3a41={'type':_0x1619c7[_0x1225fc(0x85c)]??'unknown','label':_0x1619c7[_0x1225fc(0x10d)]??_0x1619c7['name']??'','bounds':_0xf5f49b};if(_0x236ce6['clearFirst']){if('iQpAZ'===_0x1225fc(0x299)){const _0x55ba96=await this[_0x1225fc(0x425)](_0x57addf);if(!_0x55ba96[_0x1225fc(0x42d)])return{'success':![],'matchCount':_0x5fa498[_0x1225fc(0x945)],'element':_0x1c3a41,'error':_0x55ba96[_0x1225fc(0x125)]??_0x1225fc(0x681),'batched':![]};}else return{'content':[{'type':'text','text':_0x48aeae[_0x1225fc(0x2c1)](_0x5024c8,null,0x2)}]};}const _0x420a5f=Array['from'](_0x461b0e),_0x227519=[],_0x271a3c=0x4;for(let _0x434686=0x0;_0x434686<_0x271a3c;_0x434686++){_0x227519[_0x1225fc(0x496)]({'type':_0x1225fc(0x133),'duration':0x0});}_0x227519['push']({'type':'pause','duration':0x12c});for(const _0x123ab9 of _0x420a5f){_0x1225fc(0x8ab)==='Glxzh'?_0x3ee5d2[_0x1225fc(0x91b)]['kill'](_0x1225fc(0x465)):(_0x227519[_0x1225fc(0x496)]({'type':_0x1225fc(0x7e0),'value':_0x123ab9}),_0x227519[_0x1225fc(0x496)]({'type':'keyUp','value':_0x123ab9}));}const _0x26aab7=await this['sendW3CActions'](_0x499f45,[{'type':_0x1225fc(0x880),'id':'finger1','parameters':{'pointerType':_0x1225fc(0x7e7)},'actions':this[_0x1225fc(0x9ec)](_0x54e0d8,_0x1d442f)},{'type':_0x1225fc(0x2fe),'id':_0x1225fc(0x29c),'actions':_0x227519}]);if(_0x26aab7)return{'success':!![],'matchCount':_0x5fa498['length'],'element':_0x1c3a41,'batched':!![]};const _0x447bc5=await this['findAndTap'](_0x57addf);if(!_0x447bc5['success'])return{'success':![],'matchCount':_0x5fa498[_0x1225fc(0x945)],'element':_0x1c3a41,'error':_0x447bc5[_0x1225fc(0x125)]??_0x1225fc(0x432),'batched':![]};const _0x40d9b3=await this[_0x1225fc(0x85c)](_0x461b0e);if(!_0x40d9b3['success'])return{'success':![],'matchCount':_0x5fa498['length'],'element':_0x1c3a41,'error':_0x40d9b3[_0x1225fc(0x125)]??'Failed\x20to\x20type\x20text\x20(serial\x20fallback)','batched':![]};return{'success':!![],'matchCount':_0x5fa498['length'],'element':_0x1c3a41,'batched':![]};}catch(_0x5b73db){return{'success':![],'error':_0x5b73db instanceof Error?_0x5b73db['message']:_0x1225fc(0x412),'batched':![]};}}async['tapChain'](_0x2a1e29){const _0x504727=_0x3ee7d6;if(_0x2a1e29[_0x504727(0x945)]===0x0)return{'success':![],'results':[],'batched':![],'error':'tapChain\x20called\x20with\x20empty\x20queries\x20array'};try{const _0x58846d=await this[_0x504727(0x675)](),_0xecee8b=await this[_0x504727(0x771)](_0x58846d);if(!_0xecee8b)return{'success':![],'results':[],'batched':![],'error':_0x504727(0x883)};const _0x250801=[];for(const _0x74e140 of _0x2a1e29){const _0x56ed3f=this['searchElements'](_0xecee8b,_0x74e140);if(_0x56ed3f[_0x504727(0x945)]===0x0){if('iwUns'!==_0x504727(0x190))try{const _0x586fa6=_0x249871['toString'](_0x504727(0x140)),_0x230997=_0x17f41c[_0x504727(0x229)](_0x586fa6);if(_0x230997&&typeof _0x230997==='object'&&!_0xc51663['isArray'](_0x230997))return _0x230997;return null;}catch{return null;}else return{'success':![],'results':[..._0x250801['map'](_0x5c421d=>({'query':_0x5c421d['query'],'element':_0x5c421d['element'],'tappedAt':_0x5c421d[_0x504727(0x8f7)]})),{'query':_0x74e140,'error':_0x504727(0x3c7)+JSON[_0x504727(0x2c1)](_0x74e140)}],'batched':![],'error':_0x504727(0x19a)+_0x250801['length']};}const _0xba7b5d=_0x74e140[_0x504727(0x1c4)]??0x0,_0x41ae9f=_0x56ed3f[_0xba7b5d];if(!_0x41ae9f||!_0x41ae9f[_0x504727(0x578)])return{'success':![],'results':[..._0x250801['map'](_0x19ae59=>({'query':_0x19ae59[_0x504727(0x660)],'element':_0x19ae59[_0x504727(0x8ff)],'tappedAt':_0x19ae59[_0x504727(0x8f7)]})),{'query':_0x74e140,'error':_0xba7b5d>=_0x56ed3f['length']?_0x504727(0x138)+_0xba7b5d+'\x20out\x20of\x20range.\x20Found\x20'+_0x56ed3f[_0x504727(0x945)]+'\x20matching\x20element(s).':'Matched\x20element\x20has\x20no\x20bounds/rect\x20information.'}],'batched':![],'error':'Resolution\x20failed\x20for\x20query\x20at\x20index\x20'+_0x250801[_0x504727(0x945)]};_0x250801['push']({'query':_0x74e140,'element':{'type':_0x41ae9f[_0x504727(0x85c)]??'unknown','label':_0x41ae9f['label']??_0x41ae9f[_0x504727(0x4d1)]??'','bounds':_0x41ae9f[_0x504727(0x578)]},'center':{'x':_0x41ae9f[_0x504727(0x578)]['x']+_0x41ae9f[_0x504727(0x578)]['width']/0x2,'y':_0x41ae9f[_0x504727(0x578)]['y']+_0x41ae9f[_0x504727(0x578)][_0x504727(0x652)]/0x2}});}const _0xff2ee4=[];for(let _0x17c32b=0x0;_0x17c32b<_0x250801['length'];_0x17c32b++){const _0x4fd846=_0x250801[_0x17c32b];_0xff2ee4['push'](...this['buildTapPointerActions'](_0x4fd846['center']['x'],_0x4fd846[_0x504727(0x8f7)]['y'])),_0x17c32b<_0x250801['length']-0x1&&_0xff2ee4['push']({'type':_0x504727(0x133),'duration':0x64});}const _0x3f1425=await this[_0x504727(0xf9)](_0x58846d,[{'type':_0x504727(0x880),'id':'finger1','parameters':{'pointerType':'touch'},'actions':_0xff2ee4}]);if(_0x3f1425)return{'success':!![],'results':_0x250801['map'](_0x2ae288=>({'query':_0x2ae288[_0x504727(0x660)],'element':_0x2ae288['element'],'tappedAt':_0x2ae288[_0x504727(0x8f7)]})),'batched':!![]};const _0x2848dc=[];for(const _0x3b8b2d of _0x250801){const _0x26d0b5=await this[_0x504727(0x454)](_0x3b8b2d['center']['x'],_0x3b8b2d[_0x504727(0x8f7)]['y'],![]);if(!_0x26d0b5[_0x504727(0x42d)])return _0x2848dc['push']({'query':_0x3b8b2d[_0x504727(0x660)],'element':_0x3b8b2d['element'],'tappedAt':_0x3b8b2d['center'],'error':_0x26d0b5[_0x504727(0x125)]??'Serial\x20tap\x20failed'}),{'success':![],'results':_0x2848dc,'batched':![],'error':'Serial\x20fallback\x20tap\x20failed\x20at\x20index\x20'+(_0x2848dc['length']-0x1)};_0x2848dc[_0x504727(0x496)]({'query':_0x3b8b2d[_0x504727(0x660)],'element':_0x3b8b2d[_0x504727(0x8ff)],'tappedAt':_0x3b8b2d['center']});}return{'success':!![],'results':_0x2848dc,'batched':![]};}catch(_0x5bd289){return{'success':![],'results':[],'batched':![],'error':_0x5bd289 instanceof Error?_0x5bd289['message']:'Unknown\x20error\x20during\x20tapChain'};}}async['getOrientation'](){const _0x3fa680=_0x3ee7d6;try{const _0x40cad9=await this['ensureSession'](),_0x126f61=await this[_0x3fa680(0x8aa)]('/session/'+_0x40cad9+_0x3fa680(0x7f3));if(!_0x126f61['ok'])return null;const _0x20fd54=await _0x126f61['json']();return _0x20fd54[_0x3fa680(0x84f)]??null;}catch{return null;}}async['setOrientation'](_0x466a31){const _0x1b331b=_0x3ee7d6;try{const _0x3f6c7a=await this[_0x1b331b(0x675)](),_0x79bd5f=await this['wdaFetch'](_0x1b331b(0x932)+_0x3f6c7a+'/orientation',{'method':_0x1b331b(0x2a0),'body':JSON[_0x1b331b(0x2c1)]({'orientation':_0x466a31['toUpperCase']()})});if(!_0x79bd5f['ok']){const _0x23ee14=await _0x79bd5f['text']()['catch'](()=>'unknown');return{'success':![],'error':_0x1b331b(0x458)+_0x79bd5f['status']+'\x20'+_0x23ee14};}return{'success':!![]};}catch(_0x250e9e){if('UZoNq'===_0x1b331b(0x6c2)){const _0x3e723c=_0x468d09['axCache']['get'](_0x212931[_0x1b331b(0x759)][_0x1b331b(0x914)]());if(_0x3e723c){const _0x54346a=this[_0x1b331b(0x5e9)][_0x1b331b(0x6a3)](_0x3e723c,_0xa06b3c),_0x58fe6c=_0x54346a[0x0];if(_0x58fe6c?.['rect'])return{'success':![],'error':'assertNotVisible:\x20element\x20is\x20visible:\x20'+_0x5e80dc[_0x1b331b(0x2c1)](_0x2840fe)};}}else return{'success':![],'error':_0x250e9e instanceof Error?_0x250e9e['message']:_0x1b331b(0x1f9)};}}async[_0x3ee7d6(0x2e6)](){const _0x28f3ef=_0x3ee7d6;try{const _0x48a210=await this[_0x28f3ef(0x675)](),_0x2f7895=await this[_0x28f3ef(0x8aa)](_0x28f3ef(0x932)+_0x48a210+_0x28f3ef(0x35a));if(!_0x2f7895['ok']){const _0x6068b5=await _0x2f7895[_0x28f3ef(0x5d9)]()['catch'](()=>'unknown');return{'success':![],'error':_0x28f3ef(0x703)+_0x2f7895['status']+'\x20'+_0x6068b5};}const _0x3c2389=await _0x2f7895['json']();return{'success':!![],'bundleId':_0x3c2389['value']?.['bundleId'],'pid':_0x3c2389['value']?.[_0x28f3ef(0x135)],'name':_0x3c2389['value']?.['name']};}catch(_0xba1e73){return{'success':![],'error':_0xba1e73 instanceof Error?_0xba1e73[_0x28f3ef(0x92e)]:'Unknown\x20error\x20during\x20getActiveAppInfo'};}}async[_0x3ee7d6(0x998)](_0x45d8db){const _0x29b71b=_0x3ee7d6;try{const _0x4667ec=await this[_0x29b71b(0x675)](),_0x303c17=await this['wdaFetch']('/session/'+_0x4667ec+'/wda/apps/launch',{'method':_0x29b71b(0x2a0),'body':JSON['stringify']({'bundleId':_0x45d8db})});if(!_0x303c17['ok']){const _0x39ca76=await _0x303c17[_0x29b71b(0x5d9)]()[_0x29b71b(0x4ba)](()=>_0x29b71b(0x3de));return{'success':![],'error':'WDA\x20apps/launch\x20failed:\x20'+_0x303c17[_0x29b71b(0x9d0)]+'\x20'+_0x39ca76};}return{'success':!![]};}catch(_0x14402f){return{'success':![],'error':_0x14402f instanceof Error?_0x14402f['message']:'Unknown\x20error\x20during\x20activateApp'};}}async[_0x3ee7d6(0x620)](_0x467847){const _0x31e571=_0x3ee7d6;try{const _0x193b98=await this['ensureSession'](),_0x6b35ac=await this['wdaFetch']('/session/'+_0x193b98+'/url',{'method':'POST','body':JSON[_0x31e571(0x2c1)]({'url':_0x467847})});if(!_0x6b35ac['ok']){const _0x6835f3=await _0x6b35ac['text']()[_0x31e571(0x4ba)](()=>'unknown'),_0x3b6c13=_0x6835f3['includes'](_0x31e571(0x9f9))&&_0x6835f3[_0x31e571(0x83f)](_0x31e571(0x2a2));if(_0x3b6c13&&_0x467847[_0x31e571(0x887)](_0x31e571(0x8b7)))return{'success':![],'error':'The\x20`ceraph://`\x20URL\x20scheme\x20isn\x27t\x20registered\x20in\x20the\x20app\x20under\x20test,\x20so\x20this\x20deep\x20link\x20couldn\x27t\x20be\x20delivered.\x20`init`\x20adds\x20the\x20scheme\x20to\x20app.json,\x20but\x20it\x20only\x20lands\x20in\x20the\x20native\x20Info.plist\x20after\x20a\x20rebuild\x20—\x20run\x20`npx\x20expo\x20prebuild`\x20then\x20rebuild/reinstall\x20the\x20dev\x20client\x20(or\x20your\x20EAS/Xcode\x20build),\x20and\x20retry.\x20Tools\x20affected:\x20rn_reset_state,\x20rn_reload,\x20and\x20camera/auth-bypass\x20deep\x20links.'};return{'success':![],'error':_0x31e571(0x55a)+_0x6b35ac['status']+'\x20'+_0x6835f3};}return{'success':!![]};}catch(_0x23c867){return{'success':![],'error':_0x23c867 instanceof Error?_0x23c867['message']:_0x31e571(0x1e8)};}}async['terminateAppViaWDA'](_0x3086a6){const _0x151ce6=_0x3ee7d6;try{const _0x335a81=await this[_0x151ce6(0x675)](),_0x5be6aa=await this[_0x151ce6(0x8aa)](_0x151ce6(0x932)+_0x335a81+_0x151ce6(0x414),{'method':_0x151ce6(0x2a0),'body':JSON[_0x151ce6(0x2c1)]({'bundleId':_0x3086a6})});if(!_0x5be6aa['ok']){const _0x3c397a=await _0x5be6aa['text']()['catch'](()=>'unknown');return{'success':![],'error':_0x151ce6(0x417)+_0x5be6aa['status']+'\x20'+_0x3c397a};}return this['sessionId']=null,{'success':!![]};}catch(_0x5ca78d){return{'success':![],'error':_0x5ca78d instanceof Error?_0x5ca78d['message']:_0x151ce6(0x54e)};}}async[_0x3ee7d6(0x655)](){try{const _0x49f9aa=await this['wdaFetch']('/status',{},0x7d0);return _0x49f9aa['ok'];}catch{return![];}}['searchElements'](_0x2f3427,_0x4d48f2){const _0x335934=_0x3ee7d6,_0x2ce5ab=[];this[_0x335934(0x7fc)](_0x2f3427,_0x4d48f2)&&_0x2ce5ab[_0x335934(0x496)](_0x2f3427);const _0x58e0c7=_0x2f3427['children'];if(Array[_0x335934(0x246)](_0x58e0c7))for(const _0x3da7bd of _0x58e0c7){_0x2ce5ab[_0x335934(0x496)](...this['searchElements'](_0x3da7bd,_0x4d48f2));}return _0x2ce5ab;}[_0x3ee7d6(0x7fc)](_0x61025a,_0x86b359){const _0x580504=_0x3ee7d6;if(_0x86b359[_0x580504(0x5d9)]!==void 0x0){if(_0x580504(0x6fc)==='BZMbD'){const _0x51d32b=_0x86b359['text']['toLowerCase'](),_0x212af2=[_0x61025a[_0x580504(0x84f)],_0x61025a[_0x580504(0x10d)],_0x61025a[_0x580504(0x4d1)]]['filter'](Boolean)['map'](_0x460246=>String(_0x460246)['toLowerCase']());if(!_0x212af2['some'](_0x4fa55b=>_0x4fa55b[_0x580504(0x83f)](_0x51d32b)))return![];}else _0x1b70f4['stderr']['write'](_0x580504(0x422)+(_0x2641d3 instanceof _0x2c9afc?_0x4ceba8[_0x580504(0x92e)]:_0x417bcc(_0x226975))+'\x0a');}if(_0x86b359['accessibilityLabel']!==void 0x0){const _0xd0a0ff=String(_0x61025a['label']??_0x61025a['name']??'');if(!_0xd0a0ff[_0x580504(0x17e)]()['includes'](_0x86b359['accessibilityLabel']['toLowerCase']()))return![];}if(_0x86b359['type']!==void 0x0){const _0x4df6ee=String(_0x61025a['type']??'');if(!_0x4df6ee['toLowerCase']()[_0x580504(0x83f)](_0x86b359[_0x580504(0x85c)]['toLowerCase']()))return![];}return _0x86b359['text']!==void 0x0||_0x86b359['accessibilityLabel']!==void 0x0||_0x86b359['type']!==void 0x0||_0x86b359[_0x580504(0x1c4)]!==void 0x0;}[_0x3ee7d6(0x616)](_0x5a9faa,_0xca8843){const _0x5f7d72=_0x3ee7d6,_0x42759f=[];if(_0xca8843<=0x0)return _0x42759f;const _0x5e0b86=String(_0x5a9faa['label']??_0x5a9faa['name']??''),_0x134229=String(_0x5a9faa['value']??''),_0x370f64=String(_0x5a9faa[_0x5f7d72(0x85c)]??'');if(_0x5e0b86||_0x134229){if('uGqJC'==='JoWNt'){if(_0x4e1711)_0x19ca0d['push']({'label':_0x55ad15,'element':_0x148838});}else _0x42759f[_0x5f7d72(0x496)]({'type':_0x370f64,'label':_0x5e0b86,'text':_0x134229});}const _0x5851d6=_0x5a9faa[_0x5f7d72(0x9c3)];if(Array[_0x5f7d72(0x246)](_0x5851d6))for(const _0x447148 of _0x5851d6){const _0xca06eb=_0xca8843-_0x42759f['length'];if(_0xca06eb<=0x0)break;_0x42759f[_0x5f7d72(0x496)](...this[_0x5f7d72(0x616)](_0x447148,_0xca06eb));}return _0x42759f;}[_0x3ee7d6(0x88b)](){const _0x1b4014=_0x3ee7d6;this[_0x1b4014(0x648)]=null,this[_0x1b4014(0x5ad)]=null,this['sessionBaseUrl']=null;}};function _0x59184d(_0x24d13f){const _0x9587c0=_0x3ee7d6;if(!_0x24d13f[_0x9587c0(0x42d)]||!_0x24d13f[_0x9587c0(0x589)])return{'content':[{'type':_0x9587c0(0x5d9),'text':JSON['stringify'](_0x24d13f,null,0x2)}],'isError':!![]};return{'content':[{'type':_0x9587c0(0x588),'data':_0x24d13f['base64'],'mimeType':_0x9587c0(0x694)}]};}import{readFile as _0x3cb1b5,writeFile as _0xf9146f,mkdir,access as _0x49dadf}from'fs/promises';import{join as _0x2a13a8}from'path';var _0x2c4950=class{[_0x3ee7d6(0x175)];['projectDir'];['snapshotPath'];constructor(_0x1e6298,_0x2956d6){const _0x4f9c46=_0x3ee7d6;this['projectDir']=_0x1e6298,this[_0x4f9c46(0x175)]=_0x2956d6,this[_0x4f9c46(0x396)]=_0x2a13a8(_0x2956d6,_0x4f9c46(0x330));}async[_0x3ee7d6(0x4a1)](_0x21e508){try{return await _0x49dadf(_0x21e508),!![];}catch{return![];}}async['readJson'](_0x42fc8f){const _0x31dff8=_0x3ee7d6;try{const _0x1b11b9=await _0x3cb1b5(_0x42fc8f,'utf-8');return JSON[_0x31dff8(0x229)](_0x1b11b9);}catch{return null;}}async[_0x3ee7d6(0x4e4)](_0x26dfc6){const _0x3de5a7=_0x3ee7d6;try{const _0x1d2f97=await _0x3cb1b5(_0x26dfc6,'utf-8');let _0x46345e=0x0;for(let _0x220921=0x0;_0x220921<_0x1d2f97[_0x3de5a7(0x945)];_0x220921++){const _0x39dec6=_0x1d2f97[_0x3de5a7(0x141)](_0x220921);_0x46345e=(_0x46345e<<0x5)-_0x46345e+_0x39dec6,_0x46345e|=0x0;}return _0x46345e[_0x3de5a7(0x510)](0x24);}catch{return _0x3de5a7(0x641);}}async['getCurrentState'](){const _0x42391e=_0x3ee7d6,_0x4a9f63=await this[_0x42391e(0x22b)](_0x2a13a8(this[_0x42391e(0x1f7)],_0x42391e(0x833)));let _0x15dbaf=await this['readJson'](_0x2a13a8(this[_0x42391e(0x1f7)],_0x42391e(0x293)));if(!_0x15dbaf){const _0x42924a=await this['hashFile'](_0x2a13a8(this[_0x42391e(0x1f7)],_0x42391e(0x45e))),_0x32e502=await this[_0x42391e(0x4e4)](_0x2a13a8(this[_0x42391e(0x1f7)],_0x42391e(0x3aa)));_0x15dbaf={'_fileHash':_0x42924a,'_tsFileHash':_0x32e502};}const _0x226977=await this[_0x42391e(0x4e4)](_0x2a13a8(this['projectDir'],'ios',_0x42391e(0x99b)));return{'dependencies':_0x4a9f63?.[_0x42391e(0x5d2)]??{},'devDependencies':_0x4a9f63?.['devDependencies']??{},'appConfig':_0x15dbaf??{},'podfileLockHash':_0x226977,'timestamp':new Date()[_0x42391e(0x4a0)]()};}async[_0x3ee7d6(0x256)](){try{const _0x2165dc=await _0x3cb1b5(this['snapshotPath'],'utf-8');return JSON['parse'](_0x2165dc);}catch{return null;}}async[_0x3ee7d6(0x505)](){const _0x1b1c7c=_0x3ee7d6,_0x6b93e=await this['getCurrentState']();await mkdir(this['cacheDir'],{'recursive':!![]}),await _0xf9146f(this[_0x1b1c7c(0x396)],JSON['stringify'](_0x6b93e,null,0x2),'utf-8');}['diffDependencies'](_0x34c4df,_0x21de56){const _0x8b46ad=_0x3ee7d6,_0x3aa44d=[],_0x1a46c8=[],_0x39870a=[],_0x4e4c10=new Set([...Object[_0x8b46ad(0x208)](_0x34c4df),...Object['keys'](_0x21de56)]);for(const _0x2242ef of _0x4e4c10){if(!(_0x2242ef in _0x34c4df))_0x3aa44d['push'](_0x2242ef);else{if(!(_0x2242ef in _0x21de56))_0x1a46c8['push'](_0x2242ef);else _0x34c4df[_0x2242ef]!==_0x21de56[_0x2242ef]&&_0x39870a[_0x8b46ad(0x496)](_0x2242ef);}}return{'added':_0x3aa44d,'removed':_0x1a46c8,'changed':_0x39870a};}async['check'](){const _0x1549d9=_0x3ee7d6,_0x2ef997=[],_0x450f6a=await this[_0x1549d9(0x4a1)](_0x2a13a8(this['projectDir'],_0x1549d9(0x5c2)));if(!_0x450f6a)return{'needsClean':!![],'reasons':[_0x1549d9(0xce)]};const _0x5b933c=await this['loadSnapshot']();if(!_0x5b933c)return{'needsClean':!![],'reasons':[_0x1549d9(0x651)]};const _0x87c5fe=await this['getCurrentState'](),_0xfca315=this[_0x1549d9(0x4cb)](_0x5b933c['dependencies'],_0x87c5fe['dependencies']);_0xfca315[_0x1549d9(0x1dd)]['length']>0x0&&(_0x1549d9(0x57b)==='lGHYD'?_0x301ea3['base']=_0xa7ee43??'main':_0x2ef997['push'](_0x1549d9(0x3e0)+_0xfca315['added'][_0x1549d9(0x221)](',\x20')+_0x1549d9(0x8d3)));_0xfca315['removed'][_0x1549d9(0x945)]>0x0&&_0x2ef997[_0x1549d9(0x496)]('Dependencies\x20removed:\x20'+_0xfca315['removed'][_0x1549d9(0x221)](',\x20')+_0x1549d9(0x37a));if(_0xfca315['changed'][_0x1549d9(0x945)]>0x0){const _0x2c2ed1=[_0x1549d9(0x665),_0x1549d9(0x64d),'@react-native','react-native-'],_0x5cb808=_0xfca315[_0x1549d9(0x813)][_0x1549d9(0x65c)](_0x5674f6=>_0x2c2ed1['some'](_0x4f4dc8=>_0x5674f6['includes'](_0x4f4dc8)));_0x5cb808['length']>0x0&&_0x2ef997[_0x1549d9(0x496)](_0x1549d9(0x855)+_0x5cb808['join'](',\x20')+'.\x20Clean\x20prebuild\x20recommended.');}const _0x22136b=this[_0x1549d9(0x4cb)](_0x5b933c[_0x1549d9(0x619)],_0x87c5fe['devDependencies']);if(_0x22136b['added']['length']>0x0||_0x22136b[_0x1549d9(0x62c)][_0x1549d9(0x945)]>0x0){const _0x28bfab=[..._0x22136b['added'],..._0x22136b['removed']]['filter'](_0x524d46=>_0x524d46['includes'](_0x1549d9(0x665))||_0x524d46[_0x1549d9(0x83f)]('expo')||_0x524d46[_0x1549d9(0x83f)](_0x1549d9(0x157)));_0x28bfab[_0x1549d9(0x945)]>0x0&&_0x2ef997['push']('Native\x20dev\x20dependencies\x20changed:\x20'+_0x28bfab[_0x1549d9(0x221)](',\x20')+'.');}const _0x246864=JSON['stringify'](_0x5b933c['appConfig'])!==JSON[_0x1549d9(0x2c1)](_0x87c5fe[_0x1549d9(0x114)]);_0x246864&&_0x2ef997['push']('app.json\x20/\x20app.config.js\x20has\x20changed\x20since\x20last\x20build.\x20Expo\x20plugins\x20or\x20native\x20config\x20may\x20have\x20changed.');if(_0x87c5fe['podfileLockHash']==='missing')_0x2ef997[_0x1549d9(0x496)](_0x1549d9(0xe1));else _0x5b933c['podfileLockHash']!==_0x87c5fe['podfileLockHash']&&_0x2ef997[_0x1549d9(0x496)]('ios/Podfile.lock\x20has\x20changed\x20since\x20last\x20build.\x20Pod\x20dependencies\x20may\x20be\x20out\x20of\x20sync.');return{'needsClean':_0x2ef997[_0x1549d9(0x945)]>0x0,'reasons':_0x2ef997};}};import{spawn as _0x34f519}from'child_process';function _0x52bc18(_0x5badbf,_0x4341a3,_0x29bd34={}){return new Promise(_0x28ad43=>{const _0x344074=_0x4a5a;let _0x2e2193='',_0x51cd48='',_0x5f5508;try{_0x5f5508=_0x34f519(_0x5badbf,_0x4341a3,{'stdio':['ignore','pipe',_0x344074(0x406)]});}catch(_0xdea4c2){_0x28ad43({'code':0x7f,'stdout':'','stderr':_0xdea4c2 instanceof Error?_0xdea4c2[_0x344074(0x92e)]:String(_0xdea4c2)});return;}const _0x3c68d6=setTimeout(()=>{const _0x21e9e4=_0x344074;try{if('RIMjv'===_0x21e9e4(0x7f7))return _0x5a5721[_0x21e9e4(0x555)][_0x21e9e4(0x478)];else _0x5f5508['kill']('SIGKILL');}catch{}},_0x29bd34['timeoutMs']??0x3a98);_0x5f5508[_0x344074(0x91a)]?.['on']('data',_0x2fdd7e=>{_0x2e2193+=_0x2fdd7e['toString']();}),_0x5f5508[_0x344074(0x870)]?.['on'](_0x344074(0x978),_0xe62a35=>{_0x51cd48+=_0xe62a35['toString']();});let _0x8d962b=![];_0x5f5508['on']('error',_0x59d498=>{if(_0x8d962b)return;_0x8d962b=!![],clearTimeout(_0x3c68d6),_0x28ad43({'code':0x7f,'stdout':_0x2e2193,'stderr':_0x51cd48+(_0x59d498['message']??String(_0x59d498))});}),_0x5f5508['on']('exit',_0x272044=>{if(_0x8d962b)return;_0x8d962b=!![],clearTimeout(_0x3c68d6),_0x28ad43({'code':_0x272044??0x1,'stdout':_0x2e2193,'stderr':_0x51cd48});});});}async function _0x5f1f68(_0x20b11a){const _0x3f531e=_0x3ee7d6,_0x4b7d23=await _0x52bc18('which',[_0x20b11a],{'timeoutMs':0x7d0});return _0x4b7d23[_0x3f531e(0x845)]===0x0&&_0x4b7d23[_0x3f531e(0x91a)][_0x3f531e(0x5da)]()['length']>0x0;}function _0x50232d(_0x4c7605){const _0x39bd04=_0x3ee7d6,_0x5ce94f=[];let _0x25cc33=0x0,_0x35f0ef=![],_0x1109c4=null,_0x21ecb3=null,_0x1d5b8a=null,_0x54f44a=null,_0x5ed498=null,_0x1025d6=null;const _0x292d0d=_0xb2591e=>{const _0x4a151e=_0x4a5a;let _0x3bab4d=_0xb2591e['trim']();if(_0x3bab4d[_0x4a151e(0x3f0)](';'))_0x3bab4d=_0x3bab4d['slice'](0x0,-0x1)[_0x4a151e(0x5da)]();return(_0x3bab4d['startsWith']('\x22')&&_0x3bab4d['endsWith']('\x22')||_0x3bab4d['startsWith']('\x27')&&_0x3bab4d[_0x4a151e(0x3f0)]('\x27'))&&(_0x3bab4d=_0x3bab4d['slice'](0x1,-0x1)),_0x3bab4d;};for(const _0x54fe50 of _0x4c7605[_0x39bd04(0x814)]('\x0a')){const _0x205dd9=_0x54fe50['trim']();if(_0x205dd9[_0x39bd04(0x945)]===0x0)continue;if(_0x25cc33===0x1&&!_0x35f0ef&&_0x205dd9[_0x39bd04(0x3f0)]('{')){const _0x173f75=_0x205dd9['indexOf']('=');if(_0x173f75>0x0){const _0x2a1412=_0x292d0d(_0x205dd9['slice'](0x0,_0x173f75));_0x1109c4=_0x2a1412,_0x21ecb3=_0x2a1412,_0x1d5b8a=null,_0x54f44a=null,_0x5ed498=null,_0x1025d6=null,_0x35f0ef=!![];}_0x25cc33+=0x1;continue;}if(_0x205dd9['endsWith']('{')){_0x25cc33+=0x1;continue;}if(_0x205dd9==='};'||_0x205dd9==='}'){if(_0x35f0ef&&_0x25cc33===0x2){const _0x4ff0c3=_0x21ecb3??_0x1109c4;_0x4ff0c3&&_0x5ce94f[_0x39bd04(0x496)]({'bundleId':_0x4ff0c3,'name':_0x54f44a??_0x1d5b8a??_0x4ff0c3,'version':_0x5ed498??_0x1025d6??void 0x0}),_0x35f0ef=![],_0x1109c4=null,_0x21ecb3=null,_0x1d5b8a=null,_0x54f44a=null,_0x5ed498=null,_0x1025d6=null;}_0x25cc33=Math[_0x39bd04(0x4da)](0x0,_0x25cc33-0x1);continue;}if(_0x35f0ef&&_0x25cc33===0x2){const _0x51faa4=_0x205dd9[_0x39bd04(0x747)]('=');if(_0x51faa4<0x0)continue;const _0x1f8407=_0x205dd9[_0x39bd04(0x63b)](0x0,_0x51faa4)[_0x39bd04(0x5da)](),_0x1a9861=_0x292d0d(_0x205dd9[_0x39bd04(0x63b)](_0x51faa4+0x1));switch(_0x1f8407){case _0x39bd04(0x5a1):_0x21ecb3=_0x1a9861;break;case _0x39bd04(0x1f3):_0x1d5b8a=_0x1a9861;break;case'CFBundleDisplayName':_0x54f44a=_0x1a9861;break;case _0x39bd04(0x805):_0x5ed498=_0x1a9861;break;case _0x39bd04(0x38d):_0x1025d6=_0x1a9861;break;default:break;}}}return _0x5ce94f;}var _0x435cdf=class _0x3b32c2{constructor(_0x813c5d,_0x305031){const _0x2a2ddf=_0x3ee7d6;this[_0x2a2ddf(0x5e9)]=_0x813c5d,this['targetResolver']=_0x305031;}[_0x3ee7d6(0x737)]=null;[_0x3ee7d6(0x3d5)]=![];[_0x3ee7d6(0x413)]=0x0;static [_0x3ee7d6(0x120)]=0x1388;['udidInflight']=null;[_0x3ee7d6(0x601)]=null;['idbAvailable']=null;[_0x3ee7d6(0x17a)]=null;['INSTALLED_CACHE_MS']=0x7530;['setTargetResolver'](_0x507803){this['targetResolver']=_0x507803;}async['pickTransport'](){const _0x4d2624=_0x3ee7d6;if(!this[_0x4d2624(0x7cb)])return{'preferSimulator':![],'simulatorUdid':'booted'};const _0x454925=await this['targetResolver']['resolve'](),_0x18de68=_0x454925[_0x4d2624(0x555)]===_0x4d2624(0x21f),_0x24d577=_0x454925[_0x4d2624(0x555)]==='simulator'&&_0x454925['udid']?_0x454925[_0x4d2624(0x737)]:'booted';return{'preferSimulator':_0x18de68,'simulatorUdid':_0x24d577};}async[_0x3ee7d6(0x29a)](){const _0x5d07e7=_0x3ee7d6;if(this[_0x5d07e7(0x3d5)]&&this[_0x5d07e7(0x737)]&&Date[_0x5d07e7(0x3d1)]()-this[_0x5d07e7(0x413)]<_0x3b32c2['UDID_TTL_MS']){if('wKYTf'!=='wKYTf'){const _0x2b0c98=_0x3dba38[_0x5d07e7(0x1ab)](_0x370b4a['getStart']());return _0x2b0c98['line']===_0x42e67d;}else return this['udid'];}if(this[_0x5d07e7(0x467)])return this['udidInflight'];const _0x50b4f6=((async()=>{const _0x445d02=_0x5d07e7;try{const _0x24a046=await _0x5f1f68('xcrun');if(!_0x24a046)return null;const _0x51554c=await _0x52bc18('xcrun',['devicectl',_0x445d02(0x950),'devices','--json-output','-'],{'timeoutMs':0x1f40});if(_0x51554c[_0x445d02(0x845)]!==0x0)return null;const _0x14c29a=JSON[_0x445d02(0x229)](_0x51554c['stdout']),_0xa2b7e7=_0x14c29a[_0x445d02(0x7bb)]?.[_0x445d02(0x598)]??[],_0x140923=_0xa2b7e7[_0x445d02(0x7bd)](_0x325a07=>{const _0x308636=_0x445d02,_0x4addc9=_0x325a07[_0x308636(0x979)]?.[_0x308636(0x54d)]?.[_0x308636(0x17e)]()??'',_0x3461b3=_0x325a07[_0x308636(0x60c)]?.[_0x308636(0x4bf)]?.[_0x308636(0x17e)]()??'';return _0x4addc9['includes']('ios')&&_0x3461b3==='connected';});if(_0x140923?.['identifier'])return this[_0x445d02(0x737)]=_0x140923['identifier'],this['udidResolved']=!![],this['udidResolvedAt']=Date['now'](),this[_0x445d02(0x737)];const _0x422360=_0xa2b7e7[_0x445d02(0x7bd)](_0x4185ee=>(_0x4185ee['hardwareProperties']?.[_0x445d02(0x54d)]?.[_0x445d02(0x17e)]()??'')[_0x445d02(0x83f)](_0x445d02(0x5c2)));if(_0x422360?.['identifier'])return this[_0x445d02(0x737)]=_0x422360['identifier'],this[_0x445d02(0x3d5)]=!![],this[_0x445d02(0x413)]=Date[_0x445d02(0x3d1)](),this[_0x445d02(0x737)];}catch{}return null;})());this[_0x5d07e7(0x467)]=_0x50b4f6;try{return await _0x50b4f6;}finally{this[_0x5d07e7(0x467)]=null;}}async[_0x3ee7d6(0x923)](){const _0x7c09fa=_0x3ee7d6;if(this[_0x7c09fa(0x601)]!==null)return this[_0x7c09fa(0x601)];const _0x508744=await _0x5f1f68(_0x7c09fa(0x2d3));if(!_0x508744)return this['devicectlAvailable']=![],![];const _0xc00dcd=await _0x52bc18(_0x7c09fa(0x2d3),[_0x7c09fa(0x124),'--help'],{'timeoutMs':0xfa0});return this[_0x7c09fa(0x601)]=_0xc00dcd['code']===0x0,this['devicectlAvailable'];}async['checkIdb'](){const _0x2c6675=_0x3ee7d6;if(this['idbAvailable']!==null)return this[_0x2c6675(0x61b)];return this[_0x2c6675(0x61b)]=await _0x5f1f68('idb'),this[_0x2c6675(0x61b)];}async['launchApp'](_0x431686){const _0x1e1c44=_0x3ee7d6,_0x58b105=await this[_0x1e1c44(0x884)]();if(_0x58b105['preferSimulator']){const _0x142c3f=_0x58b105['simulatorUdid'],_0x559be5=await _0x52bc18('xcrun',['simctl','launch',_0x142c3f,_0x431686],{'timeoutMs':0x3a98});if(_0x559be5['code']===0x0)return{'success':!![],'transport':'simctl','details':{'udid':_0x142c3f}};return{'success':![],'transport':'simctl','error':_0x1e1c44(0x962)+(_0x559be5[_0x1e1c44(0x870)]||_0x559be5[_0x1e1c44(0x91a)])[_0x1e1c44(0x5da)](),'details':{'udid':_0x142c3f}};}const _0x3ad412=await this[_0x1e1c44(0x29a)]();if(_0x3ad412&&await this['checkDevicectl']()){const _0xb8f483=await _0x52bc18('xcrun',[_0x1e1c44(0x124),'device','process',_0x1e1c44(0x96b),'--device',_0x3ad412,_0x1e1c44(0x565),_0x431686],{'timeoutMs':0x7530});if(_0xb8f483[_0x1e1c44(0x845)]===0x0)return{'success':!![],'transport':_0x1e1c44(0x124),'details':{'udid':_0x3ad412}};const _0x2160a0=_0xb8f483[_0x1e1c44(0x870)]||_0xb8f483[_0x1e1c44(0x91a)];if(!await this[_0x1e1c44(0x2f9)]())return{'success':![],'transport':'devicectl','error':'devicectl\x20launch\x20failed:\x20'+_0x2160a0['trim']()};}if(await this['checkIdb']()){const _0x148f00=['launch',_0x431686];if(_0x3ad412)_0x148f00[_0x1e1c44(0x496)]('--udid',_0x3ad412);const _0x2d1608=await _0x52bc18('idb',_0x148f00,{'timeoutMs':0x7530});if(_0x2d1608['code']===0x0)return{'success':!![],'transport':_0x1e1c44(0x731),'details':{'udid':_0x3ad412}};if(!_0x3ad412){}else return{'success':![],'transport':'idb','error':_0x1e1c44(0x4cd)+(_0x2d1608[_0x1e1c44(0x870)]||_0x2d1608[_0x1e1c44(0x91a)])[_0x1e1c44(0x5da)]()};}if(!_0x3ad412){if(_0x1e1c44(0x151)==='bwrfA'){const _0x3533e0=await _0x52bc18(_0x1e1c44(0x2d3),['simctl',_0x1e1c44(0x96b),_0x1e1c44(0x93b),_0x431686],{'timeoutMs':0x3a98});if(_0x3533e0['code']===0x0)return{'success':!![],'transport':'simctl'};return{'success':![],'transport':_0x1e1c44(0x5c3),'error':_0x1e1c44(0x962)+(_0x3533e0[_0x1e1c44(0x870)]||_0x3533e0[_0x1e1c44(0x91a)])[_0x1e1c44(0x5da)]()};}else{_0x35a0c5({'deviceFound':!![],'udid':_0x41e3de['udid'],'name':_0x4af060[_0x1e1c44(0x4d1)],'waitedMs':_0xc8f501()-_0xc86f21,'source':'usbmuxd'});return;}}return{'success':![],'transport':_0x1e1c44(0x8df),'error':_0x1e1c44(0x76f)};}async['terminateApp'](_0x409e79){const _0x51c414=_0x3ee7d6,_0x1ff56c=await this[_0x51c414(0x884)]();if(_0x1ff56c['preferSimulator']){const _0x22502b=_0x1ff56c['simulatorUdid'],_0x316720=await _0x52bc18('xcrun',[_0x51c414(0x5c3),_0x51c414(0x4c8),_0x22502b,_0x409e79],{'timeoutMs':0x2710});if(_0x316720['code']===0x0)return{'success':!![],'transport':_0x51c414(0x5c3),'details':{'udid':_0x22502b}};return{'success':![],'transport':_0x51c414(0x5c3),'error':_0x51c414(0x889)+(_0x316720[_0x51c414(0x870)]||_0x316720['stdout'])[_0x51c414(0x5da)](),'details':{'udid':_0x22502b}};}if(this['screen']){const _0x3a3f82=await this[_0x51c414(0x5e9)][_0x51c414(0x9b2)]();if(_0x3a3f82){const _0x179832=await this['screen'][_0x51c414(0x33a)](_0x409e79);if(_0x179832['success'])return{'success':!![],'transport':_0x51c414(0x4bd)};}}const _0x1fe07e=await this[_0x51c414(0x29a)]();if(_0x1fe07e&&await this['checkDevicectl']()){const _0x5aec47=await this[_0x51c414(0x47c)](_0x1fe07e,_0x409e79);if(_0x5aec47!==null){const _0x319c6c=await _0x52bc18(_0x51c414(0x2d3),[_0x51c414(0x124),'device',_0x51c414(0x993),_0x51c414(0x4c8),'--device',_0x1fe07e,'--pid',String(_0x5aec47)],{'timeoutMs':0x3a98});if(_0x319c6c[_0x51c414(0x845)]===0x0)return{'success':!![],'transport':_0x51c414(0x124),'details':{'pid':_0x5aec47}};}}if(await this['checkIdb']()){const _0x393651=[_0x51c414(0x4c8),_0x409e79];if(_0x1fe07e)_0x393651['push'](_0x51c414(0x5dd),_0x1fe07e);const _0x450b5c=await _0x52bc18('idb',_0x393651,{'timeoutMs':0x3a98});if(_0x450b5c['code']===0x0)return{'success':!![],'transport':_0x51c414(0x731)};}if(!_0x1fe07e){const _0x309e8b=await _0x52bc18(_0x51c414(0x2d3),[_0x51c414(0x5c3),_0x51c414(0x4c8),_0x51c414(0x93b),_0x409e79],{'timeoutMs':0x2710});if(_0x309e8b['code']===0x0)return{'success':!![],'transport':'simctl'};return{'success':![],'transport':_0x51c414(0x5c3),'error':_0x51c414(0x889)+(_0x309e8b[_0x51c414(0x870)]||_0x309e8b['stdout'])['trim']()};}return{'success':![],'transport':'none','error':'Failed\x20to\x20terminate\x20via\x20WDA,\x20devicectl,\x20or\x20idb.\x20The\x20app\x20may\x20not\x20be\x20running,\x20or\x20(devicectl\x20path)\x20it\x20is\x20not\x20a\x20user-installed\x20app\x20so\x20its\x20PID\x20could\x20not\x20be\x20resolved.'};}async[_0x3ee7d6(0x47c)](_0x596381,_0x202a26){const _0x4cdb2e=_0x3ee7d6,_0x2c0481=await _0x52bc18('xcrun',['devicectl',_0x4cdb2e(0x931),_0x4cdb2e(0x9bd),_0x4cdb2e(0x7dd),_0x4cdb2e(0x96a),_0x596381,_0x4cdb2e(0x82e),'-'],{'timeoutMs':0x4e20});if(_0x2c0481[_0x4cdb2e(0x845)]!==0x0)return null;let _0x1f67f3=null;try{const _0x1a52d4=JSON['parse'](_0x2c0481['stdout']);_0x1f67f3=(_0x1a52d4['result']?.[_0x4cdb2e(0x7dd)]??[])[_0x4cdb2e(0x7bd)](_0x3a3ce1=>_0x3a3ce1[_0x4cdb2e(0x265)]===_0x202a26)?.['url']??null;}catch{return null;}if(!_0x1f67f3)return null;const _0x430d16=_0x1f67f3[_0x4cdb2e(0x3f0)]('/')?_0x1f67f3:_0x1f67f3+'/',_0x4e3400=await _0x52bc18(_0x4cdb2e(0x2d3),['devicectl',_0x4cdb2e(0x931),_0x4cdb2e(0x9bd),'processes','--device',_0x596381,'--json-output','-'],{'timeoutMs':0x4e20});if(_0x4e3400['code']!==0x0)return null;try{if('lZLGD'!=='lZLGD'){const _0x2855cf=_0x518063['result']?.[_0x4cdb2e(0x598)]??[];if(_0x2855cf['length']===0x0)return null;const _0x7678d8=_0x378f12=>(_0x378f12['hardwareProperties']?.['platform']?.['toLowerCase']()??'')[_0x4cdb2e(0x83f)]('ios'),_0x5dfaf3=_0x2855cf['find'](_0x58a160=>{const _0x2764ef=_0x4cdb2e,_0xe111a8=_0x58a160[_0x2764ef(0x60c)]?.[_0x2764ef(0x4bf)]?.[_0x2764ef(0x17e)]()??'';return _0x7678d8(_0x58a160)&&_0xe111a8===_0x2764ef(0x12b);}),_0x472035=_0x5dfaf3??_0x2855cf['find'](_0x7678d8);if(!_0x472035?.[_0x4cdb2e(0x90c)])return null;return{'udid':_0x472035[_0x4cdb2e(0x90c)],'name':_0x472035[_0x4cdb2e(0x9cf)]?.[_0x4cdb2e(0x4d1)]??_0x472035['identifier']};}else{const _0x42d4b6=JSON['parse'](_0x4e3400[_0x4cdb2e(0x91a)]),_0x55dcd1=(_0x42d4b6[_0x4cdb2e(0x7bb)]?.['runningProcesses']??[])[_0x4cdb2e(0x65c)](_0xdd407d=>typeof _0xdd407d[_0x4cdb2e(0x3e9)]===_0x4cdb2e(0x513)&&(_0xdd407d['executable']??'')[_0x4cdb2e(0x887)](_0x430d16));if(_0x55dcd1['length']===0x0)return null;const _0x49ea76=_0x55dcd1[_0x4cdb2e(0x7bd)](_0x5890e0=>!_0x5890e0['executable'][_0x4cdb2e(0x63b)](_0x430d16[_0x4cdb2e(0x945)])['includes']('/'));return(_0x49ea76??_0x55dcd1[0x0])[_0x4cdb2e(0x3e9)];}}catch{return null;}}async[_0x3ee7d6(0x998)](_0x468753){const _0x54578a=_0x3ee7d6;if(this['screen']){const _0xc16faa=await this['screen'][_0x54578a(0x9b2)]();if(_0xc16faa){const _0x492805=await this[_0x54578a(0x5e9)][_0x54578a(0x998)](_0x468753);if(_0x492805['success'])return'zkAJB'===_0x54578a(0x3d0)?{'success':!![],'transport':'wda'}:(_0x1af35e(_0x4732a3+':\x20existing\x20config\x20at\x20'+_0x31f097+_0x54578a(0x6a8)),![]);}}return this[_0x54578a(0x926)](_0x468753);}async['listInstalledApps'](){const _0x35d0e2=_0x3ee7d6,_0x55ac9a=await this['pickTransport'](),_0x2ffab0=_0x55ac9a[_0x35d0e2(0x654)]?null:await this['getUdid'](),_0x3769db=_0x55ac9a['preferSimulator']?_0x35d0e2(0x7da)+_0x55ac9a[_0x35d0e2(0x6fa)]:'device:'+(_0x2ffab0??'none');if(this['installedAppsCache']&&this['installedAppsCache']['key']===_0x3769db&&Date[_0x35d0e2(0x3d1)]()-this[_0x35d0e2(0x17a)]['at']<this['INSTALLED_CACHE_MS'])return{'success':!![],'apps':this['installedAppsCache']['apps']};if(_0x55ac9a['preferSimulator'])return this[_0x35d0e2(0x136)](_0x55ac9a['simulatorUdid'],_0x3769db);const _0x32b849=_0x2ffab0;if(!_0x32b849)return{'success':![],'apps':[],'error':'No\x20real\x20iOS\x20device\x20connected.\x20Connect\x20a\x20device\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac.'};if(!await this[_0x35d0e2(0x923)]())return{'success':![],'apps':[],'error':_0x35d0e2(0x2c8)};const _0x7f3b32=await _0x52bc18('xcrun',['devicectl',_0x35d0e2(0x931),_0x35d0e2(0x9bd),_0x35d0e2(0x7dd),_0x35d0e2(0x96a),_0x32b849,_0x35d0e2(0x82e),'-'],{'timeoutMs':0x4e20});if(_0x7f3b32[_0x35d0e2(0x845)]!==0x0)return{'success':![],'apps':[],'error':'devicectl\x20info\x20apps\x20failed:\x20'+(_0x7f3b32['stderr']||_0x7f3b32['stdout'])[_0x35d0e2(0x5da)]()};try{const _0x337501=JSON['parse'](_0x7f3b32['stdout']),_0x1330f9=(_0x337501['result']?.['apps']??[])['filter'](_0x2de8eb=>!!_0x2de8eb[_0x35d0e2(0x265)])[_0x35d0e2(0x986)](_0x50a413=>({'bundleId':_0x50a413['bundleIdentifier'],'name':_0x50a413[_0x35d0e2(0x4d1)]??_0x50a413[_0x35d0e2(0x265)],'version':_0x50a413[_0x35d0e2(0x3bb)]??_0x50a413[_0x35d0e2(0x892)]}));return this[_0x35d0e2(0x17a)]={'at':Date[_0x35d0e2(0x3d1)](),'key':_0x3769db,'apps':_0x1330f9},{'success':!![],'apps':_0x1330f9};}catch(_0x2ff0c4){if('OJRln'==='RjyUu')_0x314417=_0x36943d[_0x35d0e2(0x229)](_0x551075);else return{'success':![],'apps':[],'error':'Failed\x20to\x20parse\x20devicectl\x20output:\x20'+(_0x2ff0c4 instanceof Error?_0x2ff0c4[_0x35d0e2(0x92e)]:String(_0x2ff0c4))};}}async['listInstalledAppsSimulator'](_0x2bb943,_0x11afff){const _0xbb6fb9=_0x3ee7d6,_0x14e725=await _0x52bc18('xcrun',['simctl',_0xbb6fb9(0x15d),_0x2bb943],{'timeoutMs':0x3a98});if(_0x14e725['code']!==0x0)return{'success':![],'apps':[],'error':_0xbb6fb9(0x7ac)+(_0x14e725['stderr']||_0x14e725[_0xbb6fb9(0x91a)])['trim']()};const _0x3b1957=_0x50232d(_0x14e725['stdout']);return this['installedAppsCache']={'at':Date[_0xbb6fb9(0x3d1)](),'key':_0x11afff,'apps':_0x3b1957},{'success':!![],'apps':_0x3b1957};}async['getActiveApp'](){const _0x495047=_0x3ee7d6;if(!this['screen'])return{'success':![],'error':_0x495047(0x407)};return this['screen'][_0x495047(0x2e6)]();}[_0x3ee7d6(0x88b)](){const _0x4d1ade=_0x3ee7d6;this['udid']=null,this[_0x4d1ade(0x3d5)]=![],this['udidResolvedAt']=0x0,this[_0x4d1ade(0x601)]=null,this[_0x4d1ade(0x61b)]=null,this['installedAppsCache']=null;}},_0xb68fb9=class{constructor(_0x486be3){const _0x341889=_0x3ee7d6;this[_0x341889(0x5e9)]=_0x486be3;}async[_0x3ee7d6(0x86a)](){const _0x19895c=_0x3ee7d6,_0x17dcfc=await this['screen'][_0x19895c(0x9b2)]();if(!_0x17dcfc){const _0x5089d0=await this['screen'][_0x19895c(0x8f8)]()[_0x19895c(0x4ba)](()=>'http://localhost:8100'),_0x3dec6d=_0x5089d0['replace'](/^https?:\/\//,'');return{'awake':![],'lockState':_0x19895c(0x3de),'remediation':'WebDriverAgent\x20is\x20not\x20reachable\x20at\x20'+_0x3dec6d+'.\x20Open\x20Xcode,\x20run\x20the\x20WebDriverAgentRunner\x20target\x20on\x20your\x20connected\x20iPhone\x20once,\x20then\x20try\x20again\x20on\x20real\x20devices.\x20Simulator\x20support\x20is\x20available\x20via\x20rn_wda_start.'};}const _0x24b70a=await this[_0x19895c(0x34b)]();if(_0x24b70a==='unlocked')return{'awake':!![],'lockState':_0x19895c(0x92f)};if(_0x24b70a==='locked'||_0x24b70a==='screen-off'){const _0xb18a76=await this[_0x19895c(0x5e9)][_0x19895c(0x463)]();if(_0xb18a76[_0x19895c(0x42d)]){const _0x48c1de=await this[_0x19895c(0x34b)]();if(_0x48c1de==='unlocked')return{'awake':!![],'lockState':_0x19895c(0x92f)};}await this['screen']['pressKey'](_0x19895c(0x2dd))[_0x19895c(0x4ba)](()=>void 0x0);const _0x30eb9c=await this['getLockState']();if(_0x30eb9c==='unlocked')return{'awake':!![],'lockState':_0x19895c(0x92f)};return{'awake':![],'lockState':_0x30eb9c,'remediation':'Device\x20is\x20locked.\x20Unlock\x20it\x20manually\x20once,\x20then\x20set\x20Settings\x20→\x20Display\x20&\x20Brightness\x20→\x20Auto-Lock\x20→\x20Never\x20so\x20it\x20stays\x20awake\x20while\x20flows\x20run.\x20WDA\x20can\x27t\x20bypass\x20Face\x20ID\x20or\x20a\x20passcode.'};}return{'awake':![],'lockState':_0x24b70a,'remediation':_0x19895c(0x4b0)};}['keepAliveHeartbeat'](_0x14986c={}){const _0x22d4ec=_0x3ee7d6,_0xeac399=_0x14986c[_0x22d4ec(0x174)]??0x5dc,_0x5b7394=setInterval(()=>{const _0x848e32=_0x22d4ec;this['screen']['pingStatus']()[_0x848e32(0x4ba)](()=>void 0x0);},_0xeac399);if(typeof _0x5b7394[_0x22d4ec(0x60e)]===_0x22d4ec(0x8b5))_0x5b7394['unref']();let _0x582e8f=![];return{'intervalMs':_0xeac399,'stop':()=>{if(_0x582e8f)return;_0x582e8f=!![],clearInterval(_0x5b7394);}};}async[_0x3ee7d6(0x34b)](){const _0x54ab47=_0x3ee7d6,_0x4f2f19=await this[_0x54ab47(0x5e9)][_0x54ab47(0x4e9)]();if(_0x4f2f19===!![])return'locked';if(_0x4f2f19===![]){const _0x359461=await this['hasCoverSheet']();return _0x359461?'locked':_0x54ab47(0x92f);}const _0x318084=await this['hasCoverSheet']();if(_0x318084===null)return'unknown';return _0x318084?'locked':_0x54ab47(0x92f);}async['hasCoverSheet'](){const _0x453d85=_0x3ee7d6,_0x3d05ca=await this['screen'][_0x453d85(0x8c5)]();if(!_0x3d05ca['success']||!_0x3d05ca[_0x453d85(0x827)])return null;const _0x4369b2=['sbcoversheet','lock\x20screen',_0x453d85(0x5ef)];let _0x14311b=![];const _0x4048e0=_0x1ab5ba=>{const _0x5b2ea6=_0x453d85;if(_0x14311b)return;const _0x257c3e=[_0x1ab5ba[_0x5b2ea6(0x4d1)],_0x1ab5ba['label'],_0x1ab5ba['type']]['filter'](Boolean)['join']('\x20')['toLowerCase']();if(_0x4369b2[_0x5b2ea6(0x2a5)](_0x4cf591=>_0x257c3e['includes'](_0x4cf591))){_0x14311b=!![];return;}const _0xb612c0=_0x1ab5ba['children'];if(Array[_0x5b2ea6(0x246)](_0xb612c0)){for(const _0x560141 of _0xb612c0)_0x4048e0(_0x560141);}};return _0x4048e0(_0x3d05ca['source']),_0x14311b;}async['setOrientation'](_0xfc3ece){const _0xbe5d52=_0x3ee7d6;return this[_0xbe5d52(0x5e9)][_0xbe5d52(0x71b)](_0xfc3ece);}[_0x3ee7d6(0xfd)](){const _0xe701c0=_0x3ee7d6;return{'success':![],'message':_0xe701c0(0x50b)};}};import{readFile as _0xbd36d8}from'fs/promises';import{join as _0xf298ab}from'path';var _0x51d214='cer_';function _0x469277(_0x2116cb){return _0x2116cb['startsWith'](_0x51d214);}function _0x3d1131(_0x2e3b21){const _0x4c0e13=_0x3ee7d6;if(!_0x469277(_0x2e3b21))return null;const _0x520350=_0x2e3b21[_0x4c0e13(0x63b)](_0x51d214[_0x4c0e13(0x945)]),_0x2cd665=_0x520350[_0x4c0e13(0x678)](/^(.+)_(\d+)_(\d+)_([0-9a-f]{10})$/);if(!_0x2cd665)return null;return{'pathSlug':_0x2cd665[0x1],'line':Number(_0x2cd665[0x2]),'col':Number(_0x2cd665[0x3]),'hash':_0x2cd665[0x4]};}import{readFileSync}from'fs';import{join as _0x3e1e01}from'path';var _0x453c21={'react-native':{'Modal':{'gatingProp':_0x3ee7d6(0x7a4),'kind':_0x3ee7d6(0x103)}}},_0x4473a8={'firebase/auth':{'onAuthStateChanged':{'tier':_0x3ee7d6(0x155),'subscribesTo':_0x3ee7d6(0x657),'subscribeMethod':_0x3ee7d6(0x3e8)},'signOut':{'tier':_0x3ee7d6(0x17b),'mutates':_0x3ee7d6(0x19c),'mutationMethod':_0x3ee7d6(0x564),'delta':{'aspect':_0x3ee7d6(0x4d6),'transition':_0x3ee7d6(0x192),'confidence':_0x3ee7d6(0x270)}},'signInWithEmailAndPassword':{'tier':_0x3ee7d6(0x17b),'mutates':'auth-profile','mutationMethod':_0x3ee7d6(0x6eb),'delta':{'aspect':'authState','transition':_0x3ee7d6(0x799),'confidence':'high'}}}},_0x372fab=null,_0x1fd90c=null;function _0x21e32b(_0x1670dd){const _0x4ec719=_0x3ee7d6;if(_0x1670dd===null){_0x372fab=null;return;}_0x372fab=Object[_0x4ec719(0x4f4)](Object[_0x4ec719(0x36e)](Object['entries'](_0x1670dd)[_0x4ec719(0x986)](([_0x352822,_0x43166f])=>[_0x352822,Object['freeze']({..._0x43166f})])));}function _0x33e0fe(_0x3c368f){if(_0x3c368f===null){_0x1fd90c=null;return;}_0x1fd90c=Object['freeze'](Object['fromEntries'](Object['entries'](_0x3c368f)['map'](([_0x165ad6,_0x208492])=>[_0x165ad6,Object['freeze']({..._0x208492})])));}var _0x34794e=Object[_0x3ee7d6(0x4f4)](Object['fromEntries'](Object['entries'](_0x453c21)['map'](([_0x512717,_0x2ecb43])=>[_0x512717,Object[_0x3ee7d6(0x4f4)]({..._0x2ecb43})]))),_0xd6305d=Object[_0x3ee7d6(0x4f4)](Object['fromEntries'](Object[_0x3ee7d6(0x6b0)](_0x4473a8)['map'](([_0xda96a4,_0x162e06])=>[_0xda96a4,Object[_0x3ee7d6(0x4f4)]({..._0x162e06})])));function _0x1ef47b(_0xfaf98b,_0x3e27e7=()=>{}){const _0x38b794=_0x3ee7d6;if(!_0xfaf98b||typeof _0xfaf98b!==_0x38b794(0x5ab)||Array['isArray'](_0xfaf98b))return _0x3e27e7(_0x38b794(0x6ff)),null;const _0x12fdb2=_0xfaf98b;if(_0x12fdb2[_0x38b794(0x7a9)]!=='componentControl')return _0x3e27e7('componentControl:\x20tier\x20must\x20be\x20\x22componentControl\x22'),null;if(typeof _0x12fdb2['componentName']!==_0x38b794(0x7fd)||_0x12fdb2[_0x38b794(0x195)]['length']===0x0)return _0x3e27e7(_0x38b794(0x930)),null;const _0x160c2c=_0x12fdb2[_0x38b794(0x47f)];if(_0x160c2c!=='boolean-prop'&&_0x160c2c!=='ref-imperative'&&_0x160c2c!=='render-prop')return _0x3e27e7('componentControl:\x20controlShape\x20must\x20be\x20one\x20of\x20\x22boolean-prop\x22|\x22ref-imperative\x22|\x22render-prop\x22\x20(got\x20'+JSON['stringify'](_0x160c2c)+')'),null;if(typeof _0x12fdb2[_0x38b794(0x54c)]!=='string'||_0x12fdb2[_0x38b794(0x54c)]['length']===0x0)return _0x3e27e7('componentControl:\x20stateInference\x20must\x20be\x20a\x20non-empty\x20string'),null;if(_0x160c2c==='boolean-prop'){if(typeof _0x12fdb2['visibilityProp']!==_0x38b794(0x7fd)||_0x12fdb2[_0x38b794(0x812)][_0x38b794(0x945)]===0x0)return _0x3e27e7('componentControl:\x20boolean-prop\x20entries\x20require\x20non-empty\x20visibilityProp'),null;}else{if(_0x160c2c==='ref-imperative'){if(!Array[_0x38b794(0x246)](_0x12fdb2[_0x38b794(0x9b3)])||_0x12fdb2[_0x38b794(0x9b3)][_0x38b794(0x945)]===0x0||!_0x12fdb2[_0x38b794(0x9b3)]['every'](_0x2f6e6e=>typeof _0x2f6e6e==='string'&&_0x2f6e6e[_0x38b794(0x945)]>0x0))return'mvLvC'===_0x38b794(0x160)?'warn':(_0x3e27e7(_0x38b794(0x838)),null);}}if(_0x12fdb2['uiKind']!=='modal'&&_0x12fdb2[_0x38b794(0x729)]!==_0x38b794(0x6da)&&_0x12fdb2[_0x38b794(0x729)]!=='sheet'&&_0x12fdb2['uiKind']!=='accordion'&&_0x12fdb2['uiKind']!==_0x38b794(0x522)&&_0x12fdb2['uiKind']!=='reveal')return _0x3e27e7(_0x38b794(0x69b)+JSON[_0x38b794(0x2c1)](_0x12fdb2[_0x38b794(0x729)])+')\x20—\x20entry\x20rejected'),null;const _0x49821a={'tier':'componentControl','componentName':_0x12fdb2['componentName'],'controlShape':_0x160c2c,'stateInference':_0x12fdb2['stateInference'],'uiKind':_0x12fdb2[_0x38b794(0x729)]};typeof _0x12fdb2[_0x38b794(0x812)]==='string'&&_0x12fdb2['visibilityProp']['length']>0x0&&(_0x49821a['visibilityProp']=_0x12fdb2[_0x38b794(0x812)]);if(Array[_0x38b794(0x246)](_0x12fdb2['openMethods'])){const _0x24ad50=_0x12fdb2['openMethods'][_0x38b794(0x65c)](_0x239aa3=>typeof _0x239aa3==='string'&&_0x239aa3[_0x38b794(0x945)]>0x0);if(_0x24ad50['length']>0x0)_0x49821a['openMethods']=_0x24ad50;}if(Array[_0x38b794(0x246)](_0x12fdb2['closeMethods'])){const _0x54ab44=_0x12fdb2['closeMethods'][_0x38b794(0x65c)](_0x1f0104=>typeof _0x1f0104==='string'&&_0x1f0104[_0x38b794(0x945)]>0x0);if(_0x54ab44['length']>0x0)_0x49821a[_0x38b794(0x74f)]=_0x54ab44;}typeof _0x12fdb2['renderPropName']===_0x38b794(0x7fd)&&_0x12fdb2['renderPropName']['length']>0x0&&(_0x49821a['renderPropName']=_0x12fdb2['renderPropName']);(_0x12fdb2[_0x38b794(0x8cd)]==='npm'||_0x12fdb2[_0x38b794(0x8cd)]===_0x38b794(0xff))&&(_0x49821a[_0x38b794(0x8cd)]=_0x12fdb2['origin']);if(typeof _0x12fdb2[_0x38b794(0x892)]===_0x38b794(0x7fd))_0x49821a['version']=_0x12fdb2[_0x38b794(0x892)];if(typeof _0x12fdb2['fileHash']===_0x38b794(0x7fd))_0x49821a[_0x38b794(0x726)]=_0x12fdb2[_0x38b794(0x726)];if(Array[_0x38b794(0x246)](_0x12fdb2['discoveredIn'])){const _0x1ca4a0=_0x12fdb2[_0x38b794(0x235)]['filter'](_0x2eee0d=>typeof _0x2eee0d===_0x38b794(0x7fd)&&_0x2eee0d[_0x38b794(0x945)]>0x0);if(_0x1ca4a0['length']>0x0)_0x49821a['discoveredIn']=_0x1ca4a0;}return _0x49821a;}function _0x471a3f(_0x4ffc58,_0x174b83=()=>{}){const _0x1d06fc=_0x3ee7d6;if(!_0x4ffc58||typeof _0x4ffc58!=='object'||Array[_0x1d06fc(0x246)](_0x4ffc58))return _0x174b83(_0x1d06fc(0x468)),null;const _0x4a66cc=_0x4ffc58;if(_0x4a66cc[_0x1d06fc(0x7a9)]!==_0x1d06fc(0x3bd))return _0x174b83(_0x1d06fc(0x808)),null;if(typeof _0x4a66cc[_0x1d06fc(0x5ba)]!==_0x1d06fc(0x7fd)||_0x4a66cc['hookName'][_0x1d06fc(0x945)]===0x0)return _0x174b83(_0x1d06fc(0x1da)),null;const _0x1bb637=_0x4a66cc[_0x1d06fc(0x321)];if(!_0x1bb637||typeof _0x1bb637!=='object'||Array['isArray'](_0x1bb637))return _0x174b83(_0x1d06fc(0x218)),null;const _0x556652=_0x1bb637;if(typeof _0x556652[_0x1d06fc(0x21d)]!=='string'||_0x556652[_0x1d06fc(0x21d)][_0x1d06fc(0x945)]===0x0)return _0x174b83('componentHook:\x20returns.state\x20must\x20be\x20a\x20non-empty\x20string'),null;if(typeof _0x556652['openMethod']!=='string'||_0x556652['openMethod']['length']===0x0)return _0x174b83('componentHook:\x20returns.openMethod\x20must\x20be\x20a\x20non-empty\x20string'),null;if(typeof _0x556652[_0x1d06fc(0x898)]!=='string'||_0x556652[_0x1d06fc(0x898)][_0x1d06fc(0x945)]===0x0)return _0x174b83('componentHook:\x20returns.closeMethod\x20must\x20be\x20a\x20non-empty\x20string'),null;if(typeof _0x4a66cc['stateInference']!=='string'||_0x4a66cc['stateInference']['length']===0x0)return _0x174b83('componentHook:\x20stateInference\x20must\x20be\x20a\x20non-empty\x20string'),null;const _0x4a2ccb={'tier':'componentHook','hookName':_0x4a66cc[_0x1d06fc(0x5ba)],'returns':{'state':_0x556652[_0x1d06fc(0x21d)],'openMethod':_0x556652[_0x1d06fc(0x830)],'closeMethod':_0x556652[_0x1d06fc(0x898)]},'stateInference':_0x4a66cc['stateInference']};typeof _0x556652[_0x1d06fc(0x1c6)]===_0x1d06fc(0x7fd)&&_0x556652['toggleMethod']['length']>0x0&&(_0x4a2ccb['returns'][_0x1d06fc(0x1c6)]=_0x556652['toggleMethod']);if(_0x4a66cc['origin']==='npm'||_0x4a66cc[_0x1d06fc(0x8cd)]==='local-hash'){if(_0x1d06fc(0x240)!=='nEntr'){const _0x54d80c=_0x13cf7d['timeoutMs']-(_0x4fd358()-_0x5dee55),_0x93f9b9=_0x8d3bba[_0x1d06fc(0x4da)](_0x54d80c,0x0);_0x3c01db=_0x400a6a(()=>{const _0x1bd8bd=_0x1d06fc;_0x32cac1(new _0x4a25d9(_0x3a3c8b(_0x50b874[_0x1bd8bd(0x5aa)])));},_0x93f9b9);}else _0x4a2ccb[_0x1d06fc(0x8cd)]=_0x4a66cc['origin'];}if(typeof _0x4a66cc[_0x1d06fc(0x892)]===_0x1d06fc(0x7fd))_0x4a2ccb[_0x1d06fc(0x892)]=_0x4a66cc[_0x1d06fc(0x892)];if(typeof _0x4a66cc['fileHash']==='string')_0x4a2ccb['fileHash']=_0x4a66cc['fileHash'];if(Array['isArray'](_0x4a66cc['discoveredIn'])){const _0x479f81=_0x4a66cc['discoveredIn']['filter'](_0x3b95fa=>typeof _0x3b95fa===_0x1d06fc(0x7fd)&&_0x3b95fa['length']>0x0);if(_0x479f81[_0x1d06fc(0x945)]>0x0)_0x4a2ccb[_0x1d06fc(0x235)]=_0x479f81;}return _0x4a2ccb;}import{webcrypto}from'crypto';var _0x1034e6=new Uint8Array([0x58,0xf7,0x5d,0x60,0xe7,0xd6,0xf6,0x35,0xbf,0x3b,0x37,0xee,0x24,0x65,0x3a,0xa3,0x8b,0xc4,0x57,0xc5,0x4a,0x2a,0x63,0x8d,0x99,0x66,0xa4,0xb1,0x3c,0x2e,0x35,0xa4]);function _0x38ffec(_0x112a8f){if(_0x112a8f['length']!==0x20)return![];for(let _0x3612d7=0x0;_0x3612d7<0x20;_0x3612d7++){if(_0x112a8f[_0x3612d7]!==0x0)return![];}return!![];}var _0x5b7b12=0x1388,_0xf2f603=0x1e*0x18*0x3c*0x3c*0x3e8,_0x23d5e9={'name':_0x3ee7d6(0x60f)};async function _0x3b7537(_0x37ac20){const _0x4f4224=_0x3ee7d6;if(_0x38ffec(_0x37ac20[_0x4f4224(0x14b)]))return null;const _0x3ff16e=_0x37ac20[_0x4f4224(0x5aa)]??_0x5b7b12,_0x2ba8a1=_0x37ac20['fetchImpl']??fetch,_0x2e880f=_0x37ac20[_0x4f4224(0x3d1)]??Date['now'],_0x460377=new AbortController(),_0x5c871d=setTimeout(()=>_0x460377['abort'](),_0x3ff16e);let _0x3d9e80;try{if(_0x4f4224(0x373)!==_0x4f4224(0x373))return{'stopped':![]};else{const _0x16bf8e=await _0x2ba8a1(_0x37ac20[_0x4f4224(0x4b8)],{'signal':_0x460377['signal'],'headers':{'Accept':_0x4f4224(0x742)}});if(!_0x16bf8e['ok']){if('LAkmY'===_0x4f4224(0xec)){const _0x2c82da=_0x1d9cfd(_0x20b1b6);if(_0x2c82da!==null)!_0x58db8c[_0x1fffde]&&(_0x5e6502[_0x591c9d]=_0x59c079[_0x4f4224(0x723)](null)),_0xf5c212[_0x167534][_0x39e3cc]=_0x2c82da;else{const _0x42f831=typeof _0x1b661c==='object'&&_0x5decfc!==null&&_0x4f4224(0x7a9)in _0x147391?'\x20(tier:\x20'+_0x5c36d1(_0x39b381['tier'])+')':'';_0x513750(_0x388e65,_0x4da668+':'+_0x2f2677+'#'+_0x4f6258+_0x42f831);}}else return null;}_0x3d9e80=await _0x16bf8e[_0x4f4224(0x5d9)]();}}catch{return null;}finally{clearTimeout(_0x5c871d);}let _0x2899d5;try{_0x2899d5=JSON[_0x4f4224(0x229)](_0x3d9e80);}catch{return null;}if(!_0x207c9f(_0x2899d5))return null;const _0x158a49=Date[_0x4f4224(0x229)](_0x2899d5['signedAt']);if(!Number['isFinite'](_0x158a49))return null;const _0xf9a063=_0x2e880f()-_0x158a49;if(_0xf9a063<0x0||_0xf9a063>_0xf2f603)return null;const _0x327aaf=_0x540674(_0x2899d5['catalog'],_0x2899d5['libraryCatalog'],_0x2899d5[_0x4f4224(0x123)],_0x2899d5[_0x4f4224(0x69c)]);let _0x4bed18;try{if(_0x4f4224(0x73b)==='dGSal')_0x4bed18=_0x1bcb26(_0x2899d5[_0x4f4224(0x547)]);else{_0x3164fe['axCache']['set'](_0x6844c6,_0x90ad46['axCache']['currentEpoch']());const _0x396c07=this['screen']['findElementFromTree'](_0x6afa60,_0x2f03df),_0x190faa=_0x396c07[0x0];if(_0x190faa?.[_0x4f4224(0x578)])return{'success':!![],'details':{'element':{'type':_0x190faa['type']??_0x4f4224(0x3de),'label':_0x190faa['label']??_0x190faa[_0x4f4224(0x4d1)]??'','bounds':_0x190faa['rect']}}};return{'success':![],'error':'assertVisible:\x20element\x20not\x20visible:\x20'+_0x4d6854['stringify'](_0x4b4504)};}}catch{return null;}let _0x44b8f9;try{_0x44b8f9=await webcrypto[_0x4f4224(0x340)][_0x4f4224(0x335)]('raw',_0x37ac20['publicKey'],_0x23d5e9,![],['verify']);}catch{return null;}let _0x46f682;try{_0x46f682=await webcrypto[_0x4f4224(0x340)]['verify'](_0x23d5e9,_0x44b8f9,_0x4bed18,_0x327aaf);}catch{return null;}if(!_0x46f682)return null;const _0xa7edf0={'droppedCount':0x0,'samples':[]},_0x2c2f78={'catalog':_0x43cdda(_0x2899d5[_0x4f4224(0x942)],_0x15b282,_0x4f4224(0x942),_0xa7edf0)};return _0x2899d5['libraryCatalog']&&(_0x2c2f78[_0x4f4224(0x58a)]=_0x36daf0(_0x2899d5['libraryCatalog'],_0x15b282,'library',_0xa7edf0)),_0x2899d5[_0x4f4224(0x123)]&&(_0x2c2f78[_0x4f4224(0x123)]=_0x36daf0(_0x2899d5['extendedCatalog'],_0x483e56,'extended',_0xa7edf0)),_0xa7edf0[_0x4f4224(0x25e)]>0x0&&(_0x2c2f78[_0x4f4224(0x507)]=_0xa7edf0),_0x2c2f78;}async function _0x2992bc(_0xe2e392){const _0x340d63=_0x3ee7d6,_0x2a1cb5=_0xe2e392[_0x340d63(0x5aa)]??_0x5b7b12,_0xc80b4d=_0xe2e392['fetchImpl']??fetch,_0x1d4a4f=new AbortController(),_0x405c80=setTimeout(()=>_0x1d4a4f['abort'](),_0x2a1cb5);try{const _0x1579bf=await _0xc80b4d(_0xe2e392[_0x340d63(0x4b8)],{'signal':_0x1d4a4f[_0x340d63(0x294)],'headers':{'Accept':_0x340d63(0x742)}});if(!_0x1579bf['ok'])return null;const _0x4516aa=await _0x1579bf[_0x340d63(0x5d9)]();let _0x3d9a79;try{_0x3d9a79=JSON['parse'](_0x4516aa);}catch{return null;}if(!_0x3d9a79||typeof _0x3d9a79!=='object'||typeof _0x3d9a79['publicKey']!==_0x340d63(0x7fd))return null;const _0x5759a5=_0x1bcb26(_0x3d9a79['publicKey']);if(_0x5759a5[_0x340d63(0x945)]!==0x20)return null;return _0x5759a5;}catch{return null;}finally{clearTimeout(_0x405c80);}}var _0x5071df=new Set([_0x3ee7d6(0x1e9),'constructor','prototype']);function _0x2da679(_0x42d3cc){const _0x39cca8=_0x3ee7d6;return _0x42d3cc[_0x39cca8(0x945)]>0x0&&!_0x5071df[_0x39cca8(0x21c)](_0x42d3cc);}function _0x207c9f(_0x15e3a4){const _0x346c91=_0x3ee7d6;if(typeof _0x15e3a4!=='object'||_0x15e3a4===null)return![];const _0x8e3646=_0x15e3a4;if(typeof _0x8e3646['signedAt']!==_0x346c91(0x7fd))return![];if(typeof _0x8e3646[_0x346c91(0x547)]!==_0x346c91(0x7fd))return![];if(typeof _0x8e3646[_0x346c91(0x942)]!=='object'||_0x8e3646['catalog']===null||Array[_0x346c91(0x246)](_0x8e3646[_0x346c91(0x942)]))return![];for(const [_0x3a3e61]of Object[_0x346c91(0x6b0)](_0x8e3646[_0x346c91(0x942)])){if(typeof _0x3a3e61!==_0x346c91(0x7fd)||!_0x2da679(_0x3a3e61))return![];}if(_0x8e3646[_0x346c91(0x58a)]!==void 0x0){if(typeof _0x8e3646[_0x346c91(0x58a)]!==_0x346c91(0x5ab)||_0x8e3646['libraryCatalog']===null||Array[_0x346c91(0x246)](_0x8e3646[_0x346c91(0x58a)]))return![];for(const [_0x3a6ade,_0x83e256]of Object['entries'](_0x8e3646['libraryCatalog'])){if(typeof _0x3a6ade!==_0x346c91(0x7fd)||!_0x2da679(_0x3a6ade))return![];if(typeof _0x83e256!=='object'||_0x83e256===null||Array[_0x346c91(0x246)](_0x83e256))return![];for(const [_0x4cc8d8]of Object['entries'](_0x83e256)){if(_0x346c91(0x24e)==='rvIdr'){if(typeof _0x4cc8d8!==_0x346c91(0x7fd)||!_0x2da679(_0x4cc8d8))return![];}else try{_0x465766[_0x346c91(0x116)](_0x6e141b);}catch{}}}}if(_0x8e3646['extendedCatalog']!==void 0x0){if(typeof _0x8e3646['extendedCatalog']!=='object'||_0x8e3646['extendedCatalog']===null||Array['isArray'](_0x8e3646[_0x346c91(0x123)]))return![];for(const [_0x3bd34c,_0x46eca1]of Object[_0x346c91(0x6b0)](_0x8e3646[_0x346c91(0x123)])){if(typeof _0x3bd34c!==_0x346c91(0x7fd)||!_0x2da679(_0x3bd34c))return![];if(typeof _0x46eca1!=='object'||_0x46eca1===null||Array[_0x346c91(0x246)](_0x46eca1))return![];for(const [_0x1a005c]of Object[_0x346c91(0x6b0)](_0x46eca1)){if(typeof _0x1a005c!=='string'||!_0x2da679(_0x1a005c))return![];}}}return!![];}var _0x431c28=0x8;function _0x474018(_0x5a930f,_0x3eda55){const _0x19d05f=_0x3ee7d6;_0x5a930f['droppedCount']+=0x1,_0x5a930f['samples'][_0x19d05f(0x945)]<_0x431c28&&_0x5a930f[_0x19d05f(0x6a0)][_0x19d05f(0x496)](_0x3eda55);}function _0x43cdda(_0x2d7841,_0x2cc19e,_0x49904f,_0x3486c7){const _0x34b317=Object['create'](null);for(const [_0x57bcd8,_0x2e25ff]of Object['entries'](_0x2d7841)){const _0x5d73c8=_0x2cc19e(_0x2e25ff);_0x5d73c8!==null?_0x34b317[_0x57bcd8]=_0x5d73c8:_0x474018(_0x3486c7,_0x49904f+':'+_0x57bcd8);}return _0x34b317;}function _0x36daf0(_0x10e442,_0x2d8d04,_0x314d67,_0x22f3b2){const _0x308ad3=_0x3ee7d6,_0x23bff3=Object['create'](null);for(const [_0x232237,_0x438068]of Object[_0x308ad3(0x6b0)](_0x10e442)){for(const [_0x584bad,_0x406f98]of Object[_0x308ad3(0x6b0)](_0x438068)){const _0x2ed6d6=_0x2d8d04(_0x406f98);if(_0x2ed6d6!==null)!_0x23bff3[_0x232237]&&(_0x23bff3[_0x232237]=Object[_0x308ad3(0x723)](null)),_0x23bff3[_0x232237][_0x584bad]=_0x2ed6d6;else{const _0x2c9988=typeof _0x406f98==='object'&&_0x406f98!==null&&_0x308ad3(0x7a9)in _0x406f98?'\x20(tier:\x20'+String(_0x406f98['tier'])+')':'';_0x474018(_0x22f3b2,_0x314d67+':'+_0x232237+'#'+_0x584bad+_0x2c9988);}}}return _0x23bff3;}function _0x15b282(_0x237f59){return _0x1b7ac3(_0x237f59)?_0x237f59:null;}function _0x483e56(_0x1acb56){const _0x3d25e0=_0x3ee7d6;if(typeof _0x1acb56!=='object'||_0x1acb56===null)return null;const _0xba3cd5=_0x1acb56;switch(_0xba3cd5[_0x3d25e0(0x7a9)]){case _0x3d25e0(0x155):return typeof _0xba3cd5[_0x3d25e0(0x7f0)]===_0x3d25e0(0x7fd)?_0x1acb56:null;case _0x3d25e0(0x17b):return typeof _0xba3cd5['mutates']==='string'?_0x1acb56:null;case'permission-gate':return typeof _0xba3cd5['permissionKind']===_0x3d25e0(0x7fd)?_0x1acb56:null;case'bridge-opaque':return typeof _0xba3cd5['capability']==='string'?_0x1acb56:null;case _0x3d25e0(0x735):return _0x1ef47b(_0xba3cd5);case _0x3d25e0(0x3bd):return _0x471a3f(_0xba3cd5);default:return null;}}function _0x1b7ac3(_0x2b9831){const _0x1adbc4=_0x3ee7d6;if(typeof _0x2b9831!=='object'||_0x2b9831===null)return![];const _0x4ca388=_0x2b9831;if(typeof _0x4ca388[_0x1adbc4(0x512)]!==_0x1adbc4(0x7fd))return![];if(typeof _0x4ca388['kind']!=='string')return![];if(_0x4ca388['gatingExpression']!==void 0x0&&_0x4ca388['gatingExpression']!==_0x1adbc4(0x715)&&_0x4ca388['gatingExpression']!==_0x1adbc4(0x21b))return![];if(_0x4ca388['requiresAncestor']!==void 0x0&&typeof _0x4ca388[_0x1adbc4(0x867)]!=='string')return![];if(_0x4ca388[_0x1adbc4(0x288)]!==void 0x0&&_0x4ca388['controlMode']!==_0x1adbc4(0x888)&&_0x4ca388['controlMode']!==_0x1adbc4(0x1b8))return![];if(_0x4ca388['controlProp']!==void 0x0&&typeof _0x4ca388['controlProp']!==_0x1adbc4(0x7fd))return![];return!![];}function _0x540674(_0x3f8454,_0x53af5c,_0x3e11bd,_0x430e77){const _0x1695e0=_0x3ee7d6,_0x60f9d3={'catalog':_0x523171(_0x3f8454),'signedAt':_0x430e77};_0x53af5c!==void 0x0&&(_0x60f9d3[_0x1695e0(0x58a)]=_0x523171(_0x53af5c));_0x3e11bd!==void 0x0&&(_0x60f9d3[_0x1695e0(0x123)]=_0x523171(_0x3e11bd));const _0x45ace7=JSON['stringify'](_0x523171(_0x60f9d3));return new TextEncoder()[_0x1695e0(0x2d1)](_0x45ace7);}function _0x523171(_0x1b4228){const _0x4968fa=_0x3ee7d6;if(Array['isArray'](_0x1b4228))return _0x1b4228[_0x4968fa(0x986)](_0x4628dd=>_0x523171(_0x4628dd));if(_0x1b4228!==null&&typeof _0x1b4228===_0x4968fa(0x5ab)){const _0x4fa575={},_0x5aeb8f=Object[_0x4968fa(0x208)](_0x1b4228)[_0x4968fa(0x837)]();for(const _0xcc180c of _0x5aeb8f){_0x4fa575[_0xcc180c]=_0x523171(_0x1b4228[_0xcc180c]);}return _0x4fa575;}return _0x1b4228;}function _0x1bcb26(_0x7851bf){const _0x477208=_0x3ee7d6;return new Uint8Array(Buffer['from'](_0x7851bf,_0x477208(0x589)));}var _0xf13c3e=0x4,_0x4e85ea=0x4,_0x472ef1=0x1388,_0x585a54=new Set([_0x3ee7d6(0x30c),'Image']);function _0x536ba2(_0x52cb2a,_0x5b6636,_0xfe895b){const _0x530885=_0x3ee7d6;if(!_0x8602e2(_0x52cb2a)||!_0x8602e2(_0x5b6636))return _0x2160f5();if(!_0x1ed572(_0xfe895b))return _0x2160f5();const _0x13ce18=_0x20c00e(_0x52cb2a[_0x530885(0x572)]),_0x36a56d=_0x20c00e(_0x5b6636['nodes']);if(!_0x441f13(_0x13ce18,_0x36a56d))return _0x2160f5();const _0x4319fa=[],_0x113f56=[],_0x23cfb3=new Set();for(const [_0x44ad93,_0x49170c]of _0x13ce18){_0x23cfb3[_0x530885(0x5c1)](_0x44ad93);const _0x58b25b=_0x36a56d['get'](_0x44ad93);if(_0x58b25b===void 0x0){_0x49170c['visible']&&(_0x4319fa['push']({'region':_0x1d3fd8(_0x49170c[_0x530885(0x94c)]),'kind':'removed','severity':_0x50f975('removed',_0x49170c,_0x49170c[_0x530885(0x94c)]),'nodeId':_0x44ad93}),_0x113f56[_0x530885(0x496)](_0x49170c['kind']??_0x530885(0x8a3)));continue;}const _0x28c5a7=_0x58b25b[_0x530885(0x94c)]['x']-_0x49170c[_0x530885(0x94c)]['x'],_0x329eae=_0x58b25b[_0x530885(0x94c)]['y']-_0x49170c[_0x530885(0x94c)]['y'],_0x1a6af8=_0x58b25b['bounds']['w']-_0x49170c[_0x530885(0x94c)]['w'],_0xc765f3=_0x58b25b['bounds']['h']-_0x49170c['bounds']['h'];(Math['abs'](_0x28c5a7)>_0xf13c3e||Math['abs'](_0x329eae)>_0xf13c3e)&&(_0x4319fa[_0x530885(0x496)]({'region':_0x1d3fd8(_0x58b25b[_0x530885(0x94c)]),'kind':'moved','severity':_0x50f975(_0x530885(0x15a),_0x58b25b,_0x58b25b['bounds']),'nodeId':_0x44ad93,'delta':{'dx':_0x28c5a7,'dy':_0x329eae}}),_0x113f56[_0x530885(0x496)](_0x58b25b['kind']??'View')),(Math[_0x530885(0x9dc)](_0x1a6af8)>_0x4e85ea||Math['abs'](_0xc765f3)>_0x4e85ea)&&(_0x4319fa['push']({'region':_0x1d3fd8(_0x58b25b['bounds']),'kind':'resized','severity':_0x50f975(_0x530885(0x1ef),_0x58b25b,_0x58b25b['bounds']),'nodeId':_0x44ad93,'delta':{'dw':_0x1a6af8,'dh':_0xc765f3}}),_0x113f56['push'](_0x58b25b[_0x530885(0x3ea)]??'View'));}for(const [_0x3f70a5,_0x50635e]of _0x36a56d){if(_0x23cfb3[_0x530885(0x21c)](_0x3f70a5))continue;if(!_0x50635e['visible'])continue;_0x4319fa[_0x530885(0x496)]({'region':_0x1d3fd8(_0x50635e['bounds']),'kind':_0x530885(0x1dd),'severity':_0x50f975('added',_0x50635e,_0x50635e[_0x530885(0x94c)]),'nodeId':_0x3f70a5}),_0x113f56[_0x530885(0x496)](_0x50635e[_0x530885(0x3ea)]??'View');}const _0x167a8a=[],_0x1721d8=[];for(let _0x15eafa=0x0;_0x15eafa<_0x4319fa['length'];_0x15eafa++){const _0x5c39d7=_0x4319fa[_0x15eafa];if(_0x287df4(_0x5c39d7['region'],_0xfe895b))continue;_0x167a8a['push'](_0x5c39d7),_0x1721d8['push'](_0x113f56[_0x15eafa]);}if(_0x167a8a['length']===0x0)return _0x2160f5();return{'regressions':_0x167a8a,'warning':_0x33db6b(_0x167a8a,_0x1721d8,_0xfe895b)};}function _0x2160f5(){return{'regressions':[],'warning':null};}function _0x8602e2(_0x392d52){const _0x3d8eff=_0x3ee7d6;if(!_0x392d52)return![];if(!Array['isArray'](_0x392d52['nodes']))return![];if(_0x392d52[_0x3d8eff(0x572)][_0x3d8eff(0x945)]===0x0)return![];return!![];}function _0x1ed572(_0x4ceaab){const _0x4c737d=_0x3ee7d6;if(!_0x4ceaab)return![];if(!Number['isFinite'](_0x4ceaab['x'])||!Number[_0x4c737d(0x996)](_0x4ceaab['y']))return![];if(!Number['isFinite'](_0x4ceaab['w'])||!Number[_0x4c737d(0x996)](_0x4ceaab['h']))return![];if(_0x4ceaab['w']<=0x0||_0x4ceaab['h']<=0x0)return![];return!![];}function _0x20c00e(_0x2455ec){const _0x13da44=_0x3ee7d6,_0x371041=new Map();for(const _0x4eeeb6 of _0x2455ec){if(!_0x4eeeb6||typeof _0x4eeeb6['id']!=='string'||_0x4eeeb6['id'][_0x13da44(0x945)]===0x0)continue;if(!_0x4eeeb6['bounds'])continue;const {x:_0xecfbea,y:_0x583b15,w:_0x7cc7e,h:_0xe31432}=_0x4eeeb6['bounds'];if(!Number['isFinite'](_0xecfbea)||!Number['isFinite'](_0x583b15))continue;if(!Number['isFinite'](_0x7cc7e)||!Number['isFinite'](_0xe31432))continue;_0x371041['set'](_0x4eeeb6['id'],_0x4eeeb6);}return _0x371041;}function _0x441f13(_0x23f5af,_0x13015e){const _0x428f53=_0x3ee7d6,[_0x4ee436,_0x59c5c4]=_0x23f5af[_0x428f53(0x1bb)]<=_0x13015e['size']?[_0x23f5af,_0x13015e]:[_0x13015e,_0x23f5af];for(const _0x41cb6e of _0x4ee436[_0x428f53(0x208)]()){if(_0x59c5c4['has'](_0x41cb6e))return!![];}return![];}function _0x1d3fd8(_0x54228d){return{'x':_0x54228d['x'],'y':_0x54228d['y'],'w':_0x54228d['w'],'h':_0x54228d['h']};}function _0x287df4(_0x5e4796,_0x5a653d){const _0x7e2fff=_0x5e4796['x']+_0x5e4796['w'],_0x507227=_0x5e4796['y']+_0x5e4796['h'],_0x272169=_0x5a653d['x']+_0x5a653d['w'],_0x568eb0=_0x5a653d['y']+_0x5a653d['h'];if(_0x7e2fff<=_0x5a653d['x'])return![];if(_0x272169<=_0x5e4796['x'])return![];if(_0x507227<=_0x5a653d['y'])return![];if(_0x568eb0<=_0x5e4796['y'])return![];return!![];}function _0x50f975(_0x3c9dcb,_0x2d9d93,_0x837500){const _0xf03985=_0x3ee7d6,_0x10f16e=Math['max'](0x0,_0x837500['w'])*Math['max'](0x0,_0x837500['h']);if(_0x10f16e>_0x472ef1)return'high';if(_0x3c9dcb==='added'||_0x3c9dcb==='removed'){if(_0x2d9d93[_0xf03985(0x3ea)]&&_0x585a54[_0xf03985(0x21c)](_0x2d9d93['kind']))return _0xf03985(0x270);}return _0xf03985(0x579);}function _0x33db6b(_0x576a67,_0x2a08a3,_0x1ee9a0){const _0x158309=_0x3ee7d6,_0x5d89c5=new Map();for(let _0x44b55c=0x0;_0x44b55c<_0x576a67[_0x158309(0x945)];_0x44b55c++){if('YdJpr'!==_0x158309(0x8e6)){const _0x38bb60=_0x576a67[_0x44b55c],_0x255048=_0x2a08a3[_0x44b55c]??_0x158309(0x8a3),_0x4ce69a=_0x38bb60['kind']+'\x20'+_0x255048;_0x5d89c5['set'](_0x4ce69a,(_0x5d89c5['get'](_0x4ce69a)??0x0)+0x1);}else{const _0x454d76=_0x3c3b62['parse'](_0x56bf68);if(_0x454d76&&typeof _0x454d76===_0x158309(0x5ab))return _0x454d76;}}const _0x4a6dcb=Array['from'](_0x5d89c5[_0x158309(0x208)]())[_0x158309(0x837)](),_0x507a28=[];for(const _0x44072a of _0x4a6dcb){_0x507a28[_0x158309(0x496)](_0x5d89c5[_0x158309(0x47a)](_0x44072a)+'\x20'+_0x44072a);}const _0x5448ab=_0x1ee9a0[_0x158309(0x8b1)]?_0x158309(0x222)+_0x1ee9a0['screenName']+'\x20region':_0x158309(0x3e6);return _0x576a67['length']+'\x20unexpected\x20change'+(_0x576a67['length']===0x1?'':'s')+'\x20'+_0x5448ab+':\x20'+_0x507a28[_0x158309(0x221)](',\x20');}var _0xac47c2=class{[_0x3ee7d6(0x392)]=null;[_0x3ee7d6(0xdd)]=0x0;['invalidate'](){this['epoch']+=0x1,this['entry']=null;}['get'](_0x5cef4e){const _0x4328ff=_0x3ee7d6;if(!this[_0x4328ff(0x392)])return null;if(this['entry']['epoch']!==_0x5cef4e)return null;return this['entry']['tree'];}[_0x3ee7d6(0x3b6)](_0x57bb85,_0x266da0){const _0x220aab=_0x3ee7d6;this[_0x220aab(0x392)]={'tree':_0x57bb85,'epoch':this['epoch'],'capturedAtStep':_0x266da0};}['currentEpoch'](){const _0x11a3fd=_0x3ee7d6;return this[_0x11a3fd(0xdd)];}['reset'](){const _0x127b2a=_0x3ee7d6;this['entry']=null,this[_0x127b2a(0xdd)]=0x0;}};function _0x4017f0(_0x2c2f6c){const _0x158300=_0x3ee7d6;if(_0x2c2f6c['action']==='launch'||_0x2c2f6c[_0x158300(0x1ec)]===_0x158300(0x4c8)||_0x2c2f6c['action']===_0x158300(0x88b))return!![];if(_0x2c2f6c[_0x158300(0x1ec)]==='pressKey'&&_0x2c2f6c[_0x158300(0x2fe)]===_0x158300(0x2dd))return!![];if(_0x2c2f6c[_0x158300(0x1ec)]===_0x158300(0x454))return!![];if(_0x2c2f6c['action']===_0x158300(0x85c)&&_0x2c2f6c['into'])return!![];if(_0x2c2f6c[_0x158300(0x90b)])return!![];if(_0x2c2f6c['verifyProfileTransition'])return!![];if(_0x2c2f6c[_0x158300(0x636)]){if(_0x2c2f6c['verifyMutation'][_0x158300(0x248)]==='storage')return!![];const _0x1c5829=_0x2c2f6c['verifyMutation'][_0x158300(0x3f5)]['toUpperCase']();return _0x1c5829===_0x158300(0x2a0)||_0x1c5829==='PUT'||_0x1c5829==='PATCH'||_0x1c5829==='DELETE';}return![];}var _0x3f7b21=0x64;async function _0x1f590c(_0x2263df,_0x1cbe1e={}){const _0x1085b9=_0x3ee7d6;let _0x548340=_0x1cbe1e[_0x1085b9(0x94f)]??null;if(_0x548340===null){if(typeof _0x2263df['fetchSourceTree']!==_0x1085b9(0x8b5))return null;try{_0x548340=await _0x2263df[_0x1085b9(0x771)]();}catch{return null;}}if(!_0x548340)return null;const _0x519617=[];try{_0x4dba34(_0x548340,_0x519617,[]);}catch{return null;}if(_0x519617['length']===0x0)return null;return _0x1cbe1e['screenName']?{'nodes':_0x519617,'screenName':_0x1cbe1e[_0x1085b9(0x8b1)]}:{'nodes':_0x519617};}function _0x4dba34(_0x5a9b2e,_0xac64c7,_0xba66ae){const _0x5698ee=_0x3ee7d6;if(!_0x5a9b2e||typeof _0x5a9b2e!==_0x5698ee(0x5ab))return;const _0x574666=_0x3fb85c(_0x5a9b2e);if(_0x574666){const _0x1ac4d3=_0x23bc15(_0x5a9b2e)??'path:'+_0xba66ae[_0x5698ee(0x221)]('.'),_0x45e967=typeof _0x5a9b2e[_0x5698ee(0x85c)]===_0x5698ee(0x7fd)?_0x46d807(_0x5a9b2e[_0x5698ee(0x85c)]):void 0x0;_0xac64c7[_0x5698ee(0x496)]({'id':_0x1ac4d3,'bounds':_0x574666,'visible':_0x574666['w']>0x0&&_0x574666['h']>0x0,..._0x45e967?{'kind':_0x45e967}:{}});}const _0x2aab9f=Array['isArray'](_0x5a9b2e['children'])?_0x5a9b2e['children']:[];for(let _0x10d6b6=0x0;_0x10d6b6<_0x2aab9f[_0x5698ee(0x945)];_0x10d6b6++){_0x4dba34(_0x2aab9f[_0x10d6b6],_0xac64c7,[..._0xba66ae,_0x10d6b6]);}}function _0x3fb85c(_0xcc9f6a){const _0x5c7304=_0x3ee7d6,_0x18af54=_0xcc9f6a['rect'];if(!_0x18af54)return null;const _0x21cc8e=_0x21203a(_0x18af54['x']),_0x5ed46c=_0x21203a(_0x18af54['y']),_0x118fb6=_0x21203a(_0x18af54['width']),_0x128f5a=_0x21203a(_0x18af54[_0x5c7304(0x652)]);if(_0x21cc8e===null||_0x5ed46c===null||_0x118fb6===null||_0x128f5a===null)return null;return{'x':_0x21cc8e,'y':_0x5ed46c,'w':_0x118fb6,'h':_0x128f5a};}function _0x21203a(_0x59aaed){if(typeof _0x59aaed!=='number')return null;if(!Number['isFinite'](_0x59aaed))return null;return _0x59aaed;}function _0x23bc15(_0x12db60){const _0xdb00d4=_0x3ee7d6,_0x4e017a=_0x1d4a04(_0x12db60[_0xdb00d4(0x4d1)]);if(_0x4e017a)return _0x4e017a;const _0xf21283=_0x1d4a04(_0x12db60['label']);if(_0xf21283)return _0xf21283;const _0x54bfae=_0x1d4a04(_0x12db60[_0xdb00d4(0x84f)]);if(_0x54bfae)return _0x54bfae;return null;}function _0x1d4a04(_0x1cceb3){const _0x139bcf=_0x3ee7d6;if(typeof _0x1cceb3!==_0x139bcf(0x7fd))return null;if(_0x1cceb3[_0x139bcf(0x945)]===0x0)return null;return _0x1cceb3;}function _0x46d807(_0x515b1f){const _0x3894fd=_0x3ee7d6;if(_0x515b1f[_0x3894fd(0x83f)](_0x3894fd(0x34e)))return'Text';if(_0x515b1f[_0x3894fd(0x83f)](_0x3894fd(0x438)))return'Image';if(_0x515b1f['includes']('Button'))return'Button';if(_0x515b1f[_0x3894fd(0x83f)](_0x3894fd(0x44d))||_0x515b1f[_0x3894fd(0x83f)]('SecureText'))return'Input';return _0x3894fd(0x8a3);}function _0x10d648(_0x10280c,_0x508997){const _0x5c38b9=_0x3ee7d6;if(_0x10280c===void 0x0)return _0x508997;if(_0x508997===void 0x0)return _0x10280c;return Math[_0x5c38b9(0x4da)](_0x10280c,_0x508997);}function _0x3bfb27(_0x2c2dd){const _0xe8713b=_0x3ee7d6,{target:_0x38514b,..._0x1ec016}=_0x2c2dd;if(!_0x38514b)return _0x1ec016;const _0x4ac932={..._0x1ec016};switch(_0x4ac932[_0xe8713b(0x1ec)]){case'type':{const _0x4741bf=_0x4ac932['into'],_0x5aa828=_0x38514b[_0xe8713b(0x5d9)]??_0x38514b[_0xe8713b(0x9bb)];if(_0x4741bf===void 0x0&&(_0x5aa828!==void 0x0||_0x38514b[_0xe8713b(0x478)]!==void 0x0)){const _0x3da2af={};if(_0x5aa828!==void 0x0)_0x3da2af[_0xe8713b(0x5d9)]=_0x5aa828;_0x38514b['accessibilityLabel']!==void 0x0&&(_0x3da2af['accessibilityLabel']=_0x38514b[_0xe8713b(0x478)]),_0x4ac932[_0xe8713b(0x5fc)]=_0x3da2af;}_0x4ac932['fallbackText']===void 0x0&&_0x38514b['fallbackText']!==void 0x0&&(_0x4ac932['fallbackText']=_0x38514b[_0xe8713b(0x3ef)]);break;}case _0xe8713b(0x454):case'longPress':case'clearText':case _0xe8713b(0x69f):case _0xe8713b(0x85e):case'assertVisible':case _0xe8713b(0x9a2):{const _0x3db7c6=_0x38514b[_0xe8713b(0x5d9)]??_0x38514b[_0xe8713b(0x9bb)];_0x4ac932['text']===void 0x0&&_0x3db7c6!==void 0x0&&(_0x4ac932[_0xe8713b(0x5d9)]=_0x3db7c6);_0x4ac932['accessibilityLabel']===void 0x0&&_0x38514b['accessibilityLabel']!==void 0x0&&(_0x4ac932[_0xe8713b(0x478)]=_0x38514b[_0xe8713b(0x478)]);_0x4ac932[_0xe8713b(0x1ec)]!==_0xe8713b(0x425)&&_0x4ac932[_0xe8713b(0x1ec)]!==_0xe8713b(0x9a2)&&_0x4ac932[_0xe8713b(0x3ef)]===void 0x0&&_0x38514b['fallbackText']!==void 0x0&&(_0x4ac932['fallbackText']=_0x38514b[_0xe8713b(0x3ef)]);_0x4ac932[_0xe8713b(0x85c)]===void 0x0&&_0x38514b[_0xe8713b(0x1a1)]!==void 0x0&&(_0x4ac932[_0xe8713b(0x85c)]=_0x38514b[_0xe8713b(0x1a1)]);break;}default:break;}return _0x4ac932;}var _0x3351da=0x5*0x3c*0x3e8,_0x4463eb=0x3,_0x3a1f24=class{constructor(_0xf1de61,_0x188259,_0x2a1e8c,_0x2b4324={}){const _0x128ff0=_0x3ee7d6;this[_0x128ff0(0x5e9)]=_0xf1de61,this['apps']=_0x188259,this[_0x128ff0(0x90d)]=_0x2a1e8c,this[_0x128ff0(0x217)]=_0x2b4324;}async['run'](_0x3cf1aa,_0x19bae5){const _0x4404fc=_0x3ee7d6,_0x153784=_0x19bae5??this['opts']['runContext'],_0x18f032=Date['now'](),_0x534ed8=_0x3cf1aa['timeoutMs']??_0x3351da,_0x91ca5=_0x3cf1aa['steps']['map'](_0x4173b3=>_0x3bfb27(_0x4173b3)),_0xe1eec9=_0xf298ab(this['opts'][_0x4404fc(0x1f7)]??process[_0x4404fc(0x346)](),_0x4404fc(0x8b8)),_0x176e45=[],_0x1f5bf5=[],_0x3285ab=new Set(),_0x278c22=new _0xac47c2(),_0x8f74a6=!this[_0x4404fc(0x217)]['disableAXCache'],_0x3e89b0=!this['opts'][_0x4404fc(0x5e7)],_0x26ab35=_0x8f74a6?{'axCache':_0x278c22,'disableBulkActions':!_0x3e89b0}:{'disableBulkActions':!_0x3e89b0},_0x524ae8=!this['opts']['disableScopeRegression']&&_0x153784!==void 0x0;let _0x34188b=null;const _0x2b458f=new Set();try{const _0x1892fe=await this[_0x4404fc(0x628)](_0xe1eec9);for(const _0x9171e8 of _0x1892fe){_0x2b458f['add'](this[_0x4404fc(0x375)](_0x9171e8));}}catch{}let _0x1620c7;if(!this[_0x4404fc(0x217)]['skipEnsureAwake']){_0x1620c7=await this[_0x4404fc(0x90d)]['ensureAwake']();if(!_0x1620c7[_0x4404fc(0x12f)]){if(_0x4404fc(0x35b)!==_0x4404fc(0x985))return{'flow':_0x3cf1aa['name'],'flowId':_0x3cf1aa['flowId'],'success':![],'totalDurationMs':Date[_0x4404fc(0x3d1)]()-_0x18f032,'steps':[],'runtimeErrors':[],'awake':_0x1620c7};else _0x371e79[_0x4404fc(0x496)]({'location':_0x19d1d6['file']['relPath']+':'+_0x3e87ee[_0x4404fc(0xf5)],'key':_0x42899d[_0x4404fc(0x84f)]});}}const _0x135d03=this[_0x4404fc(0x217)][_0x4404fc(0x147)]?null:this[_0x4404fc(0x90d)]['keepAliveHeartbeat']({'intervalMs':0x5dc});try{if(_0x3cf1aa['beforeAll']?.[_0x4404fc(0x1e2)]){const _0x4d9c8f=await this['apps']['activateApp'](_0x3cf1aa['beforeAll']['ensureLaunched']);if(!_0x4d9c8f['success']){const _0x31a4b3=await this[_0x4404fc(0x7dd)]['launchApp'](_0x3cf1aa[_0x4404fc(0x1d9)][_0x4404fc(0x1e2)]);if(!_0x31a4b3['success'])return{'flow':_0x3cf1aa[_0x4404fc(0x4d1)],'flowId':_0x3cf1aa['flowId'],'success':![],'totalDurationMs':Date[_0x4404fc(0x3d1)]()-_0x18f032,'steps':[{'stepIndex':-0x1,'action':_0x4404fc(0x82d),'success':![],'durationMs':Date['now']()-_0x18f032,'error':_0x31a4b3[_0x4404fc(0x125)]??_0x4d9c8f['error']??_0x4404fc(0x480)}],'runtimeErrors':[],'awake':_0x1620c7};}}for(let _0x3be4b3=0x0;_0x3be4b3<_0x91ca5[_0x4404fc(0x945)];_0x3be4b3++){if(Date[_0x4404fc(0x3d1)]()-_0x18f032>_0x534ed8){_0x176e45['push']({'stepIndex':_0x3be4b3,'action':_0x91ca5[_0x3be4b3][_0x4404fc(0x1ec)],'success':![],'durationMs':0x0,'error':'Flow\x20timeout\x20('+_0x534ed8+_0x4404fc(0x342)+_0x3be4b3+'.',..._0xcf7605(_0x91ca5[_0x3be4b3])});break;}const _0x2b4e53=Date['now'](),_0x16218f=_0x91ca5[_0x3be4b3];let _0x4f4e87;if(this['opts'][_0x4404fc(0x2c7)])try{const _0x2e4c0d=await this[_0x4404fc(0x217)][_0x4404fc(0x2c7)]['checkAndHandle']();_0x2e4c0d['handled']&&_0x2e4c0d[_0x4404fc(0x449)]&&(_0x4f4e87={'title':_0x2e4c0d[_0x4404fc(0x449)]['title'],'action':_0x2e4c0d['dialog'][_0x4404fc(0x1ec)]});}catch{}_0x8f74a6&&_0x4017f0(_0x16218f)&&_0x278c22['invalidate']();const _0x4713ce=await this[_0x4404fc(0x255)](_0x16218f,_0x26ab35),_0x1c6cce=Date['now']()-_0x2b4e53;_0x8f74a6&&typeof _0x4713ce['details']?.['retryAfterSwipes']===_0x4404fc(0x513)&&_0x4713ce[_0x4404fc(0x220)]['retryAfterSwipes']>0x0&&_0x278c22['invalidate']();const _0x5b66a3=[],_0x178c6a=[],_0x5903f3=[];let _0x5a42f1=![];try{const _0x4e13c4=await this[_0x4404fc(0x628)](_0xe1eec9);for(const _0x2fad95 of _0x4e13c4){const _0x1ec1f0=this[_0x4404fc(0x375)](_0x2fad95);if(!_0x2b458f['has'](_0x1ec1f0)){if(_0x4404fc(0x4ce)!=='dacNF')return{'success':![],'matchCount':_0x265042[_0x4404fc(0x945)],'element':_0x4ce49e,'error':_0x1d48af['error']??_0x4404fc(0x432),'batched':![]};else{_0x2b458f['add'](_0x1ec1f0),_0x5b66a3[_0x4404fc(0x496)]({'message':_0x2fad95[_0x4404fc(0x92e)],'stack':_0x2fad95[_0x4404fc(0x209)]}),_0x1f5bf5['push'](_0x2fad95);const _0x1012fc=this[_0x4404fc(0x4aa)](_0x2fad95,_0x3cf1aa[_0x4404fc(0x416)]);if(_0x1012fc['objective'])_0x178c6a['push'](_0x1012fc[_0x4404fc(0x89a)]);if(_0x1012fc['witness'])_0x5903f3['push'](_0x1012fc['witness']);if(_0x1012fc[_0x4404fc(0x53a)])_0x5a42f1=!![];}}}}catch{}let _0x320f2f;const _0x1e4914=async _0x4e0e44=>{const _0x4159b4=_0x4404fc;if(!_0x4e0e44&&_0x320f2f!==void 0x0)return _0x320f2f;if(!_0x4e0e44&&_0x8f74a6){const _0x179244=_0x278c22[_0x4159b4(0x47a)](_0x278c22[_0x4159b4(0x914)]());if(_0x179244)return _0x320f2f=_0x179244,_0x179244;}let _0x2e720a=null;try{if('tIRul'!=='CuvFW')_0x2e720a=await this[_0x4159b4(0x5e9)]['fetchSourceTree']();else return _0x5739ce({'name':_0x4159b4(0x4bd),'status':'failed','detail':_0x1e163e['detail'],'details':{'error':_0x450064['error']}}),_0x59ef45(_0x3f42d4,_0x3da560,_0x17d1fa[_0x4159b4(0x5de)]??_0xcc1f27);}catch{_0x2e720a=null;}return _0x2e720a&&_0x8f74a6&&_0x278c22['set'](_0x2e720a,_0x3be4b3),_0x320f2f=_0x2e720a,_0x2e720a;},_0x53301c=[];if(_0x5a42f1&&!this[_0x4404fc(0x217)][_0x4404fc(0x9ad)]){const _0x543886=_0x524ae8?await _0x1e4914(!![]):null,_0x15c425=await this[_0x4404fc(0x8f3)](_0x543886)[_0x4404fc(0x4ba)](()=>[]);for(const _0x2e51aa of _0x15c425){_0x53301c['push']({'kind':'error-banner','message':'error-banner:\x20'+_0x2e51aa['label'],'detail':_0x4404fc(0x310)+_0x2e51aa['matchedSignal']+'\x20text='+_0x1ac3bd(_0x2e51aa[_0x4404fc(0x5d9)],0xc8),'flowId':_0x3cf1aa['flowId']});}}const _0x1c5060=await this[_0x4404fc(0x264)](_0x16218f,_0x3cf1aa[_0x4404fc(0x416)]),_0x4b8af3=_0x4f4e87?{'permissionDialogHandled':_0x4f4e87,..._0x4713ce['details']??{}}:_0x4713ce[_0x4404fc(0x220)],_0x5000b2=[...(_0x4713ce['objectiveSignals']??[])[_0x4404fc(0x986)](_0x347d7b=>({..._0x347d7b,'flowId':_0x347d7b['flowId']??_0x3cf1aa['flowId']})),..._0x178c6a],_0x56f8b3=[];if(_0x524ae8){const _0x3771e7=await _0x1e4914(![]),_0x59bae4=_0x3771e7===null?null:await _0x1f590c(this[_0x4404fc(0x5e9)],{'tree':_0x3771e7});if(_0x34188b&&_0x59bae4){const _0x1812a7=this['defaultExpectedRegion'](_0x34188b);try{if('UbIkg'!=='UbIkg')_0x289473[_0x4404fc(0x496)](_0x4404fc(0x855)+_0x452e7f[_0x4404fc(0x221)](',\x20')+_0x4404fc(0x193));else{const _0x374eb6=_0x536ba2(_0x34188b,_0x59bae4,_0x1812a7);_0x374eb6['warning']&&_0x56f8b3['push']({'kind':_0x4404fc(0x6a4),'message':_0x374eb6['warning'],'detail':_0x1391af(_0x374eb6[_0x4404fc(0x779)]),'flowId':_0x3cf1aa['flowId']});}}catch{}}_0x34188b=_0x59bae4;}const _0x21055c=[...(_0x4713ce['witnesses']??[])[_0x4404fc(0x986)](_0x3f5362=>({..._0x3f5362,'flowId':_0x3f5362[_0x4404fc(0x416)]??_0x3cf1aa['flowId']})),..._0x5903f3,..._0x1c5060[_0x4404fc(0x3b9)],..._0x53301c,..._0x56f8b3],_0x4d82c4=_0x4713ce['reloadRecoveryWitness']??_0x1c5060[_0x4404fc(0x1cd)],_0x45288e=!_0x4713ce['success']||_0x3be4b3===_0x91ca5[_0x4404fc(0x945)]-0x1,_0x3ea486=this[_0x4404fc(0x4ad)]({'objectiveSignals':_0x5000b2,'witnesses':_0x21055c,'reloadRecoveryWitness':_0x4d82c4,'details':_0x4b8af3,'isFinalStep':_0x45288e}),_0x45cc66=_0x153784?.['affectedFlowNames']?.[_0x4404fc(0x21c)](_0x3cf1aa[_0x4404fc(0x4d1)])??![],_0x17ba26=(_0x3ea486!==void 0x0||_0x45cc66)&&!this[_0x4404fc(0x217)][_0x4404fc(0x9ad)];let _0x1664d1;if(_0x17ba26){if('Qrfrp'===_0x4404fc(0x952)){const _0x56665c=await this['screen']['screenshot']()[_0x4404fc(0x4ba)](()=>void 0x0);_0x56665c?.['success']&&_0x56665c['base64']&&(_0x1664d1=_0x56665c['base64'],_0x153784?.['store']&&(await _0x153784[_0x4404fc(0x904)][_0x4404fc(0x860)](_0x153784[_0x4404fc(0x297)],_0x3cf1aa[_0x4404fc(0x4d1)],_0x3be4b3,_0x56665c[_0x4404fc(0x589)])['catch'](()=>void 0x0),_0x3285ab[_0x4404fc(0x5c1)](_0x3be4b3)));}else _0x2f46e9=_0x4f249d,_0x1b5b94=!![];}const _0x3481e4=_0x3ea486??(_0x1664d1!==void 0x0&&_0x45cc66?'diff-affected':void 0x0),_0x57c910=_0x3481e4&&_0x1664d1!==void 0x0?{..._0x4b8af3??{},'screenshotReason':_0x3481e4}:_0x4b8af3;_0x176e45['push']({'stepIndex':_0x3be4b3,'action':_0x16218f['action'],'success':_0x4713ce['success'],'durationMs':_0x1c6cce,'error':_0x4713ce['error'],'screenshotBase64':_0x1664d1,'runtimeErrorsCaptured':_0x5b66a3[_0x4404fc(0x945)]>0x0?_0x5b66a3:void 0x0,'details':_0x57c910,'objectiveSignals':_0x5000b2['length']>0x0?_0x5000b2:void 0x0,'witnesses':_0x21055c[_0x4404fc(0x945)]>0x0?_0x21055c:void 0x0,'reloadRecoveryWitness':_0x4d82c4,..._0xcf7605(_0x16218f)});if(!_0x4713ce['success'])break;}}finally{_0x135d03?.['stop']();}const _0x514e5a=[],_0x1d1688=[],_0x1639d3=[];for(const _0x4113b1 of _0x176e45){if(_0x4113b1[_0x4404fc(0x45f)]?.[_0x4404fc(0x945)])_0x514e5a[_0x4404fc(0x496)](..._0x4113b1['objectiveSignals']);if(_0x4113b1['witnesses']?.['length'])_0x1d1688[_0x4404fc(0x496)](..._0x4113b1['witnesses']);if(_0x4113b1['reloadRecoveryWitness'])_0x1639d3[_0x4404fc(0x496)](_0x4113b1['reloadRecoveryWitness']);}const _0x271193=_0x91ca5['length']>0x0&&_0x176e45['length']===_0x91ca5['length']&&_0x176e45[_0x4404fc(0x971)](_0x5f3e96=>_0x5f3e96[_0x4404fc(0x42d)]),_0x444cf5=_0x271193&&_0x514e5a[_0x4404fc(0x945)]===0x0;return{'flow':_0x3cf1aa['name'],'flowId':_0x3cf1aa['flowId'],'success':_0x444cf5,'totalDurationMs':Date['now']()-_0x18f032,'steps':_0x176e45,'runtimeErrors':_0x1f5bf5,'awake':_0x1620c7,'objectiveSignals':_0x514e5a['length']>0x0?_0x514e5a:void 0x0,'witnesses':_0x1d1688[_0x4404fc(0x945)]>0x0?_0x1d1688:void 0x0,'reloadRecoveryWitnesses':_0x1639d3[_0x4404fc(0x945)]>0x0?_0x1639d3:void 0x0,'screenshotsAvailable':_0x3285ab[_0x4404fc(0x1bb)]};}async[_0x3ee7d6(0x919)](_0x3bde6a,_0xa1540d){const _0x3b48c6=_0x3ee7d6,_0x3f32ba=Date[_0x3b48c6(0x3d1)](),_0x294a36=[],_0x151952=[];let _0x3919aa=null;for(let _0x16ea1f=0x0;_0x16ea1f<_0x3bde6a['flows'][_0x3b48c6(0x945)];_0x16ea1f++){const _0x438f4c=_0x3bde6a['flows'][_0x16ea1f];if(_0x16ea1f>0x0&&_0x3919aa===null){const _0x3d1762=_0x3bde6a[_0x3b48c6(0x10a)][_0x16ea1f-0x1]??[],_0x322c01=[];let _0x5a25aa=![];for(const _0x467c51 of _0x3d1762){const _0x45ec5a=_0x467c51['triggerLabel']??_0x467c51['toRoute'],_0x334af2={'action':'tap','text':_0x45ec5a},_0x5d4908=await this[_0x3b48c6(0x255)](_0x334af2);if(!_0x5d4908['success']){_0x5a25aa=!![];break;}_0x322c01[_0x3b48c6(0x496)](_0x467c51);}_0x151952['push'](_0x322c01);if(_0x5a25aa){_0x294a36[_0x3b48c6(0x496)]({'flow':_0x438f4c['name'],'flowId':_0x438f4c[_0x3b48c6(0x416)],'success':![],'totalDurationMs':0x0,'steps':[{'stepIndex':-0x1,'action':'chain-bridge','success':![],'durationMs':0x0,'error':'Chain\x20bridge\x20tap\x20failed\x20before\x20flow\x20'+_0x438f4c[_0x3b48c6(0x4d1)]}],'runtimeErrors':[],'chainId':_0x3bde6a[_0x3b48c6(0x39b)],'chainPosition':_0x16ea1f}),_0x3919aa=_0x16ea1f;continue;}}else{if(_0x16ea1f>0x0){if('XBDhj'!=='bOODX')_0x151952[_0x3b48c6(0x496)](null);else return{'ok':![],'error':'VideoRecorder\x20already\x20stopped;\x20construct\x20a\x20fresh\x20recorder.'};}}if(_0x3919aa!==null){_0x294a36[_0x3b48c6(0x496)]({'flow':_0x438f4c[_0x3b48c6(0x4d1)],'flowId':_0x438f4c['flowId'],'success':![],'totalDurationMs':0x0,'steps':[],'runtimeErrors':[],'chainId':_0x3bde6a[_0x3b48c6(0x39b)],'chainPosition':_0x16ea1f,'skippedDueToChainAbort':!![]});continue;}const _0x28b36a=await this[_0x3b48c6(0x725)](_0x438f4c,_0xa1540d);_0x28b36a['chainId']=_0x3bde6a[_0x3b48c6(0x39b)],_0x28b36a[_0x3b48c6(0x5d8)]=_0x16ea1f,_0x294a36[_0x3b48c6(0x496)](_0x28b36a);const _0x441c15=!_0x28b36a['success']||(_0x28b36a[_0x3b48c6(0x45f)]?.[_0x3b48c6(0x945)]??0x0)>0x0;if(_0x441c15){_0x3919aa=_0x16ea1f;const _0x2fa327=_0x438f4c['beforeAll']?.[_0x3b48c6(0x1e2)]??_0x3bde6a['flows'][0x0]['beforeAll']?.['ensureLaunched'];_0x2fa327&&(await this['apps'][_0x3b48c6(0x7f6)](_0x2fa327)[_0x3b48c6(0x4ba)](()=>void 0x0),await this['apps']['launchApp'](_0x2fa327)[_0x3b48c6(0x4ba)](()=>void 0x0));}}const _0x5f5852=_0x3919aa===null&&_0x294a36['every'](_0x3426e5=>_0x3426e5[_0x3b48c6(0x42d)]);return{'chainId':_0x3bde6a['chainId'],'success':_0x5f5852,'totalDurationMs':Date[_0x3b48c6(0x3d1)]()-_0x3f32ba,'flowResults':_0x294a36,'bridgeHopsRun':_0x151952,'abortedAtFlowIndex':_0x3919aa};}async['runStep'](_0x11e38f,_0x167e2f){const _0x514d1b=_0x3ee7d6;switch(_0x11e38f['action']){case _0x514d1b(0x96b):{const _0x25ffd7=await this[_0x514d1b(0x7dd)]['launchApp'](_0x11e38f['bundleId']);return{'success':_0x25ffd7[_0x514d1b(0x42d)],'error':_0x25ffd7[_0x514d1b(0x125)],'details':{'transport':_0x25ffd7[_0x514d1b(0x727)]}};}case'terminate':{const _0x2183bd=await this['apps'][_0x514d1b(0x7f6)](_0x11e38f[_0x514d1b(0x708)]);return{'success':_0x2183bd[_0x514d1b(0x42d)],'error':_0x2183bd[_0x514d1b(0x125)],'details':{'transport':_0x2183bd[_0x514d1b(0x727)]}};}case _0x514d1b(0x454):{const _0x548a26=async _0x5ca770=>{const _0x2075bc=_0x514d1b;if(_0x167e2f?.[_0x2075bc(0x759)]&&typeof this['screen']['findElementFromTree']==='function'&&typeof this[_0x2075bc(0x5e9)][_0x2075bc(0x15c)]===_0x2075bc(0x8b5)){const _0x41cb2a=_0x167e2f['axCache']['get'](_0x167e2f[_0x2075bc(0x759)][_0x2075bc(0x914)]());if(_0x41cb2a){if(_0x2075bc(0x973)===_0x2075bc(0x973)){const _0x1df22f=this[_0x2075bc(0x5e9)]['findElementFromTree'](_0x41cb2a,_0x5ca770),_0x576cd6=_0x5ca770['index']??0x0,_0x1937ae=_0x1df22f[_0x576cd6];if(_0x1937ae?.[_0x2075bc(0x578)]){const _0x187331=_0x1937ae[_0x2075bc(0x578)],_0x1a60be=_0x187331['x']+_0x187331[_0x2075bc(0x5e2)]/0x2,_0x3b64de=_0x187331['y']+_0x187331['height']/0x2,_0x5f49d9=await this[_0x2075bc(0x5e9)][_0x2075bc(0x454)](_0x1a60be,_0x3b64de,![]);if(_0x5f49d9['success'])return{'success':!![],'details':{'element':{'type':_0x1937ae[_0x2075bc(0x85c)]??'unknown','label':_0x1937ae[_0x2075bc(0x10d)]??_0x1937ae['name']??'','bounds':_0x187331},'fromCache':!![]}};_0x167e2f['axCache'][_0x2075bc(0x46a)]();}}else{_0x601a45['stop']();return;}}const {result:_0x8f4b54}=await this['screen']['findAndTapReturningTree'](_0x5ca770);if(_0x8f4b54[_0x2075bc(0x42d)])return{'success':!![],'details':{'element':_0x8f4b54[_0x2075bc(0x8ff)]}};let _0xd2ce10=_0x8f4b54,_0x303d78=_0x8f4b54['matchCount'];for(let _0x57575b=0x0;_0x57575b<_0x4463eb;_0x57575b++){const _0x58e63a=await this[_0x2075bc(0x5e9)]['swipe']({'direction':'up'});if(!_0x58e63a['success'])break;const _0x17eb66=await this['screen'][_0x2075bc(0x94a)](_0x5ca770);if(_0x17eb66[_0x2075bc(0x42d)])return{'success':!![],'details':{'element':_0x17eb66[_0x2075bc(0x8ff)],'retryAfterSwipes':_0x57575b+0x1}};_0xd2ce10=_0x17eb66,_0x303d78=_0x10d648(_0x303d78,_0x17eb66[_0x2075bc(0x362)]);}return{'success':![],'error':_0xd2ce10[_0x2075bc(0x125)]??_0x2075bc(0x1a2),'details':{'availableElements':_0xd2ce10['availableElements'],'matchCount':_0x303d78}};}const _0x2c0c2d=await this['screen']['findAndTap'](_0x5ca770);if(_0x2c0c2d[_0x2075bc(0x42d)])return{'success':!![],'details':{'element':_0x2c0c2d['element']}};let _0x1f7f89=_0x2c0c2d,_0x5f2a7c=_0x2c0c2d['matchCount'];for(let _0x55f017=0x0;_0x55f017<_0x4463eb;_0x55f017++){const _0xdf388d=await this[_0x2075bc(0x5e9)]['swipe']({'direction':'up'});if(!_0xdf388d[_0x2075bc(0x42d)])break;const _0x20a812=await this[_0x2075bc(0x5e9)]['findAndTap'](_0x5ca770);if(_0x20a812[_0x2075bc(0x42d)])return'KoMYX'!==_0x2075bc(0x846)?null:{'success':!![],'details':{'element':_0x20a812['element'],'retryAfterSwipes':_0x55f017+0x1}};_0x1f7f89=_0x20a812,_0x5f2a7c=_0x10d648(_0x5f2a7c,_0x20a812[_0x2075bc(0x362)]);}return{'success':![],'error':_0x1f7f89['error']??'Element\x20not\x20found','details':{'availableElements':_0x1f7f89[_0x2075bc(0x8e2)],'matchCount':_0x5f2a7c}};},_0x12bb5a={'text':_0x11e38f['text'],'accessibilityLabel':_0x11e38f[_0x514d1b(0x478)],'type':_0x11e38f['type'],'index':_0x11e38f[_0x514d1b(0x1c4)]},_0x2d0b51=await _0x548a26(_0x12bb5a);if(_0x2d0b51[_0x514d1b(0x42d)])return _0x2d0b51;if(_0x2d0b51[_0x514d1b(0x220)]?.[_0x514d1b(0x362)]===0x0&&_0x11e38f[_0x514d1b(0x3ef)]!==void 0x0&&_0x11e38f[_0x514d1b(0x3ef)]!==_0x11e38f['text']){const _0x7eee82=await _0x548a26({'text':_0x11e38f['fallbackText'],'index':_0x11e38f[_0x514d1b(0x1c4)]});if(_0x7eee82[_0x514d1b(0x42d)])return{..._0x7eee82,'details':{..._0x7eee82['details'],'resolvedViaFallback':!![]}};}return _0x2d0b51;}case _0x514d1b(0x356):{if(_0x514d1b(0x39a)!==_0x514d1b(0x8cb)){const _0x49ada4=(_0x11e38f[_0x514d1b(0x19b)]??'device')===_0x514d1b(0x863),_0x5404cd=await this['screen']['tap'](_0x11e38f['x'],_0x11e38f['y'],_0x49ada4);return{'success':_0x5404cd[_0x514d1b(0x42d)],'error':_0x5404cd['error'],'details':{'tappedAt':_0x5404cd['tappedAt']}};}else return _0xaa5d1(_0x4fd6ad+':\x20existing\x20config\x20at\x20'+_0x5abdfc+'\x20is\x20not\x20a\x20JSON\x20object\x20(got\x20'+(_0x3229d2[_0x514d1b(0x246)](_0x2f8b21)?'array':typeof _0x49dc14)+_0x514d1b(0x4a5)),![];}case _0x514d1b(0x78b):{const _0xbf4c5a=async _0x4b4168=>{const _0xb9e2a3=_0x514d1b,_0x3c65db=await this['screen']['longPressElement'](_0x4b4168,_0x11e38f[_0xb9e2a3(0x8ad)]??0x3e8);if(_0x3c65db[_0xb9e2a3(0x42d)])return{'success':!![],'details':{'element':_0x3c65db[_0xb9e2a3(0x8ff)]}};let _0x4f51e7=_0x3c65db,_0x17b860=_0x3c65db[_0xb9e2a3(0x362)];for(let _0x2bbf49=0x0;_0x2bbf49<_0x4463eb;_0x2bbf49++){const _0x2b9399=await this['screen'][_0xb9e2a3(0x81d)]({'direction':'up'});if(!_0x2b9399[_0xb9e2a3(0x42d)])break;const _0x92022=await this['screen'][_0xb9e2a3(0x5f7)](_0x4b4168,_0x11e38f[_0xb9e2a3(0x8ad)]??0x3e8);if(_0x92022[_0xb9e2a3(0x42d)])return{'success':!![],'details':{'element':_0x92022[_0xb9e2a3(0x8ff)],'retryAfterSwipes':_0x2bbf49+0x1}};_0x4f51e7=_0x92022,_0x17b860=_0x10d648(_0x17b860,_0x92022[_0xb9e2a3(0x362)]);}return{'success':![],'error':_0x4f51e7[_0xb9e2a3(0x125)]??_0xb9e2a3(0x1a2),'details':{'matchCount':_0x17b860}};},_0x47a1e6={'text':_0x11e38f['text'],'accessibilityLabel':_0x11e38f[_0x514d1b(0x478)]},_0x226cb5=await _0xbf4c5a(_0x47a1e6);if(_0x226cb5[_0x514d1b(0x42d)])return _0x226cb5;if(_0x226cb5[_0x514d1b(0x220)]?.[_0x514d1b(0x362)]===0x0&&_0x11e38f[_0x514d1b(0x3ef)]!==void 0x0&&_0x11e38f['fallbackText']!==_0x11e38f['text']){const _0x51801b=await _0xbf4c5a({'text':_0x11e38f[_0x514d1b(0x3ef)]});if(_0x51801b['success'])return{..._0x51801b,'details':{..._0x51801b['details'],'resolvedViaFallback':!![]}};}return _0x226cb5;}case _0x514d1b(0x85c):{if(_0x11e38f[_0x514d1b(0x5fc)]){const _0xed3cf5=_0x11e38f['into']['text'],_0x20caf9=_0x11e38f[_0x514d1b(0x3ef)]!==void 0x0&&_0x11e38f['fallbackText']!==_0xed3cf5?_0x11e38f['fallbackText']:void 0x0,_0x45bb50=!(_0x167e2f?.[_0x514d1b(0x5e7)]===!![])&&typeof this[_0x514d1b(0x5e9)][_0x514d1b(0x8d9)]===_0x514d1b(0x8b5);if(_0x45bb50){let _0x15bce2=await this[_0x514d1b(0x5e9)]['typeIntoField']({'text':_0xed3cf5,'accessibilityLabel':_0x11e38f[_0x514d1b(0x5fc)]['accessibilityLabel']},_0x11e38f['value']);if(_0x15bce2['matchCount']===0x0&&_0x20caf9!==void 0x0){if('DTXGK'!==_0x514d1b(0x54a)){const _0x159302=_0x108786(_0xa051ca);if(_0x159302)return _0x159302;}else _0x15bce2=await this['screen']['typeIntoField']({'text':_0x20caf9},_0x11e38f[_0x514d1b(0x84f)]);}return _0x15bce2[_0x514d1b(0x42d)]&&_0x167e2f?.['axCache']&&_0x167e2f[_0x514d1b(0x759)]['invalidate'](),{'success':_0x15bce2[_0x514d1b(0x42d)],'error':_0x15bce2['error'],'details':{'element':_0x15bce2[_0x514d1b(0x8ff)],'batched':_0x15bce2[_0x514d1b(0x689)]}};}let _0x5703d1=await this[_0x514d1b(0x5e9)]['findAndTap']({'text':_0xed3cf5,'accessibilityLabel':_0x11e38f['into']['accessibilityLabel']});_0x5703d1[_0x514d1b(0x362)]===0x0&&_0x20caf9!==void 0x0&&(_0x5703d1=await this[_0x514d1b(0x5e9)]['findAndTap']({'text':_0x20caf9}));if(!_0x5703d1[_0x514d1b(0x42d)])return{'success':![],'error':_0x5703d1[_0x514d1b(0x125)]??'Could\x20not\x20focus\x20target\x20field\x20for\x20type','details':{'availableElements':_0x5703d1[_0x514d1b(0x8e2)]}};if(_0x167e2f?.[_0x514d1b(0x759)])_0x167e2f['axCache'][_0x514d1b(0x46a)]();}const _0x126e72=await this['screen']['type'](_0x11e38f['value']);return{'success':_0x126e72['success'],'error':_0x126e72['error']};}case _0x514d1b(0x425):{const _0x489881=await this[_0x514d1b(0x5e9)]['clearText']({'text':_0x11e38f['text'],'accessibilityLabel':_0x11e38f[_0x514d1b(0x478)]});return{'success':_0x489881['success'],'error':_0x489881['error']};}case'swipe':{const _0x215ad6=await this['screen'][_0x514d1b(0x81d)]({'direction':_0x11e38f[_0x514d1b(0x41f)],'from':_0x11e38f[_0x514d1b(0x70f)],'distancePx':_0x11e38f['distancePx'],'coordinateSource':'device'});return{'success':_0x215ad6[_0x514d1b(0x42d)],'error':_0x215ad6['error'],'details':{'from':_0x215ad6[_0x514d1b(0x70f)],'to':_0x215ad6['to']}};}case'scrollTo':{const _0x5ad6ac={'maxSwipes':_0x11e38f['maxSwipes'],'direction':_0x11e38f['direction']};let _0x4c2938=await this[_0x514d1b(0x5e9)][_0x514d1b(0x8c7)]({'text':_0x11e38f[_0x514d1b(0x5d9)],'accessibilityLabel':_0x11e38f['accessibilityLabel']},_0x5ad6ac),_0x29f4e4=![];if(_0x4c2938[_0x514d1b(0x362)]===0x0&&_0x11e38f[_0x514d1b(0x3ef)]!==void 0x0&&_0x11e38f[_0x514d1b(0x3ef)]!==_0x11e38f['text']){const _0x2aef30=await this['screen'][_0x514d1b(0x8c7)]({'text':_0x11e38f[_0x514d1b(0x3ef)]},_0x5ad6ac);_0x2aef30[_0x514d1b(0x42d)]&&(_0x4c2938=_0x2aef30,_0x29f4e4=!![]);}return{'success':_0x4c2938[_0x514d1b(0x42d)],'error':_0x4c2938['error'],'details':{'swipes':_0x4c2938['swipes'],'element':_0x4c2938[_0x514d1b(0x8ff)],..._0x29f4e4?{'resolvedViaFallback':!![]}:{}}};}case _0x514d1b(0x85e):{if('gIvXF'==='gIvXF'){const _0x4a178b={'timeoutMs':_0x11e38f[_0x514d1b(0x5aa)],'disappear':_0x11e38f[_0x514d1b(0x44b)]};let _0x32d3fb=await this['screen'][_0x514d1b(0x85e)]({'text':_0x11e38f[_0x514d1b(0x5d9)],'accessibilityLabel':_0x11e38f['accessibilityLabel'],'type':_0x11e38f['type']},_0x4a178b),_0x35e290=![];if(!_0x32d3fb[_0x514d1b(0x42d)]&&_0x11e38f[_0x514d1b(0x44b)]!==!![]&&_0x11e38f[_0x514d1b(0x3ef)]!==void 0x0&&_0x11e38f[_0x514d1b(0x3ef)]!==_0x11e38f['text']){const _0x1ea4ea=await this['screen'][_0x514d1b(0x85e)]({'text':_0x11e38f[_0x514d1b(0x3ef)]},_0x4a178b);_0x1ea4ea[_0x514d1b(0x42d)]&&(_0x32d3fb=_0x1ea4ea,_0x35e290=!![]);}return{'success':_0x32d3fb['success'],'error':_0x32d3fb['error'],'details':{'elapsedMs':_0x32d3fb['elapsedMs'],'found':_0x32d3fb['found'],..._0x35e290?{'resolvedViaFallback':!![]}:{}}};}else return _0x1915ba(_0x514d1b(0x10c),_0x494024);}case _0x514d1b(0x4de):{if(_0x514d1b(0x324)==='bcJQg'){const _0x2bb334=async _0x6f0d4d=>{const _0x3d51db=_0x514d1b;if(_0x167e2f?.[_0x3d51db(0x759)]&&typeof this[_0x3d51db(0x5e9)]['findElementFromTree']===_0x3d51db(0x8b5)){const _0x2584ac=_0x167e2f[_0x3d51db(0x759)][_0x3d51db(0x47a)](_0x167e2f[_0x3d51db(0x759)]['currentEpoch']());if(_0x2584ac){const _0x474737=this[_0x3d51db(0x5e9)]['findElementFromTree'](_0x2584ac,_0x6f0d4d),_0xfb3dc9=_0x474737[0x0];if(_0xfb3dc9?.['rect'])return{'success':!![],'details':{'element':{'type':_0xfb3dc9['type']??'unknown','label':_0xfb3dc9['label']??_0xfb3dc9['name']??'','bounds':_0xfb3dc9[_0x3d51db(0x578)]},'fromCache':!![]}};}}if(_0x167e2f?.[_0x3d51db(0x759)]&&typeof this[_0x3d51db(0x5e9)]['fetchSourceTree']===_0x3d51db(0x8b5)&&typeof this[_0x3d51db(0x5e9)][_0x3d51db(0x6a3)]==='function'){const _0x53a12a=await this[_0x3d51db(0x5e9)]['fetchSourceTree']();if(_0x53a12a){_0x167e2f[_0x3d51db(0x759)]['set'](_0x53a12a,_0x167e2f[_0x3d51db(0x759)][_0x3d51db(0x914)]());const _0x5daa51=this['screen']['findElementFromTree'](_0x53a12a,_0x6f0d4d),_0x11e6fe=_0x5daa51[0x0];if(_0x11e6fe?.[_0x3d51db(0x578)])return{'success':!![],'details':{'element':{'type':_0x11e6fe[_0x3d51db(0x85c)]??_0x3d51db(0x3de),'label':_0x11e6fe[_0x3d51db(0x10d)]??_0x11e6fe[_0x3d51db(0x4d1)]??'','bounds':_0x11e6fe['rect']}}};return{'success':![],'error':'assertVisible:\x20element\x20not\x20visible:\x20'+JSON['stringify'](_0x6f0d4d)};}}const _0x21926b=await this['screen'][_0x3d51db(0x4de)](_0x6f0d4d);if(!_0x21926b[_0x3d51db(0x42d)])return{'success':![],'error':_0x21926b[_0x3d51db(0x125)]};if(!_0x21926b['visible'])return{'success':![],'error':'assertVisible:\x20element\x20not\x20visible:\x20'+JSON['stringify'](_0x6f0d4d)};return{'success':!![],'details':{'element':_0x21926b['element']}};},_0x36a367={'text':_0x11e38f[_0x514d1b(0x5d9)],'accessibilityLabel':_0x11e38f[_0x514d1b(0x478)],'type':_0x11e38f['type']},_0x4b65c6=await _0x2bb334(_0x36a367);if(_0x4b65c6[_0x514d1b(0x42d)])return _0x4b65c6;if(_0x11e38f[_0x514d1b(0x3ef)]!==void 0x0&&_0x11e38f['fallbackText']!==_0x11e38f['text']){const _0x5d86f3=await _0x2bb334({'text':_0x11e38f[_0x514d1b(0x3ef)]});if(_0x5d86f3['success'])return{..._0x5d86f3,'details':{..._0x5d86f3[_0x514d1b(0x220)],'resolvedViaFallback':!![]}};}return _0x4b65c6;}else{const _0x1148d8=_0x2682e9['matches'][0x0];if(!_0x1148d8)return _0x4b2f47;return _0x1490ad('\x0a',_0x3dd522),_0x23af9a(_0x2da78d(_0x514d1b(0x9e1)+_0x1148d8['relPath']+_0x514d1b(0x6e3)),_0x5c3b97),_0x1148d8['absPath'];}}case _0x514d1b(0x9a2):{const _0x1c5f1a={'text':_0x11e38f[_0x514d1b(0x5d9)],'accessibilityLabel':_0x11e38f['accessibilityLabel'],'type':_0x11e38f[_0x514d1b(0x85c)]};if(_0x167e2f?.[_0x514d1b(0x759)]&&typeof this[_0x514d1b(0x5e9)]['findElementFromTree']==='function'){const _0x5b07d8=_0x167e2f[_0x514d1b(0x759)]['get'](_0x167e2f['axCache'][_0x514d1b(0x914)]());if(_0x5b07d8){const _0x5b8d22=this[_0x514d1b(0x5e9)][_0x514d1b(0x6a3)](_0x5b07d8,_0x1c5f1a),_0x188d24=_0x5b8d22[0x0];if(_0x188d24?.['rect'])return{'success':![],'error':'assertNotVisible:\x20element\x20is\x20visible:\x20'+JSON['stringify'](_0x1c5f1a)};}}if(_0x167e2f?.['axCache']&&typeof this['screen'][_0x514d1b(0x771)]===_0x514d1b(0x8b5)&&typeof this[_0x514d1b(0x5e9)][_0x514d1b(0x6a3)]===_0x514d1b(0x8b5)){const _0x5fef4c=await this[_0x514d1b(0x5e9)]['fetchSourceTree']();if(_0x5fef4c){_0x167e2f[_0x514d1b(0x759)]['set'](_0x5fef4c,_0x167e2f['axCache']['currentEpoch']());const _0x3974ce=this[_0x514d1b(0x5e9)]['findElementFromTree'](_0x5fef4c,_0x1c5f1a),_0x2dc2ac=_0x3974ce[0x0];if(_0x2dc2ac?.[_0x514d1b(0x578)])return{'success':![],'error':'assertNotVisible:\x20element\x20is\x20visible:\x20'+JSON[_0x514d1b(0x2c1)](_0x1c5f1a)};return{'success':!![]};}}const _0x396805=await this[_0x514d1b(0x5e9)][_0x514d1b(0x9a2)](_0x1c5f1a);if(!_0x396805[_0x514d1b(0x42d)])return{'success':![],'error':_0x396805['error']};if(_0x396805['visible'])return{'success':![],'error':_0x514d1b(0x8b3)+JSON[_0x514d1b(0x2c1)](_0x1c5f1a)};return{'success':!![]};}case'pressKey':{const _0x2709c7=await this[_0x514d1b(0x5e9)][_0x514d1b(0x861)](_0x11e38f['key']);return{'success':_0x2709c7[_0x514d1b(0x42d)],'error':_0x2709c7[_0x514d1b(0x125)],'details':{'key':_0x11e38f[_0x514d1b(0x2fe)],..._0x2709c7[_0x514d1b(0x220)]??{}}};}case'screenshot':{const _0x1553d5=await this[_0x514d1b(0x5e9)]['screenshot']();return{'success':_0x1553d5['success'],'error':_0x1553d5[_0x514d1b(0x125)],'details':{'label':_0x11e38f[_0x514d1b(0x10d)],'hasBase64':!!_0x1553d5[_0x514d1b(0x589)]}};}case _0x514d1b(0x778):{return await new Promise(_0x5b8e95=>setTimeout(_0x5b8e95,Math['max'](0x0,_0x11e38f['ms']))),{'success':!![]};}case _0x514d1b(0x96d):{const _0xec7637=await this[_0x514d1b(0x1d5)](_0x11e38f);return{'success':!![],'details':{'outcome':_0xec7637[_0x514d1b(0x901)]},'reloadRecoveryWitness':_0xec7637};}case _0x514d1b(0x88b):{const _0x490320=await this[_0x514d1b(0x5e9)][_0x514d1b(0x620)]('ceraph://reset');return{'success':_0x490320['success'],'error':_0x490320[_0x514d1b(0x125)],'details':{'dispatched':_0x490320['success']}};}default:{const _0x3604f1=_0x11e38f;return{'success':![],'error':'Unknown\x20step\x20action:\x20'+JSON[_0x514d1b(0x2c1)](_0x3604f1)};}}}async[_0x3ee7d6(0x628)](_0x9ed73f){const _0x3112b1=_0x3ee7d6;try{const _0x46d72d=await _0xbd36d8(_0x9ed73f,'utf-8'),_0x5bca83=JSON['parse'](_0x46d72d),_0x45ebee=_0x5bca83['errors']??[];return _0x45ebee['map'](_0x523105=>({'message':_0x523105[_0x3112b1(0x92e)]??'','stack':_0x523105['stack']??'','timestamp':_0x523105['timestamp']??new Date()['toISOString'](),'kind':_0x523105[_0x3112b1(0x3ea)],'url':_0x523105[_0x3112b1(0x72e)],'status':_0x523105['status'],'method':_0x523105[_0x3112b1(0x476)],'durationMs':_0x523105['durationMs'],'elementKey':_0x523105['elementKey'],'prevText':_0x523105[_0x3112b1(0x4a2)],'nextText':_0x523105[_0x3112b1(0x63f)]}));}catch{return[];}}[_0x3ee7d6(0x375)](_0x2fd337){const _0x3955c0=_0x3ee7d6;return _0x2fd337['timestamp']+'::'+_0x2fd337[_0x3955c0(0x92e)]+'::'+_0x2fd337[_0x3955c0(0x209)][_0x3955c0(0x63b)](0x0,0xc8);}[_0x3ee7d6(0x4ad)](_0x5be05e){const _0x23b935=_0x3ee7d6;if(_0x5be05e['objectiveSignals']['length']>0x0)return'objective-signal';if(_0x5be05e[_0x23b935(0x3b9)]['length']>0x0)return'witness';if(_0x5be05e['reloadRecoveryWitness'])return'reload-recovery';const _0x3ea46b=_0x5be05e[_0x23b935(0x220)]?.[_0x23b935(0x6ad)];if(typeof _0x3ea46b==='number'&&_0x3ea46b>0x0)return _0x23b935(0x36d);if(_0x5be05e[_0x23b935(0x4bb)])return'flow-end';return void 0x0;}['defaultExpectedRegion'](_0x3dc914){const _0x51a0a2=_0x3ee7d6;let _0x47a9c8=0x0,_0x56cf1b=0x0;for(const _0x1708c3 of _0x3dc914[_0x51a0a2(0x572)]){if(_0x51a0a2(0x258)!=='hlpCj')try{const _0x2ac50b=_0x54e299['getErrors']();return{'content':[{'type':_0x51a0a2(0x5d9),'text':_0x532e9c['stringify'](_0x2ac50b,null,0x2)}]};}catch(_0x6d5751){return _0x4bb4ba('rn_get_errors',_0x6d5751);}else{const _0x426bbc=_0x1708c3[_0x51a0a2(0x94c)]['x']+_0x1708c3[_0x51a0a2(0x94c)]['w'],_0x2ff4d9=_0x1708c3['bounds']['y']+_0x1708c3[_0x51a0a2(0x94c)]['h'];if(_0x426bbc>_0x47a9c8)_0x47a9c8=_0x426bbc;if(_0x2ff4d9>_0x56cf1b)_0x56cf1b=_0x2ff4d9;}}(_0x47a9c8<=0x0||_0x56cf1b<=0x0)&&(_0x47a9c8=0x1f4,_0x56cf1b=0x3e8);const _0x5be31f=_0x3f7b21;return{'x':0x0,'y':_0x5be31f,'w':_0x47a9c8,'h':Math['max'](0x0,_0x56cf1b-_0x5be31f),..._0x3dc914[_0x51a0a2(0x8b1)]?{'screenName':_0x3dc914['screenName']}:{}};}[_0x3ee7d6(0x4aa)](_0x46793a,_0x25e799){const _0x3fd25f=_0x3ee7d6,_0x3cc78d=_0x46793a[_0x3fd25f(0x3ea)]??'metro-error';if(_0x3cc78d===_0x3fd25f(0x6b4)||_0x3cc78d===_0x3fd25f(0x274)||_0x3cc78d==='unhandled-rejection')return _0x3fd25f(0x7d6)!==_0x3fd25f(0x3ff)?{'objective':{'kind':'js-exception','message':_0x46793a['message'],'detail':_0x46793a[_0x3fd25f(0x209)]||void 0x0,'flowId':_0x25e799}}:_0x356171['length']<=_0x19f928?_0x167401:_0x34ac1d['slice'](0x0,_0x512836)+'…';if(_0x3cc78d===_0x3fd25f(0x80a)){const _0x25a1ea=typeof _0x46793a['status']!=='number';return{'objective':{'kind':_0x25a1ea?'network-failure':'server-error','message':_0x46793a[_0x3fd25f(0x92e)],'detail':this['formatNetworkDetail'](_0x46793a),'flowId':_0x25e799}};}if(_0x3cc78d===_0x3fd25f(0x127)){if(_0x46793a['status']===0x191||_0x46793a['status']===0x193)return{'objective':{'kind':'server-error','message':_0x46793a['message'],'detail':this['formatNetworkDetail'](_0x46793a),'flowId':_0x25e799}};return{'witness':{'kind':_0x3fd25f(0x8bf),'message':_0x46793a[_0x3fd25f(0x92e)],'detail':this[_0x3fd25f(0x333)](_0x46793a),'flowId':_0x25e799}};}if(_0x3cc78d===_0x3fd25f(0x2ea))return{'mutationMarker':!![]};if(_0x3cc78d==='optimistic-rollback'){const _0x5b043b=_0x22ae2a(_0x46793a);return{'witness':{'kind':_0x3fd25f(0x23e),'message':_0x3fd25f(0x206)+(_0x46793a['elementKey']??_0x3fd25f(0x365)),..._0x5b043b?{'detail':_0x5b043b}:{},'flowId':_0x25e799}};}if(_0x3cc78d===_0x3fd25f(0x1ee))return{'witness':{'kind':'console-error','message':_0x46793a['message'],'flowId':_0x25e799}};return{'witness':{'kind':_0x3fd25f(0x23e),'message':_0x3fd25f(0x66d)+_0x3cc78d+'\x27:\x20'+_0x46793a['message'],'flowId':_0x25e799}};}[_0x3ee7d6(0x333)](_0x2a3779){const _0x1f11b4=_0x3ee7d6,_0x5f5079=[];if(_0x2a3779[_0x1f11b4(0x476)])_0x5f5079[_0x1f11b4(0x496)]('method='+_0x2a3779[_0x1f11b4(0x476)]);if(_0x2a3779['url'])_0x5f5079[_0x1f11b4(0x496)](_0x1f11b4(0x447)+_0x2a3779['url']);if(typeof _0x2a3779['status']===_0x1f11b4(0x513))_0x5f5079['push'](_0x1f11b4(0x4c5)+_0x2a3779[_0x1f11b4(0x9d0)]);if(typeof _0x2a3779[_0x1f11b4(0x8ad)]==='number')_0x5f5079['push']('durationMs='+_0x2a3779[_0x1f11b4(0x8ad)]);return _0x5f5079['length']>0x0?_0x5f5079[_0x1f11b4(0x221)]('\x20'):void 0x0;}async['runVerifyMarkers'](_0x2f0ef3,_0x574bce){const _0x139f14=_0x3ee7d6,_0x19b2bd=[];let _0x4bc56f;if(_0x2f0ef3[_0x139f14(0x636)]){const _0x5aa2e9=_0x2f0ef3['verifyMutation'][_0x139f14(0x85a)];let _0x3da0ef=![],_0x291a0c;if(_0x5aa2e9){const _0x2b2144=await this['screen'][_0x139f14(0x4de)](_0x5aa2e9)['catch'](()=>({'success':![],'visible':![]}));_0x3da0ef=_0x2b2144[_0x139f14(0x42d)]&&_0x2b2144[_0x139f14(0x7a4)],_0x291a0c=_0x139f14(0x303)+JSON[_0x139f14(0x2c1)](_0x5aa2e9)+'\x20visible='+_0x3da0ef;}else{if('heQUv'!==_0x139f14(0x33b))_0x291a0c='route='+(_0x2f0ef3[_0x139f14(0x636)][_0x139f14(0x6bd)]??'<unknown>');else return'WDA\x20already\x20reachable\x20—\x20iproxy\x20bridge\x20not\x20(re)started.';}_0x19b2bd['push']({'kind':'verify-observation','message':'verifyMutation:\x20'+_0x2f0ef3[_0x139f14(0x636)]['sourceMethod']+'\x20'+_0x2f0ef3['verifyMutation']['sourceEndpoint']+'\x20'+(_0x3da0ef?_0x139f14(0x59c):_0x139f14(0x1f6)),'detail':_0x291a0c,'flowId':_0x574bce});if(_0x2f0ef3['verifyMutation']['mutationKind']!=='storage'){const _0x43bd0f=_0x2f0ef3['verifyMutation']['echoExpectations']??[];for(const _0x375069 of _0x43bd0f){const _0x454d67=await this[_0x139f14(0x61c)](_0x375069);_0x454d67&&_0x19b2bd['push']({'kind':_0x139f14(0x428),'message':_0x139f14(0x72d)+_0x2f0ef3[_0x139f14(0x636)][_0x139f14(0x3f5)]+'\x20'+_0x2f0ef3['verifyMutation']['sourceEndpoint']+'\x20→\x20response\x20'+(_0x375069[_0x139f14(0x8f1)]?'field='+_0x375069[_0x139f14(0x8f1)]+'\x20':'')+'value='+JSON[_0x139f14(0x2c1)](_0x375069[_0x139f14(0x472)])+'\x20not\x20echoed\x20by\x20UI','detail':_0x454d67,'flowId':_0x574bce});}}}if(_0x2f0ef3[_0x139f14(0x753)]){const _0x2371b5=_0x2f0ef3[_0x139f14(0x753)][_0x139f14(0x60a)];let _0x5c768e=![],_0x301aa7;if(_0x2371b5){const _0x44fbde=await this['screen'][_0x139f14(0x4de)](_0x2371b5)['catch'](()=>({'success':![],'visible':![]}));_0x5c768e=_0x44fbde[_0x139f14(0x42d)]&&_0x44fbde['visible'],_0x301aa7='protectedRoute='+_0x2f0ef3['verifyAuth']['protectedRoute']+_0x139f14(0x666)+JSON['stringify'](_0x2371b5)+'\x20visible='+_0x5c768e;}else _0x301aa7=_0x139f14(0x74e)+_0x2f0ef3[_0x139f14(0x753)][_0x139f14(0x5c7)];_0x19b2bd['push']({'kind':'verify-observation','message':'verifyAuth:\x20'+(_0x5c768e?'user-marker\x20visible\x20on\x20protected\x20route':_0x139f14(0x951)),'detail':_0x301aa7,'flowId':_0x574bce});}if(_0x2f0ef3[_0x139f14(0x90b)]){const _0x5c7c95=_0x2f0ef3[_0x139f14(0x90b)]['selectorHint'];let _0x5eee7d=![],_0x6c73f9;if(_0x5c7c95){if(_0x139f14(0x5f3)!=='xnVzn'){const _0x4d7c01=await this['screen'][_0x139f14(0x4de)](_0x5c7c95)['catch'](()=>({'success':![],'visible':![]}));_0x5eee7d=_0x4d7c01[_0x139f14(0x42d)]&&_0x4d7c01['visible'],_0x6c73f9='destination='+_0x2f0ef3[_0x139f14(0x90b)][_0x139f14(0x7c0)]+_0x139f14(0x196)+JSON['stringify'](_0x5c7c95)+_0x139f14(0x9a8)+_0x5eee7d;}else _0x4b6595=_0x4249a8>=0x0?_0x4ea973:_0x55cffb,_0x49a7a8=!![];}else _0x6c73f9='destination='+_0x2f0ef3[_0x139f14(0x90b)][_0x139f14(0x7c0)];_0x19b2bd['push']({'kind':'verify-observation','message':_0x139f14(0x556)+(_0x5eee7d?_0x139f14(0x1d7):_0x139f14(0x242)),'detail':_0x6c73f9,'flowId':_0x574bce});}if(_0x2f0ef3[_0x139f14(0x4fb)]){const _0x1783e5=_0x2f0ef3[_0x139f14(0x4fb)]['expectedSelectors']??_0x2f0ef3['verifyProfileTransition'][_0x139f14(0x48b)][_0x139f14(0x986)](_0x33e0cc=>({'text':_0x33e0cc,'route':_0x33e0cc}));_0x4bc56f=await this['runReloadRecoveryWitness']({'expectedSelectors':_0x1783e5});}return{'witnesses':_0x19b2bd,'reload':_0x4bc56f};}async[_0x3ee7d6(0x61c)](_0x507839){const _0x23f00f=_0x3ee7d6,_0x33a9dd=0x190,_0x1fe253=0x5,_0x33d9ad=_0x51ab77(_0x507839[_0x23f00f(0x472)]);let _0xe2f9df=null;for(let _0x31984d=0x0;_0x31984d<_0x1fe253;_0x31984d++){const _0x17f108=await this[_0x23f00f(0xd3)](_0x507839[_0x23f00f(0x56e)]);if(_0x17f108!==null){if('UdlAj'==='IrDiS'){if(!this['entry'])return null;if(this['entry']['epoch']!==_0x4d7968)return null;return this['entry'][_0x23f00f(0x94f)];}else{_0xe2f9df=_0x17f108;const _0x534acc=_0x51ab77(_0x17f108);if(_0x12cbf9(_0x33d9ad,_0x534acc,_0x507839[_0x23f00f(0x472)])){if('mgRmC'===_0x23f00f(0x440)){const _0x4a7ae1=[_0x23f00f(0x665),_0x23f00f(0x64d),_0x23f00f(0x157),_0x23f00f(0x68b)],_0xae663f=_0x290c59['changed']['filter'](_0x145b2f=>_0x4a7ae1['some'](_0x1aaea0=>_0x145b2f[_0x23f00f(0x83f)](_0x1aaea0)));_0xae663f[_0x23f00f(0x945)]>0x0&&_0x5aee29['push']('Native\x20dependency\x20versions\x20changed:\x20'+_0xae663f['join'](',\x20')+_0x23f00f(0x193));}else return null;}}}_0x31984d<_0x1fe253-0x1&&await new Promise(_0xfa2bee=>setTimeout(_0xfa2bee,_0x33a9dd));}if(_0xe2f9df===null)return null;const _0x12099d=['selector='+JSON[_0x23f00f(0x2c1)](_0x507839[_0x23f00f(0x56e)]),_0x23f00f(0x668)+JSON[_0x23f00f(0x2c1)](_0x507839['responseValue']),_0x23f00f(0x8f0)+JSON['stringify'](_0xe2f9df)];if(_0x507839[_0x23f00f(0x8f1)])_0x12099d[_0x23f00f(0x558)](_0x23f00f(0x711)+_0x507839['responseField']);return _0x12099d['join']('\x20');}async['readSelectorText'](_0x492b5a){const _0x451159=_0x3ee7d6;if(typeof this[_0x451159(0x5e9)]['fetchSourceTree']!=='function'||typeof this[_0x451159(0x5e9)][_0x451159(0x6a3)]!==_0x451159(0x8b5))return null;const _0x5d7548=await this['screen']['fetchSourceTree']()[_0x451159(0x4ba)](()=>null);if(!_0x5d7548)return null;const _0x91ae32=this['screen']['findElementFromTree'](_0x5d7548,_0x492b5a),_0x48e26e=_0x91ae32[0x0];if(!_0x48e26e)return null;const _0x401f4f=typeof _0x48e26e[_0x451159(0x84f)]===_0x451159(0x7fd)&&_0x48e26e['value']||typeof _0x48e26e[_0x451159(0x10d)]==='string'&&_0x48e26e['label']||typeof _0x48e26e['name']===_0x451159(0x7fd)&&_0x48e26e['name']||'';if(_0x492b5a[_0x451159(0x5d9)]!==void 0x0&&_0x401f4f===_0x492b5a[_0x451159(0x5d9)]&&(typeof _0x48e26e['value']!==_0x451159(0x7fd)||!_0x48e26e[_0x451159(0x84f)])&&(typeof _0x48e26e[_0x451159(0x10d)]!=='string'||!_0x48e26e[_0x451159(0x10d)]))return null;return _0x401f4f;}async[_0x3ee7d6(0x1d5)](_0x18f3fb){const _0x29cfc4=_0x3ee7d6,_0xf17405=_0x18f3fb['expectedSelectors'][_0x29cfc4(0x986)]((_0x169a7c,_0x3b1178)=>_0x169a7c[_0x29cfc4(0x308)]??_0x169a7c['text']??_0x169a7c['accessibilityLabel']??_0x169a7c['type']??'selector-'+_0x3b1178),_0x1f048a=await this['snapshotReachable'](_0x18f3fb['expectedSelectors'])[_0x29cfc4(0x4ba)](()=>null);if(_0x1f048a===null)return{'kind':_0x29cfc4(0x226),'outcome':'inconclusive','expectedRoutes':_0xf17405,'reachableBeforeReload':[],'reason':'Pre-reload\x20snapshot\x20failed\x20(WDA\x20unreachable\x20or\x20source\x20error)','reloadMechanism':_0x29cfc4(0x8e1)};if(_0x1f048a['length']===_0xf17405[_0x29cfc4(0x945)])return{'kind':'reload-recovery','outcome':'reload-not-needed','expectedRoutes':_0xf17405,'reachableBeforeReload':_0x1f048a,'reloadMechanism':'dev-settings-reload'};const _0x599799=await this[_0x29cfc4(0x5e9)]['openUrl'](_0x29cfc4(0x3b0));if(!_0x599799[_0x29cfc4(0x42d)])return{'kind':_0x29cfc4(0x226),'outcome':_0x29cfc4(0x1de),'expectedRoutes':_0xf17405,'reachableBeforeReload':_0x1f048a,'reason':_0x29cfc4(0x1fa)+(_0x599799['error']??'unknown'),'reloadMechanism':_0x29cfc4(0x8e1)};const _0x385cfa=_0x18f3fb[_0x29cfc4(0x764)]??0x2710,_0x165d40=await this[_0x29cfc4(0x9f7)](_0x385cfa);if(!_0x165d40)return{'kind':_0x29cfc4(0x226),'outcome':'inconclusive','expectedRoutes':_0xf17405,'reachableBeforeReload':_0x1f048a,'reason':'App\x20did\x20not\x20respond\x20on\x20WDA\x20within\x20'+_0x385cfa+'ms\x20after\x20reload','reloadMechanism':_0x29cfc4(0x8e1)};const _0x46123f=await this[_0x29cfc4(0x443)](_0x18f3fb[_0x29cfc4(0x19d)])[_0x29cfc4(0x4ba)](()=>null);if(_0x46123f===null)return{'kind':'reload-recovery','outcome':'inconclusive','expectedRoutes':_0xf17405,'reachableBeforeReload':_0x1f048a,'reason':_0x29cfc4(0x3b1),'reloadMechanism':_0x29cfc4(0x8e1)};if(_0x46123f['length']===_0xf17405['length'])return{'kind':_0x29cfc4(0x226),'outcome':_0x29cfc4(0x4e7),'expectedRoutes':_0xf17405,'reachableBeforeReload':_0x1f048a,'reachableAfterReload':_0x46123f,'reloadMechanism':'dev-settings-reload'};return{'kind':'reload-recovery','outcome':'stale-unrecoverable','expectedRoutes':_0xf17405,'reachableBeforeReload':_0x1f048a,'reachableAfterReload':_0x46123f,'reloadMechanism':_0x29cfc4(0x8e1)};}async['snapshotReachable'](_0x161204){const _0x17fdb7=_0x3ee7d6,_0x2d88e9=[];for(let _0x223364=0x0;_0x223364<_0x161204['length'];_0x223364++){const _0x50a227=_0x161204[_0x223364],_0x44e4e8=_0x50a227['route']??_0x50a227['text']??_0x50a227[_0x17fdb7(0x478)]??_0x50a227['type']??_0x17fdb7(0x788)+_0x223364,_0x2eccba=await this[_0x17fdb7(0x5e9)][_0x17fdb7(0x4de)]({'text':_0x50a227[_0x17fdb7(0x5d9)],'accessibilityLabel':_0x50a227[_0x17fdb7(0x478)],'type':_0x50a227['type']})[_0x17fdb7(0x4ba)](()=>({'success':![],'visible':![]}));if(_0x2eccba['success']&&_0x2eccba['visible'])_0x2d88e9[_0x17fdb7(0x496)](_0x44e4e8);}return _0x2d88e9;}async[_0x3ee7d6(0x9f7)](_0x369049){const _0x5abf6b=_0x3ee7d6,_0x16b65f=Date['now']();while(Date['now']()-_0x16b65f<_0x369049){const _0x42fd2a=await this[_0x5abf6b(0x5e9)][_0x5abf6b(0x655)]()['catch'](()=>![]);if(_0x42fd2a)return!![];await new Promise(_0x32712c=>setTimeout(_0x32712c,0xc8));}return![];}async[_0x3ee7d6(0x8f3)](_0x197def){const _0x324516=_0x3ee7d6,_0x330f02=[];let _0x2a208a;if(_0x197def!=null)'MNlfe'==='MNlfe'?_0x2a208a=_0x197def:this[_0x324516(0x464)]=_0x945c50;else try{const _0x170d26=await this['screen'][_0x324516(0x8c5)]();if(!_0x170d26['success']||!_0x170d26['source'])return[];_0x2a208a=_0x170d26['source'];}catch{return[];}const _0x4bc579=/\b(error|failed|invalid|denied|something went wrong)\b/i,_0x16ae54=/alert|status/i,_0xd7feb5=new Set(),_0x2b7261=_0x36865=>{const _0x8a7e7c=_0x324516;if(!_0x36865||typeof _0x36865!=='object')return;const _0xbe8a0e=_0x36865,_0x38056a=String(_0xbe8a0e['value']??_0xbe8a0e['label']??_0xbe8a0e['name']??'')['trim'](),_0x438e79=String(_0xbe8a0e[_0x8a7e7c(0x10d)]??_0xbe8a0e['name']??_0xbe8a0e[_0x8a7e7c(0x85c)]??'<unnamed>'),_0x11445d=(_0xbe8a0e[_0x8a7e7c(0x85c)]??'')+'::'+_0x438e79+'::'+_0x38056a;if(_0xbe8a0e['type']==='XCUIElementTypeAlert')!_0xd7feb5[_0x8a7e7c(0x21c)](_0x11445d)&&(_0xd7feb5[_0x8a7e7c(0x5c1)](_0x11445d),_0x330f02['push']({'label':_0x438e79,'text':_0x1ac3bd(_0x38056a,0xc8),'matchedSignal':_0x8a7e7c(0x86c)}));else{if(_0x38056a[_0x8a7e7c(0x945)]>0x0&&(_0x16ae54[_0x8a7e7c(0x364)](_0x438e79)||_0x16ae54['test'](_0x38056a)))!_0xd7feb5['has'](_0x11445d)&&(_0xd7feb5['add'](_0x11445d),_0x330f02['push']({'label':_0x438e79,'text':_0x1ac3bd(_0x38056a,0xc8),'matchedSignal':_0x8a7e7c(0x86c)}));else _0x38056a['length']>0x0&&_0x4bc579[_0x8a7e7c(0x364)](_0x38056a)&&(!_0xd7feb5[_0x8a7e7c(0x21c)](_0x11445d)&&(_0xd7feb5['add'](_0x11445d),_0x330f02[_0x8a7e7c(0x496)]({'label':_0x438e79,'text':_0x1ac3bd(_0x38056a,0xc8),'matchedSignal':_0x8a7e7c(0x5b4)})));}if(Array['isArray'](_0xbe8a0e[_0x8a7e7c(0x9c3)])){for(const _0x130cc2 of _0xbe8a0e[_0x8a7e7c(0x9c3)])_0x2b7261(_0x130cc2);}};try{_0x2b7261(_0x2a208a);}catch{}return _0x330f02;}};function _0x22ae2a(_0x37002e){const _0x39fa3a=_0x3ee7d6,_0x4cd502=[];if(_0x37002e['elementKey'])_0x4cd502['push']('key='+_0x37002e['elementKey']);if(typeof _0x37002e[_0x39fa3a(0x4a2)]===_0x39fa3a(0x7fd))_0x4cd502['push'](_0x39fa3a(0x7b6)+_0x1ac3bd(_0x37002e[_0x39fa3a(0x4a2)],0x50));if(typeof _0x37002e['nextText']==='string')_0x4cd502[_0x39fa3a(0x496)]('next='+_0x1ac3bd(_0x37002e[_0x39fa3a(0x63f)],0x50));if(typeof _0x37002e[_0x39fa3a(0x8ad)]==='number')_0x4cd502[_0x39fa3a(0x496)]('durationMs='+_0x37002e['durationMs']);return _0x4cd502[_0x39fa3a(0x945)]>0x0?_0x4cd502['join']('\x20'):void 0x0;}function _0x1ac3bd(_0x69ed20,_0x18a2df){const _0x163889=_0x3ee7d6;return _0x69ed20[_0x163889(0x945)]<=_0x18a2df?_0x69ed20:_0x69ed20[_0x163889(0x63b)](0x0,_0x18a2df)+'…';}function _0x1391af(_0x5df977){const _0x115009=_0x3ee7d6;if(_0x5df977['length']===0x0)return void 0x0;const _0x1fb302=_0x5df977[_0x115009(0x63b)](0x0,0x5)['map'](_0x9100c0=>{const _0x12ac6a=_0x115009;if(_0x12ac6a(0x421)==='EmlHo')throw new _0x2efb3c(_0x12ac6a(0x840));else{const _0x423711=_0x9100c0['nodeId']?_0x12ac6a(0x1fe)+_0x1ac3bd(_0x9100c0['nodeId'],0x20):'';return _0x9100c0['kind']+'/'+_0x9100c0[_0x12ac6a(0x460)]+_0x423711;}}),_0x4da579=_0x5df977['length']>_0x1fb302['length']?'\x20+'+(_0x5df977[_0x115009(0x945)]-_0x1fb302['length'])+'\x20more':'';return''+_0x1fb302['join'](',\x20')+_0x4da579;}function _0x51ab77(_0x286fa7){return String(_0x286fa7)['trim']();}function _0x12cbf9(_0x4754d6,_0x3ab4d6,_0xe3c3ca){const _0x151675=_0x3ee7d6;if(typeof _0xe3c3ca===_0x151675(0x513)){const _0x6f7683=Number(_0x3ab4d6);return Number['isFinite'](_0x6f7683)&&_0x6f7683===_0xe3c3ca;}if(_0x4754d6[_0x151675(0x945)]===0x0)return _0x3ab4d6['length']===0x0;return _0x3ab4d6[_0x151675(0x17e)]()['includes'](_0x4754d6[_0x151675(0x17e)]());}function _0x2e4690(_0x827205){const _0x3ef1fc=_0x3ee7d6;if(typeof _0x827205['text']!==_0x3ef1fc(0x7fd)||!_0x469277(_0x827205[_0x3ef1fc(0x5d9)]))return;const _0x20f5b5=_0x3d1131(_0x827205[_0x3ef1fc(0x5d9)]);_0x20f5b5&&(_0x827205['source']=_0x20f5b5['pathSlug']+':'+_0x20f5b5['line']+':'+_0x20f5b5[_0x3ef1fc(0x1c3)]);}function _0xcf7605(_0x3ffcdd){const _0x2a9dee=_0x3ee7d6;switch(_0x3ffcdd['action']){case'type':{const _0x29bdd5={'value':_0x3ffcdd[_0x2a9dee(0x84f)]};if(_0x3ffcdd[_0x2a9dee(0x5fc)]){if(_0x2a9dee(0x5b8)!==_0x2a9dee(0x53e)){const _0x156a5a={};if(_0x3ffcdd['into'][_0x2a9dee(0x5d9)]!==void 0x0)_0x156a5a[_0x2a9dee(0x5d9)]=_0x3ffcdd['into'][_0x2a9dee(0x5d9)];_0x3ffcdd['into']['accessibilityLabel']!==void 0x0&&(_0x156a5a['accessibilityLabel']=_0x3ffcdd['into']['accessibilityLabel']);_0x2e4690(_0x156a5a);if(Object['keys'](_0x156a5a)[_0x2a9dee(0x945)]>0x0)_0x29bdd5[_0x2a9dee(0x555)]=_0x156a5a;}else{const _0x359295=_0x2a106f['match'](/\n(\s+)"/),_0xce5751=_0x359295?.[0x1]??'\x20\x20',_0x213713=_0x1c7fb6[_0x2a9dee(0x3f0)]('\x0a'),_0x113895=_0xf87878['stringify'](_0x59b200,null,_0xce5751);return _0x213713?_0x113895+'\x0a':_0x113895;}}return _0x29bdd5;}case'tap':case _0x2a9dee(0x78b):case _0x2a9dee(0x425):case'scrollTo':case _0x2a9dee(0x85e):case _0x2a9dee(0x4de):case'assertNotVisible':{const _0x396c6d={};if(_0x2a9dee(0x5d9)in _0x3ffcdd&&_0x3ffcdd['text']!==void 0x0)_0x396c6d[_0x2a9dee(0x5d9)]=_0x3ffcdd[_0x2a9dee(0x5d9)];_0x2a9dee(0x478)in _0x3ffcdd&&_0x3ffcdd[_0x2a9dee(0x478)]!==void 0x0&&(_0x396c6d['accessibilityLabel']=_0x3ffcdd[_0x2a9dee(0x478)]);if('type'in _0x3ffcdd&&_0x3ffcdd[_0x2a9dee(0x85c)]!==void 0x0)_0x396c6d['type']=_0x3ffcdd['type'];return _0x2e4690(_0x396c6d),Object[_0x2a9dee(0x208)](_0x396c6d)[_0x2a9dee(0x945)]>0x0?{'target':_0x396c6d}:{};}case'pressKey':return{'value':_0x3ffcdd[_0x2a9dee(0x2fe)]};case _0x2a9dee(0x81d):return{'value':_0x3ffcdd['direction']};default:return{};}}import{spawn as _0x330a36}from'child_process';var _0x5e6b5e=0x1fa4,_0x4c2174=0x1fa4,_0x3ab123=0x32;function _0x2c91da(_0x198703){return new Promise(_0x57fd90=>{const _0x3fb122=_0x4a5a;let _0x2efd99='',_0x170567=![];const _0x5e7529=_0x330a36('which',[_0x198703],{'stdio':['ignore','pipe','ignore']});_0x5e7529['stdout']['on'](_0x3fb122(0x978),_0x277247=>{_0x2efd99+=_0x277247['toString']();}),_0x5e7529['on']('error',()=>{!_0x170567&&(_0x170567=!![],_0x57fd90(null));}),_0x5e7529['on'](_0x3fb122(0x41e),_0x28db69=>{const _0x46d8e6=_0x3fb122;if(_0x170567)return;_0x170567=!![];if(_0x28db69!==0x0)_0x57fd90(null);else{const _0x425407=_0x2efd99[_0x46d8e6(0x5da)]();_0x57fd90(_0x425407['length']>0x0?_0x425407:null);}});});}var _0xf8466e=class{['child']=null;[_0x3ee7d6(0x737)]=null;[_0x3ee7d6(0x6ef)];['devicePort'];[_0x3ee7d6(0x4ee)]=[];[_0x3ee7d6(0x9ab)];[_0x3ee7d6(0x78f)];[_0x3ee7d6(0x18c)]=null;constructor(_0x2674e0={}){const _0x4e6d5f=_0x3ee7d6;this['localPort']=_0x2674e0[_0x4e6d5f(0x6ef)]??_0x5e6b5e,this[_0x4e6d5f(0x909)]=_0x2674e0['devicePort']??_0x4c2174,this['spawnFn']=_0x2674e0[_0x4e6d5f(0x9ab)]??_0x330a36,this['whichFn']=_0x2674e0['whichFn']??_0x2c91da;}[_0x3ee7d6(0x12e)](){const _0x527acf=_0x3ee7d6;return this['child']!==null&&this[_0x527acf(0x91b)][_0x527acf(0x186)]===null;}async['start'](_0x5cd7eb){const _0x45d30f=_0x3ee7d6;while(!![]){if(_0x45d30f(0x625)!=='xqhPA'){const _0x3d0b33=_0xf28091?_0x45d30f(0x585):_0x45d30f(0x224),_0x30c245=_0x2609c7?'`retry`\x20or\x20`halt`':_0x45d30f(0x44e);return{'runId':_0x5db58f,'status':'error','initialObservation':_0x91eb20['initialObservation'],'completedSegments':_0xf491ae['completed'],'error':_0x45d30f(0x61a)+_0x71388b+'\x22\x20is\x20not\x20valid\x20for\x20pause\x20state\x20\x22'+_0x3d0b33+'\x22.\x20Re-issue\x20rn_test_chain_continue\x20with\x20'+_0x30c245+'.'};}else{if(this[_0x45d30f(0x12e)]())return{'ok':![],'reason':_0x45d30f(0x98b),'pid':this[_0x45d30f(0x91b)]?.['pid']};if(!this['startInFlight'])break;await this[_0x45d30f(0x18c)][_0x45d30f(0x4ba)](()=>void 0x0);}}const _0x59c08f=this[_0x45d30f(0x6ee)](_0x5cd7eb);this['startInFlight']=_0x59c08f;try{return await _0x59c08f;}finally{this['startInFlight']===_0x59c08f&&(this[_0x45d30f(0x18c)]=null);}}async['startInner'](_0x4cffd3){const _0x302c33=_0x3ee7d6;if(this['isRunning']())return{'ok':![],'reason':'already-running','pid':this['child']?.['pid']};const _0x4e82c9=await this[_0x302c33(0x78f)](_0x302c33(0x95a));if(!_0x4e82c9)return{'ok':![],'reason':_0x302c33(0x828)};this['udid']=_0x4cffd3,this[_0x302c33(0x4ee)]=[];let _0x3547d3;try{_0x3547d3=this[_0x302c33(0x9ab)](_0x4e82c9,[String(this[_0x302c33(0x6ef)]),String(this[_0x302c33(0x909)]),'-u',_0x4cffd3],{'stdio':['ignore','pipe','pipe']});}catch(_0x21353a){return this['appendStderr']('iproxy\x20spawn\x20threw:\x20'+(_0x21353a instanceof Error?_0x21353a[_0x302c33(0x92e)]:String(_0x21353a))),{'ok':![],'reason':_0x302c33(0x1e1),'stderr':[...this[_0x302c33(0x4ee)]]};}_0x3547d3[_0x302c33(0x870)]?.['on']('data',_0x41da71=>{const _0x41f707=_0x302c33,_0x302421=_0x41da71['toString']();for(const _0x98e973 of _0x302421[_0x41f707(0x814)](/\r?\n/)){if(_0x98e973[_0x41f707(0x5da)]()['length']===0x0)continue;this[_0x41f707(0x8de)](_0x98e973);}}),_0x3547d3['stdout']?.['on'](_0x302c33(0x978),_0x45210b=>{const _0x36525f=_0x302c33,_0x50f825=_0x45210b['toString']();for(const _0x1ea7e8 of _0x50f825[_0x36525f(0x814)](/\r?\n/)){if(_0x36525f(0x86f)!==_0x36525f(0x603)){if(_0x1ea7e8[_0x36525f(0x5da)]()['length']===0x0)continue;this[_0x36525f(0x8de)](_0x36525f(0x574)+_0x1ea7e8);}else return this['testDataManager'];}});const _0x47320c=await this[_0x302c33(0x7c6)](_0x3547d3,0x32);if(_0x47320c){if('Rpshv'!==_0x302c33(0x9af))return this[_0x302c33(0x91b)]=null,{'ok':![],'reason':'spawn-failed','stderr':[...this[_0x302c33(0x4ee)]]};else{const _0x56fc9d=_0x592785['action'],_0x47d07e=_0x351076[_0x302c33(0x125)]??'unspecified\x20failure';return _0x56fc9d+_0x302c33(0x9f8)+_0x47d07e;}}return this[_0x302c33(0x91b)]=_0x3547d3,_0x3547d3['on']('exit',()=>{this['child']===_0x3547d3&&(this['child']=null);}),{'ok':!![],'pid':_0x3547d3['pid'],'stderr':[...this[_0x302c33(0x4ee)]]};}async[_0x3ee7d6(0x2bf)](){const _0x44cb97=_0x3ee7d6;this[_0x44cb97(0x18c)]&&await this[_0x44cb97(0x18c)]['catch'](()=>void 0x0);const _0x15d4e3=this['child'];if(!_0x15d4e3)return;this['child']=null;if(_0x15d4e3[_0x44cb97(0x186)]!==null)return;return new Promise(_0x5c21cc=>{const _0x1ad7a2=_0x44cb97;if(_0x1ad7a2(0x95f)==='MQUkt'){const _0x24811c=_0x42fa2b(_0x5a5b62['PRODUCT_BUNDLE_IDENTIFIER']);if(_0x24811c)return _0x24811c;}else{let _0x11d188=![],_0xbb5997=null,_0x3eccf4=null;const _0x47b65c=()=>{if(_0x11d188)return;_0x11d188=!![];if(_0xbb5997)clearTimeout(_0xbb5997);if(_0x3eccf4)clearTimeout(_0x3eccf4);_0x5c21cc();};_0x15d4e3[_0x1ad7a2(0x9b5)](_0x1ad7a2(0x41e),_0x47b65c);try{_0x15d4e3['kill']('SIGTERM');}catch{if('imQSd'===_0x1ad7a2(0x8d5)){if(_0x8490e0['isCallExpression'](_0x118aa2)){const _0x3fea63=_0x475cea['getExpression']();_0x1aa2cf[_0x1ad7a2(0x9c8)](_0x3fea63)&&_0x3fea63[_0x1ad7a2(0x326)]()===_0x1ad7a2(0x5bc)&&_0x1190fa[_0x1ad7a2(0x496)](_0x46cec3);}}else{_0x47b65c();return;}}_0xbb5997=setTimeout(()=>{const _0x512bbf=_0x1ad7a2;if(_0x11d188)return;try{_0x15d4e3[_0x512bbf(0x142)]('SIGKILL');}catch{}_0x3eccf4=setTimeout(_0x47b65c,0x64),_0x3eccf4['unref']();},0x3e8),_0xbb5997['unref']();}});}async['restart'](_0x26d3bc){const _0x21ec77=_0x3ee7d6;return await this[_0x21ec77(0x2bf)](),this['start'](_0x26d3bc??this['udid']??'');}['getStderr'](){return[...this['stderrBuffer']];}[_0x3ee7d6(0x8de)](_0x5936d7){const _0x520269=_0x3ee7d6;this[_0x520269(0x4ee)]['push'](_0x5936d7),this['stderrBuffer'][_0x520269(0x945)]>_0x3ab123&&this[_0x520269(0x4ee)][_0x520269(0x936)]();}['detectEarlyExit'](_0x56d3f6,_0x3a5d48){return new Promise(_0xc7eb87=>{const _0x990727=_0x4a5a;let _0x40ebbc=![];const _0x4aafdf=_0x847da8=>{if(_0x40ebbc)return;_0x40ebbc=!![],_0xc7eb87(_0x847da8);},_0x15cb3b=()=>_0x4aafdf(!![]);_0x56d3f6[_0x990727(0x9b5)](_0x990727(0x41e),_0x15cb3b),setTimeout(()=>{const _0x49f2b5=_0x990727;_0x56d3f6[_0x49f2b5(0x74c)]('exit',_0x15cb3b),_0x4aafdf(![]);},_0x3a5d48)[_0x990727(0x60e)]();});}};import{join as _0x4b2a43}from'path';var _0x3874b5=/<<([A-Z][A-Z0-9_]*)>>/g;function _0x5ab885(_0x35710d,_0xf408c1=process.env,_0x485e11={}){const _0x17b45e=new Set(),_0x5766bb=_0x1e0b17(_0x35710d,_0xf408c1,_0x17b45e,_0x485e11);return{'value':_0x5766bb,'missing':_0x17b45e};}function _0x1e0b17(_0x1b2291,_0x55f1b9,_0x30815e,_0x1a654b){const _0x55dfb8=_0x3ee7d6;if(typeof _0x1b2291==='string')return'nWKnL'!=='nWKnL'?_0x1e5939(_0x55dfb8(0x20c),_0x3cc9fa):_0x1b2291['replace'](_0x3874b5,(_0x3ea602,_0x310e95)=>{const _0x176f4d=_0x55dfb8,_0x389d05=_0x1a654b[_0x310e95];if(typeof _0x389d05===_0x176f4d(0x7fd)&&_0x389d05['length']>0x0){if('NiXrM'==='iRziR'){if(_0x1146b2['getArguments']()[_0x176f4d(0x945)]>0x0)return![];const _0x3acfde=_0x3b5cf5(_0x1d922b);return _0x36ec87['addArgument'](_0x176f4d(0x8ae)+_0x3acfde+_0x176f4d(0x6b5)),!![];}else return _0x389d05;}const _0x3f0350=_0x55f1b9[_0x310e95];if(typeof _0x3f0350!=='string'||_0x3f0350['length']===0x0)return _0x30815e[_0x176f4d(0x5c1)](_0x310e95),'<<'+_0x310e95+'>>';return _0x3f0350;});if(Array[_0x55dfb8(0x246)](_0x1b2291))return _0x1b2291[_0x55dfb8(0x986)](_0x137738=>_0x1e0b17(_0x137738,_0x55f1b9,_0x30815e,_0x1a654b));if(_0x1b2291&&typeof _0x1b2291===_0x55dfb8(0x5ab)){const _0xe2775a={};for(const [_0x5ed1ae,_0x4924be]of Object[_0x55dfb8(0x6b0)](_0x1b2291)){_0xe2775a[_0x5ed1ae]=_0x1e0b17(_0x4924be,_0x55f1b9,_0x30815e,_0x1a654b);}return _0xe2775a;}return _0x1b2291;}function _0x330e47(_0x53aad3){const _0x16f235=_0x3ee7d6;if(!_0x53aad3)return{};const _0xd25067=_0x53aad3[_0x16f235(0x3ce)]();if(!_0xd25067)return{};return{'CERAPH_TEST_EMAIL':_0xd25067['email'],'CERAPH_TEST_PASSWORD':_0xd25067['password']};}var _0x398db5=0x30d40,_0x3eb3a8=0xc8,_0x3974fd='Authentication\x20required.\x20Run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20first\x20to\x20sign\x20in.',_0x506c7=_0x3ee7d6(0x420);function _0x1c1e11(_0x2aecf3){const _0x3d3eae=_0x3ee7d6,_0x3f03a9={};if(!_0x2aecf3)return _0x3f03a9;return typeof _0x2aecf3[_0x3d3eae(0x5d9)]===_0x3d3eae(0x7fd)&&_0x2aecf3['text']['length']>0x0&&(_0x3f03a9['text']=_0x2aecf3[_0x3d3eae(0x5d9)]),typeof _0x2aecf3[_0x3d3eae(0x9bb)]==='string'&&_0x2aecf3['testID']['length']>0x0&&(_0x3f03a9['accessibilityLabel']=_0x2aecf3[_0x3d3eae(0x9bb)]),typeof _0x2aecf3['role']===_0x3d3eae(0x7fd)&&_0x2aecf3[_0x3d3eae(0x1a1)]['length']>0x0&&(_0x3f03a9['type']=_0x2aecf3[_0x3d3eae(0x1a1)]),_0x3f03a9;}function _0x37dd38(_0x414beb){const _0x178b04=_0x3ee7d6,_0x1dda90=_0x414beb;switch(_0x1dda90[_0x178b04(0x1ec)]){case'tap':case'longPress':case _0x178b04(0x69f):case'clearText':case _0x178b04(0x85e):case _0x178b04(0x4de):case'assertNotVisible':return{..._0x1dda90,..._0x1c1e11(_0x1dda90['target'])};case'type':{if(!_0x1dda90[_0x178b04(0x555)])return _0x1dda90;const _0x3de72c=_0x1c1e11(_0x1dda90['target']),_0xeaa251={};if(_0x3de72c[_0x178b04(0x5d9)]!==void 0x0)_0xeaa251['text']=_0x3de72c[_0x178b04(0x5d9)];return _0x3de72c[_0x178b04(0x478)]!==void 0x0&&(_0xeaa251[_0x178b04(0x478)]=_0x3de72c[_0x178b04(0x478)]),{..._0x1dda90,'into':_0xeaa251,'value':_0x1dda90['value']??''};}case _0x178b04(0x356):return _0x1dda90[_0x178b04(0x7d0)]?{..._0x1dda90,'x':_0x1dda90[_0x178b04(0x7d0)]['x'],'y':_0x1dda90[_0x178b04(0x7d0)]['y']}:_0x1dda90;case'screenshot':return _0x1dda90['name']!==void 0x0?{..._0x1dda90,'label':_0x1dda90['name']}:_0x1dda90;default:return _0x1dda90;}}function _0x55d206(_0x31dedc,_0x4979fa={}){const _0x16fb92=_0x3ee7d6,_0x17f126=_0x5ab885({'steps':_0x31dedc[_0x16fb92(0x22d)]['map'](_0x37dd38),'beforeAll':_0x31dedc[_0x16fb92(0x1d9)]},process.env,_0x4979fa),_0x16b236=(_0x31dedc['requiresEnv']??[])['filter'](_0x53b4fd=>{const _0x4e52f6=_0x16fb92,_0x421d3c=_0x4979fa[_0x53b4fd];if(typeof _0x421d3c==='string'&&_0x421d3c[_0x4e52f6(0x945)]>0x0)return![];const _0xca518c=process.env[_0x53b4fd];return _0xca518c===void 0x0||_0xca518c==='';}),_0x27b1f2=new Set([..._0x17f126[_0x16fb92(0x641)],..._0x16b236]);return{'source':_0x31dedc,'expandedSteps':_0x17f126['value']['steps'],'expandedBeforeAll':_0x17f126['value']['beforeAll'],'missingEnv':_0x27b1f2};}async function _0x13a77e(_0x374601,_0x4c1856,_0x4b24bc,_0x5ad43d,_0x81aae){const _0x47f511=_0x3ee7d6;await _0x4b24bc?.[_0x47f511(0x165)]();const _0x38d6c5=_0x374601['runId'];if(_0x374601['status']===_0x47f511(0x173)||_0x374601[_0x47f511(0x1f5)]['length']===0x0||_0x38d6c5===null)return{'runId':_0x374601[_0x47f511(0x297)],'status':'no-flows','results':[],'hint':_0x374601[_0x47f511(0x384)]??'No\x20flows\x20to\x20run.'};const _0x31842d=_0x374601[_0x47f511(0xd7)]&&_0x374601['affectedFlowNames'][_0x47f511(0x945)]>0x0?new Set(_0x374601[_0x47f511(0xd7)]):void 0x0,_0x2d433b=_0x81aae||_0x31842d?{'runId':_0x38d6c5,..._0x81aae?{'store':_0x81aae}:{},..._0x31842d?{'affectedFlowNames':_0x31842d}:{}}:void 0x0,_0x4e33ce=[],_0xf5f6da=new Set();let _0x31ac3c;const _0x1ba62c=_0x374601['flows']['length'],_0x175e9a=new Map(),_0xf8927c=_0x330e47(_0x5ad43d);for(const _0x568882 of _0x374601['flows']){_0x175e9a[_0x47f511(0x3b6)](_0x568882['flowId'],_0x55d206(_0x568882,_0xf8927c));}const _0x25642e=new Map(),_0x414f04=new Set();for(const _0x4869d5 of _0x374601[_0x47f511(0x685)]??[]){if(_0x47f511(0x826)===_0x47f511(0x826)){if(_0x4869d5['flowIds'][_0x47f511(0x945)]<0x2)continue;const _0x1db3ce=[];let _0x554113=!![];for(const _0x4d2dfd of _0x4869d5['flowIds']){const _0x41b7b4=_0x175e9a['get'](_0x4d2dfd);if(!_0x41b7b4){_0x554113=![];break;}if(_0x41b7b4[_0x47f511(0x439)][_0x47f511(0x1bb)]>0x0){_0x554113=![];break;}_0x1db3ce['push'](_0x41b7b4);}if(!_0x554113)continue;_0x25642e[_0x47f511(0x3b6)](_0x4869d5[_0x47f511(0x49b)][0x0],{'entry':_0x4869d5,'flows':_0x1db3ce});for(const _0x22d3d1 of _0x4869d5['flowIds'])_0x414f04[_0x47f511(0x5c1)](_0x22d3d1);}else this['screen'][_0x47f511(0x655)]()['catch'](()=>void 0x0);}for(let _0x4cce66=0x0;_0x4cce66<_0x374601['flows'][_0x47f511(0x945)];_0x4cce66++){const _0xc2f5b6=_0x374601[_0x47f511(0x1f5)][_0x4cce66],_0x5f2092=_0x175e9a['get'](_0xc2f5b6[_0x47f511(0x416)]),_0x364a66=_0x25642e[_0x47f511(0x47a)](_0xc2f5b6['flowId']);if(_0x364a66){const _0x3f7f1a={'chainId':_0x364a66[_0x47f511(0x392)]['chainId'],'flows':_0x364a66[_0x47f511(0x1f5)][_0x47f511(0x986)](_0x31c019=>({'flowId':_0x31c019['source'][_0x47f511(0x416)],'name':_0x31c019[_0x47f511(0x827)][_0x47f511(0x4d1)],'steps':_0x31c019['expandedSteps'],'beforeAll':_0x31c019[_0x47f511(0x821)],'timeoutMs':_0x31c019['source'][_0x47f511(0x5aa)]})),'bridges':_0x364a66[_0x47f511(0x392)]['bridges']},_0x253dbe=await _0x4c1856[_0x47f511(0x919)](_0x3f7f1a,_0x2d433b);let _0x1b8944=![];for(const _0x58ad4a of _0x253dbe[_0x47f511(0x7c7)]){if('kAKfj'!==_0x47f511(0x9d9)){_0x4e33ce['push'](_0x58ad4a);const _0x20cc12=_0x374601[_0x47f511(0x1f5)]['findIndex'](_0x5a281b=>_0x5a281b['flowId']===_0x58ad4a[_0x47f511(0x416)]);await _0x4b24bc?.['write']({'flow':_0x58ad4a['flow'],'index':_0x20cc12>=0x0?_0x20cc12:_0x4cce66,'total':_0x1ba62c,'success':_0x58ad4a[_0x47f511(0x42d)],'durationMs':_0x58ad4a['totalDurationMs'],'timestamp':new Date()[_0x47f511(0x4a0)]()}),!_0x58ad4a[_0x47f511(0x42d)]&&!_0x1b8944&&(_0x31ac3c=_0x20cc12>=0x0?_0x20cc12:_0x4cce66,_0x1b8944=!![]);}else return{'success':![],'apps':[],'error':'No\x20real\x20iOS\x20device\x20connected.\x20Connect\x20a\x20device\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac.'};}if(_0x1b8944)break;continue;}if(_0x414f04['has'](_0xc2f5b6[_0x47f511(0x416)]))continue;const _0x4d47ac=Date['now']();if(_0x5f2092['missingEnv'][_0x47f511(0x1bb)]>0x0){for(const _0xf0f7dd of _0x5f2092[_0x47f511(0x439)])_0xf5f6da['add'](_0xf0f7dd);_0x4e33ce['push']({'flow':_0xc2f5b6[_0x47f511(0x4d1)],'flowId':_0xc2f5b6[_0x47f511(0x416)],'skipped':!![],'requiresEnv':Array['from'](_0x5f2092['missingEnv'])['sort']()}),await _0x4b24bc?.[_0x47f511(0x65a)]({'flow':_0xc2f5b6['name'],'index':_0x4cce66,'total':_0x1ba62c,'success':![],'durationMs':Date[_0x47f511(0x3d1)]()-_0x4d47ac,'timestamp':new Date()['toISOString']()});continue;}const _0x724267=await _0x4c1856[_0x47f511(0x725)]({'flowId':_0xc2f5b6[_0x47f511(0x416)],'name':_0xc2f5b6['name'],'steps':_0x5f2092[_0x47f511(0x163)],'beforeAll':_0x5f2092['expandedBeforeAll'],'timeoutMs':_0xc2f5b6[_0x47f511(0x5aa)]},_0x2d433b);_0x4e33ce['push'](_0x724267),await _0x4b24bc?.['write']({'flow':_0xc2f5b6[_0x47f511(0x4d1)],'index':_0x4cce66,'total':_0x1ba62c,'success':_0x724267['success'],'durationMs':_0x724267[_0x47f511(0x661)],'timestamp':new Date()[_0x47f511(0x4a0)]()});if(!_0x724267['success']){_0x31ac3c=_0x4cce66;break;}}const _0x6b0d37={'runId':_0x38d6c5,'status':_0x374601['status'],'results':_0x4e33ce,'failedAt':_0x31ac3c,'hint':_0x374601['hint']};return _0xf5f6da['size']>0x0&&(_0x6b0d37['requiresEnv']=Array['from'](_0xf5f6da)['sort']()),_0x6b0d37;}function _0x41d0d3(_0x646454){const _0x513633=_0x3ee7d6;return'WARNING:\x20the\x20working\x20tree\x20was\x20too\x20large\x20to\x20attach\x20to\x20this\x20request\x20('+_0x646454[_0x513633(0x6d9)]+'),\x20so\x20flows\x20were\x20resolved\x20against\x20the\x20committed\x20graph,\x20NOT\x20your\x20local\x20edits.\x20flowIds\x20minted\x20from\x20a\x20dirty-tree\x20preview\x20may\x20come\x20back\x20as\x20unknown-flow-ids\x20—\x20if\x20that\x20happens,\x20re-pick\x20ids\x20from\x20the\x20error\x27s\x20`available`\x20list.\x20Flow\x20ids\x20are\x20content-addressed,\x20so\x20a\x20flow\x20whose\x20steps\x20your\x20local\x20edits\x20changed\x20carries\x20a\x20different\x20id:\x20genuinely\x20divergent\x20flows\x20fail\x20explicitly\x20with\x20unknown-flow-ids\x20rather\x20than\x20silently\x20executing\x20the\x20stale\x20committed\x20steps.\x20Committing\x20your\x20changes\x20restores\x20full\x20working-tree\x20resolution.';}async function _0x4575e2(_0x1275f3){const _0x3eee3b=_0x3ee7d6;if(!_0x1275f3['getWorkingTreeDiff']||!_0x1275f3[_0x3eee3b(0x24c)]||!_0x1275f3[_0x3eee3b(0x593)])return void 0x0;const _0x49ad3a=_0x1275f3[_0x3eee3b(0x2fd)]?await _0x1275f3[_0x3eee3b(0x2fd)](_0x1275f3[_0x3eee3b(0x346)]):'main',[_0x4ad33c,_0xbdb23f,_0x3f9bf8]=await Promise[_0x3eee3b(0x9a6)]([_0x1275f3[_0x3eee3b(0x2bc)](_0x1275f3[_0x3eee3b(0x346)],_0x49ad3a),_0x1275f3[_0x3eee3b(0x35e)](_0x1275f3[_0x3eee3b(0x346)],_0x49ad3a),_0x1275f3[_0x3eee3b(0x24c)](_0x1275f3['cwd'],_0x49ad3a)]);if(!_0x4ad33c[_0x3eee3b(0x5da)]()&&_0x3f9bf8[_0x3eee3b(0x945)]===0x0)return void 0x0;if(_0x4ad33c['length']>_0x398db5)return{'omitted':'diff-too-large','detail':_0x3eee3b(0x8f6)+_0x49ad3a+_0x3eee3b(0x3d4)+_0x4ad33c[_0x3eee3b(0x945)]+_0x3eee3b(0x29f)+_0x398db5};if(_0x3f9bf8[_0x3eee3b(0x945)]>_0x3eb3a8)return{'omitted':_0x3eee3b(0x610),'detail':_0x3f9bf8['length']+'\x20files\x20changed\x20vs\x20'+_0x49ad3a+_0x3eee3b(0x7b5)+_0x3eb3a8};const _0x22ae5c=await _0x1275f3[_0x3eee3b(0x593)](_0x1275f3[_0x3eee3b(0x346)],_0x3f9bf8);return{'baseSha':_0xbdb23f,'diff':_0x4ad33c,'changedFiles':_0x3f9bf8,'appFiles':_0x22ae5c};}async function _0x1f93a6(_0x1176e8,_0x27aa66){const _0x178bd0=_0x3ee7d6,_0xeb5ec4=await _0x27aa66[_0x178bd0(0x656)]();if(!_0xeb5ec4)throw new Error(_0x3974fd);if(_0x1176e8['flowIds']['length']===0x0)throw new Error('flowIds\x20is\x20required\x20and\x20must\x20not\x20be\x20empty.');let _0x5abf7f,_0x544428;try{({owner:_0x5abf7f,repo:_0x544428}=await _0x27aa66['resolveRepo'](_0x27aa66[_0x178bd0(0x346)]));}catch{throw new Error(_0x506c7);}const [_0x374f92,_0x452658]=await Promise[_0x178bd0(0x9a6)]([_0x27aa66[_0x178bd0(0x693)](_0x27aa66[_0x178bd0(0x346)]),_0x27aa66['getGitSha'](_0x27aa66['cwd'],_0x178bd0(0x1ae))]);let _0x30b0df,_0x399a6f;try{const _0x3d2e55=await _0x4575e2(_0x27aa66);_0x3d2e55&&_0x178bd0(0x448)in _0x3d2e55?_0x399a6f=_0x41d0d3(_0x3d2e55):_0x30b0df=_0x3d2e55;}catch(_0x5c47be){await _0x27aa66[_0x178bd0(0x238)]?.['clear']();throw _0x5c47be;}await _0x27aa66['ensureGraph']?.();const _0x4ed8a5=_0x27aa66['getTestIdReady']?await _0x27aa66[_0x178bd0(0x312)]():![],_0x5a3da2=await _0x27aa66[_0x178bd0(0x20e)](_0x178bd0(0x7ba),{'repoOwner':_0x5abf7f,'repoName':_0x544428,'branch':_0x374f92,'headSha':_0x452658,'flowIds':_0x1176e8['flowIds'],..._0x30b0df??{},..._0x4ed8a5?{'testIdReady':!![]}:{}},_0xeb5ec4),_0x2db37d=await _0x13a77e(_0x5a3da2,_0x27aa66['flowRunner'],_0x27aa66['progressWriter'],_0x27aa66[_0x178bd0(0x41c)],_0x27aa66[_0x178bd0(0x43b)]);return _0x399a6f?{..._0x2db37d,'warning':_0x399a6f}:_0x2db37d;}async function _0x4123b7(_0x496acf,_0x5b0a61){const _0x48835f=_0x3ee7d6,_0x43a28c=await _0x5b0a61['loadAuth']();if(!_0x43a28c)throw new Error(_0x3974fd);if(_0x496acf['query'][_0x48835f(0x5da)]()[_0x48835f(0x945)]===0x0){if(_0x48835f(0x576)==='HJMKk')return{'ext':'png','mime':_0x48835f(0x694)};else throw new Error(_0x48835f(0x169));}let _0x5a046d,_0x153ac2;try{if(_0x48835f(0x5e1)===_0x48835f(0x5e1))({owner:_0x5a046d,repo:_0x153ac2}=await _0x5b0a61['resolveRepo'](_0x5b0a61[_0x48835f(0x346)]));else return this['child']=null,{'ok':![],'reason':_0x48835f(0x1e1),'stderr':[...this['stderrBuffer']]};}catch{throw new Error(_0x506c7);}const [_0x162bab,_0x216994]=await Promise[_0x48835f(0x9a6)]([_0x5b0a61['getCurrentBranch'](_0x5b0a61['cwd']),_0x5b0a61[_0x48835f(0x35e)](_0x5b0a61['cwd'],'HEAD')]),_0x194bc2=await _0x4575e2(_0x5b0a61);let _0x235189,_0x3f2f48;_0x194bc2&&'omitted'in _0x194bc2?_0x3f2f48=_0x41d0d3(_0x194bc2):'adNti'!==_0x48835f(0x667)?_0x3f9de9=!![]:_0x235189=_0x194bc2;await _0x5b0a61[_0x48835f(0x7b2)]?.();const _0xaad829=_0x5b0a61['getTestIdReady']?await _0x5b0a61['getTestIdReady']():![],_0x152f25=await _0x5b0a61['fetcher'](_0x48835f(0x306),{'repoOwner':_0x5a046d,'repoName':_0x153ac2,'branch':_0x162bab,'headSha':_0x216994,'query':_0x496acf[_0x48835f(0x660)],..._0x235189??{},..._0xaad829?{'testIdReady':!![]}:{}},_0x43a28c);return _0x3f2f48?{..._0x152f25,'warning':_0x3f2f48}:_0x152f25;}async function _0x432da2(_0x2658ae,_0x3d9dcf){const _0x166e33=_0x3ee7d6,_0x402df9=await _0x3d9dcf[_0x166e33(0x656)]();if(!_0x402df9)throw new Error(_0x3974fd);let _0x315b24,_0x44915d;try{({owner:_0x315b24,repo:_0x44915d}=await _0x3d9dcf[_0x166e33(0x9cc)](_0x3d9dcf[_0x166e33(0x346)]));}catch{throw new Error(_0x506c7);}const _0x9054b6=_0x2658ae['filePaths']?Array['isArray'](_0x2658ae[_0x166e33(0x882)])?_0x2658ae[_0x166e33(0x882)]:[_0x2658ae[_0x166e33(0x882)]]:void 0x0;if(_0x9054b6&&_0x9054b6['length']>_0x3eb3a8)throw new Error('Too\x20many\x20file\x20paths\x20('+_0x9054b6[_0x166e33(0x945)]+_0x166e33(0x405)+_0x3eb3a8+').\x20Narrow\x20the\x20scope.');const [_0x1c6db7,_0x4b5017]=await Promise[_0x166e33(0x9a6)]([_0x3d9dcf[_0x166e33(0x693)](_0x3d9dcf[_0x166e33(0x346)]),_0x3d9dcf[_0x166e33(0x35e)](_0x3d9dcf[_0x166e33(0x346)],_0x166e33(0x1ae))]);let _0x201aa5,_0x5e41c7;if(_0x9054b6&&_0x9054b6['length']>0x0){const _0x2d03b8=_0x3d9dcf['readChangedFileContents']?await _0x3d9dcf['readChangedFileContents'](_0x3d9dcf[_0x166e33(0x346)],_0x9054b6):void 0x0;_0x201aa5={'repoOwner':_0x315b24,'repoName':_0x44915d,'branch':_0x1c6db7,'headSha':_0x4b5017,'filePaths':_0x9054b6,..._0x2d03b8?{'appFiles':_0x2d03b8}:{}};}else{if(!_0x3d9dcf['getWorkingTreeDiff']||!_0x3d9dcf[_0x166e33(0x24c)]||!_0x3d9dcf[_0x166e33(0x593)])throw new Error(_0x166e33(0x840));const _0x5aa2b1=_0x2658ae['base']??(_0x3d9dcf['getDefaultBranch']?await _0x3d9dcf['getDefaultBranch'](_0x3d9dcf[_0x166e33(0x346)]):_0x166e33(0x32f));_0x5e41c7=_0x5aa2b1;const [_0x296bbd,_0x5721d2,_0x701e50]=await Promise[_0x166e33(0x9a6)]([_0x3d9dcf['getWorkingTreeDiff'](_0x3d9dcf['cwd'],_0x5aa2b1),_0x3d9dcf['getGitSha'](_0x3d9dcf['cwd'],_0x5aa2b1),_0x3d9dcf[_0x166e33(0x24c)](_0x3d9dcf[_0x166e33(0x346)],_0x5aa2b1)]);if(_0x296bbd['length']>_0x398db5)throw new Error('Diff\x20exceeds\x20'+_0x398db5+'\x20byte\x20limit\x20('+_0x296bbd['length']+'\x20bytes).\x20Commit\x20your\x20changes\x20in\x20smaller\x20chunks.');if(_0x701e50['length']>_0x3eb3a8)throw new Error('Too\x20many\x20changed\x20files\x20('+_0x701e50['length']+'\x20>\x20'+_0x3eb3a8+').\x20Preview\x20a\x20narrower\x20scope\x20with\x20filePaths.');const _0x4291a3=await _0x3d9dcf[_0x166e33(0x593)](_0x3d9dcf['cwd'],_0x701e50);_0x201aa5={'repoOwner':_0x315b24,'repoName':_0x44915d,'branch':_0x1c6db7,'headSha':_0x4b5017,'baseSha':_0x5721d2,'diff':_0x296bbd,'changedFiles':_0x701e50,'appFiles':_0x4291a3};}await _0x3d9dcf['ensureGraph']?.();const _0x5cb4d0=_0x3d9dcf[_0x166e33(0x312)]?await _0x3d9dcf[_0x166e33(0x312)]():![];_0x5cb4d0&&(_0x201aa5['testIdReady']=!![]);const _0x38844a=await _0x3d9dcf['fetcher']('/rn-list-flows',_0x201aa5,_0x402df9),_0x4a0fa8={};return _0x9054b6&&_0x9054b6[_0x166e33(0x945)]>0x0?_0x4a0fa8[_0x166e33(0x882)]=_0x9054b6:_0x4a0fa8['base']=_0x5e41c7??_0x166e33(0x32f),{'flows':_0x38844a['flows']??[],'totalCount':_0x38844a['totalCount']??(_0x38844a[_0x166e33(0x1f5)]?.['length']??0x0),'scope':_0x4a0fa8,..._0x38844a['truncated']?{'truncated':!![]}:{},..._0x38844a['hint']?{'hint':_0x38844a['hint']}:{}};}var _0x8e3a73=0x1e*0x3c*0x3e8,_0x3a240c=0x5dc,_0x1759a4=0x1f4,_0x588a94=0x64,_0xf9270c=0x32*0x400,_0x1438ec=0x7d0,_0x269bb3=0x3a98,_0x46472e=0x5*0x400,_0x333c79=0x0;function _0x489ed9(){const _0x1eb96f=_0x3ee7d6;return _0x333c79+=0x1,_0x1eb96f(0x47b)+Date['now']()[_0x1eb96f(0x510)](0x24)+'-'+_0x333c79['toString'](0x24);}var _0x49bbd7=0x0;function _0x28ffb2(){const _0x22099d=_0x3ee7d6;_0x49bbd7+=0x1;const _0x517183=Math['random']()[_0x22099d(0x510)](0x24)[_0x22099d(0x63b)](0x2,0xa);return'sack-'+Date[_0x22099d(0x3d1)]()[_0x22099d(0x510)](0x24)+'-'+_0x49bbd7['toString'](0x24)+'-'+_0x517183;}function _0x2fe7cf(_0x2be0cc){const _0x28b193=_0x3ee7d6;if(!_0x2be0cc)return[];return _0x2be0cc['filter'](_0x10819a=>typeof _0x10819a==='string'&&_0x10819a[_0x28b193(0x945)]>0x0&&!_0x10819a['includes'](','));}function _0x2babf9(_0x39efbc,_0x1a707d,_0x1ec83d,_0x1c0c29,_0x20ca38){const _0x3cba5c=_0x3ee7d6,_0xbf34e9=_0x1ec83d['readSet'];if(!_0xbf34e9)return'llm-decides';if(_0xbf34e9['status']===_0x3cba5c(0x776))return _0x3cba5c(0x134);if(_0xbf34e9['hasFullyDynamicRead']){if(_0x39efbc['size']>0x0||_0x1a707d)return _0x3cba5c(0x150);}for(const _0x526ca7 of _0xbf34e9[_0x3cba5c(0x208)]){const _0x6efde8=_0x526ca7[_0x3cba5c(0x3ea)]+':'+_0x526ca7[_0x3cba5c(0x2fe)];if(_0x39efbc[_0x3cba5c(0x21c)](_0x6efde8))return _0x3cba5c(0x150);if(_0x526ca7['wildcard']){if(_0x1a707d)return'recreate';if(_0x526ca7[_0x3cba5c(0x2fe)]===''){const _0x528bcc=_0x526ca7['kind']+':';for(const _0xaca18d of _0x39efbc){if(_0xaca18d['startsWith'](_0x528bcc))return _0x3cba5c(0x150);}}if(_0x526ca7[_0x3cba5c(0x2fe)]){const _0x719bf7=_0x526ca7[_0x3cba5c(0x3ea)]+':'+_0x526ca7['key'];for(const _0x5be652 of _0x39efbc){if(_0x5be652[_0x3cba5c(0x3f0)](':*'))continue;if(_0x5be652[_0x3cba5c(0x887)](_0x719bf7))return'recreate';}}}for(const _0x3d2f11 of _0x39efbc){if(!_0x3d2f11['endsWith'](':*'))continue;const _0x2fe4f1=_0x3d2f11['slice'](0x0,-0x2),_0x3b382b=_0x2fe4f1[_0x3cba5c(0x747)](':');if(_0x3b382b<0x0)continue;const _0x3eb3cc=_0x2fe4f1[_0x3cba5c(0x63b)](0x0,_0x3b382b);if(_0x3eb3cc!==_0x526ca7[_0x3cba5c(0x3ea)])continue;const _0x30e9d2=_0x2fe4f1['slice'](_0x3b382b+0x1);if(_0x30e9d2==='')return'recreate';if(_0x526ca7[_0x3cba5c(0x2fe)][_0x3cba5c(0x887)](_0x30e9d2))return'recreate';if(_0x526ca7[_0x3cba5c(0x9d7)]&&_0x526ca7[_0x3cba5c(0x2fe)]&&_0x30e9d2[_0x3cba5c(0x887)](_0x526ca7['key']))return'recreate';}}if(_0x1ec83d[_0x3cba5c(0x3ed)]&&_0x1ec83d[_0x3cba5c(0x3ed)]['length']>0x0){const _0x2d4bcc=new Set(_0x20ca38);for(const _0x2bdeae of _0x1ec83d['mutexWith']){if(_0x2d4bcc[_0x3cba5c(0x21c)](_0x2bdeae))return'recreate';}}return _0x3cba5c(0x531);}var _0x451a74=class{constructor(_0x2b48e1,_0x3fa53f,_0x389877,_0x596aff,_0x2b0716={}){const _0x8940c=_0x3ee7d6;this[_0x8940c(0x205)]=_0x2b48e1,this['screen']=_0x3fa53f,this['apps']=_0x389877,this[_0x8940c(0x7c3)]=_0x2b0716[_0x8940c(0x7c3)]??_0x8e3a73,this[_0x8940c(0x3c8)]=_0x2b0716['resetDelayMs']??_0x3a240c,this['bootDebounceMs']=_0x2b0716[_0x8940c(0x990)]??_0x1438ec,this[_0x8940c(0x581)]=_0x2b0716['bootMaxWaitMs']??_0x269bb3,this['bootSource']=_0x596aff,this[_0x8940c(0x43b)]=_0x2b0716[_0x8940c(0x43b)],this[_0x8940c(0x41c)]=_0x2b0716[_0x8940c(0x41c)],this['videoRecorderFactory']=_0x2b0716[_0x8940c(0x464)];}[_0x3ee7d6(0x22c)]=new Map();[_0x3ee7d6(0x7c3)];[_0x3ee7d6(0x3c8)];['bootDebounceMs'];[_0x3ee7d6(0x581)];[_0x3ee7d6(0x1c5)];[_0x3ee7d6(0x43b)];['testDataManager'];['videoRecorderFactory'];['accumulatedBootDrains']=null;[_0x3ee7d6(0x1dc)]=Promise['resolve']();['setVideoRecorderFactory'](_0x5d83cd){this['videoRecorderFactory']=_0x5d83cd;}[_0x3ee7d6(0xee)](_0x1fec15){this['testDataManager']=_0x1fec15;}['getTestDataManager'](){return this['testDataManager'];}async['start'](_0x349261){const _0x5896ae=_0x3ee7d6;this[_0x5896ae(0x822)]();const _0x14b4e8=Array[_0x5896ae(0x70f)](this[_0x5896ae(0x22c)]['values']())[_0x5896ae(0x7bd)](_0x912ba9=>_0x912ba9['busy']);if(_0x14b4e8)return{'runId':'','status':_0x5896ae(0x125),'completedSegments':[],'error':_0x5896ae(0x938)+_0x14b4e8[_0x5896ae(0x297)]+_0x5896ae(0x718)};if(this[_0x5896ae(0x41c)]){if('TChFV'!=='Vmanb')void this['testDataManager']['cleanupJit']()['catch'](()=>void 0x0);else return![];}const _0x2224e4=_0x484ae6(_0x349261);if(_0x2224e4)return{'runId':'','status':'error','completedSegments':[],'error':_0x2224e4};const _0x54add4=_0x489ed9(),_0x5b0981=Date['now'](),_0x40b5b0={'runId':_0x54add4,'chain':_0x349261,'nextFlowIndex':0x0,'completed':[],'mutations':[],'lastTouchedMs':_0x5b0981,'startedAt':_0x5b0981,'busy':!![],'accumulatedWriteKeys':new Set(),'accumulatedHasFullyDynamicWrite':![],'authWallRetries':new Map(),'videoRecorder':null,'videoPath':null,'videoStartError':null,..._0x349261[_0x5896ae(0xd7)]&&_0x349261[_0x5896ae(0xd7)]['length']>0x0?{'affectedFlowNames':new Set(_0x349261['affectedFlowNames'])}:{}};this['runs']['set'](_0x54add4,_0x40b5b0);if(this[_0x5896ae(0x464)])try{if('OOBbJ'===_0x5896ae(0x544))this[_0x5896ae(0x5e9)]=_0x115313,this[_0x5896ae(0x7dd)]=_0x2f5df9,this[_0x5896ae(0x90d)]=_0x27767c,this[_0x5896ae(0x217)]=_0x458a96;else{const _0x457cd9=this['videoRecorderFactory']({'runId':_0x54add4}),_0x337ece=await _0x457cd9[_0x5896ae(0x41b)]();if(_0x337ece['ok'])_0x40b5b0['videoRecorder']=_0x457cd9;else{if('OAFss'!==_0x5896ae(0x802)){if(_0x5741a3[_0x5896ae(0x4dc)]!=='IPv4')return null;if(_0x1d233e['internal'])return null;if(_0x3f887b[_0x5896ae(0x26c)]['startsWith']('127.'))return null;if(_0x34725c[_0x5896ae(0x26c)]['startsWith']('169.254.'))return null;let _0x144138;if(_0x119c5a['has'](_0x188aa6))_0x144138='wifi';else{if(_0x2a384d['has'](_0xdd1c8c))_0x144138=_0x5896ae(0x7af);else return null;}return{'interfaceName':_0x38ddfe,'address':_0x47ee6c['address'],'kind':_0x144138};}else _0x40b5b0['videoStartError']=_0x337ece[_0x5896ae(0x125)],process['stderr']['write'](_0x5896ae(0x85d)+_0x54add4+':\x20'+_0x337ece[_0x5896ae(0x125)]+'\x0a');}}}catch(_0x49e238){const _0x4bc962=_0x49e238 instanceof Error?_0x49e238[_0x5896ae(0x92e)]:String(_0x49e238);_0x40b5b0[_0x5896ae(0x22e)]=_0x4bc962,process['stderr']['write'](_0x5896ae(0x1a5)+_0x54add4+':\x20'+_0x4bc962+'\x0a');}try{return _0x40b5b0['initialObservation']=await this[_0x5896ae(0x64c)](()=>this['captureInitialObservation'](_0x349261['bootRequestPatterns'])),await this['advanceUntilPauseOrEnd'](_0x40b5b0);}catch(_0x13a0d3){const _0x3caaf0=_0x13a0d3 instanceof Error?_0x13a0d3[_0x5896ae(0x92e)]:String(_0x13a0d3);return _0x40b5b0[_0x5896ae(0x2a3)]=_0x5896ae(0x8c1)+_0x3caaf0,await this['buildErrorResponse'](_0x40b5b0);}finally{_0x40b5b0['busy']=![];}}async[_0x3ee7d6(0x64c)](_0x5a8ed9){const _0x10591e=_0x3ee7d6,_0x5be40f=this['bootCaptureTail'];let _0x5b43b9;this[_0x10591e(0x1dc)]=new Promise(_0x378db4=>{_0x5b43b9=_0x378db4;});try{return await _0x5be40f[_0x10591e(0x4ba)](()=>void 0x0),await _0x5a8ed9();}finally{_0x5b43b9();}}async[_0x3ee7d6(0x673)](_0x15d980,_0x2a0e57){const _0x102b50=_0x3ee7d6;this['evictExpired']();const _0x84d386=this[_0x102b50(0x22c)][_0x102b50(0x47a)](_0x15d980);if(!_0x84d386)return{'runId':_0x15d980,'status':_0x102b50(0x125),'completedSegments':[],'error':_0x102b50(0x92d)};_0x84d386[_0x102b50(0x118)]=Date[_0x102b50(0x3d1)]();if(_0x84d386[_0x102b50(0x2a3)])return{'runId':_0x15d980,'status':'error','initialObservation':_0x84d386['initialObservation'],'completedSegments':_0x84d386['completed'],'error':_0x84d386[_0x102b50(0x2a3)],..._0x84d386[_0x102b50(0x714)]?{'videoPath':_0x84d386['videoPath']}:{}};if(_0x84d386['busy'])return{'runId':_0x15d980,'status':'error','initialObservation':_0x84d386['initialObservation'],'completedSegments':_0x84d386['completed'],'error':'Chain\x20run\x20is\x20busy\x20advancing\x20a\x20prior\x20call.\x20Wait\x20for\x20the\x20in-flight\x20response\x20before\x20issuing\x20another\x20rn_test_chain_continue.'};const _0x3cdd87=_0x84d386['awaitingErrorDecision']!==void 0x0,_0x59987e=_0x2a0e57===_0x102b50(0x11e)||_0x2a0e57==='halt';if(_0x3cdd87!==_0x59987e){const _0x5c43d8=_0x3cdd87?'awaiting_error_decision':'awaiting_decision',_0x54a030=_0x3cdd87?_0x102b50(0x897):_0x102b50(0x44e);return{'runId':_0x15d980,'status':'error','initialObservation':_0x84d386['initialObservation'],'completedSegments':_0x84d386['completed'],'error':_0x102b50(0x61a)+_0x2a0e57+'\x22\x20is\x20not\x20valid\x20for\x20pause\x20state\x20\x22'+_0x5c43d8+_0x102b50(0x4ef)+_0x54a030+'.'};}_0x84d386['busy']=!![];try{if(_0x84d386['awaitingErrorDecision']){if(_0x102b50(0x680)!==_0x102b50(0x680)){const _0x3a6522=_0x5993a9['pop'](),_0x3a7271=_0x3a6522['rawIdentifier'];if(typeof _0x3a7271===_0x102b50(0x7fd)&&_0x3a7271[_0x102b50(0x17e)]()['includes']('redbox'))return!![];if(_0x5a4c1e['isArray'](_0x3a6522['children'])){for(const _0x3f6850 of _0x3a6522[_0x102b50(0x9c3)])_0x4b90a9['push'](_0x3f6850);}}else{const _0x18baed=_0x84d386['awaitingErrorDecision'];if(_0x2a0e57==='halt'){const _0x42cfb4=_0x84d386[_0x102b50(0x712)][_0x84d386['completed']['length']-0x1];return _0x84d386['errorMessage']=_0x102b50(0x3b3)+(_0x42cfb4?.[_0x102b50(0x2d7)]??'?')+'\x22\x20('+(_0x42cfb4?.[_0x102b50(0x50a)]??'no\x20details')+').',_0x84d386[_0x102b50(0x2e0)]=void 0x0,await this[_0x102b50(0x642)](_0x84d386),await this['updateRunIndex'](_0x84d386,!![])[_0x102b50(0x4ba)](()=>void 0x0),await this[_0x102b50(0x72c)](_0x84d386);}return _0x18baed['retriesUsed']+=0x1,_0x84d386[_0x102b50(0x712)]['pop'](),await this[_0x102b50(0x132)](_0x84d386);}}return _0x2a0e57==='recreate'&&await this['applyRecreate'](_0x84d386),await this['advanceUntilPauseOrEnd'](_0x84d386);}catch(_0x5b7399){const _0x3195e6=_0x5b7399 instanceof Error?_0x5b7399[_0x102b50(0x92e)]:String(_0x5b7399);return _0x84d386['errorMessage']='Chain\x20crashed\x20while\x20advancing:\x20'+_0x3195e6,await this['stopVideoRecording'](_0x84d386),await this[_0x102b50(0x72c)](_0x84d386);}finally{_0x84d386['busy']=![];}}async[_0x3ee7d6(0x132)](_0x33d1d5){const _0x52053b=_0x3ee7d6;while(_0x33d1d5[_0x52053b(0x46f)]<_0x33d1d5[_0x52053b(0x5be)]['flows'][_0x52053b(0x945)]){const _0x24fd9a=_0x33d1d5['nextFlowIndex'],_0x6e7579=_0x33d1d5['chain'][_0x52053b(0x1f5)][_0x24fd9a];if(_0x24fd9a>0x0){const _0x4c15af=await this[_0x52053b(0x1ea)](_0x33d1d5[_0x52053b(0x5be)]['bridges'][_0x24fd9a-0x1]??[]);if(!_0x4c15af['ok']){const _0x1b7482=this[_0x52053b(0x71e)](_0x6e7579['name'],0x0,_0x52053b(0x78d),_0x52053b(0x6a6),_0x33d1d5);return _0x33d1d5[_0x52053b(0x712)]['push'](_0x1b7482),_0x33d1d5['errorMessage']=_0x52053b(0x3d3)+_0x1b7482['errorSummary'],await this[_0x52053b(0x642)](_0x33d1d5),await this[_0x52053b(0x72c)](_0x33d1d5);}}const _0x2eae1c=_0x33d1d5['affectedFlowNames']&&_0x33d1d5['affectedFlowNames']['size']>0x0?_0x33d1d5[_0x52053b(0xd7)]:void 0x0,_0x2b773e=this['runsStore']||_0x2eae1c?{'runId':_0x33d1d5[_0x52053b(0x297)],...this[_0x52053b(0x43b)]?{'store':this['runsStore']}:{},..._0x2eae1c?{'affectedFlowNames':_0x2eae1c}:{}}:void 0x0,_0x467f3d=_0x33d1d5['mutations'][_0x52053b(0x945)],_0x16eab5=this[_0x52053b(0x1a6)](_0x6e7579),_0x3c5ad8=await this[_0x52053b(0x205)][_0x52053b(0x725)](_0x16eab5,_0x2b773e),_0x13a922=this[_0x52053b(0x820)](_0x3c5ad8,_0x33d1d5,_0x24fd9a);_0x33d1d5['completed']['push'](_0x13a922),_0x33d1d5[_0x52053b(0x118)]=Date['now'](),await this['updateRunIndex'](_0x33d1d5)['catch'](()=>void 0x0);_0x3c5ad8[_0x52053b(0x42d)]&&_0x33d1d5[_0x52053b(0x2e0)]?.['failedFlowIndex']===_0x24fd9a&&(_0x33d1d5['awaitingErrorDecision']=void 0x0);this['recordMutations'](_0x6e7579,_0x33d1d5),this[_0x52053b(0x7b9)](_0x33d1d5,_0x6e7579);if(!_0x3c5ad8[_0x52053b(0x42d)]){const _0x5a5b4e=_0x13a922[_0x52053b(0x25f)],_0x1c964f=_0x6e7579['flowId']??_0x6e7579[_0x52053b(0x4d1)],_0x485a47=_0x33d1d5['authWallRetries']['get'](_0x1c964f)??0x0;if(_0x5a5b4e==='auth_wall'&&this['testDataManager']&&_0x485a47<0x1){_0x33d1d5['authWallRetries'][_0x52053b(0x3b6)](_0x1c964f,_0x485a47+0x1),process['stderr'][_0x52053b(0x65a)](_0x52053b(0x809)+_0x6e7579[_0x52053b(0x4d1)]+'\x22\x20—\x20attempting\x20JIT\x20recovery\x0a'),await this['applyRecreate'](_0x33d1d5),_0x33d1d5[_0x52053b(0x712)]['pop']();_0x33d1d5[_0x52053b(0x530)][_0x52053b(0x945)]>_0x467f3d&&(_0x33d1d5['mutations']['length']=_0x467f3d);continue;}if(_0x5a5b4e===_0x52053b(0x5ec)&&this['testDataManager']&&_0x485a47>=0x1)return _0x33d1d5[_0x52053b(0x2a3)]=_0x52053b(0x6e4)+_0x6e7579['name']+'\x22\x20failed\x20at\x20auth\x20wall\x20after\x20JIT\x20recovery\x20attempt\x20—\x20verify\x20your\x20auth\x20provider\x20is\x20configured\x20correctly\x20in\x20ceraph.config.js',await this[_0x52053b(0x642)](_0x33d1d5),await this[_0x52053b(0x1b2)](_0x33d1d5,!![])[_0x52053b(0x4ba)](()=>void 0x0),await this[_0x52053b(0x72c)](_0x33d1d5);const _0x3b15ac=_0x33d1d5[_0x52053b(0x2e0)];if(_0x3b15ac&&_0x3b15ac[_0x52053b(0x4c6)]===_0x24fd9a&&_0x3b15ac[_0x52053b(0x8a6)]>=0x1)return _0x33d1d5[_0x52053b(0x2a3)]='Chain\x20aborted\x20at\x20flow\x20\x22'+_0x6e7579['name']+'\x22\x20('+(_0x13a922['errorSummary']??_0x52053b(0x653))+_0x52053b(0x290)+_0x13a922['durationMs']+'ms\x20—\x20second\x20failure\x20after\x20LLM-issued\x20retry.',_0x33d1d5['awaitingErrorDecision']=void 0x0,await this['stopVideoRecording'](_0x33d1d5),await this[_0x52053b(0x1b2)](_0x33d1d5,!![])[_0x52053b(0x4ba)](()=>void 0x0),await this['buildErrorResponse'](_0x33d1d5);return _0x33d1d5['mutations'][_0x52053b(0x945)]>_0x467f3d&&(_0x33d1d5['mutations'][_0x52053b(0x945)]=_0x467f3d),_0x33d1d5['awaitingErrorDecision']=_0x3b15ac??{'failedFlowIndex':_0x24fd9a,'retriesUsed':0x0},await this['updateRunIndex'](_0x33d1d5)['catch'](()=>void 0x0),{'runId':_0x33d1d5[_0x52053b(0x297)],'status':_0x52053b(0x585),'initialObservation':_0x33d1d5['initialObservation'],'completedSegments':_0x33d1d5['completed'],'errorEvent':{'flow':_0x6e7579['name'],'failureCause':_0x5a5b4e,'errorSummary':_0x13a922[_0x52053b(0x50a)]??'No\x20failure\x20detail\x20recorded.'}};}_0x33d1d5[_0x52053b(0x46f)]+=0x1;if(_0x33d1d5[_0x52053b(0x5be)][_0x52053b(0x66a)][_0x52053b(0x83f)](_0x24fd9a)&&_0x33d1d5['nextFlowIndex']<_0x33d1d5['chain']['flows']['length']){const _0x15872c=_0x33d1d5['chain'][_0x52053b(0x1f5)][_0x33d1d5[_0x52053b(0x46f)]],_0x214b07=_0x33d1d5[_0x52053b(0x5be)][_0x52053b(0x143)]?.[_0x33d1d5['nextFlowIndex']]??[],_0x1b4ac3=_0x33d1d5[_0x52053b(0x712)][_0x52053b(0x986)](_0x3715d7=>_0x3715d7['flow']),_0x4fa48c=_0x2babf9(_0x33d1d5['accumulatedWriteKeys'],_0x33d1d5[_0x52053b(0x9b4)],_0x15872c,_0x214b07,_0x1b4ac3);if(_0x4fa48c===_0x52053b(0x531))continue;if(_0x4fa48c==='recreate'){if('ArXYY'!==_0x52053b(0x284))return _0x5f2249();else{await this[_0x52053b(0x149)](_0x33d1d5);continue;}}const _0x55f866=this['buildSnapPoint'](_0x33d1d5,_0x6e7579,_0x24fd9a);if(_0x55f866)return{'runId':_0x33d1d5['runId'],'status':_0x52053b(0x113),'initialObservation':_0x33d1d5['initialObservation'],'completedSegments':_0x33d1d5[_0x52053b(0x712)],'snapPoint':_0x55f866};}}await this['stopVideoRecording'](_0x33d1d5),await this['updateRunIndex'](_0x33d1d5,!![])['catch'](()=>void 0x0),this[_0x52053b(0x22c)][_0x52053b(0x14d)](_0x33d1d5[_0x52053b(0x297)]);this[_0x52053b(0x41c)]&&void this[_0x52053b(0x41c)][_0x52053b(0x6de)]()['catch'](()=>void 0x0);const _0x438cff=_0x33d1d5[_0x52053b(0x712)]['reduce']((_0x41b62f,_0x1294bb)=>_0x41b62f+_0x1294bb['durationMs'],0x0);return{'runId':_0x33d1d5['runId'],'status':_0x52053b(0x429),'initialObservation':_0x33d1d5[_0x52053b(0x363)],'completedSegments':_0x33d1d5['completed'],'finalResult':{'success':_0x33d1d5[_0x52053b(0x712)]['every'](_0x1466e5=>_0x1466e5[_0x52053b(0x42d)]),'totalDurationMs':_0x438cff},..._0x33d1d5['videoPath']?{'videoPath':_0x33d1d5['videoPath']}:{}};}async[_0x3ee7d6(0x72c)](_0x92f497){const _0x217e19=_0x3ee7d6;return _0x92f497['lastTouchedMs']=Date[_0x217e19(0x3d1)](),await this['stopVideoRecording'](_0x92f497),{'runId':_0x92f497[_0x217e19(0x297)],'status':'error','initialObservation':_0x92f497['initialObservation'],'completedSegments':_0x92f497[_0x217e19(0x712)],'error':_0x92f497[_0x217e19(0x2a3)]??_0x217e19(0x331),..._0x92f497[_0x217e19(0x714)]?{'videoPath':_0x92f497[_0x217e19(0x714)]}:{}};}async['stopVideoRecording'](_0x16b9da){const _0xcec8c3=_0x3ee7d6,_0x510cef=_0x16b9da['videoRecorder'];if(!_0x510cef)return;_0x16b9da[_0xcec8c3(0x65f)]=null;try{await _0x510cef['stop']();if(!_0x16b9da['videoPath']){const _0x62cbfa=this['runsStore']?_0x4b2a43(this['runsStore']['rootDir'],_0x16b9da[_0xcec8c3(0x297)]):null;if(_0x62cbfa)_0x16b9da['videoPath']=_0x4b2a43(_0x62cbfa,'chain.mp4');}}catch(_0x248405){process[_0xcec8c3(0x870)][_0xcec8c3(0x65a)]('[ceraph]\x20video\x20recorder\x20stop\x20failed:\x20'+(_0x248405 instanceof Error?_0x248405[_0xcec8c3(0x92e)]:String(_0x248405))+'\x0a');}}['buildSnapPoint'](_0x54bb3f,_0x4b3f00,_0x326804){const _0x5a7eb5=_0x3ee7d6,_0x41c56f=_0x4b3f00['steps'][_0x5a7eb5(0x7bd)](_0x4c2ba5=>_0x4c2ba5['verifyMutation']&&_0x55045b(_0x4c2ba5['verifyMutation']));if(!_0x41c56f?.['verifyMutation'])return null;const _0x1a8af2=_0x54bb3f[_0x5a7eb5(0x712)][_0x5a7eb5(0x986)](_0x16e9e9=>_0x16e9e9['flow']),_0x3c2c2e=_0x54bb3f[_0x5a7eb5(0x5be)][_0x5a7eb5(0x1f5)][_0x5a7eb5(0x63b)](_0x326804+0x1)[_0x5a7eb5(0x986)]((_0x2efe8a,_0x3bd201)=>{const _0x4c32ad=_0x5a7eb5,_0x41692a=_0x326804+0x1+_0x3bd201,_0xd1ce66=_0x54bb3f['chain']['perFlowStatedDependencies']?.[_0x41692a]??[],_0xffb038=_0x54bb3f['chain'][_0x4c32ad(0x337)]?.[_0x41692a],_0x5ed098=_0x2babf9(_0x54bb3f[_0x4c32ad(0x9da)],_0x54bb3f[_0x4c32ad(0x9b4)],_0x2efe8a,_0xd1ce66,_0x1a8af2);return{'flow':_0x2efe8a[_0x4c32ad(0x4d1)],'statedDependencies':_0xd1ce66,..._0xffb038&&_0xffb038[_0x4c32ad(0x945)]>0x0?{'mutexWith':_0xffb038}:{},'staticDecision':_0x5ed098};});return{'flow':_0x4b3f00['name'],'flowIndex':_0x326804,'mutation':{'method':_0x41c56f[_0x5a7eb5(0x636)]['sourceMethod']['toUpperCase'](),'endpoint':_0x41c56f['verifyMutation']['sourceEndpoint'],..._0x41c56f[_0x5a7eb5(0x636)][_0x5a7eb5(0x6bd)]?{'affectedDisplayRoute':_0x41c56f['verifyMutation']['affectedDisplayRoute']}:{}},'remainingChain':_0x3c2c2e,'nextFlowStatedDependencies':_0x3c2c2e[0x0]?.[_0x5a7eb5(0x52b)]??[]};}['buildFlowReport'](_0x898f95,_0x2802eb,_0x4bbd7c){const _0x907537=_0x3ee7d6,_0x171f60=_0x898f95['steps'][_0x907537(0x6e5)]((_0x2e12c7,_0x5a3dcc)=>_0x2e12c7+(_0x5a3dcc['screenshotBase64']?0x1:0x0),0x0),_0x3d1d06=_0x898f95[_0x907537(0x852)]??0x0,_0x537be4=_0x50401f(_0x898f95);if(_0x898f95['success'])return{'flow':_0x898f95[_0x907537(0x2d7)],'success':!![],'durationMs':_0x898f95[_0x907537(0x661)],'screenshotCount':_0x171f60,'screenshotsAvailable':_0x3d1d06,..._0x537be4};const _0x2220e0=_0x2802eb['chain']['perFlowStatedDependencies']?.[_0x4bbd7c]??[],_0x3f023e=_0x43b054(_0x898f95,_0x2220e0),_0x4aa93d=_0x605049(_0x898f95);return{'flow':_0x898f95['flow'],'success':![],'durationMs':_0x898f95['totalDurationMs'],'errorSummary':_0x4aa93d,'screenshotCount':_0x171f60,'screenshotsAvailable':_0x3d1d06,'failureCause':_0x3f023e,..._0x3f023e===_0x907537(0x87d)?{'expectedState':{'statedDependencies':_0x2220e0},'actualState':{'screen':this[_0x907537(0x98f)](_0x898f95)}}:{},'precedingMutations':_0x2802eb[_0x907537(0x530)][_0x907537(0x945)]>0x0?[..._0x2802eb['mutations']]:void 0x0,..._0x537be4};}['buildFailureReport'](_0x5e6951,_0x3b5882,_0x1643cd,_0x1b75ed,_0x28dd4e){const _0x53be14=_0x3ee7d6;return{'flow':_0x5e6951,'success':![],'durationMs':_0x3b5882,'errorSummary':_0x1643cd,'screenshotCount':0x0,'screenshotsAvailable':0x0,'failureCause':_0x1b75ed,'precedingMutations':_0x28dd4e['mutations'][_0x53be14(0x945)]>0x0?[..._0x28dd4e['mutations']]:void 0x0};}async['updateRunIndex'](_0x4f59b2,_0x106658=![]){const _0x2166e3=_0x3ee7d6;if(!this['runsStore'])return;const _0x2b9072=_0x4f59b2['completed'][_0x2166e3(0x986)](_0x469ccb=>{const _0x5ebc17=_0x2166e3,_0x56782d=_0x469ccb[_0x5ebc17(0x42d)]?'success':_0x5ebc17(0x621),_0x59111a=_0x4f59b2['mutations'][_0x5ebc17(0x2a5)](_0x202356=>_0x202356['flow']===_0x469ccb[_0x5ebc17(0x2d7)]);return{'flowName':_0x469ccb[_0x5ebc17(0x2d7)],'stepCount':_0x469ccb[_0x5ebc17(0x852)],'mutates':_0x59111a,'status':_0x56782d};}),_0x359d39={'runId':_0x4f59b2[_0x2166e3(0x297)],'startedAt':_0x4f59b2['startedAt'],..._0x106658?{'finishedAt':Date['now']()}:{},'flows':_0x2b9072,..._0x4f59b2['videoPath']?{'videoPath':_0x4f59b2['videoPath']}:{}};await this['runsStore']['saveRunIndex'](_0x4f59b2[_0x2166e3(0x297)],_0x359d39);}[_0x3ee7d6(0x98f)](_0x138fd6){const _0x2187f5=_0x3ee7d6;for(let _0xc6376a=_0x138fd6[_0x2187f5(0x22d)]['length']-0x1;_0xc6376a>=0x0;_0xc6376a--){const _0x29a161=_0x138fd6['steps'][_0xc6376a];if(_0x29a161['action']!=='assertVisible')continue;const _0x3e7bf4=_0x29a161[_0x2187f5(0x220)],_0x260691=_0x3e7bf4?.['element']?.[_0x2187f5(0x4d1)];if(typeof _0x260691==='string'&&_0x260691['length']>0x0)return _0x260691;}return null;}['accumulateWriteSet'](_0x321957,_0xa463d9){const _0x513b9f=_0x3ee7d6;if(!_0xa463d9['writeSet']||_0xa463d9[_0x513b9f(0x231)][_0x513b9f(0x9d0)]===_0x513b9f(0x776))return;_0xa463d9['writeSet'][_0x513b9f(0x509)]&&(_0x321957['accumulatedHasFullyDynamicWrite']=!![]);for(const _0x4795ae of _0xa463d9[_0x513b9f(0x231)][_0x513b9f(0x208)]){_0x4795ae[_0x513b9f(0x9d7)]?_0x321957['accumulatedWriteKeys'][_0x513b9f(0x5c1)](_0x4795ae[_0x513b9f(0x3ea)]+':'+_0x4795ae['key']+':*'):'UTQhO'==='SWLhJ'?this[_0x513b9f(0x864)]=_0x100b1e:_0x321957[_0x513b9f(0x9da)]['add'](_0x4795ae['kind']+':'+_0x4795ae['key']);}}[_0x3ee7d6(0x1a6)](_0x1da3c2){const _0x1a1c65=_0x3ee7d6,_0xa94e73=_0x330e47(this[_0x1a1c65(0x41c)]),{value:_0x380d61}=_0x5ab885({'steps':_0x1da3c2['steps'],'beforeAll':_0x1da3c2[_0x1a1c65(0x1d9)]},process.env,_0xa94e73);return{..._0x1da3c2,'steps':_0x380d61[_0x1a1c65(0x22d)],'beforeAll':_0x380d61['beforeAll']};}[_0x3ee7d6(0x58d)](_0x151f0e,_0x1fd002){const _0x5f571b=_0x3ee7d6;for(const _0x3950c6 of _0x151f0e[_0x5f571b(0x22d)]){if(!_0x3950c6['verifyMutation'])continue;if(!_0x55045b(_0x3950c6[_0x5f571b(0x636)]))continue;_0x1fd002['mutations']['push']({'method':_0x3950c6[_0x5f571b(0x636)]['sourceMethod']['toUpperCase'](),'endpoint':_0x3950c6['verifyMutation']['sourceEndpoint'],'flow':_0x151f0e['name']});}}async[_0x3ee7d6(0x1ea)](_0x3de17a){const _0x262c79=_0x3ee7d6;for(const _0x2c478b of _0x3de17a){const _0x57723d=_0x2c478b['triggerLabel']??_0x2c478b['toRoute'],_0x262387=await this['flowRunner'][_0x262c79(0x255)]({'action':'tap','text':_0x57723d});if(!_0x262387['success'])return{'ok':![],'failedHopTarget':_0x57723d};}return{'ok':!![]};}async[_0x3ee7d6(0x53d)](_0x5c1911,_0x4feff0){const _0x43ab74=_0x3ee7d6,_0x229809=Date[_0x43ab74(0x3d1)]();while(Date['now']()-_0x229809<_0x4feff0){const _0x20b736=await this['apps']['getActiveApp']()[_0x43ab74(0x4ba)](()=>null);if(_0x20b736&&_0x20b736['success']&&_0x20b736[_0x43ab74(0x708)]!==_0x5c1911)return;await new Promise(_0x51cd2b=>setTimeout(_0x51cd2b,_0x588a94));}}async[_0x3ee7d6(0x526)](_0x375ce3,_0x412d8a){const _0x2a659e=_0x3ee7d6,_0xf8eb93=Date[_0x2a659e(0x3d1)]();while(Date[_0x2a659e(0x3d1)]()-_0xf8eb93<_0x412d8a){const _0x1cfbda=await this[_0x2a659e(0x7dd)][_0x2a659e(0x899)]()[_0x2a659e(0x4ba)](()=>null);if(_0x1cfbda&&_0x1cfbda[_0x2a659e(0x42d)]&&_0x1cfbda[_0x2a659e(0x708)]===_0x375ce3)return;await new Promise(_0x2e45b7=>setTimeout(_0x2e45b7,_0x588a94));}}async['applyRecreate'](_0x46b83e){const _0x24c7f6=_0x3ee7d6,_0x2e99ac=_0x46b83e[_0x24c7f6(0x712)][_0x46b83e[_0x24c7f6(0x712)]['length']-0x1]?.[_0x24c7f6(0x25f)],_0x20c821=_0x46b83e[_0x24c7f6(0x5be)][_0x24c7f6(0x1f5)][_0x46b83e[_0x24c7f6(0x46f)]],_0xa2e6cb=_0x20c821?.[_0x24c7f6(0x1d9)]?.['ensureLaunched']??_0x46b83e['chain'][_0x24c7f6(0x1f5)][_0x46b83e[_0x24c7f6(0x46f)]>0x0?_0x46b83e['nextFlowIndex']-0x1:0x0]?.[_0x24c7f6(0x1d9)]?.['ensureLaunched']??_0x46b83e['chain']['flows'][0x0]?.[_0x24c7f6(0x1d9)]?.['ensureLaunched'];if(this[_0x24c7f6(0x41c)]&&this['testDataManager'][_0x24c7f6(0x676)]()&&_0x2e99ac==='auth_wall')try{if(_0x24c7f6(0x349)==='ccuha'){if(_0xcf17d9['size']>0x0||_0x39bafb)return _0x24c7f6(0x150);}else await this['testDataManager']['provisionJit']();}catch(_0x343d18){console['error'](_0x24c7f6(0x213)+(_0x343d18?.[_0x24c7f6(0x92e)]??String(_0x343d18)));}const _0x42a3b3=_0x2fe7cf(_0x20c821?.['requiresCleanKeys']),_0x328539=Boolean(_0x42a3b3['length']>0x0&&_0xa2e6cb);let _0x41d286=![];_0x328539&&(_0x41d286=await this[_0x24c7f6(0x14a)](_0x42a3b3,_0xa2e6cb)['catch'](()=>![])===!![]),_0xa2e6cb&&(await this['apps']['terminateApp'](_0xa2e6cb)[_0x24c7f6(0x4ba)](()=>void 0x0),await this[_0x24c7f6(0x53d)](_0xa2e6cb,_0x1759a4),await this['apps']['launchApp'](_0xa2e6cb)['catch'](()=>void 0x0)),!_0x328539&&await this[_0x24c7f6(0x5e9)]['openUrl']('ceraph://reset')['catch'](()=>void 0x0),_0x328539&&_0x41d286&&_0xa2e6cb?await this[_0x24c7f6(0x526)](_0xa2e6cb,this[_0x24c7f6(0x3c8)]):await new Promise(_0x5b5880=>setTimeout(_0x5b5880,this['resetDelayMs']));}async[_0x3ee7d6(0x14a)](_0x5b4998,_0x2969c9){const _0x2be65b=_0x3ee7d6;if(!_0x5b4998[_0x2be65b(0x945)])return![];const _0x1f5252=_0x2fe7cf(_0x5b4998);if(!_0x1f5252['length'])return![];const _0xe1268f=_0x28ffb2(),_0x116882=encodeURIComponent(_0x1f5252['join'](',')),_0x5e3dba=_0x2be65b(0x6c9)+_0x116882+_0x2be65b(0x79f)+encodeURIComponent(_0xe1268f),_0x42b168=this['bootSource']?.['waitForStorageAck']?.['bind'](this['bootSource']);try{if(!_0x42b168)return process['stderr'][_0x2be65b(0x65a)]('[ceraph][ceraph-infra]\x20deleteAsyncStorageKeys:\x20no\x20waitForStorageAck\x20on\x20boot\x20source;\x20dispatched\x20delete\x20without\x20ACK\x20confirmation\x0a'),await this[_0x2be65b(0x5e9)]['openUrl'](_0x5e3dba),![];const _0x59a29d=_0x42b168(0x7d0,_0xe1268f)[_0x2be65b(0x4ba)](()=>null);await this[_0x2be65b(0x5e9)]['openUrl'](_0x5e3dba);const _0x46cd83=await _0x59a29d;if(!_0x46cd83?.[_0x2be65b(0x42d)])return process[_0x2be65b(0x870)]['write'](_0x2be65b(0x37d)+_0x1f5252[_0x2be65b(0x221)](',')+'\x0a'),![];return!![];}catch(_0x50b854){return process[_0x2be65b(0x870)][_0x2be65b(0x65a)]('[ceraph][ceraph-infra]\x20deleteAsyncStorageKeys\x20dispatch\x20error:\x20'+(_0x50b854 instanceof Error?_0x50b854['message']:String(_0x50b854))+'\x0a'),![];}}async['captureInitialObservation'](_0x78dc46){const _0x4af4b2=_0x3ee7d6;let _0x2e2003='unknown',_0x55ff93=null,_0x5faaa=[],_0x4cdfb6=[],_0x488e69=![],_0x215487;if(this['bootSource'])try{this['bootSource']['setBootCaptureMode'](!![]);}catch{}try{const _0x29f77a=await this['screen']['getSource']()[_0x4af4b2(0x4ba)](()=>null),_0x1ce8c1=await this['apps'][_0x4af4b2(0x899)]()[_0x4af4b2(0x4ba)](()=>null);_0x55ff93=_0x1ce8c1&&_0x1ce8c1[_0x4af4b2(0x42d)]?_0x1ce8c1['bundleId']??null:null;_0x29f77a?.['success']&&_0x29f77a[_0x4af4b2(0x827)]&&(_0x2e2003=_0x55be68(_0x29f77a['source']));this[_0x4af4b2(0x1c5)]&&await this[_0x4af4b2(0x7a2)]();const _0x47353c=await this[_0x4af4b2(0x5e9)]['getSource']()['catch'](()=>null);if(_0x47353c?.['success']&&_0x47353c[_0x4af4b2(0x827)])_0x5faaa=_0x51c924(_0x47353c[_0x4af4b2(0x827)]);else _0x29f77a?.[_0x4af4b2(0x42d)]&&_0x29f77a['source']&&(_0x5faaa=_0x51c924(_0x29f77a[_0x4af4b2(0x827)]));if(this['bootSource']){const _0xdd342=this['accumulatedBootDrains']??[];this[_0x4af4b2(0x690)]=null;const _0x4e056e=[..._0xdd342,...this['bootSource'][_0x4af4b2(0x456)]()],_0x5b1f0d=_0x1ed562(_0x4e056e,_0x78dc46??[],_0xf9270c);_0x4cdfb6=_0x5b1f0d['entries'],_0x488e69=_0x5b1f0d[_0x4af4b2(0x896)];if(typeof this[_0x4af4b2(0x1c5)][_0x4af4b2(0x972)]==='function')try{_0x215487=this['bootSource'][_0x4af4b2(0x972)]();}catch{_0x215487=void 0x0;}}}catch{}finally{if(this[_0x4af4b2(0x1c5)])try{this[_0x4af4b2(0x1c5)][_0x4af4b2(0x937)](![]),this['bootSource']['clearBootRequests']();}catch{}}return{'sessionMode':_0x2e2003,'screen':_0x55ff93,'accessibilityTree':_0x5faaa,'bootRequests':_0x4cdfb6,..._0x488e69?{'bootRequestsFiltered':!![]}:{},..._0x215487!==void 0x0?{'asyncStorageReads':_0x215487}:{}};}async[_0x3ee7d6(0x7a2)](){const _0x248da2=_0x3ee7d6;if(!this[_0x248da2(0x1c5)])return;let _0x19f339=0x0;const _0x2766dd=()=>{const _0x2ac29c=_0x248da2;if(typeof this['bootSource'][_0x2ac29c(0x277)]==='function')return this[_0x2ac29c(0x1c5)]['bootWriteCounter']();const _0x4ec6f5=this['bootSource'][_0x2ac29c(0x456)]();if(_0x4ec6f5['length']>0x0){if(!this['accumulatedBootDrains'])this[_0x2ac29c(0x690)]=[];this['accumulatedBootDrains']['push'](..._0x4ec6f5),_0x19f339+=_0x4ec6f5[_0x2ac29c(0x945)];}return _0x19f339;},_0x56cc98=Date[_0x248da2(0x3d1)]();let _0x535397=_0x2766dd(),_0x49e026=Date['now']();const _0x137f2e=0x64;while(!![]){const _0x57a6b3=Date[_0x248da2(0x3d1)]();if(_0x57a6b3-_0x56cc98>=this[_0x248da2(0x581)])return;if(_0x57a6b3-_0x49e026>=this['bootDebounceMs'])return;await new Promise(_0x3c9ae7=>setTimeout(_0x3c9ae7,_0x137f2e));const _0x2402a9=_0x2766dd();_0x2402a9!==_0x535397&&(_0x535397=_0x2402a9,_0x49e026=Date[_0x248da2(0x3d1)]());}}[_0x3ee7d6(0x822)](){const _0x42c3b4=_0x3ee7d6,_0x5a3899=Date[_0x42c3b4(0x3d1)]();for(const [_0x2cc32e,_0x14bdec]of this['runs']['entries']()){if(_0x14bdec[_0x42c3b4(0x3a3)])continue;if(_0x5a3899-_0x14bdec[_0x42c3b4(0x118)]>this[_0x42c3b4(0x7c3)]){const _0x22429c=_0x14bdec[_0x42c3b4(0x65f)];_0x22429c&&(_0x42c3b4(0x839)===_0x42c3b4(0x682)?(_0x1aba4f=!![],_0x235c97=_0x12e50d):(_0x14bdec[_0x42c3b4(0x65f)]=null,void _0x22429c['stop']()['catch'](_0x229732=>{const _0xb71ff2=_0x42c3b4;process[_0xb71ff2(0x870)]['write'](_0xb71ff2(0x48a)+(_0x229732 instanceof Error?_0x229732['message']:String(_0x229732))+'\x0a');}))),this['runs'][_0x42c3b4(0x14d)](_0x2cc32e);}}}['size'](){const _0x289b0d=_0x3ee7d6;return this[_0x289b0d(0x822)](),this[_0x289b0d(0x22c)][_0x289b0d(0x1bb)];}async['shutdown'](){const _0x48815f=_0x3ee7d6,_0x16838c=[];for(const _0xafaa50 of this[_0x48815f(0x22c)][_0x48815f(0x88a)]()){const _0x526630=_0xafaa50[_0x48815f(0x65f)];_0x526630&&(_0xafaa50['videoRecorder']=null,_0x16838c['push'](_0x526630['stop']()['catch'](_0x181db6=>{const _0x21b84c=_0x48815f;process['stderr'][_0x21b84c(0x65a)]('[ceraph]\x20video\x20recorder\x20shutdown\x20stop\x20failed:\x20'+(_0x181db6 instanceof Error?_0x181db6[_0x21b84c(0x92e)]:String(_0x181db6))+'\x0a');})));}await Promise[_0x48815f(0x9a6)](_0x16838c);}['getVideoStartError'](_0x5bc3b4){const _0x3e95b9=_0x3ee7d6;return this['runs'][_0x3e95b9(0x47a)](_0x5bc3b4)?.['videoStartError']??void 0x0;}};function _0x51c924(_0x3f7315){const _0x2a6389=[];let _0x3bde5f=0x2;const _0x4f435d=_0x135c57=>{const _0x267be9=_0x4a5a;if(!_0x135c57||typeof _0x135c57!==_0x267be9(0x5ab))return;const _0x18be56=_0x135c57,_0x54b5bb=_0x55cb9c(_0x18be56[_0x267be9(0x85c)]);if(_0x54b5bb){if(_0x267be9(0x56d)!=='zHVZb'){const _0x4c233a=_0x1a1d69(_0x18be56);if(_0x4c233a){const _0x4ae92d={'kind':_0x54b5bb,'text':_0x4c233a},_0x355f17=_0x2a6389[_0x2a6389[_0x267be9(0x945)]-0x1],_0x1433e9=_0x355f17&&_0x355f17[_0x267be9(0x3ea)]===_0x4ae92d[_0x267be9(0x3ea)]&&_0x355f17['text']===_0x4ae92d['text'],_0x22bcc4=JSON['stringify'](_0x4ae92d)['length']+0x1;!_0x1433e9&&_0x3bde5f+_0x22bcc4<=_0x46472e&&(_0x2a6389[_0x267be9(0x496)](_0x4ae92d),_0x3bde5f+=_0x22bcc4);}}else return null;}if(Array['isArray'](_0x18be56['children'])){for(const _0x3bcf9d of _0x18be56[_0x267be9(0x9c3)])_0x4f435d(_0x3bcf9d);}};return _0x4f435d(_0x3f7315),_0x2a6389;}function _0x55cb9c(_0x330ddd){const _0x38fb56=_0x3ee7d6;if(!_0x330ddd)return null;const _0x2c7751=_0x330ddd[_0x38fb56(0x27d)](/^XCUIElementType/,'');if(_0x2c7751===_0x38fb56(0x1b1))return'button';if(_0x2c7751==='TextField'||_0x2c7751==='SecureTextField'||_0x2c7751==='SearchField')return'input';if(_0x2c7751===_0x38fb56(0x32c))return _0x38fb56(0x7d9);if(_0x2c7751===_0x38fb56(0x34e))return'text';return null;}function _0x1a1d69(_0x573df6){const _0x342f5a=_0x3ee7d6,_0x26d426=[_0x573df6[_0x342f5a(0x4d1)],_0x573df6['label'],_0x573df6['value'],_0x573df6[_0x342f5a(0x91f)]];for(const _0x2cea3a of _0x26d426){if(typeof _0x2cea3a==='string'&&_0x2cea3a[_0x342f5a(0x5da)]()[_0x342f5a(0x945)]>0x0)return _0x2cea3a[_0x342f5a(0x5da)]();}return'';}function _0x55be68(_0x20afba){if(!_0x20afba||typeof _0x20afba!=='object')return'unknown';let _0x58fd23=![],_0x40c865=![];const _0x56280f=_0x54e8bc=>{const _0x1b4855=_0x4a5a;if(_0x58fd23&&_0x40c865)return;if(!_0x54e8bc||typeof _0x54e8bc!==_0x1b4855(0x5ab))return;const _0x4265f3=_0x54e8bc,_0x51f1ce=_0x1a1d69(_0x4265f3)['toLowerCase']();if(_0x51f1ce){if(_0x1fd84a[_0x1b4855(0x364)](_0x51f1ce))_0x58fd23=!![];}if(_0x4265f3[_0x1b4855(0x85c)]==='XCUIElementTypeTextField'||_0x4265f3[_0x1b4855(0x85c)]===_0x1b4855(0x716)){const _0x355570=((_0x4265f3[_0x1b4855(0x4d1)]??'')+'\x20'+(_0x4265f3['label']??'')+'\x20'+(_0x4265f3['placeholder']??''))['toLowerCase']();(_0x4265f3['type']===_0x1b4855(0x716)||_0x1b22f4['test'](_0x355570))&&(_0x40c865=!![]);}if(Array['isArray'](_0x4265f3[_0x1b4855(0x9c3)])){for(const _0x92dacb of _0x4265f3['children'])_0x56280f(_0x92dacb);}};_0x56280f(_0x20afba);if(_0x58fd23||_0x40c865)return'fresh';return'existing';}var _0x1fd84a=/\b(sign in|sign up|log in|login|signup|welcome back|create account)\b/i,_0x1b22f4=/\b(email|password|e-mail)\b/i;function _0x43b054(_0x4cec43,_0x303c36){const _0x3d0510=_0x3ee7d6,_0x529023=_0x4cec43['objectiveSignals']??[];if(_0x529023[_0x3d0510(0x2a5)](_0x1db4c3))return'timeout';if(_0x529023['some'](_0x40cdbd))return'auth_wall';if(_0x529023[_0x3d0510(0x945)]>0x0&&_0x303c36&&_0x303c36['length']>0x0){if(_0x3d0510(0x2f8)==='PpONs'){if(_0x4116e7(_0x4cec43,_0x303c36))return'unexpected_state';}else return null;}if(_0x529023[_0x3d0510(0x945)]>0x0)return _0x3d0510(0x686);return'assertion';}function _0x1db4c3(_0x2ae0a9){const _0x4bf62a=_0x3ee7d6,_0x56a6c0=_0x2ae0a9['message']['toLowerCase']();if(!_0x56a6c0[_0x4bf62a(0x83f)]('timeout')&&!_0x56a6c0[_0x4bf62a(0x83f)](_0x4bf62a(0x6b6)))return![];return _0x2ae0a9[_0x4bf62a(0x3ea)]===_0x4bf62a(0x117)||_0x2ae0a9[_0x4bf62a(0x3ea)]==='network-failure';}function _0x40cdbd(_0x51e798){const _0x46cd61=_0x3ee7d6;if(_0x51e798[_0x46cd61(0x3ea)]!==_0x46cd61(0x5fd)&&_0x51e798[_0x46cd61(0x3ea)]!==_0x46cd61(0x343))return![];const _0x5243ce=_0x51e798['detail']??'';return/\bstatus=(401|403)\b/[_0x46cd61(0x364)](_0x5243ce);}function _0x4116e7(_0x2b4905,_0x5864da){const _0x52e3f6=_0x3ee7d6,_0x219ad9=new Set();for(const _0x1c19ee of _0x5864da){for(const _0x2b4cf2 of _0x1c19ee['split'](/[^A-Za-z0-9]+/)){if(_0x2b4cf2[_0x52e3f6(0x945)]<0x3)continue;_0x219ad9[_0x52e3f6(0x5c1)](_0x2b4cf2[_0x52e3f6(0x17e)]());}}if(_0x219ad9['size']===0x0)return![];for(const _0x299d77 of _0x2b4905[_0x52e3f6(0x22d)]){if(_0x299d77[_0x52e3f6(0x42d)])continue;const _0x3532de=_0x50b643(_0x299d77)['toLowerCase']();if(!_0x3532de)continue;const _0x5ba119=new Set();for(const _0x5b57f1 of _0x3532de['split'](/[^a-z0-9]+/)){if(_0x5b57f1[_0x52e3f6(0x945)]<0x3)continue;_0x5ba119['add'](_0x5b57f1);}for(const _0x30db4d of _0x219ad9){if(_0x52e3f6(0xfc)!=='fpZqG'){if(_0x5ba119['has'](_0x30db4d))return!![];}else{if(_0xd9b53c[_0x52e3f6(0x1ec)]===_0x52e3f6(0x96b)||_0x5e64e4[_0x52e3f6(0x1ec)]===_0x52e3f6(0x4c8)||_0x550b41[_0x52e3f6(0x1ec)]==='reset')return!![];if(_0x25de3c[_0x52e3f6(0x1ec)]===_0x52e3f6(0x861)&&_0x1dccc1[_0x52e3f6(0x2fe)]===_0x52e3f6(0x2dd))return!![];if(_0x284adc[_0x52e3f6(0x1ec)]==='tap')return!![];if(_0x1e45b8[_0x52e3f6(0x1ec)]===_0x52e3f6(0x85c)&&_0x1a684d['into'])return!![];if(_0x53bc16['verifyNavigation'])return!![];if(_0x29db18['verifyProfileTransition'])return!![];if(_0x2e02b3['verifyMutation']){if(_0x1ba6da['verifyMutation']['mutationKind']==='storage')return!![];const _0xdb42fd=_0x328615[_0x52e3f6(0x636)][_0x52e3f6(0x3f5)]['toUpperCase']();return _0xdb42fd==='POST'||_0xdb42fd==='PUT'||_0xdb42fd===_0x52e3f6(0x198)||_0xdb42fd==='DELETE';}return![];}}}return![];}function _0x50b643(_0x5cbd68){const _0x350ffe=_0x3ee7d6;if(_0x5cbd68[_0x350ffe(0x555)]){if(typeof _0x5cbd68[_0x350ffe(0x555)]['text']===_0x350ffe(0x7fd)&&_0x5cbd68[_0x350ffe(0x555)][_0x350ffe(0x5d9)]['length']>0x0)return _0x5cbd68[_0x350ffe(0x555)][_0x350ffe(0x5d9)];if(typeof _0x5cbd68[_0x350ffe(0x555)]['accessibilityLabel']===_0x350ffe(0x7fd)&&_0x5cbd68['target'][_0x350ffe(0x478)]['length']>0x0)return _0x5cbd68[_0x350ffe(0x555)][_0x350ffe(0x478)];}const _0x4e039d=_0x5cbd68['details'];return _0x4e039d?.['element']?.[_0x350ffe(0x4d1)]??_0x4e039d?.['element']?.[_0x350ffe(0x10d)]??'';}function _0x484ae6(_0x1a2ced){const _0x585845=_0x3ee7d6;if(!_0x1a2ced||typeof _0x1a2ced!==_0x585845(0x5ab))return'PlannedChainInput\x20must\x20be\x20an\x20object.';if(!Array[_0x585845(0x246)](_0x1a2ced['flows']))return'PlannedChainInput.flows\x20must\x20be\x20an\x20array.';if(_0x1a2ced['flows']['length']===0x0)return _0x585845(0x27e);if(!Array['isArray'](_0x1a2ced['bridges']))return _0x585845(0x1f4);if(_0x1a2ced['bridges']['length']>Math['max'](0x0,_0x1a2ced[_0x585845(0x1f5)][_0x585845(0x945)]-0x1))return'PlannedChainInput.bridges\x20length\x20('+_0x1a2ced['bridges'][_0x585845(0x945)]+_0x585845(0x9d2)+(_0x1a2ced[_0x585845(0x1f5)]['length']-0x1)+').';if(!Array[_0x585845(0x246)](_0x1a2ced['snapPointFlowIndices']))return _0x585845(0x9cb);for(const _0x4e8eea of _0x1a2ced[_0x585845(0x66a)]){if(typeof _0x4e8eea!==_0x585845(0x513)||!Number[_0x585845(0x93a)](_0x4e8eea)||_0x4e8eea<0x0)return'PlannedChainInput.snapPointFlowIndices\x20contains\x20non-integer\x20or\x20negative\x20entry:\x20'+String(_0x4e8eea)+'.';if(_0x4e8eea>=_0x1a2ced['flows'][_0x585845(0x945)]-0x1)return _0x585845(0x7ef)+_0x4e8eea+_0x585845(0x6df)+_0x1a2ced['flows'][_0x585845(0x945)]+').';}if(_0x1a2ced['affectedFlowNames']!==void 0x0){if(!Array['isArray'](_0x1a2ced[_0x585845(0xd7)]))return'PlannedChainInput.affectedFlowNames\x20must\x20be\x20an\x20array.';const _0x3afe8a=new Set(_0x1a2ced['flows'][_0x585845(0x986)](_0x19b2dc=>_0x19b2dc['name'])),_0x3bc516=_0x1a2ced['affectedFlowNames'][_0x585845(0x65c)](_0x1badc3=>typeof _0x1badc3!=='string'||!_0x3afe8a['has'](_0x1badc3));if(_0x3bc516[_0x585845(0x945)]>0x0){const _0x5783b0=_0x3bc516[_0x585845(0x986)](_0xf7b285=>String(_0xf7b285))[_0x585845(0x221)](',\x20');process['stderr']['write'](_0x585845(0x634)+_0x3bc516['length']+'\x20unknown\x20affectedFlowName(s)\x20from\x20PlannedChainInput:\x20'+_0x5783b0+_0x585845(0x31b)),_0x1a2ced['affectedFlowNames']=_0x1a2ced['affectedFlowNames']['filter'](_0x2c48c5=>typeof _0x2c48c5==='string'&&_0x3afe8a[_0x585845(0x21c)](_0x2c48c5));}}return null;}function _0x440b18(_0x6f8755){const _0x2d3a3a=_0x3ee7d6,_0x5980ec=_0x6f8755['toUpperCase']();return _0x5980ec===_0x2d3a3a(0x2a0)||_0x5980ec==='PUT'||_0x5980ec===_0x2d3a3a(0x198)||_0x5980ec==='DELETE';}function _0x55045b(_0x34d75d){const _0x55218d=_0x3ee7d6;if(_0x34d75d['mutationKind']===_0x55218d(0x96e))return!![];return _0x440b18(_0x34d75d[_0x55218d(0x3f5)]);}function _0x2feffa(_0x354b43,_0x3e0ac8){const _0x40921f=_0x3ee7d6;for(const _0x4e8e9e of _0x3e0ac8){if(_0x4e8e9e['length']===0x0)continue;const _0x5e84fb=_0x45064d(_0x4e8e9e[_0x40921f(0x141)](0x0)),_0x5e0bf1=_0x45064d(_0x4e8e9e['charCodeAt'](_0x4e8e9e['length']-0x1));let _0x3ce1b4=0x0;while(_0x3ce1b4<=_0x354b43['length']){const _0x289d80=_0x354b43[_0x40921f(0x747)](_0x4e8e9e,_0x3ce1b4);if(_0x289d80<0x0)break;const _0x8e3b11=_0x289d80+_0x4e8e9e['length'],_0x3ee94b=_0x289d80===0x0||_0x5e84fb||_0x45064d(_0x354b43[_0x40921f(0x141)](_0x289d80-0x1)),_0x5bf502=_0x8e3b11===_0x354b43[_0x40921f(0x945)]||_0x5e0bf1||_0x45064d(_0x354b43['charCodeAt'](_0x8e3b11));if(_0x3ee94b&&_0x5bf502)return!![];_0x3ce1b4=_0x289d80+0x1;}}return![];}function _0x45064d(_0x5a4ecf){return _0x5a4ecf===0x2f||_0x5a4ecf===0x3f||_0x5a4ecf===0x23||_0x5a4ecf===0x2e;}function _0x3a8a75(_0x20e246){const _0x5bdccb=_0x3ee7d6;let _0x23ed77=_0x20e246;const _0x60628b=_0x23ed77[_0x5bdccb(0x747)]('?');if(_0x60628b>=0x0)_0x23ed77=_0x23ed77['slice'](0x0,_0x60628b);const _0x2ea1a5=_0x23ed77[_0x5bdccb(0x747)]('#');if(_0x2ea1a5>=0x0)_0x23ed77=_0x23ed77['slice'](0x0,_0x2ea1a5);return _0x23ed77;}function _0x1ed562(_0x55e46f,_0x5ea44a,_0x529ea3){const _0xca2557=_0x3ee7d6;if(_0x55e46f[_0xca2557(0x945)]===0x0)return{'entries':[],'truncated':![]};const _0x2192c6=Array[_0xca2557(0x246)](_0x5ea44a)?_0x5ea44a:[],_0x58437a=_0x2192c6[_0xca2557(0x986)](_0x5bacdf=>typeof _0x5bacdf==='string'?_0x5bacdf['toLowerCase']():'')['filter'](_0x23fdc9=>_0x23fdc9[_0xca2557(0x5da)]()['length']>0x0),_0xec5ffb=_0x58437a[_0xca2557(0x945)]===0x0,_0x9dc695=_0x55e46f[_0xca2557(0x986)](_0x31f2df=>{const _0x55ec94=_0xca2557,_0x4e97ed=typeof _0x31f2df[_0x55ec94(0x4ff)]==='string'?_0x31f2df[_0x55ec94(0x4ff)]:'',_0x332c0b=_0x3a8a75(_0x4e97ed[_0x55ec94(0x17e)]()),_0x3ee5b1=_0xec5ffb||_0x2feffa(_0x332c0b,_0x58437a);if(!_0x3ee5b1){const {response:_0x40bc52,..._0x76ee05}=_0x31f2df;return void _0x40bc52,{'entry':_0x76ee05,'matched':![],'bodyBytes':0x0};}const _0x893095=_0x31f2df['response']?Buffer['byteLength'](_0x31f2df[_0x55ec94(0x856)],_0x55ec94(0x140)):0x0;return{'entry':_0x31f2df,'matched':!![],'bodyBytes':_0x893095};});let _0x200e37=_0x9dc695['reduce']((_0x27ffd9,_0xe74e12)=>_0x27ffd9+(_0xe74e12['matched']?_0xe74e12['bodyBytes']:0x0),0x0),_0x16a6da=![];if(_0x200e37>_0x529ea3){if('cKTMJ'==='cBYqp')return this['child']!==null&&this[_0xca2557(0x91b)][_0xca2557(0x186)]===null;else for(let _0x20d87c=0x0;_0x20d87c<_0x9dc695['length']&&_0x200e37>_0x529ea3;_0x20d87c++){const _0x55b9be=_0x9dc695[_0x20d87c];if(!_0x55b9be['matched']||_0x55b9be[_0xca2557(0x2f1)]===0x0)continue;const {response:_0xccd2dd,..._0x59c532}=_0x55b9be[_0xca2557(0x392)];void _0xccd2dd,_0x55b9be[_0xca2557(0x392)]=_0x59c532,_0x200e37-=_0x55b9be['bodyBytes'],_0x55b9be[_0xca2557(0x2f1)]=0x0,_0x16a6da=!![];}}return{'entries':_0x9dc695[_0xca2557(0x986)](_0x3b4b9e=>_0x3b4b9e['entry']),'truncated':_0x16a6da};}function _0x50401f(_0x317e30){const _0x486e60=_0x3ee7d6;return{..._0x317e30[_0x486e60(0x3b9)]&&_0x317e30[_0x486e60(0x3b9)][_0x486e60(0x945)]>0x0?{'witnesses':_0x317e30['witnesses']}:{},..._0x317e30['objectiveSignals']&&_0x317e30['objectiveSignals'][_0x486e60(0x945)]>0x0?{'objectiveSignals':_0x317e30[_0x486e60(0x45f)]}:{},..._0x317e30['reloadRecoveryWitnesses']&&_0x317e30[_0x486e60(0x430)][_0x486e60(0x945)]>0x0?{'reloadRecoveryWitnesses':_0x317e30[_0x486e60(0x430)]}:{}};}function _0x605049(_0x2ddbc0){const _0x2daf54=_0x3ee7d6;if((_0x2ddbc0['objectiveSignals']?.[_0x2daf54(0x945)]??0x0)>0x0){const _0x1c6d37=_0x2ddbc0[_0x2daf54(0x45f)][0x0];return _0x1c6d37['kind']+':\x20'+_0x1c6d37[_0x2daf54(0x92e)];}for(const _0x285b59 of _0x2ddbc0['steps']){if(!_0x285b59['success']){const _0x551603=_0x285b59['action'],_0x1f7b3d=_0x285b59['error']??_0x2daf54(0x30e);return _0x551603+'\x20failed:\x20'+_0x1f7b3d;}}return _0x2daf54(0x7f8);}import{z}from'zod';var _0x2c58ec=z[_0x3ee7d6(0x5ab)]({'text':z[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x4ac)](),'accessibilityLabel':z[_0x3ee7d6(0x7fd)]()['optional'](),'type':z[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x4ac)](),'index':z[_0x3ee7d6(0x513)]()[_0x3ee7d6(0x22a)]()['nonnegative']()[_0x3ee7d6(0x4ac)]()});function _0x49186b(_0x4d838f){const _0x2abd65=_0x3ee7d6;if(!_0x4d838f[_0x2abd65(0x5d9)]&&!_0x4d838f[_0x2abd65(0x478)]&&!_0x4d838f[_0x2abd65(0x85c)]&&_0x4d838f['index']===void 0x0)return'Each\x20query\x20needs\x20at\x20least\x20one\x20of\x20text,\x20accessibilityLabel,\x20type,\x20or\x20index.';return null;}function _0x3586ff(_0x3055ff,_0x50b05d){const _0x4e9245=_0x3ee7d6,{screenManager:_0x48dc9c,toolErrorContent:_0x375955,jsonText:_0x19779d,requireWDA:_0x2de12b}=_0x50b05d;_0x3055ff[_0x4e9245(0x8dc)]('screen_tap_and_verify','Compound\x20primitive:\x20find\x20an\x20element\x20by\x20text/accessibilityLabel/type,\x20tap\x20its\x20center,\x20and\x20optionally\x20assert\x20a\x20follow-up\x20selector\x20becomes\x20visible\x20—\x20all\x20in\x20one\x20logical\x20step.\x20Sends\x20the\x20tap\x20via\x20the\x20W3C\x20bulk-actions\x20endpoint\x20when\x20WDA\x20supports\x20it\x20(batched:\x20true)\x20and\x20falls\x20back\x20to\x20the\x20legacy\x20serial\x20tap\x20path\x20otherwise\x20(batched:\x20false).',{'text':z['string']()[_0x4e9245(0x4ac)](),'accessibilityLabel':z['string']()['optional'](),'type':z['string']()[_0x4e9245(0x4ac)](),'index':z[_0x4e9245(0x513)]()['int']()['nonnegative']()['optional'](),'verifySelector':_0x2c58ec['optional']()['describe'](_0x4e9245(0x891))},async _0x440ff3=>{const _0x331b1a=_0x4e9245;if(_0x331b1a(0x7f4)===_0x331b1a(0x7f4))try{const _0xf92d78=await _0x2de12b();if(!_0xf92d78['ok'])return{..._0x19779d(_0xf92d78[_0x331b1a(0x836)]),'isError':!![]};const _0x4ea98b=_0x440ff3,_0x41655e=_0x49186b(_0x4ea98b);if(_0x41655e)return{..._0x19779d({'success':![],'error':_0x41655e}),'isError':!![]};const _0x50128d={'text':_0x4ea98b['text'],'accessibilityLabel':_0x4ea98b[_0x331b1a(0x478)],'type':_0x4ea98b[_0x331b1a(0x85c)],'index':_0x4ea98b['index']},_0x10b34a=_0x4ea98b['verifySelector'];if(_0x10b34a){if('uwJjT'===_0x331b1a(0x31d)){const _0x3cb78b=_0x49186b(_0x10b34a);if(_0x3cb78b)return{..._0x19779d({'success':![],'error':'verifySelector:\x20'+_0x3cb78b}),'isError':!![]};}else return{..._0xcb7104({'ok':![],'error':_0x331b1a(0x442)+(_0x3ec26b instanceof _0x394685?_0x1c368e['message']:_0x3f7081(_0x29cfed))}),'isError':!![]};}const _0x4e75a1=await _0x48dc9c[_0x331b1a(0x7f9)](_0x50128d,{'verifySelector':_0x10b34a});return{..._0x19779d(_0x4e75a1),'isError':!_0x4e75a1[_0x331b1a(0x42d)]};}catch(_0x2f009e){return _0x375955(_0x331b1a(0x691),_0x2f009e);}else return new _0x4a670f(_0x240984=>{const _0x4c9a52=_0x331b1a,_0x103860=_0x1a2168(_0x318d08['bin'],_0x533636[_0x4c9a52(0x719)],{'cwd':_0x1a3a09[_0x4c9a52(0x346)],'stdio':[_0x4c9a52(0x317),_0x4c9a52(0x406),_0x4c9a52(0x406)]});_0x103860['stdout']?.['on'](_0x4c9a52(0x978),()=>void 0x0),_0x103860['stderr']?.['on']('data',()=>void 0x0),_0x103860['on'](_0x4c9a52(0x125),()=>_0x240984({'exitCode':0x7f})),_0x103860['on'](_0x4c9a52(0x41e),_0x4c775c=>_0x240984({'exitCode':_0x4c775c??0x1}));});}),_0x3055ff['tool']('screen_type_into_field',_0x4e9245(0x811),{'fieldQuery':_0x2c58ec['describe']('Query\x20identifying\x20the\x20input\x20field\x20to\x20focus.'),'text':z[_0x4e9245(0x7fd)]()['describe']('Text\x20to\x20type\x20into\x20the\x20focused\x20field.'),'clearFirst':z['boolean']()[_0x4e9245(0x4ac)]()[_0x4e9245(0x9de)]('When\x20true,\x20clear\x20the\x20field\x27s\x20current\x20value\x20before\x20typing.\x20Defaults\x20to\x20false.')},async _0x1cbfe0=>{const _0xae0c63=_0x4e9245;try{const _0x6ba301=await _0x2de12b();if(!_0x6ba301['ok'])return{..._0x19779d(_0x6ba301[_0xae0c63(0x836)]),'isError':!![]};const _0x1f3228=_0x1cbfe0,_0x4cfc9e=_0x49186b(_0x1f3228['fieldQuery']);if(_0x4cfc9e)return{..._0x19779d({'success':![],'error':_0xae0c63(0x982)+_0x4cfc9e}),'isError':!![]};const _0xb1c4ec=await _0x48dc9c[_0xae0c63(0x8d9)](_0x1f3228[_0xae0c63(0x7eb)],_0x1f3228[_0xae0c63(0x5d9)],{'clearFirst':_0x1f3228[_0xae0c63(0x3c2)]});return{..._0x19779d(_0xb1c4ec),'isError':!_0xb1c4ec[_0xae0c63(0x42d)]};}catch(_0x141031){return _0x375955(_0xae0c63(0x3f7),_0x141031);}}),_0x3055ff['tool']('screen_tap_chain',_0x4e9245(0x27c),{'queries':z['array'](_0x2c58ec)[_0x4e9245(0x71d)](0x1)['describe'](_0x4e9245(0x748))},async _0x2827bd=>{const _0x3b2081=_0x4e9245;try{const _0x420128=await _0x2de12b();if(!_0x420128['ok'])return{..._0x19779d(_0x420128['payload']),'isError':!![]};const _0x1fbbed=_0x2827bd;for(let _0x22a350=0x0;_0x22a350<_0x1fbbed[_0x3b2081(0x1b0)]['length'];_0x22a350++){const _0x5f5170=_0x49186b(_0x1fbbed['queries'][_0x22a350]);if(_0x5f5170)return{..._0x19779d({'success':![],'error':'queries['+_0x22a350+']:\x20'+_0x5f5170}),'isError':!![]};}const _0x43db0c=await _0x48dc9c['tapChain'](_0x1fbbed[_0x3b2081(0x1b0)]);return{..._0x19779d(_0x43db0c),'isError':!_0x43db0c['success']};}catch(_0x1a964a){return _0x375955(_0x3b2081(0x179),_0x1a964a);}});}import{lstat,mkdir as _0x4a609c,readdir as _0x586a4d,readFile as _0x1f98a5,rename,rm,writeFile as _0x55b941}from'fs/promises';import{randomBytes}from'crypto';import{dirname,join as _0x3942e5}from'path';var _0x41c06a=_0x3ee7d6(0x5d3),_0x4eaf72='runs',_0x57ee55=class extends Error{constructor(_0x423c9a){const _0x4063a8=_0x3ee7d6;super(_0x423c9a),this['name']=_0x4063a8(0x54b);}};function _0x5268d3(_0x17ef1c){const _0x22989a=_0x3ee7d6;return _0x17ef1c[_0x22989a(0x17e)]()[_0x22989a(0x27d)](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'')['slice'](0x0,0x50)||'flow';}function _0x4cd518(_0x217939){const _0x4503c6=_0x3ee7d6;if(typeof _0x217939!=='string'||_0x217939['length']===0x0)throw new _0x57ee55('runId\x20must\x20be\x20a\x20non-empty\x20string.');if(_0x217939[_0x4503c6(0x945)]>0x80)throw new _0x57ee55('runId\x20exceeds\x20128\x20characters.');if(_0x217939[_0x4503c6(0x887)]('.'))throw new _0x57ee55('runId\x20\x22'+_0x217939+_0x4503c6(0x495));if(!/^[A-Za-z0-9._-]+$/['test'](_0x217939))throw new _0x57ee55('runId\x20\x22'+_0x217939+'\x22\x20must\x20match\x20[A-Za-z0-9._-]+\x20(no\x20separators,\x20control\x20chars,\x20or\x20unicode).');return _0x217939;}function _0x69e610(_0x3f448a){const _0x1f84a5=_0x3ee7d6;if(typeof _0x3f448a!==_0x1f84a5(0x7fd)||_0x3f448a[_0x1f84a5(0x945)]===0x0)throw new _0x57ee55(_0x1f84a5(0x739));if(_0x3f448a['length']>0x100){if(_0x1f84a5(0x59e)==='owCoB')throw new _0x57ee55(_0x1f84a5(0x309));else return{'success':![],'error':_0x218a78>=_0x36cd56[_0x1f84a5(0x945)]?'Index\x20'+_0x293119+_0x1f84a5(0x853)+_0x3022cd['length']+'\x20matching\x20element(s).':_0x1f84a5(0x5ce),'batched':![]};}return _0x3f448a;}function _0x164e3d(_0x46361f){const _0xa577b8=_0x3ee7d6;if(typeof _0x46361f!=='number'||!Number['isFinite'](_0x46361f)||!Number[_0xa577b8(0x93a)](_0x46361f)||_0x46361f<0x0||_0x46361f>0xf4240)throw new _0x57ee55(_0xa577b8(0x52e)+String(_0x46361f)+').');return _0x46361f;}var _0x9e06d9=class{[_0x3ee7d6(0xd9)];constructor(_0x2cf674){const _0x35b906=_0x3ee7d6;this['root']=_0x3942e5(_0x2cf674[_0x35b906(0x1f7)],_0x41c06a,_0x4eaf72);}get[_0x3ee7d6(0x7f2)](){return this['root'];}async['saveStepScreenshot'](_0x33de07,_0x4930da,_0x53edce,_0x21e485){const _0x1a1c10=_0x3ee7d6,_0x1f2ec1=_0x4cd518(_0x33de07),_0x42f424=_0x69e610(_0x4930da),_0x1de695=_0x164e3d(_0x53edce),_0x457671=this['stepPath'](_0x1f2ec1,_0x42f424,_0x1de695);await _0x4a609c(dirname(_0x457671),{'recursive':!![]});const _0x96c4fe=Buffer[_0x1a1c10(0x70f)](_0x21e485,'base64');return await _0x113a03(_0x457671,_0x96c4fe),{'path':_0x457671};}async['saveRunIndex'](_0x4b7e23,_0x1d6594){const _0x2c0027=_0x3ee7d6,_0x52c6bf=_0x4cd518(_0x4b7e23),_0x3d23e2=this[_0x2c0027(0x649)](_0x52c6bf);await _0x4a609c(_0x3d23e2,{'recursive':!![]});const _0x35226a=_0x3942e5(_0x3d23e2,'run.json');await _0x113a03(_0x35226a,Buffer['from'](JSON[_0x2c0027(0x2c1)](_0x1d6594,null,0x2)));}async['getRunIndex'](_0x16efbf){const _0x3b66bb=_0x3ee7d6,_0x26eaa6=_0x4cd518(_0x16efbf),_0x20c75c=_0x3942e5(this['runDir'](_0x26eaa6),'run.json');try{const _0x1352a5=await _0x1f98a5(_0x20c75c,_0x3b66bb(0x140)),_0x54e6bc=JSON['parse'](_0x1352a5);if(_0x54e6bc&&typeof _0x54e6bc[_0x3b66bb(0x297)]===_0x3b66bb(0x7fd)&&typeof _0x54e6bc['startedAt']===_0x3b66bb(0x513)&&Array['isArray'](_0x54e6bc['flows']))return _0x54e6bc;return null;}catch(_0x5451b2){if(_0x3f7879(_0x5451b2))return null;return null;}}async['listRuns'](){const _0x294455=_0x3ee7d6;let _0x2df637;try{_0x2df637=await _0x586a4d(this[_0x294455(0xd9)]);}catch(_0xe4b4c5){if(_0x3f7879(_0xe4b4c5))return[];throw _0xe4b4c5;}const _0x1c10d4=[];for(const _0x50ee3f of _0x2df637){try{_0x4cd518(_0x50ee3f);}catch{continue;}const _0x3474d0=_0x3942e5(this[_0x294455(0xd9)],_0x50ee3f);let _0x18fb81;try{if('MbHJD'!=='OBCuu')_0x18fb81=await lstat(_0x3474d0);else return{'content':[{'type':_0x294455(0x5d9),'text':_0x788db6[_0x294455(0x2c1)]({'stopped':[],'message':_0x294455(0x374)})}]};}catch{if('mUWdG'!=='Qqpuh')continue;else for(const _0x128035 of _0x4c1ea5){const _0x26a31b=_0x1e5ab9(_0x128035);if(_0x26a31b)return _0x26a31b;}}if(!_0x18fb81[_0x294455(0x42a)]())continue;const _0x5f3bfa=await this[_0x294455(0x773)](_0x50ee3f),_0x23e457=_0x5f3bfa?.[_0x294455(0x4b4)]??_0x18fb81['mtime']?.['getTime']()??0x0,_0x21df0c=await this[_0x294455(0x423)](_0x3474d0);_0x1c10d4[_0x294455(0x496)]({'runId':_0x50ee3f,'startedAt':_0x23e457,'bytes':_0x21df0c,'path':_0x3474d0});}return _0x1c10d4[_0x294455(0x837)]((_0x400cf7,_0xad9c30)=>_0xad9c30['startedAt']-_0x400cf7[_0x294455(0x4b4)]),_0x1c10d4;}async[_0x3ee7d6(0x399)](_0x1c669c){const _0xe0d60b=_0x4cd518(_0x1c669c),_0x331638=this['runDir'](_0xe0d60b);await rm(_0x331638,{'recursive':!![],'force':!![]});}async['sweepOlderThan'](_0x50f9ac){const _0x4eab77=_0x3ee7d6,_0x3868d3=await this['listRuns'](),_0x3ac082=Date[_0x4eab77(0x3d1)]()-_0x50f9ac,_0x48adc5=[];let _0x52c665=0x0;for(const _0x3f1798 of _0x3868d3){if(_0x3f1798[_0x4eab77(0x4b4)]<_0x3ac082)try{_0x4eab77(0x76a)!==_0x4eab77(0x76a)?this['inflight']=null:(await this[_0x4eab77(0x399)](_0x3f1798[_0x4eab77(0x297)]),_0x48adc5['push'](_0x3f1798[_0x4eab77(0x297)]),_0x52c665+=_0x3f1798['bytes']);}catch{}}return{'swept':_0x48adc5,'freedBytes':_0x52c665};}async[_0x3ee7d6(0x474)](_0x5afd3f){const _0xb677b7=_0x3ee7d6,_0x72ac5a=await this[_0xb677b7(0xef)]();let _0x33f87f=_0x72ac5a['reduce']((_0x10c358,_0x3ea4f7)=>_0x10c358+_0x3ea4f7['bytes'],0x0);if(_0x33f87f<=_0x5afd3f)return{'evicted':[],'freedBytes':0x0};const _0x551e69=[..._0x72ac5a]['sort']((_0x599699,_0x14dced)=>_0x599699[_0xb677b7(0x4b4)]-_0x14dced['startedAt']),_0x3176fa=[];let _0x5a0bc1=0x0;for(const _0x54d076 of _0x551e69){if(_0x33f87f<=_0x5afd3f)break;try{await this[_0xb677b7(0x399)](_0x54d076['runId']),_0x3176fa[_0xb677b7(0x496)](_0x54d076[_0xb677b7(0x297)]),_0x5a0bc1+=_0x54d076[_0xb677b7(0x107)],_0x33f87f-=_0x54d076[_0xb677b7(0x107)];}catch{}}return{'evicted':_0x3176fa,'freedBytes':_0x5a0bc1};}[_0x3ee7d6(0x649)](_0x290398){const _0x206f46=_0x3ee7d6;return _0x3942e5(this[_0x206f46(0xd9)],_0x290398);}[_0x3ee7d6(0x6c8)](_0x1e0b92,_0x1fc0ce,_0x195457){const _0x281c55=_0x5268d3(_0x1fc0ce);return _0x3942e5(this['runDir'](_0x1e0b92),_0x281c55,'step-'+_0x195457+'.png');}async['dirBytes'](_0x151a56){const _0x4a91a0=_0x3ee7d6;let _0x3be952=0x0,_0x2e926a;try{_0x2e926a=await _0x586a4d(_0x151a56);}catch{return 0x0;}for(const _0x104368 of _0x2e926a){if(_0x4a91a0(0x2c0)===_0x4a91a0(0x187))_0x5e2fa0[_0x4a91a0(0x870)][_0x4a91a0(0x65a)]('[ceraph]\x20video\x20recorder\x20stop\x20failed:\x20'+(_0x8b0455 instanceof _0x4b14fd?_0x20bf90[_0x4a91a0(0x92e)]:_0x31d989(_0x2996c5))+'\x0a');else{const _0x515205=_0x3942e5(_0x151a56,_0x104368);let _0x2c23df;try{_0x2c23df=await lstat(_0x515205);}catch{continue;}if(_0x2c23df['isDirectory']())_0x3be952+=await this['dirBytes'](_0x515205);else _0x2c23df['isFile']()&&(_0x3be952+=_0x2c23df['size']);}}return _0x3be952;}};function _0x3f7879(_0x162243){return typeof _0x162243==='object'&&_0x162243!==null&&'code'in _0x162243&&_0x162243['code']==='ENOENT';}async function _0x113a03(_0x3ebac8,_0x525937){const _0x3bd38e=_0x3ee7d6,_0xb9e34d=_0x3ebac8+'.'+randomBytes(0x8)['toString'](_0x3bd38e(0x20f))+'.tmp';try{if(_0x3bd38e(0x455)==='iPkJz')await _0x55b941(_0xb9e34d,_0x525937),await rename(_0xb9e34d,_0x3ebac8);else return{'success':!![],'visible':!![],'element':{'type':_0x7a85f0['element'][_0x3bd38e(0x85c)]??'unknown','label':_0x3b6c0e['element']['label']??_0x2bae91[_0x3bd38e(0x8ff)]['name']??'','bounds':_0x2698c8['element'][_0x3bd38e(0x578)]}};}catch(_0x11e3a8){await rm(_0xb9e34d,{'force':!![]})[_0x3bd38e(0x4ba)](()=>void 0x0);throw _0x11e3a8;}}async function _0x576e14(_0x4a5091,_0x6e5673){const _0x17f609=_0x3ee7d6,_0x225cc2=_0x6e5673[_0x17f609(0x86d)]??_0x17f609(0x2ab);if(_0x225cc2==='all'){const _0x288efa=await _0x4a5091['listRuns']();let _0x573c33=0x0,_0x202221=0x0;const _0x21dab3=[];for(const _0x5bde11 of _0x288efa){if(_0x17f609(0x243)!==_0x17f609(0x69e))try{await _0x4a5091[_0x17f609(0x399)](_0x5bde11[_0x17f609(0x297)]),_0x21dab3[_0x17f609(0x496)](_0x5bde11['runId']),_0x573c33+=_0x5bde11['bytes'];}catch{_0x202221++;}else _0x25ba55['source']=_0x5838a3['pathSlug']+':'+_0x9c9c2c['line']+':'+_0x3fdbea['col'];}const _0x276ca4=(await _0x4a5091['listRuns']())['length'];return{'swept':_0x21dab3,'freedBytes':_0x573c33,'remainingRuns':_0x276ca4,'failedToPurge':_0x202221};}const _0x23d8e6=_0x225cc2===_0x17f609(0x3a2)?0x1e*0x18*0x3c*0x3c*0x3e8:0xe*0x18*0x3c*0x3c*0x3e8,{swept:_0x55f2da,freedBytes:_0x236d25}=await _0x4a5091['sweepOlderThan'](_0x23d8e6),_0x197b7d=(await _0x4a5091[_0x17f609(0xef)]())[_0x17f609(0x945)];return{'swept':_0x55f2da,'freedBytes':_0x236d25,'remainingRuns':_0x197b7d,'failedToPurge':0x0};}import{spawn as _0x38bbff}from'child_process';import{readdir as _0x93f4d,readFile as _0x44a1ca}from'fs/promises';import{join as _0x12b4ee,relative as _0x140207,sep}from'path';import{spawn as _0x3ecef1}from'child_process';import{mkdir as _0x346370,rm as _0x20f5c3,stat as _0xbe1507}from'fs/promises';import{dirname as _0x38d5d8,join as _0x4964f8}from'path';var _0x24cbc3=0xbb8,_0x12e72e=0x1000,_0x2caceb=new Map(),_0x411061=_0x3ee7d6(0x639),_0x1dde94=null;function _0x3caa26(){return _0x411061;}var _0x3547fc=class{['resolver'];['outputPath'];['spawnFn'];['setTimeoutFn'];['mkdirFn'];['statFn'];[_0x3ee7d6(0x85f)];[_0x3ee7d6(0x91b)]=null;[_0x3ee7d6(0x3fb)]=null;[_0x3ee7d6(0x4e8)]=![];[_0x3ee7d6(0x6af)]=![];constructor(_0x32c5b9){const _0x53e577=_0x3ee7d6;this['resolver']=_0x32c5b9['resolver'],this['outputPath']=_0x32c5b9['outputPath'],this[_0x53e577(0x9ab)]=_0x32c5b9['spawnFn']??_0x3ecef1,this['setTimeoutFn']=_0x32c5b9[_0x53e577(0x5a3)]??setTimeout,this[_0x53e577(0x19f)]=_0x32c5b9['mkdirFn']??_0x346370,this['statFn']=_0x32c5b9['statFn']??_0xbe1507,this[_0x53e577(0x85f)]=_0x32c5b9['rmFn']??_0x20f5c3;}async[_0x3ee7d6(0x7cf)](_0x240ab0){return _0xbd101(_0x240ab0,{'statFn':this['statFn'],'rmFn':this['rmFn']});}async[_0x3ee7d6(0x41b)](){const _0x226485=_0x3ee7d6;if(this[_0x226485(0x4e8)])return{'ok':![],'error':_0x226485(0x7d7)};if(this[_0x226485(0x6af)])return{'ok':![],'error':'VideoRecorder\x20already\x20stopped;\x20construct\x20a\x20fresh\x20recorder.'};this[_0x226485(0x4e8)]=!![];try{await this['mkdirFn'](_0x38d5d8(this[_0x226485(0x426)]),{'recursive':!![]});}catch(_0x3d2d2b){if('yzplo'!=='yzplo')_0x494753(_0xfd7b02);else return{'ok':![],'error':_0x226485(0x6d1)+_0xed8d43(_0x3d2d2b)};}const _0x2f7847=await this['resolver'][_0x226485(0x75f)]()[_0x226485(0x4ba)](_0x5cc842=>{return{'error':_0xed8d43(_0x5cc842)};});if('error'in _0x2f7847)return{'ok':![],'error':_0x226485(0x587)+_0x2f7847['error']};const _0x292f11=await this[_0x226485(0x707)](_0x2f7847);if(!_0x292f11['ok'])return{'ok':![],'error':_0x292f11[_0x226485(0x125)]};let _0x1260be;try{'ClPhB'===_0x226485(0x948)?_0x1260be=this['spawnFn'](_0x292f11['argv0'],_0x292f11['args'],{'stdio':[_0x226485(0x317),'pipe','pipe']}):(_0x57d872[_0x226485(0x496)]({'region':_0x185dff(_0x2ea11f[_0x226485(0x94c)]),'kind':'removed','severity':_0x10ce77('removed',_0x3d9b74,_0x5d68f9['bounds']),'nodeId':_0x15ca52}),_0x8045e5[_0x226485(0x496)](_0x964134['kind']??_0x226485(0x8a3)));}catch(_0x46182f){return{'ok':![],'error':_0x226485(0x5cc)+_0x292f11[_0x226485(0x4a4)]+':\x20'+_0xed8d43(_0x46182f)};}return this['child']=_0x1260be,this[_0x226485(0x3fb)]=new Promise(_0x552719=>{const _0x11f3fe=_0x226485,_0x323199=()=>_0x552719();_0x1260be[_0x11f3fe(0x9b5)](_0x11f3fe(0x41e),_0x323199),_0x1260be[_0x11f3fe(0x9b5)]('error',_0x323199);}),{'ok':!![],'path':this['outputPath']};}async['stop'](){const _0x5776e0=_0x3ee7d6;if(!this['hasStarted']){this['hasStopped']=!![];return;}if(this[_0x5776e0(0x6af)])return;this['hasStopped']=!![];const _0x356c6c=this['child'],_0x424e55=this['childExit'];this['child']=null,this['childExit']=null;if(!_0x356c6c||_0x356c6c[_0x5776e0(0x186)]!==null)return;try{_0x356c6c['kill']('SIGINT');}catch{}let _0x33fe88=null;const _0x166d87=new Promise(_0x72bc9e=>{const _0x2f43eb=_0x5776e0;if(_0x2f43eb(0x706)!=='DuXOJ'){const _0x2a7074=_0x95de3a?.[_0x2f43eb(0x4d1)],_0x4c92=_0x47db11?.[_0x2f43eb(0x92e)]??_0x2f4f55(_0x5acbae);if(_0x2a7074===_0x2f43eb(0x567)||/UserNotFoundException|user does not exist|not[\s_-]?found/i[_0x2f43eb(0x364)](_0x4c92))return;throw new _0x46e7b8('api-error',_0x2f43eb(0x8f9)+_0x4c92,_0x396f7b);}else _0x33fe88=this[_0x2f43eb(0x5a3)](()=>{const _0x37be37=_0x2f43eb;try{_0x356c6c[_0x37be37(0x142)]('SIGKILL');}catch{}_0x72bc9e();},_0x24cbc3),_0x33fe88?.['unref']?.();});try{await Promise[_0x5776e0(0x5a8)]([_0x424e55??Promise[_0x5776e0(0x75f)](),_0x166d87]);if(_0x424e55)await _0x424e55;}finally{if(_0x5776e0(0x4c2)==='BoeaA'){if(_0x33fe88)clearTimeout(_0x33fe88);}else return{'success':![],'transport':'devicectl','error':'devicectl\x20launch\x20failed:\x20'+_0x15f0f0[_0x5776e0(0x5da)]()};}}async[_0x3ee7d6(0x707)](_0x564216){const _0x7a5549=_0x3ee7d6;if(_0x564216['target']===_0x7a5549(0x21f)){const _0x422430=this['resolver']['getSimulatorWdaUdid']()??_0x564216[_0x7a5549(0x737)]??null;if(!_0x422430)return{'ok':![],'error':'Simulator\x20UDID\x20unavailable\x20—\x20call\x20`rn_wda_start`\x20to\x20bind\x20a\x20simulator\x20before\x20starting\x20a\x20chain\x20so\x20the\x20recorder\x20can\x20address\x20it\x20explicitly.\x20Using\x20`booted`\x20is\x20unsafe\x20with\x20multiple\x20booted\x20simulators.'};return{'ok':!![],'argv0':_0x7a5549(0x2d3),'args':[_0x7a5549(0x5c3),'io',_0x422430,'recordVideo','--type=mp4',this['outputPath']]};}const _0x16371b=_0x564216[_0x7a5549(0x737)];if(!_0x16371b)return{'ok':![],'error':_0x7a5549(0x4b3)};const _0x7a90e7=await _0x107894(_0x16371b);if(_0x7a90e7===null)return{'ok':![],'error':'Could\x20not\x20resolve\x20AVFoundation\x20index\x20for\x20device\x20'+_0x16371b+_0x7a5549(0x93c)};return{'ok':!![],'argv0':_0x7a5549(0x532),'args':['-f',_0x7a5549(0x28e),'-framerate','30','-i',_0x7a90e7+':',_0x7a5549(0x285),'h264','-y',this['outputPath']]};}},_0xf33b5b={'spawnFn':_0x3ecef1};async function _0x107894(_0x5e805f){const _0x37bbef=_0x3ee7d6,_0x199216=_0x2caceb[_0x37bbef(0x47a)](_0x5e805f);if(_0x199216!==void 0x0)return _0x199216;const _0x231fe7=await _0x427bf8()['catch'](()=>[]);if(_0x231fe7['length']===0x0)return null;const _0x5ccff5=await _0xe24a90(_0x5e805f)['catch'](()=>null);if(!_0x5ccff5)return null;const _0x40a5f6=_0x5ccff5[_0x37bbef(0x4d1)]['toLowerCase']();let _0x4e8bc3=_0x231fe7[_0x37bbef(0x7bd)](_0x47b471=>_0x47b471[_0x37bbef(0x4d1)]===_0x5ccff5[_0x37bbef(0x4d1)]);!_0x4e8bc3&&(_0x37bbef(0x749)==='IjnuJ'?this['realDeviceHookInflight'][_0x37bbef(0x14d)](_0x2500c1):_0x4e8bc3=_0x231fe7[_0x37bbef(0x7bd)](_0x198283=>_0x198283[_0x37bbef(0x4d1)][_0x37bbef(0x17e)]()===_0x40a5f6));if(!_0x4e8bc3)return null;return _0x2caceb[_0x37bbef(0x3b6)](_0x5e805f,_0x4e8bc3[_0x37bbef(0x1c4)]),_0x4e8bc3[_0x37bbef(0x1c4)];}async function _0x427bf8(){const _0x4d9490=_0x3ee7d6,_0x420718=await _0x245602('ffmpeg',['-hide_banner','-f',_0x4d9490(0x28e),'-list_devices','true','-i','']),_0x1b540e=_0x420718[_0x4d9490(0x870)]||_0x420718[_0x4d9490(0x91a)];return _0x13110c(_0x1b540e);}function _0x13110c(_0x1b95fb){const _0x1312ed=_0x3ee7d6,_0x4e8988=[];let _0x50c063=![];const _0x14f5b2=/^(?:\[AVFoundation[^\]]*\]\s+)?\[(\d+)\]\s+(.+?)\s*$/;for(const _0x3ed0bf of _0x1b95fb['split'](/\r?\n/)){const _0x235b1e=_0x3ed0bf[_0x1312ed(0x5da)]();if(/AVFoundation\s+video\s+devices/i[_0x1312ed(0x364)](_0x235b1e)){_0x50c063=!![];continue;}if(/AVFoundation\s+audio\s+devices/i['test'](_0x235b1e)){if(_0x1312ed(0x2da)!=='nzVMd')_0xebc0a5+=_0x376652[_0x1312ed(0x510)]();else{_0x50c063=![];continue;}}if(!_0x50c063)continue;const _0x550319=_0x14f5b2[_0x1312ed(0x66c)](_0x235b1e);if(!_0x550319)continue;_0x4e8988[_0x1312ed(0x496)]({'index':_0x550319[0x1],'name':_0x550319[0x2]});}return _0x4e8988;}async function _0xe24a90(_0x84d3c3){const _0x2faf54=_0x3ee7d6,_0x275a5d=await _0x245602(_0x2faf54(0x2b9),[_0x2faf54(0x48d),_0x2faf54(0x924)]);if(_0x275a5d[_0x2faf54(0x845)]!==0x0&&!_0x275a5d[_0x2faf54(0x91a)])return null;try{const _0x4040b5=JSON['parse'](_0x275a5d['stdout']);return _0x17d1f0(_0x4040b5['SPUSBDataType'],_0x84d3c3);}catch{return null;}}function _0x17d1f0(_0x24e40d,_0x531815){const _0x347a22=_0x3ee7d6;if(_0x24e40d===null||_0x24e40d===void 0x0)return null;if(Array['isArray'](_0x24e40d)){for(const _0x4c90cc of _0x24e40d){const _0x1dddaf=_0x17d1f0(_0x4c90cc,_0x531815);if(_0x1dddaf)return _0x1dddaf;}return null;}if(typeof _0x24e40d!==_0x347a22(0x5ab))return null;const _0x369020=_0x24e40d,_0x360a46=_0x369020['serial_num'];if(typeof _0x360a46==='string'&&_0x360a46['toLowerCase']()===_0x531815['toLowerCase']()){const _0x1eec24=typeof _0x369020['_name']==='string'?_0x369020[_0x347a22(0x9d8)]:_0x531815;return{'name':_0x1eec24,'serial':_0x360a46};}for(const _0x4acab8 of Object['values'](_0x369020)){if(Array['isArray'](_0x4acab8)||typeof _0x4acab8==='object'&&_0x4acab8!==null){const _0x5f28ac=_0x17d1f0(_0x4acab8,_0x531815);if(_0x5f28ac)return _0x5f28ac;}}return null;}async function _0xbd101(_0x23bf06,_0x164c8f={}){const _0x323abf=_0x3ee7d6;if(_0x411061===_0x323abf(0x906))return{'status':_0x323abf(0x906),'message':''};if(_0x411061===_0x323abf(0x7e8))return{'status':'denied','message':_0x6bd395};if(_0x1dde94){const _0x42a7c0=await _0x1dde94;return{'status':_0x42a7c0,'message':_0x42a7c0===_0x323abf(0x906)?'':_0x6bd395};}const _0x2a0d7b=((async()=>{const _0x177315=_0x323abf;try{return await _0x489e47(_0x23bf06,_0x164c8f);}finally{_0x177315(0x6d6)!==_0x177315(0x6d6)?this['pendingStorageAckResolvers']['delete'](_0x376916):_0x1dde94=null;}})());_0x1dde94=_0x2a0d7b;const _0xdfa3d1=await _0x2a0d7b;return _0x411061=_0xdfa3d1,{'status':_0xdfa3d1,'message':_0xdfa3d1==='granted'?'':_0x6bd395};}var _0x6bd395=_0x3ee7d6(0x20a);async function _0x489e47(_0x3c5bc1,_0x3b4c92={}){const _0x3f6e63=_0x3ee7d6,_0x4e4688=_0x3b4c92[_0x3f6e63(0x300)]??_0xbe1507,_0xc59479=_0x3b4c92['rmFn']??_0x20f5c3,_0x4225bf=await _0x107894(_0x3c5bc1);if(_0x4225bf===null)return'denied';const _0x15d24c=_0x4964f8('/tmp','ceraph-permission-dryrun-'+process[_0x3f6e63(0x135)]+'-'+Date['now']()+'.mp4'),_0x379cb9=await _0x245602(_0x3f6e63(0x532),['-hide_banner','-f',_0x3f6e63(0x28e),_0x3f6e63(0x4dd),'30','-i',_0x4225bf+':',_0x3f6e63(0x285),'h264','-t','1','-y',_0x15d24c]);let _0x3369e8=![];if(_0x379cb9[_0x3f6e63(0x845)]===0x0){if('FHgTj'==='avbEi')_0x24ac63=_0xd23851(_0x2898b5,_0x346856,{'stdio':[_0x3f6e63(0x317),'pipe','pipe']});else try{const _0x790495=await _0x4e4688(_0x15d24c);_0x3369e8=_0x790495['size']>=_0x12e72e;}catch{_0x3369e8=![];}}return await _0xc59479(_0x15d24c,{'force':!![]})['catch'](()=>void 0x0),_0x3369e8?'granted':'denied';}async function _0x245602(_0x2953b8,_0x37b931){return new Promise(_0x393c15=>{const _0x174fe1=_0x4a5a;let _0x4e3cec='',_0x345847='',_0xe0ce75;try{_0xe0ce75=_0xf33b5b['spawnFn'](_0x2953b8,_0x37b931,{'stdio':['ignore',_0x174fe1(0x406),_0x174fe1(0x406)]});}catch(_0xe9bc96){if(_0x174fe1(0x94e)!==_0x174fe1(0x94e))return this['bootBuffer'][_0x174fe1(0x63b)]();else{_0x393c15({'code':0x7f,'stdout':'','stderr':_0xed8d43(_0xe9bc96)});return;}}const _0x11b3ab=setTimeout(()=>{const _0x56cb23=_0x174fe1;try{if(_0x56cb23(0x6e1)!==_0x56cb23(0x6e1))return{'status':_0x56cb23(0x33c),'path':_0x214172[_0x56cb23(0x4ff)],'shell':_0x19cf75['shell']};else _0xe0ce75[_0x56cb23(0x142)](_0x56cb23(0x57c));}catch{}},0x2710);_0x11b3ab[_0x174fe1(0x60e)]?.(),_0xe0ce75[_0x174fe1(0x91a)]?.['on']('data',_0x35468c=>{_0x4e3cec+=typeof _0x35468c==='string'?_0x35468c:_0x35468c['toString']();}),_0xe0ce75[_0x174fe1(0x870)]?.['on'](_0x174fe1(0x978),_0x27ba24=>{_0x345847+=typeof _0x27ba24==='string'?_0x27ba24:_0x27ba24['toString']();});let _0x4aa274=![];const _0x426c3c=_0x32ab3a=>{if(_0x4aa274)return;_0x4aa274=!![],clearTimeout(_0x11b3ab),_0x393c15({'code':_0x32ab3a,'stdout':_0x4e3cec,'stderr':_0x345847});};_0xe0ce75['on'](_0x174fe1(0x125),_0xa969cd=>{const _0x21530d=_0x174fe1;_0x345847+=_0xa969cd[_0x21530d(0x92e)]??String(_0xa969cd),_0x426c3c(0x7f);}),_0xe0ce75['on']('exit',_0x4a5a88=>{_0x426c3c(_0x4a5a88??0x1);});});}function _0xed8d43(_0x55d373){if(_0x55d373 instanceof Error)return _0x55d373['message'];return String(_0x55d373);}import{readdir as _0x12c1e6,readFile as _0x300b31,writeFile as _0x2565b4,mkdir as _0x4c9a37,stat as _0x1bf0f1}from'fs/promises';import{join as _0x268280,relative}from'path';var _0x9617c7=[_0x3ee7d6(0x63d),_0x3ee7d6(0x6bb),_0x3ee7d6(0x287),_0x3ee7d6(0x9b8),_0x3ee7d6(0x5c4)],_0x42f8bb=_0x3ee7d6(0x79b),_0x4ae0da=_0x268280('.ceraph','camera-images');function _0xc7374d(_0x32244c){return _0x9617c7['includes'](_0x32244c);}function _0x2b67a2(_0x2988ce){return _0x9617c7['indexOf'](_0x2988ce);}function _0x38c406(_0xbcf04b){const _0xddcceb=_0x3ee7d6,_0x4e3feb=_0xbcf04b[_0xddcceb(0x64b)]('.');if(_0x4e3feb<=0x0)return null;const _0x45b1a9=_0xbcf04b['slice'](0x0,_0x4e3feb),_0x32e191=_0xbcf04b['slice'](_0x4e3feb)['toLowerCase']();if(!_0xc7374d(_0x32e191))return null;if(_0x45b1a9[_0xddcceb(0x945)]===0x0)return null;return{'stem':_0x45b1a9,'ext':_0x32e191};}function _0x42fc5d(_0x2cf049){const _0xfb7d08=_0x3ee7d6,_0x2fc8f1=_0xfb7d08(0x63c);if(_0x2cf049[_0xfb7d08(0x945)]===0x0)return _0x2fc8f1+_0xfb7d08(0x204);const _0x81588e=Math['max'](..._0x2cf049['map'](_0xa6a8e2=>_0xa6a8e2[_0xfb7d08(0x2fe)]['length']+0x2)),_0x4d8285=_0x2cf049[_0xfb7d08(0x986)](_0x17ff60=>{const _0x6ba9a9=_0xfb7d08,_0x430ceb='\x22'+_0x17ff60[_0x6ba9a9(0x2fe)]+'\x22,',_0x22d25f=_0x430ceb['padEnd'](_0x81588e+0x1,'\x20');return _0x6ba9a9(0x975)+_0x22d25f+'\x20require(\x22'+_0x17ff60['relativePath']+_0x6ba9a9(0x5cd);});return _0x2fc8f1+_0x4d8285[_0xfb7d08(0x221)]('\x0a')+_0xfb7d08(0x409);}async function _0x280e91(_0x5064d2){const _0x583714=_0x3ee7d6,_0x1e66db=_0x268280(_0x5064d2,_0x4ae0da),_0x328568=_0x268280(_0x1e66db,_0x42f8bb);let _0x31173c;try{const _0x52885e=await _0x1bf0f1(_0x1e66db);if(!_0x52885e[_0x583714(0x42a)]())return{'registered':[],'registryPath':_0x328568,'writtenOrUnchanged':_0x583714(0xd4)};_0x31173c=await _0x12c1e6(_0x1e66db);}catch{return{'registered':[],'registryPath':_0x328568,'writtenOrUnchanged':'missing-dir'};}const _0x3b12c0=new Map();for(const _0x44582c of _0x31173c){if(_0x44582c===_0x42f8bb)continue;if(_0x44582c[_0x583714(0x887)]('_')||_0x44582c['startsWith']('.'))continue;if(_0x44582c==='README.md')continue;const _0x4573de=_0x38c406(_0x44582c);if(!_0x4573de)continue;const _0x34fa4f={'key':_0x4573de[_0x583714(0x8b0)],'relativePath':'./'+_0x44582c,'ext':_0x4573de['ext']},_0x15a3fb=_0x3b12c0[_0x583714(0x47a)](_0x4573de[_0x583714(0x8b0)]);if(!_0x15a3fb){_0x3b12c0['set'](_0x4573de[_0x583714(0x8b0)],_0x34fa4f);continue;}_0x2b67a2(_0x34fa4f['ext'])<_0x2b67a2(_0x15a3fb['ext'])&&_0x3b12c0[_0x583714(0x3b6)](_0x4573de['stem'],_0x34fa4f);}const _0x497bbb=Array[_0x583714(0x70f)](_0x3b12c0['values']())[_0x583714(0x837)]((_0x49c81d,_0x456c57)=>_0x49c81d['key']<_0x456c57['key']?-0x1:_0x49c81d['key']>_0x456c57[_0x583714(0x2fe)]?0x1:0x0),_0x3d402f=_0x42fc5d(_0x497bbb);let _0x5a6143=null;try{_0x5a6143=await _0x300b31(_0x328568,'utf-8');}catch{_0x5a6143=null;}if(_0x5a6143===_0x3d402f)return{'registered':_0x497bbb,'registryPath':_0x328568,'writtenOrUnchanged':_0x583714(0x237)};return await _0x4c9a37(_0x1e66db,{'recursive':!![]}),await _0x2565b4(_0x328568,_0x3d402f,'utf-8'),{'registered':_0x497bbb,'registryPath':_0x328568,'writtenOrUnchanged':'written'};}function _0x10fa2a(_0x2cefda,_0x4bba2a){const _0x4aa769=_0x3ee7d6,_0x28533c=relative(_0x2cefda,_0x4bba2a);return _0x28533c[_0x4aa769(0x945)]>0x0?_0x28533c:_0x4bba2a;}import{spawn as _0x354511}from'child_process';import{access as _0x186b88}from'fs/promises';import{join as _0x1ff969}from'path';import{spawn as _0x5b7712}from'child_process';import{createRequire}from'module';import{createServer}from'net';import{dirname as _0xc9a579,join as _0x1829fe}from'path';async function _0x3cb15c(){return new Promise((_0x5570c6,_0xe542f3)=>{const _0x2fee0b=_0x4a5a,_0xb0eb79=createServer();_0xb0eb79['once']('error',_0xe542f3),_0xb0eb79[_0x2fee0b(0x966)](0x0,_0x2fee0b(0x176),()=>{const _0x7905f1=_0x2fee0b,_0x557eff=_0xb0eb79[_0x7905f1(0x26c)]();if(_0x557eff&&typeof _0x557eff===_0x7905f1(0x5ab)){const _0x4bcba5=_0x557eff['port'];_0xb0eb79[_0x7905f1(0x4ae)](()=>_0x5570c6(_0x4bcba5));}else _0xb0eb79['close'](()=>_0xe542f3(new Error(_0x7905f1(0x922))));});});}function _0x430809(_0x3171d9){const _0x5781af=_0x3ee7d6,_0x250d86=_0x222bba=>{const _0x3b3cda=_0x4a5a;try{const _0x3e1850=createRequire(_0x222bba),_0x26da44=_0x3e1850['resolve']('appium-webdriveragent/package.json'),_0xa89dde=_0xc9a579(_0x26da44);return _0x1829fe(_0xa89dde,_0x3b3cda(0x3d8));}catch{return null;}};if(_0x3171d9){if(_0x5781af(0x3dd)===_0x5781af(0x3dd)){const _0x4f07aa=_0x250d86(new URL(_0x5781af(0x833),'file://'+(_0x3171d9['endsWith']('/')?_0x3171d9:_0x3171d9+'/')));if(_0x4f07aa)return _0x4f07aa;}else{const _0x2d546c=_0x34632b??_0x505822;if(_0x300d62[_0x5781af(0x91a)][_0x5781af(0x97d)]!==!![]||_0x1982a2[_0x5781af(0x870)]['isTTY']!==!![])return _0x2d546c;return'\x1b]8;;'+_0x442820+'\x07'+_0x2d546c+'\x1b]8;;\x07';}}return _0x250d86(import.meta.url);}async function _0x20df2b(_0xa649ed){const _0x16ba50=_0x3ee7d6,_0x4a0ef3=_0x430809(_0xa649ed['projectDir']);if(!_0x4a0ef3)return{'ok':![],'reason':_0x16ba50(0x629),'error':_0x16ba50(0x4f6)};const _0x5768da=await _0x333689('xcodebuild');if(!_0x5768da)return{'ok':![],'reason':'xcodebuild-missing','error':'`xcodebuild`\x20not\x20found\x20on\x20PATH.\x20Install\x20Xcode\x20(full\x20app,\x20not\x20just\x20Command\x20Line\x20Tools)\x20and\x20accept\x20the\x20license:\x20`sudo\x20xcodebuild\x20-license\x20accept`.'};await _0x3d4f94(_0xa649ed['udid']);const _0x34d0a2=[_0x16ba50(0x364),_0x16ba50(0x677),_0x4a0ef3,_0x16ba50(0x42c),'WebDriverAgentRunner',_0x16ba50(0x244),_0x16ba50(0x359)+_0xa649ed[_0x16ba50(0x737)]];_0xa649ed['derivedDataPath']&&_0x34d0a2[_0x16ba50(0x496)]('-derivedDataPath',_0xa649ed['derivedDataPath']);_0x34d0a2[_0x16ba50(0x496)](_0x16ba50(0x6a2));const _0x316223=await _0x3cb15c();let _0x4974ef;try{_0x4974ef=_0x5b7712(_0x16ba50(0x5d4),_0x34d0a2,{'stdio':[_0x16ba50(0x317),'pipe',_0x16ba50(0x406)],'env':{...process.env,'TEST_RUNNER_USE_PORT':String(_0x316223)}});}catch(_0x1dad86){return{'ok':![],'reason':_0x16ba50(0x554),'error':'Failed\x20to\x20spawn\x20xcodebuild:\x20'+(_0x1dad86 instanceof Error?_0x1dad86['message']:String(_0x1dad86))};}try{_0xa649ed[_0x16ba50(0x50f)]?.(_0x4974ef);}catch(_0x2538f0){try{_0x4974ef['kill']('SIGTERM');}catch{}return{'ok':![],'reason':_0x16ba50(0x554),'error':_0x16ba50(0x1b5)+(_0x2538f0 instanceof Error?_0x2538f0['message']:String(_0x2538f0))};}const _0x19284b=[],_0x30960e=_0x363a57=>{const _0x504dbb=_0x16ba50;for(const _0x4b74b4 of _0x363a57['split']('\x0a')){if(!_0x4b74b4[_0x504dbb(0x5da)]())continue;_0x19284b['push'](_0x4b74b4);if(_0x19284b[_0x504dbb(0x945)]>0xc8)_0x19284b[_0x504dbb(0x936)]();}};let _0x281102=null;const _0x244144=_0x391af6=>{if(_0x281102!==null)return;const _0x427327=_0x31da21(_0x19284b['join']('\x0a')+'\x0a'+_0x391af6);if(_0x427327!==null)_0x281102=_0x427327;};_0x4974ef[_0x16ba50(0x91a)]?.['on']('data',_0x36beac=>{const _0x100c00=_0x16ba50;if('IHBFK'===_0x100c00(0x549))return![];else{const _0x4f72c6=_0x36beac[_0x100c00(0x510)]();_0x30960e(_0x4f72c6),_0x244144(_0x4f72c6);}}),_0x4974ef['stderr']?.['on']('data',_0x280648=>{const _0x23b0e4=_0x280648['toString']();_0x30960e(_0x23b0e4),_0x244144(_0x23b0e4);});let _0x4b13fd=![],_0x4fabf1=null;_0x4974ef['on'](_0x16ba50(0x41e),_0x25311c=>{_0x4b13fd=!![],_0x4fabf1=_0x25311c;});const _0x725e61=_0xa649ed['startupTimeoutMs']??0x668a0,_0x1c265a=0xfa,_0x110763=Date[_0x16ba50(0x3d1)]();while(Date['now']()-_0x110763<_0x725e61){if(_0x281102!==null)break;if(_0x4b13fd)break;await new Promise(_0x16e495=>setTimeout(_0x16e495,_0x1c265a));}if(_0x281102!==null&&!_0x4b13fd){const _0x3bc526=_0x281102;return{'ok':!![],'session':_0x1d42dd({'port':_0x3bc526,'udid':_0xa649ed['udid'],'projectPath':_0x4a0ef3,'child':_0x4974ef,'output':_0x19284b})};}if(_0x281102!==null&&_0x4b13fd)return{'ok':![],'reason':_0x16ba50(0x824),'error':_0x16ba50(0x367)+_0x4fabf1+_0x16ba50(0x6dd),'output':_0x19284b[_0x16ba50(0x63b)](-0x14)};try{_0x4974ef[_0x16ba50(0x142)]('SIGTERM');}catch{}if(_0x4b13fd){if('WcGGh'!=='WcGGh')_0x1f92fa(_0x2df7ac[_0x16ba50(0x58a)]??null),_0x8ab67(_0x256638['extendedCatalog']??null);else return{'ok':![],'reason':_0x16ba50(0x824),'error':'xcodebuild\x20exited\x20with\x20code\x20'+_0x4fabf1+_0x16ba50(0x68c)+_0x4a0ef3+_0x16ba50(0x6ce),'output':_0x19284b['slice'](-0x14)};}return{'ok':![],'reason':_0x16ba50(0x52c),'error':_0x16ba50(0x23d)+Math['round'](_0x725e61/0x3e8)+'s\x20without\x20coming\x20up\x20(no\x20`ServerURLHere->...<-ServerURLHere`\x20marker).\x20This\x20is\x20almost\x20always\x20a\x20cold\x20first\x20build\x20that\x27s\x20still\x20compiling\x20—\x20it\x20can\x20take\x20a\x20few\x20minutes.\x20The\x20compiled\x20output\x20is\x20cached\x20under\x20the\x20project\x27s\x20derivedData,\x20so\x20simply\x20retrying\x20usually\x20succeeds\x20(the\x20next\x20build\x20is\x20incremental).\x20If\x20retries\x20keep\x20timing\x20out,\x20build\x20the\x20runner\x20once\x20in\x20Xcode\x20to\x20surface\x20any\x20setup\x20prompt\x20(`open\x20\x22'+_0x4a0ef3+'\x22`,\x20scheme\x20WebDriverAgentRunner).\x20Last\x2020\x20lines\x20of\x20xcodebuild\x20output\x20below.','output':_0x19284b[_0x16ba50(0x63b)](-0x14)};}function _0x1d42dd(_0x52af64){const _0x31207f=_0x3ee7d6;let _0x263070=![];const _0x5df345=async()=>{const _0x429007=_0x4a5a;if(_0x263070)return;_0x263070=!![];if(_0x52af64[_0x429007(0x91b)]['exitCode']!==null)return;try{_0x52af64[_0x429007(0x91b)][_0x429007(0x142)](_0x429007(0x465));}catch{return;}await new Promise(_0x3afd2f=>{const _0x3d0462=_0x429007;let _0x57dca2=![];const _0x338923=()=>{if(_0x57dca2)return;_0x57dca2=!![],_0x3afd2f();};_0x52af64[_0x3d0462(0x91b)]['once']('exit',_0x338923);if(_0x52af64['child']['exitCode']!==null){_0x52af64['child']['off'](_0x3d0462(0x41e),_0x338923),_0x57dca2=!![],_0x3afd2f();return;}setTimeout(()=>{const _0x3be66c=_0x3d0462;if(_0x57dca2)return;try{if(_0x3be66c(0x851)!=='FHOee'){if(_0x54b735[_0x3be66c(0x83f)](_0x3be66c(0x34e)))return'Text';if(_0x78c2a2[_0x3be66c(0x83f)](_0x3be66c(0x438)))return _0x3be66c(0x438);if(_0x2f5229[_0x3be66c(0x83f)]('Button'))return'Button';if(_0x157b6a[_0x3be66c(0x83f)]('TextField')||_0x2a8f9d['includes'](_0x3be66c(0x79e)))return'Input';return _0x3be66c(0x8a3);}else _0x52af64['child'][_0x3be66c(0x142)](_0x3be66c(0x57c));}catch{}setTimeout(()=>{const _0x1012c2=_0x3be66c;if(_0x57dca2)return;_0x52af64['child']['off'](_0x1012c2(0x41e),_0x338923),_0x57dca2=!![],_0x3afd2f();},0x7d0);},0x1388);});};return{'port':_0x52af64[_0x31207f(0x688)],'udid':_0x52af64[_0x31207f(0x737)],'projectPath':_0x52af64[_0x31207f(0x139)],'process':_0x52af64[_0x31207f(0x91b)],'output':_0x52af64[_0x31207f(0x177)],'stop':_0x5df345};}async function _0x333689(_0x453233){return new Promise(_0x2dc9bb=>{const _0x58d819=_0x4a5a;let _0x4e27f4;try{_0x4e27f4=_0x5b7712(_0x58d819(0x427),[_0x453233],{'stdio':[_0x58d819(0x317),'pipe','pipe']});}catch{_0x2dc9bb(![]);return;}let _0x2675e9='';_0x4e27f4['stdout']?.['on']('data',_0x408548=>{const _0x477caf=_0x58d819;_0x2675e9+=_0x408548[_0x477caf(0x510)]();}),_0x4e27f4['on'](_0x58d819(0x125),()=>_0x2dc9bb(![])),_0x4e27f4['on']('exit',_0x40c6e0=>_0x2dc9bb(_0x40c6e0===0x0&&_0x2675e9[_0x58d819(0x5da)]()[_0x58d819(0x945)]>0x0));});}async function _0x3d4f94(_0x43d57c,_0x3abfa4={}){const _0x1feaff=_0x3ee7d6,_0x411884=_0x3abfa4['timeoutMs']??0x15f90,_0x91f9a=_0x3abfa4[_0x1feaff(0x9ab)]??_0x5b7712;await new Promise(_0x1864e6=>{const _0x5afd58=_0x1feaff;let _0x1342f5,_0x1d9340=![];const _0x65eeb3=()=>{if(_0x1d9340)return;_0x1d9340=!![],clearTimeout(_0x2f0438),_0x1864e6();},_0x2f0438=setTimeout(()=>{const _0x154633=_0x4a5a;try{_0x1342f5?.[_0x154633(0x142)](_0x154633(0x57c));}catch{}_0x65eeb3();},_0x411884);try{_0x1342f5=_0x91f9a('xcrun',['simctl','bootstatus',_0x43d57c,'-b'],{'stdio':[_0x5afd58(0x317),'ignore','ignore']});}catch{_0x65eeb3();return;}_0x1342f5['on'](_0x5afd58(0x125),()=>_0x65eeb3()),_0x1342f5['on'](_0x5afd58(0x41e),()=>_0x65eeb3());});}var _0x409902='appium-webdriveragent',_0x40ffb8=[{'file':'pnpm-lock.yaml','pm':'pnpm'},{'file':'yarn.lock','pm':_0x3ee7d6(0x18b)},{'file':'bun.lockb','pm':_0x3ee7d6(0x307)},{'file':_0x3ee7d6(0x3c5),'pm':_0x3ee7d6(0x307)},{'file':'package-lock.json','pm':_0x3ee7d6(0x38f)}];function _0x429af3(_0xd8ba34){const _0x407c9f=_0x3ee7d6;switch(_0xd8ba34){case _0x407c9f(0x38f):return{'bin':_0x407c9f(0x38f),'args':[_0x407c9f(0x18f),'-D',_0x409902]};case _0x407c9f(0x16e):return{'bin':'pnpm','args':[_0x407c9f(0x5c1),'-D',_0x409902]};case'yarn':return{'bin':'yarn','args':['add','-D',_0x409902]};case'bun':return{'bin':_0x407c9f(0x307),'args':[_0x407c9f(0x5c1),'-D',_0x409902]};}}function _0x40edd1(_0x5ca886){return _0x430809(_0x5ca886)!==null;}async function _0x8573fb(_0xabdd6d){try{return await _0x186b88(_0xabdd6d),!![];}catch{return![];}}async function _0x45f4cc(_0x5eeea0){const _0x168e71=_0x3ee7d6;for(const {file:_0x16809d,pm:_0x44f0e4}of _0x40ffb8){if(await _0x8573fb(_0x1ff969(_0x5eeea0,_0x16809d)))return _0x44f0e4;}return _0x168e71(0x38f);}function _0xc2b902(_0x12cdf3,_0x159fb7){const {bin:_0x9ac5f8,args:_0x3776e5}=_0x429af3(_0x12cdf3),_0x328698=0x5*0xea60;return new Promise(_0x526d94=>{const _0x38e838=_0x4a5a;let _0x56998d;try{if('FUAmz'!==_0x38e838(0x2e7))return _0x25f208(_0x38e838(0x643),_0x1f4b22);else _0x56998d=_0x354511(_0x9ac5f8,_0x3776e5,{'cwd':_0x159fb7,'stdio':[_0x38e838(0x317),0x2,0x2]});}catch(_0x10a0f7){_0x526d94({'ok':![],'error':_0x38e838(0x5cc)+_0x9ac5f8+':\x20'+(_0x10a0f7 instanceof Error?_0x10a0f7[_0x38e838(0x92e)]:String(_0x10a0f7))});return;}let _0x4acda8=![];const _0x25f51b=_0x149976=>{if(_0x4acda8)return;_0x4acda8=!![],clearTimeout(_0x105e72),_0x526d94(_0x149976);},_0x105e72=setTimeout(()=>{const _0x13736a=_0x38e838;if(_0x13736a(0x758)==='DYngs'){try{_0x56998d['kill'](_0x13736a(0x57c));}catch{}_0x25f51b({'ok':![],'error':'`'+_0x9ac5f8+'\x20'+_0x3776e5[_0x13736a(0x221)]('\x20')+'`\x20timed\x20out\x20after\x20'+_0x328698/0xea60+'min.'});}else return _0x2ccc43['addNamedImport'](_0xfcb02),!![];},_0x328698);_0x56998d['on']('error',_0x172c8c=>_0x25f51b({'ok':![],'error':'`'+_0x9ac5f8+'\x20'+_0x3776e5['join']('\x20')+'`\x20failed\x20to\x20run:\x20'+_0x172c8c[_0x38e838(0x92e)]})),_0x56998d['on']('exit',_0x299c2e=>{const _0x43de43=_0x38e838;_0x299c2e===0x0?_0x25f51b({'ok':!![]}):_0x25f51b({'ok':![],'error':'`'+_0x9ac5f8+'\x20'+_0x3776e5['join']('\x20')+_0x43de43(0x2b6)+(_0x299c2e??0x1)+'.'});});});}async function _0xf66b1c(_0x244e4b,_0x52e6db={}){const _0xe06fcc=_0x3ee7d6,_0x46a603=_0x52e6db[_0xe06fcc(0xe6)]??_0x40edd1,_0x38150a=_0x52e6db[_0xe06fcc(0x1a0)]??_0x45f4cc,_0x29e838=_0x52e6db['runInstall']??_0xc2b902,_0xf10721=_0x52e6db['log'];try{if(_0xe06fcc(0x2ec)===_0xe06fcc(0x2ec)){if(_0x46a603(_0x244e4b))return{'status':'present'};_0xf10721?.('Installing\x20appium-webdriveragent\x20for\x20simulator\x20support\x20(one-time,\x20~200MB)…');const _0x6f00ac=await _0x38150a(_0x244e4b),_0x482858=await _0x29e838(_0x6f00ac,_0x244e4b);if(_0x46a603(_0x244e4b))return{'status':_0xe06fcc(0x7df)};return{'status':'install-failed','error':_0x482858[_0xe06fcc(0x125)]??'appium-webdriveragent\x20still\x20isn\x27t\x20resolvable\x20after\x20`'+_0x429af3(_0x6f00ac)[_0xe06fcc(0x366)]+'\x20'+_0x429af3(_0x6f00ac)[_0xe06fcc(0x719)]['join']('\x20')+'`.'};}else{const _0x496383=new _0x16b52d({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1},'manipulationSettings':{'indentationText':_0x54bc98['TwoSpaces']}});for(const _0x30711e of _0x2ec8b6){try{_0x496383[_0xe06fcc(0x5bd)](_0x30711e);}catch{}}return _0x496383;}}catch(_0x1ec306){return{'status':'install-failed','error':_0x1ec306 instanceof Error?_0x1ec306[_0xe06fcc(0x92e)]:String(_0x1ec306)};}}function _0x546161(_0x4e62d9,_0x4e9cee,_0x313919=0xfa0){return new Promise(_0x10b99a=>{const _0x42158d=_0x4a5a;let _0x428c35='',_0x23b5fb='',_0x506517;try{'TPdcL'!=='lRAyO'?_0x506517=_0x38bbff(_0x4e62d9,_0x4e9cee,{'stdio':[_0x42158d(0x317),'pipe','pipe']}):_0x5f03a5[_0x42158d(0x496)](_0x5896e3['remediation']);}catch(_0x415c05){_0x10b99a({'code':0x7f,'stdout':'','stderr':_0x415c05 instanceof Error?_0x415c05[_0x42158d(0x92e)]:String(_0x415c05)});return;}const _0x332eb7=setTimeout(()=>{try{_0x506517['kill']('SIGKILL');}catch{}},_0x313919);_0x506517[_0x42158d(0x91a)]?.['on'](_0x42158d(0x978),_0x4522b5=>{const _0x3c6c12=_0x42158d;if('WzbJr'!=='WzbJr'){const _0xf2eb24=(_0x310c7a??'')['trim']()['toLowerCase']();if(_0xf2eb24===_0x3c6c12(0x931))return'device';if(_0xf2eb24===_0x3c6c12(0x21f)||_0xf2eb24===_0x3c6c12(0x228))return _0x3c6c12(0x21f);return _0x3c6c12(0x4fa);}else _0x428c35+=_0x4522b5['toString']();}),_0x506517[_0x42158d(0x870)]?.['on']('data',_0x3e43aa=>{const _0x9f0cf0=_0x42158d;'Tkwrl'==='Tkwrl'?_0x23b5fb+=_0x3e43aa['toString']():_0x593512['returns']['toggleMethod']=_0x11103f[_0x9f0cf0(0x1c6)];});let _0x3a9f54=![];_0x506517['on']('error',_0x399f5c=>{const _0x53f17e=_0x42158d;if(_0x3a9f54)return;_0x3a9f54=!![],clearTimeout(_0x332eb7),_0x10b99a({'code':0x7f,'stdout':_0x428c35,'stderr':_0x23b5fb+(_0x399f5c[_0x53f17e(0x92e)]??String(_0x399f5c))});}),_0x506517['on']('exit',_0x479657=>{if(_0x3a9f54)return;_0x3a9f54=!![],clearTimeout(_0x332eb7),_0x10b99a({'code':_0x479657??0x1,'stdout':_0x428c35,'stderr':_0x23b5fb});});});}async function _0x39ec70(_0x46b7a7,_0x2a6995,_0x100a07){const _0xb9ac04=_0x3ee7d6;try{if(_0xb9ac04(0x5ff)===_0xb9ac04(0x859))return _0x5c9e31(_0xb9ac04(0x6c0),_0x1fe778);else{const _0x2f3d61=await _0x100a07();return{'name':_0x46b7a7,..._0x2f3d61};}}catch(_0x25df04){return{'name':_0x46b7a7,'ok':![],'severity':_0x2a6995,'message':_0x25df04 instanceof Error?_0x25df04['message']:String(_0x25df04)};}}async function _0x4a7456(_0x3e4e13,_0x5939af){const _0x292ea6=_0x3ee7d6,_0x291344=Date['now']()+_0x5939af['timeoutMs'];try{if(await _0x3e4e13())return!![];}catch{}while(Date[_0x292ea6(0x3d1)]()<_0x291344){await new Promise(_0x91f72e=>setTimeout(_0x91f72e,_0x5939af['intervalMs']));try{if(await _0x3e4e13())return!![];}catch{}}return![];}async function _0x32111e(){const _0x1faab2=_0x3ee7d6,_0x577d90=await _0x546161(_0x1faab2(0x913),['-getairportnetwork','en0']);if(_0x577d90[_0x1faab2(0x845)]!==0x0)return null;const _0x33949f=_0x577d90['stdout']['match'](/Current Wi-Fi Network:\s*(.+)$/m);if(!_0x33949f)return null;const _0x566a57=_0x33949f[0x1]['trim']();if(!_0x566a57||_0x566a57['toLowerCase']()[_0x1faab2(0x83f)](_0x1faab2(0x100)))return null;return _0x566a57;}async function _0x58ec2c(){const _0x41f992=_0x3ee7d6,_0x562f13=await _0x546161(_0x41f992(0x872),[_0x41f992(0x8e4),'en0']);if(_0x562f13['code']!==0x0)return null;const _0x15ebea=_0x562f13['stdout'][_0x41f992(0x5da)]();return _0x15ebea[_0x41f992(0x945)]>0x0?_0x15ebea:null;}var _0x9994a4=[_0x3ee7d6(0x44c),'src',_0x3ee7d6(0x471)],_0x3284ea=new Set(['.tsx','.jsx']),_0x450b60=new Set(['node_modules',_0x3ee7d6(0x166),'build','.git','.ceraph','.expo',_0x3ee7d6(0x325),'ios','android']);async function _0x2d9d73(_0x43a234){const _0x5b0c62=[];async function _0x2d05c7(_0x501948){const _0x9a9b7d=_0x4a5a;let _0x42b0dd;try{_0x42b0dd=await _0x93f4d(_0x501948,{'withFileTypes':!![]});}catch{return;}for(const _0x3ff66c of _0x42b0dd){const _0x5221ea=_0x12b4ee(_0x501948,_0x3ff66c['name']);if(_0x3ff66c[_0x9a9b7d(0x42a)]()){if(_0x450b60['has'](_0x3ff66c['name']))continue;await _0x2d05c7(_0x5221ea);continue;}if(!_0x3ff66c['isFile']())continue;const _0x6de911=_0x3ff66c['name'][_0x9a9b7d(0x64b)]('.');if(_0x6de911<0x0)continue;const _0x12cdc3=_0x3ff66c['name'][_0x9a9b7d(0x63b)](_0x6de911)['toLowerCase']();if(!_0x3284ea['has'](_0x12cdc3))continue;let _0x45fb69;try{_0x45fb69=await _0x44a1ca(_0x5221ea,'utf-8');}catch{continue;}const _0x5d7a73=_0x140207(_0x43a234,_0x5221ea)['split'](sep)[_0x9a9b7d(0x221)]('/');_0x5b0c62[_0x9a9b7d(0x496)]({'absPath':_0x5221ea,'relPath':_0x5d7a73,'contents':_0x45fb69});}}for(const _0x81ece4 of _0x9994a4){await _0x2d05c7(_0x12b4ee(_0x43a234,_0x81ece4));}return _0x5b0c62;}function _0x151e33(_0x1af6aa,_0xd85dea){const _0x459ba4=_0x3ee7d6,_0x46eebb=[],_0x252787=_0x1af6aa['contents'],_0x257d24=_0xd85dea['replace'](/[.*+?^${}()|[\]\\]/g,'\x5c$&'),_0x5ac854=new RegExp('<'+_0x257d24+_0x459ba4(0x9c5),'g');let _0x271aaf;while((_0x271aaf=_0x5ac854[_0x459ba4(0x66c)](_0x252787))!==null){const _0x5edd5d=_0x271aaf['index'],_0x1f8419=_0x41d46c(_0x252787,_0x5edd5d+_0x271aaf[0x0][_0x459ba4(0x945)]);if(_0x1f8419===-0x1)continue;const _0x471606=_0x252787['slice'](_0x5edd5d,_0x1f8419+0x1),_0x3427fd=_0x252787[_0x459ba4(0x63b)](0x0,_0x5edd5d),_0x255647=(_0x3427fd[_0x459ba4(0x678)](/\n/g)?.[_0x459ba4(0x945)]??0x0)+0x1;_0x46eebb[_0x459ba4(0x496)]({'file':_0x1af6aa,'line':_0x255647,'openingTag':_0x471606});}return _0x46eebb;}function _0x41d46c(_0x2fa832,_0x42effb){const _0x47d9b9=_0x3ee7d6;let _0x3ecac4=0x0,_0x5258c8=![],_0x2c6972=![],_0x3fb850=![];for(let _0x536195=_0x42effb;_0x536195<_0x2fa832[_0x47d9b9(0x945)];_0x536195++){const _0x5364a4=_0x2fa832[_0x536195];if(_0x5258c8){if(_0x5364a4==='\x22'&&!_0x1f40cc(_0x2fa832,_0x536195))_0x5258c8=![];continue;}if(_0x2c6972){if(_0x5364a4==='\x27'&&!_0x1f40cc(_0x2fa832,_0x536195))_0x2c6972=![];continue;}if(_0x3fb850){if(_0x5364a4==='`'&&!_0x1f40cc(_0x2fa832,_0x536195))_0x3fb850=![];continue;}if(_0x5364a4==='\x22'){_0x5258c8=!![];continue;}if(_0x5364a4==='\x27'){_0x2c6972=!![];continue;}if(_0x5364a4==='`'){_0x3fb850=!![];continue;}if(_0x5364a4==='{'){_0x3ecac4++;continue;}if(_0x5364a4==='}'){_0x3ecac4=Math[_0x47d9b9(0x4da)](0x0,_0x3ecac4-0x1);continue;}if(_0x3ecac4===0x0&&_0x5364a4==='>')return _0x536195;}return-0x1;}function _0x1f40cc(_0x13fc08,_0x4a1964){let _0x51d923=0x0,_0x3e20bc=_0x4a1964-0x1;while(_0x3e20bc>=0x0&&_0x13fc08[_0x3e20bc]==='\x5c'){_0x51d923++,_0x3e20bc--;}return _0x51d923%0x2===0x1;}function _0x483258(_0x31b11d){const _0x4117b9=_0x3ee7d6,_0x4bd548=_0x31b11d['replace'](/\.(tsx|jsx)$/i,''),_0xa1c893=_0x4bd548[_0x4117b9(0x814)](/[\\/]/)['filter'](_0x9e5a56=>_0x9e5a56['length']>0x0);if(_0xa1c893[_0x4117b9(0x945)]===0x0)return'camera';const _0x5b0330=_0xa1c893[_0xa1c893['length']-0x1],_0xbcd0ce=_0xa1c893['length']>0x1?_0xa1c893[_0xa1c893[_0x4117b9(0x945)]-0x2]:_0x5b0330,_0x3babf3=new Set(['page','index',_0x4117b9(0x5e9),'route','layout']),_0x532128=_0x3babf3['has'](_0x5b0330[_0x4117b9(0x17e)]())?_0xbcd0ce:_0x5b0330,_0x1a3222=_0x532128[_0x4117b9(0x27d)](/([a-z0-9])([A-Z])/g,_0x4117b9(0x12d))[_0x4117b9(0x17e)]()[_0x4117b9(0x27d)](/[^a-z0-9]+/g,'-')['replace'](/^-+|-+$/g,'');return _0x1a3222[_0x4117b9(0x945)]>0x0?_0x1a3222:'camera';}function _0x415056(_0x27dfea){const _0x1a17fa=_0x3ee7d6,_0x38ee41=/import\s*\{([^}]*)\}\s*from\s*["']expo-camera["']/g;let _0x5e1d2a;while((_0x5e1d2a=_0x38ee41[_0x1a17fa(0x66c)](_0x27dfea))!==null){const _0x18020e=_0x5e1d2a[0x1][_0x1a17fa(0x814)](',')['map'](_0x1d467a=>_0x1d467a[_0x1a17fa(0x5da)]()[_0x1a17fa(0x814)](/\s+as\s+/)[0x0]['trim']());if(_0x18020e['includes']('CameraView'))return!![];}return![];}function _0x59f6ee(_0x478beb){const _0x35c5db=_0x3ee7d6,_0x2b2c0a='imageKey';let _0x15f08a=0x0,_0x3fd520=![],_0x580d04=![],_0x268a3a=![];for(let _0x16f744=0x0;_0x16f744<_0x478beb[_0x35c5db(0x945)];_0x16f744++){const _0x1c4efc=_0x478beb[_0x16f744];if(_0x3fd520){if(_0x1c4efc==='\x22'&&!_0x1f40cc(_0x478beb,_0x16f744))_0x3fd520=![];continue;}if(_0x580d04){if(_0x1c4efc==='\x27'&&!_0x1f40cc(_0x478beb,_0x16f744))_0x580d04=![];continue;}if(_0x268a3a){if(_0x1c4efc==='`'&&!_0x1f40cc(_0x478beb,_0x16f744))_0x268a3a=![];continue;}if(_0x1c4efc==='\x22'){_0x3fd520=!![];continue;}if(_0x1c4efc==='\x27'){_0x580d04=!![];continue;}if(_0x1c4efc==='`'){if('gBSzs'!==_0x35c5db(0x4ab))return!![];else{_0x268a3a=!![];continue;}}if(_0x1c4efc==='{'){_0x15f08a++;continue;}if(_0x1c4efc==='}'){_0x15f08a=Math[_0x35c5db(0x4da)](0x0,_0x15f08a-0x1);continue;}if(_0x15f08a!==0x0)continue;if(_0x1c4efc!=='i')continue;if(_0x478beb[_0x35c5db(0x506)](_0x16f744,_0x16f744+_0x2b2c0a['length'])!==_0x2b2c0a)continue;const _0x1431b4=_0x16f744===0x0?'\x20':_0x478beb[_0x16f744-0x1];if(/[A-Za-z0-9_$]/[_0x35c5db(0x364)](_0x1431b4))continue;const _0x2fefae=_0x478beb[_0x16f744+_0x2b2c0a['length']]??'';if(_0x2fefae!=='='&&!/\s/[_0x35c5db(0x364)](_0x2fefae))continue;let _0x2ea3ce=_0x16f744+_0x2b2c0a['length'];while(_0x2ea3ce<_0x478beb[_0x35c5db(0x945)]&&/\s/[_0x35c5db(0x364)](_0x478beb[_0x2ea3ce]))_0x2ea3ce++;if(_0x478beb[_0x2ea3ce]!=='='){_0x16f744=_0x2ea3ce-0x1;continue;}_0x2ea3ce++;while(_0x2ea3ce<_0x478beb[_0x35c5db(0x945)]&&/\s/[_0x35c5db(0x364)](_0x478beb[_0x2ea3ce]))_0x2ea3ce++;const _0x200a6c=_0x478beb[_0x2ea3ce];if(_0x200a6c==='\x22'||_0x200a6c==='\x27'){let _0x253996=_0x2ea3ce+0x1;while(_0x253996<_0x478beb['length']&&!(_0x478beb[_0x253996]===_0x200a6c&&!_0x1f40cc(_0x478beb,_0x253996))){_0x253996++;}const _0x2fb62b=_0x478beb[_0x35c5db(0x63b)](_0x2ea3ce+0x1,_0x253996);if(_0x2fb62b[_0x35c5db(0x5da)]()[_0x35c5db(0x945)]===0x0)return{'present':![]};return{'present':!![],'value':_0x2fb62b};}if(_0x200a6c==='{')return{'present':!![],'value':null};return{'present':![]};}return{'present':![]};}async function _0x3df3ac(_0x43d1f4){const _0x1b2a6c=_0x3ee7d6,{screen:_0x3ae88f,apps:_0x531c8b,autonomy:_0x530b2b,bundleId:_0xe20fee,requiredEnv:_0x18e466,expectedNetwork:_0x3ce1ec,projectDir:projectDir=process['cwd'](),target:_0x94e146,excludeRuntimeChecks:excludeRuntimeChecks=![],screenRecordingStatus:screenRecordingStatus=_0x3caa26,ensureAppium:ensureAppium=_0xf66b1c}=_0x43d1f4,_0x2b65d8=!excludeRuntimeChecks&&_0x94e146?await _0x94e146['resolve']()['catch'](()=>null):null,_0x186d08=_0x2b65d8?.[_0x1b2a6c(0x555)]==='simulator',_0x344dad=_0x280e91(projectDir),_0x218c1f=_0x344dad['then'](_0x54feac=>{const _0xc243e1=_0x1b2a6c;if(_0x54feac[_0xc243e1(0x969)]==='missing-dir')return{'name':'camera-registry-synced','ok':!![],'severity':'info','message':_0xc243e1(0x286)};return{'name':'camera-registry-synced','ok':!![],'severity':'info','message':'Camera\x20image\x20registry\x20'+_0x54feac[_0xc243e1(0x969)]+'\x20('+_0x54feac['registered'][_0xc243e1(0x945)]+'\x20image'+(_0x54feac[_0xc243e1(0x2d0)][_0xc243e1(0x945)]===0x1?'':'s')+')\x20at\x20'+_0x10fa2a(projectDir,_0x54feac['registryPath'])+'.','details':{'registered':_0x54feac[_0xc243e1(0x2d0)][_0xc243e1(0x986)](_0x34c248=>_0x34c248['key']),'state':_0x54feac['writtenOrUnchanged']}};},_0x63ccb5=>({'name':_0x1b2a6c(0x311),'ok':![],'severity':_0x1b2a6c(0x77d),'message':_0x1b2a6c(0x87e)+(_0x63ccb5 instanceof Error?_0x63ccb5[_0x1b2a6c(0x92e)]:String(_0x63ccb5))})),_0xdc6b32=_0x2d9d73(projectDir),_0x53361b=_0x39ec70('camera-views-unwrapped','warning',async()=>{const _0x22781c=_0x1b2a6c,_0x180c49=await _0xdc6b32,_0x56c61a=[];for(const _0x16ae86 of _0x180c49){if('HaGMU'===_0x22781c(0x158)){if(typeof _0x2b9604!=='number'||!_0x371140[_0x22781c(0x996)](_0x26c7df)||!_0x506067['isInteger'](_0x113f29)||_0x4a38c0<0x0||_0x28bdac>0xf4240)throw new _0x39b1ba('stepIndex\x20must\x20be\x20a\x20non-negative\x20integer\x20≤\x201000000\x20(got\x20'+_0x20a97c(_0x42cf6d)+').');return _0x504c6e;}else{if(!_0x415056(_0x16ae86[_0x22781c(0x2e2)]))continue;const _0x19d5fe=_0x151e33(_0x16ae86,_0x22781c(0x537));for(const _0xe94901 of _0x19d5fe){_0x56c61a['push'](_0xe94901['file'][_0x22781c(0x260)]+':'+_0xe94901['line']);}}}if(_0x56c61a['length']===0x0)return{'ok':!![],'severity':_0x22781c(0x77d),'message':_0x22781c(0x34a)};return{'ok':![],'severity':'warning','message':_0x22781c(0x8be)+_0x56c61a[_0x22781c(0x945)]+_0x22781c(0x5eb),'remediation':_0x22781c(0x664),'details':{'offenders':_0x56c61a}};}),_0x22392f=_0x39ec70('camera-imageKey-setup','info',async()=>{const _0x2f4966=_0x1b2a6c,_0x59bc8e=await _0xdc6b32,_0x3064df=[];for(const _0x5a77f0 of _0x59bc8e){const _0xc9d1e5=_0x151e33(_0x5a77f0,'CeraphCamera');for(const _0x3d3468 of _0xc9d1e5){if(_0x2f4966(0x253)==='kMfoW')return{'result':{'success':![],'error':'Failed\x20to\x20get\x20element\x20tree'},'tree':null};else{const _0x2c68d8=_0x59f6ee(_0x3d3468[_0x2f4966(0x73c)]);!_0x2c68d8[_0x2f4966(0x3ad)]&&_0x3064df['push']({'location':_0x3d3468[_0x2f4966(0x8f5)][_0x2f4966(0x260)]+':'+_0x3d3468[_0x2f4966(0xf5)],'file':_0x3d3468[_0x2f4966(0x8f5)][_0x2f4966(0x260)],'line':_0x3d3468['line'],'suggestedKey':_0x483258(_0x3d3468['file']['relPath'])});}}}if(_0x3064df[_0x2f4966(0x945)]===0x0)return{'ok':!![],'severity':'info','message':'All\x20<CeraphCamera>\x20components\x20have\x20an\x20explicit\x20imageKey\x20(or\x20use\x20a\x20runtime\x20sentinel).'};return{'ok':!![],'severity':'info','message':_0x3064df['length']+'\x20<CeraphCamera>\x20component'+(_0x3064df['length']===0x1?'':'s')+'\x20awaiting\x20imageKey\x20assignment\x20('+_0x3064df['map'](_0x1e9dde=>_0x1e9dde[_0x2f4966(0x7de)])['join'](',\x20')+').','remediation':'Ask\x20the\x20user\x20about\x20each\x20camera\x20screen\x20and\x20use\x20`ceraph_init_replace_camera`\x20to\x20set\x20the\x20imageKey.\x20Three\x20options\x20per\x20camera:\x20(A)\x20imageKey=\x22default\x22\x20—\x20bundled\x201024x1024\x20black\x20PNG.\x20Right\x20for\x20tests\x20that\x20don\x27t\x20care\x20about\x20image\x20content\x20(most\x20form/upload\x20flows).\x20(B)\x20imageKey=\x22<scenario>\x22\x20—\x20a\x20specific\x20test\x20image.\x20Drop\x20the\x20file\x20at\x20.ceraph/camera-images/<scenario>.{jpg,png,webp}\x20(use\x20`ceraph_add_camera_image`\x20to\x20write\x20it\x20programmatically)\x20and\x20re-run\x20`rn_sync_camera_registry`.\x20(C)\x20imageKey=\x22@runtime\x22\x20—\x20multi-image\x20flows\x20where\x20the\x20planner\x20picks\x20the\x20image\x20per-step\x20at\x20runtime;\x20the\x20shim\x20won\x27t\x20lock\x20the\x20camera\x20to\x20any\x20static\x20key.','details':{'uninitializedCameras':_0x3064df}};}),_0x5eea42=_0x39ec70('camera-image-key-orphan','error',async()=>{const _0x53c28c=_0x1b2a6c,[_0x2cd3c8,_0x35ca56]=await Promise['all']([_0x344dad,_0xdc6b32]),_0x4adb2f=new Set(_0x2cd3c8['registered'][_0x53c28c(0x986)](_0x30405b=>_0x30405b[_0x53c28c(0x2fe)])),_0x430f6f=[];for(const _0x8d7d31 of _0x35ca56){const _0x5a349c=_0x151e33(_0x8d7d31,'CeraphCamera');for(const _0x4e3783 of _0x5a349c){const _0x411de3=_0x59f6ee(_0x4e3783[_0x53c28c(0x73c)]);if(!_0x411de3['present'])continue;if(_0x411de3[_0x53c28c(0x84f)]===null)continue;if(_0x411de3['value']===_0x53c28c(0x33f))continue;if(_0x411de3['value'][_0x53c28c(0x887)]('@'))continue;!_0x4adb2f[_0x53c28c(0x21c)](_0x411de3[_0x53c28c(0x84f)])&&_0x430f6f[_0x53c28c(0x496)]({'location':_0x4e3783['file']['relPath']+':'+_0x4e3783['line'],'key':_0x411de3[_0x53c28c(0x84f)]});}}if(_0x430f6f[_0x53c28c(0x945)]===0x0)return{'ok':!![],'severity':'error','message':_0x53c28c(0x316)};const _0x1db4d2=_0x430f6f['map'](_0x4364f8=>_0x4364f8[_0x53c28c(0x7de)]+'\x20(imageKey=\x22'+_0x4364f8[_0x53c28c(0x2fe)]+'\x22)')[_0x53c28c(0x221)](';\x20');return{'ok':![],'severity':'error','message':'Found\x20'+_0x430f6f['length']+'\x20orphan\x20imageKey\x20reference(s):\x20'+_0x1db4d2+'.','remediation':'Add\x20the\x20matching\x20image\x20file\x20to\x20.ceraph/camera-images/\x20(e.g.\x20<key>.jpg)\x20and\x20re-run\x20`rn_sync_camera_registry`,\x20or\x20fix\x20the\x20imageKey\x20prop\x20value.','details':{'orphans':_0x430f6f}};}),_0x1c98e1=excludeRuntimeChecks?null:_0x94e146?Promise['resolve']({'name':_0x1b2a6c(0x894),'ok':!![],'severity':_0x1b2a6c(0x9bd),'message':_0x2b65d8?_0x1b2a6c(0x4a3)+_0x2b65d8['target']+'\x20('+_0x2b65d8['reason']+').\x20WDA\x20base\x20URL:\x20'+_0x2b65d8[_0x1b2a6c(0x3a9)]+(_0x2b65d8[_0x1b2a6c(0x737)]?';\x20udid\x20'+_0x2b65d8['udid']:''):_0x1b2a6c(0x402),'details':_0x2b65d8?{'target':_0x2b65d8[_0x1b2a6c(0x555)],'reason':_0x2b65d8[_0x1b2a6c(0x78c)],'baseUrl':_0x2b65d8[_0x1b2a6c(0x3a9)],'udid':_0x2b65d8['udid'],'preferenceEnv':process.env.CERAPH_TARGET??null}:void 0x0}):null,_0x5ddfb5=_0x1b2a6c(0x479),_0x23789c='Ensure\x20WebDriverAgent\x20is\x20running\x20on\x20the\x20device\x20(Xcode\x20→\x20run\x20WDA\x20target\x20on\x20your\x20iPhone,\x20or\x20check\x20`iproxy\x208100\x208100`).',_0x49d20e=_0x2b65d8?.['wdaReady']??!![],_0x80302a=_0x49d20e?_0x2b65d8?.['baseUrl']??'http://localhost:8100':null;let _0x4df06a,_0x16b146;if(excludeRuntimeChecks)_0x4df06a=null,_0x16b146=null;else{if(!_0x186d08&&_0x43d1f4['iproxyManager']){const _0x41cc19=_0x43d1f4['iproxyManager'],_0x2acce9=(async()=>{const _0x4dc608=_0x1b2a6c;let _0xe2a213=await _0x3ae88f['isAvailable'](),_0x46c261,_0x5f1eec=!![],_0x431276,_0x3345f0;if(_0xe2a213)_0x46c261=_0x4dc608(0x381);else{const _0x5b6f68=await _0x531c8b[_0x4dc608(0x29a)]()['catch'](()=>null);if(!_0x5b6f68)_0x5f1eec=![],_0x46c261='WDA\x20unreachable\x20and\x20no\x20iOS\x20device\x20detected\x20—\x20cannot\x20auto-bridge.',_0x431276=_0x4dc608(0x80b);else{const _0x14c4eb=await _0x41cc19['start'](_0x5b6f68);if(_0x14c4eb['ok'])_0xe2a213=await _0x4a7456(()=>_0x3ae88f['isAvailable'](),{'intervalMs':0xfa,'timeoutMs':0x9c4}),_0x46c261='iproxy\x20bridge\x20started\x20(pid\x20'+_0x14c4eb[_0x4dc608(0x135)]+').',_0x3345f0={'pid':_0x14c4eb[_0x4dc608(0x135)],'udid':_0x5b6f68};else{if(_0x14c4eb['reason']===_0x4dc608(0x98b)){if(_0x4dc608(0x659)==='KaaDh')_0xe2a213=await _0x4a7456(()=>_0x3ae88f[_0x4dc608(0x9b2)](),{'intervalMs':0xfa,'timeoutMs':0x9c4}),_0x46c261=_0x4dc608(0x874);else return[];}else _0x14c4eb['reason']==='not-installed'?(_0x5f1eec=![],_0x46c261='iproxy\x20is\x20not\x20installed\x20—\x20cannot\x20auto-bridge\x20WDA.',_0x431276=_0x4dc608(0x6f7)):(_0x5f1eec=![],_0x46c261='iproxy\x20auto-bridge\x20failed\x20to\x20start:\x20'+(_0x14c4eb['stderr']?.[0x0]??'unknown\x20error')+'.',_0x431276=_0x4dc608(0x5e6),_0x3345f0={'stderr':_0x14c4eb[_0x4dc608(0x870)]});}}}const _0x5c11d7={'name':_0x4dc608(0x8ca),'ok':_0x5f1eec,'severity':'warning','message':_0x46c261,'remediation':_0x431276,'details':_0x3345f0},_0x246f9d=_0xe2a213?{'name':_0x4dc608(0x722),'ok':!![],'severity':_0x4dc608(0x125),'message':_0x4dc608(0x6c5)+_0x80302a+'.'}:{'name':_0x4dc608(0x722),'ok':![],'severity':_0x4dc608(0x125),'message':_0x80302a?'WebDriverAgent\x20is\x20not\x20reachable\x20at\x20'+_0x80302a+'.':'WebDriverAgent\x20is\x20not\x20ready\x20(simulator\x20selected,\x20no\x20port\x20captured\x20yet).','remediation':_0x23789c};return{'bridge':_0x5c11d7,'wda':_0x246f9d};})()['catch'](_0x6cf8a2=>({'bridge':{'name':_0x1b2a6c(0x8ca),'ok':![],'severity':_0x1b2a6c(0x77d),'message':'iproxy\x20auto-bridge\x20threw:\x20'+(_0x6cf8a2 instanceof Error?_0x6cf8a2[_0x1b2a6c(0x92e)]:String(_0x6cf8a2))},'wda':{'name':_0x1b2a6c(0x722),'ok':![],'severity':_0x1b2a6c(0x125),'message':'WDA\x20reachability\x20probe\x20threw:\x20'+(_0x6cf8a2 instanceof Error?_0x6cf8a2['message']:String(_0x6cf8a2))}}));_0x4df06a=_0x2acce9['then'](_0x239b74=>_0x239b74['bridge']),_0x16b146=_0x2acce9['then'](_0x168934=>_0x168934[_0x1b2a6c(0x4bd)]);}else _0x4df06a=Promise[_0x1b2a6c(0x75f)]({'name':_0x1b2a6c(0x8ca),'ok':!![],'severity':_0x1b2a6c(0x9bd),'message':_0x186d08?_0x1b2a6c(0x345):_0x1b2a6c(0x53f)}),_0x16b146=_0x39ec70(_0x1b2a6c(0x722),_0x1b2a6c(0x125),async()=>{const _0x46bfa7=_0x1b2a6c,_0x101f2c=await _0x3ae88f['isAvailable']();if(_0x101f2c)return{'ok':!![],'severity':_0x46bfa7(0x125),'message':_0x46bfa7(0x6c5)+_0x80302a+'.'};return{'ok':![],'severity':'error','message':_0x80302a?_0x46bfa7(0x3ae)+_0x80302a+'.':_0x46bfa7(0x7e5),'remediation':_0x186d08?_0x5ddfb5:_0x23789c};});}const _0x44ef03=_0x186d08?_0x1b2a6c(0x77d):_0x1b2a6c(0x125),_0x43b4ee=excludeRuntimeChecks?null:_0x39ec70('real-device-connected',_0x44ef03,async()=>{const _0x575934=_0x1b2a6c,_0x3b49a2=await _0x531c8b[_0x575934(0x29a)]();if(_0x3b49a2)return{'ok':!![],'severity':_0x44ef03,'message':'Real\x20iOS\x20device\x20connected\x20(udid\x20'+_0x3b49a2+').','details':{'udid':_0x3b49a2}};if(_0x186d08)return{'ok':!![],'severity':'info','message':_0x575934(0x230)};return{'ok':![],'severity':_0x44ef03,'message':'No\x20iOS\x20target\x20available.','remediation':_0x575934(0x492)};}),_0x46707c=excludeRuntimeChecks?null:_0x39ec70(_0x1b2a6c(0x31f),'error',async()=>{const _0x58aa9c=_0x1b2a6c,_0x41b9db=await _0x530b2b[_0x58aa9c(0x86a)]();if(_0x41b9db['awake'])return{'ok':!![],'severity':'error','message':_0x58aa9c(0x618)+_0x41b9db[_0x58aa9c(0x30d)]+').','details':{'lockState':_0x41b9db['lockState']}};return{'ok':![],'severity':'error','message':'Device\x20is\x20not\x20awake\x20(lockState:\x20'+_0x41b9db['lockState']+').','remediation':_0x41b9db['remediation']??_0x58aa9c(0x35f),'details':{'lockState':_0x41b9db[_0x58aa9c(0x30d)]}};}),_0x5b966d=excludeRuntimeChecks?null:Promise[_0x1b2a6c(0x75f)]({'name':'auto-lock-disabled','ok':!![],'severity':'info','message':'Verify\x20Settings\x20→\x20Display\x20&\x20Brightness\x20→\x20Auto-Lock\x20is\x20set\x20to\x20Never.\x20Otherwise\x20the\x20phone\x20will\x20sleep\x20mid-flow.'}),_0x139359=excludeRuntimeChecks?null:_0x39ec70(_0x1b2a6c(0x3cb),'warning',async()=>{const _0x347760=_0x1b2a6c;if(_0x186d08)return{'ok':!![],'severity':'info','message':'ffmpeg\x20not\x20required\x20for\x20simulator\x20targets\x20—\x20`xcrun\x20simctl\x20io\x20recordVideo`\x20(shipped\x20with\x20Xcode)\x20handles\x20video\x20capture.'};const _0x2107b3=await _0x546161('which',['ffmpeg']),_0x404f08=_0x2107b3[_0x347760(0x845)]===0x0&&_0x2107b3[_0x347760(0x91a)]['trim']()[_0x347760(0x945)]>0x0;if(_0x404f08)return{'ok':!![],'severity':'info','message':'ffmpeg\x20available\x20at\x20'+_0x2107b3['stdout'][_0x347760(0x5da)]()+'\x20—\x20continuous\x20chain-run\x20video\x20capture\x20is\x20wired.','details':{'path':_0x2107b3['stdout'][_0x347760(0x5da)]()}};return{'ok':![],'severity':'warning','message':_0x347760(0x944),'remediation':_0x347760(0xdf)};}),_0x3f2365=excludeRuntimeChecks||!_0x186d08?null:_0x39ec70(_0x1b2a6c(0x3af),_0x1b2a6c(0x125),async()=>{const _0x5d96e9=_0x1b2a6c,_0x314aad=await ensureAppium(projectDir);if(_0x314aad['status']===_0x5d96e9(0x3ad))return{'ok':!![],'severity':'info','message':_0x5d96e9(0x763),'details':{'status':_0x314aad[_0x5d96e9(0x9d0)]}};if(_0x314aad['status']==='installed')return{'ok':!![],'severity':_0x5d96e9(0x9bd),'message':'Installed\x20appium-webdriveragent\x20—\x20simulator\x20WebDriverAgent\x20can\x20build.','details':{'status':_0x314aad['status']}};if(_0x314aad[_0x5d96e9(0x9d0)]==='skipped-not-needed')return{'ok':!![],'severity':_0x5d96e9(0x9bd),'message':_0x5d96e9(0x9b9),'details':{'status':_0x314aad[_0x5d96e9(0x9d0)]}};return{'ok':![],'severity':'error','message':'Couldn\x27t\x20ensure\x20appium-webdriveragent:\x20'+_0x314aad[_0x5d96e9(0x125)],'remediation':'Couldn\x27t\x20auto-install\x20appium-webdriveragent\x20(the\x20optional\x20dep\x20the\x20simulator\x20WebDriverAgent\x20builds\x20from).\x20Install\x20it\x20manually\x20with\x20`npm\x20install\x20-D\x20appium-webdriveragent`\x20(or\x20`pnpm\x20add\x20-D\x20appium-webdriveragent`),\x20then\x20re-run\x20doctor.','details':{'status':_0x314aad[_0x5d96e9(0x9d0)]}};}),_0x54ea6d=excludeRuntimeChecks||!screenRecordingStatus||_0x2b65d8?.[_0x1b2a6c(0x555)]!==_0x1b2a6c(0x931)?null:_0x39ec70('screen-recording-permission',_0x1b2a6c(0x77d),async()=>{const _0x3a1186=_0x1b2a6c;if('fOmHa'!==_0x3a1186(0x322)){const _0x4672ca=_0x3b55b3['rect'];if(!_0x4672ca)return null;const _0x59a206=_0x18a474(_0x4672ca['x']),_0x13c0be=_0x5d4353(_0x4672ca['y']),_0x3eabf4=_0x5a0742(_0x4672ca[_0x3a1186(0x5e2)]),_0x26edc0=_0x184e1c(_0x4672ca['height']);if(_0x59a206===null||_0x13c0be===null||_0x3eabf4===null||_0x26edc0===null)return null;return{'x':_0x59a206,'y':_0x13c0be,'w':_0x3eabf4,'h':_0x26edc0};}else{const _0x1f5a40=screenRecordingStatus();if(_0x1f5a40===_0x3a1186(0x906))return{'ok':!![],'severity':_0x3a1186(0x9bd),'message':'Screen\x20Recording\x20granted\x20—\x20session\x20video\x20will\x20record.','details':{'status':_0x1f5a40}};const _0x305a2b=_0x1f5a40==='unverified'?_0x3a1186(0x88e):'Screen\x20Recording\x20permission\x20denied\x20—\x20session\x20video\x20won\x27t\x20record\x20(tests\x20run\x20regardless).\x20Click\x20Allow\x20if\x20the\x20dialog\x20reappears,\x20or\x20grant\x20it\x20manually.';return{'ok':![],'severity':_0x3a1186(0x77d),'message':_0x305a2b,'remediation':_0x6bd395,'details':{'status':_0x1f5a40}};}}),_0x354286=excludeRuntimeChecks?null:_0xe20fee?_0x39ec70(_0x1b2a6c(0x789),_0x1b2a6c(0x125),async()=>{const _0xd3aadd=_0x1b2a6c;if('fwILC'==='JXxIt')return _0x121f82;else{const _0x567a91=await _0x531c8b[_0xd3aadd(0x960)]();if(!_0x567a91['success'])return{'ok':![],'severity':_0xd3aadd(0x125),'message':_0xd3aadd(0x251)+(_0x567a91['error']??'unknown\x20error'),'remediation':'Ensure\x20your\x20device\x20is\x20connected\x20and\x20Xcode\x20is\x20installed\x20(`xcrun\x20devicectl\x20list\x20devices`).'};const _0x570d11=_0x567a91[_0xd3aadd(0x7dd)]['find'](_0x47bf68=>_0x47bf68['bundleId']===_0xe20fee);if(_0x570d11)return _0xd3aadd(0x9c7)==='WrKSm'?{'ok':!![],'severity':'error','message':_0xd3aadd(0x550)+_0xe20fee+_0xd3aadd(0x8fa)+_0x570d11['name']+(_0x570d11['version']?'\x20v'+_0x570d11[_0xd3aadd(0x892)]:'')+').','details':{'bundleId':_0xe20fee,'name':_0x570d11[_0xd3aadd(0x4d1)],'version':_0x570d11[_0xd3aadd(0x892)]}}:{'path':_0x18f477,'status':'malformed'};return{'ok':![],'severity':_0xd3aadd(0x125),'message':_0xd3aadd(0x550)+_0xe20fee+'\x20is\x20not\x20installed\x20on\x20the\x20device.','remediation':'Build\x20and\x20install\x20the\x20app:\x20`expo\x20run:ios\x20--device\x20<udid>`\x20or\x20`npx\x20react-native\x20run-ios\x20--udid\x20<udid>`.','details':{'bundleId':_0xe20fee,'installedCount':_0x567a91['apps']['length']}};}}):Promise[_0x1b2a6c(0x75f)]({'name':_0x1b2a6c(0x789),'ok':!![],'severity':_0x1b2a6c(0x9bd),'message':_0x1b2a6c(0x84e)}),_0x5a2c61=excludeRuntimeChecks?null:_0x18e466&&_0x18e466[_0x1b2a6c(0x945)]>0x0?_0x39ec70(_0x1b2a6c(0x304),_0x1b2a6c(0x125),async()=>{const _0x28caa5=_0x1b2a6c,_0x2e0c03=_0x18e466[_0x28caa5(0x65c)](_0x4d564c=>{const _0x4f1dd1=process.env[_0x4d564c];return _0x4f1dd1===void 0x0||_0x4f1dd1==='';});if(_0x2e0c03[_0x28caa5(0x945)]===0x0)return{'ok':!![],'severity':_0x28caa5(0x125),'message':'All\x20'+_0x18e466[_0x28caa5(0x945)]+_0x28caa5(0x910),'details':{'required':_0x18e466}};return{'ok':![],'severity':_0x28caa5(0x125),'message':_0x28caa5(0x539)+_0x2e0c03['join'](',\x20')+'.','remediation':_0x28caa5(0x633)+_0x2e0c03['map'](_0x5c44ff=>_0x28caa5(0x5f2)+_0x5c44ff+'=...')[_0x28caa5(0x221)](';\x20')+'\x20(or\x20add\x20them\x20to\x20.env.local).','details':{'missing':_0x2e0c03,'required':_0x18e466}};}):Promise['resolve']({'name':_0x1b2a6c(0x304),'ok':!![],'severity':'info','message':'Skipped\x20—\x20no\x20required\x20env\x20vars\x20declared.'}),_0x4cfab1=excludeRuntimeChecks?null:_0x39ec70('laptop-network',_0x1b2a6c(0x77d),async()=>{const _0x6d9cd9=_0x1b2a6c,[_0x3d8141,_0x557e83]=await Promise[_0x6d9cd9(0x9a6)]([_0x32111e(),_0x58ec2c()]),_0x546269={'ssid':_0x3d8141,'ip':_0x557e83};if(_0x3ce1ec&&_0x3d8141&&_0x3d8141!==_0x3ce1ec)return{'ok':![],'severity':'warning','message':_0x6d9cd9(0x3a0)+_0x3d8141+'\x27\x20at\x20'+(_0x557e83??_0x6d9cd9(0x6cd))+_0x6d9cd9(0xde)+_0x3ce1ec+'\x27.','remediation':_0x6d9cd9(0x67a),'details':_0x546269};return{'ok':!![],'severity':_0x6d9cd9(0x9bd),'message':_0x6d9cd9(0x3a0)+(_0x3d8141??'<unknown>')+_0x6d9cd9(0x372)+(_0x557e83??_0x6d9cd9(0x6cd))+_0x6d9cd9(0x8c9),'details':_0x546269};}),_0x3fa8cc=excludeRuntimeChecks?null:Promise['resolve']({'name':'permission-interceptor-ready','ok':!![],'severity':_0x1b2a6c(0x9bd),'message':_0x1b2a6c(0xe5)}),_0x43b920=await Promise['all']([_0x218c1f,_0x1c98e1,_0x4df06a,_0x16b146,_0x43b4ee,_0x46707c,_0x5b966d,_0x354286,_0x5a2c61,_0x4cfab1,_0x3fa8cc,_0x139359,_0x3f2365,_0x54ea6d,_0x53361b,_0x22392f,_0x5eea42]['filter'](_0x5cd14f=>_0x5cd14f!==null)),_0x260ac9=!_0x43b920['some'](_0x3ace17=>_0x3ace17['severity']===_0x1b2a6c(0x125)&&!_0x3ace17['ok']),_0x5dea8d=_0x43b920['find'](_0x228af0=>_0x228af0[_0x1b2a6c(0x4d1)]===_0x1b2a6c(0x3cb));let _0x598588;return _0x5dea8d&&(_0x186d08?_0x598588=void 0x0:_0x598588=_0x5dea8d['ok']),{'ok':_0x260ac9,'checks':_0x43b920,'ffmpegInstalled':_0x598588};}var _0x1f1313=null,_0x1275bf=null;async function _0x38422c(_0x209077){const _0x31024c=_0x3ee7d6;if(_0x1f1313&&_0x1f1313['result']['ok'])return'hKiiq'!==_0x31024c(0x185)?_0x1f1313[_0x31024c(0x7bb)]:_0x3afd21(_0x4dd56e,_0x31024c(0x70c));if(_0x1275bf)return _0x1275bf;return _0x1275bf=_0x209077()['then'](_0x322e48=>{const _0x190877=_0x31024c;return _0x1f1313={'result':_0x322e48,'at':Date[_0x190877(0x3d1)]()},_0x1275bf=null,_0x322e48;},_0x54b4f3=>{_0x1275bf=null;throw _0x54b4f3;}),_0x1275bf;}function _0x2e83b7(_0x47aec9){const _0x5cd02f=_0x3ee7d6;_0x1f1313={'result':_0x47aec9,'at':Date[_0x5cd02f(0x3d1)]()};}function _0x760982(_0x3ceb01){const _0x4c8aef=_0x3ee7d6;return _0x3ceb01[_0x4c8aef(0x8d4)][_0x4c8aef(0x65c)](_0x47eeee=>{const _0x4bd040=_0x4c8aef;if(_0x47eeee['severity']===_0x4bd040(0x125))return![];if(_0x47eeee['severity']==='warning')return!_0x47eeee['ok'];if(_0x47eeee['severity']==='info')return!_0x47eeee['ok']||_0x47eeee[_0x4bd040(0x5de)]!=null;return![];});}async function _0xd571ff(_0x537396,_0x3faa67={}){const _0x46b391=_0x3ee7d6,_0x375ab3=_0x3faa67['force']?await((async()=>{const _0x5e7aba=await _0x537396();return _0x2e83b7(_0x5e7aba),_0x5e7aba;})()):await _0x38422c(_0x537396),_0x5bee81=_0x375ab3['checks'][_0x46b391(0x65c)](_0x162027=>_0x162027['severity']===_0x46b391(0x125)&&!_0x162027['ok']);if(_0x5bee81['length']>0x0)return{'kind':'block','response':{'content':[{'type':_0x46b391(0x5d9),'text':JSON['stringify']({'status':_0x46b391(0x7a5),'message':_0x46b391(0xd1),'errors':_0x5bee81[_0x46b391(0x986)](_0x1d2aaa=>({'name':_0x1d2aaa[_0x46b391(0x4d1)],'message':_0x1d2aaa[_0x46b391(0x92e)],'remediation':_0x1d2aaa[_0x46b391(0x5de)]})),'hint':_0x46b391(0x42f)},null,0x2)}],'isError':!![]}};return{'kind':'pass','advisories':_0x760982(_0x375ab3)};}function _0x4ec2e8(_0x45e582){const _0x5bd56f=_0x3ee7d6;if(_0x45e582[_0x5bd56f(0x945)]===0x0)return void 0x0;return _0x45e582[_0x5bd56f(0x986)](_0x18ebf3=>({'name':_0x18ebf3[_0x5bd56f(0x4d1)],'severity':_0x18ebf3['severity'],'ok':_0x18ebf3['ok'],'message':_0x18ebf3[_0x5bd56f(0x92e)],'remediation':_0x18ebf3[_0x5bd56f(0x5de)],'details':_0x18ebf3[_0x5bd56f(0x220)]}));}var _0x33d1a0=0x1f91,_0x3d2be1='Could\x20not\x20start\x20WebDriverAgent.\x20For\x20a\x20device:\x20ensure\x20Developer\x20Mode\x20is\x20enabled\x20(Settings\x20>\x20Privacy\x20&\x20Security\x20>\x20Developer\x20Mode),\x20the\x20device\x20is\x20unlocked\x20and\x20trusts\x20this\x20Mac,\x20and\x20it\x27s\x20connected\x20via\x20USB-C.\x20For\x20a\x20simulator:\x20boot\x20one\x20(open\x20-a\x20Simulator).\x20Then\x20call\x20ceraph_start\x20again.';async function _0x1f4edb(_0x5510db,_0x35b856={}){const _0xacae4a=_0x3ee7d6,_0x5ec7c1=_0x35b856['port']??_0x33d1a0,_0x59debd=[],_0x5e3ec7=_0x3654dd=>{const _0x1b5a0f=_0x4a5a;_0x59debd[_0x1b5a0f(0x496)](_0x3654dd);if(_0x35b856['onStep'])try{_0x35b856[_0x1b5a0f(0x9f2)](_0x3654dd);}catch{}},_0x21fcdb=await _0x5510db['resolveTarget']()[_0xacae4a(0x4ba)](()=>'device');let _0x30d426=![];if(_0x5510db[_0xacae4a(0x991)]){_0x30d426=!![];const _0x34c1cf=await _0x5510db['checkTargetReady']();if(!_0x34c1cf['ok'])return _0x5e3ec7({'name':_0xacae4a(0x1fd),'status':'failed','detail':_0x34c1cf['detail']}),_0x389ba4(_0x59debd,_0x21fcdb,_0x34c1cf[_0xacae4a(0x5de)]??_0xacae4a(0xe9));}if(_0x5510db[_0xacae4a(0xfe)]){_0x30d426=!![];const _0x115fef=_0x5510db['missingRequiredEnv']();if(_0x115fef[_0xacae4a(0x945)]>0x0)return _0x5e3ec7({'name':'preflight','status':'failed','detail':'Required\x20env\x20var'+(_0x115fef[_0xacae4a(0x945)]===0x1?'':'s')+'\x20not\x20set:\x20'+_0x115fef[_0xacae4a(0x221)](',\x20')+'.','details':{'missing':_0x115fef}}),_0x389ba4(_0x59debd,_0x21fcdb,_0xacae4a(0xcd)+_0x115fef['join'](',\x20')+'\x20in\x20the\x20MCP\x20server\x20environment,\x20then\x20call\x20ceraph_start\x20again.');}_0x30d426&&_0x5e3ec7({'name':'preflight','status':'ok','detail':_0xacae4a(0x334)});const _0x5b2dc3=await _0x5510db[_0xacae4a(0x16f)](_0x5ec7c1)[_0xacae4a(0x4ba)](()=>![]);if(_0x5b2dc3)_0x5e3ec7({'name':'metro','status':'up','detail':'Metro\x20is\x20already\x20serving\x20on\x20port\x20'+_0x5ec7c1+'.'});else{const _0x7f34d7=await _0x5510db['startMetro']({'port':_0x5ec7c1});if(!_0x7f34d7[_0xacae4a(0x42d)])return _0x5e3ec7({'name':_0xacae4a(0x606),'status':_0xacae4a(0x320),'detail':_0x7f34d7['message']}),_0x389ba4(_0x59debd,_0x21fcdb,_0x7f34d7[_0xacae4a(0x92e)]);_0x5e3ec7({'name':_0xacae4a(0x606),'status':_0xacae4a(0x39d),'detail':_0x7f34d7['message']});}const _0x373600=_0x22c4c6(_0x5510db,_0x35b856),_0x31936b=_0x5510db['ensureWda']?_0x5510db['ensureWda']():Promise['resolve'](null),[_0x3c0427,_0x2c0bbd]=await Promise[_0xacae4a(0x9a6)]([_0x373600,_0x31936b]);if(_0x3c0427[_0xacae4a(0x3ea)]===_0xacae4a(0x320))return _0x5e3ec7(_0x3c0427[_0xacae4a(0x912)]),_0x389ba4(_0x59debd,_0x21fcdb,_0x3c0427['nextAction']);_0x5e3ec7(_0x3c0427['step']);if(_0x2c0bbd){if('rgTto'==='vmKfx')throw new _0x30d073('WDA\x20session\x20creation\x20succeeded\x20but\x20no\x20sessionId\x20returned');else{if(!_0x2c0bbd['ok'])return _0x5e3ec7({'name':'wda','status':'failed','detail':_0x2c0bbd[_0xacae4a(0x6d9)],'details':{'error':_0x2c0bbd['error']}}),_0x389ba4(_0x59debd,_0x21fcdb,_0x2c0bbd[_0xacae4a(0x5de)]??_0x3d2be1);_0x5e3ec7({'name':'wda','status':_0x2c0bbd['reason']==='reused'?'up':_0xacae4a(0x39d),'detail':_0x2c0bbd[_0xacae4a(0x6d9)]});}}const _0xd526d3=await _0x5510db['runDoctor']();if(_0x5510db['cacheDoctor']){if('IiZOO'===_0xacae4a(0x4db))return{'omitted':_0xacae4a(0x610),'detail':_0x5143a3[_0xacae4a(0x945)]+_0xacae4a(0x2a8)+_0xbd9500+';\x20the\x20limit\x20is\x20'+_0x25b000};else try{_0x5510db[_0xacae4a(0x116)](_0xd526d3);}catch{}}if(!_0xd526d3['ok']){const _0x279fd1=_0x1b3f9e(_0xd526d3[_0xacae4a(0x8d4)]),_0x1dce47=_0x352d0a(_0x279fd1);return _0x5e3ec7({'name':'postflight','status':_0xacae4a(0x320),'detail':'On-device\x20automation\x20isn\x27t\x20ready.\x20'+_0x279fd1[_0xacae4a(0x945)]+'\x20check'+(_0x279fd1['length']===0x1?'':'s')+'\x20failed.','details':{'failedChecks':_0x279fd1}}),_0x389ba4(_0x59debd,_0x21fcdb,_0x1dce47);}return _0x5e3ec7({'name':_0xacae4a(0x62d),'status':'ok','detail':'On-device\x20automation\x20verified\x20—\x20every\x20postflight\x20check\x20passed.'}),{'ready':!![],'steps':_0x59debd,'target':_0x21fcdb};}async function _0x22c4c6(_0x26b80e,_0x1621ad){const _0x502d8f=_0x3ee7d6,_0x50c6ca=await _0x26b80e['needsBuild']();let _0x42a96b,_0x10dce6,_0x29c33e;if(_0x50c6ca[_0x502d8f(0x508)]){const _0xb4e5c8=await _0x26b80e['runBuild']({'clean':_0x1621ad['clean'],'device':_0x1621ad[_0x502d8f(0x931)]});if(!_0xb4e5c8['success']){const _0xb92c1c=_0xb4e5c8[_0x502d8f(0x3c9)][0x0]?.['message'];return{'kind':'failed','step':{'name':'build','status':'failed','detail':_0xb92c1c??_0x502d8f(0x102),'details':{'errors':_0xb4e5c8[_0x502d8f(0x3c9)],'output':_0xb4e5c8['output']}},'nextAction':'Fix\x20the\x20native\x20build\x20error\x20above,\x20then\x20call\x20ceraph_start\x20again.'};}_0x26b80e[_0x502d8f(0x219)]&&await _0x26b80e['saveBuildSnapshot']()[_0x502d8f(0x4ba)](()=>{}),_0x29c33e=_0x502d8f(0x444),_0x42a96b=_0x50c6ca['reasons'][_0x502d8f(0x945)]>0x0?_0x502d8f(0x5f4)+_0x50c6ca[_0x502d8f(0x360)][_0x502d8f(0x221)](';\x20')+').':_0x502d8f(0x767),_0x10dce6=_0x50c6ca['reasons']['length']>0x0?{'reasons':_0x50c6ca[_0x502d8f(0x360)]}:void 0x0;}else _0x29c33e=_0x502d8f(0x797),_0x42a96b=_0x502d8f(0x551),_0x10dce6=void 0x0;let _0x25378e;if(_0x26b80e[_0x502d8f(0x1aa)]){if(_0x502d8f(0x302)==='yBESs'){const _0x85f94e=await _0x26b80e[_0x502d8f(0x1aa)]()[_0x502d8f(0x4ba)](_0x31cb7=>({'ok':![],'detail':'Could\x20not\x20foreground\x20the\x20app:\x20'+(_0x31cb7 instanceof Error?_0x31cb7[_0x502d8f(0x92e)]:String(_0x31cb7))+'.'}));_0x25378e=_0x85f94e['ok']?'\x20'+_0x85f94e['detail']:_0x502d8f(0xd5)+_0x85f94e['detail']+_0x502d8f(0x955);}else _0x24a135[_0x502d8f(0x142)]('SIGTERM');}else _0x25378e='';return{'kind':'ok','step':{'name':_0x502d8f(0x17d),'status':_0x29c33e,'detail':''+_0x42a96b+_0x25378e,'details':_0x10dce6}};}function _0x389ba4(_0x34ac0e,_0x1a379c,_0xce3020){return{'ready':![],'steps':_0x34ac0e,'target':_0x1a379c,'nextAction':_0xce3020};}function _0x1b3f9e(_0x69b59d){return _0x69b59d['filter'](_0x45cc34=>_0x45cc34['severity']==='error'&&!_0x45cc34['ok']);}function _0x352d0a(_0x275b34){const _0x41bfdb=_0x3ee7d6,_0x26f906=_0x275b34[0x0];if(!_0x26f906)return'Re-run\x20`ceraph_doctor`\x20to\x20see\x20what\x27s\x20blocking\x20on-device\x20automation.';return _0x26f906[_0x41bfdb(0x5de)]??_0x26f906[_0x41bfdb(0x92e)]??_0x41bfdb(0x599);}import{join as _0x37b121}from'path';import{spawn as _0x29db0f}from'child_process';var _0x4578a8=null,_0xe9eac5=![],_0x14ec9d=null;function _0x4a7faa(){const _0x1e090a=_0x3ee7d6;if(process['platform']!=='darwin')return{'applied':![],'reason':'not-darwin'};if(_0xe9eac5&&_0x4578a8&&!_0x4578a8[_0x1e090a(0x3f3)])return{'applied':!![],'reason':'already-active'};try{const _0x19a2c8=_0x14ec9d??_0x29db0f,_0x66af3=_0x19a2c8('caffeinate',['-di','-w',String(process[_0x1e090a(0x135)])],{'detached':!![],'stdio':'ignore'});typeof _0x66af3[_0x1e090a(0x60e)]===_0x1e090a(0x8b5)&&_0x66af3['unref']();_0x4578a8=_0x66af3,_0xe9eac5=!![];const _0x511f1e=_0x66af3;return _0x66af3[_0x1e090a(0x9b5)](_0x1e090a(0x41e),()=>{_0x4578a8===_0x511f1e&&(_0x4578a8=null,_0xe9eac5=![]);}),{'applied':!![],'reason':'started'};}catch{return{'applied':![],'reason':'spawn-failed'};}}function _0x501c6f(){const _0x383b85=_0x3ee7d6;if(!_0xe9eac5)return;if(_0x4578a8)try{_0x4578a8[_0x383b85(0x142)]('SIGTERM');}catch{}_0x4578a8=null,_0xe9eac5=![];}var _0x1c248a=class{constructor(_0xc9ec6b,_0x377952,_0x1a0cbb){const _0x1c8377=_0x3ee7d6;this[_0x1c8377(0x555)]=_0xc9ec6b,this['cacheDir']=_0x377952,this['projectDir']=_0x1a0cbb;}[_0x3ee7d6(0x497)]=null;['inflight']=null;[_0x3ee7d6(0x8db)]=null;['stopGeneration']=0x0;[_0x3ee7d6(0x5c8)]=null;['getSession'](){return this['session'];}async['start'](_0x323bff={}){const _0x4d33eb=_0x3ee7d6;this['stopping']&&await this['stopping'][_0x4d33eb(0x4ba)](()=>void 0x0);if(this[_0x4d33eb(0x497)]){const _0x5e2a10=this[_0x4d33eb(0x497)][_0x4d33eb(0x993)][_0x4d33eb(0x186)]===null,_0x3ed51f=!_0x323bff['udid']||_0x323bff['udid']===this['session'][_0x4d33eb(0x737)];if(_0x5e2a10&&_0x3ed51f)return{'ok':!![],'port':this[_0x4d33eb(0x497)][_0x4d33eb(0x688)],'udid':this[_0x4d33eb(0x497)]['udid'],'reused':!![],'projectPath':this[_0x4d33eb(0x497)]['projectPath']};_0x5e2a10&&!_0x3ed51f?await this[_0x4d33eb(0x2bf)]()[_0x4d33eb(0x4ba)](()=>void 0x0):(this['session']=null,this[_0x4d33eb(0x555)]['clearSimulatorWdaPort']());}if(this['inflight'])return this['inflight'];const _0x11df7b=this['stopGeneration'],_0x198820=((async()=>{const _0x423ab8=_0x4d33eb,_0x6bbf87=await _0x5d4596();if(_0x6bbf87['length']===0x0)return{'ok':![],'reason':_0x423ab8(0x6c1),'error':_0x423ab8(0x3eb)};let _0x3b59f0;if(_0x323bff[_0x423ab8(0x737)]){const _0x584907=_0x6bbf87[_0x423ab8(0x7bd)](_0x16d677=>_0x16d677[_0x423ab8(0x737)]===_0x323bff['udid']);if(!_0x584907)return{'ok':![],'reason':_0x423ab8(0x5e3),'error':'Simulator\x20UDID\x20'+_0x323bff['udid']+_0x423ab8(0x80c)+_0x6bbf87[_0x423ab8(0x986)](_0x3cd244=>_0x3cd244['name']+'\x20('+_0x3cd244[_0x423ab8(0x737)]+')')['join'](',\x20')+'.'};_0x3b59f0=_0x584907;}else _0x3b59f0=_0x6bbf87[0x0];const _0x5ad5ba={'udid':_0x3b59f0[_0x423ab8(0x737)],'projectDir':this['projectDir'],'derivedDataPath':_0x323bff['derivedDataPath']??_0x37b121(this['cacheDir'],_0x423ab8(0x734)),'startupTimeoutMs':_0x323bff['startupTimeoutMs'],'onChildSpawned':_0x4c928e=>{this['inflightChild']=_0x4c928e;}};let _0x593b39;try{_0x593b39=await _0x20df2b(_0x5ad5ba);}finally{this[_0x423ab8(0x8db)]=null;}if(!_0x593b39['ok'])return{'ok':![],'reason':_0x593b39['reason'],'error':_0x593b39['error'],'output':_0x593b39[_0x423ab8(0x177)]};if(this[_0x423ab8(0x68a)]!==_0x11df7b)return await _0x593b39[_0x423ab8(0x497)]['stop']()[_0x423ab8(0x4ba)](()=>void 0x0),{'ok':![],'reason':'xcodebuild-exited-early','error':'`rn_wda_stop`\x20(or\x20MCP\x20shutdown)\x20ran\x20while\x20the\x20simulator\x20WDA\x20build\x20was\x20in\x20flight.\x20The\x20build\x20was\x20terminated.\x20Re-run\x20`rn_wda_start`\x20if\x20you\x20still\x20want\x20a\x20simulator\x20session.'};this[_0x423ab8(0x497)]=_0x593b39['session'],this['target']['setSimulatorWdaPort'](_0x593b39['session'][_0x423ab8(0x688)],_0x593b39['session'][_0x423ab8(0x737)]);const _0x5e41fc=_0x593b39['session'];_0x5e41fc[_0x423ab8(0x993)]['once']('exit',()=>{this['session']===_0x5e41fc&&(this['session']=null,this['target']['clearSimulatorWdaPort']());});try{_0x4a7faa();}catch{}return{'ok':!![],'port':_0x593b39[_0x423ab8(0x497)]['port'],'udid':_0x593b39['session'][_0x423ab8(0x737)],'reused':![],'projectPath':_0x593b39['session'][_0x423ab8(0x139)]};})());this['inflight']=_0x198820;try{return await _0x198820;}finally{this[_0x4d33eb(0x14e)]=null;}}async[_0x3ee7d6(0x2bf)](){const _0x435043=_0x3ee7d6;if(this[_0x435043(0x5c8)])return await this['stopping']['catch'](()=>void 0x0),{'stopped':![]};this[_0x435043(0x68a)]++;let _0x4966db;this['stopping']=new Promise(_0x17d521=>{_0x4966db=_0x17d521;});try{const _0x16887b=this['inflightChild'];this['inflightChild']=null;if(_0x16887b&&_0x16887b[_0x435043(0x186)]===null)try{_0x16887b['kill']('SIGTERM');}catch{}this['inflight']&&await this['inflight']['catch'](()=>void 0x0);if(!this['session'])return{'stopped':![]};const {udid:_0x3f535f,port:_0x4ee8d6}=this['session'];try{await this[_0x435043(0x497)][_0x435043(0x2bf)]();}finally{if('YiHWV'!=='gYqAv')this['session']=null,this['target'][_0x435043(0x188)]();else{if(!_0x258b2b['success']){const _0x50bee5=_0x51915f['action'],_0x4887fa=_0x50f580[_0x435043(0x125)]??_0x435043(0x30e);return _0x50bee5+_0x435043(0x9f8)+_0x4887fa;}}}return{'stopped':!![],'udid':_0x3f535f,'port':_0x4ee8d6};}finally{if(_0x435043(0x3ab)==='alwqk'){const _0x4c2b22=_0x525210[_0x435043(0x153)]?.['trim']()||_0x441fc6.env.CERAPH_API_URL?.[_0x435043(0x5da)]()||_0x5377dc;return _0x4c2b22[_0x435043(0x27d)](/\/+$/,'')+_0x435043(0x842);}else{try{_0x501c6f();}catch{}_0x4966db(),this['stopping']=null;}}}};import{spawn as _0x7e51dc}from'child_process';import{readdir as _0x4a9426,readFile as _0x5252dc,stat as _0x1d6707}from'fs/promises';import{homedir}from'os';import{join as _0x203e81}from'path';function _0x5c8545(_0x5d017c,_0x49d21c,_0x59685a={}){return new Promise(_0x5cf675=>{const _0x397f31=_0x4a5a;let _0x4f19d3='',_0x31f6ae='',_0x251933;try{_0x251933=_0x7e51dc(_0x5d017c,_0x49d21c,{'stdio':['ignore',_0x397f31(0x406),'pipe']});}catch(_0x52675f){_0x5cf675({'code':0x7f,'stdout':'','stderr':_0x52675f instanceof Error?_0x52675f['message']:String(_0x52675f)});return;}let _0x72011c=![],_0x3afb53;const _0xf9de7=_0x29f45c=>{if(_0x72011c)return;_0x72011c=!![],clearTimeout(_0x3afb53),_0x5cf675(_0x29f45c);};_0x3afb53=setTimeout(()=>{const _0x366ced=_0x397f31;try{_0x251933['kill'](_0x366ced(0x57c));}catch{}_0xf9de7({'code':0x7c,'stdout':_0x4f19d3,'stderr':_0x31f6ae+_0x366ced(0x6ea)+(_0x59685a['timeoutMs']??0x1f40)+'ms]'});},_0x59685a[_0x397f31(0x5aa)]??0x1f40),_0x251933['stdout']?.['on']('data',_0x4492ee=>{_0x4f19d3+=_0x4492ee['toString']();}),_0x251933[_0x397f31(0x870)]?.['on'](_0x397f31(0x978),_0x26bbca=>{const _0x1dd69b=_0x397f31;'YYXqE'===_0x1dd69b(0x6c3)?(_0x1a1ab6(_0x12d602),_0x32391b(_0x4830cb)):_0x31f6ae+=_0x26bbca['toString']();}),_0x251933['on'](_0x397f31(0x125),_0x2fa0b8=>{_0xf9de7({'code':0x7f,'stdout':_0x4f19d3,'stderr':_0x31f6ae+(_0x2fa0b8['message']??String(_0x2fa0b8))});}),_0x251933['on'](_0x397f31(0x41e),_0x5cc1d3=>{_0xf9de7({'code':_0x5cc1d3??0x1,'stdout':_0x4f19d3,'stderr':_0x31f6ae});});});}async function _0x2da44d(_0x500106,_0x592a0d=0x7d0){const _0x540666=_0x3ee7d6,_0x2e8b5d=new AbortController(),_0x2b5304=setTimeout(()=>_0x2e8b5d[_0x540666(0x2d4)](),_0x592a0d);try{const _0x3bc488=await fetch(_0x540666(0x26b)+_0x500106+_0x540666(0x6f9),{'signal':_0x2e8b5d['signal']});return _0x3bc488['ok'];}catch{return![];}finally{clearTimeout(_0x2b5304);}}var _0x474eb7={'readEnv':_0x2f543e=>process.env[_0x2f543e],'homeDir':()=>homedir(),'pathExists':async _0x545a2d=>{try{return await _0x1d6707(_0x545a2d),!![];}catch{return![];}},'listDir':async _0x396208=>{try{return await _0x4a9426(_0x396208);}catch{return[];}},'readFileUtf8':async _0x9c2aea=>{const _0x18ec2b=_0x3ee7d6;try{return await _0x5252dc(_0x9c2aea,_0x18ec2b(0x29d));}catch{return null;}},'mtimeMs':async _0x497aba=>{try{const _0x22d6c5=await _0x1d6707(_0x497aba);return _0x22d6c5['mtimeMs'];}catch{return 0x0;}},'run':(_0x5747ec,_0x4557ba,_0x2d5295)=>_0x5c8545(_0x5747ec,_0x4557ba,{'timeoutMs':_0x2d5295}),'probeStatus':_0x2da44d,'spawn':_0x7e51dc},_0x1cde71=0x1fa4;async function _0x16482e(_0x5e52fa=_0x474eb7){const _0x289ce0=_0x3ee7d6,_0x5299ae=_0x5e52fa[_0x289ce0(0x7fe)](_0x289ce0(0x80d))?.['trim']();if(_0x5299ae&&await _0x5e52fa[_0x289ce0(0x8cc)](_0x5299ae))return{'ok':!![],'projectPath':_0x5299ae,'source':_0x289ce0(0x9a5)};const _0x173283=await _0x5137e1(_0x5e52fa);if(_0x173283){if('nPfQW'!=='nPfQW')_0x2afc7c['fallbackText']=_0x2f9a91[_0x289ce0(0x3ef)];else return{'ok':!![],'projectPath':_0x173283,'source':'derived-data'};}const _0x208330=_0x203e81(_0x5e52fa[_0x289ce0(0x7a0)](),_0x289ce0(0x40d),_0x289ce0(0x927),_0x289ce0(0x3d8));if(await _0x5e52fa[_0x289ce0(0x8cc)](_0x208330)){if('NXzeS'!==_0x289ce0(0x84b))return{'ok':!![],'projectPath':_0x208330,'source':'convention'};else throw new _0x17e7d2('firebase-admin\x20module\x20has\x20no\x20initializeApp');}return{'ok':![],'remediation':'Could\x20not\x20locate\x20the\x20WebDriverAgent\x20Xcode\x20project\x20to\x20launch\x20device\x20WDA.\x20Ceraph\x20looked\x20at\x20(1)\x20$CERAPH_DEVICE_WDA_PROJECT,\x20(2)\x20the\x20most-recent\x20~/Library/Developer/Xcode/DerivedData/WebDriverAgent-*/info.plist\x20WorkspacePath,\x20and\x20(3)\x20~/.mobile-mcp/WebDriverAgent/WebDriverAgent.xcodeproj.\x20Open\x20the\x20WebDriverAgent\x20project\x20in\x20Xcode\x20once,\x20set\x20a\x20Development\x20Team\x20on\x20the\x20WebDriverAgentRunner\x20target,\x20run\x20it\x20on\x20your\x20iPhone\x20(this\x20signs\x20+\x20caches\x20the\x20build),\x20then\x20retry.\x20To\x20pin\x20the\x20project\x20explicitly,\x20set\x20CERAPH_DEVICE_WDA_PROJECT\x20to\x20the\x20absolute\x20path\x20of\x20WebDriverAgent.xcodeproj.'};}async function _0x5137e1(_0x558844){const _0x2eaec0=_0x3ee7d6,_0x570d5e=_0x203e81(_0x558844[_0x2eaec0(0x7a0)](),_0x2eaec0(0x41d),_0x2eaec0(0x970),_0x2eaec0(0xf8),_0x2eaec0(0x4af)),_0x3d34f2=await _0x558844['listDir'](_0x570d5e),_0x290a79=_0x3d34f2[_0x2eaec0(0x65c)](_0x5b4de7=>_0x5b4de7[_0x2eaec0(0x887)]('WebDriverAgent-'));if(_0x290a79['length']===0x0)return null;const _0x20695b=await Promise['all'](_0x290a79[_0x2eaec0(0x986)](async _0x23d400=>{const _0x180348=_0x2eaec0,_0x4e3902=_0x203e81(_0x570d5e,_0x23d400);return{'dir':_0x4e3902,'mtime':await _0x558844[_0x180348(0x182)](_0x4e3902)};}));_0x20695b['sort']((_0x291bbc,_0x114c39)=>_0x114c39['mtime']-_0x291bbc['mtime']);for(const {dir:_0x1103f3}of _0x20695b){const _0x201e73=_0x203e81(_0x1103f3,_0x2eaec0(0x1e6)),_0x4ae89c=await _0x558844['readFileUtf8'](_0x201e73);if(!_0x4ae89c)continue;const _0x4c228c=_0x262dca(_0x4ae89c);if(!_0x4c228c)continue;if(await _0x558844['pathExists'](_0x4c228c))return _0x4c228c;}return null;}function _0x262dca(_0x55b4b4){const _0x4697e9=_0x3ee7d6,_0x1b5410=/<key>\s*WorkspacePath\s*<\/key>\s*<string>([\s\S]*?)<\/string>/,_0x5494c1=_0x1b5410['exec'](_0x55b4b4);if(!_0x5494c1)return null;const _0x33a61e=_0x5494c1[0x1][_0x4697e9(0x5da)]();return _0x33a61e[_0x4697e9(0x945)]>0x0?_0x5792ba(_0x33a61e):null;}function _0x5792ba(_0x321f41){const _0x4466f3=_0x3ee7d6;return _0x321f41[_0x4466f3(0x27d)](/&amp;/g,'&')['replace'](/&lt;/g,'<')['replace'](/&gt;/g,'>')[_0x4466f3(0x27d)](/&apos;/g,'\x27')[_0x4466f3(0x27d)](/&quot;/g,'\x22');}async function _0x55be9b(_0x3bde82,_0x5ce891=_0x474eb7){const _0x1053cf=_0x3ee7d6,_0x3a046b=_0x5ce891['readEnv']('CERAPH_DEVICE_HARDWARE_UDID')?.[_0x1053cf(0x5da)]();if(_0x3a046b)return _0x5586f3(_0x3a046b)??_0x3a046b;const _0x5c497e=await _0x1eade2(_0x5ce891);if(_0x5c497e)return _0x5c497e;const _0x335dbd=await _0x15aec8(_0x5ce891);if(_0x335dbd)return _0x335dbd;const _0x343975=await _0xc1d964(_0x5ce891);if(_0x343975)return _0x343975;return _0x5586f3(_0x3bde82);}function _0x5586f3(_0x35a4e1){const _0x56f973=_0x3ee7d6;if(!_0x35a4e1)return null;const _0x51ba70=_0x35a4e1['trim']();if(/^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{16}$/[_0x56f973(0x364)](_0x51ba70))return _0x51ba70;if(/^[0-9A-Fa-f]{24}$/['test'](_0x51ba70))return _0x51ba70[_0x56f973(0x63b)](0x0,0x8)+'-'+_0x51ba70['slice'](0x8);if(/^[0-9A-Fa-f]{40}$/['test'](_0x51ba70))return _0x51ba70;return null;}async function _0x15aec8(_0x2030d1){const _0x52b215=_0x3ee7d6;for(const _0x45ae14 of[_0x52b215(0x56b),'iPad']){if('EZrxD'!==_0x52b215(0x24d))return{'success':![],'error':_0x240e80 instanceof _0x35e1ba?_0x1dd9f0['message']:_0x52b215(0x58f)};else{const _0x1f0fe1=await _0x2030d1['run'](_0x52b215(0x515),['-p',_0x52b215(0x825),'-r','-n',_0x45ae14,'-l',_0x52b215(0x640)],0x1f40);if(_0x1f0fe1['code']!==0x0||!_0x1f0fe1['stdout']['trim']())continue;const _0x5dbed6=_0x1f0fe1[_0x52b215(0x91a)]['match'](/"USB Serial Number"\s*=\s*"([0-9A-Fa-f]{20,})"/),_0x2419ee=_0x5586f3(_0x5dbed6?.[0x1]??null);if(_0x2419ee)return _0x2419ee;}}return null;}async function _0xc1d964(_0x2ef86a){const _0x361d24=_0x3ee7d6,_0x480f76=await _0x2ef86a[_0x361d24(0x725)](_0x361d24(0x2d3),['xctrace','list',_0x361d24(0x598)],0x3a98);if(_0x480f76['code']!==0x0||!_0x480f76['stdout'][_0x361d24(0x5da)]())return null;for(const _0x2908bc of _0x480f76['stdout']['split']('\x0a')){if(/^==\s*Simulators/i['test'](_0x2908bc))break;if(/simulator/i[_0x361d24(0x364)](_0x2908bc))continue;const _0x4a5210=_0x2908bc['match'](/\(([0-9A-Fa-f]{8}-[0-9A-Fa-f]{16}|[0-9A-Fa-f]{40})\)\s*$/),_0x34c7f9=_0x5586f3(_0x4a5210?.[0x1]??null);if(_0x34c7f9)return _0x34c7f9;}return null;}async function _0x1eade2(_0x27d142){const _0x25365a=_0x3ee7d6,_0x1464c7=await _0x27d142[_0x25365a(0x725)](_0x25365a(0x2b9),['SPUSBDataType','-json'],0x1f40);if(_0x1464c7['code']!==0x0||!_0x1464c7[_0x25365a(0x91a)][_0x25365a(0x5da)]())return null;try{const _0x2779af=JSON[_0x25365a(0x229)](_0x1464c7[_0x25365a(0x91a)]);return _0x5586f3(_0x42f700(_0x2779af['SPUSBDataType']));}catch{return null;}}function _0x42f700(_0x2f9cfd){const _0x357cf4=_0x3ee7d6;if(_0x2f9cfd===null||_0x2f9cfd===void 0x0)return null;if(Array[_0x357cf4(0x246)](_0x2f9cfd)){if(_0x357cf4(0x4d5)===_0x357cf4(0x4d5)){for(const _0x138f85 of _0x2f9cfd){if('FlcCt'===_0x357cf4(0x9bc))_0x285bc3=_0x394061;else{const _0x421535=_0x42f700(_0x138f85);if(_0x421535)return _0x421535;}}return null;}else _0x5b1c3b=_0x711817['parse'](_0xddcd51);}if(typeof _0x2f9cfd!==_0x357cf4(0x5ab))return null;const _0x113a75=_0x2f9cfd,_0x57a226=typeof _0x113a75['_name']===_0x357cf4(0x7fd)?_0x113a75[_0x357cf4(0x9d8)]:'',_0x1e7618=_0x113a75['serial_num'],_0x617d4a=/iphone|ipad/i['test'](_0x57a226);if(_0x617d4a&&typeof _0x1e7618==='string'&&/^[0-9A-Fa-f-]{20,}$/['test'](_0x1e7618))return _0x1e7618;for(const _0x55bc38 of Object[_0x357cf4(0x88a)](_0x113a75)){if(_0x357cf4(0xcc)===_0x357cf4(0x6db))_0x4b8122+=_0x125602[_0x357cf4(0x510)]();else{if(Array['isArray'](_0x55bc38)||typeof _0x55bc38===_0x357cf4(0x5ab)&&_0x55bc38!==null){const _0x98ea64=_0x42f700(_0x55bc38);if(_0x98ea64)return _0x98ea64;}}}return null;}function _0x391cce(_0x5453ad){const _0x1f56cd=_0x3ee7d6,_0x586a8d=[_0x1f56cd(0x364),'-project',_0x5453ad['projectPath'],'-scheme','WebDriverAgentRunner','-destination',_0x1f56cd(0x254)+_0x5453ad[_0x1f56cd(0x908)]];return _0x5453ad['derivedDataPath']&&_0x586a8d[_0x1f56cd(0x496)]('-derivedDataPath',_0x5453ad['derivedDataPath']),_0x586a8d;}function _0x5293e5(_0x26f19f){const _0x323708=_0x3ee7d6,_0x247e63=_0x26f19f[_0x323708(0x17e)]();if(_0x247e63['includes']('authentication\x20canceled')||_0x247e63[_0x323708(0x83f)]('failed\x20to\x20initialize\x20for\x20ui\x20testing'))return{'summary':'the\x20device\x20canceled\x20the\x20WebDriverAgent\x20UI-test\x20authentication','remediation':'This\x20happens\x20when\x20the\x20iPhone\x20is\x20asleep/locked\x20when\x20the\x20test\x20runner\x20starts,\x20OR\x20the\x20WebDriverAgentRunner\x20isn\x27t\x20trusted\x20yet.\x20First:\x20unlock\x20the\x20device\x20and\x20keep\x20it\x20awake\x20(set\x20Settings\x20→\x20Display\x20&\x20Brightness\x20→\x20Auto-Lock\x20→\x20Never),\x20then\x20retry.\x20If\x20it\x20still\x20fails,\x20establish\x20trust\x20once:\x20open\x20~/.mobile-mcp/WebDriverAgent/WebDriverAgent.xcodeproj\x20in\x20Xcode,\x20Run\x20the\x20WebDriverAgentRunner\x20scheme\x20on\x20the\x20iPhone,\x20accept\x20the\x20trust\x20prompt\x20(and\x20Settings\x20→\x20General\x20→\x20VPN\x20&\x20Device\x20Management).\x20After\x20that\x20the\x20cached\x20authentication\x20is\x20reused.'};if(_0x247e63['includes']('requires\x20a\x20development\x20team')||_0x247e63[_0x323708(0x83f)]('code\x20signing\x20is\x20required')||_0x247e63[_0x323708(0x83f)](_0x323708(0x76b))||_0x247e63['includes'](_0x323708(0x7d3))||_0x247e63['includes']('no\x20signing\x20certificate')||_0x247e63['includes'](_0x323708(0x670))||_0x247e63['includes'](_0x323708(0x6b7))||_0x247e63[_0x323708(0x83f)]('no\x20provisioning\x20profile')||_0x247e63[_0x323708(0x83f)]('requires\x20a\x20provisioning\x20profile')||_0x247e63['includes']('failed\x20to\x20create\x20provisioning\x20profile')||_0x247e63[_0x323708(0x83f)]('doesn\x27t\x20include\x20a\x20valid\x20provisioning'))return{'summary':'WebDriverAgent\x20has\x20no\x20valid\x20signing\x20for\x20this\x20device','remediation':'Open\x20~/.mobile-mcp/WebDriverAgent/WebDriverAgent.xcodeproj\x20in\x20Xcode,\x20select\x20the\x20WebDriverAgentRunner\x20target\x20→\x20Signing\x20&\x20Capabilities,\x20set\x20a\x20Development\x20Team,\x20and\x20run\x20it\x20once\x20on\x20the\x20iPhone\x20to\x20sign\x20+\x20cache\x20the\x20build.\x20Then\x20retry.'};if(_0x247e63['includes']('could\x20not\x20locate\x20device\x20support')||_0x247e63['includes']('devicesupport')||_0x247e63[_0x323708(0x83f)](_0x323708(0x7aa))||_0x247e63[_0x323708(0x83f)]('preparing\x20device'))return{'summary':_0x323708(0x90f),'remediation':_0x323708(0xe3)};if(_0x247e63['includes']('developer\x20mode'))return{'summary':_0x323708(0x66f),'remediation':'Enable\x20it\x20on\x20the\x20iPhone:\x20Settings\x20→\x20Privacy\x20&\x20Security\x20→\x20Developer\x20Mode\x20→\x20On,\x20restart\x20the\x20device,\x20then\x20retry.'};if(_0x247e63[_0x323708(0x83f)](_0x323708(0x53c))||_0x247e63['includes']('no\x20devices\x20are\x20booted')||_0x247e63['includes']('is\x20not\x20connected'))return{'summary':'xcodebuild\x20couldn\x27t\x20find\x20the\x20device','remediation':'Reconnect\x20the\x20iPhone\x20via\x20USB-C,\x20unlock\x20and\x20trust\x20this\x20Mac,\x20then\x20retry.'};if(_0x247e63['includes']('build\x20interrupted'))return{'summary':'the\x20WebDriverAgent\x20build\x20was\x20interrupted','remediation':'Usually\x20the\x20device\x20slept/locked\x20mid-build.\x20Unlock\x20it,\x20set\x20Auto-Lock\x20to\x20Never,\x20and\x20retry.'};return null;}var _0x53040b=class{constructor(_0xee894e=_0x474eb7){this['deps']=_0xee894e;}[_0x3ee7d6(0x91b)]=null;[_0x3ee7d6(0x139)]=null;[_0x3ee7d6(0x14e)]=null;[_0x3ee7d6(0x688)]=_0x1cde71;['isRunning'](){const _0x507d90=_0x3ee7d6;return this[_0x507d90(0x91b)]!==null&&this[_0x507d90(0x91b)]['exitCode']===null;}[_0x3ee7d6(0x3a9)](){const _0x13e80e=_0x3ee7d6;return _0x13e80e(0x26b)+this[_0x13e80e(0x688)];}async[_0x3ee7d6(0x41b)](_0x43e548={}){const _0x5368b9=_0x3ee7d6;if(this['inflight'])return this['inflight'];const _0x5e492c=this[_0x5368b9(0x6ee)](_0x43e548);this[_0x5368b9(0x14e)]=_0x5e492c;try{return await _0x5e492c;}finally{if(_0x5368b9(0xeb)!=='oCWut'){const _0x113bb7={'catalog':_0x5b6e79(_0x3bc3d5),'signedAt':_0x3c87b6};_0x14f45b!==void 0x0&&(_0x113bb7['libraryCatalog']=_0x24dcd4(_0x437f85));_0x27efc2!==void 0x0&&(_0x113bb7[_0x5368b9(0x123)]=_0x1ce091(_0xe0b55));const _0x50ba15=_0x556a75[_0x5368b9(0x2c1)](_0x2bb0d6(_0x113bb7));return new _0xd7565d()[_0x5368b9(0x2d1)](_0x50ba15);}else this['inflight']=null;}}async[_0x3ee7d6(0x6ee)](_0x441ba8){const _0x2ace7b=_0x3ee7d6;if(await this['deps']['probeStatus'](this[_0x2ace7b(0x688)],0x7d0))return{'ok':!![],'reason':'reused','baseUrl':this[_0x2ace7b(0x3a9)](),'port':this['port'],'projectPath':this['projectPath']??void 0x0};const _0x4fd043=await _0x16482e(this[_0x2ace7b(0x207)]);if(!_0x4fd043['ok'])return{'ok':![],'reason':_0x2ace7b(0x200),'error':_0x4fd043['remediation']};const _0x304818=await _0x55be9b(_0x441ba8['resolverUdid']??null,this[_0x2ace7b(0x207)]);if(!_0x304818)return{'ok':![],'reason':'hardware-udid-not-found','error':_0x2ace7b(0x2a7)};const _0x5bf5be=await this[_0x2ace7b(0x207)][_0x2ace7b(0x725)](_0x2ace7b(0x427),[_0x2ace7b(0x5d4)],0xfa0);if(_0x5bf5be[_0x2ace7b(0x845)]!==0x0||_0x5bf5be['stdout'][_0x2ace7b(0x5da)]()[_0x2ace7b(0x945)]===0x0)return _0x2ace7b(0x355)!==_0x2ace7b(0x355)?{'name':'claude-hooks','status':'error','details':{'error':_0x3bb214(_0x33646b)}}:{'ok':![],'reason':'xcodebuild-missing','error':_0x2ace7b(0xe7)};const _0x4ef761=_0x391cce({'projectPath':_0x4fd043['projectPath'],'hardwareUdid':_0x304818,'derivedDataPath':_0x441ba8['derivedDataPath']});let _0x35e853='';const _0x5ce5c8=_0x5e1fcf=>{const _0x46b35e=_0x2ace7b;_0x35e853+=_0x5e1fcf['toString'](),_0x35e853['length']>0x5dc0&&(_0x35e853=_0x35e853[_0x46b35e(0x63b)](-0x5dc0));};let _0x54a904;try{_0x54a904=this[_0x2ace7b(0x207)][_0x2ace7b(0x433)](_0x2ace7b(0x5d4),_0x4ef761,{'stdio':['ignore','pipe','pipe']});}catch(_0x9f4e4c){return{'ok':![],'reason':'xcodebuild-spawn-failed','error':_0x2ace7b(0x9d5)+(_0x9f4e4c instanceof Error?_0x9f4e4c[_0x2ace7b(0x92e)]:String(_0x9f4e4c))};}this[_0x2ace7b(0x91b)]=_0x54a904,this['projectPath']=_0x4fd043['projectPath'],_0x54a904[_0x2ace7b(0x91a)]?.['on'](_0x2ace7b(0x978),_0x5ce5c8),_0x54a904['stderr']?.['on']('data',_0x5ce5c8);const _0x1902ac=_0x441ba8['readinessTimeoutMs']??0x15f90,_0x25ed7c=_0x441ba8['readinessPollMs']??0x3e8,_0x514952=Date['now']()+_0x1902ac;let _0x32130f=![];_0x54a904['once'](_0x2ace7b(0x41e),()=>{if(this['child']===_0x54a904)this['child']=null;_0x32130f=!![];});while(Date['now']()<_0x514952){if(_0x2ace7b(0x7e3)!=='LuOox')_0x5888e4=(_0x21dbfd[_0x2ace7b(0x33f)]&&_0x25101e['default']['auth'])??_0x403eab['auth'];else{if(_0x32130f)break;const _0x5d80ca=await this['deps'][_0x2ace7b(0x571)](this[_0x2ace7b(0x688)],0x7d0);if(_0x32130f)break;if(_0x5d80ca){if(_0x2ace7b(0x834)!==_0x2ace7b(0x834))_0x5571fa={'matches':_0x4ecb34[_0x2ace7b(0x223)][_0x2ace7b(0x986)](_0x1541ba=>({'relPath':_0x1541ba['relPath'],'absPath':_0x1541ba['absPath']}))};else return{'ok':!![],'reason':_0x2ace7b(0x39d),'baseUrl':this[_0x2ace7b(0x3a9)](),'port':this[_0x2ace7b(0x688)],'projectPath':_0x4fd043['projectPath'],'hardwareUdid':_0x304818};}await new Promise(_0x4eede1=>setTimeout(_0x4eede1,_0x25ed7c));}}await this['stop']()['catch'](()=>void 0x0);const _0x3fbb7c=_0x5293e5(_0x35e853);if(_0x3fbb7c)return{'ok':![],'reason':_0x2ace7b(0x964),'error':'WebDriverAgent\x20could\x20not\x20start\x20—\x20'+_0x3fbb7c['summary']+'.','remediation':_0x3fbb7c[_0x2ace7b(0x5de)]};return{'ok':![],'reason':_0x2ace7b(0x964),'error':_0x32130f?'`xcodebuild\x20test`\x20exited\x20before\x20WebDriverAgent\x27s\x20HTTP\x20server\x20answered\x20on\x20:8100.\x20Most\x20common\x20cause:\x20the\x20WebDriverAgentRunner\x20target\x20has\x20no\x20valid\x20signing\x20for\x20this\x20device,\x20or\x20the\x20device\x20is\x20asleep/locked\x20(unlock\x20it\x20and\x20retry).\x20Open\x20the\x20project\x20in\x20Xcode,\x20set\x20a\x20Development\x20Team\x20on\x20the\x20WebDriverAgentRunner\x20target,\x20run\x20it\x20once\x20on\x20the\x20iPhone\x20to\x20sign\x20+\x20cache\x20the\x20build,\x20then\x20retry.':_0x2ace7b(0x1d0)+_0x1902ac+_0x2ace7b(0x2be)};}async['stop'](){const _0x218f5c=_0x3ee7d6,_0x491ef1=this['child'];this[_0x218f5c(0x91b)]=null;if(!_0x491ef1||_0x491ef1['exitCode']!==null)return{'stopped':![]};try{if(_0x218f5c(0xf3)===_0x218f5c(0x8a7))return this[_0x218f5c(0x136)](_0x3f236f[_0x218f5c(0x6fa)],_0x382f9b);else _0x491ef1['kill']('SIGTERM');}catch{return{'stopped':![]};}return await new Promise(_0x4fbf67=>{const _0x2fcc66=_0x218f5c;let _0x24fbc9=![],_0x1c4697=null,_0x36c920=null;const _0x57c215=()=>{if(_0x24fbc9)return;_0x24fbc9=!![];if(_0x1c4697)clearTimeout(_0x1c4697);if(_0x36c920)clearTimeout(_0x36c920);_0x4fbf67();};_0x491ef1[_0x2fcc66(0x9b5)](_0x2fcc66(0x41e),_0x57c215);if(_0x491ef1[_0x2fcc66(0x186)]!==null){_0x491ef1[_0x2fcc66(0x74c)](_0x2fcc66(0x41e),_0x57c215),_0x57c215();return;}_0x1c4697=setTimeout(()=>{const _0x202c07=_0x2fcc66;if(_0x24fbc9)return;try{_0x491ef1[_0x202c07(0x142)]('SIGKILL');}catch{}_0x36c920=setTimeout(()=>{const _0x4e29ae=_0x202c07;if(_0x24fbc9)return;_0x491ef1[_0x4e29ae(0x74c)]('exit',_0x57c215),_0x57c215();},0x7d0);},0x1388);}),{'stopped':!![]};}};import{spawn as _0x71717f}from'child_process';import*as _0xd0e62d from'net';import*as _0x23f543 from'plist';async function _0x543c66(_0x13953c,_0x927dd7,_0x33fe61=0x3a98){return new Promise(_0x1ed939=>{const _0x96733f=_0x4a5a;let _0x455c5b='',_0x43ef2e='',_0x229314;try{_0x229314=_0x71717f(_0x13953c,_0x927dd7,{'stdio':[_0x96733f(0x317),_0x96733f(0x406),_0x96733f(0x406)]});}catch(_0x39774d){_0x1ed939({'code':0x7f,'stdout':'','stderr':_0x39774d instanceof Error?_0x39774d[_0x96733f(0x92e)]:String(_0x39774d)});return;}const _0x5a53d3=setTimeout(()=>{const _0x314ea3=_0x96733f;try{_0x229314[_0x314ea3(0x142)](_0x314ea3(0x57c));}catch{}},_0x33fe61);_0x229314['stdout']?.['on']('data',_0x3a48c5=>{const _0x52f558=_0x96733f;_0x455c5b+=_0x3a48c5[_0x52f558(0x510)]();}),_0x229314['stderr']?.['on']('data',_0x39a64b=>{const _0x5a8b1e=_0x96733f;_0x43ef2e+=_0x39a64b[_0x5a8b1e(0x510)]();});let _0x5eb9df=![];_0x229314['on']('error',_0x11511f=>{if(_0x5eb9df)return;_0x5eb9df=!![],clearTimeout(_0x5a53d3),_0x1ed939({'code':0x7f,'stdout':_0x455c5b,'stderr':_0x43ef2e+(_0x11511f['message']??String(_0x11511f))});}),_0x229314['on'](_0x96733f(0x41e),_0x4bc330=>{if(_0x5eb9df)return;_0x5eb9df=!![],clearTimeout(_0x5a53d3),_0x1ed939({'code':_0x4bc330??0x1,'stdout':_0x455c5b,'stderr':_0x43ef2e});});});}function _0x3c53bf(_0x5ca239,_0x26e08c){return new Promise((_0x3d76dc,_0x545703)=>{const _0x3b7c91=_0x4a5a;if(_0x26e08c?.[_0x3b7c91(0x957)]){_0x545703(new Error('aborted'));return;}const _0x211dbf=setTimeout(()=>{const _0x544080=_0x3b7c91;_0x26e08c?.[_0x544080(0x257)](_0x544080(0x2d4),_0x56b023),_0x3d76dc();},_0x5ca239),_0x56b023=()=>{const _0x47e732=_0x3b7c91;clearTimeout(_0x211dbf),_0x26e08c?.['removeEventListener']('abort',_0x56b023),_0x545703(new Error(_0x47e732(0x957)));};_0x26e08c?.['addEventListener'](_0x3b7c91(0x2d4),_0x56b023,{'once':!![]});});}function _0x17eb27(){return new Promise((_0x5e503f,_0x1facd0)=>{const _0x57758a=_0x4a5a,_0x309116=_0xd0e62d[_0x57758a(0x3d9)](_0x57758a(0x8e0));let _0x3d7921=![];_0x309116[_0x57758a(0x9b5)](_0x57758a(0x261),()=>{const _0xbeb139=_0x57758a;if(_0x3d7921)return;_0x3d7921=!![],_0x309116[_0xbeb139(0x684)]('error',_0x9f1034),_0x5e503f(_0x309116);});const _0x9f1034=_0x4a5056=>{const _0x1e8ece=_0x57758a;if(_0x3d7921)return;_0x3d7921=!![];try{_0x309116[_0x1e8ece(0x7e4)]();}catch{}_0x1facd0(_0x4a5056);};_0x309116['once']('error',_0x9f1034);});}var _0x352a1c={'runner':_0x543c66,'sleep':_0x3c53bf,'now':()=>Date['now'](),'openSocket':_0x17eb27},_0x2a6313=0x1,_0x4a71d1=0x8,_0x249ddc=0x10;function _0x45717c(_0x14c125=0x1){const _0x5bf28a=_0x3ee7d6,_0x5a5815=_0x23f543['build']({'MessageType':_0x5bf28a(0x6f4),'ClientVersionString':_0x5bf28a(0x24b),'ProgName':'ceraph-react-native-mcp','kLibUSBMuxVersion':0x3}),_0x3faf6a=Buffer[_0x5bf28a(0x70f)](_0x5a5815,_0x5bf28a(0x140)),_0x16d55f=Buffer[_0x5bf28a(0x387)](_0x249ddc);return _0x16d55f['writeUInt32LE'](_0x249ddc+_0x3faf6a['length'],0x0),_0x16d55f[_0x5bf28a(0x86b)](_0x2a6313,0x4),_0x16d55f['writeUInt32LE'](_0x4a71d1,0x8),_0x16d55f['writeUInt32LE'](_0x14c125,0xc),Buffer[_0x5bf28a(0xe2)]([_0x16d55f,_0x3faf6a]);}var _0x38e834=class{['buf']=Buffer['alloc'](0x0);['feed'](_0x878da1){const _0x66ebd1=_0x3ee7d6;this['buf']=this['buf']['length']===0x0?_0x878da1:Buffer[_0x66ebd1(0xe2)]([this[_0x66ebd1(0x8b4)],_0x878da1]);const _0x54f6ca=[];while(this[_0x66ebd1(0x8b4)]['length']>=_0x249ddc){const _0x4ffbb0=this['buf']['readUInt32LE'](0x0);if(_0x4ffbb0<_0x249ddc||_0x4ffbb0>0x100000)return this['buf']=Buffer[_0x66ebd1(0x387)](0x0),_0x54f6ca;if(this[_0x66ebd1(0x8b4)]['length']<_0x4ffbb0)return _0x54f6ca;const _0x15abba=this[_0x66ebd1(0x8b4)]['subarray'](_0x249ddc,_0x4ffbb0);this[_0x66ebd1(0x8b4)]=this[_0x66ebd1(0x8b4)]['subarray'](_0x4ffbb0);const _0x288cf6=_0x557823(_0x15abba);if(_0x288cf6)_0x54f6ca['push']({'payload':_0x288cf6});}return _0x54f6ca;}};function _0x557823(_0x4a5bfc){const _0x906fa2=_0x3ee7d6;try{const _0x311063=_0x4a5bfc[_0x906fa2(0x510)]('utf8'),_0x3d311b=_0x23f543[_0x906fa2(0x229)](_0x311063);if(_0x3d311b&&typeof _0x3d311b===_0x906fa2(0x5ab)&&!Array['isArray'](_0x3d311b))return _0x3d311b;return null;}catch{return null;}}function _0x281e37(_0x41b6fd){const _0x56e80c=_0x3ee7d6,_0x6f4694=_0x41b6fd[_0x56e80c(0x7bb)]?.[_0x56e80c(0x598)]??[];if(_0x6f4694['length']===0x0)return null;const _0x20ad5e=_0x508bf8=>(_0x508bf8[_0x56e80c(0x979)]?.[_0x56e80c(0x54d)]?.['toLowerCase']()??'')[_0x56e80c(0x83f)](_0x56e80c(0x5c2)),_0x3a0f3e=_0x6f4694[_0x56e80c(0x7bd)](_0x2329ea=>{const _0x4e4790=_0x56e80c,_0x35981e=_0x2329ea[_0x4e4790(0x60c)]?.[_0x4e4790(0x4bf)]?.[_0x4e4790(0x17e)]()??'';return _0x20ad5e(_0x2329ea)&&_0x35981e==='connected';}),_0x331a6e=_0x3a0f3e??_0x6f4694['find'](_0x20ad5e);if(!_0x331a6e?.['identifier'])return null;return{'udid':_0x331a6e['identifier'],'name':_0x331a6e['deviceProperties']?.['name']??_0x331a6e['identifier']};}async function _0x1961a9(_0x4385bd){const _0xa86689=_0x3ee7d6,_0x1288f9=await _0x4385bd['runner'](_0xa86689(0x2d3),[_0xa86689(0x124),'list','devices','--json-output','-'],0x1f40);if(_0x1288f9[_0xa86689(0x845)]!==0x0)return null;try{const _0x421c22=JSON[_0xa86689(0x229)](_0x1288f9[_0xa86689(0x91a)]);return _0x281e37(_0x421c22);}catch{return null;}}function _0x4ac372(_0x4dd9b2){const _0x44cd7e=_0x3ee7d6;if(_0x4dd9b2[_0x44cd7e(0x211)]!=='Attached')return null;const _0x5775d7=_0x4dd9b2[_0x44cd7e(0x461)];if(!_0x5775d7||typeof _0x5775d7!=='object')return null;const _0x44c0f5=_0x5775d7['SerialNumber'];if(typeof _0x44c0f5!=='string'||_0x44c0f5['length']===0x0)return null;const _0x326ff1=_0x5775d7['DeviceName'],_0x3c2903=typeof _0x326ff1===_0x44cd7e(0x7fd)&&_0x326ff1[_0x44cd7e(0x945)]>0x0?_0x326ff1:void 0x0;return{'udid':_0x44c0f5,'name':_0x3c2903};}async function _0x32b680(_0x247e5f={},_0x2d0f80=_0x352a1c){const _0x5ce7a0=_0x3ee7d6,_0x36db35=_0x247e5f['signal'],_0x6d8734=_0x2d0f80[_0x5ce7a0(0x3d1)]??(()=>Date['now']());if(_0x36db35?.[_0x5ce7a0(0x957)])throw new Error(_0x5ce7a0(0x957));const _0x39ae0d=_0x6d8734(),_0x32b7e6=await _0x1961a9(_0x2d0f80);if(_0x32b7e6)return{'deviceFound':!![],'udid':_0x32b7e6['udid'],'name':_0x32b7e6['name'],'waitedMs':0x0,'source':'usbmuxd'};if(_0x36db35?.['aborted'])throw new Error(_0x5ce7a0(0x957));const _0x1f5ef3=_0x2d0f80['openSocket']??_0x17eb27;let _0x262b40;try{_0x262b40=await _0x1f5ef3();}catch{return process[_0x5ce7a0(0x870)][_0x5ce7a0(0x65a)](_0x5ce7a0(0x382)),_0x42f311(_0x247e5f,_0x2d0f80,_0x39ae0d);}return _0x569670(_0x262b40,_0x247e5f,_0x2d0f80,_0x39ae0d);}function _0x569670(_0x2fa64c,_0x3cfffa,_0x41d774,_0xb32e04){const _0x56a8a1=_0x3ee7d6,_0x4b1bfd=_0x3cfffa['signal'],_0xd2ae16=_0x41d774[_0x56a8a1(0x3d1)]??(()=>Date[_0x56a8a1(0x3d1)]());return new Promise((_0x216e9e,_0x486c53)=>{const _0x210ec7=_0x56a8a1,_0x49a8f9=new _0x38e834();let _0x114e1b=![],_0x4348c2;const _0x2714e9=()=>{const _0x4c43c5=_0x4a5a;_0x114e1b=!![];if(_0x4348c2)clearTimeout(_0x4348c2);if(_0x4b1bfd)_0x4b1bfd[_0x4c43c5(0x257)](_0x4c43c5(0x2d4),_0x27231d);try{_0x2fa64c['destroy']();}catch{}},_0xf7ae1b=_0x7ac359=>{if(_0x114e1b)return;_0x2714e9(),_0x216e9e(_0x7ac359);},_0x3c14dd=_0x569d6d=>{if(_0x114e1b)return;_0x2714e9(),_0x486c53(_0x569d6d);},_0x27231d=()=>_0x3c14dd(new Error('aborted')),_0x30a13c=_0x33ada7=>{const _0x32a066=_0x4a5a;if(_0x114e1b)return;_0x2714e9(),_0x42f311(_0x3cfffa,_0x41d774,_0xb32e04)[_0x32a066(0x4cf)](_0x216e9e,_0x486c53);},_0x229d87=()=>{const _0x10a9e1=_0x4a5a;if(_0x114e1b)return;_0x2714e9(),_0x42f311(_0x3cfffa,_0x41d774,_0xb32e04)[_0x10a9e1(0x4cf)](_0x216e9e,_0x486c53);},_0x36ee13=_0x37eb9e=>{const _0x5c3c7f=_0x4a5a;if(_0x114e1b)return;const _0x2e98d6=_0x49a8f9['feed'](_0x37eb9e);for(const _0x36fe20 of _0x2e98d6){const _0x36d976=_0x4ac372(_0x36fe20[_0x5c3c7f(0x836)]);if(_0x36d976){if('hRjMZ'==='hRjMZ'){_0xf7ae1b({'deviceFound':!![],'udid':_0x36d976['udid'],'name':_0x36d976['name'],'waitedMs':_0xd2ae16()-_0xb32e04,'source':'usbmuxd'});return;}else{const _0x4800c6='\x22'+_0x142ce3['key']+'\x22,',_0x4c504c=_0x4800c6[_0x5c3c7f(0x494)](_0x5c8b03+0x1,'\x20');return _0x5c3c7f(0x975)+_0x4c504c+_0x5c3c7f(0x40b)+_0x36b6a8['relativePath']+_0x5c3c7f(0x5cd);}}}};_0x2fa64c['on'](_0x210ec7(0x978),_0x36ee13),_0x2fa64c['on'](_0x210ec7(0x125),_0x30a13c),_0x2fa64c['on']('close',_0x229d87);_0x4b1bfd&&_0x4b1bfd[_0x210ec7(0x82b)](_0x210ec7(0x2d4),_0x27231d,{'once':!![]});if(typeof _0x3cfffa[_0x210ec7(0x5aa)]===_0x210ec7(0x513)&&_0x3cfffa[_0x210ec7(0x5aa)]>0x0){const _0x2e655a=_0x3cfffa[_0x210ec7(0x5aa)]-(_0xd2ae16()-_0xb32e04),_0x1a79fa=Math['max'](_0x2e655a,0x0);_0x4348c2=setTimeout(()=>{const _0x44951a=_0x210ec7;_0x3c14dd(new Error(_0x564e01(_0x3cfffa[_0x44951a(0x5aa)])));},_0x1a79fa);}try{_0x2fa64c['write'](_0x45717c());}catch(_0x45417e){if(_0x114e1b)return;_0x2714e9(),_0x42f311(_0x3cfffa,_0x41d774,_0xb32e04)[_0x210ec7(0x4cf)](_0x216e9e,_0x486c53);}});}function _0x564e01(_0x5b0ccd){const _0x7a5a07=_0x3ee7d6,_0x2e3de7=Math['round'](_0x5b0ccd/0xea60),_0x3ba56a=_0x2e3de7===0x1?'1\x20minute':_0x2e3de7+_0x7a5a07(0x596);return'No\x20device\x20connected\x20after\x20'+_0x3ba56a+_0x7a5a07(0xf6);}async function _0x42f311(_0x2932a2,_0x50c176,_0x55131b){const _0x450049=_0x3ee7d6,_0x246af2=_0x2932a2['fallbackPollIntervalMs']??0x2710,_0x3cdd60=_0x2932a2['signal'],_0x53ac3d=_0x50c176['sleep']??_0x3c53bf,_0x48a8fe=_0x50c176['now']??(()=>Date['now']());while(!![]){if(_0x3cdd60?.['aborted'])throw new Error(_0x450049(0x957));if(typeof _0x2932a2[_0x450049(0x5aa)]===_0x450049(0x513)&&_0x2932a2['timeoutMs']>0x0){const _0x53eee9=_0x48a8fe()-_0x55131b,_0x39c205=_0x2932a2['timeoutMs']-_0x53eee9;if(_0x39c205<=0x0)throw new Error(_0x564e01(_0x2932a2[_0x450049(0x5aa)]));const _0x1d8171=Math['min'](_0x246af2,_0x39c205);try{await _0x53ac3d(_0x1d8171,_0x3cdd60);}catch(_0x3dd055){if(_0x3dd055 instanceof Error&&_0x3dd055['message']===_0x450049(0x957))throw _0x3dd055;throw new Error('wait-for-device\x20sleep\x20failed:\x20'+(_0x3dd055 instanceof Error?_0x3dd055[_0x450049(0x92e)]:String(_0x3dd055)));}}else try{'rVSEy'!=='cXgRu'?await _0x53ac3d(_0x246af2,_0x3cdd60):_0x46258e=_0x13ef10[_0x450049(0x229)](_0x4741b1);}catch(_0x1e3fca){if(_0x1e3fca instanceof Error&&_0x1e3fca['message']==='aborted')throw _0x1e3fca;throw new Error('wait-for-device\x20sleep\x20failed:\x20'+(_0x1e3fca instanceof Error?_0x1e3fca[_0x450049(0x92e)]:String(_0x1e3fca)));}if(_0x3cdd60?.['aborted'])throw new Error(_0x450049(0x957));const _0x5f064a=await _0x1961a9(_0x50c176);if(_0x5f064a)return{'deviceFound':!![],'udid':_0x5f064a['udid'],'name':_0x5f064a[_0x450049(0x4d1)],'waitedMs':_0x48a8fe()-_0x55131b,'source':'polling-fallback'};}}import{readdir as _0x3edeea,rename as _0x55f653,unlink,writeFile as _0x4bba83,mkdir as _0x46bc87,stat as _0x5cf14b}from'fs/promises';import{isAbsolute,join as _0x223bcf,relative as _0x45b77a}from'path';var _0xf57040=['jpg',_0x3ee7d6(0x3df),'png','webp','heic'],_0x5ac7b5=_0x223bcf(_0x3ee7d6(0x5d3),_0x3ee7d6(0x2b1)),_0x6ec882=0x5*0x400*0x400,_0x4f4a58=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,_0x27f090=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,_0x58b24e=class extends Error{[_0x3ee7d6(0x845)];['remediation'];constructor(_0x5e0b92,_0x16a29d,_0x5ee35d){const _0x58b4b0=_0x3ee7d6;super(_0x16a29d),this['name']=_0x58b4b0(0x5e8),this[_0x58b4b0(0x845)]=_0x5e0b92,this['remediation']=_0x5ee35d;}};function _0x5b7c90(_0x1f548a){const _0x841689=_0x3ee7d6;if(typeof _0x1f548a!==_0x841689(0x7fd)||_0x1f548a[_0x841689(0x945)]===0x0)throw new _0x58b24e('invalid-image-key','imageKey\x20is\x20required.','Pass\x20a\x20non-empty\x20`imageKey`\x20like\x20`\x22profile\x22`\x20or\x20`\x22handwriting-sample-1\x22`.');if(_0x1f548a[_0x841689(0x945)]>0x40)throw new _0x58b24e(_0x841689(0x4f5),_0x841689(0x1be)+_0x1f548a+_0x841689(0x535),_0x841689(0x8ce));if(!_0x4f4a58['test'](_0x1f548a))throw new _0x58b24e(_0x841689(0x4f5),_0x841689(0x1be)+_0x1f548a+'\x27\x20must\x20be\x20lowercase\x20letters/digits\x20separated\x20by\x20single\x20hyphens.',_0x841689(0x2c2));}function _0x25c6e8(_0x2fa61e){const _0x3f65ab=_0x3ee7d6;if(typeof _0x2fa61e!==_0x3f65ab(0x7fd)||_0x2fa61e['length']===0x0)throw new _0x58b24e('invalid-subdir','subDir\x20was\x20provided\x20but\x20is\x20empty.',_0x3f65ab(0x8ea));if(_0x2fa61e[_0x3f65ab(0x945)]>0x40)throw new _0x58b24e(_0x3f65ab(0x1fb),'subDir\x20\x27'+_0x2fa61e+'\x27\x20is\x20longer\x20than\x2064\x20characters.',_0x3f65ab(0x9df));if(!_0x27f090[_0x3f65ab(0x364)](_0x2fa61e))throw new _0x58b24e(_0x3f65ab(0x1fb),'subDir\x20\x27'+_0x2fa61e+'\x27\x20must\x20be\x20a\x20single\x20lowercase\x20segment.','Use\x20only\x20[a-z0-9-],\x20no\x20slashes,\x20no\x20`..`,\x20no\x20leading\x20`/`.\x20Example:\x20`id-documents`.');}function _0x525f56(_0x3ffde6){const _0x309393=_0x3ee7d6;if(_0x3ffde6[_0x309393(0x945)]<0xc)return null;if(_0x3ffde6[0x0]===0xff&&_0x3ffde6[0x1]===0xd8&&_0x3ffde6[0x2]===0xff)return{'ext':_0x309393(0x12c),'mime':_0x309393(0x4ed)};if(_0x3ffde6[0x0]===0x89&&_0x3ffde6[0x1]===0x50&&_0x3ffde6[0x2]===0x4e&&_0x3ffde6[0x3]===0x47&&_0x3ffde6[0x4]===0xd&&_0x3ffde6[0x5]===0xa&&_0x3ffde6[0x6]===0x1a&&_0x3ffde6[0x7]===0xa)return{'ext':'png','mime':_0x309393(0x694)};if(_0x3ffde6[0x0]===0x52&&_0x3ffde6[0x1]===0x49&&_0x3ffde6[0x2]===0x46&&_0x3ffde6[0x3]===0x46&&_0x3ffde6[0x8]===0x57&&_0x3ffde6[0x9]===0x45&&_0x3ffde6[0xa]===0x42&&_0x3ffde6[0xb]===0x50){if(_0x309393(0x451)!=='QgyPU')return{'ext':_0x309393(0x70b),'mime':'image/webp'};else{if(this['timer'])return;this[_0x309393(0x2e3)]=_0x483e75(()=>{const _0x4e291a=_0x309393;void this[_0x4e291a(0x5e4)]();},this['intervalMs']),this[_0x309393(0x2e3)]['unref']?.();}}if(_0x3ffde6[0x4]===0x66&&_0x3ffde6[0x5]===0x74&&_0x3ffde6[0x6]===0x79&&_0x3ffde6[0x7]===0x70){const _0x11bfc7=String[_0x309393(0x49d)](_0x3ffde6[0x8]??0x0,_0x3ffde6[0x9]??0x0,_0x3ffde6[0xa]??0x0,_0x3ffde6[0xb]??0x0),_0x33b4db=new Set([_0x309393(0x600),'heix','hevc','hevx',_0x309393(0x199),'heis',_0x309393(0x462),'msf1']);if(_0x33b4db['has'](_0x11bfc7))return{'ext':_0x309393(0x600),'mime':'image/heic'};}return null;}function _0xbb38d1(_0x3a3af6){const _0x5b102b=_0x3ee7d6;if(!_0x3a3af6||typeof _0x3a3af6!==_0x5b102b(0x7fd))return null;const _0x4355b9=_0x3a3af6['trim']()[_0x5b102b(0x17e)]();if(_0x4355b9[_0x5b102b(0x945)]===0x0)return null;let _0xad3a85=_0x4355b9;if(_0xad3a85['startsWith']('image/'))_0xad3a85=_0xad3a85[_0x5b102b(0x63b)](_0x5b102b(0x1c9)['length']);if(_0xad3a85[_0x5b102b(0x887)]('.'))_0xad3a85=_0xad3a85[_0x5b102b(0x63b)](0x1);const _0x4510c7=_0xad3a85['indexOf'](';');if(_0x4510c7>=0x0)_0xad3a85=_0xad3a85[_0x5b102b(0x63b)](0x0,_0x4510c7)['trim']();if(_0xad3a85==='jpeg'||_0xad3a85==='jpg')return _0x5b102b(0x12c);if(_0xad3a85===_0x5b102b(0x591))return _0x5b102b(0x591);if(_0xad3a85===_0x5b102b(0x70b))return _0x5b102b(0x70b);if(_0xad3a85==='heic'||_0xad3a85===_0x5b102b(0x180))return'heic';return null;}async function _0x5dfae6(_0x4885bf,_0x194dea){const _0x2f9150=_0x3ee7d6;let _0x3ba090;try{const _0xd68dae=await _0x5cf14b(_0x4885bf);if(!_0xd68dae[_0x2f9150(0x42a)]())return null;_0x3ba090=await _0x3edeea(_0x4885bf);}catch{return null;}const _0x457be6=_0x194dea['toLowerCase']();for(const _0x112a03 of _0x3ba090){const _0x529bac=_0x112a03['lastIndexOf']('.');if(_0x529bac<=0x0)continue;const _0x55b5f0=_0x112a03['slice'](0x0,_0x529bac);if(_0x55b5f0['toLowerCase']()!==_0x457be6)continue;const _0x21a2e2=_0x112a03[_0x2f9150(0x63b)](_0x529bac)['toLowerCase'](),_0x115179=_0x21a2e2[_0x2f9150(0x887)]('.')?_0x21a2e2[_0x2f9150(0x63b)](0x1):_0x21a2e2;if(!_0xf57040['includes'](_0x115179))continue;return{'absolutePath':_0x223bcf(_0x4885bf,_0x112a03),'ext':_0x115179};}return null;}async function _0x36607e(_0x3e5db5,_0x6d0da5,_0x3a439c={}){const _0x4fd47b=_0x3ee7d6,{imageKey:_0x35860f,imageBase64:_0x138d0f,contentType:_0x399092,overwrite:_0x49a164,subDir:_0x98818e}=_0x6d0da5,_0x523fb4=_0x3a439c['syncCameraRegistry']??_0x280e91;_0x5b7c90(_0x35860f);_0x98818e!==void 0x0&&_0x98818e!==''&&_0x25c6e8(_0x98818e);if(typeof _0x138d0f!==_0x4fd47b(0x7fd)||_0x138d0f[_0x4fd47b(0x945)]===0x0)throw new _0x58b24e('invalid-base64','imageBase64\x20is\x20required\x20and\x20must\x20be\x20a\x20non-empty\x20string.','Pass\x20the\x20base64-encoded\x20image\x20bytes\x20(without\x20a\x20`data:`\x20prefix).');const _0x519937=_0x138d0f['startsWith']('data:')?_0x138d0f[_0x4fd47b(0x63b)](_0x138d0f[_0x4fd47b(0x747)](',')+0x1):_0x138d0f,_0x284f27=Math['ceil'](_0x6ec882*0x4/0x3)+0x20;if(_0x519937[_0x4fd47b(0x945)]>_0x284f27){const _0x36667d=(_0x519937['length']*0x3/0x4/(0x400*0x400))['toFixed'](0x2);throw new _0x58b24e('image-too-large',_0x4fd47b(0x77e)+_0x36667d+'\x20MB\x20which\x20exceeds\x20the\x205\x20MB\x20cap.','Resize\x20or\x20recompress\x20the\x20image\x20before\x20uploading.\x20Test\x20fixtures\x20rarely\x20need\x20to\x20be\x20larger\x20than\x201\x20MB.\x20Cap:\x205\x20MB.');}const _0x2669f2=Buffer[_0x4fd47b(0x70f)](_0x519937,'base64');if(_0x2669f2['length']===0x0){if(_0x4fd47b(0x1af)!=='bTCcP')_0x318d93=_0x299e3f('xcodebuild',['-showBuildSettings','-json',_0x4fd47b(0x677),_0x6beb5],{'cwd':_0xceb9aa,'stdio':[_0x4fd47b(0x317),'pipe',_0x4fd47b(0x317)]});else throw new _0x58b24e(_0x4fd47b(0x765),'imageBase64\x20decoded\x20to\x20zero\x20bytes.','Verify\x20the\x20base64\x20string\x20is\x20intact\x20and\x20not\x20a\x20placeholder.');}if(_0x2669f2['length']>_0x6ec882){const _0x31ce6e=(_0x2669f2['length']/(0x400*0x400))['toFixed'](0x2);throw new _0x58b24e('image-too-large',_0x4fd47b(0x30a)+_0x31ce6e+'\x20MB\x20which\x20exceeds\x20the\x205\x20MB\x20cap.',_0x4fd47b(0x3f2));}const _0x2ea9ee=_0x525f56(new Uint8Array(_0x2669f2[_0x4fd47b(0x6cf)],_0x2669f2['byteOffset'],_0x2669f2['byteLength']));if(!_0x2ea9ee){if(_0x4fd47b(0x925)===_0x4fd47b(0x925))throw new _0x58b24e('unsupported-image-format','Could\x20not\x20detect\x20a\x20supported\x20image\x20format\x20from\x20the\x20decoded\x20bytes.','Supported\x20formats:\x20JPEG,\x20PNG,\x20WebP,\x20HEIC.\x20Re-export\x20the\x20image\x20in\x20one\x20of\x20these\x20and\x20try\x20again.');else _0x5e2192['push']({'path':_0x272531,'status':'not-found'});}const _0x4b38d9=[];if(_0x399092!==void 0x0&&_0x399092!==''){const _0x4e632f=_0xbb38d1(_0x399092);if(_0x4e632f===null)_0x4b38d9[_0x4fd47b(0x496)]({'code':_0x4fd47b(0x8ef),'message':'contentType\x20\x27'+_0x399092+_0x4fd47b(0x5b5)+_0x2ea9ee['mime']+'\x27\x20instead.'});else _0x4e632f!==_0x2ea9ee[_0x4fd47b(0x94d)]&&_0x4b38d9[_0x4fd47b(0x496)]({'code':'content-type-mismatch','message':_0x4fd47b(0x62a)+_0x399092+_0x4fd47b(0x58e)+_0x2ea9ee['mime']+'\x27\x20—\x20trusting\x20the\x20bytes.'});}if(_0x2669f2[_0x4fd47b(0x945)]>0x1*0x400*0x400){const _0x12a182=(_0x2669f2[_0x4fd47b(0x945)]/(0x400*0x400))['toFixed'](0x2);_0x4b38d9[_0x4fd47b(0x496)]({'code':_0x4fd47b(0x89e),'message':_0x4fd47b(0x30a)+_0x12a182+_0x4fd47b(0x9ee)});}const _0x16d453=_0x223bcf(_0x3e5db5,_0x5ac7b5),_0x41e3f3=_0x98818e!==void 0x0&&_0x98818e!==''?_0x223bcf(_0x16d453,_0x98818e):_0x16d453,_0x181bde=_0x45b77a(_0x16d453,_0x41e3f3);if(_0x181bde['startsWith']('..')||isAbsolute(_0x181bde)||_0x181bde['includes']('\x00'))throw new _0x58b24e('path-traversal','Resolved\x20subDir\x20escapes\x20.ceraph/camera-images/:\x20'+_0x41e3f3,_0x4fd47b(0x792));const _0x199028=_0x2ea9ee['ext'],_0x2b7a11=_0x223bcf(_0x41e3f3,_0x35860f+'.'+_0x199028),_0x28ac19=await _0x5dfae6(_0x41e3f3,_0x35860f);let _0x1652e9,_0x5cc3a5=![];if(_0x28ac19){if(!_0x49a164){const _0x59bfaa=_0x45b77a(_0x3e5db5,_0x28ac19['absolutePath']);throw new _0x58b24e('collision','The\x20imageKey\x20\x27'+_0x35860f+_0x4fd47b(0x746)+_0x59bfaa+'.','Pass\x20`overwrite:\x20true`\x20to\x20replace\x20it,\x20or\x20pick\x20a\x20different\x20imageKey.');}_0x5cc3a5=!![];}await _0x46bc87(_0x41e3f3,{'recursive':!![]});if(_0x28ac19&&_0x28ac19['ext']===_0x199028&&_0x28ac19[_0x4fd47b(0x1c8)]!==_0x2b7a11&&_0x28ac19['absolutePath'][_0x4fd47b(0x17e)]()===_0x2b7a11['toLowerCase']())try{await _0x55f653(_0x28ac19[_0x4fd47b(0x1c8)],_0x2b7a11);}catch(_0x25a75b){void _0x25a75b;}await _0x4bba83(_0x2b7a11,_0x2669f2);if(_0x28ac19){const _0x3516ae=_0x28ac19['absolutePath'],_0x62f004=_0x2b7a11,_0x21440b=_0x3516ae['toLowerCase']()===_0x62f004[_0x4fd47b(0x17e)](),_0x18e04d=_0x28ac19['ext']!==_0x199028,_0x2e3b65=!_0x21440b&&_0x3516ae!==_0x62f004;if(!_0x21440b&&(_0x18e04d||_0x2e3b65))try{await unlink(_0x3516ae),_0x1652e9=_0x45b77a(_0x3e5db5,_0x3516ae);}catch(_0x3bd7b1){throw new _0x58b24e(_0x4fd47b(0x15b),'New\x20image\x20was\x20written\x20but\x20failed\x20to\x20remove\x20stale\x20'+_0x45b77a(_0x3e5db5,_0x3516ae)+':\x20'+(_0x3bd7b1 instanceof Error?_0x3bd7b1[_0x4fd47b(0x92e)]:String(_0x3bd7b1)),_0x4fd47b(0x81e));}}let _0x3a0ff1;try{if(_0x4fd47b(0x4f7)!=='rdGPO')_0x3a0ff1=await _0x523fb4(_0x3e5db5);else return _0x20f0d3(this[_0x4fd47b(0xd9)],_0x3d6c6a);}catch(_0x5af9e9){throw new _0x58b24e(_0x4fd47b(0x39e),'Image\x20was\x20written\x20but\x20registry\x20sync\x20failed:\x20'+(_0x5af9e9 instanceof Error?_0x5af9e9['message']:String(_0x5af9e9)),_0x4fd47b(0x2e1));}return{'written':_0x45b77a(_0x3e5db5,_0x2b7a11),'registry':_0x10fa2a(_0x3e5db5,_0x3a0ff1[_0x4fd47b(0x6a9)]),'registered':_0x3a0ff1['registered'][_0x4fd47b(0x986)](_0xb4d347=>_0xb4d347['key']),'detectedContentType':_0x2ea9ee[_0x4fd47b(0x28c)],'detectedExt':_0x2ea9ee[_0x4fd47b(0x94d)],'replaced':_0x5cc3a5,'removedSiblingPath':_0x1652e9,'bytes':_0x2669f2[_0x4fd47b(0x945)],'warnings':_0x4b38d9,'registryState':_0x3a0ff1['writtenOrUnchanged']};}import{createServer as _0x5f2f42}from'http';var _0x3bb2a2=0x1fa5,_0x78fdbd=0x80*0x400,_0x310035=0x40*0x400,_0x25470e=0x100*0x400,_0x135476=0xc8,_0x44e8fb=new Set([_0x3ee7d6(0x6b4),'js-error','unhandled-rejection','network-error',_0x3ee7d6(0x127),_0x3ee7d6(0x2ea),'optimistic-rollback',_0x3ee7d6(0x1ee),'redbox']),_0x4ef1fa=_0x3ee7d6(0x8a2),_0x5722a3='async-storage-read',_0x286528=_0x3ee7d6(0x793),_0x5cda45='testid-sentinel',_0x36f438=0x64,_0x12e7c7='127.0.0.1';function _0x9a373a(_0x5dcc22){const _0x2e8eff=_0x3ee7d6;if(_0x5dcc22['ok'])return{'message':_0x2e8eff(0x45c)+_0x5dcc22[_0x2e8eff(0x688)],'fatal':![],'status':_0x2e8eff(0x67c)};if(_0x5dcc22['errorCode']==='EADDRINUSE')return{'message':_0x2e8eff(0x2b4)+_0x5dcc22[_0x2e8eff(0x688)]+_0x2e8eff(0x482)+_0x5dcc22[_0x2e8eff(0x688)]+')\x20and\x20this\x20session\x20reclaims\x20it\x20automatically.','fatal':![],'status':'port-conflict'};return{'message':_0x2e8eff(0x82f)+_0x5dcc22['port']+':\x20'+_0x5dcc22[_0x2e8eff(0x125)]+_0x2e8eff(0x84c),'fatal':![],'status':'bind-failed'};}var _0x196e72=0x1f40,_0x195a45=class{constructor(_0x4a712e,_0x106911={}){const _0x3fa731=_0x3ee7d6;this[_0x3fa731(0x172)]=_0x4a712e,this[_0x3fa731(0x688)]=_0x106911['port']??_0x3bb2a2,this['hostOverride']=_0x106911['host']??null,this['onSignal']=_0x106911[_0x3fa731(0x864)];}['server']=null;['port'];['hostOverride'];[_0x3ee7d6(0x3ec)]=![];[_0x3ee7d6(0x122)]=[];[_0x3ee7d6(0x907)]=0x0;[_0x3ee7d6(0x99c)]=[];['bootWriteCount']=0x0;[_0x3ee7d6(0x2f6)]=null;[_0x3ee7d6(0x717)]=new Map();[_0x3ee7d6(0x51a)]=null;[_0x3ee7d6(0x864)];[_0x3ee7d6(0x7b0)]=[];['pendingCommandAcks']=new Map();['commandSeq']=0x0;[_0x3ee7d6(0x2ff)]=null;['setOnSignal'](_0xbba956){const _0x5bf1ca=_0x3ee7d6;this[_0x5bf1ca(0x864)]=_0xbba956;}['enqueueCommand'](_0x4f3884){const _0x794012=_0x3ee7d6;this['commandSeq']+=0x1;const _0x1cf665=_0x794012(0x86e)+this['commandSeq']+'-'+_0x4f3884;return this['commandQueue']['push']({'id':_0x1cf665,'type':_0x4f3884}),new Promise(_0x4979a2=>{const _0x470a97=_0x794012,_0x59d28c=setTimeout(()=>{const _0x17f872=_0x4a5a;this['pendingCommandAcks']['delete'](_0x1cf665),this[_0x17f872(0x7b0)]=this[_0x17f872(0x7b0)][_0x17f872(0x65c)](_0x52959c=>_0x52959c['id']!==_0x1cf665),_0x4979a2({'acked':![]});},_0x196e72);_0x59d28c[_0x470a97(0x60e)]?.(),this['pendingCommandAcks']['set'](_0x1cf665,{'resolve':_0x1d0494=>_0x4979a2({'acked':!![],'ok':_0x1d0494['ok'],'detail':_0x1d0494['detail']}),'timer':_0x59d28c});});}[_0x3ee7d6(0x51c)](){const _0x3d1ba6=_0x3ee7d6,_0x28cea0=this['commandQueue'];return this[_0x3d1ba6(0x7b0)]=[],_0x28cea0;}['resolveCommandAck'](_0x2b3b14){const _0x5d8ba7=_0x3ee7d6,_0x5d1161=this[_0x5d8ba7(0x33d)][_0x5d8ba7(0x47a)](_0x2b3b14['id']);if(!_0x5d1161)return;clearTimeout(_0x5d1161[_0x5d8ba7(0x2e3)]),this[_0x5d8ba7(0x33d)][_0x5d8ba7(0x14d)](_0x2b3b14['id']),_0x5d1161[_0x5d8ba7(0x75f)](_0x2b3b14);}[_0x3ee7d6(0x937)](_0x11eed3){const _0x246a18=_0x3ee7d6;if(_0x11eed3){this[_0x246a18(0x122)]=[],this[_0x246a18(0x907)]=0x0,this['bootWriteCount']=0x0,this[_0x246a18(0x99c)]=[],this[_0x246a18(0x3ec)]=!![];return;}this[_0x246a18(0x3ec)]=![];}[_0x3ee7d6(0x972)](){const _0x5eb45b=_0x3ee7d6;return this['asyncStorageReadBuffer'][_0x5eb45b(0x63b)]();}async[_0x3ee7d6(0x17f)](_0x700f09){const _0xbc3a06=_0x3ee7d6;await this[_0xbc3a06(0x172)]['appendShimSignal'](_0x700f09);if(this[_0xbc3a06(0x864)])try{if('CuzFn'!=='CuzFn')return{'ok':!![],'severity':'error','message':_0xbc3a06(0x550)+_0x42a31d+_0xbc3a06(0x8fa)+_0x1496da['name']+(_0x216e97[_0xbc3a06(0x892)]?'\x20v'+_0x253233['version']:'')+').','details':{'bundleId':_0x3d3bec,'name':_0x1b5df9[_0xbc3a06(0x4d1)],'version':_0x31288f[_0xbc3a06(0x892)]}};else this[_0xbc3a06(0x864)](_0x700f09);}catch{}}['getLatestTestIdSentinel'](){return this['latestTestIdSentinel'];}['bootWriteCounter'](){return this['bootWriteCount'];}['drainBootRequests'](){const _0x3f9767=_0x3ee7d6;return this[_0x3f9767(0x122)][_0x3f9767(0x63b)]();}['clearBootRequests'](){const _0x367e25=_0x3ee7d6;this['bootBuffer']=[],this[_0x367e25(0x907)]=0x0,this['asyncStorageReadBuffer']=[];}async[_0x3ee7d6(0x41b)](){const _0x16e369=_0x3ee7d6,_0x156b9e=this[_0x16e369(0x1a3)]??_0x12e7c7;return new Promise(_0x1db7fc=>{const _0x9c17d1=_0x16e369,_0x6c6aac=_0x5f2f42((_0x279178,_0x15563e)=>this[_0x9c17d1(0x3c0)](_0x279178,_0x15563e));_0x6c6aac['once']('error',_0x5c5366=>{const _0xfa2988=_0x9c17d1;_0x6c6aac['close'](()=>{}),_0x1db7fc({'ok':![],'port':this[_0xfa2988(0x688)],'error':_0x5c5366['message']??_0x5c5366['code']??_0xfa2988(0x252),'errorCode':_0x5c5366[_0xfa2988(0x845)]});}),_0x6c6aac['listen'](this[_0x9c17d1(0x688)],_0x156b9e,()=>{const _0x1ebb42=_0x9c17d1;this[_0x1ebb42(0x239)]=_0x6c6aac,_0x1db7fc({'ok':!![],'port':this['port']});});});}['hasReceivedDeviceContact'](){const _0x33b373=_0x3ee7d6;return this[_0x33b373(0x2ff)]!==null;}[_0x3ee7d6(0x5b3)](){return this['server']!==null;}async['ensureListening'](){const _0x369bb4=_0x3ee7d6;if(this[_0x369bb4(0x239)]!==null)return{'ok':!![],'port':this[_0x369bb4(0x688)]};return this[_0x369bb4(0x41b)]();}async[_0x3ee7d6(0x2bf)](){const _0x5b0c88=_0x3ee7d6,_0x194743=this['server'];if(!_0x194743)return;this[_0x5b0c88(0x239)]=null,await new Promise(_0x4d2b70=>_0x194743[_0x5b0c88(0x4ae)](()=>_0x4d2b70()));}async['handleForTesting'](_0x464d71){const _0x2b1e09=_0x3ee7d6;return this[_0x2b1e09(0x7e1)](_0x464d71);}[_0x3ee7d6(0x2d5)](){const _0x1485bb=_0x3ee7d6;return this[_0x1485bb(0x51c)]();}[_0x3ee7d6(0x583)](_0x5557b7){this['resolveCommandAck'](_0x5557b7);}async['handle'](_0x388556,_0x328ea5){const _0x5e238c=_0x3ee7d6;this['lastContactAt']=Date['now']();if(_0x388556[_0x5e238c(0x476)]===_0x5e238c(0x760)&&_0x388556['url']==='/commands'){const _0x386b50=this['drainCommands']();_0x328ea5[_0x5e238c(0x263)]=0xc8,_0x328ea5[_0x5e238c(0x520)](_0x5e238c(0x6e9),'application/json'),_0x328ea5[_0x5e238c(0x452)](JSON[_0x5e238c(0x2c1)]({'commands':_0x386b50}));return;}if(_0x388556['method']===_0x5e238c(0x2a0)&&_0x388556[_0x5e238c(0x72e)]==='/commands/ack'){const _0x590c28=await this['readBody'](_0x388556)[_0x5e238c(0x4ba)](_0x3d12c5=>({'tooLarge':![],'err':_0x3d12c5}));if(_0x5e238c(0x9b6)in _0x590c28||_0x590c28[_0x5e238c(0x144)]){_0x328ea5[_0x5e238c(0x263)]=0x190,_0x328ea5[_0x5e238c(0x452)](JSON[_0x5e238c(0x2c1)]({'ok':![]}));return;}try{const _0x296912=JSON['parse'](_0x590c28[_0x5e238c(0x5d9)]);typeof _0x296912['id']==='string'&&this[_0x5e238c(0x8fc)]({'id':_0x296912['id'],'ok':_0x296912['ok']===!![],'detail':typeof _0x296912['detail']==='string'?_0x296912[_0x5e238c(0x6d9)]:void 0x0});}catch{}_0x328ea5['statusCode']=0xcc,_0x328ea5[_0x5e238c(0x452)]();return;}if(_0x388556['method']!==_0x5e238c(0x2a0)||_0x388556[_0x5e238c(0x72e)]!==_0x5e238c(0x76c)){_0x328ea5[_0x5e238c(0x263)]=0x194,_0x328ea5['end']();return;}const _0x734b5a=await this[_0x5e238c(0x8e9)](_0x388556)['catch'](_0x4272e8=>({'tooLarge':![],'err':_0x4272e8}));if('err'in _0x734b5a){_0x328ea5['statusCode']=0x190,_0x328ea5[_0x5e238c(0x452)](JSON[_0x5e238c(0x2c1)]({'ok':![],'error':_0x734b5a[_0x5e238c(0x9b6)]['message']}));return;}if(_0x734b5a['tooLarge']){_0x328ea5[_0x5e238c(0x263)]=0x19d,_0x328ea5[_0x5e238c(0x452)](JSON[_0x5e238c(0x2c1)]({'ok':![],'error':_0x5e238c(0x6ed)}));return;}let _0x459723;try{_0x459723=JSON[_0x5e238c(0x229)](_0x734b5a[_0x5e238c(0x5d9)]);}catch(_0x3c4df1){_0x328ea5[_0x5e238c(0x263)]=0x190,_0x328ea5['end'](JSON['stringify']({'ok':![],'error':_0x3c4df1['message']}));return;}const _0x4acf0c=await this[_0x5e238c(0x7e1)](_0x459723);if(!_0x4acf0c['ok']){_0x328ea5['statusCode']=0x190,_0x328ea5['end'](JSON['stringify'](_0x4acf0c));return;}_0x328ea5[_0x5e238c(0x263)]=0xcc,_0x328ea5[_0x5e238c(0x452)]();}async[_0x3ee7d6(0x7e1)](_0x56155a){const _0x4dff57=_0x3ee7d6;if(!_0x56155a||typeof _0x56155a!==_0x4dff57(0x5ab))return{'ok':![],'error':'payload\x20must\x20be\x20an\x20object'};const _0xb01165=_0x56155a;if(_0xb01165['kind']===_0x4ef1fa)return this[_0x4dff57(0x23c)](_0xb01165);if(_0xb01165['kind']===_0x5722a3){if(_0x4dff57(0x291)===_0x4dff57(0x1ca)){_0xf2912d=_0x478185;const _0x5b3197=_0x35de17(_0x2f3090);if(_0x5e2568(_0x38bd7a,_0x5b3197,_0x478824[_0x4dff57(0x472)]))return null;}else return this[_0x4dff57(0x17c)](_0xb01165);}if(_0xb01165[_0x4dff57(0x3ea)]===_0x286528)return this[_0x4dff57(0x7be)](_0xb01165);if(_0xb01165['kind']===_0x5cda45)return this['latestTestIdSentinel']={'pluginVersion':typeof _0xb01165[_0x4dff57(0x424)]==='string'?_0xb01165['pluginVersion']:void 0x0,'babelConfigHash':typeof _0xb01165['babelConfigHash']==='string'?_0xb01165['babelConfigHash']:void 0x0,'timestampMs':Date['now']()},{'ok':!![]};if(typeof _0xb01165[_0x4dff57(0x92e)]!=='string'||_0xb01165[_0x4dff57(0x92e)]['length']===0x0)return{'ok':![],'error':'message\x20is\x20required'};if(typeof _0xb01165[_0x4dff57(0x3ea)]!=='string'||!_0x44e8fb[_0x4dff57(0x21c)](_0xb01165['kind']))return{'ok':![],'error':_0x4dff57(0x956)+String(_0xb01165[_0x4dff57(0x3ea)])};const _0x24d064=typeof _0xb01165['timestampMs']==='number'&&Number['isFinite'](_0xb01165[_0x4dff57(0x8e7)])?new Date(_0xb01165['timestampMs'])['toISOString']():new Date()['toISOString'](),_0x1b90a3={'message':_0xb01165['message'],'stack':typeof _0xb01165['stack']===_0x4dff57(0x7fd)?_0xb01165['stack']:'','timestamp':_0x24d064,'kind':_0xb01165[_0x4dff57(0x3ea)],'url':typeof _0xb01165[_0x4dff57(0x72e)]==='string'?_0xb01165[_0x4dff57(0x72e)]:void 0x0,'status':typeof _0xb01165['status']==='number'?_0xb01165[_0x4dff57(0x9d0)]:void 0x0,'method':typeof _0xb01165[_0x4dff57(0x476)]==='string'?_0xb01165[_0x4dff57(0x476)]:void 0x0,'durationMs':typeof _0xb01165['durationMs']===_0x4dff57(0x513)?_0xb01165['durationMs']:void 0x0,'elementKey':typeof _0xb01165[_0x4dff57(0x915)]==='string'?_0xb01165[_0x4dff57(0x915)]:void 0x0,'prevText':typeof _0xb01165[_0x4dff57(0x4a2)]==='string'?_0xb01165[_0x4dff57(0x4a2)]:void 0x0,'nextText':typeof _0xb01165['nextText']===_0x4dff57(0x7fd)?_0xb01165[_0x4dff57(0x63f)]:void 0x0};await this[_0x4dff57(0x172)]['appendShimSignal'](_0x1b90a3);if(this[_0x4dff57(0x864)])try{this[_0x4dff57(0x864)](_0x1b90a3);}catch{}return{'ok':!![]};}[_0x3ee7d6(0x23c)](_0x4dc154){const _0x1a153d=_0x3ee7d6;if(!this['bootCaptureMode'])return{'ok':!![]};if(typeof _0x4dc154[_0x1a153d(0x72e)]!==_0x1a153d(0x7fd)||_0x4dc154['url'][_0x1a153d(0x945)]===0x0)return{'ok':![],'error':'boot-request\x20requires\x20`url`'};const _0x4610e5=typeof _0x4dc154['method']===_0x1a153d(0x7fd)&&_0x4dc154[_0x1a153d(0x476)][_0x1a153d(0x945)]>0x0?_0x4dc154[_0x1a153d(0x476)][_0x1a153d(0x250)]():'GET',_0x89e2ff=typeof _0x4dc154['timestampMs']==='number'&&Number[_0x1a153d(0x996)](_0x4dc154['timestampMs'])?new Date(_0x4dc154['timestampMs'])['toISOString']():new Date()['toISOString'](),_0xa09736=_0x2f700c(_0x4dc154[_0x1a153d(0x72e)]);let _0xc4d5dd;if(typeof _0x4dc154[_0x1a153d(0x700)]===_0x1a153d(0x7fd)&&_0x4dc154[_0x1a153d(0x700)][_0x1a153d(0x945)]>0x0){const _0xe54734=Buffer['byteLength'](_0x4dc154['responseBody'],'utf8');if(_0xe54734<=_0x310035)_0xc4d5dd=_0x4dc154[_0x1a153d(0x700)];else{const _0x1d8104='…',_0x340157=Buffer[_0x1a153d(0x7f1)](_0x1d8104,_0x1a153d(0x140)),_0xc08a8c=Buffer[_0x1a153d(0x70f)](_0x4dc154[_0x1a153d(0x700)],'utf8')[_0x1a153d(0x4be)](0x0,_0x310035-_0x340157)['toString'](_0x1a153d(0x140))[_0x1a153d(0x27d)](/�+$/,'');_0xc4d5dd=''+_0xc08a8c+_0x1d8104;}}const _0x38c2bf={'method':_0x4610e5,'path':_0xa09736,...typeof _0x4dc154['status']===_0x1a153d(0x513)?{'status':_0x4dc154[_0x1a153d(0x9d0)]}:{},...typeof _0x4dc154[_0x1a153d(0x8ad)]==='number'?{'durationMs':_0x4dc154['durationMs']}:{},..._0xc4d5dd?{'response':_0xc4d5dd}:{},'timestamp':_0x89e2ff},_0x2bf194=_0xc4d5dd?Buffer['byteLength'](_0xc4d5dd,'utf8'):0x0;this[_0x1a153d(0x122)][_0x1a153d(0x496)](_0x38c2bf),this[_0x1a153d(0x907)]+=_0x2bf194,this[_0x1a153d(0x15f)]+=0x1;while(this['bootBuffer'][_0x1a153d(0x945)]>_0x135476||this['bootBufferBytes']>_0x25470e){const _0x1f31e2=this['bootBuffer']['shift']();if(!_0x1f31e2)break;this[_0x1a153d(0x907)]-=_0x1f31e2['response']?Buffer[_0x1a153d(0x7f1)](_0x1f31e2[_0x1a153d(0x856)],_0x1a153d(0x140)):0x0;if(this['bootBufferBytes']<0x0)this[_0x1a153d(0x907)]=0x0;}return{'ok':!![]};}['recordAsyncStorageRead'](_0x4783ee){const _0x5e195a=_0x3ee7d6;if(!this['bootCaptureMode'])return{'ok':!![]};if(typeof _0x4783ee['key']!==_0x5e195a(0x7fd)||_0x4783ee['key'][_0x5e195a(0x945)]===0x0)return{'ok':![],'error':_0x5e195a(0x5f6)};const _0x1c04dc=typeof _0x4783ee[_0x5e195a(0x8e7)]===_0x5e195a(0x513)&&Number['isFinite'](_0x4783ee['timestampMs'])?new Date(_0x4783ee['timestampMs'])['toISOString']():new Date()[_0x5e195a(0x4a0)](),_0x151d21=typeof _0x4783ee['message']==='string'&&_0x4783ee['message']['length']>0x0?_0x4783ee[_0x5e195a(0x92e)]:'unknown',_0x5277dc={'key':_0x4783ee[_0x5e195a(0x2fe)],'valueShape':_0x151d21,'timestamp':_0x1c04dc,...typeof _0x4783ee['valueHash']===_0x5e195a(0x7fd)&&_0x4783ee[_0x5e195a(0x4c9)][_0x5e195a(0x945)]>0x0?{'valueHash':_0x4783ee['valueHash']}:{}};this[_0x5e195a(0x99c)]['push'](_0x5277dc);while(this[_0x5e195a(0x99c)][_0x5e195a(0x945)]>_0x36f438){this['asyncStorageReadBuffer'][_0x5e195a(0x936)]();}return{'ok':!![]};}[_0x3ee7d6(0x7be)](_0x52bc57){const _0x4b55a6=_0x3ee7d6;if(typeof _0x52bc57[_0x4b55a6(0x9e7)]!=='boolean')return{'ok':![],'error':_0x4b55a6(0x4d8)};if(typeof _0x52bc57['storageAckCount']!==_0x4b55a6(0x513)||!Number[_0x4b55a6(0x996)](_0x52bc57['storageAckCount'])){if('axuaU'===_0x4b55a6(0x267))return{'ok':![],'error':'storage-ack\x20requires\x20finite\x20`storageAckCount`'};else throw new _0x53819c('unsupported-image-format',_0x4b55a6(0x131),_0x4b55a6(0x542));}const _0x326fd4={'success':_0x52bc57['storageAckSuccess'],'count':_0x52bc57[_0x4b55a6(0x543)],...Array['isArray'](_0x52bc57[_0x4b55a6(0x7e9)])?{'keys':_0x52bc57['storageAckKeys']['filter'](_0x17cfbf=>typeof _0x17cfbf===_0x4b55a6(0x7fd))}:{}},_0x5720de=typeof _0x52bc57['storageAckRequestId']===_0x4b55a6(0x7fd)&&_0x52bc57[_0x4b55a6(0x5f9)][_0x4b55a6(0x945)]>0x0?_0x52bc57[_0x4b55a6(0x5f9)]:void 0x0;if(_0x5720de){const _0x3dc591=this[_0x4b55a6(0x717)][_0x4b55a6(0x47a)](_0x5720de);return _0x3dc591&&(this[_0x4b55a6(0x717)][_0x4b55a6(0x14d)](_0x5720de),_0x3dc591(_0x326fd4)),{'ok':!![]};}const _0x22f7bf=this[_0x4b55a6(0x2f6)];return _0x22f7bf&&(this['pendingStorageAckResolver']=null,_0x22f7bf(_0x326fd4)),{'ok':!![]};}[_0x3ee7d6(0x51b)](_0x151be8,_0x445d2c){return new Promise((_0x15d254,_0x4c4296)=>{let _0x571c00=null;const _0x5cd713=setTimeout(()=>{const _0xdc0cd2=_0x4a5a;if(_0x445d2c)this['pendingStorageAckResolvers'][_0xdc0cd2(0x47a)](_0x445d2c)===_0x571c00&&this[_0xdc0cd2(0x717)]['delete'](_0x445d2c);else this[_0xdc0cd2(0x2f6)]===_0x571c00&&(this['pendingStorageAckResolver']=null);_0x4c4296(new Error('waitForStorageAck\x20timed\x20out\x20after\x20'+_0x151be8+'ms'));},_0x151be8);_0x571c00=_0x33af2f=>{clearTimeout(_0x5cd713),_0x15d254(_0x33af2f);},_0x445d2c?this['pendingStorageAckResolvers']['set'](_0x445d2c,_0x571c00):this['pendingStorageAckResolver']=_0x571c00;});}['readBody'](_0x1fd4c4){return new Promise((_0x368639,_0x1fb3cb)=>{const _0x5a4d31=_0x4a5a;let _0x386b98=0x0;const _0x8823d0=[];_0x1fd4c4['on']('data',_0x4e8807=>{const _0xb7d4e0=_0x4a5a;_0x386b98+=_0x4e8807['length'];if(_0x386b98>_0x78fdbd){_0x8823d0[_0xb7d4e0(0x945)]=0x0,_0x368639({'text':'','tooLarge':!![]}),_0x1fd4c4['removeAllListeners']('data'),_0x1fd4c4[_0xb7d4e0(0x9ed)](_0xb7d4e0(0x452)),_0x1fd4c4['removeAllListeners'](_0xb7d4e0(0x125)),_0x1fd4c4['on'](_0xb7d4e0(0x978),()=>void 0x0),_0x1fd4c4['on'](_0xb7d4e0(0x452),()=>void 0x0),_0x1fd4c4['on']('error',()=>void 0x0);return;}_0x8823d0[_0xb7d4e0(0x496)](_0x4e8807);}),_0x1fd4c4['on'](_0x5a4d31(0x452),()=>_0x368639({'text':Buffer[_0x5a4d31(0xe2)](_0x8823d0)['toString']('utf-8'),'tooLarge':![]})),_0x1fd4c4['on']('error',_0x1fb3cb);});}};function _0x2f700c(_0x582c50){try{const _0x1e8cd8=new URL(_0x582c50,'http://localhost');return''+_0x1e8cd8['pathname']+_0x1e8cd8['search'];}catch{return _0x582c50;}}var _0x18e87e='No\x20runtime\x20signals\x20have\x20reached\x20Ceraph\x20from\x20the\x20device\x20this\x20session\x20—\x20in-app\x20runtime\x20errors\x20(uncaught\x20JS\x20exceptions,\x20failed\x20network\x20requests)\x20are\x20NOT\x20being\x20captured\x20in\x20your\x20results.\x20If\x20you\x20added\x20the\x20Ceraph\x20shim\x20(installCeraph),\x20the\x20device\x20can\x27t\x20reach\x20port\x208101\x20on\x20this\x20Mac:\x20check\x20your\x20firewall\x20and\x20that\x20the\x20device\x20and\x20Mac\x20are\x20on\x20the\x20same\x20network\x20(the\x20shim\x20posts\x20to\x20the\x20Mac\x27s\x20LAN\x20IP\x20discovered\x20from\x20the\x20Metro\x20dev-server\x20URL).\x20Fix\x20that\x20and\x20re-run\x20to\x20capture\x20them.\x20If\x20you\x20haven\x27t\x20added\x20the\x20shim,\x20you\x20can\x20ignore\x20this.',_0x12d485=_0x3ee7d6(0x6f5),_0x5bd08f='No\x20runtime\x20signals\x20reached\x20this\x20session\x20directly:\x20another\x20process\x20holds\x20the\x20device-signal\x20port\x20(8101)\x20—\x20usually\x20a\x20second\x20Ceraph\x20MCP,\x20but\x20possibly\x20an\x20unrelated\x20server.\x20If\x20it\x27s\x20a\x20Ceraph\x20instance\x20on\x20the\x20SAME\x20project,\x20in-app\x20runtime\x20errors\x20still\x20reach\x20you\x20via\x20the\x20shared\x20.rn-errors.json;\x20otherwise\x20(a\x20different\x20Ceraph\x20project,\x20or\x20a\x20non-Ceraph\x20process)\x20they\x20won\x27t\x20appear\x20here.\x20To\x20capture\x20them\x20here,\x20free\x20port\x208101\x20(lsof\x20-nP\x20-iTCP:8101)\x20—\x20this\x20session\x20reclaims\x20it\x20automatically\x20once\x20it\x27s\x20released.';function _0x4614e8(_0x4a528b,_0x165fff,_0x149b9a){const _0x1396a0=_0x3ee7d6;if(_0x4a528b)return{'entry':null,'advisedStatus':_0x165fff};if(_0x165fff===_0x149b9a)return{'entry':null,'advisedStatus':_0x165fff};const _0x23f0cb=_0x149b9a==='port-conflict'?_0x5bd08f:_0x149b9a===_0x1396a0(0x236)?_0x12d485:_0x18e87e;return{'entry':{'type':_0x1396a0(0x5d9),'text':_0x23f0cb},'advisedStatus':_0x149b9a};}var _0x346e1e=0.12,_0x26d57b=0x3a98;function _0x117253(_0x177f9e){const _0x561a15=_0x3ee7d6;if(!_0x177f9e)return![];const _0x45f2bb=[_0x177f9e];while(_0x45f2bb[_0x561a15(0x945)]>0x0){if('geKQM'!==_0x561a15(0x29e)){const _0x4e6417=_0x45f2bb['pop'](),_0x5e5da9=_0x4e6417['rawIdentifier'];if(typeof _0x5e5da9==='string'&&_0x5e5da9[_0x561a15(0x17e)]()['includes'](_0x561a15(0x67f)))return!![];if(Array[_0x561a15(0x246)](_0x4e6417['children'])){for(const _0x581a01 of _0x4e6417[_0x561a15(0x9c3)])_0x45f2bb['push'](_0x581a01);}}else return _0x55e96a('rn_start',_0x43de35);}return![];}var _0x5b745d=new Set([_0x3ee7d6(0x35d),'reload',_0x3ee7d6(0x197),'minimize']),_0x42562c=0xfa0;function _0x560542(_0x56b39d){const _0x106ae6=_0x3ee7d6;if(!_0x56b39d)return null;const _0xb52dc7=[],_0x3496dc=new Set(),_0x528625=[{'node':_0x56b39d,'inRedbox':![]}];while(_0x528625[_0x106ae6(0x945)]>0x0){if(_0x106ae6(0x8f4)===_0x106ae6(0x8f4)){const {node:_0xd91930,inRedbox:_0x4bb203}=_0x528625['pop'](),_0x59fa18=_0xd91930[_0x106ae6(0x5ae)],_0x22629c=_0x4bb203||typeof _0x59fa18==='string'&&_0x59fa18['toLowerCase']()[_0x106ae6(0x83f)](_0x106ae6(0x67f));if(_0x22629c)for(const _0x40f0de of[_0xd91930[_0x106ae6(0x84f)],_0xd91930[_0x106ae6(0x10d)],_0xd91930['name']]){const _0x48056e=typeof _0x40f0de==='string'?_0x40f0de['trim']():'';if(!_0x48056e||_0x5b745d[_0x106ae6(0x21c)](_0x48056e[_0x106ae6(0x17e)]())||_0x3496dc[_0x106ae6(0x21c)](_0x48056e))continue;_0x3496dc['add'](_0x48056e),_0xb52dc7[_0x106ae6(0x496)](_0x48056e);}if(Array['isArray'](_0xd91930[_0x106ae6(0x9c3)]))for(const _0x2b16ed of _0xd91930['children']){_0x528625['push']({'node':_0x2b16ed,'inRedbox':_0x22629c});}}else{if(_0x232e5b===_0x218f7c)return delete _0x27d753[_0x106ae6(0x389)],{'changed':!![],'previousScheme':_0x3398b3,'nextScheme':void 0x0};return{'changed':![],'previousScheme':_0xc9a90b,'nextScheme':_0x44b2c0};}}if(_0xb52dc7[_0x106ae6(0x945)]===0x0)return null;const _0x251c40=_0xb52dc7['join']('\x0a')['trim']();if(!_0x251c40)return null;return _0x251c40[_0x106ae6(0x945)]>_0x42562c?_0x251c40[_0x106ae6(0x63b)](0x0,_0x42562c)+'…':_0x251c40;}var _0x5d2ab2=class{constructor(_0x546464,_0x111ab3={}){const _0x506e2c=_0x3ee7d6;this[_0x506e2c(0x5e9)]=_0x546464,this['intervalMs']=_0x111ab3[_0x506e2c(0x174)]??_0x26d57b,this['onRedbox']=_0x111ab3[_0x506e2c(0x1a4)];}[_0x3ee7d6(0x2e3)]=null;['ticking']=![];['intervalMs'];['onRedbox'];[_0x3ee7d6(0x34c)]=null;[_0x3ee7d6(0x41b)](){const _0x3d052f=_0x3ee7d6;if(this['timer'])return;this['timer']=setInterval(()=>{const _0x1e8c50=_0x4a5a;void this[_0x1e8c50(0x5e4)]();},this[_0x3d052f(0x174)]),this['timer'][_0x3d052f(0x60e)]?.();}[_0x3ee7d6(0x2bf)](){const _0x46eeda=_0x3ee7d6;this[_0x46eeda(0x2e3)]&&(clearInterval(this['timer']),this['timer']=null);}async['tick'](){const _0x3849aa=_0x3ee7d6;if(this[_0x3849aa(0x339)])return![];this['ticking']=!![];try{if(!await this['screen']['isAvailable']())return![];const _0x219d12=await this['screen'][_0x3849aa(0x771)]();if(!_0x117253(_0x219d12)){if('IGFMZ'!==_0x3849aa(0x692))return this['lastRedboxSignature']=null,![];else _0x4d30e2=_0x4f6eb1['filter'](_0x55e54e=>_0x55e54e['id']===_0x418375['id']&&_0x55e54e['tier']==='on-demand');}if(this['onRedbox']){const _0x347fa7=_0x560542(_0x219d12);if(_0x347fa7&&_0x347fa7!==this['lastRedboxSignature']){this[_0x3849aa(0x34c)]=_0x347fa7;try{await this['onRedbox'](_0x347fa7);}catch{}}}const {width:_0x36cad1,height:_0x374202}=await this[_0x3849aa(0x5e9)]['getWindowSize'](),_0x919bbe=await this['screen'][_0x3849aa(0x454)](Math['round'](_0x36cad1/0x2),Math[_0x3849aa(0x23a)](_0x374202*_0x346e1e),![]);return _0x919bbe['success'];}catch{return![];}finally{this['ticking']=![];}}},_0x22d8ef=[{'id':'camera','titlePattern':/Would Like to Access the Camera/i,'acceptButtons':['OK','Allow']},{'id':_0x3ee7d6(0x76e),'titlePattern':/Would Like to Access the Microphone/i,'acceptButtons':['OK',_0x3ee7d6(0x38a)]},{'id':'photos','titlePattern':/Would Like to Access Your Photos/i,'acceptButtons':[_0x3ee7d6(0x783),'Allow\x20Full\x20Access',_0x3ee7d6(0x38a)]},{'id':'location','titlePattern':/Allow .* to Use Your Location\??/i,'acceptButtons':['Allow\x20While\x20Using\x20App',_0x3ee7d6(0x26f),_0x3ee7d6(0x38a)]},{'id':'notifications','titlePattern':/Would Like to Send You Notifications/i,'acceptButtons':['Allow']},{'id':_0x3ee7d6(0x557),'titlePattern':/Would Like to Find and Connect to Devices on Your Local Network/i,'acceptButtons':['Allow','OK']},{'id':'bluetooth','titlePattern':/Would Like to Use Bluetooth/i,'acceptButtons':['OK',_0x3ee7d6(0x38a)]},{'id':_0x3ee7d6(0x90a),'titlePattern':/Allow .* to track your activity|would like permission to track/i,'acceptButtons':[_0x3ee7d6(0x38a)]},{'id':'faceid','titlePattern':/Would Like to Use Face ID/i,'acceptButtons':['OK','Allow']}],_0x39612f=[/XCUIElementTypeAlert/i,/SBAlertController/i];function _0x39919d(_0x5f4509){const _0x40b10=_0x3ee7d6,_0x212dc2=String(_0x5f4509[_0x40b10(0x85c)]??'');return _0x39612f['some'](_0x2b1254=>_0x2b1254[_0x40b10(0x364)](_0x212dc2));}function _0x26463c(_0x1f572a){const _0x3ed8a1=_0x3ee7d6;if(_0x39919d(_0x1f572a))return _0x1f572a;const _0x7f5a49=_0x1f572a[_0x3ed8a1(0x9c3)];if(Array['isArray'](_0x7f5a49))for(const _0x3ee524 of _0x7f5a49){const _0x2c6881=_0x26463c(_0x3ee524);if(_0x2c6881)return _0x2c6881;}return null;}function _0x1f76ee(_0x269a99){const _0x5753db=[],_0x23ce83=[],_0x6961c2=_0x212f4e=>{const _0xfaa030=_0x4a5a;if('rrioU'!=='DJxZi'){const _0x2eb07b=String(_0x212f4e[_0xfaa030(0x85c)]??''),_0x59b466=String(_0x212f4e[_0xfaa030(0x10d)]??_0x212f4e['name']??''),_0x208b25=String(_0x212f4e[_0xfaa030(0x84f)]??'');if(/XCUIElementTypeStaticText/i[_0xfaa030(0x364)](_0x2eb07b)){const _0x5584db=_0x59b466||_0x208b25;if(_0x5584db)_0x5753db['push'](_0x5584db);}else{if(/XCUIElementTypeButton/i['test'](_0x2eb07b)){if('PdFkg'!=='PdFkg'){if(!_0x4f5e7b)return null;}else{if(_0x59b466)_0x23ce83[_0xfaa030(0x496)]({'label':_0x59b466,'element':_0x212f4e});}}else{if(!_0x2eb07b){}}}const _0x3064c9=_0x212f4e[_0xfaa030(0x9c3)];if(Array['isArray'](_0x3064c9)){for(const _0x4b2a8a of _0x3064c9)_0x6961c2(_0x4b2a8a);}}else _0x162cdf['push']({'code':'content-type-mismatch','message':_0xfaa030(0x62a)+_0x411136+'\x27\x20does\x20not\x20match\x20detected\x20\x27'+_0x583d58['mime']+'\x27\x20—\x20trusting\x20the\x20bytes.'});};return _0x6961c2(_0x269a99),{'texts':_0x5753db,'buttons':_0x23ce83};}var _0x43d6af=class{[_0x3ee7d6(0x5e9)];[_0x3ee7d6(0x613)];['onDialog'];constructor(_0x483afa){const _0x474389=_0x3ee7d6;this['screen']=_0x483afa['screen'],this[_0x474389(0x613)]=_0x483afa['mode'],this['onDialog']=_0x483afa[_0x474389(0x6aa)];}['getMode'](){return this['mode'];}[_0x3ee7d6(0x612)](_0x4b25eb){const _0x12b894=_0x3ee7d6;this[_0x12b894(0x613)]=_0x4b25eb;}async[_0x3ee7d6(0x8d7)](){const _0x444170=_0x3ee7d6;if(this['mode']==='off')return'CGEEE'===_0x444170(0x900)?{'success':![],'matchCount':0x0}:{'handled':![]};const _0x1f7d44=await this['screen']['getSource']()['catch'](()=>void 0x0);if(!_0x1f7d44?.[_0x444170(0x42d)]||!_0x1f7d44[_0x444170(0x827)])return{'handled':![]};const _0x47085c=_0x26463c(_0x1f7d44['source']);if(!_0x47085c)return{'handled':![]};const {texts:_0x42bd99,buttons:_0x4f5b65}=_0x1f76ee(_0x47085c);if(_0x42bd99['length']===0x0&&_0x4f5b65['length']===0x0)return{'handled':![]};const _0x5d93b4=_0x42bd99[0x0]??'',_0x274c44=_0x42bd99['slice'](0x1)[_0x444170(0x221)]('\x20'),_0x3e4748=_0x22d8ef[_0x444170(0x7bd)](_0xa4d2cf=>_0xa4d2cf['titlePattern'][_0x444170(0x364)](_0x5d93b4));if(!_0x3e4748)return{'handled':![]};let _0x34d629='accept';if(this[_0x444170(0x613)]==='ask'){if(this['onDialog'])try{_0x34d629=await this[_0x444170(0x6aa)]({'title':_0x5d93b4,'body':_0x274c44});}catch{_0x34d629=_0x444170(0xf0);}}const _0x3ebf73=_0x34d629===_0x444170(0xf0)?_0x3e4748[_0x444170(0x701)]:_0x3e4748['denyButtons']??['Don\x27t\x20Allow',_0x444170(0x88c)],_0x51bba2=_0x3ebf73['map'](_0x3020ff=>_0x4f5b65[_0x444170(0x7bd)](_0x3f86fa=>_0x3f86fa[_0x444170(0x10d)]['toLowerCase']()===_0x3020ff[_0x444170(0x17e)]()))['find'](_0x33a5ba=>!!_0x33a5ba);if(!_0x51bba2)return{'handled':![],'dialog':{'title':_0x5d93b4,'body':_0x274c44,'action':_0x34d629}};const _0xae2236=await this['screen']['findAndTap']({'accessibilityLabel':_0x51bba2[_0x444170(0x10d)]});if(!_0xae2236['success'])return{'handled':![],'dialog':{'title':_0x5d93b4,'body':_0x274c44,'action':_0x34d629}};return{'handled':!![],'dialog':{'title':_0x5d93b4,'body':_0x274c44,'action':_0x34d629}};}};function _0x58a148(_0xe512fe){const _0x19aafa=_0x3ee7d6,_0x402e82=(_0xe512fe??'')['toLowerCase']();if(_0x402e82==='off'||_0x402e82===_0x19aafa(0x25c)||_0x402e82==='0')return _0x19aafa(0x74c);if(_0x402e82==='ask')return _0x19aafa(0x26d);return _0x19aafa(0x181);}import{promises as _0x435b17}from'fs';import{homedir as _0x28dcdc}from'os';import{join as _0x2097fa}from'path';var _0x1c77d4='__keychain__';function _0x4562b5(){return _0x2097fa(_0x28dcdc(),'.ceraph','auth.json');}function _0x3d5351(_0x5e18b9){const _0x164dbd=_0x3ee7d6;if(!_0x5e18b9||typeof _0x5e18b9!==_0x164dbd(0x5ab))return![];const _0x34c62c=_0x5e18b9;if(typeof _0x34c62c[_0x164dbd(0x315)]!=='string'||_0x34c62c[_0x164dbd(0x315)][_0x164dbd(0x945)]===0x0)return![];if(typeof _0x34c62c['expiresAt']!==_0x164dbd(0x513))return![];if(_0x34c62c['githubUser']!==void 0x0){if(!_0x34c62c[_0x164dbd(0x2db)]||typeof _0x34c62c[_0x164dbd(0x2db)]!==_0x164dbd(0x5ab))return![];const _0x2fd09c=_0x34c62c['githubUser'];if(typeof _0x2fd09c[_0x164dbd(0x562)]!==_0x164dbd(0x7fd)||typeof _0x2fd09c['id']!==_0x164dbd(0x513))return![];}if(typeof _0x34c62c[_0x164dbd(0x533)]!=='string')return![];return!![];}function _0x48e557(_0x482258){if(_0x482258['githubUser'])return _0x482258;return{..._0x482258,'githubUser':{'login':'','id':0x0}};}async function _0x9b2b8c(_0x3cda13={}){const _0x58bd1b=_0x3ee7d6,_0x7e7d16=_0x3cda13[_0x58bd1b(0x4e3)]??_0x4562b5();let _0x101e92;try{_0x101e92=await _0x435b17['readFile'](_0x7e7d16,'utf-8');}catch{return null;}let _0x12259b;try{_0x12259b=JSON[_0x58bd1b(0x229)](_0x101e92);}catch{return null;}if(!_0x3d5351(_0x12259b))return null;if(_0x12259b[_0x58bd1b(0x156)]>0x0&&_0x12259b[_0x58bd1b(0x156)]<Date['now']())return null;const _0x82878b=_0x48e557(_0x12259b);if(_0x82878b['accessToken']===_0x1c77d4)return null;return _0x82878b;}var _0x42d825=new Set(['localhost','127.0.0.1','[::1]',_0x3ee7d6(0x89d),'[::ffff:7f00:1]',_0x3ee7d6(0x119)]);function _0xaf74b4(_0x4a7d7b){const _0x5ae6ef=_0x3ee7d6;let _0x36b7fa;try{_0x36b7fa=new URL(_0x4a7d7b);}catch{throw new Error(_0x5ae6ef(0x541)+_0x4a7d7b+'\x22\x20—\x20must\x20be\x20an\x20absolute\x20URL\x20with\x20a\x20scheme\x20(e.g.\x20https://ceraph.dev/api/mcp\x20or\x20http://localhost:3000/api/mcp).');}if(_0x36b7fa[_0x5ae6ef(0x62b)]===_0x5ae6ef(0x816))return _0x4a7d7b;if(_0x36b7fa['protocol']===_0x5ae6ef(0x503)){const _0x32d129=_0x36b7fa[_0x5ae6ef(0x323)][_0x5ae6ef(0x17e)]();if(_0x42d825[_0x5ae6ef(0x21c)](_0x32d129))return _0x4a7d7b;throw new Error(_0x5ae6ef(0x28a)+_0x4a7d7b+'\x22.\x20Use\x20https://\x20for\x20remote\x20endpoints\x20(http://\x20is\x20only\x20allowed\x20for\x20localhost\x20/\x20127.0.0.1).');}throw new Error(_0x5ae6ef(0x332)+_0x36b7fa['protocol']+_0x5ae6ef(0x491)+_0x4a7d7b+_0x5ae6ef(0x637));}var _0x2ea0c5=process.env.CERAPH_CATALOG_ENDPOINT??'https://ceraph.dev/api/catalog/current',_0x27161e=process.env.CERAPH_CATALOG_PUBLIC_KEY_ENDPOINT??_0x3ee7d6(0x1ff);async function _0x45c4be(_0x1c0e2b={}){const _0x135abe=_0x3ee7d6,_0x5167bf=_0x1c0e2b[_0x135abe(0x183)]??(_0x1b0ca2=>process[_0x135abe(0x870)][_0x135abe(0x65a)](_0x1b0ca2+'\x0a'));try{if(_0x135abe(0x3e2)!=='XCZXe'){const _0x56c012=_0x1c0e2b['endpoint']??_0x2ea0c5,_0x468153=_0x1c0e2b['publicKeyEndpoint']??_0x27161e;let _0xe01d59=null;try{_0xaf74b4(_0x56c012),_0xaf74b4(_0x468153);}catch(_0x1585c2){_0xe01d59=_0x1585c2 instanceof Error?_0x1585c2['message']:String(_0x1585c2);}const _0xb66e9c=_0xe01d59?null:await((async()=>{const _0x318fd9=_0x135abe,_0x2b589d=_0x1c0e2b['publicKey']??await _0xba3815({'fetchImpl':_0x1c0e2b['fetchImpl'],'timeoutMs':_0x1c0e2b[_0x318fd9(0x5aa)]??0x1388,'log':_0x5167bf,'endpoint':_0x468153});return _0x3b7537({'endpoint':_0x56c012,'publicKey':_0x2b589d,'timeoutMs':_0x1c0e2b[_0x318fd9(0x5aa)]??0x1388,'fetchImpl':_0x1c0e2b[_0x318fd9(0x679)]});})());_0xe01d59&&_0x5167bf(_0x135abe(0x489)+_0xe01d59+')');if(_0xb66e9c){_0x2ddc55(_0xb66e9c,_0x5167bf);const _0x4cb31c=Object[_0x135abe(0x208)](_0xb66e9c[_0x135abe(0x942)])['length'],_0xa26408=_0xb66e9c['libraryCatalog']?Object[_0x135abe(0x208)](_0xb66e9c['libraryCatalog'])['length']:0x0,_0x122cb8=_0xb66e9c[_0x135abe(0x123)]?Object['keys'](_0xb66e9c[_0x135abe(0x123)])[_0x135abe(0x945)]:0x0;_0x5167bf(_0x135abe(0x687)+_0x4cb31c+'\x20versioned,\x20'+_0xa26408+_0x135abe(0x1cf)+_0x122cb8+_0x135abe(0x145));if(_0xb66e9c['droppedEntries']){const {droppedCount:_0x244db4,samples:_0x1065de}=_0xb66e9c[_0x135abe(0x507)];_0x5167bf(_0x135abe(0x10b)+_0x244db4+_0x135abe(0x2fa)+_0x1065de['join'](',\x20'));}return _0xb66e9c['catalog'];}return _0x5167bf(_0x135abe(0x8ac)),_0x21e32b(null),_0x33e0fe(null),null;}else return _0x372129={'result':_0x4675fb,'at':_0x498789[_0x135abe(0x3d1)]()},_0x3d04b3=null,_0x32b588;}catch{return null;}}function _0x2ddc55(_0x51a5d2,_0x17d965){const _0x1a8a11=_0x3ee7d6;try{_0x21e32b(_0x51a5d2[_0x1a8a11(0x58a)]??null),_0x33e0fe(_0x51a5d2[_0x1a8a11(0x123)]??null);}catch(_0x442f40){_0x17d965('[react-native-mcp]\x20Catalog\x20overlay\x20install\x20failed\x20(non-fatal):\x20'+(_0x442f40 instanceof Error?_0x442f40[_0x1a8a11(0x92e)]:String(_0x442f40)));}}async function _0xba3815(_0x3ca177){const _0x1f363b=_0x3ee7d6,_0x404e93=_0x3ca177[_0x1f363b(0x4b8)]??_0x27161e;try{_0xaf74b4(_0x404e93);}catch(_0x5b0f92){return _0x3ca177[_0x1f363b(0x183)](_0x1f363b(0x968)+(_0x5b0f92 instanceof Error?_0x5b0f92[_0x1f363b(0x92e)]:String(_0x5b0f92))+_0x1f363b(0x6d2)),_0x1034e6;}const _0x20c105=await _0x2992bc({'endpoint':_0x404e93,'timeoutMs':_0x3ca177[_0x1f363b(0x5aa)]??0x1388,'fetchImpl':_0x3ca177[_0x1f363b(0x679)]});if(_0x20c105)return _0x20c105;return _0x1034e6;}var _0x3c367e=null;function _0xe15240(_0x276070){_0x3c367e=_0x276070;}var _0x5c2202=_0x3ee7d6(0x7c4),_0x169e87=0x7530,_0x45acbf=class extends Error{['kind'];['status'];[_0x3ee7d6(0x70e)];[_0x3ee7d6(0x220)];constructor(_0x157078,_0x17c3a9,_0x214d3a,_0x531529,_0x49bcfd){const _0x412a4f=_0x3ee7d6;super(_0x214d3a),this['name']='CeraphServerError',this[_0x412a4f(0x3ea)]=_0x157078,this[_0x412a4f(0x9d0)]=_0x17c3a9,this['agentMessage']=_0x214d3a;if(_0x531529!==void 0x0)this['cause']=_0x531529;if(_0x49bcfd!==void 0x0)this['details']=_0x49bcfd;}};async function _0x30429a(_0x2bacc6){const _0x53c9e3=_0x3ee7d6,_0x2dfaf7=_0x2bacc6['status'];if(_0x2dfaf7===0x191)return new _0x45acbf('account-invalid',0x191,'Your\x20Ceraph\x20session\x20is\x20no\x20longer\x20valid\x20(the\x20account\x20may\x20have\x20been\x20deleted,\x20or\x20your\x20token\x20expired).\x20Run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20to\x20sign\x20in\x20again.\x20Your\x20local\x20screenshots\x20and\x20flows\x20are\x20preserved\x20—\x20only\x20the\x20server-side\x20identity\x20needs\x20refreshing.');if(_0x2dfaf7===0x192||_0x2dfaf7===0x193)return new _0x45acbf('tier-gated',_0x2dfaf7,_0x53c9e3(0x695));if(_0x2dfaf7===0x1ad)return new _0x45acbf(_0x53c9e3(0x6b2),0x1ad,_0x53c9e3(0x3a4));if(_0x2dfaf7>=0x1f4)return new _0x45acbf('server-error',_0x2dfaf7,_0x53c9e3(0x8c6)+_0x2dfaf7+').\x20Try\x20again\x20in\x20a\x20few\x20seconds.');let _0xb3c8dc,_0x5e4901;try{const _0x309233=await _0x2bacc6['json']();if(_0x309233&&typeof _0x309233==='object'){_0x5e4901=_0x309233;const _0x2ad13e=_0x309233,_0x437ab3=typeof _0x2ad13e['message']==='string'&&_0x2ad13e['message']||typeof _0x2ad13e[_0x53c9e3(0x125)]===_0x53c9e3(0x7fd)&&_0x2ad13e[_0x53c9e3(0x125)]||void 0x0;if(_0x437ab3)_0xb3c8dc=_0x437ab3;}}catch{}return new _0x45acbf('bad-response',_0x2dfaf7,_0x53c9e3(0x61e)+_0x2dfaf7+(_0xb3c8dc?':\x20'+_0xb3c8dc:'')+').',void 0x0,_0x5e4901);}function _0x34b518(_0x4ea934){const _0x48e11d=_0x3ee7d6,_0x531875=_0x4ea934?.[_0x48e11d(0x153)]?.['trim']()||process.env.CERAPH_API_URL?.[_0x48e11d(0x5da)]()||_0x5c2202;return _0xaf74b4(_0x531875),_0x531875[_0x48e11d(0x27d)](/\/+$/,'');}async function _0x4ace5b(_0x3ae435,_0x57196e,_0x4eec9e,_0x16ec2e){const _0x5b5c9e=_0x3ee7d6;if(!_0x4eec9e)throw new _0x45acbf(_0x5b5c9e(0x1ad),0x191,_0x5b5c9e(0x8b6));const _0x345f45=_0x16ec2e?.['timeoutMs']??_0x169e87,_0x5e485a=_0x34b518(_0x16ec2e),_0x4290b9=''+_0x5e485a+(_0x3ae435[_0x5b5c9e(0x887)]('/')?_0x3ae435:'/'+_0x3ae435),_0x55bee2=new AbortController(),_0x11f31b=setTimeout(()=>_0x55bee2[_0x5b5c9e(0x2d4)](),_0x345f45);let _0xe36186;try{_0xe36186=await fetch(_0x4290b9,{'method':_0x5b5c9e(0x2a0),'headers':{'Content-Type':'application/json','Authorization':_0x5b5c9e(0x410)+_0x4eec9e[_0x5b5c9e(0x315)]},'body':JSON[_0x5b5c9e(0x2c1)](_0x57196e??{}),'signal':_0x55bee2['signal']});}catch(_0x529f09){const _0x2f59c0=_0x529f09;if(_0x2f59c0?.['name']==='AbortError')throw new _0x45acbf(_0x5b5c9e(0x80a),0x0,_0x5b5c9e(0x8a8)+_0x345f45+_0x5b5c9e(0x7b7),_0x529f09);throw new _0x45acbf('network-error',0x0,_0x5b5c9e(0x83a),_0x529f09);}finally{clearTimeout(_0x11f31b);}if(!_0xe36186['ok'])throw await _0x30429a(_0xe36186);let _0x193d2f;try{_0x193d2f=await _0xe36186[_0x5b5c9e(0x732)]();}catch(_0x56ea2e){const _0x28e2c8=_0x56ea2e;throw new _0x45acbf(_0x5b5c9e(0x3e7),_0xe36186[_0x5b5c9e(0x9d0)],_0x5b5c9e(0x48c)+_0x3ae435+':\x20'+(_0x28e2c8?.['message']??String(_0x56ea2e)),_0x56ea2e);}if(!_0x193d2f||typeof _0x193d2f!=='object'||Array[_0x5b5c9e(0x246)](_0x193d2f))throw new _0x45acbf('bad-response',_0xe36186['status'],'Ceraph\x20server\x20returned\x20an\x20unexpected\x20response\x20shape\x20for\x20'+_0x3ae435+'\x20(expected\x20an\x20object).');return _0x193d2f;}var _0x34f228=0x5*0x3c*0x3e8,_0x386749=null,_0xdb00aa=null;function _0x242b1a(){_0x386749=null,_0xdb00aa=null;}var _0x46f1f0=_0x3ee7d6(0x7c4);function _0x56e055(_0x13523e){const _0x30e705=_0x3ee7d6,_0x1b96ec=_0x13523e['apiBase']?.['trim']()||process.env.CERAPH_API_URL?.[_0x30e705(0x5da)]()||_0x46f1f0;return _0x1b96ec[_0x30e705(0x27d)](/\/+$/,'')+_0x30e705(0x842);}async function _0x5d2ffa(_0x15a138={}){const _0x1e97d4=_0x3ee7d6;return _0x4a7d5f(_0x15a138,_0x1e97d4(0x70c));}async function _0x590cfe(_0x1ab1f5={}){return _0x4a7d5f(_0x1ab1f5,'mobilePro');}async function _0x4a7d5f(_0x4df360,_0x38fd2d){const _0x56f765=_0x3ee7d6,_0x33a208=_0x4df360['ttlMs']??_0x34f228,_0x586dfd=_0x4df360[_0x56f765(0x3d1)]??Date['now'],_0xe71a50=_0x4df360['loadAuth']??_0x9b2b8c,_0x176f8b=_0x4df360['fetcher']??((_0x408303,_0x34490d)=>globalThis['fetch'](_0x408303,_0x34490d)),_0x317667=()=>_0x38fd2d==='mobilePro'?_0xdb00aa:_0x386749,_0x27dd7a=_0x3eaa06=>{const _0x1ce97b=_0x56f765;if(_0x38fd2d===_0x1ce97b(0x5b7))_0xdb00aa=_0x3eaa06;else _0x386749=_0x3eaa06;},_0x264431=_0x317667();if(_0x264431&&_0x586dfd()-_0x264431[_0x56f765(0x8c3)]<_0x33a208)return _0x264431['value'];let _0x3d902c=![];try{const _0x439f63=await _0xe71a50();if(!_0x439f63?.['accessToken'])return _0x27dd7a({'value':![],'fetchedAt':_0x586dfd()}),![];const _0x4ca5f6=_0x56e055(_0x4df360),_0x2f66a9=await _0x176f8b(_0x4ca5f6,{'headers':{'Authorization':_0x56f765(0x410)+_0x439f63[_0x56f765(0x315)],'Accept':'application/json'}});if(!_0x2f66a9['ok'])return _0x56f765(0x740)!==_0x56f765(0x740)?[]:(_0x27dd7a({'value':![],'fetchedAt':_0x586dfd()}),![]);const _0x4a9561=await _0x2f66a9['json']();_0x3d902c=_0x4a9561!==null&&typeof _0x4a9561===_0x56f765(0x5ab)&&_0x4a9561[_0x38fd2d]===!![];}catch{if(_0x56f765(0x3f1)!=='QJakm'){try{_0x42137d['kill'](_0x56f765(0x57c));}catch{}_0x55e648(null);}else _0x3d902c=![];}return _0x27dd7a({'value':_0x3d902c,'fetchedAt':_0x586dfd()}),_0x3d902c;}import{promises as _0x225bdf}from'fs';import{join as _0x514700}from'path';import{execFile}from'child_process';import{constants as _0x44064c,promises as _0x11e024}from'fs';import{isAbsolute as _0x51e831,join as _0x44b1a8,normalize,relative as _0x4e8216}from'path';import{promisify}from'util';var _0x1cec07=promisify(execFile),_0x338a61=0xc8,_0x2a9cad=0x7a120,_0x30617a=new Set(['.tsx','.ts',_0x3ee7d6(0x9c4),'.js',_0x3ee7d6(0x7ca),_0x3ee7d6(0x713),'.json']),_0x59af82=[/(^|\/)\.env(\.|$)/,/\.pem$/,/\.key$/,/\.p12$/,/\.pfx$/,/\.keystore$/,/\.jks$/,/\.mobileprovision$/,/(^|\/)credentials?\b/,/(^|\/)secrets?\b/,/private[_-]?key/];function _0x1099f5(_0x3ec256){const _0x3b54ef=_0x3ee7d6,_0xe968a9=_0x3ec256[_0x3b54ef(0x17e)]();for(const _0x144a55 of _0x59af82){if(_0x144a55[_0x3b54ef(0x364)](_0xe968a9))return![];}const _0x9772f=_0xe968a9[_0x3b54ef(0x814)]('/')[_0x3b54ef(0x7bc)]()??'';if(/[._-]tokens?($|[._-])/[_0x3b54ef(0x364)](_0x9772f))return![];const _0x53621e=_0x3ec256['lastIndexOf']('.');if(_0x53621e<0x0)return![];const _0x2268a2=_0x3ec256[_0x3b54ef(0x63b)](_0x53621e)['toLowerCase']();return _0x30617a[_0x3b54ef(0x21c)](_0x2268a2);}async function _0x452b69(_0x32bf03,_0x13805a){const _0x2bb36f=_0x3ee7d6;try{return await _0x1cec07(_0x2bb36f(0x6a7),[_0x2bb36f(0x96f),'--verify','--quiet',_0x13805a],{'cwd':_0x32bf03}),!![];}catch{return![];}}var _0x213553=new Map();function _0x4e9ac7(_0x438f84){const _0x2b21cf=_0x3ee7d6,_0x4adfbb=_0x213553['get'](_0x438f84);if(_0x4adfbb)return _0x4adfbb;const _0x1c4fae=_0x176f6e(_0x438f84);return _0x213553[_0x2b21cf(0x3b6)](_0x438f84,_0x1c4fae),_0x1c4fae;}async function _0x176f6e(_0x4b8249){const _0x3c3025=_0x3ee7d6;try{const {stdout:_0x275606}=await _0x1cec07('git',['symbolic-ref',_0x3c3025(0x466),_0x3c3025(0x9ba)],{'cwd':_0x4b8249}),_0x57fe60=_0x275606[_0x3c3025(0x5da)]();if(_0x57fe60){const _0x47256d=_0x57fe60[_0x3c3025(0x27d)](/^origin\//,'');if(_0x47256d&&await _0x452b69(_0x4b8249,_0x47256d))return _0x47256d;if(await _0x452b69(_0x4b8249,_0x57fe60))return _0x57fe60;if(_0x47256d)return _0x47256d;}}catch{}for(const _0xc7f63d of[_0x3c3025(0x32f),'master']){if(await _0x452b69(_0x4b8249,_0xc7f63d))return _0xc7f63d;}return'HEAD';}async function _0x6b60b3(_0x348eb1){const _0xb88d7c=_0x3ee7d6;try{const {stdout:_0x156f1f}=await _0x1cec07('git',[_0xb88d7c(0x96f),'--abbrev-ref',_0xb88d7c(0x1ae)],{'cwd':_0x348eb1});return _0x156f1f['trim']();}catch{return'unknown';}}async function _0x37a731(_0x288b56,_0x31a15c){const _0x4af289=_0x3ee7d6;try{const {stdout:_0x52ba49}=await _0x1cec07('git',[_0x4af289(0x96f),_0x31a15c],{'cwd':_0x288b56});return _0x52ba49['trim']();}catch{return _0x31a15c;}}async function _0x27a85c(_0x393fc6,_0x5d3bcc){const _0x7d7e31=_0x3ee7d6;try{const {stdout:_0x35fafd}=await _0x1cec07(_0x7d7e31(0x6a7),[_0x7d7e31(0x283),_0x7d7e31(0xd2),_0x5d3bcc],{'cwd':_0x393fc6,'maxBuffer':0x20*0x400*0x400});return _0x35fafd;}catch(_0x3d6bf7){const _0x3a7522=_0x3d6bf7 instanceof Error?_0x3d6bf7[_0x7d7e31(0x92e)]:String(_0x3d6bf7);if(_0x3a7522[_0x7d7e31(0x83f)]('unknown\x20revision')){const {stdout:_0x747bcb}=await _0x1cec07('git',[_0x7d7e31(0x283),'--relative',_0x7d7e31(0x1ae)],{'cwd':_0x393fc6,'maxBuffer':0x20*0x400*0x400});return _0x747bcb;}throw _0x3d6bf7;}}async function _0x9fbfce(_0x5d2130){const _0x22b063=_0x3ee7d6;try{const {stdout:_0x9d39e8}=await _0x1cec07(_0x22b063(0x6a7),[_0x22b063(0x9e9)],{'cwd':_0x5d2130,'maxBuffer':0x8*0x400*0x400});return _0x9d39e8[_0x22b063(0x814)]('\x0a')[_0x22b063(0x986)](_0x4ed144=>_0x4ed144['trim']())[_0x22b063(0x65c)](Boolean)[_0x22b063(0x65c)](_0x1099f5);}catch{return[];}}async function _0x392eac(_0x2e73c2,_0x109645){const _0x3e0cca=_0x3ee7d6;try{const {stdout:_0x2c18e8}=await _0x1cec07(_0x3e0cca(0x6a7),[_0x3e0cca(0x283),_0x3e0cca(0x8c2),_0x3e0cca(0xd2),_0x109645],{'cwd':_0x2e73c2,'maxBuffer':0x8*0x400*0x400});return _0x2c18e8['split']('\x0a')[_0x3e0cca(0x986)](_0x218d3e=>_0x218d3e['trim']())['filter'](_0x309cf2=>_0x309cf2[_0x3e0cca(0x945)]>0x0);}catch(_0x5c4da5){const _0x280ba5=_0x5c4da5 instanceof Error?_0x5c4da5['message']:String(_0x5c4da5);if(_0x280ba5[_0x3e0cca(0x83f)]('unknown\x20revision')){const {stdout:_0x42b70e}=await _0x1cec07('git',['diff',_0x3e0cca(0x8c2),'--relative','HEAD'],{'cwd':_0x2e73c2,'maxBuffer':0x8*0x400*0x400});return _0x42b70e['split']('\x0a')['map'](_0x30e9cd=>_0x30e9cd['trim']())['filter'](_0x336216=>_0x336216['length']>0x0);}throw _0x5c4da5;}}async function _0x50bda3(_0x5dcf7b,_0x5a3654){const _0x520df2=_0x3ee7d6,_0xfa0c95={},_0x135ee7=new Set();let _0x52d535;try{_0x52d535=await _0x11e024['realpath'](_0x5dcf7b);}catch{return _0xfa0c95;}for(const _0x3b1dd2 of _0x5a3654){if(_0x135ee7['size']>=_0x338a61)break;if(_0x51e831(_0x3b1dd2)||_0x3b1dd2['includes']('..'))continue;const _0x5e7090=normalize(_0x44b1a8(_0x5dcf7b,_0x3b1dd2)),_0x25de89=_0x4e8216(_0x5dcf7b,_0x5e7090);if(_0x25de89[_0x520df2(0x887)]('..')||_0x51e831(_0x25de89))continue;if(_0x135ee7['has'](_0x25de89))continue;_0x135ee7[_0x520df2(0x5c1)](_0x25de89);if(!_0x1099f5(_0x25de89))continue;let _0x4c384e;try{_0x4c384e=await _0x11e024[_0x520df2(0x75b)](_0x5e7090);}catch(_0x5dcf76){const _0x5d3a25=_0x5dcf76;if(_0x5d3a25[_0x520df2(0x845)]===_0x520df2(0x6fe)||_0x5d3a25['code']==='ELOOP'||_0x5d3a25[_0x520df2(0x845)]==='EACCES'||_0x5d3a25[_0x520df2(0x845)]===_0x520df2(0x73a))continue;throw _0x5dcf76;}const _0x360bdc=_0x4e8216(_0x52d535,_0x4c384e);if(_0x360bdc[_0x520df2(0x887)]('..')||_0x51e831(_0x360bdc))continue;let _0x360597;try{_0x360597=await _0x11e024['open'](_0x5e7090,_0x44064c['O_RDONLY']|_0x44064c['O_NOFOLLOW']);const _0x1a4c0e=await _0x360597['stat']();if(_0x1a4c0e['isDirectory']())continue;if(_0x1a4c0e[_0x520df2(0x1bb)]>_0x2a9cad)continue;const _0x43954e=await _0x360597[_0x520df2(0x18d)](_0x520df2(0x29d));_0xfa0c95[_0x25de89]=_0x43954e;}catch(_0x5bb71f){const _0x38aeda=_0x5bb71f;if(_0x38aeda['code']==='ENOENT'||_0x38aeda[_0x520df2(0x845)]==='EISDIR'||_0x38aeda['code']==='ELOOP'||_0x38aeda[_0x520df2(0x845)]==='EACCES'||_0x38aeda[_0x520df2(0x845)]===_0x520df2(0x73a))continue;throw _0x5bb71f;}finally{await _0x360597?.['close']();}}return _0xfa0c95;}import{execFile as _0xdc26fe}from'child_process';import{promisify as _0x120f23}from'util';var _0x29ff72=_0x120f23(_0xdc26fe);async function _0x4c7f9c(_0xfc7183){const _0x5e291b=_0x3ee7d6,{stdout:_0x5639eb}=await _0x29ff72('git',[_0x5e291b(0x94b),'--get','remote.origin.url'],{'cwd':_0xfc7183,'encoding':_0x5e291b(0x29d)}),_0x85f63=_0x5639eb['trim'](),_0xaaf077=_0x85f63['replace'](/\.git$/,''),_0x314a32=_0xaaf077['match'](/^(?:https?:\/\/(?:[^/@]+@)?github\.com(?::\d+)?\/|git@github\.com:|ssh:\/\/git@github\.com(?::\d+)?\/)([^/]+)\/([^/]+?)$/);if(!_0x314a32)throw new Error('Could\x20not\x20resolve\x20GitHub\x20repo\x20from\x20git\x20remote.');return{'owner':_0x314a32[0x1],'repo':_0x314a32[0x2]};}var _0x489cff=0x7a120,_0x1f278d=0x1f4,_0x1ad465=0x8*0x400*0x400;async function _0x2c31ba(_0x50212a,_0x4d71e5={}){const _0x145e00=_0x3ee7d6,_0x32805a=_0x4d71e5['fetcher']??_0x4ace5b,_0x1d2242=_0x4d71e5[_0x145e00(0x658)]??_0x9fbfce,_0x493375=_0x4d71e5['resolveRepo']??(async _0x5243c4=>{try{return await _0x4c7f9c(_0x5243c4);}catch{return null;}}),_0xf54f2a=_0x4d71e5[_0x145e00(0x3ba)]??_0x37a731,_0x2958f2=_0x4d71e5['resolveBranch']??_0x6b60b3,_0x42c896=_0x4d71e5['readFile']??(_0xa40525=>_0x225bdf[_0x145e00(0x18d)](_0xa40525,_0x145e00(0x29d))),_0x3b7db3=await _0x493375(_0x50212a[_0x145e00(0x408)])['catch'](()=>null);if(!_0x3b7db3)return{'status':_0x145e00(0x797),'reason':_0x145e00(0x69d),'message':'No\x20GitHub\x20remote\x20detected\x20—\x20graph\x20cache\x20seed\x20skipped.\x20First\x20rn_test_*\x20call\x20will\x20build\x20the\x20graph\x20from\x20scratch.'};const _0x48e431=await _0x2958f2(_0x50212a[_0x145e00(0x408)]),_0x2d6e84=await _0xf54f2a(_0x50212a['workingDir'],_0x145e00(0x1ae));if(_0x2d6e84==='HEAD'||_0x2d6e84['length']<0x7||_0x48e431==='unknown')return{'status':_0x145e00(0x797),'reason':'no-git-repo','message':'Not\x20in\x20a\x20git\x20repo\x20(or\x20no\x20HEAD\x20commit\x20yet)\x20—\x20graph\x20cache\x20seed\x20skipped.\x20First\x20rn_test_*\x20call\x20will\x20build\x20the\x20graph\x20from\x20scratch.'};const _0xa17628=await _0x1d2242(_0x50212a['workingDir']);if(_0xa17628[_0x145e00(0x945)]===0x0)return{'status':_0x145e00(0x797),'reason':'no-graph-files','message':'No\x20graph-relevant\x20files\x20found\x20in\x20the\x20repo\x20—\x20nothing\x20to\x20seed.'};const _0x4deebe={};let _0x1dd188=![],_0x7094a0=0x0;for(const _0xc83c1 of _0xa17628){if(!_0x1099f5(_0xc83c1))continue;if(Object[_0x145e00(0x208)](_0x4deebe)['length']>=_0x1f278d){_0x1dd188=!![];break;}let _0x2de5fb;try{if(_0x145e00(0x64e)!==_0x145e00(0x64e)){_0x12e923 instanceof _0x2cce4b&&(_0x1b610e[_0x145e00(0x3ea)]===_0x145e00(0x1ad)||_0x2c59d5['kind']==='tier-gated')&&_0x27b196();const _0x346199=_0xf09ca1 instanceof _0x2db05d?_0x4493f8['agentMessage']:_0xc7d3d8+_0x145e00(0x9f8)+(_0x4fa1e0 instanceof _0x1545ae?_0x3ecd51[_0x145e00(0x92e)]:_0x138fa2(_0x7032fc));return{'content':[{'type':'text','text':_0x346199}],'isError':!![]};}else _0x2de5fb=await _0x42c896(_0x514700(_0x50212a[_0x145e00(0x408)],_0xc83c1));}catch{continue;}const _0x4b5b69=Buffer['byteLength'](_0x2de5fb);if(_0x4b5b69>_0x489cff)continue;if(_0x7094a0+_0x4b5b69>_0x1ad465){_0x1dd188=!![];break;}_0x4deebe[_0xc83c1]=_0x2de5fb,_0x7094a0+=_0x4b5b69;}if(Object[_0x145e00(0x208)](_0x4deebe)['length']===0x0)return{'status':_0x145e00(0x797),'reason':'no-graph-files','message':_0x145e00(0x519)};let _0x46087e;_0x4deebe['app.json']&&(_0x46087e=_0x4deebe['app.json']);try{const _0x5e7c06=await _0x32805a('/rn-init-graph',{'repoOwner':_0x3b7db3['owner'],'repoName':_0x3b7db3[_0x145e00(0x2fb)],'branch':_0x48e431,'headSha':_0x2d6e84,'appFiles':_0x4deebe,..._0x46087e?{'appJsonContent':_0x46087e}:{}},_0x50212a[_0x145e00(0x469)]);if(_0x5e7c06['ok']&&_0x5e7c06[_0x145e00(0x552)]&&typeof _0x5e7c06[_0x145e00(0x4ca)]==='number'&&typeof _0x5e7c06['layoutCount']==='number')return{'status':_0x145e00(0x2a6),'flavor':_0x5e7c06['flavor'],'screenCount':_0x5e7c06['screenCount'],'layoutCount':_0x5e7c06[_0x145e00(0x292)],'bundleId':_0x5e7c06[_0x145e00(0x708)]??null,'persisted':_0x5e7c06[_0x145e00(0x1ed)]===!![]};return{'status':_0x145e00(0x797),'reason':'server-error','message':'Graph\x20cache\x20seed\x20returned\x20an\x20unexpected\x20response\x20shape.'};}catch(_0x8f0425){if(_0x8f0425 instanceof _0x45acbf){const _0x126b45=_0x8f0425[_0x145e00(0x3ea)]==='bad-response'&&_0x8f0425['agentMessage']['includes']('no-mobile-graph')?_0x145e00(0x6ac):_0x145e00(0x5fd);return{'status':'skipped','reason':_0x126b45,'message':_0x1dd188?_0x8f0425[_0x145e00(0x70e)]+'\x20(payload\x20was\x20capped\x20at\x20'+_0x1f278d+'\x20files).':_0x8f0425['agentMessage']};}return{'status':_0x145e00(0x797),'reason':_0x145e00(0x5fd),'message':_0x8f0425 instanceof Error?_0x8f0425['message']:'Graph\x20cache\x20seed\x20failed\x20(unknown\x20error).'};}}var _0x12e8b1=null;function _0x3a93e6(_0x1347d1={}){const _0x2c795f=_0x3ee7d6;if(_0x12e8b1)return _0x12e8b1;const _0x581732=_0x292b34(_0x1347d1)['catch'](()=>null);return _0x12e8b1=_0x581732[_0x2c795f(0x4cf)](_0x21a0ad=>{return _0x21a0ad===null&&(_0x12e8b1=null),_0x21a0ad;}),_0x12e8b1;}async function _0x292b34(_0x20346f){const _0x3f24e3=_0x3ee7d6,_0x3901e0=_0x20346f['workingDir']??process['cwd'](),_0x4ea679=_0x20346f['loadAuth']??(()=>_0x9b2b8c()),_0x477922=_0x20346f['checkMobilePro']??(()=>_0x590cfe()),_0xa76890=_0x20346f['seedMobileGraph']??_0x2c31ba,_0x59f999=await _0x4ea679()[_0x3f24e3(0x4ba)](()=>null);if(!_0x59f999?.['accessToken'])return null;const _0x76da58=await _0x477922()[_0x3f24e3(0x4ba)](()=>![]);if(!_0x76da58)return null;return _0xa76890({'workingDir':_0x3901e0,'auth':_0x59f999});}import{promises as _0x3590de}from'fs';import{homedir as _0x198f1a}from'os';import{join as _0x2425cb,dirname as _0x5e1144}from'path';function _0x51ea0c(){const _0x59292a=_0x3ee7d6;return _0x2425cb(_0x198f1a(),'.ceraph',_0x59292a(0x6e8));}async function _0x3fccb9(_0xb2c788){const _0x3f8084=_0x3ee7d6,_0x537e66=_0xb2c788??_0x51ea0c();let _0x4cad38;try{_0x4cad38=await _0x3590de[_0x3f8084(0x18d)](_0x537e66,'utf-8');}catch{return null;}let _0x36bf33;try{_0x36bf33=JSON['parse'](_0x4cad38);}catch{return null;}if(!_0x36bf33||typeof _0x36bf33!==_0x3f8084(0x5ab)||Array['isArray'](_0x36bf33))return null;const _0x100cb6=_0x36bf33,_0x1b6ae7=_0x100cb6['tier'];if(_0x1b6ae7!==_0x3f8084(0x3fa)&&_0x1b6ae7!==_0x3f8084(0x1b6))return null;const _0xd80f35=typeof _0x100cb6[_0x3f8084(0xf7)]==='string'&&_0x100cb6[_0x3f8084(0xf7)]['length']>0x0?_0x100cb6['selectedAt']:new Date(0x0)['toISOString']();return{'tier':_0x1b6ae7,'selectedAt':_0xd80f35};}async function _0x4107c4(_0x46dbc7,_0x3339ad,_0x8042ee=Date[_0x3ee7d6(0x3d1)]){const _0x3babc0=_0x3ee7d6,_0x1bd507=_0x3339ad??_0x51ea0c(),_0x32ecc8={'tier':_0x46dbc7,'selectedAt':new Date(_0x8042ee())['toISOString']()};return await _0x3590de[_0x3babc0(0x88d)](_0x5e1144(_0x1bd507),{'recursive':!![],'mode':0x1c0}),await _0x3590de[_0x3babc0(0x352)](_0x1bd507,JSON[_0x3babc0(0x2c1)](_0x32ecc8,null,0x2)+'\x0a','utf-8'),_0x32ecc8;}import{promises as _0xcf9796,constants as _0xb1bba3}from'fs';import{homedir as _0x30be78,platform}from'os';import{join as _0x138225,dirname as _0x3139dd}from'path';import{spawn as _0x2da019}from'child_process';import{randomBytes as _0x5c0974}from'crypto';import{createServer as _0xe28f2b}from'http';import{createInterface}from'readline';var _0x2b973d=0x5*0x3c*0x3e8;function _0x166455(){const _0x21bbcd=_0x3ee7d6,_0x23c61e=process.env.CERAPH_WEB_BASE_URL?.[_0x21bbcd(0x5da)]();if(_0x23c61e)return _0x23c61e;const _0x24076e=process.env.CERAPH_API_URL?.['trim']();if(_0x24076e){const _0x480b6e=_0x24076e[_0x21bbcd(0x27d)](/\/+$/,'')['replace'](/\/api\/mcp$/,'');if(_0x480b6e&&_0x480b6e!==_0x24076e[_0x21bbcd(0x27d)](/\/+$/,''))return _0x480b6e;}return'https://ceraph.dev';}function _0x58f401(_0x1e4d44={}){const _0x2b7e07=_0x3ee7d6,_0x51f8f4=_0x166455()[_0x2b7e07(0x27d)](/\/+$/,''),_0x1e038f=_0x1e4d44[_0x2b7e07(0x1a8)]===_0x2b7e07(0x1b6)?_0x2b7e07(0x6c6):'';return _0x51f8f4+_0x2b7e07(0x60b)+_0x1e038f;}async function _0x4ca948(_0x325d96={}){const _0x226442=_0x3ee7d6,_0x3901a2=_0x325d96['token']?.['trim']()||process.env.CERAPH_AUTH_TOKEN?.[_0x226442(0x5da)]();if(_0x3901a2)return _0xbe3b3e(_0x3901a2,void 0x0,_0x325d96[_0x226442(0x99e)]);const _0x36b07d=_0x325d96[_0x226442(0x5aa)]??_0x2b973d,_0x5e7ddb=(_0x325d96[_0x226442(0x7a6)]??_0x166455())[_0x226442(0x27d)](/\/+$/,''),_0x4ddc4f=_0x5c0974(0x10)['toString']('base64url'),_0x4b5226=await _0x20402a(_0x4ddc4f,_0x5e7ddb),_0x5e1ae8=_0x325d96[_0x226442(0x1a8)]===_0x226442(0x1b6)?_0x226442(0x7fa):'',_0x4a839d=_0x5e7ddb+_0x226442(0x40c)+_0x4b5226[_0x226442(0x688)]+'&state='+encodeURIComponent(_0x4ddc4f)+_0x5e1ae8,_0x1d2b58=new AbortController();if(_0x325d96[_0x226442(0x294)]){if(_0x325d96[_0x226442(0x294)]['aborted']){_0x4b5226['close']();throw new DOMException(_0x226442(0x957),_0x226442(0x857));}_0x325d96['signal'][_0x226442(0x82b)]('abort',()=>{const _0x45d654=_0x226442;_0x4b5226[_0x45d654(0x2d4)](new DOMException(_0x45d654(0x957),_0x45d654(0x857))),_0x1d2b58[_0x45d654(0x2d4)]();},{'once':!![]});}_0x54915b(_0x4a839d),process[_0x226442(0x870)][_0x226442(0x65a)](_0x226442(0x68f)+_0x5e7ddb+_0x226442(0x391)+_0x4a839d+'\x0a');try{const _0x59a675=await _0x2d19db(_0x4b5226['tokenPromise'],_0x36b07d);return _0xbe3b3e(_0x59a675[_0x226442(0x844)],_0x59a675[_0x226442(0x89c)],_0x325d96['authFilePath']);}catch(_0x426718){if(_0x426718 instanceof _0x3a78c1){process['stderr'][_0x226442(0x65a)]('Sign-in\x20timed\x20out.\x20Reload\x20the\x20browser\x20tab\x20to\x20retry\x20—\x20or\x20paste\x20your\x20token\x20below:\x0a');const _0x22aca9=await Promise[_0x226442(0x5a8)]([_0x4b5226['tokenPromise'][_0x226442(0x4cf)](_0x6fbb62=>({'kind':_0x226442(0x370),'payload':_0x6fbb62})),_0xc708b1(_0x1d2b58[_0x226442(0x294)])['then'](_0x3ed661=>({'kind':_0x226442(0x21a),'line':_0x3ed661}))]);if(_0x22aca9[_0x226442(0x3ea)]==='listener')return _0x1d2b58[_0x226442(0x2d4)](),_0xbe3b3e(_0x22aca9['payload'][_0x226442(0x844)],_0x22aca9[_0x226442(0x836)]['email'],_0x325d96[_0x226442(0x99e)]);if(!_0x22aca9[_0x226442(0xf5)]){if(_0x325d96['signal']?.['aborted'])throw new DOMException(_0x226442(0x957),'AbortError');throw new Error(_0x226442(0x152));}return _0xbe3b3e(_0x22aca9[_0x226442(0xf5)],void 0x0,_0x325d96[_0x226442(0x99e)]);}throw _0x426718;}finally{_0x4b5226['close']();}}var _0x51fcd8=0x10*0x400;async function _0x5d1045(_0x1fd0e3){return new Promise(_0x46e17d=>{const _0xfac9f7=_0x4a5a;let _0x3cfe9f=0x0;const _0x5341ea=[];_0x1fd0e3['on'](_0xfac9f7(0x978),_0x23cd90=>{const _0x29f69c=_0xfac9f7;_0x3cfe9f+=_0x23cd90['length'];if(_0x3cfe9f>_0x51fcd8){_0x1fd0e3['destroy'](),_0x46e17d(null);return;}_0x5341ea[_0x29f69c(0x496)](_0x23cd90);}),_0x1fd0e3['on']('end',()=>{const _0x1e4ddb=Buffer['concat'](_0x5341ea)['toString']('utf8');if(!_0x1e4ddb){_0x46e17d(null);return;}try{const _0x42fa76=JSON['parse'](_0x1e4ddb);if(_0x42fa76&&typeof _0x42fa76==='object')_0x46e17d(_0x42fa76);else{if('ZRDqr'==='ZRDqr')_0x46e17d(null);else{_0x49902b();return;}}}catch{_0x46e17d(null);}}),_0x1fd0e3['on']('error',()=>_0x46e17d(null));});}async function _0x20402a(_0x2f825d,_0x35ba1e){let _0x128579,_0x50586c;const _0x101d44=new Promise((_0x29751f,_0x5366f2)=>{_0x128579=_0x29751f,_0x50586c=_0x5366f2;});let _0x4dd8b4=![],_0x57dd48=![],_0x11fb68,_0x11eaa6;try{_0x11eaa6=new URL(_0x35ba1e)['origin'];}catch(_0x2be6f1){throw new Error('Invalid\x20CERAPH_WEB_BASE_URL\x20or\x20CERAPH_API_URL:\x20\x22'+_0x35ba1e+'\x22\x20—\x20must\x20be\x20a\x20valid\x20URL\x20with\x20scheme\x20(e.g.\x20https://ceraph.dev\x20or\x20http://localhost:3000).\x20Original\x20error:\x20'+(_0x2be6f1 instanceof Error?_0x2be6f1['message']:String(_0x2be6f1)));}_0x11fb68=_0xe28f2b((_0x534c6d,_0x20e6f1)=>{const _0x39c0cc=_0x4a5a;_0x20e6f1[_0x39c0cc(0x520)](_0x39c0cc(0x592),_0x11eaa6),_0x20e6f1[_0x39c0cc(0x520)]('Access-Control-Allow-Methods',_0x39c0cc(0x4bc)),_0x20e6f1['setHeader'](_0x39c0cc(0x13b),'content-type');if(_0x534c6d['method']==='OPTIONS'){_0x20e6f1[_0x39c0cc(0x263)]=0xcc,_0x20e6f1['end']();return;}const _0x30446d=new URL(_0x534c6d[_0x39c0cc(0x72e)]??'/',_0x39c0cc(0x795)+_0xe99bd4);if(_0x30446d['pathname']!==_0x39c0cc(0x21e)){_0x20e6f1['statusCode']=0x194,_0x20e6f1['end'](_0x39c0cc(0x485));return;}const _0x3c3a52=_0x30446d['searchParams'][_0x39c0cc(0x47a)](_0x39c0cc(0x21d))??'';if(_0x3c3a52!==_0x2f825d){_0x20e6f1['statusCode']=0x190,_0x20e6f1['end']('invalid\x20state');return;}if(_0x57dd48||_0x4dd8b4){if('jsosl'!=='lxAga'){_0x20e6f1['statusCode']=0x199,_0x20e6f1['end'](_0x57dd48?_0x39c0cc(0x3e5):'in-flight');return;}else return[...this['stderrBuffer']];}if(_0x534c6d[_0x39c0cc(0x476)]!==_0x39c0cc(0x2a0)){_0x20e6f1['statusCode']=0x195,_0x20e6f1[_0x39c0cc(0x452)](_0x39c0cc(0x617));return;}_0x4dd8b4=!![],void _0x5d1045(_0x534c6d)[_0x39c0cc(0x4cf)](_0x3a8f1f=>{const _0x2f2574=_0x39c0cc,_0x381ed6=_0x3a8f1f&&typeof _0x3a8f1f['token']==='string'?_0x3a8f1f['token'][_0x2f2574(0x5da)]():'',_0x1bf1a8=_0x3a8f1f&&typeof _0x3a8f1f['email']==='string'?_0x3a8f1f[_0x2f2574(0x89c)]:'';if(!_0x381ed6){_0x4dd8b4=![],_0x20e6f1['statusCode']=0x190,_0x20e6f1[_0x2f2574(0x452)]('missing\x20token');return;}_0x57dd48=!![],_0x20e6f1[_0x2f2574(0x263)]=0xc8,_0x20e6f1[_0x2f2574(0x520)](_0x2f2574(0x772),_0x2f2574(0x486)),_0x20e6f1['end']('<!doctype\x20html><html><body\x20style=\x22font-family:system-ui;padding:32px;background:#0b0f14;color:#e6edf3;\x22><h1>CLI\x20signed\x20in</h1><p>You\x20can\x20close\x20this\x20tab.</p></body></html>');try{_0x11fb68[_0x2f2574(0x4ae)]();}catch{}_0x128579({'token':_0x381ed6,'email':_0x1bf1a8||void 0x0});});return;});const _0xe99bd4=await new Promise((_0x19c7aa,_0x4fbfe1)=>{_0x11fb68['once']('error',_0x4fbfe1),_0x11fb68['listen'](0x0,'127.0.0.1',()=>{const _0x172b7c=_0x4a5a,_0x28b044=_0x11fb68[_0x172b7c(0x26c)]();if(!_0x28b044||typeof _0x28b044==='string'||typeof _0x28b044['port']!=='number'){if(_0x172b7c(0x194)!=='LMygu'){try{_0x11fb68[_0x172b7c(0x4ae)]();}catch{}_0x4fbfe1(new Error(_0x172b7c(0x82c)));return;}else{if(_0x5afaff)return;_0x552469=!![],_0x55cbc8['removeListener']('error',_0x33bcd4),_0x9a1e98(_0x3fd1fd);}}_0x19c7aa(_0x28b044[_0x172b7c(0x688)]);});});return _0x11fb68['on']('error',_0x1d31a7=>_0x50586c(_0x1d31a7)),{'port':_0xe99bd4,'tokenPromise':_0x101d44,'close':()=>{const _0x48bdc6=_0x4a5a;try{_0x11fb68[_0x48bdc6(0x4ae)]();}catch{}},'abort':_0x1f2154=>{const _0x75b1ab=_0x4a5a;_0x50586c(_0x1f2154);try{if('maXrR'===_0x75b1ab(0x7ed))_0x11fb68['close']();else{if(_0x541f31['status']==='reverted'||_0x418045[_0x75b1ab(0x9d0)]==='warning')_0x49f961++;else(_0x23f3fb['status']===_0x75b1ab(0x797)||_0x4a61b1[_0x75b1ab(0x9d0)]==='already-reverted')&&_0x1ec5a0++;_0x4cb0ef[_0x75b1ab(0x9d0)]==='warning'&&_0x498a4f[_0x75b1ab(0x5de)]&&_0x51ce78['push'](_0x48e90f[_0x75b1ab(0x5de)]),_0x3bc8e8['status']===_0x75b1ab(0x89f)&&_0x2c92ba[_0x75b1ab(0x5de)]&&_0x1416cd['push'](_0x1a099f[_0x75b1ab(0x5de)]);}}catch{}}};}function _0x54915b(_0x33b7e3){const _0x2178dc=_0x3ee7d6;try{if(_0x2178dc(0x289)!==_0x2178dc(0x289)){if(typeof _0x1bd129[_0x2178dc(0x58a)]!==_0x2178dc(0x5ab)||_0x5a3daa['libraryCatalog']===null||_0x5ee89b[_0x2178dc(0x246)](_0x4dfc9e[_0x2178dc(0x58a)]))return![];for(const [_0x1cc009,_0x5ed93e]of _0xb9ed64[_0x2178dc(0x6b0)](_0x1d8965['libraryCatalog'])){if(typeof _0x1cc009!==_0x2178dc(0x7fd)||!_0x57a562(_0x1cc009))return![];if(typeof _0x5ed93e!==_0x2178dc(0x5ab)||_0x5ed93e===null||_0x52b2f4['isArray'](_0x5ed93e))return![];for(const [_0x27cc83]of _0x3185b4[_0x2178dc(0x6b0)](_0x5ed93e)){if(typeof _0x27cc83!=='string'||!_0x49e20b(_0x27cc83))return![];}}}else{const _0x2f1d93=platform();let _0x538172,_0x254821;if(_0x2f1d93==='darwin'){if('APjNY'!==_0x2178dc(0x9be))return null;else _0x538172=_0x2178dc(0x67e),_0x254821=[_0x33b7e3];}else _0x2f1d93===_0x2178dc(0xf1)?(_0x538172='cmd',_0x254821=['/c','start','',_0x33b7e3]):(_0x538172='xdg-open',_0x254821=[_0x33b7e3]);const _0x3161af=_0x2da019(_0x538172,_0x254821,{'stdio':_0x2178dc(0x317),'detached':!![]});_0x3161af['on']('error',()=>{}),_0x3161af[_0x2178dc(0x60e)]();}}catch{}}var _0x3a78c1=class extends Error{constructor(){const _0x1bed46=_0x3ee7d6;super('listener-timeout'),this[_0x1bed46(0x4d1)]=_0x1bed46(0x958);}};function _0x2d19db(_0x5d1b75,_0xe02934){return new Promise((_0xd216e3,_0x499ba3)=>{const _0x391ebb=_0x4a5a,_0x28d148=setTimeout(()=>_0x499ba3(new _0x3a78c1()),_0xe02934);_0x5d1b75[_0x391ebb(0x4cf)](_0x4e8925=>{clearTimeout(_0x28d148),_0xd216e3(_0x4e8925);},_0x2ac7d4=>{clearTimeout(_0x28d148),_0x499ba3(_0x2ac7d4);});});}function _0xc708b1(_0x38eeb6){return new Promise(_0x33d4ea=>{const _0x513b38=_0x4a5a,_0x15eccd=createInterface({'input':process[_0x513b38(0x21a)],'crlfDelay':Infinity});let _0x101747=![];const _0x29c8c1=_0x20f8b6=>{const _0x3b8cf5=_0x513b38;if(_0x101747)return;_0x101747=!![];try{_0x15eccd[_0x3b8cf5(0x4ae)]();}catch{}_0x33d4ea(_0x20f8b6);};_0x15eccd[_0x513b38(0x9b5)]('line',_0x335c3f=>_0x29c8c1(_0x335c3f['trim']()||null)),_0x15eccd[_0x513b38(0x9b5)](_0x513b38(0x4ae),()=>_0x29c8c1(null));if(_0x38eeb6[_0x513b38(0x957)]){_0x29c8c1(null);return;}_0x38eeb6['addEventListener'](_0x513b38(0x2d4),()=>_0x29c8c1(null),{'once':!![]});});}function _0x28323f(_0xfa2543){const _0x26b03b=_0x3ee7d6;return _0xfa2543??_0x138225(_0x30be78(),_0x26b03b(0x5d3),_0x26b03b(0x65b));}async function _0xbe3b3e(_0x589fde,_0xd9015f,_0x995ba4){const _0x55dcf5=_0x3ee7d6,_0xbf7fb2={'accessToken':_0x589fde,'expiresAt':0x0,'githubUser':{'login':'','id':0x0},'storedAt':new Date()[_0x55dcf5(0x4a0)](),..._0xd9015f?{'email':_0xd9015f}:{}};return await _0x71cef8(_0xbf7fb2,_0x995ba4),{'token':_0x589fde,..._0xd9015f?{'email':_0xd9015f}:{}};}async function _0x71cef8(_0x2a2235,_0x253a68){const _0x54de84=_0x3ee7d6,_0x529d6b=_0x28323f(_0x253a68);await _0xcf9796['mkdir'](_0x3139dd(_0x529d6b),{'recursive':!![],'mode':0x1c0});const _0x5b97d5=JSON[_0x54de84(0x2c1)](_0x2a2235,null,0x2)+'\x0a',_0xfde930=_0x529d6b+_0x54de84(0x5a4)+process['pid']+'.'+Math['random']()['toString'](0x24)[_0x54de84(0x63b)](0x2);try{const _0x31c9c9=await _0xcf9796['open'](_0xfde930,_0xb1bba3[_0x54de84(0x582)]|_0xb1bba3['O_WRONLY']|_0xb1bba3['O_EXCL'],0x180);try{await _0x31c9c9[_0x54de84(0x352)](_0x5b97d5);}finally{await _0x31c9c9['close']();}await _0xcf9796['rename'](_0xfde930,_0x529d6b);}catch(_0x44a120){try{await _0xcf9796['unlink'](_0xfde930);}catch{}throw _0x44a120;}try{await _0xcf9796['chmod'](_0x3139dd(_0x529d6b),0x1c0);}catch{}}import{join as _0x1ddc56}from'path';import{readFile as _0xc37ba5,writeFile as _0xd7b8c0,access as _0x5b0a7b,mkdir as _0x531677}from'fs/promises';import{createHash}from'crypto';import{join as _0x2deaf4}from'path';import{readFile as _0x440317}from'fs/promises';import{Project,Node,SyntaxKind}from'ts-morph';var _0x409084='@ceraph/react-native-mcp/babel-plugin',_0x475b28=[_0x3ee7d6(0x720),_0x3ee7d6(0x9e4),_0x3ee7d6(0x269)];function _0x18c59f(_0x2947f1){const _0x1fda20=_0x3ee7d6;return createHash('sha256')[_0x1fda20(0x7d2)](_0x2947f1)['digest']('hex')[_0x1fda20(0x63b)](0x0,0x10);}async function _0x21d413(_0x4635ca,_0x144827=_0xc85a96=>_0x440317(_0xc85a96,'utf-8')){for(const _0x167336 of _0x475b28){const _0x599ecb=_0x2deaf4(_0x4635ca,_0x167336);try{const _0x46d888=await _0x144827(_0x599ecb);return{'path':_0x599ecb,'text':_0x46d888};}catch{}}return null;}function _0x170938(_0x369a3d,_0x349c0c){const _0x49f452=_0x3ee7d6;if(Node['isStringLiteral'](_0x369a3d)||Node[_0x49f452(0xfa)](_0x369a3d))return _0x369a3d[_0x49f452(0x42e)]()===_0x349c0c;if(Node[_0x49f452(0x696)](_0x369a3d)){const _0x2ebcd4=_0x369a3d[_0x49f452(0x22f)]()[0x0];return!!_0x2ebcd4&&_0x170938(_0x2ebcd4,_0x349c0c);}if(Node[_0x49f452(0x435)](_0x369a3d)){const _0x10dbef=_0x369a3d['getExpression']();if(Node['isIdentifier'](_0x10dbef)&&_0x10dbef[_0x49f452(0x326)]()==='require'){const _0x285abc=_0x369a3d[_0x49f452(0x6ae)]()[0x0];return!!_0x285abc&&_0x170938(_0x285abc,_0x349c0c);}}return![];}function _0x4373a6(_0x1f663e){const _0x406d57=_0x3ee7d6,_0xa84dd6=new Project({'useInMemoryFileSystem':!![],'compilerOptions':{'allowJs':!![]}}),_0x31c10f=_0xa84dd6['createSourceFile']('babel.config.js',_0x1f663e);for(const _0x3ac46d of _0x31c10f['getDescendantsOfKind'](SyntaxKind['PropertyAssignment'])){if(_0x3ac46d[_0x406d57(0x33e)]()!==_0x406d57(0x361))continue;const _0x2198bb=_0x3ac46d['getInitializer']();if(_0x2198bb&&Node['isArrayLiteralExpression'](_0x2198bb))return{'array':_0x2198bb,'sourceText':_0x31c10f['getFullText']()};}return null;}function _0x1a933a(_0x771cb4){const _0x479b59=_0x3ee7d6,_0x286c63=_0x4373a6(_0x771cb4);if(!_0x286c63)return![];return _0x286c63[_0x479b59(0x27a)]['getElements']()['some'](_0x3083d1=>_0x170938(_0x3083d1,_0x409084));}var _0x4063f7=_0x3ee7d6(0x6e2);function _0x401f2b(_0x10dfe5){const _0x128777=_0x3ee7d6;return _0x128777(0x7ae)+_0x10dfe5+'\x27],\x0a\x20\x20\x20\x20plugins:\x20[\x27'+_0x409084+_0x128777(0x6bf);}async function _0x4fd1d3(_0x2a5f40){try{return await _0x5b0a7b(_0x2a5f40),!![];}catch{return![];}}async function _0x4d90e4(_0x33a159,_0x1487ac){for(const _0x4f2a0f of _0x475b28){const _0x4c7538=_0x1ddc56(_0x33a159,_0x4f2a0f);if(await _0x1487ac(_0x4c7538))return _0x4c7538;}return null;}async function _0x24193a(_0x468148,_0x3455ae={}){const _0x22cfa4=_0x3ee7d6,_0x453fc6=_0x3455ae['readFile']??(_0x3519c2=>_0xc37ba5(_0x3519c2,'utf-8')),_0x4f598e=_0x3455ae['writeFile']??((_0x49d697,_0x3901d1)=>_0xd7b8c0(_0x49d697,_0x3901d1,'utf-8')),_0xd4ec60=_0x3455ae['fileExists']??_0x4fd1d3,_0x6cfab9=await _0x4d90e4(_0x468148,_0xd4ec60);if(!_0x6cfab9){let _0x15ab94=_0x22cfa4(0x4a9);try{const _0x22e2a0=JSON[_0x22cfa4(0x229)](await _0x453fc6(_0x1ddc56(_0x468148,_0x22cfa4(0x833)))),_0x270d87={..._0x22e2a0['dependencies'],..._0x22e2a0['devDependencies']};if(!_0x270d87['expo'])_0x15ab94=_0x22cfa4(0x74a);}catch{}const _0x27759d=_0x1ddc56(_0x468148,_0x22cfa4(0x720)),_0x97f740=_0x401f2b(_0x15ab94);return await _0x4f598e(_0x27759d,_0x97f740),await _0x4f12da(_0x468148,_0x97f740,_0x3455ae,_0x4f598e),{'kind':'created','path':_0x27759d,'preset':_0x15ab94};}let _0x1b9652;try{_0x1b9652=await _0x453fc6(_0x6cfab9);}catch{return{'kind':_0x22cfa4(0x786),'path':_0x6cfab9,'reason':_0x22cfa4(0x225)};}const _0x56f473=_0x4373a6(_0x1b9652);if(_0x56f473){const _0x50d552=_0x56f473['array']['getElements']();if(_0x50d552['some'](_0x20ec08=>_0x170938(_0x20ec08,_0x409084)))return await _0x4f12da(_0x468148,_0x1b9652,_0x3455ae,_0x4f598e),{'kind':_0x22cfa4(0x216),'path':_0x6cfab9};const _0x244883=_0x50d552['findIndex'](_0x2c0ce1=>_0x170938(_0x2c0ce1,_0x4063f7)),_0x436b63=_0x244883>=0x0?_0x244883:_0x50d552[_0x22cfa4(0x945)];_0x56f473['array'][_0x22cfa4(0x36c)](_0x436b63,'\x22'+_0x409084+'\x22');const _0x31fbb2=_0x56f473['array']['getSourceFile']()[_0x22cfa4(0x4e0)]();return await _0x4f598e(_0x6cfab9,_0x31fbb2),await _0x4f12da(_0x468148,_0x31fbb2,_0x3455ae,_0x4f598e),{'kind':_0x22cfa4(0x1dd),'path':_0x6cfab9,'beforeReanimated':_0x244883>=0x0};}return{'kind':'needs-manual','path':_0x6cfab9,'reason':'no\x20`plugins:\x20[...]`\x20array\x20found\x20to\x20edit\x20safely\x20(dynamic\x20config?).\x20Add\x20\x22'+_0x409084+'\x22\x20to\x20your\x20babel\x20plugins,\x20before\x20any\x20\x22'+_0x4063f7+'\x22\x20entry.'};}async function _0x4f12da(_0x25a911,_0x1fb1ba,_0x383ff2,_0x59e176){const _0x46b164=_0x3ee7d6,_0x5cc573=_0x1ddc56(_0x25a911,_0x46b164(0x5d3));if(!_0x383ff2[_0x46b164(0x352)])try{await _0x531677(_0x5cc573,{'recursive':!![]});}catch{}const _0x58c899={'pluginVersion':_0x383ff2[_0x46b164(0x424)]??_0x48dc0b,'babelConfigHash':_0x18c59f(_0x1fb1ba)};await _0x59e176(_0x1ddc56(_0x5cc573,_0x46b164(0x918)),JSON[_0x46b164(0x2c1)](_0x58c899,null,0x2)+'\x0a');}var _0x48dc0b='0.2.2';async function _0x126d97(_0x3e2875){const _0x214503=_0x3ee7d6,{projectDir:_0x15c88c,sentinel:_0x10d970,readFile:_0x39eeca}=_0x3e2875;if(!_0x10d970)return{'ready':![],'reason':_0x214503(0x627)};if(typeof _0x10d970[_0x214503(0x424)]!==_0x214503(0x7fd)||typeof _0x10d970['babelConfigHash']!==_0x214503(0x7fd))return'bCark'==='bCark'?{'ready':![],'reason':'no-sentinel-received'}:{'ok':![],'parsed':{}};const _0x76f690=await _0x21d413(_0x15c88c,_0x39eeca);if(!_0x76f690)return{'ready':![],'reason':'no-local-babel-config'};if(!_0x1a933a(_0x76f690[_0x214503(0x5d9)]))return{'ready':![],'reason':'plugin-not-configured'};if(_0x10d970['pluginVersion']!==_0x48dc0b)return{'ready':![],'reason':_0x214503(0x5b1)};if(_0x10d970[_0x214503(0x2dc)]!==_0x18c59f(_0x76f690['text']))return{'ready':![],'reason':_0x214503(0x19e)};return{'ready':!![]};}import{rename as _0x10f7f8,unlink as _0x1d2fc4,writeFile as _0x20dc25}from'fs/promises';import{join as _0x24eec7}from'path';function _0x5d7aea(_0x4fab38){const _0x5b6bf7=_0x24eec7(_0x4fab38,'.rn-flow-progress.json'),_0x1fd337=async _0x36b06f=>{const _0xb2d86f=_0x4a5a,_0x40f999=_0x5b6bf7+_0xb2d86f(0x5a4)+process[_0xb2d86f(0x135)]+'.'+Math['random']()['toString'](0x24)['slice'](0x2);try{await _0x20dc25(_0x40f999,_0x36b06f,_0xb2d86f(0x29d)),await _0x10f7f8(_0x40f999,_0x5b6bf7);}catch(_0x425627){try{await _0x1d2fc4(_0x40f999);}catch{}throw _0x425627;}};return{async 'write'(_0x9e5fe1){const _0x24fc29=_0x4a5a;if('IhMuc'!==_0x24fc29(0x3fd))return _0x3cac88['abort'](),_0x3857f0(_0x5f1529['payload'][_0x24fc29(0x844)],_0x50d080[_0x24fc29(0x836)]['email'],_0x39a383['authFilePath']);else try{await _0x1fd337(JSON['stringify']({'timestamp':_0x9e5fe1['timestamp'],'entry':_0x9e5fe1},null,0x2));}catch{}},async 'clear'(){const _0x4d2ead=_0x4a5a;try{await _0x1fd337(JSON[_0x4d2ead(0x2c1)]({'timestamp':new Date()[_0x4d2ead(0x4a0)](),'entry':null},null,0x2));}catch{}}};}import{spawn as _0x30d1c2}from'child_process';import{mkdir as _0x59402e,readFile as _0x23d6c8,access as _0x36f2df}from'fs/promises';function _0x1ecd(){const _0xfeac8e=['react-native-mcp','\x20Keep-awake\x20may\x20stay\x20off\x20until\x20the\x20app\x20is\x20foregrounded;\x20the\x20postflight\x20device-awake\x20check\x20still\x20gates\x20readiness.','unknown\x20kind:\x20','aborted','TimeoutError','\x20to\x20activate\x20AI\x20flow\x20testing.\x20Once\x20payment\x20is\x20done,\x20re-call\x20this\x20tool\x20—\x20Pro\x20access\x20refreshes\x20automatically.','iproxy','Age\x20threshold:\x20`14d`\x20matches\x20the\x20server\x27s\x20default\x20startup\x20sweep,\x20`30d`\x20is\x20more\x20conservative,\x20`all`\x20purges\x20every\x20run.','.ceraph/wda-derived/','DkISW','URL\x20/\x20deep\x20link\x20to\x20open,\x20e.g.\x20myapp://product/42','mHqwX','listInstalledApps','WDA\x20already\x20reachable\x20—\x20iproxy\x20bridge\x20not\x20(re)started.','simctl\x20launch\x20failed:\x20','installCeraph()\x20wired\x20in\x20','wda-not-ready','pgJHA','listen','GPihQ','[react-native-mcp]\x20Public-key\x20endpoint\x20rejected\x20(','writtenOrUnchanged','--device','launch','Detected\x20','reloadRecoveryWitness','storage','rev-parse','Developer','every','drainAsyncStorageReads','yUErq','[react-native-mcp]\x20CERAPH_SIGNAL_HOST\x20is\x20unset\x20and\x20no\x20LAN\x20IP\x20was\x20auto-detectable.\x20Real-device\x20shim\x20signals\x20will\x20default\x20to\x20localhost\x20(which\x20the\x20device\x20cannot\x20reach\x20back\x20to\x20the\x20Mac).\x20Set\x20it\x20manually:\x20export\x20CERAPH_SIGNAL_HOST=<your-mac-ip>','\x20\x20configureTestImage(','.ceraph/runs/','fzlfg','data','hardwareProperties','config.toml','Couldn\x27t\x20ensure\x20appium-webdriveragent:\x20','WvzCR','isTTY','Required\x20env\x20var','.codeium','/source?format=json','Simulator\x20UDID\x20','fieldQuery:\x20','baseDir','50RVbqhg','Uhxiw','map','Default\x20export\x20is\x20not\x20a\x20block-bodied\x20function.\x20Manually\x20add\x20the\x20following\x20at\x20the\x20top\x20of\x20your\x20root\x20component\x20in\x20','gHdEh','#\x20Ceraph\x20camera\x20test\x20images\x0a\x0aPer-screen\x20test\x20images\x20for\x20`<CeraphCamera\x20/>`\x20from\x0a`@ceraph/react-native-mcp/shim`.\x20The\x20filename\x20(without\x20extension)\x20is\x0athe\x20imageKey\x20you\x20pass\x20on\x20the\x20JSX\x20tag.\x0a\x0a##\x20Three\x20ways\x20to\x20wire\x20a\x20camera\x0a\x0a`<CeraphCamera\x20/>`\x20(no\x20`imageKey`)\x20—\x20uninitialized.\x20Falls\x20back\x20to\x20a\x0abundled\x201024x1024\x20black\x20PNG\x20that\x20ships\x20with\x20the\x20package,\x20so\x20the\x20screen\x0arenders.\x20The\x20MCP\x27s\x20`ceraph_doctor`\x20lists\x20these\x20as\x20info\x20findings\x20so\x20an\x0aAI\x20assistant\x20can\x20prompt\x20you\x20to\x20make\x20a\x20deliberate\x20choice.\x20Pick\x20from:\x0a\x0a1.\x20`<CeraphCamera\x20imageKey=\x22default\x22\x20/>`\x20—\x20explicit\x20acknowledgment\x20of\x0a\x20\x20\x20the\x20black\x20PNG.\x20Right\x20answer\x20for\x20most\x20form\x20/\x20upload\x20/\x20permission\x0a\x20\x20\x20flows\x20where\x20the\x20image\x20content\x20doesn\x27t\x20matter.\x0a2.\x20`<CeraphCamera\x20imageKey=\x22profile\x22\x20/>`\x20—\x20a\x20specific\x20test\x20image\x20you\x0a\x20\x20\x20provide\x20(this\x20folder).\x20Drop\x20`profile.jpg`\x20(or\x20`.png`\x20/\x20`.webp`\x20/\x0a\x20\x20\x20`.heic`)\x20here.\x20The\x20agent\x20can\x20write\x20the\x20file\x20for\x20you\x20via\x0a\x20\x20\x20`ceraph_add_camera_image`.\x0a3.\x20`<CeraphCamera\x20imageKey=\x22@runtime\x22\x20/>`\x20—\x20runtime\x20control.\x20The\x20flow\x0a\x20\x20\x20planner\x20picks\x20the\x20image\x20per-step\x20at\x20test\x20time.\x20Use\x20when\x20one\x20camera\x0a\x20\x20\x20screen\x20feeds\x20different\x20scenarios\x20across\x20multiple\x20flows.\x0a\x0a##\x20Naming\x0a\x0aLowercase\x20+\x20hyphen-separated,\x20descriptive\x20of\x20what\x20the\x20image\x20represents:\x0a\x0a-\x20`profile.jpg`\x20—\x20face\x20photo\x20for\x20a\x20profile\x20picture\x20screen\x0a-\x20`id-card.png`\x20—\x20government-issued\x20ID\x20for\x20a\x20KYC\x20scan\x20screen\x0a-\x20`product-photo.jpg`\x20—\x20a\x20product\x20image\x20for\x20an\x20upload\x20screen\x0a\x0aSupported\x20extensions:\x20`.jpg`,\x20`.jpeg`,\x20`.png`,\x20`.webp`,\x20`.heic`.\x0aExtension\x20priority\x20on\x20collision:\x20jpg\x20>\x20jpeg\x20>\x20png\x20>\x20webp\x20>\x20heic.\x0a\x0a##\x20Workflow\x0a\x0a1.\x20Drop\x20the\x20image\x20into\x20this\x20folder\x20with\x20the\x20right\x20filename.\x0a2.\x20Reference\x20it\x20on\x20the\x20tag:\x0a\x20\x20\x20```tsx\x0a\x20\x20\x20import\x20{\x20CeraphCamera\x20}\x20from\x20\x22@ceraph/react-native-mcp/shim\x22;\x0a\x20\x20\x20<CeraphCamera\x20imageKey=\x22profile\x22\x20/>\x0a\x20\x20\x20```\x0a3.\x20Regenerate\x20the\x20registry:\x20call\x20the\x20MCP\x20tool\x0a\x20\x20\x20`rn_sync_camera_registry`,\x20or\x20just\x20call\x20`ceraph_doctor`\x20—\x20it\x0a\x20\x20\x20syncs\x20the\x20registry\x20automatically.\x0a4.\x20In\x20`App.tsx`\x20or\x20your\x20root\x20layout\x20(once):\x0a\x20\x20\x20```tsx\x0a\x20\x20\x20import\x20{\x20installCeraph\x20}\x20from\x20\x22@ceraph/react-native-mcp/shim\x22;\x0a\x20\x20\x20useEffect(()\x20=>\x20{\x20installCeraph();\x20},\x20[]);\x0a\x20\x20\x20```\x0a\x20\x20\x20`installCeraph()`\x20loads\x20the\x20generated\x20registry\x20from\x0a\x20\x20\x20`./.ceraph/camera-images/_registry`\x20and\x20wires\x20the\x20deep-link\x0a\x20\x20\x20handlers\x20the\x20flow\x20planner\x20uses.\x0a\x0aCommit\x20these\x20images\x20so\x20flows\x20are\x20reproducible\x20across\x20machines\x20and\x20CI.\x0a','[react-native-mcp]\x20CERAPH_SIGNAL_HOST=','already-running','sweepOlderThan','dpaFA','https://ceraph.dev/#pricing','screenFromResult','bootDebounceMs','checkTargetReady','getDefaultImport','process','zlqTj','pnpm-workspace.yaml','isFinite','Unknown\x20error\x20during\x20type','activateApp','Build\x20Failed','File\x20not\x20found:\x20','Podfile.lock','asyncStorageReadBuffer','existing\x20config\x20at\x20','authFilePath',':\x20configured\x20✓','Bearer\x20token\x20the\x20user\x20pasted\x20(issued\x20by\x20ceraph.dev/cli-auth).\x20When\x20set,\x20skips\x20the\x20browser\x20flow\x20and\x20persists\x20it\x20directly.','uUdJP','assertNotVisible','WebDriverAgent\x20is\x20not\x20reachable.\x20On\x20a\x20real\x20device\x20it\x27s\x20served\x20at\x20localhost:8100\x20(run\x20it\x20via\x20Xcode\x27s\x20WebDriverAgentRunner);\x20for\x20a\x20simulator,\x20call\x20`rn_wda_start`\x20first\x20to\x20launch\x20WDA\x20and\x20route\x20to\x20it.','423891vLOQgo','env','all','listBooted','\x20visible=','rn_sync_camera_registry','Antigravity','spawnFn','replaceWithText','skipScreenshots','<CeraphCamera','rssTH','useEffect(()\x20=>\x20{\x20','Per-edge\x20bridge\x20steps.\x20Pass\x20through\x20verbatim\x20from\x20the\x20planning\x20tool.','isAvailable','openMethods','accumulatedHasFullyDynamicWrite','once','err','{\x20return\x20','.webp','appium-webdriveragent\x20not\x20required\x20for\x20this\x20target.','refs/remotes/origin/HEAD','testID','IrWYX','info','APjNY','readyPromise','\x0a@ceraph/react-native-mcp\x20init\x0a','ts-morph','previousScheme','children','.jsx','(?=[\x5cs/>])','Red\x20screen\x20error\x20detected','WrKSm','isIdentifier','node_modules','SNDOQ','PlannedChainInput.snapPointFlowIndices\x20must\x20be\x20an\x20array.','resolveRepo','998064mUfIvK','matcher','deviceProperties','status','jitLabel',')\x20exceeds\x20flows.length-1\x20(','TkFhS',']:\x20','Failed\x20to\x20spawn\x20xcodebuild:\x20','bNmnN','wildcard','_name','AQGtJ','accumulatedWriteKeys','getLatestTestIdSentinel','abs','package','describe','Use\x20a\x20short,\x20single-segment\x20subdirectory\x20name.','next','Detected\x20React\x20Native\x20app\x20at\x20','ApEQa','MAX_ERRORS','babel.config.cjs','ceraph-dir','password','storageAckSuccess','read','ls-files','ZyFVn','HoHFS','buildTapPointerActions','removeAllListeners','\x20MB.\x20Test\x20fixtures\x20typically\x20fit\x20under\x201\x20MB;\x20consider\x20downsampling\x20if\x20it\x27s\x20larger\x20than\x20the\x20camera\x20screen\x20needs.','rn_find_flows','IytWM','revertAuth','onStep','JsxElement','isBlock','prebuild\x20--clean\x20is\x20only\x20available\x20for\x20Expo\x20projects.','already-approved','waitForAppReady','\x20failed:\x20','LSApplicationWorkspaceErrorDomain','ManagementClient','qIjus','Set\x20','ios/\x20directory\x20does\x20not\x20exist.\x20Run\x20`npx\x20expo\x20prebuild`\x20to\x20generate\x20native\x20projects.','\x20installCeraph()\x20in\x20','auto-no-target-found','Doctor\x20checks\x20failed.\x20Resolve\x20these\x20before\x20running\x20flows.\x20After\x20fixing,\x20retry\x20—\x20doctor\x20re-runs\x20automatically\x20until\x20it\x20passes.','--relative','readSelectorText','missing-dir','\x20Warning:\x20','dryRun','affectedFlowNames','removeElement','root','GWboy','Podfile','\x20(dynamic\x20Expo\x20config).','epoch','.\x20Expected\x20\x27','Install\x20with\x20`brew\x20install\x20ffmpeg`\x20to\x20enable\x20per-chain\x20mp4\x20capture\x20on\x20real-device\x20runs.\x20Tests\x20will\x20continue\x20without\x20video\x20until\x20installed.','Specific\x20user\x20id\x20to\x20delete.\x20Mutually\x20exclusive\x20with\x20`all`.','ios/Podfile.lock\x20is\x20missing.\x20Pods\x20may\x20need\x20to\x20be\x20installed.','concat','Common\x20right\x20after\x20an\x20iOS\x20or\x20macOS\x20update.\x20Update\x20Xcode\x20(or\x20install\x20the\x20matching\x20Device\x20Support),\x20open\x20Xcode\x20→\x20Window\x20→\x20Devices\x20&\x20Simulators\x20and\x20wait\x20for\x20\x27Preparing\x20device\x20for\x20development\x27\x20to\x20finish,\x20then\x20retry.','confirm','Permission\x20interceptor\x20middleware\x20is\x20wired.\x20iOS\x20system\x20permission\x20dialogs\x20will\x20be\x20auto-accepted\x20during\x20flows\x20(configurable\x20via\x20the\x20`CERAPH_AUTO_ACCEPT_PERMISSIONS`\x20env\x20var:\x20`auto-accept`\x20|\x20`ask`\x20|\x20`off`).','isInstalled','`xcodebuild`\x20not\x20found\x20on\x20PATH.\x20Install\x20Xcode\x20(full\x20app,\x20not\x20just\x20Command\x20Line\x20Tools)\x20and\x20accept\x20the\x20license:\x20`sudo\x20xcodebuild\x20-license\x20accept`.','paths','Connect\x20your\x20iPhone\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac\x20(or\x20boot\x20a\x20simulator),\x20then\x20call\x20ceraph_start\x20again.','Clerk\x20deleteUser\x20failed:\x20','oCWut','oBzKf','Bundle\x20ID\x20of\x20the\x20app\x20under\x20test\x20(e.g.,\x20com.acme.myapp).\x20Used\x20for\x20the\x20app-installed\x20staleness\x20check\x20and\x20doctor.\x20Pass\x20it\x20so\x20the\x20build\x20step\x20can\x20skip\x20when\x20the\x20app\x20is\x20already\x20installed;\x20without\x20it,\x20build-skip\x20falls\x20back\x20to\x20the\x20prebuild\x20snapshot\x20only\x20(a\x20cold\x20first\x20run\x20with\x20no\x20snapshot\x20will\x20build).','setTestDataManager','listRuns','accept','win32','Server-issued\x20HMAC\x20over\x20chainId\x20+\x20flows\x20+\x20bridges.\x20Pass\x20verbatim\x20from\x20the\x20planning\x20tool\x27s\x20chain\x20block.\x20The\x20runner\x20rejects\x20calls\x20without\x20it\x20or\x20with\x20a\x20mismatched\x20value.','IXtfD','Poll\x20the\x20WDA\x20source\x20tree\x20until\x20an\x20element\x20matching\x20the\x20query\x20is\x20visible\x20(or,\x20if\x20disappear\x20is\x20true,\x20until\x20it\x20vanishes).\x20Default\x20timeout\x20is\x205s.','line','.\x20Connect\x20your\x20iPhone\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac,\x20then\x20re-run\x20the\x20original\x20tool.','selectedAt','Xcode','sendW3CActions','isNoSubstitutionTemplateLiteral','getTarget','NYTgm','disableAutoLock','missingRequiredEnv','local-hash','not\x20associated','camera','The\x20native\x20build\x20failed.\x20See\x20the\x20captured\x20Xcode\x20output.','modal','voBGl','buildWarnings','metroProcess','bytes','Start\x20a\x20chained\x20mobile\x20run.\x20Pass\x20the\x20chain\x20block\x20returned\x20by\x20a\x20planning\x20tool\x20VERBATIM\x20—\x20the\x20runner\x20verifies\x20a\x20server-issued\x20signature\x20on\x20`chainId`\x20/\x20`flows`\x20/\x20`bridges`\x20and\x20rejects\x20any\x20modified\x20plan.\x20For\x20ad-hoc\x20scenarios\x20where\x20you\x20want\x20to\x20drive\x20a\x20custom\x20sequence,\x20use\x20the\x20screen_*\x20primitives\x20directly\x20instead\x20of\x20hand-crafting\x20a\x20chain.\x20Returns\x20one\x20of\x20`snap_point_pending`\x20|\x20`chain_complete`\x20|\x20`error`.\x20Pair\x20with\x20`rn_test_chain_continue`\x20to\x20resume.','Install\x20the\x20optional\x20appium-webdriveragent\x20dep\x20in\x20your\x20project\x20(npm\x20i\x20-D\x20appium-webdriveragent)\x20and\x20retry\x20—\x20see\x20the\x20README\x20Simulator\x20setup.','bridges','[react-native-mcp]\x20WARNING:\x20dropped\x20','rn_check_prebuild','label','No\x20correction\x20(device\x20coordinates)','files','provision','startMetro','Unknown\x20error\x20during\x20tap','snap_point_pending','appConfig','no-rn-project','cacheDoctor','js-exception','lastTouchedMs','::ffff:7f00:1','Test\x20images:\x20call\x20`ceraph_add_camera_image`\x20(writes\x20+\x20auto-syncs\x20the\x20registry),\x20or\x20drop\x20files\x20into\x20','Env\x20var\x20names\x20the\x20planned\x20flows\x20reference.\x20Each\x20must\x20be\x20set\x20+\x20non-empty\x20for\x20doctor\x20to\x20pass.','appex','Bpaqz','retry','qpgeV','UDID_TTL_MS','mcp_servers.react-native-mcp','bootBuffer','extendedCatalog','devicectl','error','Signed\x20in\x20[cached]','network-4xx','getImportDeclaration','ffmpeg\x20not\x20required\x20for\x20simulator\x20targets\x20—\x20`xcrun\x20simctl\x20io\x20recordVideo`\x20(shipped\x20with\x20Xcode)\x20handles\x20video\x20capture.','Scan\x20.ceraph/camera-images/\x20for\x20test\x20images\x20and\x20(re)generate\x20the\x20static\x20`_registry.ts`\x20the\x20app\x20imports\x20at\x20boot.\x20The\x20filename\x20without\x20extension\x20becomes\x20the\x20imageKey\x20passed\x20to\x20<CeraphCamera\x20imageKey>.\x20Call\x20this\x20after\x20adding\x20or\x20removing\x20image\x20files\x20manually\x20(Finder,\x20git\x20pull).\x20`ceraph_add_camera_image`\x20already\x20auto-syncs\x20after\x20each\x20write\x20—\x20only\x20call\x20this\x20tool\x20for\x20manual\x20drops.\x20Idempotent\x20—\x20does\x20not\x20rewrite\x20the\x20registry\x20when\x20it\x20already\x20matches\x20the\x20discovered\x20set.','connected','jpg','$1-$2','isRunning','awake','capErrors','Could\x20not\x20detect\x20a\x20supported\x20image\x20format\x20from\x20the\x20decoded\x20bytes.','advanceUntilPauseOrEnd','pause','llm-decides','pid','listInstalledAppsSimulator','.ceraph/last-build-snapshot.json','Index\x20','projectPath','tapAtPoint','Access-Control-Allow-Headers','installCeraph','\x20in\x20your\x20environment.','single','Request\x20a\x20JS\x20bundle\x20reload\x20on\x20the\x20running\x20RN\x20app\x20by\x20dispatching\x20the\x20`ceraph://reload`\x20deep\x20link\x20through\x20WDA.\x20Requires\x20the\x20app\x20to\x20have\x20called\x20`installSignalCapture()`\x20(or\x20otherwise\x20registered\x20the\x20reload\x20deep-link\x20listener)\x20at\x20boot.\x20Waits\x20up\x20to\x20`timeoutMs`\x20for\x20WDA\x20to\x20become\x20responsive\x20again,\x20then\x20captures\x20a\x20screenshot.\x20Dev-only;\x20does\x20nothing\x20in\x20a\x20production\x20build.','utf8','charCodeAt','kill','perFlowStatedDependencies','tooLarge','\x20extended\x20pkgs)','isImportClause','disableHeartbeat','stepIndex','applyRecreate','deleteAsyncStorageKeys','publicKey','X\x20coordinate\x20to\x20tap','delete','inflight','Existing\x20sign-in\x20is\x20from\x20the\x20old\x20GitHub\x20OAuth\x20flow\x20—\x20re-authenticating\x20against\x20the\x20new\x20browser\x20flow.','recreate','bwrfA','No\x20token\x20provided.','apiBase','removedRuntimeFiles','subscription','expiresAt','@react-native','yjuAy','labelledBack','moved','unlink-failed','findAndTapReturningTree','listapps','device_set_orientation','bootWriteCount','yPxfo','ensureBabelPlugin','HuSUr','expandedSteps','1-based\x20line\x20of\x20the\x20opening\x20<CameraView>\x20tag.','clear','dist','zXUkA','runtimeErrors','query\x20is\x20required\x20and\x20must\x20not\x20be\x20empty.','right','\x20file(s):','getInitializer','alreadyHasImageKey','pnpm','isMetroRunning','cacheTtlMs','auth\x20provider\x20\x27firebase\x27\x20requires\x20firebase-admin\x20in\x20package.json.\x20Run:\x20npm\x20install\x20firebase-admin','rnManager','no-flows','intervalMs','cacheDir','127.0.0.1','output','email_verified','screen_tap_chain','installedAppsCache','mutation','recordAsyncStorageRead','build','toLowerCase','ingest','heif','auto-accept','mtimeMs','log','127.','OjwbY','exitCode','pCyBO','clearSimulatorWdaPort','\x20bytes\x20truncated>\x20…\x20','warn','yarn','startInFlight','readFile','expo-camera','install','iwUns','SsKSm','→\x20anonymous','.\x20Clean\x20prebuild\x20recommended.','qSYJW','componentName','\x20selector=','copy','PATCH','heim','No\x20element\x20found\x20for\x20query\x20at\x20index\x20','coordinateSource','auth-profile','expectedSelectors','stale-build','mkdirFn','detectPackageManager','role','Element\x20not\x20found','hostOverride','onRedbox','[ceraph]\x20video\x20recorder\x20threw\x20for\x20runId=','expandFlowPlaceholders','providerUserId','intent','pointerUp','foregroundApp','getLineAndColumnAtPos','Npsvi','account-invalid','HEAD','bTCcP','queries','Button','updateRunIndex','providerId','volumeDown','onChildSpawned\x20callback\x20threw:\x20','pro','You\x27re\x20set\x20up\x20on\x20Starter\x20—\x20local\x20build,\x20run,\x20and\x20device\x20tools.','ref','removedSiblingPath','nonnegative','size','realDeviceHookInflight','inStackTrace','imageKey\x20\x27','QVyQT','Connect\x20your\x20iPhone\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac,\x20or\x20boot\x20a\x20simulator\x20(open\x20-a\x20Simulator),\x20then\x20retry.','nonInteractive','firebase-admin','col','index','bootSource','toggleMethod',').\x20Find\x20them\x20on\x20disk\x20under\x20.ceraph/runs/<runId>/\x20and\x20correlate\x20with\x20the\x20run\x27s\x20recorded\x20video.','absolutePath','image/','fdyxl','isImportSpecifier','@ceraph/react-native-mcp','reload','.\x20Fix\x20the\x20error\x20above\x20and\x20re-run\x20`npx\x20@ceraph/react-native-mcp\x20uninstall`.','\x20library\x20pkgs,\x20','WebDriverAgent\x20did\x20not\x20become\x20reachable\x20on\x20:8100\x20within\x20','passedCount','filesScanned','Divided\x20by\x20','#!/bin/bash\x0a#\x20rn-error-notify.sh\x20—\x20Injected\x20by\x20@ceraph/react-native-mcp\x20init\x0a#\x20Reads\x20.rn-errors.json\x20and\x20injects\x20runtime\x20errors\x20into\x20Claude\x27s\x20context.\x0a\x0aERROR_FILE=\x22$CLAUDE_PROJECT_DIR/mobile/.rn-errors.json\x22\x0a\x0a#\x20Also\x20check\x20project\x20root\x20if\x20mobile/\x20doesn\x27t\x20exist\x0aif\x20[\x20!\x20-f\x20\x22$ERROR_FILE\x22\x20];\x20then\x0a\x20\x20ERROR_FILE=\x22$CLAUDE_PROJECT_DIR/.rn-errors.json\x22\x0afi\x0a\x0aif\x20[\x20!\x20-f\x20\x22$ERROR_FILE\x22\x20];\x20then\x0a\x20\x20exit\x200\x0afi\x0a\x0aERROR_COUNT=$(jq\x20-r\x20\x27.errors\x20|\x20length\x27\x20\x22$ERROR_FILE\x22\x202>/dev/null)\x0a\x0aif\x20[\x20\x22$ERROR_COUNT\x22\x20=\x20\x220\x22\x20]\x20||\x20[\x20-z\x20\x22$ERROR_COUNT\x22\x20];\x20then\x0a\x20\x20exit\x200\x0afi\x0a\x0aecho\x20\x22REACT\x20NATIVE\x20RUNTIME\x20ERROR\x20DETECTED:\x22\x0aecho\x20\x22\x22\x0ajq\x20-r\x20\x27.errors[]\x20|\x20\x22Error:\x20\x5c(.message)\x5cnStack:\x20\x5c(.stack)\x5cnTime:\x20\x5c(.timestamp)\x5cn---\x22\x27\x20\x22$ERROR_FILE\x22\x202>/dev/null\x0aecho\x20\x22\x22\x0aecho\x20\x22Use\x20rn_get_errors\x20for\x20full\x20details.\x20Fix\x20the\x20error\x20and\x20rebuild.\x22\x0a','runReloadRecoveryWitness','--json','destination\x20primary\x20selector\x20visible','CognitoIdentityProviderClient','beforeAll','componentHook:\x20hookName\x20must\x20be\x20a\x20non-empty\x20string','withLock','bootCaptureTail','added','inconclusive','connection','could\x20not\x20confirm\x20the\x20app\x20is\x20installed','spawn-failed','ensureLaunched','Restart\x20Claude\x20Code\x20(or\x20your\x20MCP\x20client)\x20to\x20load\x20the\x20Ceraph\x20tools.','react-native\x20run-ios','yarn.lock','info.plist','Natural-language\x20description\x20of\x20the\x20flow(s)\x20to\x20find\x20(e.g.\x20\x27user\x20logs\x20in\x27,\x20\x27add\x20item\x20to\x20cart\x27).','Unknown\x20error\x20during\x20openUrl','__proto__','runBridge','3ZAcKgC','action','persisted','console-error','resized','Couldn\x27t\x20auto-install\x20appium-webdriveragent\x20—\x20install\x20it\x20manually\x20with\x20`','[react-native-mcp]\x20','Start\x20the\x20Metro\x20dev\x20server.\x20Auto-detects\x20Expo\x20vs\x20bare\x20React\x20Native.\x20Monitors\x20console\x20output\x20for\x20runtime\x20errors\x20and\x20warnings.\x20To\x20bring\x20everything\x20up\x20in\x20one\x20call\x20(Metro\x20+\x20build\x20+\x20verify),\x20use\x20ceraph_start.','CFBundleName','PlannedChainInput.bridges\x20must\x20be\x20an\x20array.','flows','→\x20mutated\x20value\x20NOT\x20observed\x20in\x20reader\x20UI','projectDir','step-','Unknown\x20error\x20during\x20setOrientation','Could\x20not\x20dispatch\x20reload\x20deep\x20link:\x20','invalid-subdir','.json','preflight','\x20id=','https://ceraph.dev/api/catalog/public-key','project-not-found','Delete\x20on-disk\x20chain-run\x20artifacts\x20(per-step\x20screenshots\x20+\x20run\x20index)\x20older\x20than\x20a\x20threshold.\x20Use\x20to\x20free\x20disk\x20before\x20disk\x20pressure\x20becomes\x20a\x20problem,\x20or\x20to\x20drop\x20runs\x20containing\x20sensitive\x20screenshots.\x20Defaults\x20to\x20`14d`\x20(matches\x20the\x20server\x27s\x20startup-retention\x20sweep).\x20Pass\x20`30d`\x20for\x20a\x20more\x20conservative\x20purge\x20or\x20`all`\x20to\x20wipe\x20every\x20cached\x20run\x20on\x20the\x20machine.\x20Returns\x20the\x20list\x20of\x20evicted\x20runIds,\x20bytes\x20freed,\x20and\x20how\x20many\x20runs\x20remain\x20cached.','HkHXu','imageKey','\x20\x20//\x20No\x20images\x20registered\x20yet.\x20Drop\x20files\x20into\x20.ceraph/camera-images/\x0a\x20\x20//\x20and\x20re-run\x20`rn_sync_camera_registry`.\x0a}\x0a','flowRunner','optimistic\x20rollback:\x20','deps','keys','stack','macOS\x20Screen\x20Recording\x20permission\x20not\x20granted.\x20Open\x20System\x20Settings\x20→\x20Privacy\x20&\x20Security\x20→\x20Screen\x20Recording\x20and\x20enable\x20your\x20terminal\x20app\x20(Terminal\x20/\x20iTerm\x20/\x20Warp\x20/\x20Cursor\x20/\x20VS\x20Code\x20—\x20whichever\x20launched\x20the\x20MCP).\x20After\x20granting,\x20fully\x20quit\x20and\x20relaunch\x20the\x20terminal,\x20then\x20unplug\x20and\x20replug\x20your\x20iPhone\x20before\x20retrying.','zsJiU','screen_screenshot','bun.lockb','fetcher','hex','ceraph-uninstall-claude-hooks-preview-','MessageType','Hook\x20script:\x20.claude/hooks/rn-error-notify.sh\x20✓','[ceraph]\x20JIT\x20provision\x20failed:\x20','createdAt','XGTMM','already-present','opts','componentHook:\x20returns\x20must\x20be\x20an\x20object','saveBuildSnapshot','stdin','ternary-with--1','has','state','/callback','simulator','details','join','outside\x20','matches','awaiting_decision','could\x20not\x20read\x20the\x20file','reload-recovery','setRealDeviceHook','sim','parse','int','readJson','runs','steps','videoStartError','getElements','No\x20real\x20iOS\x20device\x20detected\x20—\x20target\x20is\x20simulator,\x20so\x20this\x20is\x20fine.','writeSet','scriptAbsPath','device_ensure_awake','Dry-run\x20camera\x20preview\x20failed.\x20Re-run\x20without\x20--dry-run\x20after\x20fixing\x20the\x20error\x20above,\x20or\x20pass\x20--project-dir\x20if\x20the\x20path\x20is\x20wrong.','discoveredIn','bind-failed','unchanged','progressWriter','server','round','no-gitignore','recordBootRequest','The\x20simulator\x20WebDriverAgent\x20build\x20ran\x20for\x20','verify-observation','rn_wait_for_device','nEntr','installStdioToStderr','destination\x20primary\x20selector\x20NOT\x20visible','xWEsR','-destination','absPath','isArray','BeNOW','mutationKind','installCeraph()\x20already\x20wired\x20in\x20','URL-path\x20patterns\x20used\x20to\x20scope\x20boot-time\x20request\x20bodies\x20the\x20AI\x20agent\x20sees.\x20Pass\x20through\x20verbatim\x20from\x20the\x20planning\x20tool.\x20Empty\x20or\x20absent\x20means\x20no\x20scoping.','ceraph-react-native-mcp','listChangedFiles','EZrxD','rvIdr','distancePx','toUpperCase','Could\x20not\x20list\x20installed\x20apps:\x20','listen\x20failed','ajXip','id=','runStep','loadSnapshot','removeEventListener','hlpCj','flush','\x20[y/N]\x20','searchElements','false','subDir\x20\x27','droppedCount','failureCause','relPath','connect','Unknown\x20error\x20during\x20getActiveAppInfo','statusCode','runVerifyMarkers','bundleIdentifier','reused','axuaU','peerDependencies','.babelrc.js','detectProjectType','http://localhost:','address','ask','Your\x20project\x20uses\x20','Allow\x20Once','high','random','qWeoi','ceraph_init_replace_camera','js-error','claude-hooks','clean','bootWriteCounter','Per-flow\x20conditions\x20the\x20AI\x20agent\x20uses\x20to\x20reason\x20about\x20user\x20identity.\x20Pass\x20through\x20verbatim\x20from\x20the\x20planning\x20tool.','mcpServers','array','Could\x20not\x20locate\x20the\x20default-exported\x20function\x20component.\x20Manually\x20add\x20the\x20following\x20near\x20the\x20top\x20of\x20your\x20root\x20component\x20in\x20','Compound\x20primitive:\x20tap\x20a\x20sequence\x20of\x20elements\x20as\x20ONE\x20W3C\x20actions\x20call.\x20The\x20AX\x20tree\x20is\x20fetched\x20once;\x20each\x20query\x20resolves\x20against\x20that\x20snapshot.\x20If\x20any\x20query\x20fails\x20to\x20resolve,\x20the\x20chain\x20stops\x20and\x20ZERO\x20gestures\x20are\x20sent\x20(we\x20never\x20partial-tap\x20an\x20intent).\x20On\x20bulk-endpoint\x20failure,\x20falls\x20back\x20to\x20serial\x20taps\x20(batched:\x20false).\x20Useful\x20for\x20short\x20fixed\x20sequences\x20(open\x20menu\x20→\x20pick\x20option\x20→\x20confirm)\x20where\x20each\x20tap\x20doesn\x27t\x20depend\x20on\x20intermediate\x20re-rendering.','replace','PlannedChainInput.flows\x20must\x20contain\x20at\x20least\x20one\x20flow.','No\x20<CameraView>\x20usages\x20found\x20in\x20app/,\x20src/,\x20screens/,\x20App.tsx','deleted-file','totalReplacements','Supabase\x20adapter\x20requires\x20`projectUrl`\x20for\x20cleanup.','diff','ArXYY','-c:v','Skipped\x20—\x20no\x20.ceraph/camera-images/\x20directory.\x20Drop\x20test\x20images\x20there\x20to\x20enable\x20the\x20camera\x20shim.','.png','controlMode','rFueP','Refusing\x20to\x20send\x20your\x20Ceraph\x20token\x20over\x20plaintext\x20HTTP\x20to\x20a\x20non-local\x20host:\x20\x22','Element\x20not\x20visible\x20after\x203000ms:\x20','mime','deep-link\x20(command\x20channel\x20unavailable\x20—\x20:8101\x20not\x20bound\x20by\x20this\x20session)','avfoundation','Delete\x20on-demand\x20managed\x20test\x20users.\x20Pass\x20`id`\x20to\x20remove\x20one\x20user\x20or\x20`all:\x20true`\x20to\x20wipe\x20every\x20on-demand\x20user\x20for\x20this\x20project.\x20Local\x20records\x20are\x20removed\x20even\x20if\x20the\x20provider-side\x20delete\x20fails\x20(clean\x20up\x20via\x20the\x20provider\x27s\x20dashboard\x20if\x20needed).\x20Pro\x20tier\x20only.',')\x20after\x20','FaJfB','layoutCount','app.json','signal','no-changes','rn_target_status','runId','column','iQpAZ','getUdid','projectUrl','keyboard','utf-8','lkxFo','\x20bytes;\x20the\x20limit\x20is\x20','POST','No\x20iOS\x20device\x20detected.','Code=115','errorMessage','workspaces','some','seeded','Could\x20not\x20resolve\x20the\x20device\x20hardware\x20UDID\x20for\x20the\x20xcodebuild\x20destination.\x20Plug\x20in\x20your\x20iPhone\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac,\x20then\x20retry.\x20To\x20pin\x20it\x20explicitly,\x20set\x20CERAPH_DEVICE_HARDWARE_UDID\x20to\x20the\x20device\x20UDID\x20(the\x20value\x20`iproxy\x20-u`\x20uses,\x20e.g.\x2000008140-001958943A78801C\x20—\x20NOT\x20the\x20CoreDevice\x20id\x20devicectl\x20prints).','\x20files\x20changed\x20vs\x20','\x22]\x0a','deleted','14d','\x20Open\x20the\x20sign-in\x20URL,\x20copy\x20the\x20token\x20it\x20issues,\x20and\x20re-call\x20ceraph_init\x20with\x20that\x20value\x20as\x20`token`.','isProTier','WDA\x20touchAndHold\x20failed:\x20','found','.bashrc','camera-images','WDA\x20screenshot\x20failed:\x20','getNameNode','Port\x20','POSITIVE_INFINITY','`\x20exited\x20with\x20code\x20','outputToStderr','jit','system_profiler','buildFailed','settings.local.json','getWorkingTreeDiff','Brrto','ms.\x20If\x20this\x20is\x20the\x20first\x20relaunch\x20since\x20a\x20reboot\x20it\x20may\x20just\x20be\x20slow\x20—\x20retry.\x20Otherwise\x20check\x20the\x20device\x20is\x20unlocked\x20and\x20the\x20WDA\x20runner\x20is\x20signed\x20for\x20it.','stop','Xqaql','stringify','Use\x20only\x20[a-z0-9-],\x20no\x20leading/trailing/consecutive\x20hyphens,\x20no\x20spaces,\x20no\x20uppercase.\x20Example:\x20`handwriting-sample-1`.','stopAll','Max\x20time\x20in\x20ms\x20to\x20wait\x20for\x20the\x20app\x20to\x20come\x20back\x20after\x20the\x20reload\x20(default\x2010000).','send','WDA\x20keys\x20(backspace)\x20failed:\x20','permissionInterceptor','xcrun\x20devicectl\x20not\x20available\x20—\x20install\x20Xcode\x2015\x20or\x20newer.','userPoolId','requiresEnv','Project\x20cached\x20server-side:\x20','metroOutput','ceraph://reset','\x20is\x20not\x20an\x20array\x20of\x20strings\x20—\x20preserved','FileChanged','registered','encode','rn_stop','xcrun','abort','drainCommandsForTesting','api-error','flow','eGXSq','rn_test_chain_continue','nzVMd','githubUser','babelConfigHash','home','Open\x20a\x20URL\x20/\x20deep\x20link\x20on\x20the\x20device\x20to\x20jump\x20straight\x20to\x20a\x20screen\x20—\x20useful\x20for\x20testing\x20your\x20app\x27s\x20deep-link\x20routes\x20(e.g.\x20myapp://product/42).\x20If\x20the\x20scheme\x20isn\x27t\x20registered\x20in\x20the\x20app\x20under\x20test,\x20the\x20result\x20carries\x20an\x20actionable\x20message\x20explaining\x20the\x20app\x20needs\x20a\x20rebuild\x20to\x20pick\x20up\x20the\x20scheme.','\x0aCamera\x20test\x20images:','awaitingErrorDecision','Re-run\x20`rn_sync_camera_registry`\x20manually\x20to\x20regenerate\x20`_registry.ts`.\x20The\x20image\x20file\x20itself\x20is\x20on\x20disk\x20and\x20safe.','contents','timer','Doctor:\x20','.zshrc','getActiveAppInfo','FUAmz','revertUserGlobalMcpClients','TkrbK','mutation-fired','fYEIW','XPTCB','ceraph_uninstall_run','readyResolve','[react-native-mcp]\x20Server\x20started\x20on\x20stdio\x20transport','setOnSignal','bodyBytes','YnnSq','unknown\x20reason','domain','XBCve','pendingStorageAckResolver','@ceraph/react-native-mcp/shim','PpONs','checkIdb','\x20catalog\x20entries\x20during\x20validation\x20(client\x20build\x20may\x20predate\x20a\x20newer\x20server\x20schema):\x20','repo','_systemBack','getDefaultBranch','key','lastContactAt','statFn','Sign\x20in\x20by\x20opening\x20the\x20browser.\x20Spawns\x20a\x20localhost\x20listener,\x20opens\x20ceraph.dev/cli-auth,\x20waits\x20for\x20the\x20issued\x20token,\x20and\x20writes\x20it\x20to\x20~/.ceraph/auth.json.\x20Returns\x20{\x20status:\x20\x27ok\x27,\x20email?\x20}\x20on\x20success,\x20{\x20status:\x20\x27aborted\x27\x20}\x20when\x20the\x20MCP\x20client\x20cancelled\x20the\x20tool\x20call\x20(don\x27t\x20prompt\x20the\x20user\x20—\x20just\x20stop),\x20or\x20{\x20status:\x20\x27error\x27,\x20error\x20}\x20on\x20unexpected\x20failure\x20(including\x20\x27No\x20token\x20provided.\x27\x20when\x20the\x20browser\x20flow\x20times\x20out\x20and\x20the\x20user\x20doesn\x27t\x20paste\x20a\x20token).\x20TOKEN\x20HAND-OFF:\x20when\x20the\x20flow\x20can\x27t\x20complete\x20on\x20this\x20machine\x20(headless,\x20browser\x20on\x20another\x20device,\x20timeout),\x20surface\x20https://ceraph.dev/cli-auth\x20to\x20the\x20user,\x20ask\x20them\x20to\x20paste\x20the\x20token\x20it\x20issues\x20into\x20the\x20chat,\x20then\x20re-call\x20this\x20tool\x20with\x20that\x20value\x20as\x20`token`\x20—\x20it\x20is\x20persisted\x20directly\x20and\x20no\x20browser\x20opens.\x20For\x20a\x20COMPLETE\x20setup\x20(every\x20phase,\x20not\x20just\x20sign-in),\x20prefer\x20`ceraph_init`\x20—\x20it\x20runs\x20this\x20same\x20token\x20hand-off\x20AND\x20the\x20full\x20walkthrough\x20in\x20one\x20call.','yBESs','selector=','required-env-vars','parseError','/rn-find-flows','bun','route','flow\x20name\x20exceeds\x20256\x20characters.','Image\x20is\x20','141888wAYKTr','Text','lockState','unspecified\x20failure','removedImport','signal=','camera-registry-synced','getTestIdReady','\x20RN\x20apps\x20(','seamed','accessToken','All\x20<CeraphCamera\x20imageKey>\x20values\x20resolve\x20to\x20files\x20in\x20.ceraph/camera-images/.','ignore','@aws-sdk/client-cognito-identity-provider','cleanup','floor','.\x20These\x20names\x20do\x20not\x20match\x20any\x20flow\x20in\x20chain.flows[].name.\x20Diff-affected\x20screenshot\x20capture\x20will\x20only\x20fire\x20for\x20matching\x20names.\x0a','ceraph_purge_runs','uwJjT','pollIntervalMs','device-awake','failed','returns','fOmHa','hostname','bcJQg','.next','getText','legacy','Build\x20and\x20run\x20the\x20React\x20Native\x20app\x20on\x20an\x20iOS\x20device\x20or\x20simulator.\x20Auto-detects\x20Expo\x20vs\x20bare\x20React\x20Native\x20and\x20uses\x20the\x20correct\x20command.\x20Captures\x20Xcode\x20build\x20output\x20and\x20returns\x20structured\x20error\x20information.\x20If\x20clean\x20is\x20true,\x20runs\x20`npx\x20expo\x20prebuild\x20--clean`\x20first\x20(Expo\x20only).\x20To\x20bring\x20everything\x20up\x20in\x20one\x20call\x20(Metro\x20+\x20build\x20+\x20verify),\x20use\x20ceraph_start.','XGXjT','rn_start','replaced','Link','--port','firebase','main','last-build-snapshot.json','Unknown\x20chain\x20error','Refusing\x20to\x20send\x20your\x20Ceraph\x20token\x20to\x20a\x20\x22','formatNetworkDetail','Preflight\x20passed\x20(target\x20ready,\x20required\x20env\x20present).','importKey','\x20is\x20not\x20installed','perFlowMutexWith','stripped','ticking','terminateAppViaWDA','tQHgi','already-reverted','pendingCommandAcks','getName','default','subtle','More\x20about\x20the\x20plans\x20→\x20','ms)\x20exceeded\x20before\x20step\x20','network-failure','auth-error','Skipped\x20—\x20iproxy\x20auto-bridge\x20not\x20applicable\x20to\x20simulator\x20targets.','cwd','registryState','settings.json','jxcaV','No\x20bare\x20<CameraView>\x20usages\x20from\x20expo-camera\x20found\x20in\x20app/src/screens.','getLockState','lastRedboxSignature','block','StaticText','getStatements','Claude\x20Code:\x20','en5','writeFile','simulatorWdaPort','testID\x20injector\x20already\x20wired\x20in\x20','KCGjt','tapCoords','linker','WDA\x20unavailable\x20—\x20call\x20rn_wda_start\x20first\x20if\x20testing\x20on\x20a\x20simulator.','platform=iOS\x20Simulator,id=','/wda/activeAppInfo','hHXth','Unknown\x20error\x20during\x20findAndTapReturningTree','dismiss','getGitSha','Unlock\x20the\x20device\x20manually\x20and\x20set\x20Auto-Lock\x20to\x20Never.','reasons','plugins','matchCount','initialObservation','test','<unknown\x20element>','bin','xcodebuild\x20printed\x20the\x20WDA\x20port\x20marker\x20but\x20then\x20exited\x20with\x20code\x20','Username-Password-Authentication','agentMode','pod','gitignore','insertElement','find-fallback','fromEntries','hideKeyboardAfter','listener','were\x20not\x20touched\x20in\x20this\x20run.','\x27\x20at\x20','tIVIh','No\x20managed\x20processes\x20were\x20running.','errorSignature','.gemini','pushLine','Which\x20plan?','\x20(secret\x20env:\x20','.\x20Stale\x20native\x20modules\x20may\x20cause\x20build\x20errors.','Resume\x20a\x20chain\x20run\x20that\x20previously\x20returned\x20`snap_point_pending`\x20OR\x20`awaiting_error_decision`.\x20Pass\x20the\x20`runId`\x20and\x20the\x20AI\x20agent\x27s\x20decision:\x0a\x20\x20•\x20`snap_point_pending`\x20→\x20`continue`\x20(keep\x20current\x20user)\x20|\x20`recreate`\x20(wipe\x20app\x20state,\x20then\x20run\x20next\x20flow).\x0a\x20\x20•\x20`awaiting_error_decision`\x20→\x20`retry`\x20(re-run\x20the\x20failed\x20flow\x20once;\x20second\x20failure\x20terminalizes)\x20|\x20`halt`\x20(terminalize\x20the\x20run\x20immediately\x20with\x20the\x20recorded\x20failure).\x0aA\x20decision\x20that\x20doesn\x27t\x20match\x20the\x20active\x20pause\x20state\x20is\x20rejected\x20with\x20an\x20error\x20response\x20naming\x20the\x20actual\x20pause\x20—\x20re-issue\x20with\x20the\x20correct\x20verb.\x20Returns\x20the\x20next\x20response\x20—\x20another\x20pause,\x20chain\x20completion,\x20or\x20an\x20error.','CqFYc','[ceraph][ceraph-infra]\x20surgical\x20AsyncStorage\x20delete\x20returned\x20no\x20ACK\x20or\x20failure\x20for\x20keys:\x20','YZHVb','already','createClient','WebDriverAgent\x20already\x20reachable\x20—\x20skipped\x20iproxy\x20auto-bridge.','[ceraph][rn_wait_for_device]\x20usbmuxd\x20socket\x20unavailable;\x20falling\x20back\x20to\x20polling.\x20Install\x20Xcode\x20for\x20sub-second\x20device\x20detection.\x0a','runExpoConfig','hint','PRODUCT_TYPE','addNamedImport','alloc','UnxJK','scheme','Allow','[ceraph-test-data]\x20adapter\x20cleanup\x20failed\x20for\x20','networkInterfaces','CFBundleVersion','revertSignalHostEnv','npm','.vscode','/cli-auth\x20in\x20your\x20browser\x20to\x20sign\x20in.\x20If\x20the\x20browser\x20didn\x27t\x20open,\x20visit\x20the\x20URL\x20manually:\x0a\x20\x20','entry','Failed\x20to\x20focus\x20element\x20before\x20clearing',')\x20—\x20preserved','setInitializer','snapshotPath','cert','ProvisionError','purgeRun','DSPeg','chainId','hasOwnProperty','started','registry-sync-failed','Tap\x20at\x20specific\x20coordinates\x20on\x20the\x20iOS\x20device\x20screen\x20via\x20WebDriverAgent.\x20Automatically\x20corrects\x20for\x20pixel\x20ratio\x20mismatch\x20when\x20coordinates\x20come\x20from\x20a\x20screenshot\x20(divides\x20by\x20device\x20pixel\x20ratio).\x20Requires\x20WebDriverAgent\x20reachable\x20(localhost:8100\x20on\x20a\x20real\x20device;\x20call\x20rn_wda_start\x20first\x20for\x20a\x20simulator).','Laptop\x20is\x20on\x20WiFi\x20\x27','qHsDh','30d','busy','Ceraph\x20rate\x20limit\x20hit.\x20Try\x20again\x20in\x20a\x20few\x20seconds.','Firebase\x20deleteUser\x20failed:\x20','spawnRemove','eGQye','.\x20Stop\x20whatever\x20holds\x20:8101\x20(lsof\x20-nP\x20-iTCP:8101)\x20—\x20the\x20session\x20reclaims\x20it\x20automatically\x20—\x20or\x20rebuild\x20so\x20the\x20ceraph://\x20scheme\x20is\x20registered.','baseUrl','app.config.ts','XKneP','Could\x20not\x20find\x20app/_layout.tsx\x20or\x20App.tsx.\x20Add\x20this\x20to\x20your\x20root\x20component\x20manually\x20(the\x20require\x20path\x20is\x20relative\x20to\x20that\x20file\x20—\x20`./.ceraph/testid-config.json`\x20from\x20a\x20root\x20App.tsx,\x20`../.ceraph/testid-config.json`\x20from\x20app/_layout.tsx):\x0a\x20\x20useEffect(()\x20=>\x20{\x20installCeraph({\x20readTestidConfig:\x20()\x20=>\x20{\x20try\x20{\x20return\x20require(\x22./.ceraph/testid-config.json\x22);\x20}\x20catch\x20{\x20return\x20null;\x20}\x20}\x20});\x20},\x20[]);','present','WebDriverAgent\x20is\x20not\x20reachable\x20at\x20','appium-webdriveragent','ceraph://reload','Post-reload\x20snapshot\x20failed\x20(WDA\x20unreachable\x20or\x20source\x20error)','antigravity','Chain\x20halted\x20by\x20LLM\x20at\x20flow\x20\x22','Execute\x20one\x20or\x20more\x20flows\x20by\x20flowId\x20against\x20the\x20connected\x20iOS\x20app.\x20flowIds\x20come\x20from\x20rn_find_flows\x20or\x20rn_list_flows\x20responses\x20—\x20NEVER\x20invent\x20or\x20guess\x20them.\x20For\x20comprehensive\x20verification,\x20pass\x20every\x20flowId\x20from\x20the\x20preview.\x20At\x20most\x2010\x20flowIds\x20per\x20call\x20—\x20for\x20previews\x20larger\x20than\x20that,\x20batch\x20the\x20ids\x20across\x20multiple\x20rn_test_flows\x20calls.\x20The\x20server\x20orders\x20execution\x20(planner\x20priority\x20plus\x20chain\x20grouping\x20—\x20chainable\x20selections\x20run\x20back-to-back\x20in\x20one\x20device\x20session,\x20the\x20rest\x20individually),\x20so\x20the\x20order\x20of\x20the\x20ids\x20you\x20pass\x20carries\x20no\x20meaning.\x20Returns\x20per-step\x20screenshots\x20plus\x20any\x20runtime\x20errors.\x20If\x20any\x20id\x20is\x20unknown,\x20the\x20error\x20payload\x20includes\x20an\x20`available`\x20list\x20of\x20{flowId,\x20name}\x20to\x20re-pick\x20from.\x20Requires\x20auth\x20—\x20run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20first.','auto-only-simulator','set','Working\x20from\x20','in\x20','witnesses','resolveSha','shortVersionString','Test\x20image\x20registry\x20','componentHook','realDeviceHookFiredFor','currentStack','handle','signals','clearFirst','No\x20<CeraphCamera>\x20at\x20','Claude\x20Code\x20hook:\x20','bun.lock','getBuildOutput','No\x20element\x20found\x20matching\x20query:\x20','resetDelayMs','errors','Auth0\x20adapter\x20requires\x20`domain`\x20for\x20cleanup.','ffmpeg-installed','\x20swipes:\x20','positive','getJitUser','PUT','zkAJB','now','getErrors','Chain\x20aborted:\x20','\x20is\x20','udidResolved','user','cwd\x20is\x20a\x20React\x20Native\x20/\x20Expo\x20app','WebDriverAgent.xcodeproj','createConnection','isExportAssignment','buildOutput','Failed\x20to\x20get\x20element\x20tree:\x20','OTEjD','unknown','jpeg','New\x20dependencies\x20added:\x20','.\x20If\x20you\x20no\x20longer\x20need\x20the\x20customized\x20version,\x20delete\x20the\x20file\x20manually.\x20Settings\x20entries\x20pointing\x20at\x20the\x20script(s)\x20','yHcFL','1143240tyEzWM','SUPPRESS','already-handled','outside\x20form\x20region','bad-response','onAuthStateChanged','processIdentifier','kind','No\x20booted\x20iOS\x20simulator\x20found.\x20Boot\x20one\x20first:\x20`xcrun\x20simctl\x20boot\x20<udid>`\x20or\x20open\x20it\x20via\x20`open\x20-a\x20Simulator`\x20and\x20pick\x20a\x20device.\x20Then\x20retry\x20`rn_wda_start`.','bootCaptureMode','mutexWith','detectedContentType','fallbackText','endsWith','QJakm','Resize\x20or\x20recompress\x20the\x20image\x20before\x20uploading.\x20Test\x20fixtures\x20rarely\x20need\x20to\x20be\x20larger\x20than\x201\x20MB\x20—\x20over-large\x20fixtures\x20inflate\x20the\x20repo\x20and\x20slow\x20Metro\x20bundling.\x20Cap:\x205\x20MB.','killed','text,\x20accessibilityLabel,\x20or\x20type\x20is\x20required.','sourceMethod','Unknown\x20error\x20during\x20findAndTap','screen_type_into_field','purgeImages','GrjWY','starter','childExit','zaEFS','IhMuc','timestamp','mrjyM','reverted','left','Target:\x20unknown\x20(resolver\x20failed).\x20Falling\x20back\x20to\x20device\x20defaults.','adapter','fndIZ','\x20>\x20','pipe','ScreenManager\x20not\x20provided\x20—\x20cannot\x20query\x20active\x20app\x20via\x20WDA.','workingDir','\x0a}\x0a','Unhandled\x20JS\x20Exception:\x20','\x20require(\x22','/cli-auth?port=','.mobile-mcp','expo-config-needs-manual','Skipped\x20installCeraph()\x20injection.\x20Re-run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20to\x20wire\x20it.','Bearer\x20','Another\x20process\x20holds\x20the\x20device-signal\x20port\x20(:8101),\x20so\x20Ceraph\x27s\x20command\x20channel\x20is\x20unavailable\x20in\x20this\x20session,\x20and\x20the\x20deep-link\x20fallback\x20failed:\x20','Unknown\x20error\x20during\x20typeIntoField','udidResolvedAt','/wda/apps/terminate','apps/mobile','flowId','WDA\x20apps/terminate\x20failed:\x20','dTRXL','fRzMt',');\x20installed\x20appium-webdriveragent.','start','testDataManager','Library','exit','direction','Could\x20not\x20resolve\x20GitHub\x20remote.\x20Run\x20from\x20a\x20git\x20repository\x20whose\x20origin\x20points\x20to\x20github.com.','uDiRr','[ceraph]\x20video\x20recorder\x20shutdown\x20stop\x20failed:\x20','dirBytes','pluginVersion','clearText','outputPath','which','response-ui-divergence','chain_complete','isDirectory','nextScheme','-scheme','success','getLiteralText','Run\x20`ceraph_doctor`\x20for\x20the\x20full\x20state\x20including\x20warnings\x20+\x20info\x20findings\x20(e.g.\x20camera\x20setup\x20hints).','reloadRecoveryWitnesses','tmpRoot','Failed\x20to\x20focus\x20field\x20(serial\x20fallback)','spawn','Ceraph\x27s\x20device-signal\x20listener\x20couldn\x27t\x20start\x20(e.g.\x20a\x20permission\x20error\x20or\x20an\x20invalid\x20CERAPH_SIGNAL_HOST),\x20so\x20the\x20command\x20channel\x20is\x20unavailable\x20in\x20this\x20session,\x20and\x20the\x20deep-link\x20fallback\x20failed:\x20','isCallExpression','KeLso','PRODUCT_BUNDLE_IDENTIFIER','Image','missingEnv','Optional\x20swipe\x20start\x20point.\x20Defaults\x20to\x20screen\x20center.','runsStore','installCeraph-with-others','getParent','ExpressionStatement','snapshotTarget','pFeby','Init\x20failed:','ceraph_test_data_cleanup\x20failed:\x20','snapshotReachable','built','malformed','installCeraph()\x20is\x20wrapped\x20in\x20a\x20useEffect\x20that\x20also\x20contains\x20other\x20statements\x20(see\x20','url=','omitted','dialog','bare','disappear','app','TextField','`continue`\x20or\x20`recreate`','zYtuS','Supabase\x20createUser\x20failed:\x20','Ncpho','end','screen_wait_for','tap','iPkJz','drainBootRequests','/actions','WDA\x20setOrientation\x20failed:\x20','wifi','tJJEb','CERAPH_AUTH_DOMAIN','Signal\x20listener\x20bound\x20on\x20port\x20','getExpression','app.config.js','objectiveSignals','severity','Properties','mif1','unlock','videoRecorderFactory','SIGTERM','--short','udidInflight','componentHook:\x20entry\x20is\x20not\x20an\x20object','auth','invalidate','bare-rn','failedAt','on-demand','argv','nextFlowIndex','\x27\x20must\x20be\x20a\x20single\x20lowercase\x20segment.','screens','responseValue','Codex:\x20configured\x20✓','enforceCapacityCap','getClosingElement','method','manualSteps','accessibilityLabel','Call\x20rn_wda_start\x20to\x20launch\x20WebDriverAgent\x20on\x20the\x20simulator,\x20then\x20retry\x20(first\x20launch\x20runs\x20a\x20one-time\x20xcodebuild\x20for\x20code\x20signing;\x20later\x20launches\x20reuse\x20the\x20cache).','get','mchain-run-','findDeviceAppPid','save','defaultYes','controlShape','Failed\x20to\x20launch\x20app','Multiple\x20React\x20Native\x20subpackages\x20detected.\x20Pass\x20--project-dir\x20to\x20target\x20a\x20specific\x20subpackage,\x20e.g.\x20`--project-dir\x20','\x20is\x20held\x20by\x20another\x20process\x20—\x20usually\x20a\x20second\x20Ceraph\x20MCP\x20(a\x20different\x20project,\x20or\x20a\x20stale/orphaned\x20session),\x20but\x20possibly\x20an\x20unrelated\x20server.\x20This\x20Ceraph\x20server\x20runs\x20with\x20all\x20tools,\x20but\x20it\x20doesn\x27t\x20own\x20the\x20device-signal\x20listener:\x20runtime-error\x20capture\x20reaches\x20this\x20session\x20only\x20if\x20the\x20holder\x20is\x20a\x20Ceraph\x20instance\x20on\x20the\x20SAME\x20project\x20(shared\x20.rn-errors.json)\x20—\x20otherwise\x20errors\x20won\x27t\x20appear\x20here.\x20Free\x20the\x20port\x20(lsof\x20-nP\x20-iTCP:','CGILq','\x20[cached]','not\x20found','text/html;\x20charset=utf-8','WiFnI','ZabCs','[react-native-mcp]\x20Catalog\x20endpoint\x20rejected\x20(','[ceraph]\x20video\x20recorder\x20eviction\x20stop\x20failed:\x20','expectedRoutes','Ceraph\x20server\x20returned\x20malformed\x20JSON\x20for\x20','SPUSBDataType','Report\x20which\x20iOS\x20target\x20is\x20currently\x20selected\x20(device\x20vs\x20simulator),\x20the\x20resolved\x20WDA\x20base\x20URL,\x20whether\x20a\x20simulator\x20WDA\x20session\x20is\x20running,\x20and\x20the\x20CERAPH_TARGET\x20env\x20preference.\x20Call\x20this\x20when\x20the\x20developer\x20asks\x20`am\x20I\x20testing\x20on\x20device\x20or\x20simulator?`\x20or\x20before\x20starting\x20a\x20flow\x20if\x20uncertain\x20which\x20transport\x20is\x20active.','AdminDeleteUserCommand','rLsdK','\x22\x20URL:\x20\x22','No\x20iOS\x20target\x20detected.\x20For\x20a\x20real\x20device:\x20tell\x20the\x20user\x20to\x20plug\x20in\x20their\x20iPhone\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac,\x20then\x20call\x20`rn_wait_for_device`\x20(listens\x20on\x20macOS\x27s\x20usbmuxd\x20daemon\x20for\x20sub-second\x20event-driven\x20detection\x20—\x20no\x20polling,\x20no\x20timeout).\x20For\x20a\x20simulator:\x20boot\x20one\x20(Simulator.app\x20or\x20`xcrun\x20simctl\x20boot\x20<udid>`)\x20and\x20call\x20`rn_wda_start`\x20to\x20target\x20it.','Rewrite\x20','padEnd','\x22\x20cannot\x20start\x20with\x20\x22.\x22\x20(rejects\x20\x22.\x22\x20/\x20\x22..\x22\x20/\x20dotfiles).','push','session','toml','enum','expo-json-already-registered','flowIds','AsyncStorage\x20cleared\x20in-app\x20(shim\x20acknowledged).','fromCharCode','rn-flow-progress-notify.sh','skipped-needs-confirmation','toISOString','fileExists','prevText','Target:\x20','argv0',')\x20—\x20preserving\x20it.','.gitignore','Repeatedly\x20swipe\x20until\x20an\x20element\x20matching\x20text/accessibilityLabel\x20appears\x20in\x20the\x20accessibility\x20tree.\x20Returns\x20without\x20tapping.\x20Default\x20direction\x20is\x20\x27up\x27\x20(swipe\x20up\x20—\x20reveals\x20content\x20below\x20the\x20fold),\x20max\x2010\x20swipes.\x20Pass\x20direction:\x20\x27down\x27\x20to\x20scroll\x20backward\x20toward\x20the\x20top.',';\x20}','babel-preset-expo','classifyRuntimeEntry','gBSzs','optional','screenshotReason','close','DerivedData','Unable\x20to\x20determine\x20device\x20lock\x20state.\x20Make\x20sure\x20the\x20device\x20is\x20unlocked\x20and\x20the\x20screen\x20is\x20on,\x20then\x20re-run\x20the\x20flow.','_layout.jsx','Cognito\x20provision\x20failed:\x20','Real-device\x20UDID\x20unavailable\x20—\x20plug\x20in\x20your\x20iPhone\x20and\x20trust\x20this\x20Mac,\x20then\x20retry.','startedAt','rn_get_errors','check','call','endpoint','react','catch','isFinalStep','POST,\x20GET,\x20OPTIONS','wda','subarray','tunnelState','setAdapter','Lcinq','BoeaA','AdminSetUserPasswordCommand','XzRQd','status=','failedFlowIndex','packages','terminate','valueHash','screenCount','diffDependencies','user-exists','idb\x20launch\x20failed:\x20','dacNF','then','rn_get_console','name','Boot\x20revert\x20returned\x20an\x20unrecognised\x20status\x20shape.','[react-native-mcp]\x20Fatal\x20error:','shell','zNyoG','authState','_findNavBarBackButton','storage-ack\x20requires\x20boolean\x20`storageAckSuccess`','oNTVP','max','CviKL','family','-framerate','assertVisible','env-override-simulator','getFullText','not-found','.cursor','filePath','hashFile','checkMobilePro','region','stale-but-recoverable','hasStarted','isLocked','[runs-store]\x20swept\x20','lsjIH','cause','image/jpeg','stderrBuffer','\x22.\x20Re-issue\x20rn_test_chain_continue\x20with\x20','src','\x20<CameraView>\x20to\x20<CeraphCamera>?','ttlExpiresAt','expo-json-added','freeze','invalid-image-key','Simulator\x20WDA\x20requires\x20the\x20`appium-webdriveragent`\x20package,\x20but\x20it\x20isn\x27t\x20installed.\x20Run\x20`npm\x20i\x20-D\x20appium-webdriveragent`\x20(or\x20`pnpm\x20add\x20-D\x20appium-webdriveragent`)\x20in\x20your\x20project,\x20then\x20call\x20`rn_wda_start`\x20again.\x20This\x20is\x20an\x20optional\x20dep\x20—\x20device-only\x20setups\x20don\x27t\x20need\x20it.','eluGw','app\x20',':\x20existing\x20config\x20at\x20','auto','verifyProfileTransition','@clerk/backend','deleteUser','cleanupOne','path','Device\x20','**\x20BUILD\x20FAILED\x20**','provisionOnDemand','http:','WQNpX','saveSnapshot','substring','droppedEntries','needsBuild','hasFullyDynamicWrite','errorSummary','iOS\x20does\x20not\x20expose\x20an\x20API\x20for\x20disabling\x20Auto-Lock.\x20Open\x20Settings\x20→\x20Display\x20&\x20Brightness\x20→\x20Auto-Lock\x20→\x20Never\x20on\x20the\x20device\x20before\x20running\x20long\x20flows.\x20The\x20flow\x20runner\x20keeps\x20WDA\x27s\x20session\x20warm\x20with\x20a\x20heartbeat,\x20but\x20it\x20cannot\x20prevent\x20Auto-Lock\x20by\x20itself.','ceraph_add_camera_image','revertBoot','ceraph_init','onChildSpawned','toString','qXsJZ','gatingProp','number','ceraph-test-data-','ioreg','JTPLf','registry','SIGINT','No\x20readable\x20graph-relevant\x20files\x20in\x20the\x20repo\x20—\x20nothing\x20to\x20seed.','latestTestIdSentinel','waitForStorageAck','drainCommands','Optional\x20single-segment\x20subdirectory\x20under\x20`.ceraph/camera-images/`.\x20Most\x20callers\x20omit\x20this.\x20Must\x20be\x20lowercase\x20+\x20hyphen-separated;\x20no\x20slashes,\x20no\x20`..`.','mobile-mcp','No\x20shim\x20acknowledged\x20the\x20reload\x20over\x20the\x20command\x20channel,\x20and\x20the\x20deep-link\x20fallback\x20failed:\x20','setHeader','tCuqx','wizard','933569mHYLTD','lCFnU','imageKey\x20unchanged','waitForAppForeground','FHXMc','Clerk\x20createUser\x20conflict:\x20email\x20already\x20exists','settingsPath','eCNYc','statedDependencies','port-not-detected','canonicalScript','stepIndex\x20must\x20be\x20a\x20non-negative\x20integer\x20≤\x201000000\x20(got\x20','\x20…\x20<','mutations','continue','ffmpeg','storedAt','CERAPH_AUTH_CONNECTION','\x27\x20is\x20longer\x20than\x2064\x20characters.','summary','CameraView','169.254.','Missing\x20env\x20var(s):\x20','mutationMarker','ceraph_test_data_cleanup','unable\x20to\x20find\x20a\x20device\x20matching','waitForAppTerminated','qRRUe','Skipped\x20—\x20iproxy\x20auto-bridge\x20not\x20enabled\x20for\x20this\x20doctor\x20call.','Project\x20directory\x20to\x20operate\x20on.\x20Defaults\x20to\x20the\x20MCP\x20server\x27s\x20cwd.\x20Required\x20to\x20disambiguate\x20monorepo\x20multi-match.','Invalid\x20Ceraph\x20endpoint\x20URL:\x20\x22','Supported\x20formats:\x20JPEG,\x20PNG,\x20WebP,\x20HEIC.\x20Re-export\x20the\x20image\x20in\x20one\x20of\x20these\x20and\x20try\x20again.','storageAckCount','DhmTF','nav-bar','buildClient','signature','pending','Fejis','DTXGK','InvalidRunArgumentError','stateInference','platform','Unknown\x20error\x20during\x20terminateAppViaWDA','getDeclarations','App\x20','The\x20installed\x20app\x20is\x20already\x20current\x20—\x20skipped\x20the\x20build.','flavor','signal-host','xcodebuild-spawn-failed','target','verifyNavigation:\x20','local-network','unshift','[react-native-mcp]\x20Reclaimed\x20the\x20device-signal\x20port\x20—\x20listener\x20now\x20active.','WDA\x20openUrl\x20failed:\x20',':\x20existing\x20mcpServers\x20in\x20','Cursor','Simulator\x20booted\x20(','CERAPH_AUTH_PROVIDER','KHtmB','oyYfp','fs/promises','login','ftJqh','signOut','--terminate-existing','iMTlZ','UserNotFoundException','ceraph_test_data_provision','Base64-encoded\x20image\x20payload.\x20A\x20`data:image/...;base64,...`\x20URI\x20prefix\x20is\x20accepted\x20and\x20stripped\x20automatically.','WDA\x20tap\x20failed','iPhone','.git','GuoUW','selector','deletedEntries','runBuild','probeStatus','nodes','mivxT','[stdout]\x20','Lowercase\x20+\x20hyphen-separated\x20stem\x20(e.g.\x20`profile`,\x20`id-card`,\x20`handwriting-sample-1`).\x20Becomes\x20both\x20the\x20filename\x20stem\x20AND\x20the\x20value\x20devs\x20pass\x20to\x20`<CeraphCamera\x20imageKey>`.','OuoCg','revertCeraphDir','rect','low','usbmuxd','UcTkn','SIGKILL','users','WRAPPER_EXTENSION','android','nBlyn','bootMaxWaitMs','O_CREAT','ackForTesting','image/heic','awaiting_error_decision','seedMobileGraph','Failed\x20to\x20resolve\x20target:\x20','image','base64','libraryCatalog','\x20\x20[WARN]\x20\x20\x20\x20','buildKilled','recordMutations','\x27\x20does\x20not\x20match\x20detected\x20\x27','Unknown\x20error\x20during\x20pressKey','Unknown\x20error\x20during\x20clearText','png','Access-Control-Allow-Origin','readChangedFileContents','--clean','?ts=','\x20minutes','HHVEk','devices','Re-run\x20`ceraph_doctor`\x20to\x20see\x20what\x27s\x20blocking\x20on-device\x20automation.','\x20captured\x20but\x20not\x20inlined\x20(inline\x20cap\x20is\x20','WDA\x20tap\x20failed\x20(serial\x20fallback)','→\x20reader\x20UI\x20shows\x20mutated\x20value','screen_scroll_to','owCoB','JEEIr','getWindowSize','CFBundleIdentifier','../','setTimeoutFn','.tmp.','No\x20shim\x20acknowledged\x20the\x20reset\x20over\x20the\x20command\x20channel\x20(is\x20the\x20app\x20running\x20with\x20installCeraph()\x20and\x20reachable\x20on\x20CERAPH_SIGNAL_HOST:8101?),\x20and\x20the\x20deep-link\x20fallback\x20failed:\x20','ceraph_init_status','Opening\x20browser\x20to\x20sign\x20in…','race','tapTransport','timeoutMs','object','Next:\x20ask\x20your\x20AI\x20coding\x20assistant\x20(Claude\x20Code,\x20Cursor,\x20Codex,\x20etc.):','pixelRatio','rawIdentifier','Foregrounded\x20','CfHfH','plugin-version-mismatch','secretEnv','isListening','text-class-hint','\x27\x20is\x20not\x20a\x20recognized\x20image\x20MIME\x20type;\x20using\x20detected\x20\x27','mcp.json','mobilePro','dkeZS','<CeraphCamera>\x20is\x20a\x20drop-in\x20for\x20<CameraView>\x20(same\x20props):\x20during\x20a\x20flow\x20run\x20it\x20returns\x20your\x20test\x20image;\x20in\x20a\x20production\x20build\x20it\x20renders\x20the\x20real\x20camera.','hookName','unknown\x20error','useEffect','addSourceFileAtPath','chain','3084596dhBkuh','setAppLifecycle','add','ios','simctl','.heic','Dependencies\x20removed:\x20','wdaFetchAt','protectedRoute','stopping','getPixelRatio','sessionToken','WSqsJ','Failed\x20to\x20spawn\x20','\x22));','Matched\x20element\x20has\x20no\x20bounds/rect\x20information.','appName','#\x20Ceraph\x20signal\x20host\x20—\x20auto-set\x20by\x20@ceraph/react-native-mcp\x20init','sdk-missing','dependencies','.ceraph','xcodebuild','currentErrorMessage','Pro\x20is\x20active\x20on\x20this\x20account.','\x22$CLAUDE_PROJECT_DIR\x22/.claude/hooks/rn-error-notify.sh','chainPosition','text','trim','no-layout-found','onDemandTtlMs','--udid','remediation',';\x20},\x20[]);','aLNdD','vmfQU','width','simulator-not-found','tick','createUser','Run\x20`iproxy\x208100\x208100\x20-u\x20<udid>`\x20manually\x20to\x20see\x20the\x20full\x20error.','disableBulkActions','AddCameraImageError','screen','volumeUp','\x20<CameraView>\x20usage(s)\x20not\x20wrapped\x20by\x20<CeraphCamera>.','auth_wall','mcp_config.json','isVariableDeclaration','lockscreen','ceraph_test_data_provision\x20failed:\x20','unrelated','export\x20','zodNl','Built\x20and\x20installed\x20the\x20app\x20(','global','async-storage-read\x20requires\x20`key`','longPressElement','Claude\x20Code','storageAckRequestId','command-failed','WebDriverAgent\x20','into','server-error','form_identifier_exists','isZqX','heic','devicectlAvailable','pKSYU','ZlGrz','cachedAt','DFnqN','metro','en2','CERAPH_PROJECT_DIR\x20override','jitUser','userMarkerSelector','/cli-auth','connectionProperties','isArrowFunction','unref','Ed25519','too-many-files','/window/size','setMode','mode','preserved','detectMonorepo','collectVisibleElements','method\x20not\x20allowed','Device\x20is\x20awake\x20(lockState:\x20','devDependencies','Decision\x20\x22','idbAvailable','probeResponseUiDivergence','Metro\x20process\x20started\x20but\x20has\x20not\x20confirmed\x20readiness\x20yet.\x20It\x20may\x20still\x20be\x20initializing.\x20Use\x20rn_get_console\x20to\x20check.','Ceraph\x20request\x20failed\x20(HTTP\x20','tag','openUrl','failure','down','iphone','revertPackage','xqhPA','tOZRA','no-sentinel-received','readErrors','wda-package-missing','Declared\x20contentType\x20\x27','protocol','removed','postflight','Boot\x20a\x20simulator\x20(open\x20-a\x20Simulator)\x20and\x20retry.','\x20[Y/n]\x20','Unsupported\x20pressKey:\x20','forEachDescendant','--reset-cache','Set\x20the\x20missing\x20vars\x20before\x20running:\x20','[chain-runner]\x20Dropping\x20','\x1b]8;;','verifyMutation','\x22.\x20Only\x20https://\x20(or\x20http://\x20for\x20localhost\x20/\x20127.0.0.1)\x20endpoints\x20are\x20allowed.',':\x20already\x20configured','unverified','expo-config','slice','//\x20AUTO-GENERATED\x20by\x20@ceraph/react-native-mcp\x20—\x20do\x20not\x20edit\x20by\x20hand.\x0a//\x20Re-run\x20`rn_sync_camera_registry`\x20after\x20adding\x20or\x20removing\x20images.\x0aimport\x20{\x20configureTestImage\x20}\x20from\x20\x22@ceraph/react-native-mcp/shim\x22;\x0a\x0aexport\x20function\x20applyCameraImageRegistry():\x20void\x20{\x0a','.jpg','buildProcess','nextText','-w0','missing','stopVideoRecording','ceraph_init_inject_boot','.claude','Element\x20not\x20found\x20after\x20','not\x20a\x20monorepo','.bin','sessionId','runDir','Return\x20all\x20captured\x20errors\x20from\x20build\x20and\x20runtime.\x20Includes\x20structured\x20build\x20errors\x20(file,\x20line,\x20column,\x20message),\x20runtime\x20JS\x20errors\x20(message,\x20stack\x20trace),\x20and\x20warnings.','lastIndexOf','runWithBootCaptureLock','expo','eQiKm','\x20—\x20then\x20re-run\x20init\x20(or\x20any\x20flow\x20tool).\x20Your\x20Pro\x20access\x20refreshes\x20automatically.','ceraph','No\x20previous\x20build\x20snapshot\x20found.\x20Run\x20a\x20build\x20to\x20establish\x20a\x20baseline.\x20A\x20clean\x20prebuild\x20is\x20recommended\x20for\x20the\x20first\x20build.','height','no\x20details','preferSimulator','pingStatus','loadAuth','auth-state','listFiles','KaaDh','write','auth.json','filter','toFixed','Xcode\x20derived-data\x20path;\x20defaults\x20to\x20.ceraph/wda-derived','videoRecorder','query','totalDurationMs','\x20scheme\x20(kept\x20your\x20existing\x20','removedUseEffect','Replace\x20each\x20<CameraView\x20/>\x20with\x20<CeraphCamera\x20imageKey=\x22...\x22\x20/>\x20from\x20\x22@ceraph/react-native-mcp/shim\x22.\x20The\x20shim\x20falls\x20through\x20to\x20expo-camera\x20in\x20production\x20builds.','react-native','\x20userMarker=','adNti','responseValue=','metroParser','snapPointFlowIndices','Optional\x20MIME\x20hint\x20(e.g.\x20`image/jpeg`).\x20The\x20actual\x20extension\x20is\x20chosen\x20from\x20magic-byte\x20detection;\x20if\x20the\x20hint\x20mismatches,\x20the\x20tool\x20returns\x20a\x20warning\x20but\x20still\x20writes\x20using\x20the\x20detected\x20type.','exec','Unrecognised\x20signal\x20kind\x20\x27','package-lock.json','Developer\x20Mode\x20is\x20disabled\x20on\x20the\x20device','no\x20code\x20signing\x20identit','.rn-flow-progress.json','DvenL','continueRun','HxFlT','ensureSession','hasAdapter','-project','match','fetchImpl','Join\x20the\x20same\x20WiFi\x20network\x20as\x20your\x20phone,\x20or\x20update\x20the\x20expectedNetwork\x20doctor\x20option.','MAX_BUILD_LINES','bound','verifySelector','open','redbox','UDWcx','Failed\x20to\x20clear\x20field\x20before\x20typing','BxjmD','.js','removeListener','chains','runtime_error','[react-native-mcp]\x20Runtime\x20catalog\x20loaded\x20(','port','batched','stopGeneration','react-native-','\x20before\x20WDA\x20reported\x20a\x20port.\x20Most\x20common\x20cause:\x20WebDriverAgentRunner\x20has\x20no\x20code-signing\x20identity\x20selected.\x20Open\x20the\x20project\x20in\x20Xcode\x20once\x20(`open\x20\x22','Use\x20only\x20[a-z0-9-],\x20no\x20slashes,\x20no\x20`..`,\x20no\x20leading\x20`/`.\x20Example:\x20`id-documents`.','Swipe\x20failed\x20during\x20scrollToElement','Opening\x20','accumulatedBootDrains','screen_tap_and_verify','HjOUQ','getCurrentBranch','image/png','Flow\x20intelligence\x20(rn_list_flows\x20/\x20rn_find_flows\x20/\x20rn_test_flows)\x20is\x20a\x20Pro\x20feature\x20—\x20upgrade\x20at\x20https://ceraph.dev/#pricing.\x20If\x20you\x20just\x20upgraded,\x20re-run\x20this\x20—\x20your\x20Pro\x20access\x20refreshes\x20automatically.','isArrayLiteralExpression','init.js','CeraphCamera','tap\x20succeeded\x20but\x20post-tap\x20verify\x20failed:\x20','\x20<CameraView>\x20usage(s)\x20across\x20','componentControl:\x20uiKind\x20is\x20required\x20and\x20must\x20be\x20one\x20of\x20\x22modal\x22|\x22drawer\x22|\x22sheet\x22|\x22accordion\x22|\x22wizard\x22|\x22reveal\x22\x20(got\x20','signedAt','no-github-remote','VZhZe','scrollTo','samples','Register\x20`ceraph`\x20as\x20a\x20custom\x20URL\x20scheme\x20so\x20deep\x20links\x20(ceraph://reload,\x20ceraph://reset,\x20ceraph://storage)\x20reach\x20the\x20running\x20app.\x20Auto-edits\x20static\x20expo.scheme\x20in\x20app.json;\x20for\x20dynamic\x20app.config.{js,ts}\x20or\x20bare\x20RN,\x20returns\x20the\x20exact\x20instructions\x20to\x20surface\x20to\x20the\x20user.','-quiet','findElementFromTree','scope-regression','Claude\x20Code:\x20pre-approved\x20the\x20Ceraph\x20MCP\x20server\x20(no\x20trust\x20prompt)\x20✓','assertion','git','\x20is\x20malformed\x20JSON\x20—\x20preserving\x20it.\x20Fix\x20the\x20file\x20manually\x20then\x20re-run\x20init.','registryPath','onDialog','text\x20or\x20accessibilityLabel\x20is\x20required.','no-mobile-graph','retryAfterSwipes','getArguments','hasStopped','entries','warnings','rate-limited','\x20<CeraphCamera>\x20tag(s).\x20If\x20any\x20of\x20those\x20keys\x20were\x20customer-set\x20(not\x20Ceraph-generated),\x20re-apply\x20them\x20after\x20install\x20rebuilds\x20the\x20camera\x20surface.','metro-error','\x22);\x20}\x20catch\x20{\x20return\x20null;\x20}\x20}\x20}','timed\x20out','no\x20profiles\x20for','clerk','WDA\x20actions\x20tap\x20failed','realDeviceHook','.jpeg','bWpQO','affectedDisplayRoute','\x20+\x20testID\x20injector)\x20—\x20your\x20app\x20had\x20no\x20babel\x20config,\x20so\x20we\x20added\x20one.\x20Rebuild\x20your\x20dev\x20client\x20once\x20to\x20activate.','\x27],\x0a\x20\x20};\x0a};\x0a','app_list_installed','no-booted-simulator','uvjCe','wjbUN','en3','WebDriverAgent\x20is\x20reachable\x20at\x20','?intent=pro','were\x20removed\x20from\x20','stepPath','ceraph://storage?op=delete&keys=','windsurf','command-channel','ceraph-uninstall-gitignore-preview-','<no\x20IP>','\x22`),\x20set\x20a\x20Development\x20Team\x20on\x20the\x20WebDriverAgentRunner\x20target,\x20build\x20it\x20manually\x20for\x20the\x20simulator,\x20then\x20retry\x20`rn_wda_start`.\x20Last\x2020\x20lines\x20of\x20xcodebuild\x20output\x20below.','buffer','monorepo,\x20no\x20RN\x20app\x20among\x20workspaces','Failed\x20to\x20create\x20output\x20directory:\x20',');\x20using\x20embedded\x20key','rn_list_flows','screen_press_key','hooks','NPCFW','Swipe\x20on\x20the\x20iOS\x20device\x20screen.\x20Direction\x20is\x20up/down/left/right;\x20optional\x20from-point\x20and\x20distance\x20default\x20to\x20a\x20center-screen\x20swipe\x20of\x20~60%\x20of\x20the\x20relevant\x20axis.\x20Coordinates\x20are\x20device-space\x20by\x20default;\x20pass\x20coordinateSource:\x20\x27screenshot\x27\x20if\x20`from`\x20came\x20from\x20a\x20screenshot.','multi','detail','drawer','DKLBi','runtime','\x20before\x20the\x20session\x20could\x20be\x20handed\x20off.\x20This\x20usually\x20means\x20the\x20test\x20target\x20crashed\x20during\x20boot\x20(check\x20the\x20simulator\x20logs)\x20or\x20the\x20simulator\x20was\x20shut\x20down\x20mid-build.\x20Last\x2020\x20lines\x20of\x20xcodebuild\x20output\x20below.','cleanupJit','\x20has\x20no\x20successor\x20flow\x20(flows.length=','FXeQt','fHpfC','react-native-reanimated/plugin','/\x20—\x20working\x20from\x20there','Chain\x20aborted:\x20flow\x20\x22','reduce','.\x20Fix\x20the\x20listener\x20(check\x20CERAPH_SIGNAL_HOST\x20and\x20that\x20port\x208101\x20is\x20free\x20and\x20permitted)\x20and\x20restart,\x20or\x20rebuild\x20so\x20the\x20ceraph://\x20scheme\x20is\x20registered.','splice','init-tier.json','Content-Type','\x0a[runCommand:\x20timed\x20out\x20after\x20','signInWithEmailAndPassword','Starter\x20·\x20Free\x20—\x20local\x20build,\x20run,\x20and\x20device\x20tools.\x20No\x20sign-in.','payload\x20too\x20large','startInner','localPort','Cognito\x20adapter\x20requires\x20`userPoolId`\x20for\x20cleanup.','runXcodeBuildSettings','isJsxAttribute','href','Listen','No\x20runtime\x20signals\x20are\x20being\x20captured\x20this\x20session:\x20Ceraph\x27s\x20device-signal\x20listener\x20could\x20not\x20start\x20(port\x208101\x20failed\x20to\x20bind\x20—\x20e.g.\x20a\x20permission\x20error,\x20or\x20an\x20invalid\x20CERAPH_SIGNAL_HOST).\x20In-app\x20runtime\x20errors\x20(uncaught\x20JS\x20exceptions,\x20failed\x20network\x20requests)\x20will\x20NOT\x20appear\x20in\x20your\x20results\x20until\x20it\x20binds.\x20Check\x20CERAPH_SIGNAL_HOST\x20and\x20that\x20port\x208101\x20is\x20free\x20and\x20permitted,\x20then\x20restart\x20Ceraph.','cached','Install\x20with\x20`brew\x20install\x20libimobiledevice`,\x20then\x20re-run\x20doctor.','remove','/status','simulatorUdid','\x20runs\x20(','BZMbD','../package.json','ENOENT','componentControl:\x20entry\x20is\x20not\x20an\x20object','responseBody','acceptButtons','Ceraph\x20Test\x20(','WDA\x20activeAppInfo\x20failed:\x20','true','writeErrorFile','DuXOJ','selectCommand','bundleId','prebuild','listOnDemand','webp','isPro','HQGjG','agentMessage','from','Optional\x20label\x20for\x20tracking\x20this\x20user\x20(e.g.\x20\x27checkout-test\x27).\x20Surfaced\x20on\x20the\x20email\x20prefix\x20and\x20in\x20`ceraph_test_data_list`\x20output.','field=','completed','.mjs','videoPath','boolean','XCUIElementTypeSecureTextField','pendingStorageAckResolvers',')\x20is\x20currently\x20executing.\x20The\x20chain\x20runner\x20serializes\x20chains\x20because\x20JIT-provisioned\x20auth\x20credentials\x20are\x20process-singleton\x20state.\x20Wait\x20for\x20the\x20in-flight\x20chain\x20to\x20complete\x20(poll\x20its\x20status\x20via\x20the\x20protocol\x27s\x20resume\x20mechanism),\x20then\x20retry.','args','YkHIn','setOrientation','union','min','buildFailureReport','boot','babel.config.js','getConsole','wda-reachable','create','at\x20','run','fileHash','transport','The\x20first\x20simulator\x20WebDriverAgent\x20build\x20is\x20cold\x20and\x20can\x20take\x20a\x20few\x20minutes;\x20the\x20compiled\x20output\x20is\x20cached,\x20so\x20just\x20call\x20ceraph_start\x20again\x20—\x20the\x20next\x20build\x20is\x20incremental.','uiKind','\x20connected.','provisionJit','buildErrorResponse','response-ui-divergence:\x20','url','installCeraph-only','aQHWd','idb','json','createClerkClient','wda-derived','componentControl','.mcp.json','udid','Could\x20not\x20start\x20WebDriverAgent:\x20','flow\x20must\x20be\x20a\x20non-empty\x20string.','EPERM','dGSal','openingTag','Claude\x20Code\x20will\x20ask\x20you\x20to\x20approve\x20the\x20Ceraph\x20MCP\x20server\x20once\x20on\x20restart\x20—\x20your\x20.claude/settings.local.json\x20had\x20an\x20unexpected\x20shape,\x20so\x20it\x20was\x20left\x20untouched.\x20Approve\x20the\x20prompt,\x20or\x20add\x20\x22react-native-mcp\x22\x20to\x20enabledMcpjsonServers\x20in\x20that\x20file\x20by\x20hand.','.tsx','errorFilePath','NKIWP','getSourceFile','application/json','app-extension','getFunctions','test-data','\x27\x20already\x20maps\x20to\x20','indexOf','Ordered\x20list\x20of\x20element\x20queries\x20to\x20tap.\x20Resolved\x20against\x20ONE\x20AX-tree\x20snapshot\x20—\x20don\x27t\x20use\x20this\x20for\x20sequences\x20that\x20require\x20re-rendering\x20between\x20taps.','VHEIq','@react-native/babel-preset','6lptnVE','off','en4','protectedRoute=','closeMethods','expo-json','x:\x20(','metroKilled','verifyAuth','App.jsx','ZnwFN','yeKXh','\x20`hooks`\x20is\x20not\x20a\x20JSON\x20object\x20—\x20preserving\x20it.','DYngs','axCache','filesEdited','realpath','hSLrj','initializeApp','rn_test_chain_start','resolve','GET','ceraph-uninstall-mcp-preview-','ceraph_uninstall_status','appium-webdriveragent\x20ready\x20—\x20simulator\x20WebDriverAgent\x20can\x20build.','reloadTimeoutMs','invalid-base64','/\x20\x20[','Built\x20and\x20installed\x20the\x20app.','\x20is\x20not\x20installed\x20on\x20the\x20target\x20—\x20skipped\x20app\x20foreground.','Cognito\x20adapter\x20requires\x20`userPoolId`\x20in\x20ceraph.config.js.','AMyvf','code\x20signing\x20error','/signal','Signed\x20in\x20as\x20','microphone','No\x20working\x20launch\x20transport\x20found.\x20Install\x20Xcode\x20(for\x20devicectl)\x20or\x20idb\x20(https://fbidb.io/)\x20to\x20launch\x20apps\x20on\x20a\x20real\x20device.','FMDgl','fetchSourceTree','content-type','getRunIndex','rKZep','removed-entries','unresolved','load','sleep','regressions','/wda/unlock','ceraph_init_scan_camera','1759835LwraDT','warning','Encoded\x20payload\x20is\x20~','renderPropName','enabledMcpjsonServers','isJsxOpeningElement','LaEXF','Allow\x20Access\x20to\x20All\x20Photos','lerna.json','screen_long_press','needs-manual','tckNI','selector-','app-installed','suggestedKey','longPress','reason','Bridge\x20to\x20next\x20flow\x20failed','npx','whichFn','app_active','content','Pass\x20a\x20single\x20safe\x20segment\x20for\x20subDir\x20(lowercase,\x20hyphens,\x20no\x20slashes,\x20no\x20`..`).','storage-ack','Launch\x20an\x20iOS\x20app\x20by\x20bundle\x20ID\x20on\x20a\x20connected\x20real\x20device\x20(preferred)\x20or\x20the\x20booted\x20simulator\x20(fallback).\x20Terminates\x20any\x20existing\x20instance\x20first\x20via\x20devicectl\x20--terminate-existing.','http://127.0.0.1:','\x20in\x20package.json.\x20Run:\x20npm\x20install\x20','skipped','ready','anonymous\x20→\x20authenticated','getAuth','_registry.ts','No\x20booted\x20simulator.','/wda/lock','SecureText','&id=','homeDir','\x20additional\x20screenshot','waitForBootSettle','buildErrors','visible','doctor-failed','webBaseUrl','(warn)','CERAPH_INIT_AGENT_HINT=','tier','preparing\x20the\x20device','isFile','simctl\x20listapps\x20failed:\x20','WDA\x20pressButton\x20failed:\x20','module.exports\x20=\x20function\x20(api)\x20{\x0a\x20\x20api.cache(true);\x0a\x20\x20return\x20{\x0a\x20\x20\x20\x20presets:\x20[\x27','usb-ethernet','commandQueue','WvtsB','ensureGraph','clearErrorFile','Supabase\x20deleteUser\x20failed:\x20',';\x20the\x20limit\x20is\x20','prev=','ms).\x20Check\x20your\x20network\x20connection\x20and\x20try\x20again.','currentKind','accumulateWriteSet','/rn-test-flows','result','pop','find','recordStorageAck','Detected\x20bare\x20React\x20Native\x20project\x20(ios/\x20and/or\x20android/).','destinationRoute','Auth0\x20adapter\x20requires\x20`domain`\x20in\x20ceraph.config.js\x20(the\x20Auth0\x20tenant\x20domain,\x20e.g.,\x20\x27myorg.auth0.com\x27).','written','ttlMs','https://ceraph.dev/api/mcp','lock','detectEarlyExit','flowResults','prototype','WvJkc','.cjs','targetResolver','MAX_METRO_LINES','Failed\x20to\x20get\x20element\x20tree\x20on\x20the\x20pinned\x20session','whenReady','probePermission','coords','\x0aRuntime\x20error\x20hook:','update','code\x20sign\x20error','monorepo\x20with\x20','walkthrough','nKOau','VideoRecorder.start()\x20called\x20twice\x20on\x20the\x20same\x20instance.','No\x20device\x20hardware\x20UDID\x20resolved\x20—\x20could\x20not\x20start\x20the\x20iproxy\x20bridge.','link','sim:','no\x20shell\x20profile','hasReceivedDeviceContact','apps','location','installed','keyDown','appendIfValid','Metro\x20exited\x20unexpectedly\x20with\x20code\x20','LuOox','destroy','WebDriverAgent\x20is\x20not\x20ready\x20(simulator\x20selected,\x20no\x20port\x20captured\x20yet).','simulatorWdaUdid','touch','denied','storageAckKeys','HayRd','fieldQuery','React\x20Native\x20/\x20Expo\x20development\x20workflow\x20tools.\x20Auto-detects\x20project\x20type.\x0a\x0aWHICH\x20TOOLS\x20TO\x20USE:\x0a•\x20User\x20wants\x20their\x20code\x20changes\x20verified,\x20specific\x20flows\x20run,\x20or\x20comprehensive\x20coverage\x20→\x20use\x20the\x20autonomous\x20flow\x20tools:\x20rn_list_flows\x20previews\x20which\x20flows\x20a\x20diff\x20or\x20file\x20set\x20affects,\x20rn_find_flows\x20searches\x20every\x20flow\x20app-wide\x20by\x20natural\x20language,\x20rn_test_flows\x20executes\x20selected\x20flowIds.\x20These\x20execute\x20Ceraph\x27s\x20server-planned\x20flows,\x20which\x20exhaustively\x20exercise\x20the\x20distinct\x20UI\x20outcomes\x20reachable\x20from\x20the\x20changed\x20code.\x20Per-step\x20screenshots\x20and\x20runtime\x20errors\x20surface\x20in\x20the\x20result.\x20Do\x20NOT\x20try\x20to\x20modify\x20or\x20reorder\x20the\x20returned\x20plan\x20—\x20it\x20is\x20owned\x20by\x20the\x20server.\x0a•\x20User\x20wants\x20a\x20specific\x20custom\x20scenario\x20(e.g.\x20\x27test\x20signup\x20with\x20email\x20X\x27,\x20\x27tap\x20the\x20Premium\x20plan\x20and\x20verify\x20checkout\x20opens\x27,\x20\x27reproduce\x20the\x20bug\x20where\x20tapping\x20save\x20crashes\x20the\x20app\x27)\x20→\x20compose\x20screen_*\x20and\x20app_*\x20primitives\x20directly.\x20You\x20plan\x20the\x20steps\x20yourself;\x20Ceraph\x20just\x20drives\x20WebDriverAgent.\x20Use\x20screen_screenshot\x20between\x20actions\x20to\x20observe\x20state\x20and\x20decide\x20the\x20next\x20step.\x20This\x20path\x20is\x20intentionally\x20lower-fidelity\x20than\x20the\x20autonomous\x20flow\x20tools\x20and\x20does\x20not\x20produce\x20coverage\x20guarantees\x20—\x20it\x20is\x20for\x20ad-hoc\x20requests\x20the\x20user\x20explicitly\x20directed.\x0a\x0aTOOL\x20SELECTION\x20FOR\x20AUTONOMOUS\x20FLOW\x20TOOLS:\x0a\x20\x20-\x20\x27Test\x20my\x20changes\x27\x20/\x20comprehensive\x20verification\x20→\x20rn_list_flows\x20(diff\x20scope),\x20then\x20rn_test_flows\x20with\x20EVERY\x20returned\x20flowId.\x0a\x20\x20-\x20User\x20scoped\x20to\x20specific\x20files\x20→\x20rn_list_flows\x20with\x20filePaths,\x20then\x20rn_test_flows.\x0a\x20\x20-\x20User\x20wants\x20a\x20focused\x20subset\x20(\x27just\x20test\x20the\x20X\x20flow\x27,\x20\x27show\x20me\x20what\x20would\x20run\x27)\x20→\x20rn_list_flows,\x20pick\x20the\x20relevant\x20rows,\x20then\x20rn_test_flows\x20with\x20those\x20flowIds.\x0a\x20\x20-\x20User\x20describes\x20flows\x20in\x20natural\x20language\x20without\x20a\x20diff\x20scope\x20(\x27test\x20login\x27,\x20\x27run\x20the\x20checkout\x20flows\x27)\x20→\x20rn_find_flows\x20(app-wide\x20search),\x20then\x20rn_test_flows.\x0a\x20\x20-\x20\x27Test\x20PR\x20#N\x27\x20/\x20\x27verify\x20this\x20pull\x20request\x27\x20→\x20there\x20is\x20NO\x20PR\x20tool\x20by\x20design.\x20Check\x20out\x20the\x20PR\x20(a\x20GitHub\x20MCP\x20server\x20if\x20connected,\x20else\x20`gh\x20pr\x20checkout\x20N`),\x20then\x20REBUILD\x20+\x20relaunch\x20so\x20the\x20device\x20runs\x20the\x20PR\x27s\x20code\x20(rn_build_ios\x20+\x20rn_start\x20—\x20a\x20native\x20or\x20dependency\x20change\x20will\x20NOT\x20hot-reload),\x20then\x20rn_list_flows({base:\x20\x27<pr-target-branch>\x27})\x20→\x20rn_test_flows\x20with\x20the\x20returned\x20flowIds.\x20Post\x20the\x20pass/fail\x20summary\x20back\x20as\x20a\x20PR\x20comment\x20via\x20the\x20GitHub\x20MCP\x20if\x20the\x20user\x20wants\x20it.\x0aPreview\x20rows\x20are\x20a\x20menu\x20—\x20their\x20order\x20carries\x20no\x20meaning,\x20and\x20rn_test_flows\x20ignores\x20the\x20order\x20of\x20the\x20flowIds\x20you\x20pass:\x20the\x20server\x20orders\x20execution\x20by\x20planner\x20priority\x20and\x20chain\x20grouping.\x0a\x0aSTARTUP\x20FLOW\x20WHEN\x20NO\x20TARGET\x20IS\x20AVAILABLE:\x0a\x20\x20-\x20Both\x20real\x20iOS\x20devices\x20and\x20the\x20iOS\x20Simulator\x20are\x20supported.\x20For\x20a\x20booted\x20simulator\x20(with\x20the\x20optional\x20appium-webdriveragent\x20dep\x20installed),\x20call\x20rn_wda_start\x20to\x20launch\x20WebDriverAgent\x20against\x20it;\x20with\x20no\x20real\x20device\x20connected,\x20subsequent\x20screen_*/app_*\x20calls\x20route\x20to\x20the\x20simulator\x20automatically.\x20If\x20a\x20real\x20device\x20is\x20ALSO\x20connected,\x20auto-detection\x20(CERAPH_TARGET=auto,\x20the\x20default)\x20prefers\x20the\x20device\x20—\x20tell\x20the\x20user\x20to\x20set\x20CERAPH_TARGET=simulator\x20in\x20the\x20MCP\x20process\x20environment\x20to\x20force\x20simulator\x20routing.\x0a\x20\x20-\x20For\x20a\x20real\x20device,\x20tell\x20the\x20user\x20to\x20plug\x20their\x20iPhone\x20in\x20via\x20USB-C,\x20then\x20call\x20rn_wait_for_device\x20(event-driven\x20via\x20usbmuxd,\x20no\x20timeout).\x20The\x20original\x20tool\x20can\x20be\x20re-run\x20as\x20soon\x20as\x20it\x20returns\x20success.\x0a\x20\x20-\x20WebDriverAgent\x20must\x20already\x20be\x20installed\x20on\x20the\x20device.\x20If\x20doctor\x20reports\x20WDA\x20unreachable,\x20the\x20user\x20opens\x20Xcode\x20→\x20WebDriverAgentRunner\x20and\x20presses\x20Run\x20once;\x20subsequent\x20sessions\x20reuse\x20that\x20build.\x0a\x0aAutonomous\x20flow\x20tools\x20(server-planned):\x20rn_list_flows,\x20rn_find_flows,\x20rn_test_flows.\x0aWDA-direct\x20primitives\x20(you\x20orchestrate):\x20app_launch/terminate/activate,\x20screen_tap,\x20screen_tap_and_verify,\x20screen_swipe,\x20screen_scroll_to,\x20screen_long_press,\x20screen_type_into_field,\x20screen_press_key,\x20screen_open_url,\x20screen_screenshot,\x20screen_wait_for,\x20screen_tap_chain.\x0a\x0aAuth\x20via\x20`npx\x20@ceraph/react-native-mcp\x20init`.\x20Build\x20with\x20rn_build_ios,\x20run\x20Metro\x20with\x20rn_start,\x20inspect\x20errors\x20with\x20rn_get_errors,\x20check\x20rn_check_prebuild\x20when\x20native\x20deps\x20change\x20(Expo\x20only).\x0a\x0aCAMERA\x20SETUP\x20ON\x20FIRST\x20INVOCATION:\x0aAfter\x20init\x20completes,\x20`ceraph_doctor`\x20may\x20report\x20a\x20`camera-imageKey-setup`\x20info\x20finding\x20listing\x20one\x20or\x20more\x20<CeraphCamera\x20/>\x20components\x20that\x20still\x20need\x20a\x20deliberate\x20imageKey\x20choice\x20(init\x20replaces\x20tags\x20WITHOUT\x20inserting\x20an\x20imageKey\x20—\x20the\x20bundled\x20black\x20PNG\x20keeps\x20the\x20app\x20working\x20until\x20the\x20developer\x20decides).\x20When\x20you\x20see\x20this\x20finding,\x20hold\x20a\x20one-shot\x20conversation\x20with\x20the\x20user\x20covering\x20each\x20camera.\x20Three\x20options\x20per\x20camera:\x0a\x20\x20(A)\x20Black\x20default\x20(most\x20test\x20flows\x20don\x27t\x20care\x20about\x20image\x20content):\x20ceraph_init_replace_camera\x20with\x20imageKey=\x22default\x22.\x0a\x20\x20(B)\x20A\x20specific\x20test\x20image:\x20ask\x20the\x20user\x20for\x20a\x20descriptive\x20lowercase-dashes\x20name\x20(e.g.\x20\x22profile\x22,\x20\x22id-card\x22,\x20\x22product-photo\x22),\x20then\x20write\x20the\x20file\x20via\x20ceraph_add_camera_image\x20(the\x20user\x20can\x20paste\x20base64\x20or\x20drop\x20the\x20file\x20in\x20.ceraph/camera-images/<key>.{jpg,png,webp}\x20by\x20hand).\x20Call\x20rn_sync_camera_registry\x20after\x20manual\x20file\x20drops;\x20ceraph_add_camera_image\x20auto-syncs.\x20Then\x20ceraph_init_replace_camera\x20with\x20the\x20chosen\x20key.\x0a\x20\x20(C)\x20Multi-image\x20per\x20flow\x20(the\x20camera\x20serves\x20different\x20scenarios\x20across\x20flows;\x20the\x20planner\x20picks\x20the\x20image\x20per\x20step\x20at\x20runtime):\x20ceraph_init_replace_camera\x20with\x20imageKey=\x22@runtime\x22.\x0aOnce\x20every\x20camera\x20has\x20an\x20explicit\x20imageKey\x20the\x20doctor\x20finding\x20stops\x20appearing.\x20Run\x20`ceraph_doctor`\x20again\x20to\x20confirm.\x0a\x0aDOCTOR\x20BEHAVIOR:\x0a•\x20Test/run\x20tools\x20(rn_test_flows,\x20rn_test_chain_start)\x20auto-run\x20doctor\x20on\x20first\x20invocation\x20and\x20cache\x20the\x20result\x20for\x20the\x20MCP\x20session.\x0a•\x20rn_test_chain_continue\x20ALWAYS\x20re-runs\x20doctor\x20(no\x20cache)\x20because\x20the\x20chain\x20may\x20have\x20been\x20paused\x20for\x20minutes\x20at\x20a\x20snap\x20point\x20—\x20device\x20could\x20have\x20locked\x20or\x20disconnected\x20during\x20the\x20wait.\x0a•\x20If\x20doctor\x20has\x20errors,\x20the\x20test\x20tool\x20refuses\x20to\x20execute\x20and\x20returns\x20`{\x20status:\x20\x22doctor-failed\x22,\x20errors:\x20[...]\x20}`.\x20Fix\x20the\x20errors\x20and\x20retry\x20—\x20doctor\x20re-runs\x20automatically\x20after\x20any\x20failure\x20(passing\x20results\x20are\x20cached,\x20failing\x20ones\x20are\x20not).\x0a•\x20Actionable\x20non-error\x20findings\x20are\x20surfaced\x20as\x20`doctorAdvisories`\x20on\x20gated\x20tool\x20responses:\x20failed\x20warnings\x20(e.g.\x20wrong\x20WiFi)\x20and\x20info\x20findings\x20that\x20carry\x20a\x20remediation\x20(e.g.\x20camera-imageKey-setup).\x20Passing\x20status\x20stamps\x20without\x20a\x20remediation\x20are\x20filtered\x20out\x20to\x20keep\x20responses\x20lean.\x20Act\x20on\x20advisories\x20the\x20first\x20time\x20you\x20see\x20them.\x0a•\x20An\x20explicit\x20`ceraph_doctor`\x20call\x20always\x20re-runs\x20and\x20refreshes\x20the\x20cache,\x20so\x20it\x20doubles\x20as\x20a\x20manual\x20revalidation\x20hook.','maXrR','Allow\x20replacing\x20an\x20existing\x20imageKey\x20(across\x20different\x20extensions).\x20Defaults\x20to\x20false.','PlannedChainInput.snapPointFlowIndices\x20entry\x20','subscribesTo','byteLength','rootDir','/orientation','lBAjW','TCRnh','terminateApp','oODHF','flow\x20ended\x20without\x20success','tapAndVerify','&intent=pro','\x20is\x20not\x20a\x20JSON\x20object\x20(got\x20','elementMatches','string','readEnv','getFilePath','getTagNameNode','Claude\x20Code\x20hook\x20(.rn-errors.json):\x20already\x20configured','OAFss','GEoCI','Unknown\x20error\x20during\x20getSource','CFBundleShortVersionString','TwoSpaces','user_id','componentHook:\x20tier\x20must\x20be\x20\x22componentHook\x22','[ceraph]\x20auth_wall\x20at\x20flow\x20\x22','network-error','Connect\x20your\x20iPhone\x20via\x20USB-C\x20and\x20trust\x20this\x20Mac,\x20then\x20re-run\x20doctor.','\x20is\x20not\x20booted.\x20Booted\x20simulators:\x20','CERAPH_DEVICE_WDA_PROJECT','\x20on\x20:','created','isMonorepo','Compound\x20primitive:\x20focus\x20an\x20input\x20field\x20matched\x20by\x20text/accessibilityLabel/type\x20and\x20type\x20into\x20it.\x20Sends\x20the\x20tap-to-focus\x20and\x20per-character\x20keypresses\x20as\x20ONE\x20W3C\x20actions\x20call\x20when\x20WDA\x20supports\x20it\x20(batched:\x20true);\x20falls\x20back\x20to\x20serial\x20findAndTap\x20+\x20wda/keys\x20otherwise\x20(batched:\x20false).\x20Set\x20`clearFirst:\x20true`\x20to\x20clear\x20an\x20existing\x20value\x20before\x20typing\x20—\x20off\x20by\x20default\x20so\x20we\x20never\x20silently\x20overwrite\x20form\x20state.','visibilityProp','changed','split','ceraph_init_register_scheme','https:','/screenshot','Pro\x20selected.\x0a','addAttribute','\x22Run\x20ceraph_init_status\x20to\x20confirm\x20the\x20project\x20is\x20wired\x20up.\x22','[ceraph]\x20',':\x0a\x20\x20import\x20{\x20installCeraph\x20}\x20from\x20\x22','swipe','Remove\x20the\x20stale\x20file\x20manually\x20so\x20the\x20imageKey\x20is\x20not\x20backed\x20by\x20two\x20files.','openUrl\x20failed','buildFlowReport','expandedBeforeAll','evictExpired','[react-native-mcp]\x20CERAPH_SIGNAL_HOST\x20auto-detection\x20failed:\x20','xcodebuild-exited-early','IOUSB','wkxuS','source','not-installed','alreadyCurrent','ceraph_start','addEventListener','Could\x20not\x20bind\x20a\x20free\x20port\x20for\x20the\x20auth\x20listener.','beforeAll.ensureLaunched','--json-output','Signal\x20listener\x20failed\x20to\x20bind\x20on\x20port\x20','openMethod','/session','\x22;\x0a\x20\x20useEffect(()\x20=>\x20{\x20','package.json','lMiwF','Swipe\x20duration\x20in\x20ms.','payload','sort','componentControl:\x20ref-imperative\x20entries\x20require\x20non-empty\x20openMethods\x20array','MTJRG','Could\x20not\x20reach\x20the\x20Ceraph\x20server.\x20Check\x20your\x20network\x20connection\x20and\x20try\x20again.','Codex:\x20already\x20configured','yes','auth\x20provider\x20\x27','back','includes','rn_list_flows\x20is\x20missing\x20required\x20git\x20helpers.','Claude\x20Code\x20hook:\x20FileChanged\x20→\x20.rn-flow-progress.json\x20✓','/tier-check','detectBootTarget','token','code','KoMYX','CocoaPods','getBody','DSMsS','\x1b]8;;\x07','UiKPX','.\x20Shim-side\x20signals\x20(JS\x20errors,\x20unhandled\x20rejections,\x20network\x20failures)\x20will\x20be\x20dropped.','If\x20true,\x20also\x20delete\x20`~/.ceraph/auth.json`\x20(the\x20user-global\x20OAuth\x20token;\x20this\x20logs\x20the\x20user\x20out\x20of\x20every\x20Ceraph\x20install\x20on\x20this\x20machine).\x20Default\x20false.','Skipped\x20—\x20no\x20bundleId\x20provided.','value','command','FHOee','screenshotsAvailable','\x20out\x20of\x20range.\x20Found\x20','App.tsx','Native\x20dependency\x20versions\x20changed:\x20','response','AbortError','/wda/keys','JIKNQ','affectedDisplaySelector','existing\x20mcpServers\x20in\x20','type','[ceraph]\x20video\x20recorder\x20start\x20failed\x20for\x20runId=','waitFor','rmFn','saveStepScreenshot','pressKey','iproxy\x20bridge\x20start\x20threw\x20(ignored).','screenshot','onSignal','getNamedImports','rn_reload','requiresAncestor','sectionPresent','0.0.0','ensureAwake','writeUInt32LE','role-alert','olderThan','cmd-','EYFGp','stderr','removedIp','ipconfig','Unknown\x20error\x20during\x20longPress','iproxy\x20bridge\x20already\x20running\x20(external).','getSymbol','http://localhost:8100','getStart','.expo','findElement','uIgwY','edits','Simulator\x20WebDriverAgent\x20','unexpected_state','Camera\x20registry\x20sync\x20failed:\x20','Stop\x20all\x20managed\x20React\x20Native\x20processes\x20(Metro\x20dev\x20server\x20and/or\x20build\x20process).','pointer','rn_wda_stop','filePaths','Failed\x20to\x20get\x20element\x20tree','pickTransport','EviUy','bare-rn-needs-manual','startsWith','prop','simctl\x20terminate\x20failed:\x20','values','reset','Cancel','mkdir','Screen\x20Recording\x20not\x20yet\x20verified\x20—\x20a\x20macOS\x20dialog\x20appears\x20the\x20first\x20time\x20Ceraph\x20drives\x20the\x20device\x20(click\x20Allow;\x20no\x20Settings\x20navigation\x20needed).\x20Session\x20video\x20only;\x20tests\x20run\x20regardless.','cSLmh','Supabase\x20createUser\x20returned\x20no\x20user.','Optional\x20follow-up\x20assertion.\x20The\x20tool\x20reports\x20the\x20visibility\x20of\x20this\x20selector\x20in\x20`verifyResult`\x20after\x20the\x20tap.\x20Omit\x20to\x20perform\x20the\x20tap\x20only.','version','rn_build_ios','target-selected','JcYxn','truncated','`retry`\x20or\x20`halt`','closeMethod','getActiveApp','objective','readFileUtf8','email','::1','image-larger-than-typical','manual','credential','expo-router','boot-request','View','\x20has\x20an\x20unexpected\x20shape\x20—\x20preserving\x20it.\x20','WDA\x20did\x20not\x20return\x20within\x20','retriesUsed','NyFbi','Could\x20not\x20reach\x20the\x20Ceraph\x20server\x20(request\x20timed\x20out\x20after\x20','babel-config','wdaFetch','WgkYe','[react-native-mcp]\x20Runtime\x20catalog\x20unavailable;\x20running\x20with\x20bootstrap\x20catalog\x20only','durationMs','{\x20readTestidConfig:\x20()\x20=>\x20{\x20try\x20{\x20return\x20require(\x22','Metro\x20has\x20encountered\x20an\x20error','stem','screenName','title','assertNotVisible:\x20element\x20is\x20visible:\x20','buf','function','Your\x20Ceraph\x20session\x20is\x20no\x20longer\x20valid\x20(the\x20account\x20may\x20have\x20been\x20deleted,\x20or\x20your\x20token\x20expired).\x20Run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20to\x20sign\x20in\x20again.\x20Your\x20local\x20screenshots\x20and\x20flows\x20are\x20preserved\x20—\x20only\x20the\x20server-side\x20identity\x20needs\x20refreshing.','ceraph://','.rn-errors.json','rmdir','Upgraded\x20existing\x20installCeraph()\x20with\x20the\x20testID\x20sentinel\x20seam.','Auth\x20provider\x20secret\x20not\x20found.\x20Set\x20','README.md','Supabase\x20adapter\x20requires\x20`projectUrl`\x20in\x20ceraph.config.js\x20(the\x20Supabase\x20project\x20URL,\x20e.g.,\x20\x27https://abc.supabase.co\x27).','Found\x20','http-client-error',',\x20then\x20re-run\x20any\x20flow\x20tool\x20—','Chain\x20crashed\x20before\x20reaching\x20a\x20snap\x20point:\x20','--name-only','fetchedAt','getParentIfKind','getSource','Ceraph\x20server\x20is\x20having\x20a\x20moment\x20(HTTP\x20','scrollToElement','sEcww','.\x20If\x20you\x20see\x20network\x20timeout\x20errors\x20during\x20the\x20run,\x20verify\x20your\x20phone\x20is\x20on\x20the\x20same\x20network.','iproxy-bridge','BdVhH','pathExists','origin','Keep\x20imageKey\x20short\x20and\x20descriptive\x20(lowercase,\x20hyphen-separated).','N/A','isFunctionExpression','Metro\x20dev\x20server\x20started\x20successfully.','sessionBaseUrl','.\x20Native\x20modules\x20may\x20need\x20linking.','checks','dciHZ','_layout.tsx','checkAndHandle','insertStatements','typeIntoField','ceraph-rn','inflightChild','tool','\x22);\x20}\x20catch\x20{\x20return\x20null;\x20}\x20}\x20})','appendStderr','none','/var/run/usbmuxd','dev-settings-reload','availableElements','Camera\x20revert\x20failed:\x20','getifaddr','CFWJE','dbVfw','timestampMs','Signed\x20in','readBody','Either\x20omit\x20`subDir`\x20or\x20pass\x20a\x20single\x20safe\x20path\x20segment\x20(lowercase,\x20hyphen-separated,\x20no\x20slashes).','mcp-clients','sendLoggingMessage','ceraph-uninstall-preview-','Boot\x20and\x20launch\x20WebDriverAgent\x20against\x20a\x20booted\x20iOS\x20Simulator,\x20then\x20capture\x20its\x20WDA\x20port\x20so\x20subsequent\x20screen_*/app_*\x20calls\x20can\x20route\x20to\x20the\x20simulator.\x20NOTE:\x20if\x20a\x20real\x20iOS\x20device\x20is\x20ALSO\x20connected,\x20auto-detection\x20(CERAPH_TARGET=auto,\x20the\x20default)\x20still\x20prefers\x20the\x20device,\x20so\x20calls\x20keep\x20driving\x20the\x20phone\x20—\x20set\x20CERAPH_TARGET=simulator\x20in\x20the\x20MCP\x20process\x20environment\x20to\x20force\x20simulator\x20routing.\x20With\x20no\x20device\x20connected,\x20routing\x20falls\x20to\x20the\x20simulator\x20automatically.\x20Idempotent\x20—\x20calling\x20it\x20again\x20while\x20a\x20session\x20is\x20running\x20returns\x20the\x20existing\x20one.\x20Requires\x20the\x20optional\x20`appium-webdriveragent`\x20dependency\x20in\x20the\x20project,\x20at\x20least\x20one\x20booted\x20simulator,\x20and\x20a\x20one-time\x20Xcode\x20signing\x20setup\x20for\x20the\x20WDA\x20target\x20(the\x20first\x20launch\x20runs\x20an\x20`xcodebuild\x20test`\x20to\x20code-sign;\x20later\x20launches\x20reuse\x20the\x20cached\x20build).','content-type-unrecognized','renderedValue=','responseField','no-config','snapshotErrorBanners','OhnqS','file','working-tree\x20diff\x20vs\x20','center','currentBaseUrl','Cognito\x20deleteUser\x20failed:\x20','\x20is\x20installed\x20(','stateVersion','resolveCommandAck','Long-press\x20an\x20element\x20matched\x20by\x20text/accessibilityLabel.\x20Default\x20duration\x20is\x201000ms.','runPrebuildClean','element','WNIpk','outcome','init.ts','applied','store','.codex','granted','bootBufferBytes','hardwareUdid','devicePort','tracking','verifyNavigation','identifier','autonomy','Per-flow\x20mutex-partner\x20flow\x20names.\x20Pass\x20through\x20verbatim\x20from\x20the\x20planning\x20tool.','Xcode\x20is\x20missing\x20Device\x20Support\x20for\x20this\x20iPhone\x27s\x20iOS\x20version','\x20required\x20env\x20var(s)\x20present.','Screenshot\x20—\x20flow=\x22','step','networksetup','currentEpoch','elementKey','\x20→\x20<CeraphCamera\x20/>','secret-missing','testid-config.json','runChain','stdout','child','liopi','unlink','Auth0\x20createUser\x20failed:\x20','placeholder','interfaceName','auth0','failed\x20to\x20bind\x20a\x20free\x20port','checkDevicectl','-json','ZIicx','launchApp','WebDriverAgent','No\x20<CameraView>\x20at\x20','inherit','Failed\x20to\x20get\x20window\x20size:\x20','starter-ready','image-too-large','Unknown\x20chain\x20runId.\x20The\x20run\x20either\x20expired\x20(30m\x20TTL)\x20or\x20never\x20started.\x20Re-run\x20rn_test_chain_start\x20to\x20begin\x20a\x20fresh\x20chain.','message','unlocked','componentControl:\x20componentName\x20must\x20be\x20a\x20non-empty\x20string','device','/session/','GpsPv','createSourceFile','no\x20layout\x20file\x20detected','shift','setBootCaptureMode','Another\x20chain\x20(runId=','CMFuI','isInteger','booted','.\x20The\x20device\x20may\x20not\x20appear\x20in\x20ffmpeg\x27s\x20device\x20list\x20yet\x20—\x20unplug\x20and\x20replug\x20the\x20USB-C\x20cable,\x20accept\x20the\x20\x22Trust\x20This\x20Computer\x22\x20prompt,\x20and\x20retry.','Y\x20coordinate\x20to\x20tap','screenshotBase64','\x20is\x20malformed\x20JSON\x20—\x20preserved;\x20fix\x20it\x20manually\x20then\x20re-run','removedKeys',');\x20appium-webdriveragent\x20ready.','catalog','rootIsRnApp','ffmpeg\x20not\x20found\x20—\x20continuous\x20chain-run\x20video\x20capture\x20will\x20be\x20skipped.\x20Tests\x20still\x20execute\x20normally.','length','Upgrade','acked','ClPhB','ceraph_init_select_tier','findAndTap','config','bounds','ext','ebVeW','tree','list','user-marker\x20NOT\x20visible\x20on\x20protected\x20route','Qrfrp','See\x20the\x20WebDriverAgent\x20error\x20above\x20for\x20the\x20specific\x20fix,\x20then\x20call\x20ceraph_start\x20again.'];_0x1ecd=function(){return _0xfeac8e;};return _0x1ecd();}import{join as _0x23bd26}from'path';import{readFile as _0x269fc2,access as _0x5ef67b}from'fs/promises';import{join as _0x4cbcf5}from'path';var _0x5cae32=[{'file':'pnpm-lock.yaml','pm':_0x3ee7d6(0x16e)},{'file':'yarn.lock','pm':_0x3ee7d6(0x18b)},{'file':_0x3ee7d6(0x20d),'pm':_0x3ee7d6(0x307)},{'file':'bun.lock','pm':'bun'},{'file':'package-lock.json','pm':'npm'}];async function _0x375a8b(_0xa714f3){try{return await _0x5ef67b(_0xa714f3),!![];}catch{return![];}}async function _0x8dd55b(_0x632e61){const _0x35575d=_0x3ee7d6;for(const {file:_0x56b0e2,pm:_0x42617f}of _0x5cae32){if(await _0x375a8b(_0x4cbcf5(_0x632e61,_0x56b0e2)))return _0x42617f;}return _0x35575d(0x38f);}function _0xe59a34(_0xffc7e9,_0x231226=_0x3ee7d6(0x1cc)){const _0x3a3770=_0x3ee7d6;switch(_0xffc7e9){case'pnpm':return{'bin':_0x3a3770(0x16e),'args':['add',_0x231226]};case _0x3a3770(0x18b):return{'bin':'yarn','args':['add',_0x231226]};case'bun':return{'bin':_0x3a3770(0x307),'args':['add',_0x231226]};case _0x3a3770(0x38f):return{'bin':'npm','args':['install',_0x231226]};}}async function _0x13b218(_0x3ffeff,_0x321f39='@ceraph/react-native-mcp'){const _0x24441a=_0x3ee7d6;let _0x1fac00;try{_0x1fac00=await _0x269fc2(_0x4cbcf5(_0x3ffeff,_0x24441a(0x833)),_0x24441a(0x29d));}catch{return![];}let _0x2ed10c;try{_0x2ed10c=JSON[_0x24441a(0x229)](_0x1fac00);}catch{return![];}if(!_0x2ed10c||typeof _0x2ed10c!==_0x24441a(0x5ab))return![];const _0x515fc8=_0x2ed10c,_0x3275f5=_0x515fc8[_0x24441a(0x5d2)],_0x56a899=_0x515fc8[_0x24441a(0x619)];return Boolean(_0x3275f5?.[_0x321f39]||_0x56a899?.[_0x321f39]);}import{chmod,rename as _0x4433f0,stat as _0x3dcc12,unlink as _0x5d78c0,writeFile as _0x423c13}from'fs/promises';import{dirname as _0x13be9d,join as _0x3b2b4e}from'path';async function _0x4b8510(_0x26d56c,_0x1845fe){const _0x177897=_0x3ee7d6,_0x478a7d=_0x13be9d(_0x26d56c),_0x221387=_0x3b2b4e(_0x478a7d,_0x26d56c['slice'](_0x478a7d[_0x177897(0x945)]+0x1)+'.tmp.'+process[_0x177897(0x135)]+'.'+Math['random']()['toString'](0x24)['slice'](0x2));let _0x32f74f;try{if(_0x177897(0x504)==='LXqpu')return _0x143471(this['config']);else{const _0xf700ea=await _0x3dcc12(_0x26d56c);_0x32f74f=_0xf700ea[_0x177897(0x613)]&0x1ff;}}catch{}try{await _0x423c13(_0x221387,_0x1845fe,'utf-8'),_0x32f74f!==void 0x0&&await chmod(_0x221387,_0x32f74f),await _0x4433f0(_0x221387,_0x26d56c);}catch(_0x588743){try{await _0x5d78c0(_0x221387);}catch{}throw _0x588743;}}import{readFile as _0x3b7606}from'fs/promises';async function _0x4260f1(_0x10cdd7){const _0xe25611=_0x3ee7d6;let _0x2b0831;try{_0x2b0831=await _0x3b7606(_0x10cdd7,'utf-8');}catch(_0x2fdd4d){const _0x12a710=_0x2fdd4d;if(_0x12a710&&_0x12a710['code']===_0xe25611(0x6fe))return{'kind':_0xe25611(0x641)};throw _0x2fdd4d;}try{return{'kind':'ok','value':JSON[_0xe25611(0x229)](_0x2b0831)};}catch(_0x2f1881){return{'kind':_0xe25611(0x445),'raw':_0x2b0831,'error':_0x2f1881};}}function _0x2c73d7(_0x1ec3a1){const _0x46f749=_0x3ee7d6;return _0x1ec3a1!=null&&typeof _0x1ec3a1==='object'&&!Array[_0x46f749(0x246)](_0x1ec3a1);}import{mkdir as _0x49099b}from'fs/promises';import{join as _0x1b6edc}from'path';var _0x47a2a3='react-native-mcp',_0x418d61=[_0x3ee7d6(0x644),_0x3ee7d6(0x2bb)];async function _0x296c84(_0x532991){const _0x3d32bb=_0x3ee7d6,_0x34ec3e=_0x1b6edc(_0x532991,..._0x418d61),_0x44c54d=await _0x4260f1(_0x34ec3e);if(_0x44c54d['kind']==='malformed')return{'status':'preserved','settingsPath':_0x34ec3e,'reason':'existing\x20settings\x20at\x20'+_0x34ec3e+_0x3d32bb(0x93f)};if(_0x44c54d[_0x3d32bb(0x3ea)]==='ok'&&!_0x2c73d7(_0x44c54d[_0x3d32bb(0x84f)]))return{'status':_0x3d32bb(0x614),'settingsPath':_0x34ec3e,'reason':'existing\x20settings\x20at\x20'+_0x34ec3e+'\x20is\x20not\x20a\x20JSON\x20object\x20(got\x20'+(Array['isArray'](_0x44c54d['value'])?_0x3d32bb(0x27a):typeof _0x44c54d['value'])+_0x3d32bb(0x394)};const _0x40505f=_0x44c54d[_0x3d32bb(0x3ea)]==='ok'?_0x44c54d[_0x3d32bb(0x84f)]:{};if(_0x40505f['enableAllProjectMcpServers']===!![])return{'status':'already-approved','settingsPath':_0x34ec3e};const _0x4e160f=_0x40505f[_0x3d32bb(0x780)];if(_0x4e160f!==void 0x0){if(!Array[_0x3d32bb(0x246)](_0x4e160f)||!_0x4e160f[_0x3d32bb(0x971)](_0x48116c=>typeof _0x48116c===_0x3d32bb(0x7fd)))return{'status':'preserved','settingsPath':_0x34ec3e,'reason':'existing\x20enabledMcpjsonServers\x20in\x20'+_0x34ec3e+_0x3d32bb(0x2ce)};if(_0x4e160f[_0x3d32bb(0x83f)](_0x47a2a3))return{'status':_0x3d32bb(0x9f6),'settingsPath':_0x34ec3e};}const _0x1a9397=Array[_0x3d32bb(0x246)](_0x4e160f)?[..._0x4e160f,_0x47a2a3]:[_0x47a2a3];return _0x40505f[_0x3d32bb(0x780)]=_0x1a9397,await _0x49099b(_0x1b6edc(_0x532991,_0x3d32bb(0x644)),{'recursive':!![]}),await _0x4b8510(_0x34ec3e,JSON[_0x3d32bb(0x2c1)](_0x40505f,null,0x2)+'\x0a'),{'status':'approved','settingsPath':_0x34ec3e};}import{readFile as _0x551b0b,unlink as _0x523978,access as _0x599764}from'fs/promises';import{homedir as _0x4df339}from'os';import{join as _0x630091}from'path';function _0x59207b(_0x4b062d){const _0x2e1c5e=_0x3ee7d6,_0x5d11d5=/^\[\[?([^[\]]*)\]\]?\s*(?:#.*)?$/['exec'](_0x4b062d);return _0x5d11d5?_0x5d11d5[0x1][_0x2e1c5e(0x5da)]():null;}var _0x382f59=['.mcp.json',_0x630091(_0x3ee7d6(0x4e2),'mcp.json'),_0x630091('.vscode',_0x3ee7d6(0x5b6))],_0x2b54df=[_0x630091('.codex',_0x3ee7d6(0x97a))],_0x4c5900=_0x630091(_0x3ee7d6(0x644),'settings.local.json'),_0x211032=[{'label':'Windsurf','dir':[_0x3ee7d6(0x97f),_0x3ee7d6(0x6ca)],'file':[_0x3ee7d6(0x97f),'windsurf','mcp_config.json']},{'label':'Antigravity','dir':[_0x3ee7d6(0x376),'antigravity'],'file':['.gemini',_0x3ee7d6(0x3b2),_0x3ee7d6(0x5ed)]}];function _0x6b1b18(_0xe268e9){const _0x2e4499=_0x3ee7d6,_0x5c9e1a=_0xe268e9??_0x4df339();return _0x211032[_0x2e4499(0x986)](_0x319ec6=>({'label':_0x319ec6['label'],'path':_0x630091(_0x5c9e1a,..._0x319ec6['file'])}));}var _0x9765fd=[_0x3ee7d6(0x51e),_0x3ee7d6(0x954)],_0x3a86ae=['mobile-mcp'];async function _0x32c4fa(_0x4b4616){try{return await _0x599764(_0x4b4616),!![];}catch{return![];}}async function _0x2b292f(_0x1bfd2e,_0x226160={}){const _0x59fd18=_0x3ee7d6,_0x33ae9a=_0x226160[_0x59fd18(0x18d)]??(_0x5bfb04=>_0x551b0b(_0x5bfb04,_0x59fd18(0x29d))),_0x36934e=_0x226160['writeFile']??_0x4b8510,_0x4a0681=_0x226160[_0x59fd18(0x91d)]??(_0x59dc70=>_0x523978(_0x59dc70)),_0x21e1c8=_0x226160['fileExists']??_0x32c4fa,_0x14d266=[];for(const _0x8e573c of _0x382f59){const _0x125e59=_0x630091(_0x1bfd2e,_0x8e573c);if(!await _0x21e1c8(_0x125e59)){_0x14d266[_0x59fd18(0x496)]({'path':_0x125e59,'status':'not-found'});continue;}_0x14d266['push'](await _0x128dfe(_0x125e59,{'read':_0x33ae9a,'write':_0x36934e,'unlink':_0x4a0681}));}for(const _0x2f6c4c of _0x2b54df){const _0x7444a6=_0x630091(_0x1bfd2e,_0x2f6c4c);if(!await _0x21e1c8(_0x7444a6)){if('ClXwI'!=='ClXwI')return{'path':_0x312e95,'status':_0x59fd18(0x295)};else{_0x14d266['push']({'path':_0x7444a6,'status':'not-found'});continue;}}_0x14d266[_0x59fd18(0x496)](await _0x224099(_0x7444a6,{'read':_0x33ae9a,'write':_0x36934e,'unlink':_0x4a0681}));}const _0x3d279c=_0x630091(_0x1bfd2e,_0x4c5900);return!await _0x21e1c8(_0x3d279c)?_0x14d266['push']({'path':_0x3d279c,'status':_0x59fd18(0x4e1)}):_0x14d266[_0x59fd18(0x496)](await _0x27b3ab(_0x3d279c,{'read':_0x33ae9a,'write':_0x36934e,'unlink':_0x4a0681})),{'files':_0x14d266};}async function _0x128dfe(_0x4127e8,_0x426f3f){const _0x73bbbd=_0x3ee7d6,_0x7476a2=await _0x426f3f['read'](_0x4127e8);let _0x5b66f7;try{_0x5b66f7=JSON['parse'](_0x7476a2);}catch{return{'path':_0x4127e8,'status':_0x73bbbd(0x445)};}if(!_0x5b66f7||typeof _0x5b66f7!=='object'||Array['isArray'](_0x5b66f7))return{'path':_0x4127e8,'status':'malformed'};const _0x1f24df=_0x5b66f7,_0x64999a=_0x1f24df['mcpServers'];if(!_0x64999a||typeof _0x64999a!=='object'||Array[_0x73bbbd(0x246)](_0x64999a))return{'path':_0x4127e8,'status':_0x73bbbd(0x295)};const _0x220ba9=_0x64999a,_0x148deb=[];for(const _0x2fb47e of _0x9765fd){_0x2fb47e in _0x220ba9&&(delete _0x220ba9[_0x2fb47e],_0x148deb['push'](_0x2fb47e));}if(_0x148deb['length']===0x0)return{'path':_0x4127e8,'status':'no-changes'};const _0x3231fa=Object[_0x73bbbd(0x208)](_0x1f24df)[_0x73bbbd(0x65c)](_0x258b37=>_0x258b37!==_0x73bbbd(0x279)),_0x1345aa=Object['keys'](_0x220ba9)['length']===0x0;if(_0x1345aa&&_0x3231fa['length']===0x0)return await _0x426f3f['unlink'](_0x4127e8),{'path':_0x4127e8,'status':'deleted-file','removedKeys':_0x148deb};const _0x4f788a=_0x7476a2[_0x73bbbd(0x678)](/\n(\s+)"/),_0x19c5c1=_0x4f788a?.[0x1]??'\x20\x20',_0x304711=_0x7476a2['endsWith']('\x0a'),_0xb7b12b=JSON[_0x73bbbd(0x2c1)](_0x1f24df,null,_0x19c5c1);return await _0x426f3f[_0x73bbbd(0x65a)](_0x4127e8,_0x304711?_0xb7b12b+'\x0a':_0xb7b12b),{'path':_0x4127e8,'status':_0x73bbbd(0x775),'removedKeys':_0x148deb};}async function _0x27b3ab(_0x4dcfee,_0x2c8df4){const _0x3eec71=_0x3ee7d6,_0x46f257=await _0x2c8df4[_0x3eec71(0x9e8)](_0x4dcfee);let _0x4d4ba8;try{_0x4d4ba8=JSON['parse'](_0x46f257);}catch{return{'path':_0x4dcfee,'status':_0x3eec71(0x445)};}if(!_0x4d4ba8||typeof _0x4d4ba8!==_0x3eec71(0x5ab)||Array[_0x3eec71(0x246)](_0x4d4ba8))return{'path':_0x4dcfee,'status':_0x3eec71(0x445)};const _0x3c435e=_0x4d4ba8,_0x7814eb=_0x3c435e[_0x3eec71(0x780)];if(!Array['isArray'](_0x7814eb)||!_0x7814eb['includes'](_0x47a2a3))return{'path':_0x4dcfee,'status':'no-changes'};const _0xf59b9=_0x7814eb['filter'](_0x41958f=>_0x41958f!==_0x47a2a3);_0xf59b9['length']===0x0?delete _0x3c435e[_0x3eec71(0x780)]:_0x3c435e[_0x3eec71(0x780)]=_0xf59b9;if(Object['keys'](_0x3c435e)['length']===0x0)return await _0x2c8df4['unlink'](_0x4dcfee),{'path':_0x4dcfee,'status':'deleted-file','removedKeys':[_0x47a2a3]};const _0x5720f4=_0x46f257['match'](/\n(\s+)"/),_0x32d421=_0x5720f4?.[0x1]??'\x20\x20',_0x4d6369=_0x46f257[_0x3eec71(0x3f0)]('\x0a'),_0x570dc6=JSON[_0x3eec71(0x2c1)](_0x3c435e,null,_0x32d421);return await _0x2c8df4[_0x3eec71(0x65a)](_0x4dcfee,_0x4d6369?_0x570dc6+'\x0a':_0x570dc6),{'path':_0x4dcfee,'status':'removed-entries','removedKeys':[_0x47a2a3]};}function _0x2d6e24(_0x2c687b,_0x1a36b9){const _0x37b08e=_0x3ee7d6,_0x19e91e=_0x2c687b[_0x37b08e(0x814)](/\r?\n/),_0x2b0ee3=_0x2c687b[_0x37b08e(0x3f0)]('\x0a');_0x2b0ee3&&_0x19e91e[_0x37b08e(0x945)]>0x0&&_0x19e91e[_0x19e91e[_0x37b08e(0x945)]-0x1]===''&&_0x19e91e['pop']();const _0x389017=[],_0x22471a=[];let _0x357ae2=![],_0x32537a=![];for(let _0x4c8e74=0x0;_0x4c8e74<_0x19e91e[_0x37b08e(0x945)];_0x4c8e74++){if('RMOCr'!=='KPzEZ'){const _0x159a96=_0x19e91e[_0x4c8e74],_0x5b70c3=_0x159a96[_0x37b08e(0x5da)](),_0x53c4e2=_0x59207b(_0x5b70c3);if(_0x53c4e2!==null){const _0x4840af=_0x1a36b9['has'](_0x53c4e2);if(_0x4840af){_0x389017[_0x37b08e(0x945)]>0x0&&_0x389017[_0x389017[_0x37b08e(0x945)]-0x1]===''&&_0x389017['pop']();const _0x2feb02=_0x53c4e2['startsWith']('mcp_servers.')?_0x53c4e2['slice']('mcp_servers.'['length']):_0x53c4e2;_0x22471a['push'](_0x2feb02),_0x357ae2=!![],_0x32537a=![];continue;}(_0x357ae2||_0x32537a)&&_0x389017['length']>0x0&&_0x389017[_0x389017['length']-0x1]!==''&&_0x389017[_0x37b08e(0x496)]('');_0x357ae2=![],_0x32537a=![],_0x389017['push'](_0x159a96);continue;}if(_0x357ae2){_0x32537a=!![];continue;}if(_0x32537a){if(_0x5b70c3==='')continue;_0x389017['length']>0x0&&_0x389017[_0x389017['length']-0x1]!==''&&_0x389017[_0x37b08e(0x496)]('');_0x32537a=![],_0x389017[_0x37b08e(0x496)](_0x159a96);continue;}_0x389017[_0x37b08e(0x496)](_0x159a96);}else return this[_0x37b08e(0x7be)](_0x5b51bd);}while(_0x389017['length']>0x0&&_0x389017[_0x389017[_0x37b08e(0x945)]-0x1]===''){_0x389017['pop']();}const _0x1a6716=_0x389017['join']('\x0a'),_0x4960a9=_0x2b0ee3&&_0x1a6716['length']>0x0?_0x1a6716+'\x0a':_0x1a6716;return{'next':_0x4960a9,'removedKeys':_0x22471a};}async function _0x224099(_0x56b955,_0x2e26e6){const _0xf1430b=_0x3ee7d6,_0x275e93=await _0x2e26e6['read'](_0x56b955),_0x5b8965=new Set(_0x9765fd[_0xf1430b(0x986)](_0x26b123=>'mcp_servers.'+_0x26b123)),{next:_0x48e4a2,removedKeys:_0x463199}=_0x2d6e24(_0x275e93,_0x5b8965);if(_0x463199['length']===0x0)return{'path':_0x56b955,'status':'no-changes'};if(_0x48e4a2['trim']()[_0xf1430b(0x945)]===0x0)return await _0x2e26e6[_0xf1430b(0x91d)](_0x56b955),{'path':_0x56b955,'status':_0xf1430b(0x280),'removedKeys':_0x463199};return await _0x2e26e6[_0xf1430b(0x65a)](_0x56b955,_0x48e4a2),{'path':_0x56b955,'status':_0xf1430b(0x775),'removedKeys':_0x463199};}async function _0x4241f8(_0x37b7fc={}){const _0x51b9bf=_0x3ee7d6,_0x42ed89=_0x37b7fc[_0x51b9bf(0x18d)]??(_0x13f078=>_0x551b0b(_0x13f078,'utf-8')),_0x3b5144=_0x37b7fc['writeFile']??_0x4b8510,_0x422d9f=_0x37b7fc['unlink']??(_0x50c1b5=>_0x523978(_0x50c1b5)),_0x2d2cf9=_0x37b7fc['fileExists']??_0x32c4fa,_0x88b59f=[];for(const {path:_0x31fb38}of _0x6b1b18(_0x37b7fc['home'])){if(!await _0x2d2cf9(_0x31fb38)){_0x88b59f['push']({'path':_0x31fb38,'status':'not-found'});continue;}_0x88b59f[_0x51b9bf(0x496)](await _0x128dfe(_0x31fb38,{'read':_0x42ed89,'write':_0x3b5144,'unlink':_0x422d9f}));}return{'files':_0x88b59f};}import{createRequire as _0x281ee8}from'module';var _0x13acbf=_0x3ee7d6(0x1cc),_0x2a3197=((()=>{const _0x497c64=_0x3ee7d6;try{const _0x2177e6=_0x281ee8(import.meta.url),_0x3f29e4=_0x2177e6(_0x497c64(0x6fd));return _0x3f29e4['version']??_0x497c64(0x869);}catch{return'0.0.0';}})());function _0x323e7c(_0x416afd=_0x2a3197){if(!_0x416afd||_0x416afd==='0.0.0')return _0x13acbf;return _0x13acbf+'@'+_0x416afd;}function _0x4f2d22(){return{'command':'npx','args':['-y',_0x323e7c()]};}function _0x11b004(){const _0x2b59b4=_0x3ee7d6;return'\x0a[mcp_servers.react-native-mcp]\x0acommand\x20=\x20\x22npx\x22\x0aargs\x20=\x20[\x22-y\x22,\x20\x22'+_0x323e7c()+_0x2b59b4(0x2a9);}function _0x1450ff(){return'args\x20=\x20[\x22-y\x22,\x20\x22'+_0x323e7c()+'\x22]';}var _0x22a417='mcp_servers.react-native-mcp';function _0x2c2188(_0x2f84e6){const _0x152c9d=_0x3ee7d6,_0xac72b9=_0x1450ff(),_0x38efc0=_0x2f84e6['split'](/\r?\n/);let _0xb1bed8=![],_0x569a3a=![],_0x820830=![],_0x798e6b=![];for(let _0xdf768c=0x0;_0xdf768c<_0x38efc0['length'];_0xdf768c++){const _0xbda64e=_0x38efc0[_0xdf768c][_0x152c9d(0x5da)](),_0x455302=_0x59207b(_0xbda64e);if(_0x455302!==null){if('liopi'===_0x152c9d(0x91c)){_0xb1bed8=_0x455302===_0x22a417;if(_0xb1bed8)_0x569a3a=!![];continue;}else _0x4543d5=![],_0x50b28e='iproxy\x20is\x20not\x20installed\x20—\x20cannot\x20auto-bridge\x20WDA.',_0x2435e3='Install\x20with\x20`brew\x20install\x20libimobiledevice`,\x20then\x20re-run\x20doctor.';}if(_0xb1bed8&&/^args\s*=/[_0x152c9d(0x364)](_0xbda64e)){if(_0xbda64e===_0xac72b9)_0x798e6b=!![];else/^args\s*=\s*\[[^[\]]*\]\s*(?:#.*)?$/['test'](_0xbda64e)&&(_0x38efc0[_0xdf768c]=_0xac72b9,_0x820830=!![]);break;}}return{'next':_0x38efc0['join']('\x0a'),'replaced':_0x820830,'sectionPresent':_0x569a3a,'alreadyCurrent':_0x798e6b};}function _0x33745c(_0x15c7cf,_0x39895e=_0x4f2d22()){const _0x14fd48=_0x3ee7d6;if(!_0x2c73d7(_0x15c7cf))return![];if(_0x15c7cf[_0x14fd48(0x850)]!==_0x39895e[_0x14fd48(0x850)])return![];const _0x36cc10=_0x15c7cf[_0x14fd48(0x719)];if(!Array[_0x14fd48(0x246)](_0x36cc10)||_0x36cc10['length']!==_0x39895e['args'][_0x14fd48(0x945)])return![];return _0x36cc10['every']((_0x2d44b2,_0x2bad3b)=>_0x2d44b2===_0x39895e['args'][_0x2bad3b]);}import{readFile as _0x217ebe,writeFile as _0x1260e8,readdir as _0x111f78}from'fs/promises';import{basename,dirname as _0x1a49be,join as _0x32a541,relative as _0x5313a2,sep as _0x569437}from'path';var _0x3c2703,_0x23f6c6,_0x1a19b6,_0x5ebc88,_0x24528c=![];async function _0x3bf435(){if(_0x24528c)return;const _0x1c77e8=await import('ts-morph');({IndentationText:_0x3c2703,Project:_0x23f6c6,SyntaxKind:_0x1a19b6,Node:_0x5ebc88}=_0x1c77e8,_0x24528c=!![]);}var _0x4f7081=['app','src','screens'],_0x1d8d5b=new Set([_0x3ee7d6(0x73e),'.jsx']),_0x4834c1=new Set(['node_modules',_0x3ee7d6(0x166),_0x3ee7d6(0x17d),_0x3ee7d6(0x56c),_0x3ee7d6(0x5d3),_0x3ee7d6(0x878),'.next','ios','android']),_0x4a1715=_0x3ee7d6(0x2f7),_0x4d99ba=_0x3ee7d6(0x698);function _0x506b44(_0x2a4178){const _0x25c0ee=_0x3ee7d6,_0x2367db=basename(_0x2a4178)['replace'](/\.(tsx|jsx)$/i,''),_0x3cc24c=basename(_0x1a49be(_0x2a4178)),_0x23a3cb=new Set(['page',_0x25c0ee(0x1c4),'screen','route','layout']),_0x1a49d2=_0x23a3cb[_0x25c0ee(0x21c)](_0x2367db['toLowerCase']())?_0x3cc24c:_0x2367db,_0x447814=_0x1a49d2['replace'](/([a-z0-9])([A-Z])/g,'$1-$2')[_0x25c0ee(0x17e)]()['replace'](/[^a-z0-9]+/g,'-')[_0x25c0ee(0x27d)](/^-+|-+$/g,'');return _0x447814[_0x25c0ee(0x945)]>0x0?_0x447814:'camera';}async function _0x207bb7(_0x30449a){const _0x9b5a0=_0x3ee7d6,_0x203b23=[];async function _0x11fc05(_0xfb7514){const _0x2f9465=_0x4a5a;let _0x546f08;try{_0x546f08=await _0x111f78(_0xfb7514,{'withFileTypes':!![]});}catch{return;}for(const _0x20b4a0 of _0x546f08){const _0x19f50c=_0x32a541(_0xfb7514,_0x20b4a0[_0x2f9465(0x4d1)]);if(_0x20b4a0[_0x2f9465(0x42a)]()){if(_0x4834c1['has'](_0x20b4a0['name']))continue;await _0x11fc05(_0x19f50c);continue;}if(!_0x20b4a0['isFile']())continue;const _0x5d7bfe=_0x20b4a0['name'][_0x2f9465(0x64b)]('.');if(_0x5d7bfe<0x0)continue;const _0x2c4a4d=_0x20b4a0['name']['slice'](_0x5d7bfe)['toLowerCase']();if(!_0x1d8d5b['has'](_0x2c4a4d))continue;_0x203b23[_0x2f9465(0x496)](_0x19f50c);}}for(const _0x99047a of _0x4f7081){await _0x11fc05(_0x32a541(_0x30449a,_0x99047a));}for(const _0xbecc4 of[_0x9b5a0(0x854),_0x9b5a0(0x754)]){_0x203b23['push'](_0x32a541(_0x30449a,_0xbecc4));}return _0x203b23;}function _0xf61d(_0x289192){const _0x4ea508=new _0x23f6c6({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1},'manipulationSettings':{'indentationText':_0x3c2703['TwoSpaces']}});for(const _0x1c217c of _0x289192){try{_0x4ea508['addSourceFileAtPath'](_0x1c217c);}catch{}}return _0x4ea508;}function _0x140d3b(_0x1d8f0f,_0x455243){const _0x248f5e=_0x3ee7d6,_0x4135bd=[];return _0x1d8f0f[_0x248f5e(0x631)](_0x583b79=>{const _0x5ce132=_0x248f5e;if(_0x5ebc88['isJsxOpeningElement'](_0x583b79)||_0x5ebc88['isJsxSelfClosingElement'](_0x583b79)){const _0x4ce1ed=_0x583b79['getTagNameNode']();_0x4ce1ed[_0x5ce132(0x326)]()===_0x455243&&_0x4135bd[_0x5ce132(0x496)](_0x583b79);}}),_0x4135bd;}function _0x4d2f67(_0x4f21f5){const _0x1a522b=_0x4f21f5['getAttributes']();for(const _0x41d6e6 of _0x1a522b){if(_0x5ebc88['isJsxAttribute'](_0x41d6e6)){const _0x54e4a1=_0x41d6e6['getNameNode']();if(_0x54e4a1['getText']()==='imageKey')return!![];}}return![];}async function _0x3fb3fb(_0x3d9261){const _0x38f26a=_0x3ee7d6;await _0x3bf435();const _0xf0247e=await _0x207bb7(_0x3d9261),_0xbfabb2=_0xf61d(_0xf0247e),_0x385fee=[];for(const _0x46fde6 of _0xbfabb2['getSourceFiles']()){const _0x6456c7=_0x140d3b(_0x46fde6,'CameraView');if(_0x6456c7[_0x38f26a(0x945)]===0x0)continue;for(const _0x5a0e35 of _0x6456c7){const _0x56d942=_0x5a0e35['getStart'](),_0x30896b=_0x46fde6[_0x38f26a(0x1ab)](_0x56d942);_0x385fee['push']({'filePath':_0x46fde6['getFilePath'](),'relPath':_0x5313a2(_0x3d9261,_0x46fde6['getFilePath']())['split'](_0x569437)[_0x38f26a(0x221)]('/'),'line':_0x30896b['line'],'suggestedKey':_0x506b44(_0x46fde6[_0x38f26a(0x7ff)]()),'alreadyHasImageKey':_0x4d2f67(_0x5a0e35)});}}return _0x385fee[_0x38f26a(0x837)]((_0x536b90,_0x4f148f)=>_0x536b90[_0x38f26a(0x260)]===_0x4f148f['relPath']?_0x536b90[_0x38f26a(0xf5)]-_0x4f148f['line']:_0x536b90[_0x38f26a(0x260)]<_0x4f148f[_0x38f26a(0x260)]?-0x1:0x1),{'edits':_0x385fee,'filesScanned':_0xbfabb2['getSourceFiles']()[_0x38f26a(0x945)]};}async function _0x43bab1(_0x54ec86,_0x118207,_0x32b5c1={}){const _0x23c271=_0x3ee7d6;await _0x3bf435();const _0x25914b=new Map();for(const _0x5032a5 of _0x118207){const _0x354971=_0x25914b['get'](_0x5032a5[_0x23c271(0x4e3)])??[];_0x354971[_0x23c271(0x496)](_0x5032a5),_0x25914b['set'](_0x5032a5['filePath'],_0x354971);}const _0x55ef7d=_0xf61d(Array['from'](_0x25914b['keys']())),_0x49db0e=[];let _0x10b9e8=0x0;for(const [_0x3c1b08,_0x1e9f85]of _0x25914b){const _0x3f0184=_0x55ef7d[_0x23c271(0x741)](_0x3c1b08);if(!_0x3f0184)continue;let _0x2ce987=0x0;for(const _0x129f4c of _0x1e9f85){const _0x329635=_0x140d3b(_0x3f0184,_0x23c271(0x537)),_0x4bcb8e=_0x329635[_0x23c271(0x7bd)](_0x2fc4ca=>{const _0x3e20bd=_0x23c271;if(_0x3e20bd(0x11f)===_0x3e20bd(0x11f)){const _0x27db2b=_0x3f0184[_0x3e20bd(0x1ab)](_0x2fc4ca['getStart']());return _0x27db2b[_0x3e20bd(0xf5)]===_0x129f4c['line'];}else return{'ready':![],'reason':_0x3e20bd(0x627)};});if(!_0x4bcb8e)continue;_0x4bcb8e[_0x23c271(0x800)]()['replaceWithText']('CeraphCamera');if(_0x5ebc88[_0x23c271(0x781)](_0x4bcb8e)){const _0x146e9f=_0x4bcb8e[_0x23c271(0x8c4)](_0x1a19b6[_0x23c271(0x9f3)]);if(_0x146e9f){const _0x2fb456=_0x146e9f[_0x23c271(0x475)]();_0x2fb456['getTagNameNode']()['replaceWithText']('CeraphCamera');}}!_0x129f4c[_0x23c271(0x16d)]&&!_0x32b5c1['omitImageKey']&&_0x4bcb8e['addAttribute']({'name':_0x23c271(0x203),'initializer':'\x22'+_0x129f4c[_0x23c271(0x78a)]+'\x22'}),_0x2ce987++,_0x10b9e8++;}const _0x5f48c0=_0x3f0184[_0x23c271(0x128)](_0x4a1715);if(_0x5f48c0){const _0x572f42=_0x5f48c0['getNamedImports']();!_0x572f42['some'](_0xb6ed55=>_0xb6ed55[_0x23c271(0x33e)]()===_0x4d99ba)&&_0x5f48c0['addNamedImport'](_0x4d99ba);}else _0x3f0184['addImportDeclaration']({'moduleSpecifier':_0x4a1715,'namedImports':[_0x4d99ba]});const _0x1ba192=_0x3f0184[_0x23c271(0x128)]('expo-camera');if(_0x1ba192){const _0x12abd5=_0x140d3b(_0x3f0184,'CameraView');if(_0x12abd5[_0x23c271(0x945)]===0x0){const _0x1e4b01=_0x1ba192['getNamedImports'](),_0x4004c0=_0x1e4b01[_0x23c271(0x7bd)](_0x311af0=>_0x311af0[_0x23c271(0x33e)]()===_0x23c271(0x537));if(_0x4004c0){_0x4004c0[_0x23c271(0x6f8)]();const _0x2f2961=_0x1ba192[_0x23c271(0x865)](),_0xa90beb=_0x1ba192['getDefaultImport']()!=null;_0x2f2961[_0x23c271(0x945)]===0x0&&!_0xa90beb&&_0x1ba192[_0x23c271(0x6f8)]();}}}if(_0x2ce987>0x0){const _0x34da98=_0x3f0184['getFullText']();await _0x1260e8(_0x3c1b08,_0x34da98,_0x23c271(0x29d)),_0x49db0e[_0x23c271(0x496)](_0x3c1b08);}}return{'filesEdited':_0x49db0e,'totalReplacements':_0x10b9e8};}async function _0x54344b(_0x2312ca,_0x1c71b2,_0x234e12){const _0x433daf=_0x3ee7d6;await _0x3bf435();const _0x233e10=_0xf61d([_0x2312ca]),_0x3a6ab4=_0x233e10[_0x433daf(0x741)](_0x2312ca);if(!_0x3a6ab4)return{'applied':![],'reason':_0x433daf(0x99a)+_0x2312ca};const _0x2e9fa4=_0x140d3b(_0x3a6ab4,_0x433daf(0x698)),_0x5278f3=_0x2e9fa4[_0x433daf(0x7bd)](_0xd728e0=>{const _0x310682=_0x433daf,_0x28178a=_0x3a6ab4[_0x310682(0x1ab)](_0xd728e0['getStart']());return _0x28178a[_0x310682(0xf5)]===_0x1c71b2;});if(!_0x5278f3)return{'applied':![],'reason':'No\x20<CeraphCamera>\x20at\x20'+_0x2312ca+':'+_0x1c71b2};let _0x15d995=null,_0x301e81=![];for(const _0x5d07e5 of _0x5278f3['getAttributes']()){if(_0x5ebc88[_0x433daf(0x6f2)](_0x5d07e5)){const _0x4070b0=_0x5d07e5[_0x433daf(0x2b3)]();if(_0x4070b0['getText']()===_0x433daf(0x203)){_0x301e81=!![];const _0xcfdba3=_0x5d07e5['getInitializer']();_0xcfdba3&&_0x5ebc88['isStringLiteral'](_0xcfdba3)&&(_0x15d995=_0xcfdba3[_0x433daf(0x42e)]());_0x5d07e5[_0x433daf(0x395)]('\x22'+_0x234e12+'\x22');break;}}}!_0x301e81&&_0x5278f3[_0x433daf(0x819)]({'name':_0x433daf(0x203),'initializer':'\x22'+_0x234e12+'\x22'});if(_0x15d995===_0x234e12)return{'applied':![],'previousValue':_0x15d995,'reason':_0x433daf(0x525)};return await _0x1260e8(_0x2312ca,_0x3a6ab4['getFullText'](),_0x433daf(0x29d)),{'applied':!![],'previousValue':_0x15d995};}async function _0x5431e7(_0x5b6696){const _0x297477=_0x3ee7d6;try{return await _0x217ebe(_0x5b6696,_0x297477(0x29d));}catch{if('Kgbdx'!==_0x297477(0x7b1))return null;else this[_0x297477(0x392)]={'tree':_0x18a8b9,'epoch':this[_0x297477(0xdd)],'capturedAtStep':_0x41c86b};}}async function _0x182f45(_0x3e71a7,_0x2cddc0){await _0x1260e8(_0x3e71a7,_0x2cddc0,'utf-8');}import{readFile as _0x46239d,writeFile as _0x3d1d2d}from'fs/promises';import{dirname as _0x5c42e0,join as _0x55b58b,relative as _0x2108c5,sep as _0x135d10}from'path';var _0x154647,_0x4070c1,_0x24552b,_0x1d7891,_0x3cabdb=![];async function _0x5257d5(){const _0x41811d=_0x3ee7d6;if(_0x3cabdb)return;const _0x43c38f=await import(_0x41811d(0x9c1));({IndentationText:_0x154647,Project:_0x4070c1,Node:_0x24552b,SyntaxKind:_0x1d7891}=_0x43c38f,_0x3cabdb=!![]);}var _0x5ca0e3=_0x3ee7d6(0x2f7),_0x1ba036=_0x3ee7d6(0x13c),_0x2e6aa0=_0x55b58b(_0x3ee7d6(0x5d3),_0x3ee7d6(0x918));function _0x102542(_0x3d4b0f){const _0x39d396=_0x3ee7d6,_0x11ff5d=_0x5c42e0(_0x3d4b0f[_0x39d396(0x4e3)]),_0x3e6a27=_0x3d4b0f['kind']==='expo-router'?_0x5c42e0(_0x11ff5d):_0x11ff5d,_0x4bd181=_0x55b58b(_0x3e6a27,_0x2e6aa0);let _0x5b7e5b=_0x2108c5(_0x11ff5d,_0x4bd181);if(_0x135d10!=='/')_0x5b7e5b=_0x5b7e5b[_0x39d396(0x814)](_0x135d10)['join']('/');if(!_0x5b7e5b[_0x39d396(0x887)]('./')&&!_0x5b7e5b['startsWith'](_0x39d396(0x5a2)))_0x5b7e5b='./'+_0x5b7e5b;return _0x5b7e5b;}function _0x55f56d(_0x185648){const _0x3c3068=_0x3ee7d6,_0x698406=_0x102542(_0x185648);return _0x1ba036+'({\x20readTestidConfig:\x20()\x20=>\x20{\x20try\x20{\x20return\x20require(\x22'+_0x698406+_0x3c3068(0x8dd);}async function _0x5368e4(_0x3bf923){try{return await _0x46239d(_0x3bf923,'utf-8'),!![];}catch{return![];}}async function _0x334a7a(_0x34011b){const _0xcb8bb9=_0x3ee7d6,_0x4a452c=_0x55b58b(_0x34011b,_0xcb8bb9(0x44c),_0xcb8bb9(0x8d6));if(await _0x5368e4(_0x4a452c))return{'kind':_0xcb8bb9(0x8a1),'filePath':_0x4a452c};const _0x3724ee=_0x55b58b(_0x34011b,'app',_0xcb8bb9(0x4b1));if(await _0x5368e4(_0x3724ee))return{'kind':_0xcb8bb9(0x8a1),'filePath':_0x3724ee};for(const _0x334f36 of['App.tsx',_0xcb8bb9(0x754)]){const _0x4499d7=_0x55b58b(_0x34011b,_0x334f36);if(await _0x5368e4(_0x4499d7))return{'kind':_0xcb8bb9(0x46b),'filePath':_0x4499d7};}return null;}function _0x42e3d1(_0x2603be){const _0x1573d2=_0x3ee7d6;for(const _0x395043 of _0x2603be['getFunctions']()){if(_0x395043['isDefaultExport']())return _0x395043;}const _0x33dfb3=_0x2603be['getStatements']()['find'](_0x777c0d=>_0x24552b[_0x1573d2(0x3da)](_0x777c0d));if(_0x33dfb3&&_0x24552b['isExportAssignment'](_0x33dfb3)){const _0x621c5c=_0x33dfb3['getExpression']();if(_0x24552b[_0x1573d2(0x9c8)](_0x621c5c)){if('TkFhS'===_0x1573d2(0x9d3)){const _0x112d21=_0x621c5c['getSymbol']();if(_0x112d21){if(_0x1573d2(0x87a)!=='fJkOM'){const _0x63a62c=_0x112d21['getDeclarations']()[0x0];if(_0x63a62c&&_0x24552b[_0x1573d2(0x5ee)](_0x63a62c)){const _0x138451=_0x63a62c[_0x1573d2(0x16c)]();if(_0x138451&&_0x24552b['isArrowFunction'](_0x138451))return _0x138451;if(_0x138451&&_0x24552b[_0x1573d2(0x8d0)](_0x138451))return _0x138451;}}else _0x5f4651['accumulatedWriteKeys']['add'](_0x317cb6['kind']+':'+_0x16a447['key']+':*');}}else _0x1f3035['fallbackText']=_0x4bd3e6[_0x1573d2(0x3ef)];}if(_0x24552b['isArrowFunction'](_0x621c5c))return _0x621c5c;if(_0x24552b[_0x1573d2(0x8d0)](_0x621c5c))return _0x621c5c;}return null;}function _0x5916e0(_0x3f0329){const _0x251006=_0x3ee7d6,_0x3237ef=_0x3f0329['getImportDeclaration']('react');if(!_0x3237ef)return _0x3f0329['addImportDeclaration']({'moduleSpecifier':_0x251006(0x4b9),'namedImports':['useEffect']}),!![];const _0x5517e0=_0x3237ef['getNamedImports']();if(!_0x5517e0['some'](_0x236592=>_0x236592[_0x251006(0x33e)]()===_0x251006(0x5bc)))return _0x3237ef['addNamedImport'](_0x251006(0x5bc)),!![];return![];}function _0x58a326(_0xd47022){const _0x362a42=_0x3ee7d6,_0x3541bd=_0xd47022[_0x362a42(0x128)](_0x5ca0e3);if(!_0x3541bd)return _0xd47022['addImportDeclaration']({'moduleSpecifier':_0x5ca0e3,'namedImports':[_0x1ba036]}),!![];const _0xb954d5=_0x3541bd['getNamedImports']();if(!_0xb954d5['some'](_0x59ebb0=>_0x59ebb0[_0x362a42(0x33e)]()===_0x1ba036))return _0x3541bd[_0x362a42(0x386)](_0x1ba036),!![];return![];}function _0x56a45b(_0x105821){const _0x225e84=_0x3ee7d6,_0x2616ed=_0x105821['getBody']();if(!_0x2616ed||!_0x24552b[_0x225e84(0x9f4)](_0x2616ed))return null;let _0x585f4d=null,_0x28dcad=null;return _0x2616ed['forEachDescendant']((_0x39310b,_0x5f0edc)=>{const _0x3af799=_0x225e84;if(_0x3af799(0x272)!=='tpVPV'){if(_0x28dcad){_0x5f0edc['stop']();return;}if(_0x24552b[_0x3af799(0x435)](_0x39310b)){const _0xcde590=_0x39310b[_0x3af799(0x45d)]();if(_0x24552b['isIdentifier'](_0xcde590)&&_0xcde590[_0x3af799(0x326)]()===_0x1ba036){if(_0x585f4d===null)_0x585f4d=_0x39310b;_0x39310b[_0x3af799(0x6ae)]()[_0x3af799(0x945)]===0x0&&(_0x28dcad=_0x39310b,_0x5f0edc[_0x3af799(0x2bf)]());}}}else _0x2a7172=_0x518780,_0x4c5918=_0x5134c5['now']();}),_0x28dcad??_0x585f4d;}function _0x58aece(_0x2a24f3){return _0x56a45b(_0x2a24f3)!==null;}function _0x23600c(_0x2ce2b4,_0x7ab13a){const _0x24e6f5=_0x3ee7d6;if(_0x2ce2b4['getArguments']()[_0x24e6f5(0x945)]>0x0)return![];const _0x5af205=_0x102542(_0x7ab13a);return _0x2ce2b4['addArgument'](_0x24e6f5(0x8ae)+_0x5af205+_0x24e6f5(0x6b5)),!![];}async function _0x455be0(_0x39e92f){const _0x39b0e0=_0x3ee7d6;await _0x5257d5();let _0x3a96cd;try{const _0x36ad35=new _0x4070c1({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1}});_0x3a96cd=_0x36ad35['addSourceFileAtPath'](_0x39e92f);}catch{return'none';}const _0x587651=_0x42e3d1(_0x3a96cd);if(!_0x587651)return'none';const _0x4dfc9d=_0x56a45b(_0x587651);if(!_0x4dfc9d)return _0x39b0e0(0x8df);return _0x4dfc9d[_0x39b0e0(0x6ae)]()[_0x39b0e0(0x945)]===0x0?_0x39b0e0(0x44a):_0x39b0e0(0x314);}function _0x4c319c(_0xbb0166,_0x528739){const _0xf26045=_0x3ee7d6;if(_0x58aece(_0xbb0166))return![];if(_0x24552b['isArrowFunction'](_0xbb0166)){const _0x59eadb=_0xbb0166['getBody']();if(!_0x24552b['isBlock'](_0x59eadb)){const _0x5dce7c=_0x59eadb['getText']();_0x59eadb[_0xf26045(0x9ac)](_0xf26045(0x9b7)+_0x5dce7c+';\x20}');}}const _0x2c66a=_0xbb0166['getBody']();if(!_0x2c66a||!_0x24552b[_0xf26045(0x9f4)](_0x2c66a))return![];return _0x2c66a[_0xf26045(0x8d8)](0x0,_0xf26045(0x9b0)+_0x55f56d(_0x528739)+_0xf26045(0x5df)),!![];}async function _0x10bb96(_0x506840){const _0x42241d=_0x3ee7d6;await _0x5257d5();const _0x18edae=new _0x4070c1({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1},'manipulationSettings':{'indentationText':_0x154647[_0x42241d(0x806)]}}),_0x46eee0=_0x18edae['addSourceFileAtPath'](_0x506840[_0x42241d(0x4e3)]),_0x3ee5af=_0x42e3d1(_0x46eee0);if(!_0x3ee5af)return{'applied':![],'alreadyPresent':![],'reason':_0x42241d(0x27b)+_0x506840['filePath']+_0x42241d(0x81c)+_0x5ca0e3+'\x22;\x0a\x20\x20useEffect(()\x20=>\x20{\x20'+_0x55f56d(_0x506840)+';\x20},\x20[]);'};const _0x41ce68=_0x56a45b(_0x3ee5af);if(_0x41ce68){if(_0x42241d(0x71a)!==_0x42241d(0x71a))return{'success':![],'apps':[],'error':'simctl\x20listapps\x20failed:\x20'+(_0xf19129[_0x42241d(0x870)]||_0xb9e383['stdout'])['trim']()};else{const _0x3d012c=_0x23600c(_0x41ce68,_0x506840),_0x59af27=_0x58a326(_0x46eee0),_0x215f67=_0x5916e0(_0x46eee0),_0x1ace0a=_0x3d012c||_0x59af27||_0x215f67;return _0x1ace0a&&await _0x3d1d2d(_0x506840['filePath'],_0x46eee0['getFullText'](),_0x42241d(0x29d)),{'applied':_0x1ace0a,'alreadyPresent':!![],'reason':_0x3d012c?_0x42241d(0x8ba):_0x1ace0a?'Already\x20wired\x20—\x20added\x20missing\x20import(s).':'Already\x20wired\x20—\x20no\x20changes\x20needed.'};}}const _0x349b23=_0x4c319c(_0x3ee5af,_0x506840);if(!_0x349b23)return{'applied':![],'alreadyPresent':![],'reason':_0x42241d(0x987)+_0x506840[_0x42241d(0x4e3)]+':\x0a\x20\x20import\x20{\x20installCeraph\x20}\x20from\x20\x22'+_0x5ca0e3+_0x42241d(0x832)+_0x55f56d(_0x506840)+_0x42241d(0x5df)};_0x58a326(_0x46eee0),_0x5916e0(_0x46eee0);const _0x2c93c8=_0x46eee0[_0x42241d(0x4e0)]();return await _0x3d1d2d(_0x506840['filePath'],_0x2c93c8,_0x42241d(0x29d)),{'applied':!![],'alreadyPresent':![]};}async function _0x23e5d8(_0x2a55c3){const _0x109c6f=_0x3ee7d6;try{return await _0x46239d(_0x2a55c3['filePath'],_0x109c6f(0x29d));}catch{return null;}}async function _0x1c1c48(_0x43c5c3,_0x21893){const _0x2f6cbc=_0x3ee7d6;await _0x3d1d2d(_0x43c5c3[_0x2f6cbc(0x4e3)],_0x21893,'utf-8');}import{readFile as _0x53ff62,writeFile as _0x205150,access as _0x36a6d0}from'fs/promises';import{join as _0x11de76}from'path';var _0x4d3d32='ceraph';async function _0x3d4b4a(_0x4dda9f){const _0x131c3f=_0x3ee7d6;try{return await _0x36a6d0(_0x4dda9f),!![];}catch{if('bkzWh'!=='bkzWh')_0x53cf2e[_0x131c3f(0x6f8)]();else return![];}}async function _0x591822(_0x4d42e1,_0x40053f={}){const _0x5971d5=_0x3ee7d6,_0xf5f31f=_0x40053f[_0x5971d5(0x4a1)]??_0x3d4b4a,_0x289d7c=_0x40053f[_0x5971d5(0x18d)]??(_0x3e2a55=>_0x53ff62(_0x3e2a55,_0x5971d5(0x29d))),_0x56039d=_0x40053f[_0x5971d5(0x352)]??((_0x543475,_0x34ee07)=>_0x205150(_0x543475,_0x34ee07,'utf-8')),_0x56dd84=_0x11de76(_0x4d42e1,_0x5971d5(0x293)),_0x12a5ff=_0x11de76(_0x4d42e1,_0x5971d5(0x45e)),_0x584d0a=_0x11de76(_0x4d42e1,'app.config.ts'),_0x1b18ec=_0x11de76(_0x4d42e1,_0x5971d5(0x5c2)),_0x2669bb=_0x11de76(_0x4d42e1,_0x5971d5(0x57f)),_0x1d4a62=await _0xf5f31f(_0x12a5ff),_0x245af3=await _0xf5f31f(_0x584d0a);if(_0x1d4a62||_0x245af3)return{'kind':_0x5971d5(0x40e),'path':_0x245af3?_0x584d0a:_0x12a5ff};if(await _0xf5f31f(_0x56dd84)){const _0x12d2b2=await _0x289d7c(_0x56dd84),_0x5932c0=_0x249daa(_0x12d2b2);if(!_0x5932c0['ok'])return{'kind':_0x5971d5(0x40e),'path':_0x56dd84};const _0x2f7444=_0x3a9144(_0x5932c0['parsed'],_0x4d3d32);if(_0x2f7444['action']===_0x5971d5(0x37f))return{'kind':'expo-json-already-registered','scheme':_0x2f7444[_0x5971d5(0x389)],'path':_0x56dd84};return await _0x56039d(_0x56dd84,_0x3db7e5(_0x5932c0['parsed'],_0x12d2b2)),{'kind':'expo-json-added','previousScheme':_0x2f7444['previousScheme'],'nextScheme':_0x2f7444[_0x5971d5(0x42b)],'path':_0x56dd84};}if(await _0xf5f31f(_0x1b18ec)||await _0xf5f31f(_0x2669bb)){if('eCNYc'!==_0x5971d5(0x52a)){const _0x4a1982=_0x5429ee['toUpperCase']();return _0x4a1982==='POST'||_0x4a1982===_0x5971d5(0x3cf)||_0x4a1982===_0x5971d5(0x198)||_0x4a1982==='DELETE';}else return{'kind':_0x5971d5(0x886)};}return{'kind':_0x5971d5(0x115)};}function _0x249daa(_0xd529b5){const _0x1d12f3=_0x3ee7d6;try{if('pgJHA'===_0x1d12f3(0x965)){const _0xb0c6ec=JSON[_0x1d12f3(0x229)](_0xd529b5);if(!_0xb0c6ec||typeof _0xb0c6ec!==_0x1d12f3(0x5ab)||Array['isArray'](_0xb0c6ec))return{'ok':![],'parsed':{}};return{'ok':!![],'parsed':_0xb0c6ec};}else return{'success':![],'error':_0x4582e1 instanceof _0x32ba78?_0x19bd50['message']:_0x1d12f3(0x262)};}catch{return{'ok':![],'parsed':{}};}}function _0x3db7e5(_0x46639b,_0x48eb93){const _0x3becd7=_0x48eb93['match'](/\n(\s+)"/),_0x5c96f8=_0x3becd7?.[0x1]??'\x20\x20',_0x5c99bb=_0x48eb93['endsWith']('\x0a'),_0x1e7c6f=JSON['stringify'](_0x46639b,null,_0x5c96f8);return _0x5c99bb?_0x1e7c6f+'\x0a':_0x1e7c6f;}function _0x3a9144(_0x5bd023,_0x244114){const _0x42bab9=_0x3ee7d6;(!_0x5bd023['expo']||typeof _0x5bd023[_0x42bab9(0x64d)]!==_0x42bab9(0x5ab))&&(_0x5bd023[_0x42bab9(0x64d)]={});const _0x7396ed=_0x5bd023['expo'],_0x1e7d8b=_0x7396ed['scheme'];if(typeof _0x1e7d8b==='string'&&_0x1e7d8b===_0x244114)return{'action':'already','scheme':_0x1e7d8b,'previousScheme':_0x1e7d8b,'nextScheme':[_0x1e7d8b]};if(Array[_0x42bab9(0x246)](_0x1e7d8b)&&_0x1e7d8b['includes'](_0x244114))return{'action':'already','scheme':_0x1e7d8b,'previousScheme':_0x1e7d8b,'nextScheme':[..._0x1e7d8b]};if(_0x1e7d8b===void 0x0)return _0x7396ed['scheme']=_0x244114,{'action':'added','scheme':_0x244114,'previousScheme':void 0x0,'nextScheme':[_0x244114]};if(typeof _0x1e7d8b==='string'){const _0x1661a3=[_0x1e7d8b,_0x244114];return _0x7396ed['scheme']=_0x1661a3,{'action':_0x42bab9(0x1dd),'scheme':_0x1661a3,'previousScheme':_0x1e7d8b,'nextScheme':_0x1661a3};}if(Array['isArray'](_0x1e7d8b)){const _0xd6add1=[..._0x1e7d8b,_0x244114];return _0x7396ed['scheme']=_0xd6add1,{'action':_0x42bab9(0x1dd),'scheme':_0xd6add1,'previousScheme':_0x1e7d8b,'nextScheme':_0xd6add1};}return _0x7396ed['scheme']=_0x244114,{'action':_0x42bab9(0x1dd),'scheme':_0x244114,'previousScheme':_0x1e7d8b,'nextScheme':[_0x244114]};}function _0x4e5ff2(){return'\x0aAdd\x20Ceraph\x27s\x20custom\x20URL\x20scheme\x20so\x20deep\x20links\x20(ceraph://reload,\x0aceraph://reset,\x20ceraph://storage)\x20reach\x20the\x20running\x20app.\x0a\x0aiOS\x20—\x20edit\x20ios/<YourApp>/Info.plist:\x0a\x0a\x20\x20<key>CFBundleURLTypes</key>\x0a\x20\x20<array>\x0a\x20\x20\x20\x20<dict>\x0a\x20\x20\x20\x20\x20\x20<key>CFBundleURLName</key>\x0a\x20\x20\x20\x20\x20\x20<string>com.yourcompany.yourapp</string>\x0a\x20\x20\x20\x20\x20\x20<key>CFBundleURLSchemes</key>\x0a\x20\x20\x20\x20\x20\x20<array>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<string>ceraph</string>\x0a\x20\x20\x20\x20\x20\x20</array>\x0a\x20\x20\x20\x20</dict>\x0a\x20\x20</array>\x0a\x0aAndroid\x20—\x20edit\x20android/app/src/main/AndroidManifest.xml\x20inside\x20the\x0aMainActivity\x20<activity>\x20block:\x0a\x0a\x20\x20<intent-filter>\x0a\x20\x20\x20\x20<action\x20android:name=\x22android.intent.action.VIEW\x22\x20/>\x0a\x20\x20\x20\x20<category\x20android:name=\x22android.intent.category.DEFAULT\x22\x20/>\x0a\x20\x20\x20\x20<category\x20android:name=\x22android.intent.category.BROWSABLE\x22\x20/>\x0a\x20\x20\x20\x20<data\x20android:scheme=\x22ceraph\x22\x20/>\x0a\x20\x20</intent-filter>\x0a\x0aThen\x20rebuild\x20the\x20native\x20app\x20(pod\x20install\x20+\x20xcodebuild\x20on\x20iOS,\x20./gradlew\x0aassembleDebug\x20on\x20Android).\x20Existing\x20JS-only\x20reloads\x20do\x20not\x20pick\x20up\x0anative\x20config\x20changes.\x0a'['trimStart']();}function _0x331217(_0x172cdc){return('\x0aYour\x20project\x20uses\x20'+_0x172cdc+'\x20(dynamic\x20Expo\x20config)\x20—\x20we\x20can\x27t\x0asafely\x20auto-edit\x20a\x20JS/TS\x20file.\x20Add\x20Ceraph\x27s\x20URL\x20scheme\x20manually:\x0a\x0a\x20\x20export\x20default\x20({\x20config\x20})\x20=>\x20({\x0a\x20\x20\x20\x20...config,\x0a\x20\x20\x20\x20scheme:\x20Array.isArray(config.scheme)\x0a\x20\x20\x20\x20\x20\x20?\x20[...config.scheme,\x20\x22ceraph\x22]\x0a\x20\x20\x20\x20\x20\x20:\x20config.scheme\x0a\x20\x20\x20\x20\x20\x20\x20\x20?\x20[config.scheme,\x20\x22ceraph\x22]\x0a\x20\x20\x20\x20\x20\x20\x20\x20:\x20\x22ceraph\x22,\x0a\x20\x20\x20\x20//\x20...\x20rest\x20of\x20your\x20expo\x20config\x0a\x20\x20});\x0a\x0aThen\x20re-run\x20`expo\x20prebuild\x20--clean`\x20if\x20you\x27ve\x20ejected,\x20or\x20just\x0arestart\x20the\x20dev\x20client.\x0a')['trimStart']();}import{readFile as _0x4b0231,readdir as _0x3fa5b1,stat as _0x17eb8b}from'fs/promises';import{join as _0x2e4c09,relative as _0xecbd44,sep as _0x351791}from'path';async function _0x21fb45(_0x49cca0){try{return await _0x17eb8b(_0x49cca0),!![];}catch{return![];}}async function _0x5d8f76(_0x1d749a){const _0x5e688a=_0x3ee7d6;try{const _0x13af99=await _0x4b0231(_0x1d749a,'utf-8'),_0x541c18=JSON['parse'](_0x13af99);if(!_0x541c18||typeof _0x541c18!==_0x5e688a(0x5ab))return null;return _0x541c18;}catch{return null;}}function _0x870292(_0x4461c6){const _0x2b9cc8=_0x3ee7d6;if(!_0x4461c6)return{'expo':![],'rn':![]};const _0x36446e=_0x4461c6['dependencies']??{},_0x3be3ce=_0x4461c6[_0x2b9cc8(0x619)]??{},_0x27b9a7={..._0x36446e,..._0x3be3ce};return{'expo':Boolean(_0x27b9a7[_0x2b9cc8(0x64d)]||_0x27b9a7[_0x2b9cc8(0x8a1)]),'rn':Boolean(_0x27b9a7[_0x2b9cc8(0x665)])};}async function _0x23df6f(_0xdbe9d4){const _0x431104=_0x3ee7d6,_0x1982b9=_0x2e4c09(_0xdbe9d4,_0x431104(0x995));let _0x14b61e;try{if(_0x431104(0x524)===_0x431104(0x524))_0x14b61e=await _0x4b0231(_0x1982b9,'utf-8');else{_0x30c54e+=0x1;const _0x1f0985=_0x5bdb6f['random']()['toString'](0x24)[_0x431104(0x63b)](0x2,0xa);return'sack-'+_0x469c98['now']()['toString'](0x24)+'-'+_0x22fb36['toString'](0x24)+'-'+_0x1f0985;}}catch{return null;}return _0x176dc0(_0x14b61e);}function _0x176dc0(_0x3333c7){const _0x53619c=_0x3ee7d6,_0x36fd0d=[];let _0xedff64=![];for(const _0x5281d3 of _0x3333c7['split'](/\r?\n/)){const _0x5493b3=_0x5281d3['replace'](/#.*$/,'')['trimEnd']();if(_0x5493b3['length']===0x0)continue;if(/^packages\s*:\s*$/['test'](_0x5493b3)){_0xedff64=!![];continue;}if(!_0x5281d3['startsWith']('\x20')&&!_0x5281d3[_0x53619c(0x887)]('-')&&_0x5493b3[_0x53619c(0x3f0)](':')){_0xedff64=![];continue;}if(!_0xedff64)continue;const _0x4dcb1a=_0x5493b3['match'](/^\s*-\s*['"]?([^'"]+?)['"]?\s*$/);if(_0x4dcb1a&&_0x4dcb1a[0x1])_0x36fd0d['push'](_0x4dcb1a[0x1]);}return _0x36fd0d;}async function _0x483d28(_0x6cb08a,_0x1b2103){const _0x20a962=_0x3ee7d6,_0x51a6cb=_0x1b2103['replace'](/^\.\//,'')[_0x20a962(0x27d)](/\/+$/,'');if(_0x51a6cb['length']===0x0)return[];if(!_0x51a6cb[_0x20a962(0x83f)]('*')){const _0x431bc0=_0x2e4c09(_0x6cb08a,_0x51a6cb),_0x137f2b=await _0x21fb45(_0x431bc0);return _0x137f2b?[_0x431bc0]:[];}const _0x475292=_0x51a6cb['match'](/^([^*]+)\/\*$/);if(!_0x475292||!_0x475292[0x1])return[];const _0x59f4d3=_0x475292[0x1]['replace'](/\/+$/,''),_0x228557=_0x2e4c09(_0x6cb08a,_0x59f4d3);let _0xe018eb;try{_0xe018eb=await _0x3fa5b1(_0x228557,{'withFileTypes':!![]});}catch{return[];}const _0x489f28=[];for(const _0x27087e of _0xe018eb){if(!_0x27087e[_0x20a962(0x42a)]())continue;if(_0x27087e[_0x20a962(0x4d1)]['startsWith']('.'))continue;_0x489f28['push'](_0x2e4c09(_0x228557,_0x27087e['name']));}return _0x489f28;}async function _0x155983(_0x13bb8d){const _0x2fad1c=_0x3ee7d6,_0x3fd281=new Set();let _0x5214ac=![];const _0x3f0a0a=await _0x5d8f76(_0x2e4c09(_0x13bb8d,'package.json'));if(_0x3f0a0a?.['workspaces']){_0x5214ac=!![];if(Array[_0x2fad1c(0x246)](_0x3f0a0a['workspaces'])){for(const _0x5d6508 of _0x3f0a0a['workspaces'])_0x3fd281['add'](_0x5d6508);}else{if(_0x3f0a0a[_0x2fad1c(0x2a4)]&&typeof _0x3f0a0a['workspaces']===_0x2fad1c(0x5ab)&&Array['isArray'](_0x3f0a0a[_0x2fad1c(0x2a4)][_0x2fad1c(0x4c7)]))for(const _0x48e959 of _0x3f0a0a['workspaces']['packages']){'HkHXu'!==_0x2fad1c(0x202)?this[_0x2fad1c(0x2f6)]=null:_0x3fd281['add'](_0x48e959);}}}const _0x285095=await _0x23df6f(_0x13bb8d);if(_0x285095!=null){_0x5214ac=!![];for(const _0x469be6 of _0x285095)_0x3fd281['add'](_0x469be6);}const _0x4fdeaa=await _0x5d8f76(_0x2e4c09(_0x13bb8d,_0x2fad1c(0x784)));if(_0x4fdeaa){const _0x3df7d9=_0x4fdeaa['packages'];if(Array[_0x2fad1c(0x246)](_0x3df7d9)){_0x5214ac=!![];for(const _0x9402ef of _0x3df7d9){if(typeof _0x9402ef==='string')_0x3fd281[_0x2fad1c(0x5c1)](_0x9402ef);}}else await _0x21fb45(_0x2e4c09(_0x13bb8d,'lerna.json'))&&(_0x5214ac=!![]);}if(!_0x5214ac)return null;return Array[_0x2fad1c(0x70f)](_0x3fd281);}async function _0x1dcc30(_0x2d392c){const _0x439eb8=_0x3ee7d6,_0x16a215=await _0x5d8f76(_0x2e4c09(_0x2d392c,_0x439eb8(0x833))),_0x4f8a0b=_0x870292(_0x16a215);if(_0x4f8a0b[_0x439eb8(0x64d)]||_0x4f8a0b['rn']){if('VQmeY'==='VQmeY')return{'kind':'none','matches':[],'rootIsRnApp':!![],'isMonorepo':await _0x155983(_0x2d392c)!=null};else _0x1171fa(_0x151f69(_0x439eb8(0x3ac)));}const _0x3517f4=await _0x155983(_0x2d392c);if(_0x3517f4==null)return{'kind':_0x439eb8(0x8df),'matches':[],'rootIsRnApp':![],'isMonorepo':![]};const _0x22621f=new Set();for(const _0x272be6 of _0x3517f4){for(const _0x2879eb of await _0x483d28(_0x2d392c,_0x272be6)){_0x22621f['add'](_0x2879eb);}}const _0x218c83=[];for(const _0x23ca4b of _0x22621f){const _0x38eac0=_0x2e4c09(_0x23ca4b,_0x439eb8(0x833)),_0x2554fb=await _0x5d8f76(_0x38eac0),_0x2e2bb6=_0x870292(_0x2554fb),_0xd3193a=await _0x21fb45(_0x2e4c09(_0x23ca4b,_0x439eb8(0x293))),_0x110a74=[];if(_0x2e2bb6['expo'])_0x110a74[_0x439eb8(0x496)]('expo');if(_0x2e2bb6['rn'])_0x110a74[_0x439eb8(0x496)]('react-native');if(_0xd3193a)_0x110a74[_0x439eb8(0x496)](_0x439eb8(0x293));if(_0x110a74[_0x439eb8(0x945)]===0x0)continue;const _0x16fc7e=_0xecbd44(_0x2d392c,_0x23ca4b)[_0x439eb8(0x814)](_0x351791)[_0x439eb8(0x221)]('/');_0x218c83[_0x439eb8(0x496)]({'absPath':_0x23ca4b,'relPath':_0x16fc7e['length']>0x0?_0x16fc7e:'.','signals':_0x110a74});}_0x218c83[_0x439eb8(0x837)]((_0x11294e,_0x395185)=>_0x11294e[_0x439eb8(0x260)]<_0x395185[_0x439eb8(0x260)]?-0x1:_0x11294e[_0x439eb8(0x260)]>_0x395185[_0x439eb8(0x260)]?0x1:0x0);const _0x37f38a=_0x218c83['length']===0x0?_0x439eb8(0x8df):_0x218c83['length']===0x1?_0x439eb8(0x13e):'multi';return{'kind':_0x37f38a,'matches':_0x218c83,'rootIsRnApp':![],'isMonorepo':!![]};}async function _0x39b846(){return _0x9b2b8c();}async function _0x5b7020(_0x312f81,_0x67d6fe=_0x312f81){const _0x536d4d=_0x3ee7d6,[_0x3e47fa,_0x549e40,_0x3af06f,_0x3b5868,_0x2bc6fd]=await Promise['all']([_0x13b218(_0x312f81),_0x39b846(),_0x310de9(_0x312f81),_0x3fb3fb(_0x312f81),_0x334a7a(_0x312f81)]),_0x295db7=_0x2bc6fd?await _0x455be0(_0x2bc6fd['filePath']):null,_0x499618=_0x295db7===null?null:_0x295db7==='seamed',_0x33836b=_0x3af06f['kind']===_0x536d4d(0x49a)?!![]:_0x3af06f[_0x536d4d(0x3ea)]===_0x536d4d(0x4f3)?![]:null,_0x5cb28b=_0x3af06f[_0x536d4d(0x3ea)]===_0x536d4d(0x4f3)||_0x3af06f['kind']==='expo-json-already-registered'?_0x536d4d(0x750):_0x3af06f[_0x536d4d(0x3ea)]==='expo-config-needs-manual'?_0x536d4d(0x63a):_0x3af06f[_0x536d4d(0x3ea)]==='bare-rn-needs-manual'?'bare-rn':_0x536d4d(0x8df);return{'workingDir':_0x312f81,'packageInstalled':_0x3e47fa,'authenticated':_0x549e40!=null,'schemeRegistered':_0x33836b,'projectKind':_0x5cb28b,'cameraScanResults':_0x3b5868[_0x536d4d(0x87b)][_0x536d4d(0x986)](_0x466dfd=>({'relPath':_0x466dfd['relPath'],'line':_0x466dfd['line'],'alreadyHasImageKey':_0x466dfd['alreadyHasImageKey'],'suggestedKey':_0x466dfd['suggestedKey']})),'bootInjected':_0x499618,'bootSeamState':_0x295db7,'bootTarget':_0x2bc6fd,'mcpClientsPresent':{'claudeCode':await _0x3035e8(_0x23bd26(_0x67d6fe,'.mcp.json')),'cursor':await _0x3035e8(_0x23bd26(_0x67d6fe,'.cursor',_0x536d4d(0x5b6))),'codex':await _0x3035e8(_0x23bd26(_0x67d6fe,_0x536d4d(0x905),_0x536d4d(0x97a))),'vscode':await _0x3035e8(_0x23bd26(_0x67d6fe,_0x536d4d(0x390),_0x536d4d(0x5b6)))}};}async function _0x310de9(_0x5c9a1f){return _0x591822(_0x5c9a1f,{'writeFile':async()=>void 0x0});}async function _0xd9bac1(_0x422c13={}){const _0x2df150=_0x3ee7d6;try{const _0x2a72e6=await _0x4ca948({'signal':_0x422c13[_0x2df150(0x294)],'token':_0x422c13[_0x2df150(0x844)],'intent':_0x422c13['intent']});return _0x2a72e6['email']?{'status':'ok','email':_0x2a72e6[_0x2df150(0x89c)]}:{'status':'ok'};}catch(_0x3e0d55){if(_0x3e0d55 instanceof Error&&(_0x3e0d55[_0x2df150(0x4d1)]==='AbortError'||typeof DOMException!=='undefined'&&_0x3e0d55 instanceof DOMException))return{'status':'aborted'};const _0x36d82e=_0x3e0d55 instanceof Error?_0x3e0d55['message']:String(_0x3e0d55);return{'status':'error','error':_0x36d82e};}}async function _0x574a8e(_0xd5573e){const _0x480a41=_0x3ee7d6,_0x9b0a6b=await _0x3fb3fb(_0xd5573e),_0x393d64=[],_0xb5fcae=new Map();for(const _0x31c851 of _0x9b0a6b['edits']){let _0x3cc7a9=_0xb5fcae['get'](_0x31c851[_0x480a41(0x4e3)]);_0x3cc7a9===void 0x0&&(_0x3cc7a9=await _0x23d6c8(_0x31c851[_0x480a41(0x4e3)],'utf-8')[_0x480a41(0x4ba)](()=>''),_0xb5fcae[_0x480a41(0x3b6)](_0x31c851['filePath'],_0x3cc7a9)),_0x393d64[_0x480a41(0x496)]({'filePath':_0x31c851['filePath'],'relPath':_0x31c851['relPath'],'line':_0x31c851['line'],'suggestedKey':_0x31c851[_0x480a41(0x78a)],'alreadyHasImageKey':_0x31c851[_0x480a41(0x16d)],'surroundingCode':_0x53192a(_0x3cc7a9,_0x31c851['line'],0xf)});}return{'usages':_0x393d64,'filesScanned':_0x9b0a6b['filesScanned']};}function _0x53192a(_0x42120e,_0x58c0cc,_0x2d6e27){const _0x34e273=_0x3ee7d6,_0x30b979=_0x42120e[_0x34e273(0x814)](/\r?\n/),_0x52d208=Math[_0x34e273(0x4da)](0x0,_0x58c0cc-0x1-_0x2d6e27),_0x401473=Math[_0x34e273(0x71d)](_0x30b979[_0x34e273(0x945)],_0x58c0cc-0x1+_0x2d6e27+0x1);return _0x30b979[_0x34e273(0x63b)](_0x52d208,_0x401473)[_0x34e273(0x221)]('\x0a');}async function _0x5c99ef(_0x15400d,_0x3179f2){const _0x2e1141=_0x3ee7d6,_0x599e84=await _0x3fb3fb(_0x15400d),_0x379ca8=_0x599e84['edits']['find'](_0x50bfe8=>_0x50bfe8[_0x2e1141(0x4e3)]===_0x3179f2[_0x2e1141(0x4e3)]&&_0x50bfe8[_0x2e1141(0xf5)]===_0x3179f2['line']);if(!_0x379ca8){const _0x54fa07=await _0x23d6c8(_0x3179f2[_0x2e1141(0x4e3)],'utf-8')['catch'](()=>null);if(_0x54fa07==null)return{'success':![],'reason':_0x2e1141(0x99a)+_0x3179f2[_0x2e1141(0x4e3)]};if(_0x54fa07['includes'](_0x2e1141(0x698))){const _0x308877=await _0x54344b(_0x3179f2[_0x2e1141(0x4e3)],_0x3179f2['line'],_0x3179f2['imageKey']);if(_0x308877[_0x2e1141(0x903)]){const _0x595834=await _0x23d6c8(_0x3179f2[_0x2e1141(0x4e3)],'utf-8');return{'success':!![],'newContent':_0x595834};}if(_0x308877['reason']===_0x2e1141(0x525))return{'success':!![],'already':!![],'newContent':_0x54fa07};return{'success':![],'reason':_0x308877[_0x2e1141(0x78c)]??_0x2e1141(0x3c3)+_0x3179f2[_0x2e1141(0x4e3)]+':'+_0x3179f2[_0x2e1141(0xf5)]};}return{'success':![],'reason':_0x2e1141(0x928)+_0x3179f2['filePath']+':'+_0x3179f2['line']};}const _0x1a2f2f={'filePath':_0x379ca8['filePath'],'relPath':_0x379ca8['relPath'],'line':_0x379ca8['line'],'suggestedKey':_0x3179f2[_0x2e1141(0x203)],'alreadyHasImageKey':_0x379ca8['alreadyHasImageKey']};await _0x43bab1(_0x15400d,[_0x1a2f2f]);const _0x3c8d0f=await _0x23d6c8(_0x3179f2[_0x2e1141(0x4e3)],_0x2e1141(0x29d));return{'success':!![],'newContent':_0x3c8d0f};}async function _0x1ed8ab(_0x41e353){const _0x2e1f03=await _0x24193a(_0x41e353),_0x42cc69=await _0x334a7a(_0x41e353);if(!_0x42cc69)return{'applied':![],'reason':'Could\x20not\x20find\x20app/_layout.tsx\x20or\x20App.tsx.\x20Add\x20this\x20to\x20your\x20root\x20component\x20manually\x20(the\x20require\x20path\x20is\x20relative\x20to\x20that\x20file\x20—\x20`./.ceraph/testid-config.json`\x20from\x20a\x20root\x20App.tsx,\x20`../.ceraph/testid-config.json`\x20from\x20app/_layout.tsx):\x0a\x20\x20useEffect(()\x20=>\x20{\x20installCeraph({\x20readTestidConfig:\x20()\x20=>\x20{\x20try\x20{\x20return\x20require(\x22./.ceraph/testid-config.json\x22);\x20}\x20catch\x20{\x20return\x20null;\x20}\x20}\x20});\x20},\x20[]);','babelConfig':_0x2e1f03};const _0x1e8a51=await _0x10bb96(_0x42cc69);return{'applied':_0x1e8a51['applied'],'filePath':_0x42cc69['filePath'],'already':_0x1e8a51['alreadyPresent'],'reason':_0x1e8a51['reason'],'babelConfig':_0x2e1f03};}async function _0x46b911(_0x50fc3e){const _0x3d9c45=_0x3ee7d6,_0xdc6d4c=await _0x591822(_0x50fc3e);let _0x1106bd;if(_0xdc6d4c['kind']===_0x3d9c45(0x40e))_0x1106bd=_0x331217(_0xdc6d4c['path']);else _0xdc6d4c['kind']===_0x3d9c45(0x886)&&(_0x1106bd=_0x4e5ff2());return{'action':_0xdc6d4c,'instructions':_0x1106bd};}async function _0x5c8c10(_0x580271){const _0x299e62=_0x3ee7d6,_0x1177df=[],_0x2bc681=[],_0x4f7155=[],_0x249710=[{'name':_0x299e62(0x5f8),'path':_0x23bd26(_0x580271,'.mcp.json')},{'name':_0x299e62(0x55c),'path':_0x23bd26(_0x580271,'.cursor','mcp.json')},{'name':'Codex','path':_0x23bd26(_0x580271,_0x299e62(0x905),_0x299e62(0x97a)),'toml':!![]},{'name':'VS\x20Code','path':_0x23bd26(_0x580271,_0x299e62(0x390),_0x299e62(0x5b6))}];for(const _0x31f7a6 of _0x249710){const _0x84b1f1=_0x31f7a6[_0x299e62(0x498)]?await _0x5b188f(_0x31f7a6['path']):await _0x293627(_0x31f7a6[_0x299e62(0x4ff)]);if(_0x84b1f1['status']==='written')_0x1177df['push'](_0x31f7a6[_0x299e62(0x4d1)]);else{if(_0x84b1f1['status']==='skipped')_0x2bc681['push'](_0x31f7a6['name']);else _0x4f7155['push']({'name':_0x31f7a6['name'],'reason':_0x84b1f1['reason']});}}const _0xfbcf41=await _0x296c84(_0x580271);return{'written':_0x1177df,'skipped':_0x2bc681,'preserved':_0x4f7155,'claudePreApproval':_0xfbcf41};}async function _0x293627(_0x28c0ef){const _0x47c61d=_0x3ee7d6,_0x4cef44=await _0x4260f1(_0x28c0ef);if(_0x4cef44['kind']===_0x47c61d(0x445))return{'status':_0x47c61d(0x614),'reason':'existing\x20config\x20at\x20'+_0x28c0ef+_0x47c61d(0x93f)};const _0x1b7fbd=_0x4cef44['kind']==='ok'?_0x4cef44[_0x47c61d(0x84f)]:{};if(_0x4cef44['kind']==='ok'&&!_0x2c73d7(_0x1b7fbd))return{'status':'preserved','reason':_0x47c61d(0x99d)+_0x28c0ef+_0x47c61d(0x7fb)+(Array[_0x47c61d(0x246)](_0x1b7fbd)?'array':typeof _0x1b7fbd)+_0x47c61d(0x394)};const _0x3401fe=_0x2c73d7(_0x1b7fbd)?_0x1b7fbd:{},_0x1b783a=_0x3401fe['mcpServers'];if(_0x1b783a!==void 0x0&&!_0x2c73d7(_0x1b783a))return{'status':_0x47c61d(0x614),'reason':_0x47c61d(0x85b)+_0x28c0ef+_0x47c61d(0x7fb)+(Array[_0x47c61d(0x246)](_0x1b783a)?_0x47c61d(0x27a):typeof _0x1b783a)+')\x20—\x20preserved'};const _0x305089=_0x2c73d7(_0x1b783a)?_0x1b783a:{};let _0x16d0b5=![];for(const _0x309df2 of _0x3a86ae){_0x309df2 in _0x305089&&(delete _0x305089[_0x309df2],_0x16d0b5=!![]);}const _0x8d9065=_0x4f2d22(),_0x2f6efc=_0x305089['react-native-mcp'];if(_0x33745c(_0x2f6efc,_0x8d9065)&&!_0x16d0b5)return{'status':_0x47c61d(0x797)};const _0x80d07c=_0x2c73d7(_0x2f6efc)?{..._0x2f6efc}:{};return _0x305089[_0x47c61d(0x954)]={..._0x80d07c,..._0x8d9065},_0x3401fe['mcpServers']=_0x305089,await _0x59402e(_0x23bd26(_0x28c0ef,'..'),{'recursive':!![]}),await _0x4b8510(_0x28c0ef,JSON[_0x47c61d(0x2c1)](_0x3401fe,null,0x2)+'\x0a'),{'status':'written'};}async function _0x5b188f(_0x3d04f3){const _0x2fb0fb=_0x3ee7d6;let _0x311fb4='';try{_0x311fb4=await _0x23d6c8(_0x3d04f3,'utf-8');}catch{}const _0x3a8d8c=new Set(_0x3a86ae[_0x2fb0fb(0x986)](_0x397715=>'mcp_servers.'+_0x397715)),_0x33fee3=_0x2d6e24(_0x311fb4,_0x3a8d8c);_0x311fb4=_0x33fee3['next'];const _0x2ed980=_0x33fee3[_0x2fb0fb(0x940)]['length']>0x0,_0x96075a=_0x2c2188(_0x311fb4);if(_0x96075a['sectionPresent']&&_0x96075a['alreadyCurrent']&&!_0x2ed980)return{'status':_0x2fb0fb(0x797)};if(_0x96075a['replaced'])_0x311fb4=_0x96075a['next'];else{if(_0x96075a[_0x2fb0fb(0x868)]&&!_0x96075a[_0x2fb0fb(0x829)]){const _0x43cf8c=_0x2d6e24(_0x311fb4,new Set(['mcp_servers.react-native-mcp']));_0x311fb4=_0x43cf8c['next']+_0x11b004();}else!_0x96075a[_0x2fb0fb(0x868)]?_0x311fb4=_0x311fb4+_0x11b004():_0x311fb4=_0x96075a['next'];}return await _0x59402e(_0x23bd26(_0x3d04f3,'..'),{'recursive':!![]}),await _0x4b8510(_0x3d04f3,_0x311fb4),{'status':'written'};}async function _0x254ce6(_0x31448d){const _0x4e2173=_0x3ee7d6,_0x3fbc1b=await _0x1dcc30(_0x31448d);return{'isMonorepo':_0x3fbc1b[_0x4e2173(0x810)],'rootIsRnApp':_0x3fbc1b[_0x4e2173(0x943)],'matches':_0x3fbc1b['matches']};}async function _0x3035e8(_0x5cfed7){const _0x378719=_0x3ee7d6;try{return await _0x36f2df(_0x5cfed7),!![];}catch{return'YzzJd'==='YzzJd'?![]:(delete _0x19442c[_0x378719(0x389)],{'changed':!![],'previousScheme':_0x341bd7,'nextScheme':void 0x0});}}import{readFile as _0x12da12,writeFile as _0x17dce6,mkdir as _0x3349f2,access as _0x444aad,chmod as _0xade249}from'fs/promises';import{join as _0x785e86}from'path';import{spawn as _0xff9ee3}from'child_process';import{join as _0x395f3e}from'path';import{createInterface as _0x54e6d4}from'readline';function _0x5f0acb(_0x39d84b){const _0x4fcd65=_0x3ee7d6;if(_0x39d84b[_0x4fcd65(0x1c1)]!==void 0x0)return _0x39d84b[_0x4fcd65(0x1c1)];if(process.env.CERAPH_NON_INTERACTIVE==='1')return!![];return!process[_0x4fcd65(0x21a)][_0x4fcd65(0x97d)];}function _0x4fda80(_0x2b5d2c){return new Promise(_0x2c3daa=>{const _0x576c48=_0x4a5a;if('fudOw'!==_0x576c48(0x5b0)){const _0x31ec52=_0x54e6d4({'input':process[_0x576c48(0x21a)],'output':process['stdout']});_0x31ec52['question'](_0x2b5d2c,_0x1db5cd=>{_0x31ec52['close'](),_0x2c3daa(_0x1db5cd);});}else return{'ok':!![],'severity':_0x576c48(0x9bd),'message':_0x576c48(0x129)};});}async function _0x9994ba(_0x4e226d,_0x3afaf4={}){const _0x2a87d2=_0x3ee7d6,_0x4aafc2=_0x3afaf4[_0x2a87d2(0x47e)]??!![];if(_0x5f0acb(_0x3afaf4))return _0x4aafc2;const _0x2b95c9=_0x3afaf4['ask']??_0x4fda80,_0x52b591=_0x4aafc2?_0x2a87d2(0x62f):_0x2a87d2(0x25a),_0x42d494=(await _0x2b95c9(_0x4e226d+_0x52b591))[_0x2a87d2(0x5da)]()[_0x2a87d2(0x17e)]();if(_0x42d494[_0x2a87d2(0x945)]===0x0)return _0x4aafc2;return _0x42d494==='y'||_0x42d494===_0x2a87d2(0x83c);}function _0x33a679(_0x220efe,_0x5b9afc={}){const _0x51d387=_0x5b9afc['write']??(_0x5cd60c=>process['stdout']['write'](_0x5cd60c));_0x51d387(_0x220efe);}function _0x398eed(_0x1fd72c,_0x1002de){const _0x22b1e8=_0x3ee7d6,_0x5dbb6a=_0x1002de??_0x1fd72c;if(process[_0x22b1e8(0x91a)]['isTTY']!==!![]||process[_0x22b1e8(0x870)]['isTTY']!==!![])return _0x5dbb6a;return _0x22b1e8(0x635)+_0x1fd72c+'\x07'+_0x5dbb6a+_0x22b1e8(0x84a);}async function _0x40f7ac(_0x423743,_0x67046,_0x2f7319={}){const _0x23afdc=_0x3ee7d6;if(_0x67046['length']===0x0)return null;if(_0x5f0acb(_0x2f7319))return 0x0;const _0x1a90f1=_0x2f7319['ask']??_0x4fda80,_0x49e453=[_0x423743];_0x67046['forEach']((_0x432b62,_0x4f910a)=>{_0x49e453['push']('\x20\x20'+(_0x4f910a+0x1)+'.\x20'+_0x432b62);}),_0x49e453['push']('');const _0x2a3f43=_0x49e453[_0x23afdc(0x221)]('\x0a')+('Select\x20[1-'+_0x67046[_0x23afdc(0x945)]+_0x23afdc(0x9d4)),_0x3d99fd=(await _0x1a90f1(_0x2a3f43))['trim']();if(_0x3d99fd['length']===0x0)return 0x0;const _0x4b670a=Number['parseInt'](_0x3d99fd,0xa)-0x1;if(Number['isNaN'](_0x4b670a)||_0x4b670a<0x0||_0x4b670a>=_0x67046['length'])return null;return _0x4b670a;}async function _0x4892f2(){return _0x9b2b8c();}var _0x259527=_0x3ee7d6(0x7a8),_0x2b3dd5=_0x3ee7d6(0x98e),_0x367515='Which\x20plan?',_0x1bfbdd='Starter\x20·\x20Free\x20—\x20local\x20build,\x20run,\x20and\x20device\x20tools.\x20No\x20sign-in.',_0x64e1b4='Pro\x20·\x20$10/mo\x20—\x20AI\x20flow\x20testing\x20on\x20your\x20real\x20device.\x20Sign\x20in\x20to\x20start.',_0x269427=[_0x1bfbdd,_0x64e1b4];function _0xd32027(_0x230df7){return new Promise(_0x548006=>{const _0x1137b8=_0x4a5a;if(_0x1137b8(0x3a1)==='qHsDh'){const _0x2e0bda=_0xff9ee3(_0x230df7[_0x1137b8(0x366)],_0x230df7[_0x1137b8(0x719)],{'cwd':_0x230df7[_0x1137b8(0x346)],'stdio':_0x230df7['stdioToStderr']?[_0x1137b8(0x317),0x2,0x2]:'inherit'});_0x2e0bda['on']('error',()=>_0x548006({'exitCode':0x7f})),_0x2e0bda['on'](_0x1137b8(0x41e),_0xa2cce=>_0x548006({'exitCode':_0xa2cce??0x1}));}else{const _0xcbcdd0=_0x1a95dc['get'](_0x4d9fd2);if(_0xcbcdd0)return _0xcbcdd0;const _0x1ad7c7=_0x159c2b(_0x578d2e);return _0x4ccc55[_0x1137b8(0x3b6)](_0xccad35,_0x1ad7c7),_0x1ad7c7;}});}function _0x125af9(_0x34d6c4){return'\x20\x20'+_0x34d6c4+'\x0a';}async function _0x2247b9(_0x1a1591,_0x4e02c7={}){const _0xeaed03=_0x3ee7d6,_0x5624ca=_0x56be6f=>_0x33a679(_0x56be6f,_0x4e02c7),_0x343fbe=()=>{_0x5624ca('\x0a');},_0x404cb8=await _0x5b8bf0(_0x1a1591,_0x4e02c7),_0x598163=await _0x8dd55b(_0x404cb8),_0x528422=await _0x13b218(_0x404cb8);let _0x1bf227=_0x528422;if(!_0x4e02c7['skipInstall']){_0x343fbe();const _0x528b7f=_0xe59a34(_0x598163,'@ceraph/react-native-mcp@latest');_0x5624ca(_0x125af9((_0x528422?'Updating':'Installing')+'\x20@ceraph/react-native-mcp\x20('+_0x598163+')…'));const _0x203c38=_0x4e02c7['installPackage']??_0xd32027,_0x523748=await _0x203c38({'bin':_0x528b7f[_0xeaed03(0x366)],'args':_0x528b7f['args'],'cwd':_0x404cb8,'stdioToStderr':_0x4e02c7[_0xeaed03(0x241)]===!![]});if(_0x523748[_0xeaed03(0x186)]!==0x0)throw new Error(_0x598163+'\x20install\x20exited\x20with\x20code\x20'+_0x523748['exitCode']+'.\x20Fix\x20the\x20error\x20above\x20and\x20re-run\x20`npx\x20@ceraph/react-native-mcp\x20init`.');_0x1bf227=!![];}let _0x462bc8;if(_0x4e02c7['tier'])_0x462bc8=_0x4e02c7['tier'];else{if(_0xeaed03(0x404)==='fndIZ'){_0x343fbe(),_0x5624ca(_0x125af9('More\x20about\x20the\x20plans\x20→\x20'+_0x398eed(_0x2b3dd5))),_0x5624ca('\x0a');const _0x369fd4=await _0x40f7ac(_0x367515,_0x269427,_0x4e02c7);_0x462bc8=_0x369fd4===0x1?'pro':'starter';}else _0x32b4e4['droppedEntries']=_0x26e0d7;}const _0x5de2e1=_0x4e02c7['writeTier']??(_0x16103d=>_0x4107c4(_0x16103d)['then'](()=>void 0x0));await _0x5de2e1(_0x462bc8)['catch'](()=>void 0x0);const _0x1a5371=_0x4e02c7[_0xeaed03(0x656)]??_0x4892f2;let _0x429cda=null,_0x334aef=null;_0x343fbe();if(_0x462bc8==='starter')_0xeaed03(0x3fc)==='FgXmP'?_0xcc431f?.[_0xeaed03(0x2bf)]():_0x5624ca(_0x125af9('Starter\x20selected\x20—\x20local\x20build,\x20run,\x20and\x20device\x20tools.\x20No\x20sign-in\x20needed.'));else{if(_0xeaed03(0x8e5)===_0xeaed03(0x770)){const _0x3fb5ea=_0x522456['getNameNode']();if(_0x3fb5ea[_0xeaed03(0x326)]()==='imageKey')return!![];}else{const _0x2ee8b1=await _0x1a5371(),_0x570550=_0x2ee8b1!==null&&(_0x2ee8b1[_0xeaed03(0x2db)]['id']!==0x0||_0x2ee8b1['githubUser'][_0xeaed03(0x562)]!=='');_0x429cda=_0x2ee8b1;if(_0x2ee8b1&&!_0x570550){if('NCelf'==='NCelf')_0x5624ca(_0x125af9(_0x2ee8b1[_0xeaed03(0x89c)]?_0xeaed03(0x76d)+_0x2ee8b1['email']+_0xeaed03(0x484):_0xeaed03(0x126)));else return this['simulatorWdaUdid'];}else{_0x570550&&_0x5624ca(_0x125af9(_0xeaed03(0x14f)));_0x5624ca(_0x125af9(process.env.CERAPH_AUTH_TOKEN?.['trim']()?'Signing\x20in\x20with\x20the\x20provided\x20token…':_0xeaed03(0x5a7)));const _0x3deac8=_0x4e02c7['authenticate']??_0x23f58b;_0x429cda=await _0x3deac8(),_0x5624ca(_0x125af9(_0x429cda[_0xeaed03(0x89c)]?_0xeaed03(0x76d)+_0x429cda[_0xeaed03(0x89c)]:_0xeaed03(0x8e8)));}const _0x76075c=_0x4e02c7[_0xeaed03(0x4e5)]??_0x590cfe,_0xe8027c=await _0x76075c()['catch'](()=>![]);_0x334aef=_0xe8027c?'active':_0xeaed03(0x548),!_0xe8027c?_0x5624ca(_0x125af9('Pro\x20selected.\x20To\x20start\x20AI\x20flow\x20testing,\x20complete\x20checkout\x20at\x20'+_0x398eed(_0x2b3dd5)+_0xeaed03(0x64f))):_0x5624ca(_0x125af9(_0xeaed03(0x5d6)));}}const _0x5026a9=await _0x3fb3fb(_0x404cb8),_0x504909=new Map();let _0x3a2171={'filesEdited':[],'totalReplacements':0x0};_0x343fbe();if(_0x5026a9[_0xeaed03(0x87b)]['length']===0x0)_0x5624ca(_0x125af9(_0xeaed03(0x27f)));else{_0x5624ca(_0x125af9(_0xeaed03(0x8be)+_0x5026a9[_0xeaed03(0x87b)]['length']+_0xeaed03(0x69a)+_0x5026a9[_0xeaed03(0x1d2)]+_0xeaed03(0x16b)));for(const _0x5b8b14 of _0x5026a9[_0xeaed03(0x87b)]){_0x5624ca(_0x125af9('\x20\x20-\x20'+_0x5b8b14[_0xeaed03(0x260)]+':'+_0x5b8b14[_0xeaed03(0xf5)]+_0xeaed03(0x916)+(_0x5b8b14[_0xeaed03(0x16d)]?'\x20(existing\x20imageKey\x20preserved)':'')));}_0x5624ca(_0x125af9(_0xeaed03(0x5b9)));const _0x4f98f9=await _0x9994ba(_0xeaed03(0x493)+_0x5026a9['edits'][_0xeaed03(0x945)]+_0xeaed03(0x4f1),{..._0x4e02c7,'defaultYes':!![]});_0x4f98f9?_0x3a2171=await _0x3064c8(_0x404cb8,_0x5026a9['edits'],_0x504909,_0x4e02c7,{'omitImageKey':!![]}):_0x5624ca(_0x125af9('Skipped\x20<CameraView>\x20rewrite.\x20Re-run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20to\x20apply.'));}const _0x258c22=await _0x334a7a(_0x404cb8);let _0xff997a={'applied':![],'target':_0x258c22};const _0x12784d=_0x258c22?await _0x455be0(_0x258c22['filePath']):'none';_0x343fbe();if(!_0x258c22)_0x5624ca(_0x125af9('Could\x20not\x20find\x20app/_layout.tsx\x20or\x20App.tsx.\x20Add\x20this\x20to\x20your\x20root\x20component\x20manually\x20(the\x20require\x20path\x20is\x20relative\x20to\x20that\x20file\x20—\x20`./.ceraph/testid-config.json`\x20from\x20a\x20root\x20App.tsx,\x20`../.ceraph/testid-config.json`\x20from\x20app/_layout.tsx):\x0a\x20\x20useEffect(()\x20=>\x20{\x20installCeraph({\x20readTestidConfig:\x20()\x20=>\x20{\x20try\x20{\x20return\x20require(\x22./.ceraph/testid-config.json\x22);\x20}\x20catch\x20{\x20return\x20null;\x20}\x20}\x20});\x20},\x20[]);'));else{if(_0x12784d==='seamed')_0x5624ca(_0x125af9(_0xeaed03(0x249)+_0x3fc3e6(_0x404cb8,_0x258c22[_0xeaed03(0x4e3)]))),_0xff997a={'applied':![],'target':_0x258c22,'reason':'already-injected'};else{const _0x4e4e11=_0x12784d===_0xeaed03(0x44a)?_0xeaed03(0x946):'Wire';_0x5624ca(_0x125af9('installCeraph()\x20registers\x20Ceraph\x27s\x20dev-only\x20test\x20hooks\x20—\x20runtime-error\x20capture,\x20state\x20reset/reload,\x20keep-awake\x20—\x20at\x20app\x20start.\x20No-op\x20in\x20production\x20builds.'));const _0x3abf19=await _0x9994ba(_0x4e4e11+_0xeaed03(0xcf)+_0x3fc3e6(_0x404cb8,_0x258c22[_0xeaed03(0x4e3)])+'?',{..._0x4e02c7,'defaultYes':!![]});if(_0x3abf19){const _0xf4bba9=await _0x23e5d8(_0x258c22);try{if('wzMgp'==='wzMgp'){const _0x38acd6=await _0x10bb96(_0x258c22);_0xff997a={'applied':_0x38acd6[_0xeaed03(0x903)],'target':_0x258c22,'reason':_0x38acd6['reason']},_0x38acd6[_0xeaed03(0x903)]?_0x5624ca(_0x125af9(_0xeaed03(0x963)+_0x3fc3e6(_0x404cb8,_0x258c22[_0xeaed03(0x4e3)]))):_0x5624ca(_0x125af9('Skipped\x20(auto-injection):\x20'+(_0x38acd6[_0xeaed03(0x78c)]??_0xeaed03(0x2f3))));}else{if(_0x5cbda9(_0x2b44c7))return![];if(_0x516f2e[_0xeaed03(0x60d)](_0x50c821)){const _0xf5010e=_0x49bdad['getBody']();if(!_0x383dc5[_0xeaed03(0x9f4)](_0xf5010e)){const _0x5e88a4=_0xf5010e['getText']();_0xf5010e[_0xeaed03(0x9ac)]('{\x20return\x20'+_0x5e88a4+_0xeaed03(0x4a8));}}const _0x59c12f=_0xfacbfd['getBody']();if(!_0x59c12f||!_0x35aae7['isBlock'](_0x59c12f))return![];return _0x59c12f['insertStatements'](0x0,'useEffect(()\x20=>\x20{\x20'+_0x4f1149(_0x4921fb)+_0xeaed03(0x5df)),!![];}}catch(_0x347d0e){if(_0xf4bba9!=null)await _0x1c1c48(_0x258c22,_0xf4bba9);throw _0x347d0e;}}else{if(_0xeaed03(0x162)!=='HuSUr'){_0x3d12ac+=_0x44280e[_0xeaed03(0x945)];if(_0x42748a>_0x117625){_0x2f008c['destroy'](),_0x3ec01e(null);return;}_0xf59023['push'](_0x14e4b4);}else _0x5624ca(_0x125af9(_0xeaed03(0x40f)));}}}let _0x45b674=null;const _0x296c9c=_0x4e02c7['ensureUrlScheme']??_0x591822,_0x13acff=await _0x296c9c(_0x404cb8);_0x45b674=_0x13acff;if(_0x13acff['kind']!==_0xeaed03(0x115))_0x343fbe();switch(_0x13acff['kind']){case'expo-json-added':{const _0x23cb7f=_0x13acff['previousScheme'],_0x599587=_0x3fc3e6(_0x404cb8,_0x13acff['path']);if(_0x23cb7f===void 0x0)_0x5624ca(_0x125af9('Set\x20your\x20'+_0x599587+'\x20scheme\x20to\x20ceraph://'));else{const _0x5c7050=Array[_0xeaed03(0x246)](_0x23cb7f)?_0x23cb7f['join'](',\x20'):_0x23cb7f;_0x5624ca(_0x125af9('Added\x20ceraph://\x20to\x20your\x20'+_0x599587+_0xeaed03(0x662)+_0x5c7050+'\x20→\x20now\x20['+_0x5c7050+',\x20ceraph])'));}break;}case _0xeaed03(0x49a):_0x5624ca(_0x125af9('ceraph://\x20URL\x20scheme\x20already\x20registered\x20in\x20'+_0x3fc3e6(_0x404cb8,_0x13acff[_0xeaed03(0x4ff)])));break;case'expo-config-needs-manual':_0x5624ca(_0x125af9(_0xeaed03(0x96c)+_0x3fc3e6(_0x404cb8,_0x13acff[_0xeaed03(0x4ff)])+_0xeaed03(0xdc))),_0x5624ca(_0x331217(_0x3fc3e6(_0x404cb8,_0x13acff[_0xeaed03(0x4ff)])));break;case'bare-rn-needs-manual':_0x5624ca(_0x125af9(_0xeaed03(0x7bf))),_0x5624ca(_0x4e5ff2());break;case _0xeaed03(0x115):break;}let _0x12e7d5=null;const _0x332acf=_0x4e02c7[_0xeaed03(0x161)]??_0x24193a,_0x6820fe=await _0x332acf(_0x404cb8);_0x12e7d5=_0x6820fe,_0x343fbe();switch(_0x6820fe['kind']){case'added':_0x5624ca(_0x125af9('Wired\x20the\x20testID\x20injector\x20into\x20'+_0x3fc3e6(_0x404cb8,_0x6820fe[_0xeaed03(0x4ff)])+(_0x6820fe['beforeReanimated']?'\x20(before\x20reanimated)':'')+'.'));break;case'already-present':_0x5624ca(_0x125af9(_0xeaed03(0x354)+_0x3fc3e6(_0x404cb8,_0x6820fe[_0xeaed03(0x4ff)])));break;case'needs-manual':_0x5624ca(_0x125af9('Could\x20not\x20auto-wire\x20the\x20testID\x20injector:\x20'+_0x6820fe['reason']));break;case _0xeaed03(0x80f):_0x5624ca(_0x125af9('Created\x20'+_0x3fc3e6(_0x404cb8,_0x6820fe[_0xeaed03(0x4ff)])+'\x20('+_0x6820fe['preset']+_0xeaed03(0x6be)));break;}let _0x199117={'state':_0xeaed03(0xd4),'registered':0x0};if(_0x3a2171['totalReplacements']>0x0){_0x343fbe();const _0x29d9f1=await _0x280e91(_0x404cb8);_0x199117={'state':_0x29d9f1[_0xeaed03(0x969)],'registered':_0x29d9f1['registered']['length']},_0x29d9f1[_0xeaed03(0x969)]==='missing-dir'?_0x5624ca(_0x125af9(_0xeaed03(0x11a)+_0x395f3e(_0xeaed03(0x5d3),_0xeaed03(0x2b1))+'/\x20and\x20call\x20`rn_sync_camera_registry`\x20to\x20regenerate.')):_0x5624ca(_0x125af9(_0xeaed03(0x3bc)+_0x29d9f1['writtenOrUnchanged']+'\x20('+_0x29d9f1['registered'][_0xeaed03(0x945)]+'\x20image(s))\x20at\x20'+_0x10fa2a(_0x404cb8,_0x29d9f1[_0xeaed03(0x6a9)])+'.'));}let _0x2cb306=null;if(_0x429cda&&_0x334aef==='active')try{const _0x3d1ebe=_0x4e02c7[_0xeaed03(0x586)]??_0x2c31ba;_0x2cb306=await _0x3d1ebe({'workingDir':_0x404cb8,'auth':_0x429cda}),_0x2cb306[_0xeaed03(0x9d0)]==='seeded'&&(_0x343fbe(),_0x5624ca(_0x125af9(_0xeaed03(0x2cb)+_0x2cb306['screenCount']+'\x20screen(s),\x20'+_0x2cb306[_0xeaed03(0x292)]+'\x20layout(s)\x20('+_0x2cb306['flavor']+').')));}catch{_0x2cb306=null;}else _0x429cda&&_0x334aef==='pending'&&(_0x2cb306={'status':_0xeaed03(0x797),'reason':'not-pro','message':'Pro\x20selected\x20but\x20not\x20yet\x20active\x20—\x20server-side\x20caching\x20is\x20skipped\x20until\x20checkout\x20completes\x20at\x20'+_0x2b3dd5+'.'});let _0x517ddf=null;if(_0x4e02c7['runDoctor']){_0x343fbe(),_0x517ddf=await _0x4e02c7['runDoctor'](),_0x5624ca(_0x125af9(_0xeaed03(0x2e4)+_0x517ddf[_0xeaed03(0x1d1)]+'/'+_0x517ddf['totalCount']+'\x20'+(_0x517ddf['ok']?'passed':_0xeaed03(0x320))));if(_0x517ddf['summary'])_0x5624ca(_0x517ddf['summary']);}_0x343fbe();let _0xd34e14=![];if(_0x462bc8===_0xeaed03(0x3fa))_0x5624ca(_0x125af9(_0xeaed03(0x1b7))),_0x5624ca(_0x125af9('To\x20add\x20AI\x20flow\x20testing\x20on\x20your\x20real\x20device,\x20re-run\x20init\x20and\x20pick\x20Pro.')),_0x5624ca(_0x125af9(_0xeaed03(0x341)+_0x398eed(_0x2b3dd5))),_0xd34e14=!![];else{if(_0x334aef==='pending'){if(!_0x4e02c7[_0xeaed03(0x369)]&&process['stdout']['isTTY']===!![]){if(_0xeaed03(0x560)===_0xeaed03(0x674))return{'name':'auth','status':_0xeaed03(0x125),'details':{'error':_0x396e53(_0x38697b),'dryRun':!![]}};else _0x54915b(_0x2b3dd5);}_0x5624ca(_0x125af9('Pro\x20selected.\x20Complete\x20checkout\x20at\x20'+_0x398eed(_0x2b3dd5)+_0xeaed03(0x8c0))),_0x5624ca(_0x125af9('your\x20Pro\x20access\x20refreshes\x20automatically.')),_0xd34e14=!![];}}if(_0xd34e14)_0x5624ca('\x0a');_0x5624ca(_0x125af9(_0xeaed03(0x1e3)));_0x4e02c7['claudePreApprovalPreserved']&&_0x5624ca(_0x125af9(_0xeaed03(0x73d)));_0x5624ca('\x0a'),_0x5624ca(_0x125af9(_0xeaed03(0x5ac))),_0x5624ca(_0x125af9(_0xeaed03(0x81a))),_0x5624ca('\x0a');const _0x4fabc2=_0x5026a9[_0xeaed03(0x87b)]['map'](_0x41a975=>({'file':_0x41a975[_0xeaed03(0x260)],'line':_0x41a975['line'],'suggestedKey':_0x41a975['suggestedKey']})),_0x24db25=_0x4e02c7['agentMode']?{'cameras':_0x4fabc2,'setupRequired':_0x4fabc2[_0xeaed03(0x945)]>0x0,'hintText':_0x4fabc2['length']===0x0?'No\x20<CeraphCamera>\x20components\x20detected.\x20No\x20camera-setup\x20conversation\x20needed;\x20proceed\x20with\x20the\x20rest\x20of\x20the\x20project\x20work.':'For\x20each\x20<CeraphCamera>\x20below,\x20ask\x20the\x20user\x20which\x20scenario\x20this\x20camera\x20serves\x20and\x20call\x20ceraph_init_replace_camera\x20with\x20the\x20chosen\x20imageKey.\x20Three\x20options:\x20(A)\x20imageKey=\x22default\x22\x20—\x20bundled\x20black\x20PNG\x20fallback.\x20Right\x20answer\x20when\x20the\x20test\x20doesn\x27t\x20care\x20about\x20image\x20content\x20(most\x20form-submit\x20/\x20file-upload\x20flows).\x20(B)\x20imageKey=\x22<key>\x22\x20—\x20a\x20specific\x20test\x20image.\x20Ask\x20the\x20user\x20for\x20a\x20descriptive\x20lowercase-dashes\x20name\x20AND\x20drop\x20the\x20file\x20at\x20.ceraph/camera-images/<key>.{jpg,png,webp},\x20then\x20call\x20rn_sync_camera_registry.\x20(C)\x20imageKey=\x22@runtime\x22\x20—\x20the\x20camera\x20serves\x20multiple\x20scenarios\x20per\x20flow;\x20the\x20planner\x20picks\x20the\x20image\x20per-step\x20at\x20runtime.\x20Use\x20when\x20one\x20camera\x20screen\x20feeds\x20different\x20outcomes.'}:null;return _0x4e02c7[_0xeaed03(0x369)]&&_0x24db25&&_0x5624ca(''+_0x259527+JSON[_0xeaed03(0x2c1)](_0x24db25)+'\x0a'),{'packageInstalled':_0x1bf227,'packageManager':_0x598163,'tier':_0x462bc8,'proStatus':_0x334aef,'authLogin':_0x429cda?.['email']??null,'cameraEdits':_0x3a2171,'layoutInjection':_0xff997a,'graphSeed':_0x2cb306,'cameraRegistrySync':_0x199117,'doctor':_0x517ddf,'workingDir':_0x404cb8,'urlScheme':_0x45b674,'babelConfig':_0x12e7d5,'agentHint':_0x24db25};}async function _0x5b8bf0(_0x3564ba,_0x2c4e3c){const _0x4cafab=_0x3ee7d6,_0x24a18b=_0x2c4e3c[_0x4cafab(0x615)]??_0x1dcc30,_0x3e4d50=await _0x24a18b(_0x3564ba);if(_0x3e4d50['kind']==='none'){if(_0x3e4d50[_0x4cafab(0x810)]&&!_0x3e4d50['rootIsRnApp'])throw new Error('Detected\x20a\x20monorepo\x20at\x20the\x20current\x20directory\x20but\x20could\x20not\x20find\x20a\x20React\x20Native\x20or\x20Expo\x20subpackage.\x20Re-run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20from\x20inside\x20the\x20RN/Expo\x20app\x20folder,\x20or\x20add\x20the\x20app\x20to\x20your\x20workspaces.');return _0x3564ba;}if(_0x3e4d50['kind']===_0x4cafab(0x13e)){const _0x1d11ea=_0x3e4d50[_0x4cafab(0x223)][0x0];if(!_0x1d11ea)return _0x3564ba;return _0x33a679('\x0a',_0x2c4e3c),_0x33a679(_0x125af9('Detected\x20React\x20Native\x20app\x20at\x20'+_0x1d11ea['relPath']+'/\x20—\x20working\x20from\x20there'),_0x2c4e3c),_0x1d11ea[_0x4cafab(0x245)];}_0x33a679('\x0a',_0x2c4e3c),_0x33a679(_0x125af9('Multiple\x20React\x20Native\x20subpackages\x20detected:'),_0x2c4e3c);const _0x4357be=_0x3e4d50['matches']['map'](_0x160e90=>_0x160e90['relPath']+_0x4cafab(0x766)+_0x160e90[_0x4cafab(0x3c1)][_0x4cafab(0x221)](',\x20')+']'),_0x16c96f=await _0x40f7ac('Which\x20one\x20should\x20init\x20configure?',_0x4357be,_0x2c4e3c);if(_0x16c96f==null)throw new Error('No\x20valid\x20selection.\x20Re-run\x20init\x20and\x20pick\x20a\x20numbered\x20option.');const _0x393752=_0x3e4d50[_0x4cafab(0x223)][_0x16c96f];if(!_0x393752)throw new Error('Picked\x20index\x20out\x20of\x20range.');return _0x33a679(_0x125af9(_0x4cafab(0x3b7)+_0x393752['relPath']+'/'),_0x2c4e3c),_0x393752['absPath'];}function _0x3fc3e6(_0x4e5543,_0x3da442){const _0x7ec01e=_0x3ee7d6;if(_0x3da442[_0x7ec01e(0x887)](_0x4e5543)){const _0x3fd193=_0x3da442['slice'](_0x4e5543['length']+0x1);return _0x3fd193['length']>0x0?_0x3fd193:_0x3da442;}return _0x3da442;}async function _0x23f58b(){const _0x12124f=await _0x4ca948();return{'accessToken':_0x12124f['token'],'expiresAt':0x0,'githubUser':{'login':'','id':0x0},'storedAt':new Date()['toISOString'](),..._0x12124f['email']?{'email':_0x12124f['email']}:{}};}async function _0x3064c8(_0x3977be,_0x438ace,_0x45badf,_0x284885,_0x57e171={}){const _0x24bce7=_0x3ee7d6;for(const _0x384d9a of _0x438ace){!_0x45badf[_0x24bce7(0x21c)](_0x384d9a[_0x24bce7(0x4e3)])&&_0x45badf['set'](_0x384d9a[_0x24bce7(0x4e3)],await _0x5431e7(_0x384d9a[_0x24bce7(0x4e3)]));}try{const _0x45171f=await _0x43bab1(_0x3977be,_0x438ace,_0x57e171);return _0x33a679(_0x125af9('Replaced\x20'+_0x45171f[_0x24bce7(0x281)]+'\x20<CameraView>\x20→\x20<CeraphCamera>\x20across\x20'+_0x45171f[_0x24bce7(0x75a)]['length']+'\x20file(s)'),_0x284885),_0x45171f;}catch(_0x35c5e4){for(const [_0xf3e698,_0x153a0d]of _0x45badf){if(_0x153a0d!=null)try{await _0x182f45(_0xf3e698,_0x153a0d);}catch(_0x3f751f){console[_0x24bce7(0x125)]('[ceraph]\x20rollback\x20failed\x20for\x20'+_0xf3e698+':',_0x3f751f instanceof Error?_0x3f751f[_0x24bce7(0x92e)]:_0x3f751f);}}throw _0x35c5e4;}}var _0x10800a=_0x3ee7d6(0x1d4),_0x3de755='#!/bin/bash\x0a#\x20rn-flow-progress-notify.sh\x20—\x20Injected\x20by\x20@ceraph/react-native-mcp\x20init\x0a#\x20Reads\x20.rn-flow-progress.json\x20and\x20injects\x20a\x20one-line\x20heartbeat\x20into\x0a#\x20Claude\x27s\x20context.\x20HEARTBEAT\x20ONLY\x20—\x20no\x20step-level\x20failure\x20details.\x0a\x0aENTRY_FILE=\x22$CLAUDE_PROJECT_DIR/mobile/.rn-flow-progress.json\x22\x0aif\x20[\x20!\x20-f\x20\x22$ENTRY_FILE\x22\x20];\x20then\x0a\x20\x20ENTRY_FILE=\x22$CLAUDE_PROJECT_DIR/.rn-flow-progress.json\x22\x0afi\x0aif\x20[\x20!\x20-f\x20\x22$ENTRY_FILE\x22\x20];\x20then\x0a\x20\x20exit\x200\x0afi\x0a\x0a#\x20If\x20jq\x20isn\x27t\x20installed,\x20exit\x20quietly\x20—\x20the\x20heartbeat\x20is\x20best-effort.\x0aif\x20!\x20command\x20-v\x20jq\x20>/dev/null\x202>&1;\x20then\x0a\x20\x20exit\x200\x0afi\x0a\x0aENTRY=$(jq\x20-r\x20\x27.entry\x27\x20\x22$ENTRY_FILE\x22\x202>/dev/null)\x0aif\x20[\x20\x22$ENTRY\x22\x20=\x20\x22null\x22\x20]\x20||\x20[\x20-z\x20\x22$ENTRY\x22\x20];\x20then\x0a\x20\x20exit\x200\x0afi\x0a\x0a#\x20jq\x20\x27//\x20\x22\x22\x27\x20(works\x20in\x20jq\x201.4+;\x20\x22//\x20empty\x22\x20needed\x201.5+\x20and\x20would\x20have\x0a#\x20silently\x20aborted\x20older\x20shells)\x20makes\x20jq\x20emit\x20an\x20empty\x20string\x20for\x0a#\x20missing\x20fields\x20rather\x20than\x20the\x20literal\x20\x22null\x22.\x20Defaults\x20below\x20keep\x0a#\x20set\x20-e\x20shells\x20happy\x20in\x20the\x20arithmetic\x20+\x20awk\x20expansions\x20even\x20when\x0a#\x20the\x20entry\x20is\x20partial\x20(transient\x20state\x20if\x20the\x20file\x20is\x20read\x0a#\x20mid-write).\x0aFLOW=$(jq\x20-r\x20\x27.entry.flow\x20//\x20\x22\x22\x27\x20\x22$ENTRY_FILE\x22\x202>/dev/null)\x0aINDEX=$(jq\x20-r\x20\x27.entry.index\x20//\x20\x22\x22\x27\x20\x22$ENTRY_FILE\x22\x202>/dev/null)\x0aTOTAL=$(jq\x20-r\x20\x27.entry.total\x20//\x20\x22\x22\x27\x20\x22$ENTRY_FILE\x22\x202>/dev/null)\x0aSUCCESS=$(jq\x20-r\x20\x27.entry.success\x20//\x20\x22\x22\x27\x20\x22$ENTRY_FILE\x22\x202>/dev/null)\x0aDURATION=$(jq\x20-r\x20\x27.entry.durationMs\x20//\x20\x22\x22\x27\x20\x22$ENTRY_FILE\x22\x202>/dev/null)\x0a\x0aINDEX=${INDEX:-0}\x0aTOTAL=${TOTAL:-0}\x0aDURATION=${DURATION:-0}\x0aFLOW=${FLOW:-unknown}\x0a\x0aDISPLAY_INDEX=$((INDEX\x20+\x201))\x0aif\x20[\x20\x22$SUCCESS\x22\x20=\x20\x22true\x22\x20];\x20then\x0a\x20\x20STATUS=\x22passed\x22\x0aelse\x0a\x20\x20STATUS=\x22failed\x22\x0afi\x0a\x0aecho\x20\x22Flow\x20$DISPLAY_INDEX/$TOTAL\x20—\x20$FLOW:\x20$STATUS\x20in\x20$(awk\x20\x22BEGIN\x20{printf\x20\x5c\x22%.1f\x5c\x22,\x20$DURATION/1000}\x22)s\x22\x0aecho\x20\x22(Wait\x20for\x20the\x20end-of-run\x20summary\x20before\x20making\x20any\x20code\x20changes\x20—\x20the\x20flows\x20in\x20this\x20run\x20reference\x20your\x20pre-edit\x20code.)\x22\x0a',_0x4be8ae=['.claude',_0x3ee7d6(0x6d5),'rn-error-notify.sh'],_0x3ccf14=[_0x3ee7d6(0x644),'hooks','rn-flow-progress-notify.sh'],_0x2781c8='.rn-errors.json',_0x352f9a=_0x3ee7d6(0x671),_0x3f0d94=_0x3ee7d6(0x5d7),_0x589268='\x22$CLAUDE_PROJECT_DIR\x22/.claude/hooks/rn-flow-progress-notify.sh',_0x308fed=[[_0x3ee7d6(0x644),'settings.json'],[_0x3ee7d6(0x644),_0x3ee7d6(0x2bb)]],_0x16d4c9=process['cwd']();async function _0x3ca847(_0x31ef9e){const _0x2c885b=_0x3ee7d6;try{if(_0x2c885b(0x6e0)!=='FXeQt'){const _0x381773=_0x50c390['connectionProperties']?.['tunnelState']?.['toLowerCase']()??'';return _0x27655b(_0x4b7891)&&_0x381773==='connected';}else return await _0x444aad(_0x31ef9e),!![];}catch{return![];}}async function _0x30a983(_0x3b5e70,_0x2ef7b3){const _0x1950d1=_0x3ee7d6;await _0x3349f2(_0x785e86(_0x3b5e70,'..'),{'recursive':!![]}),await _0x4b8510(_0x3b5e70,JSON[_0x1950d1(0x2c1)](_0x2ef7b3,null,0x2)+'\x0a');}function _0x25810d(_0xabf275){const _0x2bf61f=_0x3ee7d6;console[_0x2bf61f(0x183)]('\x20\x20'+_0xabf275);}async function _0x952bff(_0x4c60cb,_0x202d77){const _0x1b828d=_0x3ee7d6,_0x2e7d60=await _0x4260f1(_0x4c60cb);if(_0x2e7d60['kind']===_0x1b828d(0x445))return _0x25810d(_0x202d77+':\x20existing\x20config\x20at\x20'+_0x4c60cb+_0x1b828d(0x6a8)),![];const _0x56d66d=_0x2e7d60[_0x1b828d(0x3ea)]==='ok'?_0x2e7d60[_0x1b828d(0x84f)]:{};if(_0x2e7d60[_0x1b828d(0x3ea)]==='ok'&&!_0x2c73d7(_0x56d66d))return _0x25810d(_0x202d77+_0x1b828d(0x4f9)+_0x4c60cb+_0x1b828d(0x7fb)+(Array['isArray'](_0x56d66d)?'array':typeof _0x56d66d)+')\x20—\x20preserving\x20it.'),![];const _0x152741=_0x2c73d7(_0x56d66d)?_0x56d66d:{},_0x5588c9=_0x152741[_0x1b828d(0x279)];if(_0x5588c9!==void 0x0&&!_0x2c73d7(_0x5588c9))return _0x25810d(_0x202d77+_0x1b828d(0x55b)+_0x4c60cb+'\x20is\x20not\x20a\x20JSON\x20object\x20(got\x20'+(Array[_0x1b828d(0x246)](_0x5588c9)?_0x1b828d(0x27a):typeof _0x5588c9)+')\x20—\x20preserving\x20the\x20file.'),![];const _0x13a0d9=_0x2c73d7(_0x5588c9)?_0x5588c9:{};let _0x2ac9f6=![];for(const _0x90398e of _0x3a86ae){_0x90398e in _0x13a0d9&&(delete _0x13a0d9[_0x90398e],_0x2ac9f6=!![]);}const _0x2ba2f1=_0x4f2d22(),_0x51aec1=_0x13a0d9['react-native-mcp'];if(_0x33745c(_0x51aec1,_0x2ba2f1)&&!_0x2ac9f6)return _0x25810d(_0x202d77+_0x1b828d(0x638)),![];const _0x59afd4=_0x2c73d7(_0x51aec1)?{..._0x51aec1}:{};return _0x13a0d9['react-native-mcp']={..._0x59afd4,..._0x2ba2f1},_0x152741['mcpServers']=_0x13a0d9,await _0x30a983(_0x4c60cb,_0x152741),_0x25810d(_0x202d77+_0x1b828d(0x99f)),!![];}async function _0x468ae3(_0x14a5a9){const _0xd3eaa3=_0x3ee7d6;let _0x2b7695='';try{_0x2b7695=await _0x12da12(_0x14a5a9,'utf-8');}catch{}const _0x390dd2=new Set(_0x3a86ae['map'](_0x3b82e4=>'mcp_servers.'+_0x3b82e4)),_0x2b6fa1=_0x2d6e24(_0x2b7695,_0x390dd2);_0x2b7695=_0x2b6fa1[_0xd3eaa3(0x9e0)];const _0x533517=_0x2b6fa1[_0xd3eaa3(0x940)]['length']>0x0,_0x852697=_0x2c2188(_0x2b7695);if(_0x852697[_0xd3eaa3(0x868)]&&_0x852697[_0xd3eaa3(0x829)]&&!_0x533517)return _0x25810d(_0xd3eaa3(0x83b)),![];if(_0x852697['replaced'])_0x2b7695=_0x852697[_0xd3eaa3(0x9e0)];else{if(_0x852697['sectionPresent']&&!_0x852697['alreadyCurrent']){const _0x3738ee=_0x2d6e24(_0x2b7695,new Set([_0xd3eaa3(0x121)]));_0x2b7695=_0x3738ee['next']+_0x11b004();}else!_0x852697['sectionPresent']?_0x2b7695=_0x2b7695+_0x11b004():_0x2b7695=_0x852697['next'];}return await _0x3349f2(_0x785e86(_0x14a5a9,'..'),{'recursive':!![]}),await _0x4b8510(_0x14a5a9,_0x2b7695),_0x25810d(_0xd3eaa3(0x473)),!![];}async function _0x458444(_0x27a95c=_0x16d4c9){const _0x5f09b4=_0x3ee7d6,_0x3cf64c=_0x785e86(_0x27a95c,_0x5f09b4(0x644),_0x5f09b4(0x6d5)),_0x5cd5e3=_0x785e86(_0x3cf64c,'rn-error-notify.sh'),_0x39ac35=_0x785e86(_0x3cf64c,_0x5f09b4(0x49e));await _0x3349f2(_0x3cf64c,{'recursive':!![]}),await _0x4b8510(_0x5cd5e3,_0x10800a),await _0xade249(_0x5cd5e3,0x1ed),_0x25810d(_0x5f09b4(0x212)),await _0x4b8510(_0x39ac35,_0x3de755),await _0xade249(_0x39ac35,0x1ed),_0x25810d('Hook\x20script:\x20.claude/hooks/rn-flow-progress-notify.sh\x20✓');const _0x2380e5=_0x785e86(_0x27a95c,'.claude',_0x5f09b4(0x348)),_0xcc0509=_0x785e86(_0x27a95c,'.claude','settings.local.json'),_0x4585d4=(_0x3ba529,_0x1b781d,_0x117b84)=>{const _0x1df1d6=_0x5f09b4,_0x4a06e4=_0x2c73d7(_0x3ba529)?_0x3ba529:{},_0x391add=_0x4a06e4[_0x1df1d6(0x6d5)],_0x3f0bba=_0x2c73d7(_0x391add)?_0x391add:{},_0xedaa34=_0x3f0bba[_0x1df1d6(0x2cf)];if(!Array[_0x1df1d6(0x246)](_0xedaa34))return _0xedaa34!==void 0x0;return _0xedaa34[_0x1df1d6(0x2a5)](_0x15e251=>{const _0x389e22=_0x1df1d6;if(!_0x2c73d7(_0x15e251))return![];if(_0x15e251[_0x389e22(0x9ce)]!==_0x1b781d)return![];const _0x3a4154=_0x15e251['hooks'];if(!Array[_0x389e22(0x246)](_0x3a4154))return![];return _0x3a4154['some'](_0xcaa8be=>{const _0x3a006d=_0x389e22;if(_0x3a006d(0x247)!==_0x3a006d(0x247))return{'name':'babel-config','status':_0x3a006d(0x125),'details':{'error':_0x51ac84(_0x593bfe),..._0x2cb7c6?{'dryRun':!![]}:{}}};else{if(!_0x2c73d7(_0xcaa8be))return![];const _0x350c89=_0xcaa8be[_0x3a006d(0x850)];return typeof _0x350c89==='string'&&_0x350c89===_0x117b84;}});});},_0x2c32b8=await _0x4260f1(_0x2380e5),_0x2134e5=await _0x4260f1(_0xcc0509);if(_0x2c32b8['kind']==='malformed'){_0x25810d('Claude\x20Code\x20hook:\x20'+_0x2380e5+_0x5f09b4(0x6a8));return;}if(_0x2134e5[_0x5f09b4(0x3ea)]===_0x5f09b4(0x445)){_0x25810d('Claude\x20Code\x20hook:\x20'+_0xcc0509+'\x20is\x20malformed\x20JSON\x20—\x20preserving\x20it.\x20Fix\x20the\x20file\x20manually\x20then\x20re-run\x20init.');return;}const _0x4ac479=_0x2c32b8[_0x5f09b4(0x3ea)]==='ok'?_0x2c32b8[_0x5f09b4(0x84f)]:null,_0x49ae84=_0x2134e5[_0x5f09b4(0x3ea)]==='ok'?_0x2134e5['value']:null;if(_0x4ac479!==null&&!_0x2c73d7(_0x4ac479)){_0x25810d(_0x5f09b4(0x3c4)+_0x2380e5+'\x20top-level\x20is\x20not\x20a\x20JSON\x20object\x20—\x20preserving\x20it.');return;}if(_0x49ae84!==null&&!_0x2c73d7(_0x49ae84)){_0x25810d('Claude\x20Code\x20hook:\x20'+_0xcc0509+'\x20top-level\x20is\x20not\x20a\x20JSON\x20object\x20—\x20preserving\x20it.');return;}const _0x42776b=_0x4ac479??{},_0x2c1940=_0x42776b['hooks'];if(_0x2c1940!==void 0x0&&!_0x2c73d7(_0x2c1940)){_0x25810d(_0x5f09b4(0x3c4)+_0x2380e5+_0x5f09b4(0x757));return;}const _0x2ddf4b=_0x2c73d7(_0x2c1940)?_0x2c1940:{},_0x5c7064=_0x2ddf4b[_0x5f09b4(0x2cf)],_0x3e5500=Array[_0x5f09b4(0x246)](_0x5c7064)?_0x5c7064:[];let _0x460eb4=![];!_0x4585d4(_0x4ac479,_0x2781c8,_0x3f0d94)&&!_0x4585d4(_0x49ae84,_0x2781c8,_0x3f0d94)?(_0x3e5500['push']({'matcher':_0x2781c8,'hooks':[{'type':_0x5f09b4(0x850),'command':_0x3f0d94}]}),_0x460eb4=!![],_0x25810d('Claude\x20Code\x20hook:\x20FileChanged\x20→\x20.rn-errors.json\x20✓')):_0x25810d(_0x5f09b4(0x801)),!_0x4585d4(_0x4ac479,_0x352f9a,_0x589268)&&!_0x4585d4(_0x49ae84,_0x352f9a,_0x589268)?(_0x3e5500['push']({'matcher':_0x352f9a,'hooks':[{'type':'command','command':_0x589268}]}),_0x460eb4=!![],_0x25810d(_0x5f09b4(0x841))):_0x25810d('Claude\x20Code\x20hook\x20(.rn-flow-progress.json):\x20already\x20configured'),_0x460eb4&&(_0x2ddf4b[_0x5f09b4(0x2cf)]=_0x3e5500,_0x42776b[_0x5f09b4(0x6d5)]=_0x2ddf4b,await _0x30a983(_0x2380e5,_0x42776b));}var _0x259174=_0x3ee7d6(0x989);async function _0x33273d(){const _0x3cab55=_0x3ee7d6,_0x91232d=_0x785e86(_0x16d4c9,'.ceraph',_0x3cab55(0x2b1));await _0x3349f2(_0x91232d,{'recursive':!![]});const _0x3ead8c=_0x785e86(_0x91232d,_0x3cab55(0x8bc));!await _0x3ca847(_0x3ead8c)?(await _0x17dce6(_0x3ead8c,_0x259174,_0x3cab55(0x29d)),_0x25810d('Camera\x20images:\x20.ceraph/camera-images/\x20+\x20README.md\x20✓')):'qOctV'!=='qOctV'?(this[_0x3cab55(0x239)]=_0x4ec4f9,_0x2bcc96({'ok':!![],'port':this['port']})):_0x25810d('Camera\x20images:\x20.ceraph/camera-images/\x20already\x20exists');}async function _0x4a5465(){const _0x215475=_0x3ee7d6,_0x11dbc4=_0x785e86(_0x16d4c9,'.gitignore');let _0x477365='';try{_0x477365=await _0x12da12(_0x11dbc4,_0x215475(0x29d));}catch{}const _0x4b4b9f=[_0x215475(0x8b8),_0x215475(0x671),'.ceraph/runs/','.ceraph/wda-derived/',_0x215475(0x137)],_0x5e74b2=_0x4b4b9f[_0x215475(0x65c)](_0xb7654b=>!_0x477365['includes'](_0xb7654b));if(_0x5e74b2['length']===0x0){_0x25810d('.gitignore:\x20entries\x20already\x20present');return;}const _0x308602=_0x477365===''||_0x477365[_0x215475(0x3f0)]('\x0a')?'':'\x0a',_0x2c8744=_0x308602+_0x5e74b2['join']('\x0a')+'\x0a';await _0x4b8510(_0x11dbc4,_0x477365+_0x2c8744),_0x25810d('.gitignore:\x20added\x20'+_0x5e74b2['join'](',\x20')+'\x20✓');}async function _0x1bedca(){const _0x23212d=_0x3ee7d6;console['log']('MCP\x20configuration:'),await _0x952bff(_0x785e86(_0x16d4c9,_0x23212d(0x736)),'Claude\x20Code');const _0x1de675=await _0x296c84(_0x16d4c9);_0x1de675[_0x23212d(0x9d0)]==='preserved'?_0x25810d(_0x23212d(0x350)+_0x1de675[_0x23212d(0x529)]+_0x23212d(0x8a4)+_0x1de675['reason']):_0x25810d(_0x23212d(0x6a5));await _0x952bff(_0x785e86(_0x16d4c9,'.cursor',_0x23212d(0x5b6)),_0x23212d(0x55c)),await _0x468ae3(_0x785e86(_0x16d4c9,_0x23212d(0x905),_0x23212d(0x97a))),await _0x952bff(_0x785e86(_0x16d4c9,_0x23212d(0x390),_0x23212d(0x5b6)),'VS\x20Code');const _0x2ae2d9=process.env.HOME??process.env.USERPROFILE??'';if(_0x2ae2d9){const _0x32c935=_0x785e86(_0x2ae2d9,_0x23212d(0x97f),_0x23212d(0x6ca),_0x23212d(0x5ed));await _0x3ca847(_0x785e86(_0x2ae2d9,_0x23212d(0x97f),'windsurf'))&&await _0x952bff(_0x32c935,'Windsurf');const _0x35c5dc=_0x785e86(_0x2ae2d9,_0x23212d(0x376),'antigravity','mcp_config.json');await _0x3ca847(_0x785e86(_0x2ae2d9,'.gemini','antigravity'))&&(_0x23212d(0x9e2)!=='ApEQa'?_0x26b79f[_0x23212d(0x9da)]['add'](_0x47cf6f[_0x23212d(0x3ea)]+':'+_0x1bbd10['key']):await _0x952bff(_0x35c5dc,'Antigravity'));}return _0x1de675;}function _0x9c55cc(_0x49d325){const _0x4c8e1c=_0x3ee7d6,_0x4753de=_0x49d325[_0x4c8e1c(0x65c)](_0x43fc9e=>_0x43fc9e['severity']==='error'&&!_0x43fc9e['ok']),_0x49e4d3=_0x49d325[_0x4c8e1c(0x65c)](_0x20b192=>_0x20b192['severity']==='warning'&&!_0x20b192['ok']);if(_0x4753de[_0x4c8e1c(0x945)]===0x0&&_0x49e4d3['length']===0x0)return'';const _0x6573e8=[];for(const _0x4f1831 of _0x4753de){_0x6573e8['push']('\x20\x20[BLOCKER]\x20'+_0x4f1831['name']+':\x20'+_0x4f1831[_0x4c8e1c(0x92e)]);if(_0x4f1831['remediation'])_0x6573e8[_0x4c8e1c(0x496)]('\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20→\x20'+_0x4f1831[_0x4c8e1c(0x5de)]);}for(const _0x2820fa of _0x49e4d3){_0x6573e8[_0x4c8e1c(0x496)](_0x4c8e1c(0x58b)+_0x2820fa[_0x4c8e1c(0x4d1)]+':\x20'+_0x2820fa[_0x4c8e1c(0x92e)]);if(_0x2820fa[_0x4c8e1c(0x5de)])_0x6573e8['push']('\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20→\x20'+_0x2820fa['remediation']);}return _0x6573e8['join']('\x0a')+'\x0a';}function _0x2fcb52(_0x62e60a){const _0x3b63e6=_0x3ee7d6;if(_0x62e60a)return!![];if(process.env.CERAPH_NON_INTERACTIVE==='1')return!![];return!process[_0x3b63e6(0x21a)]['isTTY'];}async function _0x73598b(_0xe792d3={}){const _0x585f9e=_0x3ee7d6,_0x5cd962=console[_0x585f9e(0x183)];_0xe792d3['outputToStderr']&&(console['log']=(..._0x2ffa7e)=>{const _0x45c2d9=_0x585f9e;process['stderr'][_0x45c2d9(0x65a)](_0x2ffa7e[_0x45c2d9(0x986)](_0x47117f=>typeof _0x47117f===_0x45c2d9(0x7fd)?_0x47117f:String(_0x47117f))[_0x45c2d9(0x221)]('\x20')+'\x0a');});try{return _0x585f9e(0x6bc)!=='bWpQO'?{'success':!![],'details':{'element':_0x231090[_0x585f9e(0x8ff)],'retryAfterSwipes':_0xa6cd14+0x1}}:await _0x3b4fcf(_0xe792d3);}finally{_0xe792d3[_0x585f9e(0x2b7)]&&(console['log']=_0x5cd962);}}async function _0x3b4fcf(_0xd7118b){const _0xbe1b68=_0x3ee7d6,_0x3639fd=_0xd7118b['agentMode']===!![],_0x2e505e=_0xd7118b['outputToStderr']?_0x2441e9=>{const _0x50b043=_0x4a5a;process[_0x50b043(0x870)][_0x50b043(0x65a)](_0x2441e9);}:void 0x0;if(_0xd7118b[_0xbe1b68(0x7a9)]==='pro'&&_0x2fcb52(_0x3639fd))return'JVqOK'===_0xbe1b68(0x388)?'PlannedChainInput.snapPointFlowIndices\x20entry\x20'+_0x4722c3+'\x20has\x20no\x20successor\x20flow\x20(flows.length='+_0x137dda['flows']['length']+').':(await _0x4107c4('pro')['catch'](()=>void 0x0),console[_0xbe1b68(0x183)](_0xbe1b68(0x9c0)),console[_0xbe1b68(0x183)](_0xbe1b68(0x818)),console['log']('\x20\x201.\x20Sign\x20in:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x58f401({'intent':_0xbe1b68(0x1b6)})),console[_0xbe1b68(0x183)]('\x20\x202.\x20Complete\x20checkout:\x20https://ceraph.dev/#pricing'),console[_0xbe1b68(0x183)]('\x0aSelecting\x20Pro\x20isn\x27t\x20the\x20same\x20as\x20being\x20Pro\x20—\x20AI\x20flow\x20testing\x20unlocks\x20once\x0acheckout\x20completes.\x20Re-run\x20init\x20in\x20a\x20terminal\x20(or\x20use\x20the\x0aceraph_init_select_tier\x20tool)\x20to\x20finish\x20sign-in.\x0a'),{'proSignInDeferred':!![],'walkthrough':null});console[_0xbe1b68(0x183)]('\x0a@ceraph/react-native-mcp\x20init\x0a');const _0x4e7bca=await _0x1bedca();console[_0xbe1b68(0x183)](_0xbe1b68(0x7d1)),await _0x458444(),console['log'](_0xbe1b68(0x2df)),await _0x33273d(),console[_0xbe1b68(0x183)]('\x0aGitignore:'),await _0x4a5465();const _0x29c60f=await _0x2247b9(_0x16d4c9,{'agentMode':_0x3639fd,'nonInteractive':_0x3639fd?!![]:void 0x0,'write':_0x2e505e,'installStdioToStderr':_0xd7118b['outputToStderr']===!![],'tier':_0xd7118b['tier'],'claudePreApprovalPreserved':_0x4e7bca[_0xbe1b68(0x9d0)]==='preserved','runDoctor':async()=>{const _0x3fea1d=_0xbe1b68,_0x181e0a=new _0xfe777(),_0x117ba8=new _0x435cdf(_0x181e0a),_0x10a60b=new _0xb68fb9(_0x181e0a),_0x4ad6d7=await _0x3df3ac({'screen':_0x181e0a,'apps':_0x117ba8,'autonomy':_0x10a60b,'projectDir':_0x16d4c9,'excludeRuntimeChecks':!![]}),_0x40dad4=_0x4ad6d7[_0x3fea1d(0x8d4)]['filter'](_0x5582f4=>_0x5582f4['ok'])[_0x3fea1d(0x945)];return{'ok':_0x4ad6d7['ok'],'summary':_0x9c55cc(_0x4ad6d7['checks']),'passedCount':_0x40dad4,'totalCount':_0x4ad6d7[_0x3fea1d(0x8d4)]['length']};}});return{'proSignInDeferred':![],'walkthrough':_0x29c60f};}var _0x389787=process['argv'][0x1]??'';if(_0x389787['endsWith'](_0x3ee7d6(0x697))||_0x389787[_0x3ee7d6(0x3f0)](_0x3ee7d6(0x902))){const _0x5b217d=process.env.CERAPH_AGENT_MODE==='1'||process[_0x3ee7d6(0x46e)][_0x3ee7d6(0x83f)]('--agent');_0x73598b({'agentMode':_0x5b217d})['catch'](_0x2eeac1=>{const _0x2a27fa=_0x3ee7d6;console[_0x2a27fa(0x125)](_0x2a27fa(0x441),_0x2eeac1),process[_0x2a27fa(0x41e)](0x1);});}async function _0x435db2(_0xa1e7b5={}){const _0x1bef4a=_0x3ee7d6,_0x4c25f5=_0xa1e7b5[_0x1bef4a(0x656)]??_0x9b2b8c,_0x5221c8=_0xa1e7b5['submitToken']??_0xd9bac1,_0xb978dc=_0xa1e7b5['runInit']??_0x73598b,_0xa65985=_0xa1e7b5['cliAuthUrl']??_0x58f401,_0x43ae58=_0xa1e7b5[_0x1bef4a(0x844)]?.[_0x1bef4a(0x5da)]()||void 0x0;if(_0x43ae58){const _0x3d37a0=await _0x5221c8({'signal':_0xa1e7b5[_0x1bef4a(0x294)],'token':_0x43ae58});if(_0x3d37a0['status']!=='ok'){const _0xf7aa12=_0x3d37a0[_0x1bef4a(0x9d0)]==='aborted'?'Sign-in\x20was\x20cancelled.':'Sign-in\x20failed:\x20'+_0x3d37a0['error'],_0x21b965=_0xa65985();return{'status':_0x1bef4a(0x344),'message':_0xf7aa12+_0x1bef4a(0x2ac),'verificationUri':_0x21b965,'url':_0x21b965};}}const _0x21379b=await _0x4c25f5()['catch'](()=>null);if(!_0x21379b?.['accessToken']){const _0x2cd597=_0xa65985();return{'status':'needs-auth','verificationUri':_0x2cd597,'url':_0x2cd597,'message':'Sign\x20in\x20to\x20run\x20the\x20complete\x20init.\x20Open\x20the\x20verificationUri,\x20sign\x20in,\x20copy\x20the\x20token\x20it\x20issues,\x20and\x20re-call\x20ceraph_init\x20with\x20that\x20value\x20as\x20`token`.\x20The\x20project\x20is\x20left\x20untouched\x20until\x20you\x20do.'};}const _0x1e481f=await _0xb978dc({'agentMode':!![],'outputToStderr':!![]});return{'status':'ready','message':'Init\x20complete.\x20Every\x20phase\x20ran\x20(MCP\x20clients,\x20Claude\x20hooks,\x20.gitignore,\x20camera-images,\x20camera\x20replacement,\x20boot\x20injection,\x20URL\x20scheme,\x20doctor).\x20See\x20`result`\x20for\x20per-phase\x20outcomes.','result':_0x1e481f[_0x1bef4a(0x7d5)]};}import{networkInterfaces}from'os';var _0x42955d=new Set(['en0']),_0x419fbe=new Set(['en1',_0x3ee7d6(0x607),_0x3ee7d6(0x6c4),_0x3ee7d6(0x74d),_0x3ee7d6(0x351),'en6']);function _0x124c24(_0x123bf0,_0x4184da){const _0x6beca5=_0x3ee7d6;if(_0x4184da['family']!=='IPv4')return null;if(_0x4184da['internal'])return null;if(_0x4184da['address']['startsWith'](_0x6beca5(0x184)))return null;if(_0x4184da[_0x6beca5(0x26c)]['startsWith'](_0x6beca5(0x538)))return null;let _0x1a4130;if(_0x42955d[_0x6beca5(0x21c)](_0x123bf0))_0x1a4130=_0x6beca5(0x459);else{if(_0x419fbe['has'](_0x123bf0))_0x1a4130='usb-ethernet';else return null;}return{'interfaceName':_0x123bf0,'address':_0x4184da['address'],'kind':_0x1a4130};}function _0x1346bd(_0x2c9544={}){const _0x473b70=_0x3ee7d6,_0x249ffd=_0x2c9544[_0x473b70(0x38c)]??networkInterfaces,_0x4615c5=_0x249ffd(),_0x3e250e=new Set(),_0x1f0d45=[],_0x507666=[],_0xebf340=Object[_0x473b70(0x208)](_0x4615c5)[_0x473b70(0x837)]();for(const _0x3d4b48 of _0xebf340){const _0x9b52d5=_0x4615c5[_0x3d4b48];if(!_0x9b52d5)continue;for(const _0x57a373 of _0x9b52d5){const _0x21ac06=_0x124c24(_0x3d4b48,_0x57a373);if(!_0x21ac06)continue;if(_0x3e250e['has'](_0x21ac06['address']))continue;_0x3e250e[_0x473b70(0x5c1)](_0x21ac06['address']);if(_0x21ac06['kind']==='wifi')_0x1f0d45[_0x473b70(0x496)](_0x21ac06);else _0x507666[_0x473b70(0x496)](_0x21ac06);}}return[..._0x1f0d45,..._0x507666];}function _0x7b4852(_0x2573c4={}){const _0x1ceec4=_0x1346bd(_0x2573c4);return _0x1ceec4[0x0]??null;}import{spawn as _0x557746}from'child_process';import{z as _0x39299c}from'zod';import{existsSync,readFileSync as _0x3ff343,readdirSync}from'fs';import{isAbsolute as _0x4603f9,join as _0x248bbd,relative as _0x9c4193,resolve,sep as _0x436d85}from'path';function _0x410dbc(_0x519c8f){return existsSync(_0x519c8f);}function _0x5ed2da(_0x513e3b){const _0x2c1f4b=_0x3ee7d6;try{const _0x41baff=_0x3ff343(_0x513e3b,_0x2c1f4b(0x29d)),_0x36386f=JSON['parse'](_0x41baff);if(!_0x36386f||typeof _0x36386f!==_0x2c1f4b(0x5ab))return null;return _0x36386f;}catch{return null;}}function _0x4eec9c(_0x567bb){const _0x9830fb=_0x3ee7d6,_0x214742=new Set();let _0x884ed6=![];const _0x32b0fb=_0x5ed2da(_0x248bbd(_0x567bb,_0x9830fb(0x833)));if(_0x32b0fb?.['workspaces']){_0x884ed6=!![];if(Array['isArray'](_0x32b0fb['workspaces'])){for(const _0x3c371d of _0x32b0fb['workspaces'])_0x214742[_0x9830fb(0x5c1)](_0x3c371d);}else{if(_0x32b0fb['workspaces']&&typeof _0x32b0fb['workspaces']===_0x9830fb(0x5ab)&&Array['isArray'](_0x32b0fb[_0x9830fb(0x2a4)]['packages']))for(const _0x585e4c of _0x32b0fb[_0x9830fb(0x2a4)]['packages']){_0x214742['add'](_0x585e4c);}}}const _0x18c6cc=_0x248bbd(_0x567bb,'pnpm-workspace.yaml');if(_0x410dbc(_0x18c6cc)){let _0x4a6fbc=null;try{_0x4a6fbc=_0x3ff343(_0x18c6cc,_0x9830fb(0x29d));}catch{_0x4a6fbc=null;}if(_0x4a6fbc!=null){_0x884ed6=!![];for(const _0xce6000 of _0x176dc0(_0x4a6fbc))_0x214742[_0x9830fb(0x5c1)](_0xce6000);}}const _0xe855fe=_0x5ed2da(_0x248bbd(_0x567bb,'lerna.json'));if(_0xe855fe){const _0x2719a8=_0xe855fe[_0x9830fb(0x4c7)];if(Array['isArray'](_0x2719a8)){_0x884ed6=!![];for(const _0x5c6f31 of _0x2719a8){if(typeof _0x5c6f31===_0x9830fb(0x7fd))_0x214742['add'](_0x5c6f31);}}else _0x410dbc(_0x248bbd(_0x567bb,_0x9830fb(0x784)))&&(_0x884ed6=!![]);}if(!_0x884ed6)return null;return Array[_0x9830fb(0x70f)](_0x214742);}function _0x22778e(_0x318def,_0x22c11f){const _0x16f08e=_0x3ee7d6,_0x129cdf=_0x22c11f['replace'](/^\.\//,'')['replace'](/\/+$/,'');if(_0x129cdf[_0x16f08e(0x945)]===0x0)return[];if(!_0x129cdf['includes']('*')){const _0x1af546=_0x248bbd(_0x318def,_0x129cdf);return _0x410dbc(_0x1af546)?[_0x1af546]:[];}const _0x416fc6=_0x129cdf['match'](/^([^*]+)\/\*$/);if(!_0x416fc6||!_0x416fc6[0x1])return[];const _0x4e57a7=_0x416fc6[0x1]['replace'](/\/+$/,''),_0x29f09c=_0x248bbd(_0x318def,_0x4e57a7);let _0x2c99d3;try{if('cszTU'==='ewRBn')return{'kind':'bare-rn-needs-manual'};else _0x2c99d3=readdirSync(_0x29f09c,{'withFileTypes':!![]});}catch{return[];}const _0x26ed97=[];for(const _0x1497ec of _0x2c99d3){if(!_0x1497ec['isDirectory']())continue;if(_0x1497ec['name']['startsWith']('.'))continue;_0x26ed97[_0x16f08e(0x496)](_0x248bbd(_0x29f09c,_0x1497ec[_0x16f08e(0x4d1)]));}return _0x26ed97;}function _0x58646c(_0x56ab90){const _0x5c111f=_0x3ee7d6,_0x4ee676=process.env.CERAPH_PROJECT_DIR;if(_0x4ee676&&_0x4ee676[_0x5c111f(0x945)]>0x0){const _0x445b28=_0x4603f9(_0x4ee676)?_0x4ee676:resolve(_0x56ab90,_0x4ee676);return{'dir':_0x445b28,'reason':_0x5c111f(0x608)};}const _0xda815c=_0x5ed2da(_0x248bbd(_0x56ab90,_0x5c111f(0x833))),_0x591766=_0x870292(_0xda815c);if(_0x591766[_0x5c111f(0x64d)]||_0x591766['rn'])return{'dir':_0x56ab90,'reason':_0x5c111f(0x3d7)};const _0x3ab40c=_0x4eec9c(_0x56ab90);if(_0x3ab40c==null)return{'dir':_0x56ab90,'reason':_0x5c111f(0x646)};const _0x3ed0f4=new Set();for(const _0x55b618 of _0x3ab40c){for(const _0x207cda of _0x22778e(_0x56ab90,_0x55b618))_0x3ed0f4[_0x5c111f(0x5c1)](_0x207cda);}const _0x3a6f10=[];for(const _0x2792b6 of _0x3ed0f4){const _0x495799=_0x5ed2da(_0x248bbd(_0x2792b6,'package.json')),_0x1c3ec0=_0x870292(_0x495799),_0xbc72ce=_0x410dbc(_0x248bbd(_0x2792b6,'app.json'));if(!_0x1c3ec0['expo']&&!_0x1c3ec0['rn']&&!_0xbc72ce)continue;const _0x4ce7d9=_0x9c4193(_0x56ab90,_0x2792b6)[_0x5c111f(0x814)](_0x436d85)['join']('/');_0x3a6f10[_0x5c111f(0x496)]({'absPath':_0x2792b6,'relPath':_0x4ce7d9['length']>0x0?_0x4ce7d9:'.'});}_0x3a6f10['sort']((_0x4314b8,_0x1520a8)=>_0x4314b8['relPath']<_0x1520a8['relPath']?-0x1:_0x4314b8['relPath']>_0x1520a8['relPath']?0x1:0x0);if(_0x3a6f10[_0x5c111f(0x945)]===0x1){const _0x35d8ea=_0x3a6f10[0x0];return{'dir':_0x35d8ea['absPath'],'reason':'monorepo:\x20rooting\x20at\x20RN\x20app\x20'+_0x35d8ea['relPath']+'/'};}if(_0x3a6f10[_0x5c111f(0x945)]===0x0){if('qOtrT'!=='qOtrT')this['stderrBuffer'][_0x5c111f(0x496)](_0x31b2c3),this['stderrBuffer'][_0x5c111f(0x945)]>_0x116fcc&&this[_0x5c111f(0x4ee)][_0x5c111f(0x936)]();else return{'dir':_0x56ab90,'reason':_0x5c111f(0x6d0)};}const _0x4eaeec=_0x3a6f10[_0x5c111f(0x986)](_0x5e272e=>_0x5e272e['relPath'])['join'](',\x20');return{'dir':_0x56ab90,'reason':_0x5c111f(0x7d4)+_0x3a6f10[_0x5c111f(0x945)]+_0x5c111f(0x313)+_0x4eaeec+');\x20set\x20CERAPH_PROJECT_DIR\x20to\x20pick\x20one'};}function _0x423853(_0x5e7988,_0x464c38){if(!_0x5e7988||_0x5e7988['length']===0x0)return _0x464c38;const _0x5b0e07=_0x4603f9(_0x5e7988)?_0x5e7988:resolve(_0x464c38,_0x5e7988),_0x4c987c=_0x9c4193(_0x464c38,_0x5b0e07),_0x42589c=_0x4c987c===''||_0x4c987c!=='..'&&!_0x4c987c['startsWith']('..'+_0x436d85)&&!_0x4603f9(_0x4c987c);return _0x42589c?_0x464c38:_0x5b0e07;}import{access as _0x31a92e,readFile as _0x32a8a3}from'fs/promises';import{join as _0x160b18}from'path';import{spawn as _0x2f8580}from'child_process';import{readFile as _0x4c8d69,access as _0x46d5d2}from'fs/promises';import{join as _0x4f2615}from'path';var _0x35fdb1=[{'file':'pnpm-lock.yaml','pm':_0x3ee7d6(0x16e)},{'file':_0x3ee7d6(0x1e5),'pm':_0x3ee7d6(0x18b)},{'file':_0x3ee7d6(0x20d),'pm':_0x3ee7d6(0x307)},{'file':'bun.lock','pm':_0x3ee7d6(0x307)},{'file':_0x3ee7d6(0x66e),'pm':_0x3ee7d6(0x38f)}],_0x98210e='@ceraph/react-native-mcp';async function _0x4bc280(_0x1c12a9){try{return await _0x46d5d2(_0x1c12a9),!![];}catch{return![];}}async function _0x208245(_0xefd1e3){const _0x558db5=_0x3ee7d6;for(const {file:_0x57d658,pm:_0xf172d3}of _0x35fdb1){if(await _0x4bc280(_0x4f2615(_0xefd1e3,_0x57d658)))return _0xf172d3;}return _0x558db5(0x38f);}function _0x56b738(_0x1b47bf,_0x5c503b){const _0x20eb3c=_0x3ee7d6;switch(_0x1b47bf){case _0x20eb3c(0x16e):return{'bin':'pnpm','args':[_0x20eb3c(0x6f8),..._0x5c503b]};case _0x20eb3c(0x18b):return{'bin':'yarn','args':[_0x20eb3c(0x6f8),..._0x5c503b]};case _0x20eb3c(0x307):return{'bin':'bun','args':[_0x20eb3c(0x6f8),..._0x5c503b]};case'npm':return{'bin':_0x20eb3c(0x38f),'args':['uninstall',..._0x5c503b]};}}async function _0x5d9718(_0x2615bf,_0x4ad39a){const _0x2dc84d=_0x3ee7d6;let _0x5be81d;try{_0x5be81d=await _0x4c8d69(_0x4f2615(_0x2615bf,'package.json'),_0x2dc84d(0x29d));}catch{return[];}let _0x421f8f;try{_0x421f8f=JSON[_0x2dc84d(0x229)](_0x5be81d);}catch{return'prMim'!=='prMim'?{..._0x3f044e({'ok':![],'error':_0x67ca01}),'isError':!![]}:[];}if(!_0x421f8f||typeof _0x421f8f!==_0x2dc84d(0x5ab))return[];const _0x13888b=_0x421f8f[_0x2dc84d(0x5d2)]??{},_0x4dd825=_0x421f8f['devDependencies']??{};return _0x4ad39a[_0x2dc84d(0x65c)](_0x3fbb0d=>Boolean(_0x13888b[_0x3fbb0d]||_0x4dd825[_0x3fbb0d]));}async function _0x3048eb(_0x3e0461,_0x327c6a={}){const _0x143b0b=_0x3ee7d6,_0x5799db=await _0x208245(_0x3e0461),_0xfe0db1=[_0x98210e],_0x5e2df0=await _0x5d9718(_0x3e0461,_0xfe0db1);if(_0x5e2df0[_0x143b0b(0x945)]===0x0)return{'status':'nothing-to-remove','pm':_0x5799db,'removedPackages':[]};const _0x4a4d3a=_0x56b738(_0x5799db,_0x5e2df0),_0x54e8c2=_0x327c6a[_0x143b0b(0x3a6)]??_0x46d0b6,_0x2cc4f5=await _0x54e8c2({'bin':_0x4a4d3a[_0x143b0b(0x366)],'args':_0x4a4d3a[_0x143b0b(0x719)],'cwd':_0x3e0461});if(_0x2cc4f5['exitCode']!==0x0)return{'status':_0x143b0b(0x5fa),'pm':_0x5799db,'removedPackages':[],'command':_0x4a4d3a,'exitCode':_0x2cc4f5[_0x143b0b(0x186)]};return{'status':'removed','pm':_0x5799db,'removedPackages':_0x5e2df0,'command':_0x4a4d3a};}function _0x46d0b6(_0x59ca74){return new Promise(_0x352120=>{const _0x837cd3=_0x4a5a,_0x98d91b=_0x2f8580(_0x59ca74['bin'],_0x59ca74[_0x837cd3(0x719)],{'cwd':_0x59ca74[_0x837cd3(0x346)],'stdio':_0x837cd3(0x929)});_0x98d91b['on'](_0x837cd3(0x125),()=>_0x352120({'exitCode':0x7f})),_0x98d91b['on'](_0x837cd3(0x41e),_0x3fe2fb=>_0x352120({'exitCode':_0x3fe2fb??0x1}));});}import{readFile as _0x288d12,writeFile as _0x78a5fa}from'fs/promises';import{join as _0xbe326e}from'path';var _0x2da8a3,_0x49fc5d,_0x4f4216,_0x5b90b5,_0x5e0610=![];async function _0x32a1bc(){if(_0x5e0610)return;const _0x45eba8=await import('ts-morph');({IndentationText:_0x2da8a3,Node:_0x49fc5d,Project:_0x4f4216,SyntaxKind:_0x5b90b5}=_0x45eba8,_0x5e0610=!![]);}var _0x2596fe='@ceraph/react-native-mcp/shim',_0xe304a8='installCeraph';async function _0x462be6(_0x3467c4){try{return await _0x288d12(_0x3467c4,'utf-8'),!![];}catch{return![];}}async function _0x17e4ca(_0x386ade){const _0x448324=_0x3ee7d6,_0x257a53=_0xbe326e(_0x386ade,'app','_layout.tsx');if(await _0x462be6(_0x257a53))return{'kind':_0x448324(0x8a1),'filePath':_0x257a53};const _0x711ea0=_0xbe326e(_0x386ade,'app',_0x448324(0x4b1));if(await _0x462be6(_0x711ea0))return{'kind':_0x448324(0x8a1),'filePath':_0x711ea0};for(const _0x4985eb of['App.tsx','App.jsx']){const _0x17dce2=_0xbe326e(_0x386ade,_0x4985eb);if(await _0x462be6(_0x17dce2))return{'kind':_0x448324(0x46b),'filePath':_0x17dce2};}return null;}function _0x9ca9af(_0x3fc4ec){const _0x20c7a7=_0x3ee7d6;for(const _0xad70f3 of _0x3fc4ec['getFunctions']()){if(_0xad70f3['isDefaultExport']())return _0xad70f3;}const _0x2f0eb6=_0x3fc4ec['getStatements']()['find'](_0x1b5ed0=>_0x49fc5d['isExportAssignment'](_0x1b5ed0));if(_0x2f0eb6&&_0x49fc5d['isExportAssignment'](_0x2f0eb6)){const _0x23f2bd=_0x2f0eb6['getExpression']();if(_0x49fc5d['isIdentifier'](_0x23f2bd)){const _0x4a85a8=_0x23f2bd['getSymbol']();if(_0x4a85a8){const _0x28ad71=_0x4a85a8[_0x20c7a7(0x54f)]()[0x0];if(_0x28ad71&&_0x49fc5d[_0x20c7a7(0x5ee)](_0x28ad71)){const _0x513b7=_0x28ad71[_0x20c7a7(0x16c)]();if(_0x513b7&&_0x49fc5d['isArrowFunction'](_0x513b7))return _0x513b7;if(_0x513b7&&_0x49fc5d[_0x20c7a7(0x8d0)](_0x513b7))return _0x513b7;}}}if(_0x49fc5d[_0x20c7a7(0x60d)](_0x23f2bd))return _0x23f2bd;if(_0x49fc5d['isFunctionExpression'](_0x23f2bd))return _0x23f2bd;}return null;}function _0x30474d(_0x46966d){const _0x31d88a=_0x3ee7d6;if(_0x49fc5d['isExpressionStatement'](_0x46966d)){const _0x56d5ea=_0x46966d[_0x31d88a(0x45d)]();if(_0x49fc5d['isCallExpression'](_0x56d5ea)){if(_0x31d88a(0x488)===_0x31d88a(0x626))return![];else{const _0x1fd14f=_0x56d5ea[_0x31d88a(0x45d)]();if(_0x49fc5d[_0x31d88a(0x9c8)](_0x1fd14f)&&_0x1fd14f[_0x31d88a(0x326)]()===_0xe304a8)return!![];}}}return![];}function _0x3a6fa2(_0x8ad041){const _0x37eec1=_0x3ee7d6,_0x2db19d=_0x8ad041[_0x37eec1(0x6ae)]();if(_0x2db19d[_0x37eec1(0x945)]===0x0)return'unrelated';const _0x4f9b6d=_0x2db19d[0x0];let _0x3275a3=null;if(_0x49fc5d[_0x37eec1(0x60d)](_0x4f9b6d)||_0x49fc5d[_0x37eec1(0x8d0)](_0x4f9b6d)){const _0x35a341=_0x4f9b6d[_0x37eec1(0x848)]();if(_0x49fc5d[_0x37eec1(0x9f4)](_0x35a341))_0x3275a3=_0x35a341;else{if(_0x49fc5d[_0x37eec1(0x435)](_0x35a341)){const _0x379215=_0x35a341[_0x37eec1(0x45d)]();if(_0x49fc5d[_0x37eec1(0x9c8)](_0x379215)&&_0x379215['getText']()===_0xe304a8){if(_0x37eec1(0x37c)==='CqFYc')return'installCeraph-only';else{const _0x254662=_0x2c4156['parse'](_0x126272);if(!_0x254662||typeof _0x254662!==_0x37eec1(0x5ab)||_0x888765['isArray'](_0x254662))return null;return _0x254662;}}}return _0x37eec1(0x5f1);}}else return _0x37eec1(0x5f1);if(!_0x3275a3)return _0x37eec1(0x5f1);const _0x487567=_0x3275a3['getStatements']();if(_0x487567[_0x37eec1(0x945)]===0x0)return _0x37eec1(0x5f1);let _0x1706fb=![],_0x23b933=![];for(const _0x3b0eac of _0x487567){_0x30474d(_0x3b0eac)?_0x1706fb=!![]:_0x23b933=!![];}if(!_0x1706fb)return _0x37eec1(0x5f1);return _0x23b933?'installCeraph-with-others':_0x37eec1(0x72f);}function _0x22f203(_0x531ee2){const _0x391ffb=_0x3ee7d6,_0x34a3bc=_0x531ee2['getBody']();if(!_0x34a3bc||!_0x49fc5d[_0x391ffb(0x9f4)](_0x34a3bc))return[];const _0x4e85b9=[];return _0x34a3bc['forEachDescendant'](_0x45d60c=>{const _0x1bbceb=_0x391ffb;if(_0x49fc5d['isCallExpression'](_0x45d60c)){if('IAFUM'!==_0x1bbceb(0x730)){const _0x363053=_0x45d60c['getExpression']();_0x49fc5d['isIdentifier'](_0x363053)&&_0x363053[_0x1bbceb(0x326)]()===_0x1bbceb(0x5bc)&&_0x4e85b9['push'](_0x45d60c);}else return{'success':!![],'transport':_0x1bbceb(0x4bd)};}}),_0x4e85b9;}function _0x359d54(_0x3ece74){const _0x384d00=_0x3ee7d6,_0x14c0bc=_0x3ece74['getImportDeclaration']('react');if(!_0x14c0bc)return![];const _0x2088dc=_0x14c0bc[_0x384d00(0x865)](),_0x132ed4=_0x2088dc[_0x384d00(0x7bd)](_0x106b24=>_0x106b24[_0x384d00(0x33e)]()===_0x384d00(0x5bc));if(!_0x132ed4)return![];const _0x307e70=_0x132ed4['getAliasNode']();if(_0x307e70)return![];let _0x22e01b=![];_0x3ece74['forEachDescendant'](_0x83549e=>{const _0x28f2f5=_0x384d00;if(_0x22e01b)return;if(_0x49fc5d['isIdentifier'](_0x83549e)&&_0x83549e[_0x28f2f5(0x326)]()==='useEffect'){const _0x48ed82=_0x83549e[_0x28f2f5(0x43d)]();if(_0x48ed82&&(_0x49fc5d[_0x28f2f5(0x1cb)](_0x48ed82)||_0x49fc5d[_0x28f2f5(0x146)](_0x48ed82)))return;_0x22e01b=!![];}});if(_0x22e01b)return![];_0x132ed4['remove']();const _0x25302c=_0x14c0bc[_0x384d00(0x865)](),_0x558839=_0x14c0bc['getDefaultImport']()!=null,_0x1ceb9f=_0x14c0bc['getNamespaceImport']()!=null;return _0x25302c['length']===0x0&&!_0x558839&&!_0x1ceb9f&&_0x14c0bc[_0x384d00(0x6f8)](),!![];}function _0x1595fb(_0x1b33e8){const _0x7aff30=_0x3ee7d6,_0x4cad60=_0x1b33e8['getImportDeclaration'](_0x2596fe);if(!_0x4cad60)return![];const _0x1b2ae5=_0x4cad60['getNamedImports'](),_0x678091=_0x1b2ae5['find'](_0x3197fa=>_0x3197fa['getName']()===_0xe304a8);if(!_0x678091)return![];_0x678091['remove']();const _0xb89e5a=_0x4cad60['getNamedImports'](),_0x92a008=_0x4cad60['getDefaultImport']()!=null;return _0xb89e5a[_0x7aff30(0x945)]===0x0&&!_0x92a008&&_0x4cad60[_0x7aff30(0x6f8)](),!![];}async function _0xf44b30(_0xd9aba6){const _0x400abb=_0x3ee7d6;await _0x32a1bc();const _0x575f90=await _0x17e4ca(_0xd9aba6);if(!_0x575f90){if(_0x400abb(0x215)!==_0x400abb(0x215)){const _0x161d49=_0x2910db['getClosingElement']();_0x161d49[_0x400abb(0x800)]()[_0x400abb(0x9ac)](_0x400abb(0x698));}else return{'status':'no-layout-found'};}const _0x4e82db=new _0x4f4216({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1},'manipulationSettings':{'indentationText':_0x2da8a3[_0x400abb(0x806)]}}),_0x2b0a31=_0x4e82db['addSourceFileAtPath'](_0x575f90['filePath']),_0x235297=_0x9ca9af(_0x2b0a31);if(!_0x235297){const _0xe5cf1b=_0x1595fb(_0x2b0a31);if(_0xe5cf1b)return await _0x78a5fa(_0x575f90[_0x400abb(0x4e3)],_0x2b0a31['getFullText'](),'utf-8'),{'status':'reverted','target':_0x575f90,'removedUseEffect':![],'removedImport':!![]};return{'status':_0x400abb(0x33c),'target':_0x575f90};}const _0x194965=_0x22f203(_0x235297),_0x20949f=_0x194965[_0x400abb(0x986)](_0x2accde=>({'call':_0x2accde,'kind':_0x3a6fa2(_0x2accde)})),_0x555df2=_0x20949f['filter'](_0x194055=>_0x194055['kind']==='installCeraph-only'),_0x283141=_0x20949f['filter'](_0x57923b=>_0x57923b['kind']===_0x400abb(0x43c));if(_0x283141[_0x400abb(0x945)]>0x0)return{'status':_0x400abb(0x797),'target':_0x575f90,'reason':'useEffect\x20contains\x20other\x20statements'};let _0x5d2237=![];for(const _0x12a5a3 of _0x555df2){const _0x602ca8=_0x12a5a3['call']['getFirstAncestorByKind'](_0x5b90b5[_0x400abb(0x43e)]);_0x602ca8&&(_0x602ca8[_0x400abb(0x6f8)](),_0x5d2237=!![]);}const _0x599bb5=_0x1595fb(_0x2b0a31);_0x5d2237&&_0x359d54(_0x2b0a31);if(!_0x5d2237&&!_0x599bb5)return{'status':'already-reverted','target':_0x575f90};return await _0x78a5fa(_0x575f90['filePath'],_0x2b0a31[_0x400abb(0x4e0)](),_0x400abb(0x29d)),{'status':'reverted','target':_0x575f90,'removedUseEffect':_0x5d2237,'removedImport':_0x599bb5};}import{readFile as _0x35b4e2,unlink as _0x3ec90d,writeFile as _0x18cfde}from'fs/promises';import{join as _0x5cf808}from'path';var _0x4296a4=['.rn-errors.json',_0x3ee7d6(0x671),_0x3ee7d6(0x976),_0x3ee7d6(0x95c),'.ceraph/last-build-snapshot.json'],_0x211ba9=[_0x3ee7d6(0x8b8),'.rn-flow-progress.json'];async function _0x40c08f(_0x5af5f2,_0x2db266={}){const _0x183680=_0x3ee7d6,_0x13e489=_0x5cf808(_0x5af5f2,'.gitignore'),_0x310edc=_0x2db266['readFile']??(_0x4a67ad=>_0x35b4e2(_0x4a67ad,_0x183680(0x29d))),_0xcb524a=_0x2db266[_0x183680(0x352)]??((_0x347ebe,_0x4f4b83)=>_0x18cfde(_0x347ebe,_0x4f4b83,'utf-8')),_0x4f472b=_0x2db266[_0x183680(0x91d)]??(_0x4723ed=>_0x3ec90d(_0x4723ed)),_0x15e28e=[];for(const _0x52352e of _0x211ba9){const _0x81b8a3=_0x5cf808(_0x5af5f2,_0x52352e);try{await _0x4f472b(_0x81b8a3),_0x15e28e['push'](_0x52352e);}catch{}}let _0xd1da18;try{_0xd1da18=await _0x310edc(_0x13e489);}catch{return{'status':_0x183680(0x23b),'path':_0x13e489,'removedRuntimeFiles':_0x15e28e};}const _0x53dbf7=_0xd1da18[_0x183680(0x3f0)]('\x0a'),_0x3b6fdf=_0xd1da18['split'](/\r?\n/);_0x53dbf7&&_0x3b6fdf[_0x183680(0x945)]>0x0&&_0x3b6fdf[_0x3b6fdf['length']-0x1]===''&&_0x3b6fdf['pop']();const _0x5710b0=new Set(_0x4296a4),_0x299820=[],_0x22e5a5=[];for(const _0x2b416e of _0x3b6fdf){if(_0x5710b0[_0x183680(0x21c)](_0x2b416e[_0x183680(0x5da)]())){_0x299820['push'](_0x2b416e);continue;}_0x22e5a5[_0x183680(0x496)](_0x2b416e);}if(_0x299820[_0x183680(0x945)]===0x0)return{'status':_0x183680(0x33c),'path':_0x13e489,'removedRuntimeFiles':_0x15e28e};const _0x35ec61=_0x53dbf7?_0x22e5a5['join']('\x0a')+'\x0a':_0x22e5a5['join']('\x0a');return await _0xcb524a(_0x13e489,_0x35ec61),{'status':'reverted','path':_0x13e489,'removedLines':_0x299820,'removedRuntimeFiles':_0x15e28e};}async function _0x48b8d5(_0x5103ab){try{return await _0x31a92e(_0x5103ab),!![];}catch{return![];}}async function _0x4049d7(_0x22a42a){const _0x1d0948=_0x3ee7d6;try{const _0x11c454=await _0x32a8a3(_0x160b18(_0x22a42a,'package.json'),_0x1d0948(0x29d));return JSON['parse'](_0x11c454);}catch{return null;}}async function _0x109f6a(_0x9a496c){const _0x5bd51f=_0x3ee7d6,_0x5053cf=_0x160b18(_0x9a496c,_0x5bd51f(0x4a6));let _0x168d85;try{_0x168d85=await _0x32a8a3(_0x5053cf,'utf-8');}catch{return[];}return _0x4296a4['filter'](_0x2abeb4=>_0x168d85['split'](/\r?\n/)['some'](_0x2d899b=>_0x2d899b[_0x5bd51f(0x5da)]()===_0x2abeb4));}async function _0x1b696a(_0xd624cf){const _0x3ffd8a=_0x3ee7d6,_0x17a75f=_0x160b18(_0xd624cf,'app.json');let _0x29f0f5;try{_0x29f0f5=await _0x32a8a3(_0x17a75f,_0x3ffd8a(0x29d));}catch{return null;}let _0x563d6f;try{_0x563d6f=JSON['parse'](_0x29f0f5);}catch{return null;}const _0x38c973=_0x563d6f[_0x3ffd8a(0x64d)]?.[_0x3ffd8a(0x389)];if(typeof _0x38c973==='string')return _0x38c973===_0x3ffd8a(0x650);if(Array['isArray'](_0x38c973))return _0x38c973['includes'](_0x3ffd8a(0x650));return![];}async function _0x47d162(_0x57d1c2){const _0x23c37a=_0x3ee7d6,_0x50cf08=[_0x23c37a(0x44c),'src','screens'],_0x39991c=new Set(['.tsx',_0x23c37a(0x9c4)]),_0x42facb=new Set([_0x23c37a(0x9c9),_0x23c37a(0x166),_0x23c37a(0x17d),'.git',_0x23c37a(0x5d3),'.expo','.next',_0x23c37a(0x5c2),'android']);let _0x2ef184=0x0;const _0x1b5715=async _0x161ec8=>{const _0x40b876=_0x23c37a;let _0x227856;try{const {readdir:_0x1e24a3}=await import('fs/promises');_0x227856=await _0x1e24a3(_0x161ec8,{'withFileTypes':!![]});}catch{return;}for(const _0x92864a of _0x227856){if(_0x92864a[_0x40b876(0x42a)]()){if(_0x42facb[_0x40b876(0x21c)](_0x92864a['name']))continue;await _0x1b5715(_0x160b18(_0x161ec8,_0x92864a[_0x40b876(0x4d1)]));continue;}if(!_0x92864a[_0x40b876(0x7ab)]())continue;const _0x4a3e9a=_0x92864a['name'][_0x40b876(0x64b)]('.');if(_0x4a3e9a<0x0)continue;const _0x3676ff=_0x92864a['name']['slice'](_0x4a3e9a)[_0x40b876(0x17e)]();if(!_0x39991c[_0x40b876(0x21c)](_0x3676ff))continue;try{const _0x21d740=await _0x32a8a3(_0x160b18(_0x161ec8,_0x92864a[_0x40b876(0x4d1)]),_0x40b876(0x29d)),_0x2accac=_0x21d740['match'](/<CeraphCamera/g);if(_0x2accac)_0x2ef184+=_0x2accac['length'];}catch{}}};for(const _0x4c5f63 of _0x50cf08){await _0x1b5715(_0x160b18(_0x57d1c2,_0x4c5f63));}for(const _0x1a5ff2 of['App.tsx',_0x23c37a(0x754)]){try{const _0x290778=await _0x32a8a3(_0x160b18(_0x57d1c2,_0x1a5ff2),_0x23c37a(0x29d)),_0x29cfd4=_0x290778['match'](/<CeraphCamera/g);if(_0x29cfd4)_0x2ef184+=_0x29cfd4['length'];}catch{}}return _0x2ef184;}async function _0x3a7f9c(_0x51ef8e,_0x485806){const _0x4d8475=_0x3ee7d6,_0x38c346=async(_0x13784b,_0x583343)=>{const _0x5702f9=_0x4a5a;try{const _0x18ddbd=await _0x32a8a3(_0x13784b,_0x5702f9(0x29d));if(_0x583343===_0x5702f9(0x732)){const _0x454456=JSON['parse'](_0x18ddbd),_0x57e4cb=_0x454456['mcpServers']??{};return Boolean(_0x57e4cb[_0x5702f9(0x954)]||_0x57e4cb['mobile-mcp']);}return _0x18ddbd[_0x5702f9(0x83f)]('[mcp_servers.react-native-mcp]')||_0x18ddbd[_0x5702f9(0x83f)]('[mcp_servers.mobile-mcp]');}catch{return![];}},_0x593b8b=async _0x387fc6=>{const _0x539569=_0x4a5a;try{const _0x35d200=await _0x32a8a3(_0x387fc6,_0x539569(0x29d)),_0xd310ac=JSON[_0x539569(0x229)](_0x35d200),_0x23cc41=_0xd310ac[_0x539569(0x780)];return Array['isArray'](_0x23cc41)&&_0x23cc41[_0x539569(0x83f)](_0x47a2a3);}catch{if('AbKcO'===_0x539569(0x580)){const _0x351115=_0x50ca3a(_0x51e27a)??'path:'+_0x1e0ff7['join']('.'),_0x213182=typeof _0x5d0d57[_0x539569(0x85c)]==='string'?_0x51ae7e(_0xde96cf['type']):void 0x0;_0x2efd29[_0x539569(0x496)]({'id':_0x351115,'bounds':_0x1588fb,'visible':_0x32899b['w']>0x0&&_0x2bdf55['h']>0x0,..._0x213182?{'kind':_0x213182}:{}});}else return![];}},_0x4b8d8b=_0x6b1b18(_0x485806||void 0x0),_0x53b7b4={};for(const _0x252642 of _0x4b8d8b)_0x53b7b4[_0x252642[_0x4d8475(0x10d)]]=_0x252642[_0x4d8475(0x4ff)];return{'claudeCode':await _0x38c346(_0x160b18(_0x51ef8e,'.mcp.json'),'json'),'cursor':await _0x38c346(_0x160b18(_0x51ef8e,_0x4d8475(0x4e2),'mcp.json'),'json'),'codex':await _0x38c346(_0x160b18(_0x51ef8e,'.codex',_0x4d8475(0x97a)),'toml'),'vscode':await _0x38c346(_0x160b18(_0x51ef8e,_0x4d8475(0x390),_0x4d8475(0x5b6)),'json'),'windsurf':_0x485806?await _0x38c346(_0x53b7b4['Windsurf']??'',_0x4d8475(0x732)):![],'antigravity':_0x485806?await _0x38c346(_0x53b7b4[_0x4d8475(0x9aa)]??'',_0x4d8475(0x732)):![],'claudePreApproval':await _0x593b8b(_0x160b18(_0x51ef8e,_0x4c5900))};}async function _0x2c1120(_0x1c2238){const _0xd6ac94=_0x3ee7d6,_0x22f41d=await _0x48b8d5(_0x160b18(_0x1c2238,..._0x4be8ae)),_0x2b0481=await _0x48b8d5(_0x160b18(_0x1c2238,..._0x3ccf14));let _0x3126b4=![];for(const _0x352cf6 of _0x308fed){const _0x6bcd63=_0x160b18(_0x1c2238,..._0x352cf6);let _0x3a1835;try{_0x3a1835=await _0x32a8a3(_0x6bcd63,'utf-8');}catch{if(_0xd6ac94(0x9a1)!==_0xd6ac94(0x9a1))try{this['onSignal'](_0x189e97);}catch{}else continue;}let _0xd88619;try{_0xd88619=JSON['parse'](_0x3a1835);}catch{continue;}if(!_0xd88619||typeof _0xd88619!=='object'||Array['isArray'](_0xd88619))continue;const _0x20f23c=_0xd88619[_0xd6ac94(0x6d5)];if(!_0x20f23c||typeof _0x20f23c!=='object'||Array['isArray'](_0x20f23c))continue;const _0x3c6a8c=_0x20f23c['FileChanged'];if(!Array['isArray'](_0x3c6a8c))continue;for(const _0x2fef85 of _0x3c6a8c){if(!_0x2fef85||typeof _0x2fef85!==_0xd6ac94(0x5ab)||Array['isArray'](_0x2fef85))continue;const _0xfcbfb5=_0x2fef85,_0x5e93bd=_0xfcbfb5['matcher'];if(_0x5e93bd!==_0x2781c8&&_0x5e93bd!==_0x352f9a)continue;const _0x4b9a55=_0x5e93bd===_0x2781c8?_0x3f0d94:_0x589268,_0x3d7e96=_0xfcbfb5['hooks'];if(!Array[_0xd6ac94(0x246)](_0x3d7e96))continue;for(const _0x512fb7 of _0x3d7e96){if(!_0x512fb7||typeof _0x512fb7!=='object'||Array[_0xd6ac94(0x246)](_0x512fb7))continue;const _0x29d353=_0x512fb7[_0xd6ac94(0x850)];if(typeof _0x29d353==='string'&&_0x29d353===_0x4b9a55){_0x3126b4=!![];break;}}if(_0x3126b4)break;}if(_0x3126b4)break;}return{'errorScript':_0x22f41d,'flowProgressScript':_0x2b0481,'settingsEntries':_0x3126b4};}async function _0x568a61(_0x4edac6,_0x5239a8={}){const _0x1bf9f5=_0x3ee7d6,_0x290372=_0x5239a8['detectMonorepo']??_0x1dcc30,_0x22da43=await _0x290372(_0x4edac6);let _0x40df90=_0x4edac6,_0x5e960e=null;if(_0x22da43[_0x1bf9f5(0x3ea)]===_0x1bf9f5(0x13e)&&_0x22da43[_0x1bf9f5(0x223)][0x0])_0x40df90=_0x22da43[_0x1bf9f5(0x223)][0x0]['absPath'];else _0x22da43['kind']===_0x1bf9f5(0x6d8)&&(_0x5e960e={'matches':_0x22da43[_0x1bf9f5(0x223)][_0x1bf9f5(0x986)](_0x663076=>({'relPath':_0x663076['relPath'],'absPath':_0x663076['absPath']}))});const _0x729ca6=_0x5239a8['homeDir']?.()??process.env.HOME??process.env.USERPROFILE??'',_0x2e60f3=await _0x4049d7(_0x40df90),_0x4bfb73={..._0x2e60f3?.['dependencies']??{},..._0x2e60f3?.[_0x1bf9f5(0x619)]??{}},_0x5e7e6b=Boolean(_0x4bfb73['@ceraph/react-native-mcp']),_0x5e740a=Boolean(_0x4bfb73[_0x1bf9f5(0x3af)]),_0x35c83b=await _0x208245(_0x40df90),_0x34a0fd=await _0x109f6a(_0x40df90),_0x348c19=await _0x1b696a(_0x40df90),_0x4b4b58=await _0x17e4ca(_0x40df90);let _0x536914=null;if(_0x4b4b58)try{const _0x5d73c1=await _0x32a8a3(_0x4b4b58[_0x1bf9f5(0x4e3)],'utf-8');_0x536914=_0x5d73c1[_0x1bf9f5(0x83f)]('installCeraph(');}catch{_0x536914=null;}const _0x758751=await _0x47d162(_0x40df90),_0x3b0b7e=_0x5239a8['rootDir']??_0x4edac6,_0x4c03f6=await _0x3a7f9c(_0x3b0b7e,_0x729ca6),_0x4cfa59=await _0x2c1120(_0x3b0b7e),_0x4fcbdc=await _0x48b8d5(_0x160b18(_0x40df90,'.ceraph')),_0x54e36d=_0x729ca6?await _0x48b8d5(_0x160b18(_0x729ca6,_0x1bf9f5(0x5d3),_0x1bf9f5(0x65b))):![];return{'workingDir':_0x40df90,'monorepoConflict':_0x5e960e,'packageInstalled':_0x5e7e6b,'packageManager':_0x35c83b,'appiumPresent':_0x5e740a,'gitignoreEntriesPresent':_0x34a0fd[_0x1bf9f5(0x945)]>0x0,'gitignoreEntries':_0x34a0fd,'schemeRegistered':_0x348c19,'bootTargetPath':_0x4b4b58?.['filePath']??null,'bootInjected':_0x536914,'ceraphCameraUsageCount':_0x758751,'mcpClientsConfigured':_0x4c03f6,'claudeHooksPresent':_0x4cfa59,'ceraphDirPresent':_0x4fcbdc,'authPresent':_0x54e36d};}import{copyFile,mkdir as _0x43803f,readFile as _0x237bd6,rm as _0x26810f,stat as _0x2f1731}from'fs/promises';import{tmpdir,homedir as _0x4216fd}from'os';import{dirname as _0x4ab8ef,isAbsolute as _0xed2b57,join as _0x8c8eb4,relative as _0x5a8767}from'path';import{readFile as _0x249fcb,writeFile as _0x40fc5a}from'fs/promises';import{homedir as _0x3501d3}from'os';import{join as _0x454d7d}from'path';var _0x30f2d5=_0x3ee7d6(0x5d0),_0x188ac3='#\x20End\x20Ceraph\x20signal\x20host';function _0x458f5a(_0x2a1f1e={}){const _0x5e3343=_0x3ee7d6,_0x3b1732=_0x2a1f1e[_0x5e3343(0x9a5)]??process.env,_0x2626ce=_0x2a1f1e[_0x5e3343(0x2dd)]??_0x3501d3(),_0xb6f7c9=_0x3b1732['SHELL']??'';if(_0xb6f7c9[_0x5e3343(0x3f0)]('/bash'))return{'path':_0x454d7d(_0x2626ce,_0x5e3343(0x2b0)),'shell':'bash'};return{'path':_0x454d7d(_0x2626ce,_0x5e3343(0x2e5)),'shell':'zsh'};}async function _0x32389c(_0x40456c={}){const _0x1a02c3=_0x3ee7d6,_0xcd062b=_0x40456c['target']??_0x458f5a({'env':_0x40456c['env'],'home':_0x40456c[_0x1a02c3(0x2dd)]}),_0x548c4f=_0x40456c[_0x1a02c3(0x18d)]??(_0xbb24f8=>_0x249fcb(_0xbb24f8,_0x1a02c3(0x29d))),_0x15cb6e=_0x40456c[_0x1a02c3(0x352)]??((_0x1811b6,_0x700da3)=>_0x40fc5a(_0x1811b6,_0x700da3,'utf-8'));let _0x3e799c;try{_0x3e799c=await _0x548c4f(_0xcd062b[_0x1a02c3(0x4ff)]);}catch{return{'status':'no-profile','path':_0xcd062b[_0x1a02c3(0x4ff)],'shell':_0xcd062b[_0x1a02c3(0x4d4)]};}const _0x56cbbd=_0x3e799c[_0x1a02c3(0x747)](_0x30f2d5);if(_0x56cbbd===-0x1)return{'status':_0x1a02c3(0x33c),'path':_0xcd062b['path'],'shell':_0xcd062b[_0x1a02c3(0x4d4)]};const _0x539d16=_0x3e799c[_0x1a02c3(0x747)](_0x188ac3,_0x56cbbd);if(_0x539d16===-0x1)return{'status':'already-reverted','path':_0xcd062b['path'],'shell':_0xcd062b[_0x1a02c3(0x4d4)]};const _0x542f2f=_0x539d16+_0x188ac3[_0x1a02c3(0x945)],_0x285c66=_0x3e799c[_0x542f2f]==='\x0a'?_0x542f2f+0x1:_0x542f2f,_0x3f65b4=_0x3e799c[_0x1a02c3(0x63b)](_0x56cbbd,_0x285c66),_0x3407d1=_0x3f65b4[_0x1a02c3(0x678)](/export\s+CERAPH_SIGNAL_HOST=(\S+)/),_0x2af25a=_0x3407d1?_0x3407d1[0x1]:null;let _0x9d164d=_0x56cbbd;if(_0x9d164d>=0x1&&_0x3e799c[_0x9d164d-0x1]==='\x0a'){if('kfyxp'==='kfyxp')_0x9d164d>=0x2&&_0x3e799c[_0x9d164d-0x2]==='\x0a'&&(_0x9d164d-=0x1);else{const _0x4e80bf=_0x395752[_0x1a02c3(0x4da)](0x0,_0x43d67d['w'])*_0x5d8b5e[_0x1a02c3(0x4da)](0x0,_0x1aebc3['h']);if(_0x4e80bf>_0x435408)return _0x1a02c3(0x270);if(_0x2424b0==='added'||_0x45c209===_0x1a02c3(0x62c)){if(_0x4f42d1[_0x1a02c3(0x3ea)]&&_0x357a08[_0x1a02c3(0x21c)](_0x290395[_0x1a02c3(0x3ea)]))return _0x1a02c3(0x270);}return _0x1a02c3(0x579);}}const _0x48fb1f=_0x3e799c['slice'](0x0,_0x9d164d)+_0x3e799c[_0x1a02c3(0x63b)](_0x285c66);return await _0x15cb6e(_0xcd062b[_0x1a02c3(0x4ff)],_0x48fb1f),{'status':_0x1a02c3(0x400),'path':_0xcd062b[_0x1a02c3(0x4ff)],'shell':_0xcd062b['shell'],'removedIp':_0x2af25a};}import{rm as _0x16e984,readdir as _0x352d39,stat as _0x35073a}from'fs/promises';import{join as _0x8fc5f6}from'path';async function _0x25fd85(_0x5ee640,_0x5139b1){try{const _0x1f7e61=await _0x5139b1(_0x5ee640);return _0x1f7e61['isDirectory']();}catch{return![];}}async function _0x403304(_0x392c3f,_0x4b2483={}){const _0x365cc2=_0x3ee7d6,_0x38ea0f=_0x8fc5f6(_0x392c3f[_0x365cc2(0x1f7)],'.ceraph'),_0x1de502=_0x4b2483['rm']??((_0x175a63,_0x121f47)=>_0x16e984(_0x175a63,_0x121f47)),_0x236307=_0x4b2483['readdir']??(_0x16f6f9=>_0x352d39(_0x16f6f9)),_0x1c3855=_0x4b2483['stat']??(_0x6d997c=>_0x35073a(_0x6d997c)),_0x4112e4=await _0x25fd85(_0x38ea0f,_0x1c3855);if(!_0x4112e4)return{'status':_0x365cc2(0x33c),'path':_0x38ea0f};let _0x728fb=[];try{_0x728fb=await _0x236307(_0x38ea0f);}catch{_0x728fb=[];}_0x728fb[_0x365cc2(0x837)]();if(!_0x392c3f[_0x365cc2(0xe4)])return{'status':'skipped-needs-confirmation','path':_0x38ea0f,'paths':_0x728fb['map'](_0x459bf3=>_0x8fc5f6(_0x38ea0f,_0x459bf3))};return await _0x1de502(_0x38ea0f,{'recursive':!![],'force':!![]}),{'status':_0x365cc2(0x2aa),'path':_0x38ea0f,'deletedEntries':_0x728fb};}import{rmdir,unlink as _0x23935b}from'fs/promises';import{homedir as _0x3417a2}from'os';import{dirname as _0x333faa,join as _0xd7bba8}from'path';function _0x4291aa(_0x2f7348={}){const _0x449dcb=_0x3ee7d6;return _0xd7bba8(_0x2f7348[_0x449dcb(0x2dd)]??_0x3417a2(),'.ceraph','auth.json');}async function _0x1055a3(_0xded9e2,_0x454705={}){const _0x530e5e=_0x3ee7d6,_0x5ca5b1=_0x4291aa({'home':_0x454705['home']}),_0x4a18e2=_0x454705[_0x530e5e(0x91d)]??(_0x3db2f2=>_0x23935b(_0x3db2f2));if(!_0xded9e2['global'])return{'status':_0x530e5e(0x797),'path':_0x5ca5b1,'note':'Pass\x20global:\x20true\x20to\x20remove\x20~/.ceraph/auth.json\x20—\x20the\x20token\x20is\x20user-global\x20and\x20removing\x20it\x20logs\x20you\x20out\x20of\x20every\x20Ceraph\x20install.'};const _0x153fcc=_0x454705[_0x530e5e(0x8b9)]??(_0x4a35f8=>rmdir(_0x4a35f8));try{await _0x4a18e2(_0x5ca5b1);try{await _0x153fcc(_0x333faa(_0x5ca5b1));}catch{}return{'status':_0x530e5e(0x2aa),'path':_0x5ca5b1};}catch(_0x224a19){const _0x47af0d=typeof _0x224a19==='object'&&_0x224a19!==null&&_0x530e5e(0x845)in _0x224a19&&_0x224a19['code']==='ENOENT';if(_0x47af0d){try{await _0x153fcc(_0x333faa(_0x5ca5b1));}catch{}return{'status':'already-reverted','path':_0x5ca5b1};}throw _0x224a19;}}import{readFile as _0x2cedb2,writeFile as _0x563cda,unlink as _0x2d2069}from'fs/promises';import{join as _0x45db3d}from'path';import{Project as _0x324479,SyntaxKind as _0x242cec}from'ts-morph';var _0x46d00c=[_0x401f2b('babel-preset-expo'),_0x401f2b('@react-native/babel-preset')];async function _0x58b046(_0x9170da){const _0x43e42f=_0x3ee7d6,_0x3c01b8=_0x9170da['readFile']??(_0x36104c=>_0x2cedb2(_0x36104c,_0x43e42f(0x29d))),_0x1936cd=_0x9170da['writeFile']??((_0x282245,_0x299e18)=>_0x563cda(_0x282245,_0x299e18,'utf-8')),_0x6b28ab=_0x9170da[_0x43e42f(0x91d)]??(_0x366471=>_0x2d2069(_0x366471));let _0x58a013,_0x492fb2;for(const _0xc44a97 of _0x475b28){const _0x80f455=_0x45db3d(_0x9170da['projectDir'],_0xc44a97);try{_0x492fb2=await _0x3c01b8(_0x80f455),_0x58a013=_0x80f455;break;}catch{}}if(!_0x58a013||_0x492fb2===void 0x0)return{'status':_0x43e42f(0x8f2)};if(!_0x492fb2['includes'](_0x409084))return{'status':'already-reverted','path':_0x58a013};if(_0x46d00c[_0x43e42f(0x83f)](_0x492fb2))return await _0x6b28ab(_0x58a013),{'status':_0x43e42f(0x400),'path':_0x58a013,'action':_0x43e42f(0x2aa)};const _0x33d01b=new _0x324479({'useInMemoryFileSystem':!![]}),_0x252353=_0x33d01b[_0x43e42f(0x934)]('babel.config.js',_0x492fb2);let _0x38eb59=![];_0x252353[_0x43e42f(0x631)](_0x31833d=>{const _0x507314=_0x43e42f;if(_0x38eb59)return;if(_0x31833d['getKind']()!==_0x242cec['ArrayLiteralExpression'])return;const _0x650de6=_0x31833d,_0x4d3ccb=_0x650de6['getElements']();for(let _0x379d96=0x0;_0x379d96<_0x4d3ccb['length'];_0x379d96++){if(_0x4d3ccb[_0x379d96][_0x507314(0x326)]()['includes'](_0x409084)){_0x650de6[_0x507314(0xd8)](_0x379d96),_0x38eb59=!![];break;}}});if(!_0x38eb59)return{'status':'already-reverted','path':_0x58a013};return await _0x1936cd(_0x58a013,_0x252353[_0x43e42f(0x4e0)]()),{'status':_0x43e42f(0x400),'path':_0x58a013,'action':_0x43e42f(0x338)};}import{readFile as _0x3b4678,writeFile as _0x4180b1,access as _0x2aac2e}from'fs/promises';import{join as _0x5d25aa}from'path';var _0x4b5127='ceraph';async function _0x39ea7d(_0xde4622){try{return await _0x2aac2e(_0xde4622),!![];}catch{return![];}}function _0x43e938(_0x2ce821){const _0x26ff77=_0x3ee7d6;if(!_0x2ce821['expo']||typeof _0x2ce821['expo']!=='object')return{'changed':![],'previousScheme':void 0x0,'nextScheme':void 0x0};const _0xe328b0=_0x2ce821[_0x26ff77(0x64d)],_0x493be1=_0xe328b0['scheme'];if(typeof _0x493be1===_0x26ff77(0x7fd)){if(_0x493be1===_0x4b5127)return delete _0xe328b0[_0x26ff77(0x389)],{'changed':!![],'previousScheme':_0x493be1,'nextScheme':void 0x0};return{'changed':![],'previousScheme':_0x493be1,'nextScheme':_0x493be1};}if(Array[_0x26ff77(0x246)](_0x493be1)){const _0x12f48b=_0x493be1['includes'](_0x4b5127);if(!_0x12f48b)return{'changed':![],'previousScheme':[..._0x493be1],'nextScheme':[..._0x493be1]};const _0x475c10=_0x493be1[_0x26ff77(0x65c)](_0x5335a0=>_0x5335a0!==_0x4b5127),_0x73b5de=[..._0x493be1];if(_0x475c10['length']===0x0)return delete _0xe328b0[_0x26ff77(0x389)],{'changed':!![],'previousScheme':_0x73b5de,'nextScheme':void 0x0};if(_0x475c10[_0x26ff77(0x945)]===0x1)return _0xe328b0[_0x26ff77(0x389)]=_0x475c10[0x0],{'changed':!![],'previousScheme':_0x73b5de,'nextScheme':_0x475c10[0x0]};return _0xe328b0['scheme']=_0x475c10,{'changed':!![],'previousScheme':_0x73b5de,'nextScheme':_0x475c10};}return{'changed':![],'previousScheme':void 0x0,'nextScheme':void 0x0};}function _0x521e4e(_0x2a9804){const _0x485fcd=_0x3ee7d6;try{const _0x4677ac=JSON[_0x485fcd(0x229)](_0x2a9804);if(!_0x4677ac||typeof _0x4677ac!==_0x485fcd(0x5ab)||Array[_0x485fcd(0x246)](_0x4677ac))return null;return _0x4677ac;}catch{return null;}}function _0x4e3a3a(_0x93a969,_0x4d422b){const _0x274916=_0x3ee7d6,_0x13bcaf=_0x4d422b[_0x274916(0x678)](/\n(\s+)"/),_0x27da3a=_0x13bcaf?.[0x1]??'\x20\x20',_0x5b7766=_0x4d422b[_0x274916(0x3f0)]('\x0a'),_0x27b64a=JSON[_0x274916(0x2c1)](_0x93a969,null,_0x27da3a);return _0x5b7766?_0x27b64a+'\x0a':_0x27b64a;}var _0x3f556c='Remove\x20the\x20ceraph\x20scheme\x20from\x20ios/<App>/Info.plist\x20CFBundleURLTypes\x20and\x20android/app/src/main/AndroidManifest.xml.\x20Both\x20files\x20were\x20never\x20written\x20by\x20init\x20—\x20they\x20require\x20manual\x20edits\x20because\x20they\x20are\x20inside\x20the\x20customer\x27s\x20native\x20project\x20tree.';function _0x4f72a4(_0x5e1078){const _0xe90f92=_0x3ee7d6;return _0xe90f92(0x26e)+_0x5e1078+'\x20(dynamic\x20Expo\x20config).\x20The\x20init\x20walkthrough\x20never\x20edited\x20this\x20file\x20automatically;\x20if\x20you\x20(or\x20a\x20teammate)\x20added\x20`ceraph`\x20to\x20its\x20`scheme`\x20value,\x20remove\x20that\x20entry\x20by\x20hand.\x20After\x20editing,\x20run\x20`expo\x20prebuild\x20--clean`\x20or\x20restart\x20the\x20dev\x20client.';}async function _0x395e50(_0x4ec8b5,_0x2a6b03={}){const _0x1a5e78=_0x3ee7d6,_0x322ec1=_0x2a6b03['fileExists']??_0x39ea7d,_0x1de5f7=_0x2a6b03[_0x1a5e78(0x18d)]??(_0x57e01e=>_0x3b4678(_0x57e01e,_0x1a5e78(0x29d))),_0x446985=_0x2a6b03[_0x1a5e78(0x352)]??((_0x265571,_0x14a3cd)=>_0x4180b1(_0x265571,_0x14a3cd,'utf-8')),_0x22b6aa=_0x5d25aa(_0x4ec8b5,'app.json'),_0x2ca33c=_0x5d25aa(_0x4ec8b5,'app.config.js'),_0x170121=_0x5d25aa(_0x4ec8b5,'app.config.ts'),_0x5c8696=_0x5d25aa(_0x4ec8b5,'ios'),_0x3d648c=_0x5d25aa(_0x4ec8b5,_0x1a5e78(0x57f)),_0x221a58=await _0x322ec1(_0x2ca33c),_0x57c471=await _0x322ec1(_0x170121);if(_0x221a58||_0x57c471){if('sNuyS'==='LWpLv'){if(_0x4d09fc)return;_0x523d64=!![];try{_0x1eb638['close']();}catch{}_0x1c14ae(_0x56c3ae);}else{const _0x3d1956=_0x57c471?_0x170121:_0x2ca33c;return{'status':'manual','kind':'expo-dynamic','path':_0x3d1956,'remediation':_0x4f72a4(_0x3d1956)};}}if(await _0x322ec1(_0x22b6aa)){const _0x559a0c=await _0x1de5f7(_0x22b6aa),_0x2b1eed=_0x521e4e(_0x559a0c);if(!_0x2b1eed)return{'status':_0x1a5e78(0x33c),'path':_0x22b6aa};const {changed:_0x1ce684,previousScheme:_0x60bd5a,nextScheme:_0x50f907}=_0x43e938(_0x2b1eed);if(!_0x1ce684){if(_0x1a5e78(0x4c1)!=='Lcinq')_0x56acd1=_0x5d65c1+_0x1abfa8();else return{'status':_0x1a5e78(0x33c),'path':_0x22b6aa};}return await _0x446985(_0x22b6aa,_0x4e3a3a(_0x2b1eed,_0x559a0c)),{'status':_0x1a5e78(0x400),'path':_0x22b6aa,'previousScheme':_0x60bd5a,'nextScheme':_0x50f907};}if(await _0x322ec1(_0x5c8696)||await _0x322ec1(_0x3d648c))return{'status':_0x1a5e78(0x89f),'kind':_0x1a5e78(0x46b),'remediation':_0x3f556c};return{'status':_0x1a5e78(0x115)};}import{access as _0x1e6dde,readFile as _0x17e586,unlink as _0x74f57d}from'fs/promises';import{join as _0x9c83c5}from'path';async function _0xe332dd(_0x313ae8){const _0x1fa698=_0x3ee7d6;try{return await _0x1e6dde(_0x313ae8),!![];}catch{return _0x1fa698(0x98d)==='dpaFA'?![]:{'status':_0x1fa698(0x23b),'path':_0x449aad,'removedRuntimeFiles':_0x413d4d};}}async function _0x38424c(_0x2cb903,_0x5962b1={}){const _0xa7cc2d=_0x3ee7d6,_0xe3f8f7=_0x5962b1[_0xa7cc2d(0x18d)]??(_0x83bd8b=>_0x17e586(_0x83bd8b,'utf-8')),_0x52782e=_0x5962b1[_0xa7cc2d(0x352)]??_0x4b8510,_0x2f73ca=_0x5962b1['unlink']??(_0x36fcb0=>_0x74f57d(_0x36fcb0)),_0xd1e61c=_0x5962b1[_0xa7cc2d(0x4a1)]??_0xe332dd,_0x3ffb63=[{'scriptAbsPath':_0x9c83c5(_0x2cb903[_0xa7cc2d(0x1f7)],..._0x4be8ae),'canonicalScript':_0x10800a,'matcher':_0x2781c8,'command':_0x3f0d94},{'scriptAbsPath':_0x9c83c5(_0x2cb903['projectDir'],..._0x3ccf14),'canonicalScript':_0x3de755,'matcher':_0x352f9a,'command':_0x589268}],_0x5b20e8=[],_0x21188e=[];for(const _0x234bd8 of _0x3ffb63){if(!await _0xd1e61c(_0x234bd8['scriptAbsPath']))continue;let _0x695437;try{if(_0xa7cc2d(0x487)!=='WiFnI')return null;else _0x695437=await _0xe3f8f7(_0x234bd8['scriptAbsPath']);}catch{_0x21188e[_0xa7cc2d(0x496)](_0x234bd8['scriptAbsPath']);continue;}_0x695437===_0x234bd8[_0xa7cc2d(0x52d)]?(await _0x2f73ca(_0x234bd8['scriptAbsPath']),_0x5b20e8['push'](_0x234bd8[_0xa7cc2d(0x232)])):_0x21188e[_0xa7cc2d(0x496)](_0x234bd8[_0xa7cc2d(0x232)]);}const _0xb1c5a4=[],_0x117be6=[];for(const _0x40ca83 of _0x308fed){const _0x1aa04e=_0x9c83c5(_0x2cb903['projectDir'],..._0x40ca83);if(!await _0xd1e61c(_0x1aa04e))continue;let _0x330967;try{_0x330967=await _0xe3f8f7(_0x1aa04e);}catch{if('mivxT'===_0xa7cc2d(0x573)){_0x117be6[_0xa7cc2d(0x496)](_0x1aa04e);continue;}else{const _0x5c1309=_0x3157fd['floor']((_0x35dc57+_0x423694)/0x2),_0xbe02a4={..._0x13d54e,'workingDir':_0x13e807(_0x296620[_0xa7cc2d(0x408)],_0x5c1309),'steps':_0x3d9365['steps']['map'](_0x281a8a=>({..._0x281a8a,'remediation':_0x281a8a['remediation']?_0x47ebed(_0x281a8a[_0xa7cc2d(0x5de)],_0x5c1309):_0x281a8a[_0xa7cc2d(0x5de)]})),'summary':{..._0x2b0efe[_0xa7cc2d(0x536)],'warnings':_0x4eb192[_0xa7cc2d(0x536)][_0xa7cc2d(0x6b1)][_0xa7cc2d(0x986)](_0x332628=>_0xdf9599(_0x332628,_0x5c1309)),'manualSteps':_0x562d59['summary']['manualSteps']['map'](_0x3a0bec=>_0x9e595c(_0x3a0bec,_0x5c1309))}},_0x3b0fed=_0x261765['stringify'](_0xbe02a4,null,0x2)['length'];_0x3b0fed<=_0x3cc541?(_0x3ed6b1=_0xbe02a4,_0xe22c85=_0x5c1309+0x1):_0x5cc60b=_0x5c1309-0x1;}}let _0x3ed696;try{_0x3ed696=JSON['parse'](_0x330967);}catch{_0x117be6[_0xa7cc2d(0x496)](_0x1aa04e);continue;}if(!_0x3ed696||typeof _0x3ed696!=='object'||Array['isArray'](_0x3ed696)){_0x117be6[_0xa7cc2d(0x496)](_0x1aa04e);continue;}const _0x4073eb=_0x80089(_0x3ed696,_0x3ffb63);if(!_0x4073eb['mutated']){_0x117be6['push'](_0x1aa04e);continue;}const _0x434977=_0x330967[_0xa7cc2d(0x678)](/\n(\s+)"/),_0x1e4386=_0x434977?.[0x1]??'\x20\x20',_0x133f5b=_0x330967[_0xa7cc2d(0x3f0)]('\x0a'),_0x209ff0=JSON[_0xa7cc2d(0x2c1)](_0x4073eb[_0xa7cc2d(0x9e0)],null,_0x1e4386);await _0x52782e(_0x1aa04e,_0x133f5b?_0x209ff0+'\x0a':_0x209ff0),_0xb1c5a4[_0xa7cc2d(0x496)](_0x1aa04e);}const _0x3fafd7=_0x5b20e8['length']>0x0||_0xb1c5a4['length']>0x0;let _0x48544c;if(_0x21188e[_0xa7cc2d(0x945)]>0x0)_0x48544c='manual';else _0x3fafd7?_0x48544c='reverted':_0x48544c=_0xa7cc2d(0x33c);return{'status':_0x48544c,'details':{'scriptsDeleted':_0x5b20e8,'scriptsLeftAlone':_0x21188e,'settingsFilesModified':_0xb1c5a4,'settingsFilesUntouched':_0x117be6}};}function _0x80089(_0x575b6d,_0x3ff74d){const _0xe6de36=_0x3ee7d6,_0x4f5a4d=_0x575b6d[_0xe6de36(0x6d5)];if(!_0x4f5a4d||typeof _0x4f5a4d!==_0xe6de36(0x5ab)||Array['isArray'](_0x4f5a4d))return{'mutated':![],'next':_0x575b6d};const _0xed4499=_0x4f5a4d,_0x113a17=_0xed4499['FileChanged'];if(!Array['isArray'](_0x113a17))return{'mutated':![],'next':_0x575b6d};const _0x46b540=new Map();for(const _0x2e7703 of _0x3ff74d)_0x46b540['set'](_0x2e7703[_0xe6de36(0x9ce)],_0x2e7703);const _0x3be806=[];let _0x18232f=![];for(const _0x3c7d36 of _0x113a17){if(!_0x3c7d36||typeof _0x3c7d36!==_0xe6de36(0x5ab)||Array['isArray'](_0x3c7d36)){_0x3be806['push'](_0x3c7d36);continue;}const _0x4ec87c=_0x3c7d36,_0x14d66b=_0x4ec87c['matcher'];if(typeof _0x14d66b!==_0xe6de36(0x7fd)){_0x3be806[_0xe6de36(0x496)](_0x3c7d36);continue;}const _0x540512=_0x46b540['get'](_0x14d66b);if(!_0x540512){_0x3be806[_0xe6de36(0x496)](_0x3c7d36);continue;}const _0x572db0=_0x4ec87c['hooks'];if(!Array[_0xe6de36(0x246)](_0x572db0)){_0x3be806['push'](_0x3c7d36);continue;}const _0x453a59=[];let _0x5a3f07=![];for(const _0x2fad15 of _0x572db0){if(!_0x2fad15||typeof _0x2fad15!==_0xe6de36(0x5ab)||Array[_0xe6de36(0x246)](_0x2fad15)){_0x453a59['push'](_0x2fad15);continue;}const _0x2130de=_0x2fad15,_0x363d80=_0x2130de[_0xe6de36(0x850)];if(typeof _0x363d80==='string'&&_0x363d80===_0x540512[_0xe6de36(0x850)]){_0x5a3f07=!![];continue;}_0x453a59[_0xe6de36(0x496)](_0x2fad15);}if(!_0x5a3f07){_0x3be806['push'](_0x3c7d36);continue;}_0x18232f=!![];if(_0x453a59['length']===0x0){if(_0xe6de36(0x7c9)!==_0xe6de36(0x436))continue;else return{'success':![],'error':_0x4b9700 instanceof _0x2db334?_0x48a68b['message']:_0xe6de36(0x590)};}_0x3be806['push']({..._0x4ec87c,'hooks':_0x453a59});}if(!_0x18232f)return{'mutated':![],'next':_0x575b6d};const _0x726322={..._0xed4499};_0x3be806['length']===0x0?delete _0x726322['FileChanged']:_0x726322[_0xe6de36(0x2cf)]=_0x3be806;const _0x5af56c={..._0x575b6d};return Object['keys'](_0x726322)['length']===0x0?delete _0x5af56c[_0xe6de36(0x6d5)]:_0x5af56c[_0xe6de36(0x6d5)]=_0x726322,{'mutated':!![],'next':_0x5af56c};}import{writeFile as _0x176618,readdir as _0x41b097}from'fs/promises';import{join as _0x25c3da,relative as _0x11dace,sep as _0x16ef78}from'path';var _0x16095d,_0x9e6ada,_0x5c7d1e,_0x15bb2c,_0x38b9ae=![];async function _0x42757f(){if(_0x38b9ae)return;const _0xf4f003=await import('ts-morph');({IndentationText:_0x16095d,Node:_0x9e6ada,Project:_0x5c7d1e,SyntaxKind:_0x15bb2c}=_0xf4f003,_0x38b9ae=!![]);}var _0x4f0064='@ceraph/react-native-mcp/shim',_0x58575a=_0x3ee7d6(0x698),_0x360f95=_0x3ee7d6(0x18e),_0x1ace81='CameraView',_0x2d1221=['app',_0x3ee7d6(0x4f0),_0x3ee7d6(0x471)],_0xcc3432=new Set(['.tsx','.jsx']),_0x4cf020=new Set([_0x3ee7d6(0x9c9),_0x3ee7d6(0x166),_0x3ee7d6(0x17d),'.git',_0x3ee7d6(0x5d3),_0x3ee7d6(0x878),_0x3ee7d6(0x325),_0x3ee7d6(0x5c2),'android']);async function _0x19bb62(_0x34b34c){const _0x443bdc=_0x3ee7d6,_0x5c8ae7=[];async function _0x95bb52(_0x1f2498){const _0x8df72a=_0x4a5a;let _0x46e2e6;try{_0x46e2e6=await _0x41b097(_0x1f2498,{'withFileTypes':!![]});}catch{if(_0x8df72a(0x885)!==_0x8df72a(0x1bf))return;else return null;}for(const _0x3fc921 of _0x46e2e6){const _0x32bcd3=_0x25c3da(_0x1f2498,_0x3fc921[_0x8df72a(0x4d1)]);if(_0x3fc921[_0x8df72a(0x42a)]()){if(_0x4cf020['has'](_0x3fc921[_0x8df72a(0x4d1)]))continue;await _0x95bb52(_0x32bcd3);continue;}if(!_0x3fc921[_0x8df72a(0x7ab)]())continue;const _0x2bebd4=_0x3fc921[_0x8df72a(0x4d1)][_0x8df72a(0x64b)]('.');if(_0x2bebd4<0x0)continue;const _0x4c6046=_0x3fc921[_0x8df72a(0x4d1)]['slice'](_0x2bebd4)['toLowerCase']();if(!_0xcc3432['has'](_0x4c6046))continue;_0x5c8ae7[_0x8df72a(0x496)](_0x32bcd3);}}for(const _0x4cfdd5 of _0x2d1221){await _0x95bb52(_0x25c3da(_0x34b34c,_0x4cfdd5));}for(const _0x33e4f9 of['App.tsx',_0x443bdc(0x754)]){_0x5c8ae7[_0x443bdc(0x496)](_0x25c3da(_0x34b34c,_0x33e4f9));}return _0x5c8ae7;}function _0x26527d(_0x6b7c3e){const _0x47fcae=_0x3ee7d6,_0x3a0d35=new _0x5c7d1e({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1},'manipulationSettings':{'indentationText':_0x16095d['TwoSpaces']}});for(const _0x3756b0 of _0x6b7c3e){if('TkrbK'===_0x47fcae(0x2e9))try{_0x3a0d35[_0x47fcae(0x5bd)](_0x3756b0);}catch{}else{_0x560b52(![]);return;}}return _0x3a0d35;}function _0x2de29c(_0x35e10b,_0x360e17){const _0x32b68d=[];return _0x35e10b['forEachDescendant'](_0x5d4724=>{const _0x27bcae=_0x4a5a;if(_0x9e6ada['isJsxOpeningElement'](_0x5d4724)||_0x9e6ada['isJsxSelfClosingElement'](_0x5d4724)){const _0x9bfac5=_0x5d4724[_0x27bcae(0x800)]();_0x9bfac5['getText']()===_0x360e17&&_0x32b68d['push'](_0x5d4724);}}),_0x32b68d;}function _0x54a082(_0x5e4521){const _0xa9db4b=_0x3ee7d6,_0x21db19=_0x5e4521['getAttributes']();for(const _0x532547 of _0x21db19){if(_0x9e6ada['isJsxAttribute'](_0x532547)){const _0xcf3ac5=_0x532547['getNameNode']();_0xcf3ac5['getText']()===_0xa9db4b(0x203)&&_0x532547['remove']();}}}function _0x2ab184(_0x44a8fe){const _0x2cda4c=_0x3ee7d6;let _0x345832=0x0,_0x24f562=Number[_0x2cda4c(0x2b5)];for(let _0x25a063=0x0;_0x25a063<0x2710;_0x25a063++){const _0x1a2d98=_0x2de29c(_0x44a8fe,_0x58575a);if(_0x1a2d98['length']===0x0)break;if(_0x1a2d98[_0x2cda4c(0x945)]>=_0x24f562)break;_0x24f562=_0x1a2d98[_0x2cda4c(0x945)];const _0x49af08=_0x1a2d98[0x0];_0x49af08['getTagNameNode']()['replaceWithText'](_0x1ace81);if(_0x9e6ada['isJsxOpeningElement'](_0x49af08)){const _0x470ebc=_0x49af08[_0x2cda4c(0x8c4)](_0x15bb2c['JsxElement']);if(_0x470ebc){const _0x2020e5=_0x470ebc[_0x2cda4c(0x475)]();_0x2020e5[_0x2cda4c(0x800)]()['replaceWithText'](_0x1ace81);}}_0x54a082(_0x49af08),_0x345832++;}return _0x345832;}function _0x4797f5(_0x320074){const _0x514ca1=_0x3ee7d6,_0x32180a=_0x320074[_0x514ca1(0x128)](_0x4f0064);if(!_0x32180a)return![];const _0x9d771c=_0x32180a['getNamedImports'](),_0x5e24f6=_0x9d771c[_0x514ca1(0x7bd)](_0x573f18=>_0x573f18[_0x514ca1(0x33e)]()===_0x58575a);if(!_0x5e24f6)return![];_0x5e24f6[_0x514ca1(0x6f8)]();const _0xbe5fad=_0x32180a['getNamedImports'](),_0x7bef42=_0x32180a[_0x514ca1(0x992)]()!=null;return _0xbe5fad['length']===0x0&&!_0x7bef42&&_0x32180a[_0x514ca1(0x6f8)](),!![];}function _0x13f51b(_0x402e2d){const _0x44a165=_0x3ee7d6,_0x14d4c7=_0x402e2d['getImportDeclaration'](_0x360f95);if(_0x14d4c7){if(_0x44a165(0x97c)!=='WvzCR'){const [_0x397a07,_0x409463]=_0x59ec53[_0x44a165(0x1bb)]<=_0x46ecb3['size']?[_0x3eaeb7,_0x30785f]:[_0xf8ff3a,_0x5a8e3f];for(const _0x375d21 of _0x397a07[_0x44a165(0x208)]()){if(_0x409463['has'](_0x375d21))return!![];}return![];}else{const _0x5bade3=_0x14d4c7[_0x44a165(0x865)]();if(_0x5bade3[_0x44a165(0x2a5)](_0x1daa1c=>_0x1daa1c[_0x44a165(0x33e)]()===_0x1ace81))return![];return _0x14d4c7[_0x44a165(0x386)](_0x1ace81),!![];}}return _0x402e2d['addImportDeclaration']({'moduleSpecifier':_0x360f95,'namedImports':[_0x1ace81]}),!![];}async function _0x5da818(_0x4991bb){const _0x20d435=_0x3ee7d6;await _0x42757f();const _0x29c316=await _0x19bb62(_0x4991bb),_0x525e31=_0x26527d(_0x29c316),_0x497f4f=[];let _0x2c5411=0x0;for(const _0x374d28 of _0x525e31['getSourceFiles']()){if('XipFr'!=='XipFr'){_0x446a45(_0x1830c4);if(_0x15371a)_0xd1da9f(_0x4d7bc2);_0x4d4fb0();}else{_0x2c5411++;const _0x57d375=_0x2de29c(_0x374d28,_0x58575a);if(_0x57d375['length']===0x0){const _0x2a5517=_0x374d28[_0x20d435(0x128)](_0x4f0064),_0x210a9e=_0x2a5517!=null&&_0x2a5517['getNamedImports']()[_0x20d435(0x2a5)](_0x31b524=>_0x31b524['getName']()===_0x58575a);if(!_0x210a9e)continue;const _0x2a9596=_0x4797f5(_0x374d28);if(!_0x2a9596)continue;const _0x738e2a=_0x374d28[_0x20d435(0x7ff)]();await _0x176618(_0x738e2a,_0x374d28[_0x20d435(0x4e0)](),'utf-8'),_0x497f4f['push']({'path':_0x738e2a,'relPath':_0x11dace(_0x4991bb,_0x738e2a)[_0x20d435(0x814)](_0x16ef78)['join']('/'),'ceraphCamerasRemoved':0x0,'importDropped':!![],'importRestored':![]});continue;}const _0x1aab35=_0x2ab184(_0x374d28),_0xbbb42c=_0x2de29c(_0x374d28,_0x58575a),_0x418508=_0xbbb42c[_0x20d435(0x945)]===0x0?_0x4797f5(_0x374d28):![],_0x10555a=_0x2de29c(_0x374d28,_0x1ace81)['length']>0x0,_0x385ab4=_0x10555a?_0x13f51b(_0x374d28):![],_0x1712e1=_0x374d28['getFilePath']();await _0x176618(_0x1712e1,_0x374d28[_0x20d435(0x4e0)](),'utf-8'),_0x497f4f[_0x20d435(0x496)]({'path':_0x1712e1,'relPath':_0x11dace(_0x4991bb,_0x1712e1)[_0x20d435(0x814)](_0x16ef78)['join']('/'),'ceraphCamerasRemoved':_0x1aab35,'importDropped':_0x418508,'importRestored':_0x385ab4});}}return{'files':_0x497f4f,'filesScanned':_0x2c5411};}var _0x4c90d3,_0x4de59f,_0x309a1e=![];async function _0x21306d(){const _0x40cc4f=_0x3ee7d6;if(_0x309a1e)return;const _0x298274=await import(_0x40cc4f(0x9c1));({Node:_0x4c90d3,Project:_0x4de59f}=_0x298274,_0x309a1e=!![]);}var _0x2b21f1=async _0x55d15a=>({'exitCode':0x0});async function _0x2b43af(_0x249727){const _0x82c0a7=_0x3ee7d6,_0x3ab13e=[],_0x37d701=_0x169bef=>{const _0x22fef0=_0x4a5a;_0x3ab13e[_0x22fef0(0x496)](_0x169bef),_0x249727['onStep']?.(_0x169bef);},_0x514c3c=await _0x2f7cbe(_0x249727);if(_0x514c3c[_0x82c0a7(0x3ea)]===_0x82c0a7(0x125)){const _0x5db21b={'name':'monorepo','status':'error','details':{'matches':_0x514c3c[_0x82c0a7(0x223)]},'remediation':_0x514c3c['remediation']};return _0x37d701(_0x5db21b),_0x19b833(_0x249727['projectDir'],_0x3ab13e);}const _0x2d4eab=_0x514c3c['workingDir'],_0x74586c=_0x249727[_0x82c0a7(0x7f2)]??_0x249727[_0x82c0a7(0x1f7)],_0x262824=_0x249727['dryRun']===!![],_0x17a156=await _0x59fd56(_0x2d4eab,_0x249727,_0x262824);_0x37d701(_0x17a156);const _0x13adec=await _0x2ae979(_0x2d4eab,_0x249727,_0x262824);_0x37d701(_0x13adec);const _0x2d0963=await _0xcafb45(_0x2d4eab,_0x249727,_0x262824);_0x37d701(_0x2d0963);const _0x535329=await _0x3952c1(_0x2d4eab,_0x249727,_0x262824);_0x37d701(_0x535329);const _0x1587a1=await _0x3716c2(_0x74586c,_0x249727,_0x262824);_0x37d701(_0x1587a1);const _0x5d0ea6=await _0xe1d58f(_0x74586c,_0x249727,_0x262824);_0x37d701(_0x5d0ea6);const _0x3139bf=await _0x195440(_0x2d4eab,_0x249727,_0x262824);_0x37d701(_0x3139bf);const _0x565cd8=await _0x17b286(_0x249727,_0x262824);_0x37d701(_0x565cd8);const _0xe513c4=await _0x3f7f11(_0x2d4eab,_0x249727,_0x262824);_0x37d701(_0xe513c4);const _0x2dccbc=await _0x450948(_0x249727,_0x262824);_0x37d701(_0x2dccbc);const _0x29665f=await _0x764e10(_0x2d4eab,_0x249727,_0x262824);return _0x37d701(_0x29665f),_0x19b833(_0x2d4eab,_0x3ab13e);}async function _0x2f7cbe(_0x247cda){const _0x3e9cdc=_0x3ee7d6,_0xfc37f5=_0x247cda[_0x3e9cdc(0x615)]??_0x1dcc30,_0x1e9682=await _0xfc37f5(_0x247cda[_0x3e9cdc(0x1f7)]);if(_0x1e9682['kind']===_0x3e9cdc(0x8df))return{'kind':'ok','workingDir':_0x247cda['projectDir']};if(_0x1e9682[_0x3e9cdc(0x3ea)]==='single'){const _0x3ea5dd=_0x1e9682[_0x3e9cdc(0x223)][0x0];if(!_0x3ea5dd)return{'kind':'ok','workingDir':_0x247cda[_0x3e9cdc(0x1f7)]};return{'kind':'ok','workingDir':_0x3ea5dd[_0x3e9cdc(0x245)]};}return{'kind':_0x3e9cdc(0x125),'matches':_0x1e9682['matches']['map'](_0xef59a6=>({'relPath':_0xef59a6[_0x3e9cdc(0x260)],'absPath':_0xef59a6['absPath']})),'remediation':_0x3e9cdc(0x481)+(_0x1e9682['matches'][0x0]?.['relPath']??_0x3e9cdc(0x415))+'`.'};}async function _0x59fd56(_0xb8f488,_0x50e989,_0x1f6cfd){const _0x4f9793=_0x3ee7d6,_0x8089f1=_0x50e989['revertCamera']??_0x5da818;if(_0x1f6cfd)try{if('ZpxFk'==='VOLid')_0xd426(_0x40c361(_0x4f9793(0x5d6)));else{const _0x54f8ed=await _0x1216f9(_0xb8f488,_0x8089f1);return _0x119c86(_0x54f8ed,{'dryRun':!![]});}}catch(_0x5cc30a){return{'name':_0x4f9793(0x101),'status':_0x4f9793(0x125),'details':{'error':_0x51a030(_0x5cc30a)},'remediation':_0x4f9793(0x234)};}const _0x4259fe=new Map();try{const _0x16a208=await _0x413d5d(_0xb8f488);for(const _0x25553a of _0x16a208){_0x4259fe[_0x4f9793(0x3b6)](_0x25553a,await _0x5431e7(_0x25553a));}const _0x9a3639=await _0x8089f1(_0xb8f488);return _0x119c86(_0x9a3639,{'dryRun':![]});}catch(_0x44c613){const _0x56aefa=[];for(const [_0x12ce02,_0x538a41]of _0x4259fe){if(_0x538a41==null)continue;try{await _0x182f45(_0x12ce02,_0x538a41);}catch(_0x3ed54c){_0x56aefa['push'](_0x12ce02+':\x20'+_0x51a030(_0x3ed54c));}}const _0x3b1e6e=_0x4f9793(0x8e3)+_0x51a030(_0x44c613)+'.',_0x49bd8f=_0x56aefa['length']===0x0?_0x3b1e6e+'\x20All\x20edited\x20files\x20were\x20restored\x20from\x20snapshots.':_0x3b1e6e+'\x20Some\x20files\x20could\x20not\x20be\x20restored:\x20'+_0x56aefa[_0x4f9793(0x221)](';\x20');return{'name':_0x4f9793(0x101),'status':_0x4f9793(0x125),'details':{'error':_0x51a030(_0x44c613),'snapshotCount':_0x4259fe[_0x4f9793(0x1bb)],'restoreFailures':_0x56aefa},'remediation':_0x49bd8f};}}function _0x119c86(_0x1d9b0b,_0x3b118f){const _0x1452be=_0x3ee7d6,_0x3ce4d8=_0x1d9b0b['files']['reduce']((_0x1d5624,_0x12d5c6)=>_0x1d5624+_0x12d5c6['ceraphCamerasRemoved'],0x0),_0x233f69=_0x3ce4d8;if(_0x1d9b0b[_0x1452be(0x10f)]['length']===0x0){if('tCuqx'===_0x1452be(0x521))return{'name':_0x1452be(0x101),'status':'already-reverted','details':{'filesScanned':_0x1d9b0b[_0x1452be(0x1d2)],..._0x3b118f['dryRun']?{'dryRun':!![]}:{}}};else{if(!_0x36b3f9[_0x1452be(0x2db)]||typeof _0x3a97c6[_0x1452be(0x2db)]!==_0x1452be(0x5ab))return![];const _0x5859b3=_0xc8bd42[_0x1452be(0x2db)];if(typeof _0x5859b3[_0x1452be(0x562)]!==_0x1452be(0x7fd)||typeof _0x5859b3['id']!==_0x1452be(0x513))return![];}}const _0x1af6c2=_0x233f69>0x0?'warning':_0x1452be(0x400),_0x1c416c={'name':_0x1452be(0x101),'status':_0x1af6c2,'details':{'filesScanned':_0x1d9b0b['filesScanned'],'filesEdited':_0x1d9b0b[_0x1452be(0x10f)]['map'](_0x11db14=>_0x11db14[_0x1452be(0x260)]),'ceraphCamerasRemoved':_0x3ce4d8,'importDropped':_0x1d9b0b['files']['filter'](_0x2e370b=>_0x2e370b['importDropped'])['length'],'importRestored':_0x1d9b0b['files']['filter'](_0xe9a28a=>_0xe9a28a['importRestored'])[_0x1452be(0x945)],'imageKeysStripped':_0x233f69,..._0x3b118f[_0x1452be(0xd6)]?{'dryRun':!![]}:{}}};return _0x1af6c2==='warning'&&(_0x1c416c['remediation']='revert-camera\x20removed\x20imageKey\x20props\x20from\x20'+_0x233f69+_0x1452be(0x6b3)),_0x1c416c;}async function _0x413d5d(_0x517a27){const _0x60cc34=_0x3ee7d6,_0x243f4f=['app','src','screens'],_0xa2787a=new Set(['.tsx','.jsx']),_0x58889f=new Set([_0x60cc34(0x9c9),_0x60cc34(0x166),'build','.git',_0x60cc34(0x5d3),_0x60cc34(0x878),_0x60cc34(0x325),_0x60cc34(0x5c2),'android']),_0x5996e8=[],_0x4c218a=async _0x1cfe04=>{const _0x3f2430=_0x60cc34;let _0x198624;try{if(_0x3f2430(0x563)===_0x3f2430(0x563)){const {readdir:_0x29dba4}=await import(_0x3f2430(0x561));_0x198624=await _0x29dba4(_0x1cfe04,{'withFileTypes':!![]});}else return'iproxy\x20bridge\x20already\x20running.';}catch{return;}for(const _0x54971a of _0x198624){if(_0x54971a[_0x3f2430(0x42a)]()){if(_0x58889f[_0x3f2430(0x21c)](_0x54971a[_0x3f2430(0x4d1)]))continue;await _0x4c218a(_0x8c8eb4(_0x1cfe04,_0x54971a['name']));continue;}if(!_0x54971a[_0x3f2430(0x7ab)]())continue;const _0xfae75=_0x54971a[_0x3f2430(0x4d1)][_0x3f2430(0x64b)]('.');if(_0xfae75<0x0)continue;const _0x52e015=_0x54971a[_0x3f2430(0x4d1)][_0x3f2430(0x63b)](_0xfae75)['toLowerCase']();if(!_0xa2787a['has'](_0x52e015))continue;_0x5996e8['push'](_0x8c8eb4(_0x1cfe04,_0x54971a['name']));}};for(const _0x34202d of _0x243f4f){await _0x4c218a(_0x8c8eb4(_0x517a27,_0x34202d));}for(const _0x1e7ec8 of[_0x60cc34(0x854),'App.jsx']){_0x5996e8['push'](_0x8c8eb4(_0x517a27,_0x1e7ec8));}const _0x2d2e7d=[];for(const _0x312925 of _0x5996e8){let _0xd8485;try{_0xd8485=await _0x237bd6(_0x312925,'utf-8');}catch{continue;}if(_0xd8485[_0x60cc34(0x83f)](_0x60cc34(0x9ae)))_0x2d2e7d[_0x60cc34(0x496)](_0x312925);}return _0x2d2e7d;}async function _0x1216f9(_0x516f21,_0x4f0498){const _0x36632d=_0x3ee7d6,_0x417cc3=await _0x413d5d(_0x516f21),_0x473bb7=_0x8c8eb4(tmpdir(),_0x36632d(0x8ed)+Date[_0x36632d(0x3d1)]()+'-'+Math['random']()[_0x36632d(0x510)](0x24)[_0x36632d(0x63b)](0x2));try{await _0x43803f(_0x473bb7,{'recursive':!![]});for(const _0x1bbac6 of _0x417cc3){const _0x2f9332=_0x5a8767(_0x516f21,_0x1bbac6),_0x525723=_0x8c8eb4(_0x473bb7,_0x2f9332);await _0x43803f(_0x4ab8ef(_0x525723),{'recursive':!![]}),await copyFile(_0x1bbac6,_0x525723);}return await _0x4f0498(_0x473bb7);}finally{if('GPihQ'===_0x36632d(0x967))try{await _0x26810f(_0x473bb7,{'recursive':!![],'force':!![]});}catch{}else{if(_0x4327bc['startsWith'](_0x86b54e)){const _0x577a12=_0x12b4c4[_0x36632d(0x63b)](_0x9624f8[_0x36632d(0x945)]+0x1);return _0x577a12[_0x36632d(0x945)]>0x0?_0x577a12:_0x3ba873;}return _0x288f50;}}}async function _0x2ae979(_0x18f087,_0x11a52c,_0x22709c){const _0x4e2421=_0x3ee7d6,_0x47a35b=_0x11a52c[_0x4e2421(0x50d)]??_0xf44b30,_0x4c3906=_0x11a52c[_0x4e2421(0x843)]??_0x17e4ca;if(_0x22709c)try{const _0x54934a=await _0x4c3906(_0x18f087);if(!_0x54934a)return{'name':'boot','status':_0x4e2421(0x33c),'details':{'reason':_0x4e2421(0x935),'dryRun':!![]}};const _0x22d5d8=await _0x82ea87(_0x54934a['filePath'],_0x18f087);try{if('fJTOY'!==_0x4e2421(0x605)){const _0x266bf8=await _0x47a35b(_0x22d5d8[_0x4e2421(0x1f7)]);return await _0x296fb6(_0x266bf8,_0x18f087,_0x54934a,_0x11a52c,!![]);}else{const _0x1318b3=new _0x19e4fd({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1},'manipulationSettings':{'indentationText':_0xe152c5[_0x4e2421(0x806)]}});for(const _0x3fe707 of _0x380a8a){try{_0x1318b3[_0x4e2421(0x5bd)](_0x3fe707);}catch{}}return _0x1318b3;}}finally{await _0x26810f(_0x22d5d8['tmpRoot'],{'recursive':!![],'force':!![]})['catch'](()=>void 0x0);}}catch(_0x254a5f){return{'name':_0x4e2421(0x71f),'status':_0x4e2421(0x125),'details':{'error':_0x51a030(_0x254a5f),'dryRun':!![]},'remediation':'Dry-run\x20boot\x20preview\x20failed;\x20re-run\x20without\x20--dry-run\x20to\x20see\x20the\x20real\x20error\x20path.'};}try{const _0x470c6f=await _0x47a35b(_0x18f087),_0x5497d3=_0x470c6f['status']===_0x4e2421(0x5db)?null:_0x470c6f[_0x4e2421(0x555)];return await _0x296fb6(_0x470c6f,_0x18f087,_0x5497d3,_0x11a52c,![]);}catch(_0x267d72){return{'name':'boot','status':_0x4e2421(0x125),'details':{'error':_0x51a030(_0x267d72)},'remediation':'Boot\x20revert\x20raised.\x20Check\x20the\x20layout\x20file\x20for\x20syntax\x20errors\x20before\x20re-running.'};}}async function _0x296fb6(_0x3d3da1,_0x249c63,_0x515c61,_0x4a182c,_0x36dc39){const _0x4f2578=_0x3ee7d6;switch(_0x3d3da1[_0x4f2578(0x9d0)]){case _0x4f2578(0x400):return{'name':'boot','status':_0x4f2578(0x400),'details':{'target':_0x3d3da1['target'],'removedUseEffect':_0x3d3da1[_0x4f2578(0x663)],'removedImport':_0x3d3da1[_0x4f2578(0x30f)],..._0x36dc39?{'dryRun':!![]}:{}}};case _0x4f2578(0x33c):return{'name':_0x4f2578(0x71f),'status':_0x4f2578(0x33c),'details':{'target':_0x3d3da1['target'],..._0x36dc39?{'dryRun':!![]}:{}}};case _0x4f2578(0x5db):return{'name':'boot','status':'already-reverted','details':{'reason':_0x4f2578(0x935),..._0x36dc39?{'dryRun':!![]}:{}}};case'skipped':{const _0x1d539f=await _0x36c013(_0x3d3da1['target']['filePath']);return{'name':'boot','status':_0x4f2578(0x89f),'details':{'target':_0x3d3da1['target'],'reason':_0x3d3da1[_0x4f2578(0x78c)],'location':_0x1d539f['location'],'otherStatements':_0x1d539f['otherStatements'],..._0x1d539f[_0x4f2578(0x305)]!==void 0x0?{'parseError':_0x1d539f[_0x4f2578(0x305)]}:{},..._0x36dc39?{'dryRun':!![]}:{}},'remediation':_0x4f2578(0x446)+_0x3d3da1[_0x4f2578(0x555)][_0x4f2578(0x4e3)]+(_0x1d539f[_0x4f2578(0x7de)]?':'+_0x1d539f[_0x4f2578(0x7de)]['line']:'')+').\x20Remove\x20the\x20`installCeraph()`\x20call\x20by\x20hand\x20without\x20dropping\x20your\x20own\x20code,\x20then\x20re-run\x20`npx\x20@ceraph/react-native-mcp\x20uninstall`.'+(_0x1d539f['parseError']!==void 0x0?'\x20(Note:\x20re-parse\x20failed\x20—\x20line\x20info\x20missing:\x20'+_0x1d539f[_0x4f2578(0x305)]+')':'')};}}return{'name':'boot','status':_0x4f2578(0x125),'details':{'result':_0x3d3da1},'remediation':_0x4f2578(0x4d2)};}async function _0x36c013(_0x2d22e2){const _0x5813e7=_0x3ee7d6;try{await _0x21306d();const _0xa9a984=new _0x4de59f({'useInMemoryFileSystem':![],'skipAddingFilesFromTsConfig':!![],'skipFileDependencyResolution':!![],'skipLoadingLibFiles':!![],'compilerOptions':{'allowJs':!![],'jsx':0x1}}),_0x5e3580=_0xa9a984['addSourceFileAtPath'](_0x2d22e2),_0x1fd551=_0x1af0b7(_0x5e3580);if(!_0x1fd551)return{'location':null,'otherStatements':[]};const _0x4d3aa6=_0x1fd551['getBody']();if(!_0x4d3aa6||!_0x4c90d3[_0x5813e7(0x9f4)](_0x4d3aa6))return{'location':null,'otherStatements':[]};let _0x7f0cad=null,_0x4c7985=[];return _0x4d3aa6['forEachDescendant'](_0x45e022=>{const _0x2eca0a=_0x5813e7;if(_0x7f0cad)return;if(!_0x4c90d3[_0x2eca0a(0x435)](_0x45e022))return;const _0x3478a1=_0x45e022[_0x2eca0a(0x45d)]();if(!_0x4c90d3[_0x2eca0a(0x9c8)](_0x3478a1)||_0x3478a1[_0x2eca0a(0x326)]()!=='useEffect')return;const _0xe87c61=_0x45e022['getArguments'](),_0x46e7bc=_0xe87c61[0x0];if(!_0x46e7bc)return;if(!_0x4c90d3[_0x2eca0a(0x60d)](_0x46e7bc)&&!_0x4c90d3[_0x2eca0a(0x8d0)](_0x46e7bc))return;const _0x263f6e=_0x46e7bc[_0x2eca0a(0x848)]();if(!_0x4c90d3['isBlock'](_0x263f6e))return;const _0x15c9e8=_0x263f6e[_0x2eca0a(0x34f)](),_0xf06b50=[],_0x1f032e=[];for(const _0x465885 of _0x15c9e8){if(_0x3c1c2d(_0x465885))_0xf06b50['push'](_0x465885);else _0x1f032e[_0x2eca0a(0x496)](_0x465885);}_0xf06b50[_0x2eca0a(0x945)]>0x0&&_0x1f032e[_0x2eca0a(0x945)]>0x0&&(_0x7f0cad={'line':_0x45e022['getStartLineNumber']()},_0x4c7985=_0x1f032e[_0x2eca0a(0x986)](_0x2ef144=>_0x2ef144[_0x2eca0a(0x326)]()));}),{'location':_0x7f0cad,'otherStatements':_0x4c7985};}catch(_0x175a09){return'SPDOE'==='SPDOE'?{'location':null,'otherStatements':[],'parseError':_0x51a030(_0x175a09)}:new _0x4d0f31('server-error',_0x59f800,'Ceraph\x20server\x20is\x20having\x20a\x20moment\x20(HTTP\x20'+_0x27b76c+').\x20Try\x20again\x20in\x20a\x20few\x20seconds.');}}function _0x1af0b7(_0x5505bf){const _0x4424eb=_0x3ee7d6;for(const _0x25768e of _0x5505bf[_0x4424eb(0x744)]()){if(_0x25768e['isDefaultExport']())return _0x25768e;}const _0x1d7aa8=_0x5505bf['getStatements']()['find'](_0x174a1e=>_0x4c90d3['isExportAssignment'](_0x174a1e));if(_0x1d7aa8&&_0x4c90d3['isExportAssignment'](_0x1d7aa8)){const _0x23b37a=_0x1d7aa8[_0x4424eb(0x45d)]();if(_0x4c90d3['isIdentifier'](_0x23b37a)){const _0x41333d=_0x23b37a[_0x4424eb(0x875)]();if(_0x41333d){if('YnnSq'!==_0x4424eb(0x2f2))return _0x4f1367;else{const _0x36feef=_0x41333d[_0x4424eb(0x54f)]()[0x0];if(_0x36feef&&_0x4c90d3[_0x4424eb(0x5ee)](_0x36feef)){const _0x3fb0f7=_0x36feef[_0x4424eb(0x16c)]();if(_0x3fb0f7&&_0x4c90d3[_0x4424eb(0x60d)](_0x3fb0f7))return _0x3fb0f7;if(_0x3fb0f7&&_0x4c90d3['isFunctionExpression'](_0x3fb0f7))return _0x3fb0f7;}}}}if(_0x4c90d3[_0x4424eb(0x60d)](_0x23b37a))return _0x23b37a;if(_0x4c90d3[_0x4424eb(0x8d0)](_0x23b37a))return _0x23b37a;}return null;}function _0x3c1c2d(_0x26c8a1){const _0x2a110a=_0x3ee7d6;if(!_0x4c90d3['isExpressionStatement'](_0x26c8a1))return![];const _0x527dda=_0x26c8a1[_0x2a110a(0x45d)]();if(!_0x4c90d3[_0x2a110a(0x435)](_0x527dda))return![];const _0x5be0a9=_0x527dda[_0x2a110a(0x45d)]();return _0x4c90d3['isIdentifier'](_0x5be0a9)&&_0x5be0a9[_0x2a110a(0x326)]()===_0x2a110a(0x13c);}async function _0x3952c1(_0x36f424,_0x2e8049,_0x31ce3b){const _0x487e2b=_0x3ee7d6,_0x463d4f=_0x2e8049['revertCeraphUrlScheme']??_0x395e50;if(_0x31ce3b)try{const _0x5e258e=await _0x3d5486(_0x36f424);try{const _0x46a4f9=await _0x463d4f(_0x5e258e[_0x487e2b(0x1f7)]);return _0x49818f(_0x46a4f9,!![]);}finally{await _0x26810f(_0x5e258e['tmpRoot'],{'recursive':!![],'force':!![]})[_0x487e2b(0x4ba)](()=>void 0x0);}}catch(_0x504186){return{'name':'scheme','status':_0x487e2b(0x125),'details':{'error':_0x51a030(_0x504186),'dryRun':!![]}};}try{const _0x266c21=await _0x463d4f(_0x36f424);return _0x49818f(_0x266c21,![]);}catch(_0x16459f){return{'name':_0x487e2b(0x389),'status':'error','details':{'error':_0x51a030(_0x16459f)}};}}function _0x49818f(_0x406b36,_0x4d4b29){const _0x5a70ca=_0x3ee7d6,_0xb70d3b=_0x4d4b29?{'dryRun':!![]}:{};switch(_0x406b36[_0x5a70ca(0x9d0)]){case'reverted':return{'name':_0x5a70ca(0x389),'status':_0x5a70ca(0x400),'details':{'path':_0x406b36[_0x5a70ca(0x4ff)],'previousScheme':_0x406b36[_0x5a70ca(0x9c2)],'nextScheme':_0x406b36['nextScheme'],..._0xb70d3b}};case _0x5a70ca(0x33c):return{'name':_0x5a70ca(0x389),'status':'already-reverted','details':{'path':_0x406b36['path'],..._0xb70d3b}};case'manual':return{'name':'scheme','status':_0x5a70ca(0x89f),'details':{'kind':_0x406b36['kind'],'path':_0x406b36['path'],..._0xb70d3b},'remediation':_0x406b36[_0x5a70ca(0x5de)]};case'no-rn-project':return{'name':'scheme','status':_0x5a70ca(0x33c),'details':{'reason':'no\x20RN\x20project\x20detected',..._0xb70d3b}};}}async function _0x3d5486(_0x4bd06b){const _0x86379=_0x3ee7d6,_0x3285e4=_0x8c8eb4(tmpdir(),'ceraph-uninstall-scheme-preview-'+Date[_0x86379(0x3d1)]()+'-'+Math[_0x86379(0x271)]()[_0x86379(0x510)](0x24)[_0x86379(0x63b)](0x2));return _0x5c6af7(_0x3285e4,async()=>{const _0x1feef7=_0x86379;await _0x43803f(_0x3285e4,{'recursive':!![]});for(const _0x3270fa of['app.json',_0x1feef7(0x45e),'app.config.ts']){if(_0x1feef7(0x59f)===_0x1feef7(0x59f)){const _0x2a07d1=_0x8c8eb4(_0x4bd06b,_0x3270fa);try{await copyFile(_0x2a07d1,_0x8c8eb4(_0x3285e4,_0x3270fa));}catch{}}else{const _0x3da932=_0x20c071?{'dryRun':!![]}:{};switch(_0x14868b['status']){case _0x1feef7(0x400):return{'name':'babel-config','status':_0x1feef7(0x400),'details':{'path':_0x2a2ced[_0x1feef7(0x4ff)],'action':_0x30229d[_0x1feef7(0x1ec)],..._0x3da932}};case'already-reverted':return{'name':'babel-config','status':_0x1feef7(0x33c),'details':{'path':_0x3aefaa[_0x1feef7(0x4ff)],..._0x3da932}};case'no-config':return{'name':'babel-config','status':'already-reverted','details':{..._0x3da932}};}}}for(const _0x3c4d1d of['ios',_0x1feef7(0x57f)]){try{await _0x2f1731(_0x8c8eb4(_0x4bd06b,_0x3c4d1d)),await _0x43803f(_0x8c8eb4(_0x3285e4,_0x3c4d1d),{'recursive':!![]});}catch{}}return{'projectDir':_0x3285e4,'tmpRoot':_0x3285e4};});}async function _0x3716c2(_0x5be323,_0x2767e5,_0x1555ba){const _0x3739e3=_0x3ee7d6,_0x3a9c05=_0x2767e5['revertMcpClients']??_0x2b292f,_0x32a0cc=_0x2767e5[_0x3739e3(0x2e8)]??_0x4241f8,_0x550ffc=_0x2767e5['homeDir']?.();if(_0x1555ba){let _0x7f8ec7=null,_0x32dff4=null;try{_0x7f8ec7=await _0xd27a8f(_0x5be323),_0x32dff4=await _0x43670a(_0x550ffc);const _0x536a44=await _0x3a9c05(_0x7f8ec7[_0x3739e3(0x1f7)]),_0x519e5b=await _0x32a0cc({'home':_0x32dff4['tmpHome']});return _0x1ae83f(_0x536a44,_0x519e5b,!![]);}catch(_0x165d28){return{'name':_0x3739e3(0x8eb),'status':_0x3739e3(0x125),'details':{'error':_0x51a030(_0x165d28),'dryRun':!![]}};}finally{_0x7f8ec7&&await _0x26810f(_0x7f8ec7[_0x3739e3(0x431)],{'recursive':!![],'force':!![]})[_0x3739e3(0x4ba)](()=>void 0x0),_0x32dff4&&await _0x26810f(_0x32dff4['tmpRoot'],{'recursive':!![],'force':!![]})[_0x3739e3(0x4ba)](()=>void 0x0);}}try{const _0x34a3e9=await _0x3a9c05(_0x5be323),_0x1f4619=await _0x32a0cc({'home':_0x550ffc});return _0x1ae83f(_0x34a3e9,_0x1f4619,![]);}catch(_0x132e62){return{'name':_0x3739e3(0x8eb),'status':_0x3739e3(0x125),'details':{'error':_0x51a030(_0x132e62)}};}}function _0x1ae83f(_0x377989,_0x2bb974,_0x4cafa3){const _0x414f07=_0x3ee7d6,_0x21ee74=[..._0x377989['files'],..._0x2bb974['files']],_0x58511b=_0x21ee74['filter'](_0x5cb554=>_0x5cb554[_0x414f07(0x9d0)]===_0x414f07(0x775)||_0x5cb554[_0x414f07(0x9d0)]===_0x414f07(0x280)),_0x2c82c8=_0x4cafa3?{'dryRun':!![]}:{};if(_0x58511b[_0x414f07(0x945)]===0x0)return'CLyhe'!=='CLyhe'?{'status':_0x414f07(0x33c),'path':_0x2d26ec}:{'name':_0x414f07(0x8eb),'status':_0x414f07(0x33c),'details':{'files':_0x377989[_0x414f07(0x10f)],'userGlobalFiles':_0x2bb974['files'],..._0x2c82c8}};return{'name':_0x414f07(0x8eb),'status':_0x414f07(0x400),'details':{'files':_0x377989[_0x414f07(0x10f)],'userGlobalFiles':_0x2bb974['files'],'touched':_0x58511b['length'],..._0x2c82c8}};}async function _0xd27a8f(_0x389274){const _0x4a75ca=_0x3ee7d6,_0x1e1ad2=_0x8c8eb4(tmpdir(),_0x4a75ca(0x761)+Date[_0x4a75ca(0x3d1)]()+'-'+Math[_0x4a75ca(0x271)]()[_0x4a75ca(0x510)](0x24)['slice'](0x2));return _0x5c6af7(_0x1e1ad2,async()=>{const _0x296a76=_0x4a75ca;if('NbqLg'!=='FXbpW'){await _0x43803f(_0x1e1ad2,{'recursive':!![]});const _0x152c91=['.mcp.json',_0x8c8eb4(_0x296a76(0x4e2),'mcp.json'),_0x8c8eb4('.vscode','mcp.json'),_0x8c8eb4('.codex',_0x296a76(0x97a)),_0x8c8eb4('.claude','settings.local.json')];for(const _0x5280c5 of _0x152c91){const _0x2185c2=_0x8c8eb4(_0x389274,_0x5280c5),_0x231ebf=_0x8c8eb4(_0x1e1ad2,_0x5280c5);try{await _0x43803f(_0x4ab8ef(_0x231ebf),{'recursive':!![]}),await copyFile(_0x2185c2,_0x231ebf);}catch{}}return{'projectDir':_0x1e1ad2,'tmpRoot':_0x1e1ad2};}else return _0x3a328f['value'];});}async function _0x43670a(_0x5a2507){const _0x5b79df=_0x3ee7d6,_0x33c9ab=_0x8c8eb4(tmpdir(),'ceraph-uninstall-mcp-global-preview-'+Date[_0x5b79df(0x3d1)]()+'-'+Math[_0x5b79df(0x271)]()['toString'](0x24)[_0x5b79df(0x63b)](0x2));return _0x5c6af7(_0x33c9ab,async()=>{const _0x4f2f26=_0x5b79df,_0x5c64e2=_0x8c8eb4(_0x33c9ab,_0x4f2f26(0x2dd));await _0x43803f(_0x5c64e2,{'recursive':!![]});const _0x3b9792=_0x6b1b18(_0x5a2507);for(let _0x55d43a=0x0;_0x55d43a<_0x211032[_0x4f2f26(0x945)];_0x55d43a++){const _0x1b80f7=_0x211032[_0x55d43a],_0x253604=_0x3b9792[_0x55d43a];if(!_0x1b80f7||!_0x253604)continue;const _0x5e210c=_0x8c8eb4(_0x5c64e2,..._0x1b80f7[_0x4f2f26(0x8f5)]);try{await _0x43803f(_0x4ab8ef(_0x5e210c),{'recursive':!![]}),await copyFile(_0x253604['path'],_0x5e210c);}catch{}}return{'tmpHome':_0x5c64e2,'tmpRoot':_0x33c9ab};});}async function _0xe1d58f(_0x7b645,_0x22d06e,_0x36d42d){const _0x2c10d0=_0x3ee7d6,_0x3b6056=_0x22d06e['revertClaudeHooks']??_0x38424c;if(_0x36d42d)try{const _0x5bbc5f=await _0x24ce7f(_0x7b645);try{const _0xd8ca7c=await _0x3b6056({'projectDir':_0x5bbc5f[_0x2c10d0(0x1f7)]});return _0x5c5b24(_0xd8ca7c,!![]);}finally{await _0x26810f(_0x5bbc5f[_0x2c10d0(0x431)],{'recursive':!![],'force':!![]})['catch'](()=>void 0x0);}}catch(_0x19f906){if('pKSYU'!==_0x2c10d0(0x602))_0x36d4fd+=_0x409b94[_0x2c10d0(0x510)]();else return{'name':_0x2c10d0(0x275),'status':_0x2c10d0(0x125),'details':{'error':_0x51a030(_0x19f906),'dryRun':!![]}};}try{const _0x8c90f4=await _0x3b6056({'projectDir':_0x7b645});return _0x5c5b24(_0x8c90f4,![]);}catch(_0x368f05){return{'name':'claude-hooks','status':_0x2c10d0(0x125),'details':{'error':_0x51a030(_0x368f05)}};}}function _0x5c5b24(_0x9dc190,_0x46e148){const _0x48ddd1=_0x3ee7d6,_0x4a3c3c=_0x46e148?{'dryRun':!![]}:{};switch(_0x9dc190[_0x48ddd1(0x9d0)]){case'reverted':return{'name':'claude-hooks','status':_0x48ddd1(0x400),'details':{..._0x9dc190['details'],..._0x4a3c3c}};case'already-reverted':return{'name':_0x48ddd1(0x275),'status':'already-reverted','details':{..._0x9dc190['details'],..._0x4a3c3c}};case _0x48ddd1(0x89f):return{'name':'claude-hooks','status':'manual','details':{..._0x9dc190[_0x48ddd1(0x220)],..._0x4a3c3c},'remediation':'Hook\x20script(s)\x20were\x20customized\x20after\x20init\x20wrote\x20them,\x20so\x20the\x20reverter\x20left\x20them\x20in\x20place:\x20'+_0x9dc190['details']['scriptsLeftAlone'][_0x48ddd1(0x221)](',\x20')+_0x48ddd1(0x3e1)+(_0x9dc190['details']['settingsFilesModified'][_0x48ddd1(0x945)]>0x0?_0x48ddd1(0x6c7)+_0x9dc190['details']['settingsFilesModified']['join'](',\x20')+'.':_0x48ddd1(0x371))};case _0x48ddd1(0x797):return{'name':_0x48ddd1(0x275),'status':_0x48ddd1(0x797),'details':{..._0x9dc190[_0x48ddd1(0x220)],..._0x4a3c3c}};}}async function _0x24ce7f(_0x3be00a){const _0x54d6be=_0x3ee7d6,_0x34c1ab=_0x8c8eb4(tmpdir(),_0x54d6be(0x210)+Date[_0x54d6be(0x3d1)]()+'-'+Math['random']()[_0x54d6be(0x510)](0x24)[_0x54d6be(0x63b)](0x2));return _0x5c6af7(_0x34c1ab,async()=>{const _0x3b0081=_0x54d6be;await _0x43803f(_0x34c1ab,{'recursive':!![]});const _0x58eabb=[_0x8c8eb4(_0x3b0081(0x644),_0x3b0081(0x6d5),'rn-error-notify.sh'),_0x8c8eb4(_0x3b0081(0x644),'hooks','rn-flow-progress-notify.sh'),_0x8c8eb4('.claude','settings.json'),_0x8c8eb4('.claude',_0x3b0081(0x2bb))];for(const _0x4f32ce of _0x58eabb){const _0x2aac37=_0x8c8eb4(_0x3be00a,_0x4f32ce),_0x378453=_0x8c8eb4(_0x34c1ab,_0x4f32ce);try{'bdHqk'==='bdHqk'?(await _0x43803f(_0x4ab8ef(_0x378453),{'recursive':!![]}),await copyFile(_0x2aac37,_0x378453)):(_0x43482e[_0x3b0081(0x4ae)](()=>{}),_0x30faad({'ok':![],'port':this['port'],'error':_0x3aafc5['message']??_0x374cb1['code']??'listen\x20failed','errorCode':_0x371fc9[_0x3b0081(0x845)]}));}catch{}}return{'projectDir':_0x34c1ab,'tmpRoot':_0x34c1ab};});}async function _0x195440(_0x8f30d4,_0x4aa7e4,_0xceaa13){const _0x59da13=_0x3ee7d6,_0x33da1c=_0x4aa7e4['revertGitignore']??_0x40c08f;if(_0xceaa13){const _0x92f0b5=_0x8c8eb4(tmpdir(),_0x59da13(0x6cc)+Date[_0x59da13(0x3d1)]()+'-'+Math['random']()['toString'](0x24)[_0x59da13(0x63b)](0x2));try{try{await _0x43803f(_0x92f0b5,{'recursive':!![]});try{await copyFile(_0x8c8eb4(_0x8f30d4,_0x59da13(0x4a6)),_0x8c8eb4(_0x92f0b5,'.gitignore'));}catch{}for(const _0x3cc2b0 of[_0x59da13(0x8b8),'.rn-flow-progress.json']){if('ktkVu'==='ktkVu')try{await copyFile(_0x8c8eb4(_0x8f30d4,_0x3cc2b0),_0x8c8eb4(_0x92f0b5,_0x3cc2b0));}catch{}else return null;}const _0x5d24cc=await _0x33da1c(_0x92f0b5);return _0x3e2e94(_0x5d24cc,!![]);}finally{_0x59da13(0x37e)==='YZHVb'?await _0x26810f(_0x92f0b5,{'recursive':!![],'force':!![]})['catch'](()=>void 0x0):_0xf4ac0e['push'](..._0x52c3c4[_0x59da13(0x360)]);}}catch(_0x50e99b){return{'name':_0x59da13(0x36b),'status':'error','details':{'error':_0x51a030(_0x50e99b),'dryRun':!![]}};}}try{const _0x247430=await _0x33da1c(_0x8f30d4);return _0x3e2e94(_0x247430,![]);}catch(_0x3b0134){return{'name':'gitignore','status':_0x59da13(0x125),'details':{'error':_0x51a030(_0x3b0134)}};}}function _0x3e2e94(_0x964789,_0x10f81b){const _0x2b14ee=_0x3ee7d6,_0x42e1c2=_0x10f81b?{'dryRun':!![]}:{},_0x55f2a4=_0x964789[_0x2b14ee(0x154)];switch(_0x964789['status']){case'reverted':return{'name':_0x2b14ee(0x36b),'status':'reverted','details':{'path':_0x964789[_0x2b14ee(0x4ff)],'removedLines':_0x964789['removedLines'],'removedRuntimeFiles':_0x55f2a4,..._0x42e1c2}};case _0x2b14ee(0x33c):return{'name':_0x2b14ee(0x36b),'status':_0x55f2a4[_0x2b14ee(0x945)]>0x0?'reverted':'already-reverted','details':{'path':_0x964789['path'],'removedRuntimeFiles':_0x55f2a4,..._0x42e1c2}};case'no-gitignore':return{'name':'gitignore','status':_0x55f2a4[_0x2b14ee(0x945)]>0x0?_0x2b14ee(0x400):'already-reverted','details':{'reason':'no\x20.gitignore','removedRuntimeFiles':_0x55f2a4,..._0x42e1c2}};}}async function _0x17b286(_0x466ae5,_0x19a7a3){const _0x283bf7=_0x3ee7d6,_0x2e9094=_0x466ae5[_0x283bf7(0x38e)]??_0x32389c,_0x1f51c8=_0x466ae5[_0x283bf7(0x7a0)]?.();if(_0x19a7a3)try{const _0x4244e4=await _0x320ae6(_0x1f51c8);try{const _0x429401=await _0x2e9094({'home':_0x4244e4['tmpHome']});return _0x4c6a0e(_0x429401,!![]);}finally{if('lsjIH'!==_0x283bf7(0x4eb)){const _0x15cf26=_0x16c580(_0x4f8cc0,new _0x595fc1(['mcp_servers.react-native-mcp']));_0x2c0e36=_0x15cf26['next']+_0x46ba59();}else await _0x26810f(_0x4244e4['tmpRoot'],{'recursive':!![],'force':!![]})[_0x283bf7(0x4ba)](()=>void 0x0);}}catch(_0x5df011){return{'name':'signal-host','status':_0x283bf7(0x125),'details':{'error':_0x51a030(_0x5df011),'dryRun':!![]}};}try{const _0x2ae53d=await _0x2e9094({'home':_0x1f51c8});return _0x4c6a0e(_0x2ae53d,![]);}catch(_0x3cfe3e){return{'name':'signal-host','status':'error','details':{'error':_0x51a030(_0x3cfe3e)}};}}function _0x4c6a0e(_0x22b837,_0x216e89){const _0xdc2bc9=_0x3ee7d6,_0x3ff7c5=_0x216e89?{'dryRun':!![]}:{};switch(_0x22b837[_0xdc2bc9(0x9d0)]){case _0xdc2bc9(0x400):return{'name':'signal-host','status':'reverted','details':{'path':_0x22b837['path'],'shell':_0x22b837[_0xdc2bc9(0x4d4)],'removedIp':_0x22b837[_0xdc2bc9(0x871)],..._0x3ff7c5}};case'already-reverted':return{'name':_0xdc2bc9(0x553),'status':_0xdc2bc9(0x33c),'details':{'path':_0x22b837['path'],'shell':_0x22b837['shell'],..._0x3ff7c5}};case'no-profile':return{'name':'signal-host','status':_0xdc2bc9(0x33c),'details':{'reason':_0xdc2bc9(0x7db),'path':_0x22b837[_0xdc2bc9(0x4ff)],..._0x3ff7c5}};}}function _0x4a5a(_0x264ed8,_0x57f68d){_0x264ed8=_0x264ed8-0xcc;const _0x1ecd13=_0x1ecd();let _0x4a5a30=_0x1ecd13[_0x264ed8];return _0x4a5a30;}async function _0x320ae6(_0x140787){const _0x5397bd=_0x3ee7d6,_0x1267b5=_0x140787??_0x4216fd(),_0x444b8d=_0x8c8eb4(tmpdir(),'ceraph-uninstall-shell-preview-'+Date[_0x5397bd(0x3d1)]()+'-'+Math[_0x5397bd(0x271)]()['toString'](0x24)['slice'](0x2));return _0x5c6af7(_0x444b8d,async()=>{const _0x1a0384=_0x5397bd,_0x1d48d3=_0x8c8eb4(_0x444b8d,_0x1a0384(0x2dd));await _0x43803f(_0x1d48d3,{'recursive':!![]});for(const _0xe9b8dd of[_0x1a0384(0x2e5),'.bashrc']){try{await copyFile(_0x8c8eb4(_0x1267b5,_0xe9b8dd),_0x8c8eb4(_0x1d48d3,_0xe9b8dd));}catch{}}return{'tmpHome':_0x1d48d3,'tmpRoot':_0x444b8d};});}async function _0x3f7f11(_0x93df7f,_0x349461,_0x318c99){const _0x25c73f=_0x3ee7d6,_0xe69f5b=_0x349461[_0x25c73f(0x577)]??_0x403304;if(!_0x349461['purgeImages'])try{if('GCome'==='GCome'){const _0x5321ad=await _0xe69f5b({'projectDir':_0x93df7f,'confirm':![]});if(_0x5321ad['status']==='already-reverted')return{'name':'ceraph-dir','status':'already-reverted','details':{'path':_0x5321ad['path'],..._0x318c99?{'dryRun':!![]}:{}}};if(_0x5321ad[_0x25c73f(0x9d0)]==='skipped-needs-confirmation')return{'name':'ceraph-dir','status':'skipped','details':{'path':_0x5321ad[_0x25c73f(0x4ff)],'paths':_0x5321ad['paths'],..._0x318c99?{'dryRun':!![]}:{}},'remediation':'Re-run\x20with\x20--purge-images\x20to\x20delete\x20.ceraph/\x20(camera\x20images,\x20design\x20snapshots,\x20run\x20artifacts).\x20Default\x20leaves\x20them\x20in\x20place\x20so\x20a\x20re-install\x20picks\x20up\x20where\x20you\x20left\x20off.'};return{'name':_0x25c73f(0x9e5),'status':'error','details':{'unexpectedStatus':_0x5321ad['status'],..._0x318c99?{'dryRun':!![]}:{}},'remediation':'ceraph-dir\x20preview\x20returned\x20an\x20unexpected\x20status;\x20pass\x20--purge-images\x20explicitly\x20to\x20delete\x20.ceraph/.'};}else return{'content':[{'type':'text','text':_0x14c0a1+_0x25c73f(0x9f8)+(_0x44fbcf instanceof _0x1be4ad?_0x254379[_0x25c73f(0x92e)]:_0x3140ac(_0x87c7f3))}],'isError':!![]};}catch(_0x4165c1){return{'name':'ceraph-dir','status':_0x25c73f(0x125),'details':{'error':_0x51a030(_0x4165c1),..._0x318c99?{'dryRun':!![]}:{}}};}if(_0x318c99)try{const _0x1f3cc4=await _0xe69f5b({'projectDir':_0x93df7f,'confirm':![]});if(_0x1f3cc4['status']===_0x25c73f(0x33c))return{'name':_0x25c73f(0x9e5),'status':'already-reverted','details':{'path':_0x1f3cc4[_0x25c73f(0x4ff)],'dryRun':!![]}};if(_0x1f3cc4[_0x25c73f(0x9d0)]===_0x25c73f(0x49f))return{'name':_0x25c73f(0x9e5),'status':_0x25c73f(0x400),'details':{'path':_0x1f3cc4['path'],'paths':_0x1f3cc4[_0x25c73f(0xe8)],'dryRun':!![]}};return{'name':'ceraph-dir','status':'error','details':{'unexpectedStatus':_0x1f3cc4[_0x25c73f(0x9d0)],'dryRun':!![]}};}catch(_0x3a8f89){return{'name':_0x25c73f(0x9e5),'status':'error','details':{'error':_0x51a030(_0x3a8f89),'dryRun':!![]}};}try{const _0x1440e7=await _0xe69f5b({'projectDir':_0x93df7f,'confirm':!![]});switch(_0x1440e7['status']){case'deleted':return{'name':_0x25c73f(0x9e5),'status':'reverted','details':{'path':_0x1440e7[_0x25c73f(0x4ff)],'deletedEntries':_0x1440e7[_0x25c73f(0x56f)]}};case _0x25c73f(0x33c):return{'name':_0x25c73f(0x9e5),'status':'already-reverted','details':{'path':_0x1440e7['path']}};case'skipped-needs-confirmation':return{'name':_0x25c73f(0x9e5),'status':'skipped','details':{'path':_0x1440e7[_0x25c73f(0x4ff)],'unexpected':!![]}};}}catch(_0x180d0b){return{'name':'ceraph-dir','status':'error','details':{'error':_0x51a030(_0x180d0b)}};}}async function _0x450948(_0x188efc,_0x38353c){const _0x54de3f=_0x3ee7d6,_0x53792a=_0x188efc[_0x54de3f(0x9f1)]??_0x1055a3,_0x1e1c1a=_0x188efc['homeDir']?.();if(!_0x188efc[_0x54de3f(0x5f5)])try{const _0x41f449=await _0x53792a({'global':![]},{'home':_0x1e1c1a});return{'name':'auth','status':'skipped','details':{'path':_0x41f449[_0x54de3f(0x4ff)],..._0x38353c?{'dryRun':!![]}:{}},'remediation':'Re-run\x20with\x20--global\x20to\x20delete\x20~/.ceraph/auth.json.\x20Note:\x20this\x20token\x20is\x20shared\x20across\x20every\x20Ceraph\x20install\x20on\x20this\x20machine\x20—\x20removing\x20it\x20logs\x20you\x20out\x20everywhere.'};}catch(_0x221f13){return{'name':'auth','status':'error','details':{'error':_0x51a030(_0x221f13),..._0x38353c?{'dryRun':!![]}:{}}};}if(_0x38353c)try{const _0x530194=_0x1e1c1a??_0x4216fd(),_0x20adc4=_0x8c8eb4(_0x530194,'.ceraph',_0x54de3f(0x65b));let _0x4a1efb=![];try{await _0x2f1731(_0x20adc4),_0x4a1efb=!![];}catch{_0x4a1efb=![];}return{'name':_0x54de3f(0x469),'status':_0x4a1efb?'reverted':_0x54de3f(0x33c),'details':{'path':_0x20adc4,'dryRun':!![],'wouldDelete':_0x4a1efb}};}catch(_0x188695){if('fRzMt'===_0x54de3f(0x419))return{'name':_0x54de3f(0x469),'status':'error','details':{'error':_0x51a030(_0x188695),'dryRun':!![]}};else _0x30e72d=_0x55a262['next'];}try{const _0x31174e=await _0x53792a({'global':!![]},{'home':_0x1e1c1a});switch(_0x31174e[_0x54de3f(0x9d0)]){case _0x54de3f(0x2aa):return{'name':'auth','status':'reverted','details':{'path':_0x31174e['path']}};case _0x54de3f(0x33c):return{'name':_0x54de3f(0x469),'status':'already-reverted','details':{'path':_0x31174e['path']}};case'skipped':return{'name':_0x54de3f(0x469),'status':'skipped','details':{'path':_0x31174e[_0x54de3f(0x4ff)],'unexpected':!![]}};}}catch(_0xb6a705){return{'name':'auth','status':_0x54de3f(0x125),'details':{'error':_0x51a030(_0xb6a705)}};}}async function _0x764e10(_0x426663,_0x5b0c18,_0x14a8c1){const _0x1231f2=_0x3ee7d6,_0x14de77=_0x5b0c18[_0x1231f2(0x624)]??_0x3048eb,_0x1a8aa8=_0x5b0c18[_0x1231f2(0x3a6)];if(_0x14a8c1)try{const _0x42cb5c=await _0x14de77(_0x426663,{'spawnRemove':_0x2b21f1});return _0x573252(_0x42cb5c,!![]);}catch(_0xde90f3){return{'name':'package','status':_0x1231f2(0x125),'details':{'error':_0x51a030(_0xde90f3),'dryRun':!![]}};}try{const _0x3925bf=await _0x14de77(_0x426663,_0x1a8aa8?{'spawnRemove':_0x1a8aa8}:{});return _0x573252(_0x3925bf,![]);}catch(_0xdfa4be){return{'name':'package','status':'error','details':{'error':_0x51a030(_0xdfa4be)}};}}function _0x573252(_0xea16a,_0x3f9418){const _0x4e6265=_0x3ee7d6,_0x17e87f=_0x3f9418?{'dryRun':!![]}:{};switch(_0xea16a[_0x4e6265(0x9d0)]){case'removed':return{'name':_0x4e6265(0x9dd),'status':_0x4e6265(0x400),'details':{'packageManager':_0xea16a['pm'],'removedPackages':_0xea16a['removedPackages'],'command':_0xea16a['command'],..._0x17e87f}};case'nothing-to-remove':return{'name':_0x4e6265(0x9dd),'status':_0x4e6265(0x33c),'details':{'packageManager':_0xea16a['pm'],..._0x17e87f}};case _0x4e6265(0x5fa):return{'name':'package','status':_0x4e6265(0x125),'details':{'packageManager':_0xea16a['pm'],'command':_0xea16a['command'],'exitCode':_0xea16a['exitCode'],..._0x17e87f},'remediation':_0xea16a['pm']+'\x20'+(_0xea16a['command']?.[_0x4e6265(0x719)]['join']('\x20')??'')+'\x20exited\x20with\x20code\x20'+_0xea16a[_0x4e6265(0x186)]+_0x4e6265(0x1ce)};}}function _0x51a030(_0x386bd8){return _0x386bd8 instanceof Error?_0x386bd8['message']:String(_0x386bd8);}async function _0xcafb45(_0x5322f4,_0x1b0b75,_0x2d4a89){const _0x1b92f7=_0x3ee7d6,_0x2531ce=_0x1b0b75['revertBabelConfig']??(_0x4b201d=>_0x58b046({'projectDir':_0x4b201d,..._0x2d4a89?{'writeFile':async()=>void 0x0,'unlink':async()=>void 0x0}:{}}));try{const _0x244533=await _0x2531ce(_0x5322f4);return _0x427c69(_0x244533,_0x2d4a89);}catch(_0x3e8793){return{'name':_0x1b92f7(0x8a9),'status':_0x1b92f7(0x125),'details':{'error':_0x51a030(_0x3e8793),..._0x2d4a89?{'dryRun':!![]}:{}}};}}function _0x427c69(_0xd41aef,_0x7f667b){const _0x21a903=_0x3ee7d6,_0x26828f=_0x7f667b?{'dryRun':!![]}:{};switch(_0xd41aef[_0x21a903(0x9d0)]){case'reverted':return{'name':_0x21a903(0x8a9),'status':_0x21a903(0x400),'details':{'path':_0xd41aef['path'],'action':_0xd41aef['action'],..._0x26828f}};case'already-reverted':return{'name':_0x21a903(0x8a9),'status':_0x21a903(0x33c),'details':{'path':_0xd41aef[_0x21a903(0x4ff)],..._0x26828f}};case _0x21a903(0x8f2):return{'name':'babel-config','status':'already-reverted','details':{..._0x26828f}};}}async function _0x5c6af7(_0x48d430,_0x50c4f0){try{return await _0x50c4f0();}catch(_0x3819db){try{await _0x26810f(_0x48d430,{'recursive':!![],'force':!![]});}catch{}throw _0x3819db;}}async function _0x82ea87(_0x15d309,_0x30ba04){const _0x344351=_0x3ee7d6,_0x3ab36b=_0x8c8eb4(tmpdir(),'ceraph-uninstall-boot-preview-'+Date['now']()+'-'+Math[_0x344351(0x271)]()['toString'](0x24)['slice'](0x2));return _0x5c6af7(_0x3ab36b,async()=>{const _0x5e5854=_0x344351,_0x5703f5=_0x5a8767(_0x30ba04,_0x15d309),_0x47c8c=_0xed2b57(_0x5703f5)?_0x5e5854(0x854):_0x5703f5,_0x9115c4=_0x8c8eb4(_0x3ab36b,_0x47c8c);return await _0x43803f(_0x4ab8ef(_0x9115c4),{'recursive':!![]}),await copyFile(_0x15d309,_0x9115c4),{'projectDir':_0x3ab36b,'tmpRoot':_0x3ab36b};});}function _0x19b833(_0x42693d,_0x2c040b){const _0x3c8a45=_0x3ee7d6,_0x307813=[],_0x48df99=[];let _0x3b185d=0x0,_0x390c01=0x0;for(const _0x135241 of _0x2c040b){if(_0x135241[_0x3c8a45(0x9d0)]==='reverted'||_0x135241[_0x3c8a45(0x9d0)]===_0x3c8a45(0x77d))_0x3b185d++;else(_0x135241['status']==='skipped'||_0x135241['status']===_0x3c8a45(0x33c))&&_0x390c01++;_0x135241[_0x3c8a45(0x9d0)]===_0x3c8a45(0x77d)&&_0x135241['remediation']&&_0x307813[_0x3c8a45(0x496)](_0x135241[_0x3c8a45(0x5de)]),_0x135241['status']==='manual'&&_0x135241['remediation']&&_0x48df99['push'](_0x135241[_0x3c8a45(0x5de)]);}return{'workingDir':_0x42693d,'steps':_0x2c040b,'summary':{'reverted':_0x3b185d,'skipped':_0x390c01,'warnings':_0x307813,'manualSteps':_0x48df99}};}var _0x5de303=0x40*0x400,_0x88d7db=process['cwd']();function _0x87f5f2(){return _0x88d7db;}function _0x1609b5(_0x5cc606){const _0x1d2eb7=_0x3ee7d6;return{'content':[{'type':_0x1d2eb7(0x5d9),'text':JSON['stringify'](_0x5cc606,null,0x2)}]};}var _0x33931f=0x2*0x400;function _0x3bb8ff(_0x53d23d,_0x4a3016){const _0x1b1703=_0x3ee7d6;if(_0x53d23d['length']<=_0x4a3016)return _0x53d23d;const _0x4a909a=_0x53d23d['slice'](0x0,Math[_0x1b1703(0x31a)](_0x4a3016/0x2)-0x10),_0x5e9b7b=_0x53d23d['slice'](_0x53d23d[_0x1b1703(0x945)]-(Math['floor'](_0x4a3016/0x2)-0x10));return _0x4a909a+_0x1b1703(0x52f)+(_0x53d23d[_0x1b1703(0x945)]-_0x4a3016)+_0x1b1703(0x189)+_0x5e9b7b;}function _0x2a8b70(_0x465155,_0x2958aa=_0x5de303){const _0x54bdac=_0x3ee7d6,_0x4f54f2=JSON['stringify'](_0x465155,null,0x2);if(_0x4f54f2[_0x54bdac(0x945)]<=_0x2958aa)return _0x465155;const _0x2f1aa0=_0x465155[_0x54bdac(0x22d)]['map'](_0x143a9e=>{const _0x11e697=_0x54bdac;if(_0x143a9e['details']===void 0x0)return _0x143a9e;const _0x2c0089=JSON[_0x11e697(0x2c1)](_0x143a9e[_0x11e697(0x220)]);return{..._0x143a9e,'details':{'truncated':!![],'originalSize':_0x2c0089[_0x11e697(0x945)]}};}),_0x446247={..._0x465155,'steps':_0x2f1aa0},_0x41c525=JSON['stringify'](_0x446247,null,0x2);if(_0x41c525['length']<=_0x2958aa)return _0x446247;let _0x3019a3=0x20,_0x624041=_0x33931f,_0x4e1db7=_0x446247;while(_0x3019a3<=_0x624041){const _0xd6c815=Math['floor']((_0x3019a3+_0x624041)/0x2),_0x4c57e7={..._0x446247,'workingDir':_0x3bb8ff(_0x446247['workingDir'],_0xd6c815),'steps':_0x446247['steps'][_0x54bdac(0x986)](_0x3e6044=>({..._0x3e6044,'remediation':_0x3e6044['remediation']?_0x3bb8ff(_0x3e6044['remediation'],_0xd6c815):_0x3e6044['remediation']})),'summary':{..._0x446247[_0x54bdac(0x536)],'warnings':_0x446247['summary'][_0x54bdac(0x6b1)][_0x54bdac(0x986)](_0xd0289d=>_0x3bb8ff(_0xd0289d,_0xd6c815)),'manualSteps':_0x446247['summary'][_0x54bdac(0x477)]['map'](_0x2fa63c=>_0x3bb8ff(_0x2fa63c,_0xd6c815))}},_0x52a9ef=JSON[_0x54bdac(0x2c1)](_0x4c57e7,null,0x2)['length'];_0x52a9ef<=_0x2958aa?(_0x4e1db7=_0x4c57e7,_0x3019a3=_0xd6c815+0x1):_0x624041=_0xd6c815-0x1;}return _0x4e1db7;}function _0x2afefb(_0x394c1a,_0x241143){const _0xe274f7=_0x3ee7d6;return{'content':[{'type':'text','text':_0x394c1a+'\x20failed:\x20'+(_0x241143 instanceof Error?_0x241143[_0xe274f7(0x92e)]:String(_0x241143))}],'isError':!![]};}function _0x37347c(_0x248e24){return new Promise(_0x51aff7=>{const _0x5bf212=_0x4a5a,_0x249b14=_0x557746(_0x248e24['bin'],_0x248e24[_0x5bf212(0x719)],{'cwd':_0x248e24[_0x5bf212(0x346)],'stdio':[_0x5bf212(0x317),'pipe',_0x5bf212(0x406)]});_0x249b14['stdout']?.['on']('data',()=>void 0x0),_0x249b14[_0x5bf212(0x870)]?.['on']('data',()=>void 0x0),_0x249b14['on'](_0x5bf212(0x125),()=>_0x51aff7({'exitCode':0x7f})),_0x249b14['on']('exit',_0xab0b01=>_0x51aff7({'exitCode':_0xab0b01??0x1}));});}function _0x27ac7d(_0x4e7062){const _0x361a8b=_0x3ee7d6;_0x4e7062['tool'](_0x361a8b(0x762),'Snapshot\x20what\x20Ceraph\x20has\x20installed\x20in\x20this\x20project\x20—\x20package\x20presence,\x20gitignore\x20entries,\x20MCP-client\x20configs,\x20root-layout\x20boot\x20wiring,\x20<CeraphCamera>\x20usage\x20count,\x20and\x20whether\x20the\x20user-global\x20auth\x20token\x20is\x20present.\x20Use\x20this\x20BEFORE\x20ceraph_uninstall_run\x20to\x20show\x20the\x20user\x20what\x20would\x20change.\x20Returns\x20the\x20footprint\x20without\x20mutating\x20anything.',{'projectDir':_0x39299c['string']()[_0x361a8b(0x4ac)]()[_0x361a8b(0x9de)]('Project\x20directory\x20to\x20inspect.\x20Defaults\x20to\x20the\x20MCP\x20server\x27s\x20cwd.\x20In\x20a\x20monorepo\x20with\x20multiple\x20RN\x20subpackages,\x20the\x20tool\x20returns\x20`monorepoConflict`\x20listing\x20each\x20candidate\x20—\x20pass\x20the\x20chosen\x20subpackage\x27s\x20path\x20here\x20to\x20disambiguate.')},async _0x42a92a=>{const _0x3ada81=_0x361a8b;try{const _0x1de9cb=_0x42a92a[_0x3ada81(0x1f7)]??_0x87f5f2(),_0x1bb0a6=await _0x568a61(_0x1de9cb,{'rootDir':_0x423853(_0x42a92a[_0x3ada81(0x1f7)],_0x87f5f2())});return _0x1609b5(_0x1bb0a6);}catch(_0x313bfd){return _0x2afefb(_0x3ada81(0x762),_0x313bfd);}}),_0x4e7062[_0x361a8b(0x8dc)](_0x361a8b(0x2ed),'Uninstall\x20Ceraph\x20from\x20this\x20project.\x20Reverts\x20source-tree\x20edits\x20(<CeraphCamera>\x20→\x20<CameraView>,\x20installCeraph()\x20boot\x20wiring,\x20ceraph\x20URL\x20scheme),\x20strips\x20MCP\x20client\x20configs,\x20removes\x20gitignore\x20entries\x20+\x20the\x20shell\x20signal-host\x20export,\x20and\x20uninstalls\x20the\x20package\x20via\x20the\x20project\x27s\x20package\x20manager.\x20Default\x20leaves\x20`.ceraph/`\x20(test\x20images\x20+\x20snapshots)\x20and\x20`~/.ceraph/auth.json`\x20(user-global\x20OAuth\x20token)\x20untouched.\x20Pass\x20`purgeImages`\x20and\x20`global`\x20to\x20nuke\x20those\x20too.\x20Always\x20call\x20with\x20`dryRun:\x20true`\x20first\x20to\x20preview\x20the\x20step\x20list\x20before\x20a\x20real\x20run.',{'projectDir':_0x39299c[_0x361a8b(0x7fd)]()[_0x361a8b(0x4ac)]()['describe'](_0x361a8b(0x540)),'purgeImages':_0x39299c[_0x361a8b(0x715)]()['optional']()['describe']('If\x20true,\x20also\x20delete\x20`.ceraph/`\x20(camera\x20test\x20images\x20+\x20design\x20snapshots\x20+\x20run\x20artifacts).\x20Default\x20false.'),'global':_0x39299c[_0x361a8b(0x715)]()['optional']()[_0x361a8b(0x9de)](_0x361a8b(0x84d)),'dryRun':_0x39299c['boolean']()['optional']()[_0x361a8b(0x9de)]('If\x20true,\x20return\x20the\x20step\x20list\x20as\x20a\x20preview\x20without\x20mutating\x20anything.\x20Use\x20this\x20first\x20to\x20show\x20the\x20user\x20what\x20would\x20happen.')},async _0x2c5471=>{const _0x5e4e7f=_0x361a8b;try{const _0xd040fe=_0x2c5471[_0x5e4e7f(0x1f7)]??_0x87f5f2(),_0x24ec87=await _0x2b43af({'projectDir':_0xd040fe,'rootDir':_0x423853(_0x2c5471[_0x5e4e7f(0x1f7)],_0x87f5f2()),'purgeImages':_0x2c5471[_0x5e4e7f(0x3f8)]===!![],'global':_0x2c5471[_0x5e4e7f(0x5f5)]===!![],'dryRun':_0x2c5471['dryRun']===!![],'nonInteractive':!![],'spawnRemove':_0x37347c});return _0x1609b5(_0x2a8b70(_0x24ec87));}catch(_0x407197){return _0x2afefb('ceraph_uninstall_run',_0x407197);}});}import{promises as _0x318682}from'fs';import{pathToFileURL}from'url';import{join as _0x16851c}from'path';var _0x47dfc3=new Set([_0x3ee7d6(0x6b8),_0x3ee7d6(0x921),'supabase',_0x3ee7d6(0x32e),'cognito']),_0x529c41=[_0x3ee7d6(0x683),'.cjs','.mjs',_0x3ee7d6(0x1fc)];async function _0x53bedf(_0x1cf491){const _0x3fcb7c=_0x3ee7d6;for(const _0x367b9d of _0x529c41){const _0x37cd53=_0x16851c(_0x1cf491,'ceraph.config'+_0x367b9d);let _0x30e6f5=![];try{await _0x318682['access'](_0x37cd53),_0x30e6f5=!![];}catch{}if(!_0x30e6f5)continue;let _0x330594=null;if(_0x367b9d==='.json')try{if(_0x3fcb7c(0x2bd)!==_0x3fcb7c(0x2bd))_0x56eebe[_0x3fcb7c(0x77f)]=_0x35d2ce[_0x3fcb7c(0x77f)];else{const _0xbdcc9=await _0x318682['readFile'](_0x37cd53,_0x3fcb7c(0x29d)),_0x454627=JSON[_0x3fcb7c(0x229)](_0xbdcc9);_0x330594=_0x454627?.[_0x3fcb7c(0x469)];}}catch{return _0xb9a8f0(_0x1cf491);}else{const _0x433bb3=pathToFileURL(_0x37cd53)[_0x3fcb7c(0x6f3)]+_0x3fcb7c(0x595)+Date[_0x3fcb7c(0x3d1)](),_0xe2b8e3=await import(_0x433bb3)['catch'](()=>null);_0xe2b8e3&&(_0x330594=(_0xe2b8e3['default']&&_0xe2b8e3[_0x3fcb7c(0x33f)]['auth'])??_0xe2b8e3[_0x3fcb7c(0x469)]);}const _0x1aa723=_0x15f79f(_0x330594);if(_0x1aa723)return _0x1aa723;return _0xb9a8f0(_0x1cf491);}return _0xb9a8f0(_0x1cf491);}async function _0xb9a8f0(_0x52a1ea){const _0x121f3d=_0x3ee7d6,_0xa6bc=_0x16851c(_0x52a1ea,'.env.ceraph');try{const _0x48b928=await _0x318682[_0x121f3d(0x18d)](_0xa6bc,'utf-8'),_0x195180=_0x533762(_0x48b928),_0x32b950=_0x14963d(_0x195180);if(_0x32b950)return _0x32b950;}catch{}const _0x5cbb57=_0x14963d(process.env);if(_0x5cbb57)return _0x5cbb57;return null;}function _0x15f79f(_0x53809e){const _0x176f26=_0x3ee7d6;if(!_0x53809e||typeof _0x53809e!=='object')return null;const _0x2d2e62=_0x53809e,_0x1c3625=_0x2d2e62['provider'];if(typeof _0x1c3625!=='string')return null;if(!_0x47dfc3[_0x176f26(0x21c)](_0x1c3625))return null;const _0x10c376=_0x2d2e62['secretEnv'],_0x543b41=_0x1c3625==='cognito';if(typeof _0x10c376!=='string'){if(!_0x543b41)return null;}return{'provider':_0x1c3625,'secretEnv':typeof _0x10c376==='string'?_0x10c376:'',...typeof _0x2d2e62['domain']==='string'?{'domain':_0x2d2e62[_0x176f26(0x2f4)]}:{},...typeof _0x2d2e62['connection']===_0x176f26(0x7fd)?{'connection':_0x2d2e62[_0x176f26(0x1df)]}:{},...typeof _0x2d2e62[_0x176f26(0x29b)]===_0x176f26(0x7fd)?{'projectUrl':_0x2d2e62[_0x176f26(0x29b)]}:{},...typeof _0x2d2e62['userPoolId']==='string'?{'userPoolId':_0x2d2e62[_0x176f26(0x2c9)]}:{},...typeof _0x2d2e62['clientId']==='string'?{'clientId':_0x2d2e62['clientId']}:{},...typeof _0x2d2e62['region']===_0x176f26(0x7fd)?{'region':_0x2d2e62[_0x176f26(0x4e6)]}:{}};}function _0x14963d(_0x13da72){const _0x4b838d=_0x3ee7d6,_0x15c2d8=_0x13da72[_0x4b838d(0x55e)],_0x2b703b=_0x13da72['CERAPH_AUTH_SECRET_ENV'];if(typeof _0x15c2d8!==_0x4b838d(0x7fd)||_0x15c2d8['length']===0x0){if('TCRnh'===_0x4b838d(0x7f5))return null;else{if(_0x3cd884[_0x4b838d(0x248)]===_0x4b838d(0x96e))return!![];return _0x4f879c(_0x4ba86d[_0x4b838d(0x3f5)]);}}if(!_0x47dfc3['has'](_0x15c2d8))return null;const _0x10c4f6=_0x15c2d8==='cognito',_0x21c9af=typeof _0x2b703b===_0x4b838d(0x7fd)&&_0x2b703b['length']>0x0;if(!_0x21c9af&&!_0x10c4f6)return null;return{'provider':_0x15c2d8,'secretEnv':_0x21c9af?_0x2b703b:'',..._0x13da72[_0x4b838d(0x45b)]?{'domain':_0x13da72[_0x4b838d(0x45b)]}:{},..._0x13da72[_0x4b838d(0x534)]?{'connection':_0x13da72[_0x4b838d(0x534)]}:{},..._0x13da72['CERAPH_AUTH_PROJECT_URL']?{'projectUrl':_0x13da72['CERAPH_AUTH_PROJECT_URL']}:{},..._0x13da72['CERAPH_AUTH_USER_POOL_ID']?{'userPoolId':_0x13da72['CERAPH_AUTH_USER_POOL_ID']}:{},..._0x13da72['CERAPH_AUTH_CLIENT_ID']?{'clientId':_0x13da72['CERAPH_AUTH_CLIENT_ID']}:{},..._0x13da72['CERAPH_AUTH_REGION']?{'region':_0x13da72['CERAPH_AUTH_REGION']}:{}};}function _0x533762(_0x55f02a){const _0x269c7=_0x3ee7d6,_0x5cf58a={};for(const _0x453e3e of _0x55f02a[_0x269c7(0x814)](/\r?\n/)){const _0x1ecbcf=_0x453e3e[_0x269c7(0x5da)]();if(_0x1ecbcf['length']===0x0||_0x1ecbcf[_0x269c7(0x887)]('#'))continue;const _0x1a899a=_0x1ecbcf['indexOf']('=');if(_0x1a899a<=0x0)continue;const _0x269f90=_0x1ecbcf[_0x269c7(0x63b)](0x0,_0x1a899a)['trim']();let _0x483720=_0x1ecbcf[_0x269c7(0x63b)](_0x1a899a+0x1)[_0x269c7(0x5da)]();(_0x483720[_0x269c7(0x887)]('\x22')&&_0x483720[_0x269c7(0x3f0)]('\x22')||_0x483720[_0x269c7(0x887)]('\x27')&&_0x483720[_0x269c7(0x3f0)]('\x27'))&&(_0x483720=_0x483720['slice'](0x1,-0x1)),_0x5cf58a[_0x269f90]=_0x483720;}return _0x5cf58a;}import{promises as _0xa04a0f}from'fs';import{join as _0x166a21}from'path';var _0x51fd3d=class extends Error{[_0x3ee7d6(0x845)];constructor(_0x1e94b4,_0x55f472,_0x565673){const _0xc0bda0=_0x3ee7d6;super(_0x55f472),this[_0xc0bda0(0x4d1)]=_0xc0bda0(0x398),this['code']=_0x1e94b4;if(_0x565673!==void 0x0)this[_0xc0bda0(0x4ec)]=_0x565673;}};import{randomBytes as _0x2458d1}from'crypto';function _0x398e78(_0x3a10ac){const _0x3be148=_0x3ee7d6,_0x72b5cc=(_0x3a10ac||'user')[_0x3be148(0x17e)]()[_0x3be148(0x27d)](/[^a-z0-9-]/g,'-')[_0x3be148(0x27d)](/-+/g,'-')['replace'](/^-|-$/g,'')[_0x3be148(0x63b)](0x0,0x20),_0x9999fd=_0x2458d1(0x3)['toString']('hex');return'ceraph-'+_0x72b5cc+'-'+_0x9999fd+'@ceraph-test.local';}function _0x4434cd(){const _0x423da6=_0x3ee7d6,_0x4d4f32=_0x2458d1(0x10)['toString']('base64')[_0x423da6(0x27d)](/[^a-zA-Z0-9]/g,''),_0x12f424=_0x4d4f32[_0x423da6(0x945)]>=0x14?_0x4d4f32[_0x423da6(0x63b)](0x0,0x14):_0x4d4f32[_0x423da6(0x494)](0x14,'Aa1');return'A'+_0x12f424['slice'](0x1,0xa)+'a'+_0x12f424['slice'](0xb,0x13)+'9';}function _0x84991c(_0x274d24){const _0x45d45f=_0x3ee7d6,_0x125231=process.env[_0x274d24.secretEnv];if(typeof _0x125231!=='string'||_0x125231['length']===0x0)throw new _0x51fd3d(_0x45d45f(0x917),_0x45d45f(0x8bb)+_0x274d24['secretEnv']+_0x45d45f(0x13d));return _0x125231;}async function _0xa43e58(){const _0x42d924=_0x3ee7d6;try{return await import(_0x42d924(0x4fc));}catch(_0x268711){throw new _0x51fd3d('sdk-missing','auth\x20provider\x20\x27clerk\x27\x20requires\x20@clerk/backend\x20in\x20package.json.\x20Run:\x20npm\x20install\x20@clerk/backend',_0x268711);}}var _0x492895=class{constructor(_0x4d4ef7){const _0x191035=_0x3ee7d6;this[_0x191035(0x94b)]=_0x4d4ef7;}[_0x3ee7d6(0x1b3)]=_0x3ee7d6(0x6b8);async[_0x3ee7d6(0x110)](_0x15e17e){const _0x2afdef=_0x3ee7d6,_0x3e4cc7=_0x84991c(this['config']),_0x261446=await _0xa43e58(),_0x4c9da8=_0x261446[_0x2afdef(0x733)]({'secretKey':_0x3e4cc7});try{const _0x202c9b=await _0x4c9da8['users']['createUser']({'emailAddress':[_0x15e17e['email']],'password':_0x15e17e[_0x2afdef(0x9e6)],'skipPasswordChecks':!![],'publicMetadata':{'ceraphTestLabel':_0x15e17e['label']}});return{'providerUserId':_0x202c9b['id'],'email':_0x15e17e[_0x2afdef(0x89c)],'password':_0x15e17e[_0x2afdef(0x9e6)]};}catch(_0x43093d){if(_0x2afdef(0x8c8)!=='sEcww'){if(_0x2eda85['success'])_0xe4d31b[_0x2afdef(0x496)](_0x2afdef(0x4f8)+_0x9539d1+'\x20is\x20not\x20installed');else{const _0x389f4d=_0x4d3143['error']?':\x20'+_0x3199ce[_0x2afdef(0x125)]:'';_0x30e92c['push'](_0x2afdef(0x1e0)+_0x389f4d);}}else{const _0x2bfc37=_0x43093d?.[_0x2afdef(0x3c9)],_0x115aa5=Array['isArray'](_0x2bfc37)&&_0x2bfc37['some'](_0x36065d=>_0x36065d?.['code']===_0x2afdef(0x5fe));if(_0x115aa5)throw new _0x51fd3d('user-exists',_0x2afdef(0x528),_0x43093d);const _0x17fc38=_0x43093d?.['message']??String(_0x43093d),_0x5a7c02=/already taken|exists|conflict|duplicate/i[_0x2afdef(0x364)](_0x17fc38)?_0x2afdef(0x4cc):'api-error';throw new _0x51fd3d(_0x5a7c02,'Clerk\x20createUser\x20failed:\x20'+_0x17fc38,_0x43093d);}}}async['cleanup'](_0x2feee4){const _0x54071e=_0x3ee7d6,_0x5c5804=_0x84991c(this[_0x54071e(0x94b)]),_0x4bf0c1=await _0xa43e58(),_0x2b7f76=_0x4bf0c1['createClerkClient']({'secretKey':_0x5c5804});try{await _0x2b7f76[_0x54071e(0x57d)][_0x54071e(0x4fd)](_0x2feee4);}catch(_0x4a7cd1){const _0x2fde36=_0x4a7cd1?.['message']??String(_0x4a7cd1),_0x3cefa4=_0x4a7cd1?.['status']??_0x4a7cd1?.[_0x54071e(0x263)];if(_0x3cefa4===0x194||/not[\s_-]?found|resource not found/i['test'](_0x2fde36))return;throw new _0x51fd3d('api-error',_0x54071e(0xea)+_0x2fde36,_0x4a7cd1);}}};async function _0x50dc1b(){const _0x5030fd=_0x3ee7d6;try{return await import(_0x5030fd(0x921));}catch(_0x347ef3){throw new _0x51fd3d(_0x5030fd(0x5d1),'auth\x20provider\x20\x27auth0\x27\x20requires\x20auth0\x20in\x20package.json.\x20Run:\x20npm\x20install\x20auth0',_0x347ef3);}}var _0x5c809e=_0x3ee7d6(0x368),_0x3d1d35=class{constructor(_0x5288ef){const _0x4d0be9=_0x3ee7d6;this[_0x4d0be9(0x94b)]=_0x5288ef;}['providerId']=_0x3ee7d6(0x921);async[_0x3ee7d6(0x110)](_0x3ba76b){const _0x3a8307=_0x3ee7d6;if(!this[_0x3a8307(0x94b)][_0x3a8307(0x2f4)])throw new _0x51fd3d('api-error',_0x3a8307(0x7c1));const _0x51e3fa=_0x84991c(this[_0x3a8307(0x94b)]),_0x1d70a7=await _0x50dc1b(),_0x59ca51=new _0x1d70a7['ManagementClient']({'domain':this[_0x3a8307(0x94b)][_0x3a8307(0x2f4)],'token':_0x51e3fa}),_0x4e70f5=this[_0x3a8307(0x94b)]['connection']??_0x5c809e;try{const _0x526bc2=await _0x59ca51[_0x3a8307(0x57d)]['create']({'connection':_0x4e70f5,'email':_0x3ba76b[_0x3a8307(0x89c)],'password':_0x3ba76b['password'],'email_verified':!![],'app_metadata':{'ceraphTestLabel':_0x3ba76b[_0x3a8307(0x10d)]}}),_0x363e01=_0x526bc2['data']?.[_0x3a8307(0x807)]??_0x526bc2['user_id'];if(!_0x363e01){if('GEoCI'===_0x3a8307(0x803))throw new _0x51fd3d('api-error','Auth0\x20createUser\x20returned\x20no\x20user_id.');else{const _0x48c941=_0xe9c7e1['parse'](_0x38c988);_0x48c941&&typeof _0x48c941==='object'?_0x42ccad(_0x48c941):_0xaf2b3(null);}}return{'providerUserId':_0x363e01,'email':_0x3ba76b['email'],'password':_0x3ba76b['password']};}catch(_0x3f5d67){if(_0x3f5d67 instanceof _0x51fd3d)throw _0x3f5d67;const _0x4e13ab=_0x3f5d67?.[_0x3a8307(0x92e)]??String(_0x3f5d67),_0x4747f4=/exists|conflict|duplicate/i[_0x3a8307(0x364)](_0x4e13ab)?'user-exists':'api-error';throw new _0x51fd3d(_0x4747f4,_0x3a8307(0x91e)+_0x4e13ab,_0x3f5d67);}}async['cleanup'](_0x4be762){const _0x3bbd01=_0x3ee7d6;if(!this['config']['domain']){if('AvDMA'!=='RlEzA')throw new _0x51fd3d('api-error',_0x3bbd01(0x3ca));else return{'applied':![],'reason':'not-darwin'};}const _0xf574d7=_0x84991c(this[_0x3bbd01(0x94b)]),_0x37309e=await _0x50dc1b(),_0x53af7b=new _0x37309e[(_0x3bbd01(0x9fa))]({'domain':this['config']['domain'],'token':_0xf574d7});try{await _0x53af7b[_0x3bbd01(0x57d)][_0x3bbd01(0x14d)]({'id':_0x4be762});}catch(_0x114914){const _0x41db56=_0x114914?.[_0x3bbd01(0x92e)]??String(_0x114914),_0x52c4c4=_0x114914?.['statusCode']??_0x114914?.[_0x3bbd01(0x9d0)];if(_0x52c4c4===0x194||/not[\s_-]?found/i[_0x3bbd01(0x364)](_0x41db56))return;throw new _0x51fd3d('api-error','Auth0\x20deleteUser\x20failed:\x20'+_0x41db56,_0x114914);}}};async function _0x35b898(){const _0x109b0e=_0x3ee7d6;try{return await import('@supabase/supabase-js');}catch(_0x23c3a8){throw new _0x51fd3d(_0x109b0e(0x5d1),'auth\x20provider\x20\x27supabase\x27\x20requires\x20@supabase/supabase-js\x20in\x20package.json.\x20Run:\x20npm\x20install\x20@supabase/supabase-js',_0x23c3a8);}}var _0x2f7961=class{constructor(_0xb64bb5){const _0x4aac00=_0x3ee7d6;this[_0x4aac00(0x94b)]=_0xb64bb5;}[_0x3ee7d6(0x1b3)]='supabase';async['provision'](_0x45901a){const _0x12024c=_0x3ee7d6;if(!this[_0x12024c(0x94b)][_0x12024c(0x29b)])throw new _0x51fd3d('api-error',_0x12024c(0x8bd));const _0x157cfc=_0x84991c(this[_0x12024c(0x94b)]),_0x5aa21f=await _0x35b898(),_0x132e3b=_0x5aa21f[_0x12024c(0x380)](this[_0x12024c(0x94b)]['projectUrl'],_0x157cfc,{'auth':{'autoRefreshToken':![],'persistSession':![]}});try{const _0x37a290=await _0x132e3b[_0x12024c(0x469)]['admin'][_0x12024c(0x5e5)]({'email':_0x45901a['email'],'password':_0x45901a[_0x12024c(0x9e6)],'email_confirm':!![],'user_metadata':{'ceraphTestLabel':_0x45901a[_0x12024c(0x10d)]}});if(_0x37a290[_0x12024c(0x125)]){const _0x3c1278=_0x37a290['error']['message'],_0x1bed86=/exists|already registered|duplicate/i['test'](_0x3c1278)?_0x12024c(0x4cc):_0x12024c(0x2d6);throw new _0x51fd3d(_0x1bed86,_0x12024c(0x450)+_0x3c1278);}const _0x4eacc8=_0x37a290[_0x12024c(0x978)]['user'];if(!_0x4eacc8)throw new _0x51fd3d(_0x12024c(0x2d6),_0x12024c(0x890));return{'providerUserId':_0x4eacc8['id'],'email':_0x45901a[_0x12024c(0x89c)],'password':_0x45901a[_0x12024c(0x9e6)]};}catch(_0x2eddae){if(_0x2eddae instanceof _0x51fd3d)throw _0x2eddae;throw new _0x51fd3d(_0x12024c(0x2d6),'Supabase\x20createUser\x20failed:\x20'+(_0x2eddae?.['message']??String(_0x2eddae)),_0x2eddae);}}async['cleanup'](_0x12dc25){const _0x4c8250=_0x3ee7d6;if(!this[_0x4c8250(0x94b)]['projectUrl'])throw new _0x51fd3d(_0x4c8250(0x2d6),_0x4c8250(0x282));const _0x27d464=_0x84991c(this[_0x4c8250(0x94b)]),_0xe09c09=await _0x35b898(),_0x1c616f=_0xe09c09[_0x4c8250(0x380)](this[_0x4c8250(0x94b)][_0x4c8250(0x29b)],_0x27d464,{'auth':{'autoRefreshToken':![],'persistSession':![]}});try{if(_0x4c8250(0x9ca)===_0x4c8250(0x672))return{..._0x35642f({'ok':![],'error':'ceraph_test_data_cleanup\x20requires\x20either\x20`id`\x20(single\x20user)\x20or\x20`all:\x20true`\x20(wipe).'}),'isError':!![]};else{const _0x1c28f4=await _0x1c616f['auth']['admin']['deleteUser'](_0x12dc25);if(_0x1c28f4[_0x4c8250(0x125)]){const _0x2f45d7=_0x1c28f4[_0x4c8250(0x125)]['message'];if(/not[\s_-]?found|404/i[_0x4c8250(0x364)](_0x2f45d7))return;throw new _0x51fd3d(_0x4c8250(0x2d6),'Supabase\x20deleteUser\x20failed:\x20'+_0x2f45d7);}}}catch(_0x2b78e3){if(_0x2b78e3 instanceof _0x51fd3d)throw _0x2b78e3;const _0x1b857e=_0x2b78e3?.[_0x4c8250(0x92e)]??String(_0x2b78e3);if(/not[\s_-]?found|404/i[_0x4c8250(0x364)](_0x1b857e))return;throw new _0x51fd3d(_0x4c8250(0x2d6),_0x4c8250(0x7b4)+_0x1b857e,_0x2b78e3);}}};async function _0xc4990b(){const _0x291382=_0x3ee7d6;try{const _0xa6c5b6=await import('firebase-admin'),_0x240775=_0xa6c5b6['default']??_0xa6c5b6;if(!_0x240775[_0x291382(0x75d)])throw new Error('firebase-admin\x20module\x20has\x20no\x20initializeApp');return _0x240775;}catch(_0x2d6960){throw new _0x51fd3d('sdk-missing',_0x291382(0x171),_0x2d6960);}}function _0x3ad3f7(_0x191201){try{const _0xa18cc0=JSON['parse'](_0x191201);if(_0xa18cc0&&typeof _0xa18cc0==='object')return _0xa18cc0;}catch{}return _0x191201;}var _0x3391d1=class{constructor(_0x52f56a){const _0x26bf0a=_0x3ee7d6;this['config']=_0x52f56a,this['appName']=_0x26bf0a(0x514)+Date[_0x26bf0a(0x3d1)]()+'-'+Math[_0x26bf0a(0x271)]()[_0x26bf0a(0x510)](0x24)['slice'](0x2);}[_0x3ee7d6(0x1b3)]='firebase';[_0x3ee7d6(0x5cf)];async[_0x3ee7d6(0x79a)](){const _0x49d82f=_0x3ee7d6,_0x380113=_0x84991c(this[_0x49d82f(0x94b)]),_0x87e89d=await _0xc4990b(),_0x5266e4=_0x87e89d[_0x49d82f(0x8a0)][_0x49d82f(0x397)](_0x3ad3f7(_0x380113));let _0x5cd455;try{_0x5cd455=_0x87e89d['initializeApp']({'credential':_0x5266e4},this[_0x49d82f(0x5cf)]);}catch(_0x58421e){const _0x2d9d2c=_0x58421e?.[_0x49d82f(0x92e)]??String(_0x58421e);if(/already exists/i[_0x49d82f(0x364)](_0x2d9d2c))_0x5cd455=_0x87e89d[_0x49d82f(0x44c)](this['appName']);else throw _0x58421e;}return{'auth':_0x87e89d[_0x49d82f(0x469)](_0x5cd455),'app':_0x5cd455};}async['provision'](_0xe72fb0){const _0x1160ad=_0x3ee7d6,{auth:_0x232c53,app:_0x31065a}=await this[_0x1160ad(0x79a)]();try{const _0xcdbe88=await _0x232c53[_0x1160ad(0x5e5)]({'email':_0xe72fb0[_0x1160ad(0x89c)],'password':_0xe72fb0[_0x1160ad(0x9e6)],'emailVerified':!![],'displayName':_0x1160ad(0x702)+_0xe72fb0['label']+')'}),_0x5594ce=await _0x232c53['createCustomToken'](_0xcdbe88['uid'],{'ceraphTestLabel':_0xe72fb0['label']})['catch'](()=>void 0x0);return{'providerUserId':_0xcdbe88['uid'],'email':_0xe72fb0['email'],'password':_0xe72fb0['password'],..._0x5594ce?{'sessionToken':_0x5594ce}:{}};}catch(_0x1617a6){const _0xa9953b=_0x1617a6?.[_0x1160ad(0x92e)]??String(_0x1617a6),_0x2c09ed=/exists|already-exists|duplicate/i['test'](_0xa9953b)?_0x1160ad(0x4cc):_0x1160ad(0x2d6);throw new _0x51fd3d(_0x2c09ed,'Firebase\x20createUser\x20failed:\x20'+_0xa9953b,_0x1617a6);}finally{_0x1160ad(0x516)!=='JTPLf'?_0x4b574f(_0xe7bb1c,_0x2a77a6,[]):await _0x31065a['delete']()[_0x1160ad(0x4ba)](()=>void 0x0);}}async[_0x3ee7d6(0x319)](_0x919122){const _0x2c76a9=_0x3ee7d6,{auth:_0x53db80,app:_0x519e6a}=await this[_0x2c76a9(0x79a)]();try{await _0x53db80[_0x2c76a9(0x4fd)](_0x919122);}catch(_0x42cdfd){if('Sovbq'!=='Sovbq')_0x4a45d6=_0x22ba69(_0x4f06e8[_0x2c76a9(0x4ff)]);else{const _0x479822=_0x42cdfd?.[_0x2c76a9(0x845)],_0xa7a50e=_0x42cdfd?.['message']??String(_0x42cdfd);if(_0x479822==='auth/user-not-found'||/user-not-found|no user record|not[\s_-]?found/i['test'](_0xa7a50e))return;throw new _0x51fd3d('api-error',_0x2c76a9(0x3a5)+_0xa7a50e,_0x42cdfd);}}finally{await _0x519e6a['delete']()[_0x2c76a9(0x4ba)](()=>void 0x0);}}};async function _0xa6ad2e(){const _0x3828dd=_0x3ee7d6;try{return await import(_0x3828dd(0x318));}catch(_0x4cee95){throw new _0x51fd3d(_0x3828dd(0x5d1),'auth\x20provider\x20\x27cognito\x27\x20requires\x20@aws-sdk/client-cognito-identity-provider\x20in\x20package.json.\x20Run:\x20npm\x20install\x20@aws-sdk/client-cognito-identity-provider',_0x4cee95);}}var _0x892ae=class{constructor(_0x5523df){const _0x14ee7e=_0x3ee7d6;this[_0x14ee7e(0x94b)]=_0x5523df;}[_0x3ee7d6(0x1b3)]='cognito';['buildClient'](_0xfa0ad4){const _0x315d1b=_0x3ee7d6,_0x4a1cce=((()=>{try{return _0x84991c(this['config']);}catch{return null;}})()),_0x817619=process.env.AWS_SECRET_ACCESS_KEY,_0x5de585=_0x4a1cce&&_0x817619?{'accessKeyId':_0x4a1cce,'secretAccessKey':_0x817619}:void 0x0;return new _0xfa0ad4[(_0x315d1b(0x1d8))]({'region':this['config']['region']??process.env.AWS_REGION,..._0x5de585?{'credentials':_0x5de585}:{}});}async[_0x3ee7d6(0x110)](_0x3c30d7){const _0x23e693=_0x3ee7d6;if(!this['config'][_0x23e693(0x2c9)])throw new _0x51fd3d('api-error',_0x23e693(0x769));const _0x46b70b=await _0xa6ad2e(),_0x269fcc=this[_0x23e693(0x546)](_0x46b70b);try{return await _0x269fcc['send'](new _0x46b70b['AdminCreateUserCommand']({'UserPoolId':this[_0x23e693(0x94b)][_0x23e693(0x2c9)],'Username':_0x3c30d7['email'],'TemporaryPassword':_0x3c30d7[_0x23e693(0x9e6)],'MessageAction':_0x23e693(0x3e4),'UserAttributes':[{'Name':_0x23e693(0x89c),'Value':_0x3c30d7[_0x23e693(0x89c)]},{'Name':_0x23e693(0x178),'Value':_0x23e693(0x704)}]})),await _0x269fcc['send'](new _0x46b70b[(_0x23e693(0x4c3))]({'UserPoolId':this['config'][_0x23e693(0x2c9)],'Username':_0x3c30d7['email'],'Password':_0x3c30d7[_0x23e693(0x9e6)],'Permanent':!![]})),{'providerUserId':_0x3c30d7[_0x23e693(0x89c)],'email':_0x3c30d7[_0x23e693(0x89c)],'password':_0x3c30d7[_0x23e693(0x9e6)]};}catch(_0x5730ea){const _0x381455=_0x5730ea?.[_0x23e693(0x92e)]??String(_0x5730ea),_0xd14736=/UsernameExistsException|already exists/i['test'](_0x381455)?'user-exists':'api-error';throw new _0x51fd3d(_0xd14736,_0x23e693(0x4b2)+_0x381455,_0x5730ea);}}async[_0x3ee7d6(0x319)](_0x15f976){const _0x258097=_0x3ee7d6;if(!this['config']['userPoolId'])throw new _0x51fd3d(_0x258097(0x2d6),_0x258097(0x6f0));const _0x2a2f06=await _0xa6ad2e(),_0x49a5d0=this['buildClient'](_0x2a2f06);try{await _0x49a5d0[_0x258097(0x2c5)](new _0x2a2f06[(_0x258097(0x48f))]({'UserPoolId':this['config'][_0x258097(0x2c9)],'Username':_0x15f976}));}catch(_0x3dbe81){const _0x27ab74=_0x3dbe81?.[_0x258097(0x4d1)],_0x3f8d3=_0x3dbe81?.[_0x258097(0x92e)]??String(_0x3dbe81);if(_0x27ab74==='UserNotFoundException'||/UserNotFoundException|user does not exist|not[\s_-]?found/i[_0x258097(0x364)](_0x3f8d3))return;throw new _0x51fd3d('api-error',_0x258097(0x8f9)+_0x3f8d3,_0x3dbe81);}}},_0x2c3461={'clerk':_0x3ee7d6(0x4fc),'auth0':'auth0','supabase':'@supabase/supabase-js','firebase':_0x3ee7d6(0x1c2),'cognito':_0x3ee7d6(0x318)},_0x16c3ed={'clerk':_0x492895,'auth0':_0x3d1d35,'supabase':_0x2f7961,'firebase':_0x3391d1,'cognito':_0x892ae};async function _0xf580df(_0x3a8f07,_0x5c1191){const _0x2f5447=_0x3ee7d6,_0x42c4b3=_0x2c3461[_0x5c1191['provider']],_0x50e3eb=await _0x111568(_0x3a8f07,_0x42c4b3);if(!_0x50e3eb)throw new _0x51fd3d(_0x2f5447(0x5d1),_0x2f5447(0x83d)+_0x5c1191['provider']+'\x27\x20requires\x20'+_0x42c4b3+_0x2f5447(0x796)+_0x42c4b3);const _0x150277=_0x16c3ed[_0x5c1191['provider']];return new _0x150277(_0x5c1191);}async function _0x111568(_0x402322,_0xe21a4a){const _0x3de4e2=_0x3ee7d6;try{const _0x2769a4=await _0xa04a0f[_0x3de4e2(0x18d)](_0x166a21(_0x402322,_0x3de4e2(0x833)),_0x3de4e2(0x29d)),_0x172f39=JSON['parse'](_0x2769a4),_0x506a95=[_0x172f39[_0x3de4e2(0x5d2)],_0x172f39['devDependencies'],_0x172f39[_0x3de4e2(0x268)],_0x172f39['optionalDependencies']];for(const _0x2da756 of _0x506a95){if(_0x2da756&&Object[_0x3de4e2(0x7c8)][_0x3de4e2(0x39c)][_0x3de4e2(0x4b7)](_0x2da756,_0xe21a4a))return!![];}return![];}catch{if('UKzOf'!=='UKzOf')_0x55e3a7[_0x3de4e2(0x60e)]();else return![];}}import{randomUUID}from'crypto';var _0x4cc2bc=0x18*0x3c*0x3c*0x3e8,_0x4907a9=class{constructor(_0x212883){const _0x2243ef=_0x3ee7d6;this['opts']=_0x212883,this[_0x2243ef(0x5dc)]=_0x212883['onDemandTtlMs']??_0x4cc2bc,this[_0x2243ef(0x9d1)]=_0x212883['jitLabel']??_0x2243ef(0x2b8),this[_0x2243ef(0x9bf)]=new Promise(_0x5cbae0=>{const _0x248288=_0x2243ef;if(_0x212883[_0x248288(0x403)]!==void 0x0){if('mjclv'!=='mjclv')return{'success':![],'error':_0x2b4bdc[_0x248288(0x125)]};else _0x5cbae0();}else this['readyResolve']=_0x5cbae0;});}['jitUser']=null;['onDemandTtlMs'];[_0x3ee7d6(0x9d1)];['readyResolve']=null;[_0x3ee7d6(0x9bf)];[_0x3ee7d6(0x4c0)](_0xe9823d){const _0x1c4f97=_0x3ee7d6;this['opts'][_0x1c4f97(0x403)]=_0xe9823d,this['readyResolve']&&(this[_0x1c4f97(0x2ee)](),this['readyResolve']=null);}[_0x3ee7d6(0x7ce)](){return this['readyPromise'];}[_0x3ee7d6(0x676)](){const _0x579796=_0x3ee7d6;return this[_0x579796(0x217)][_0x579796(0x403)]!=null;}async[_0x3ee7d6(0x2ad)](){const _0x3683f2=_0x3ee7d6;return this[_0x3683f2(0x217)][_0x3683f2(0x2ad)]();}async[_0x3ee7d6(0x72b)](){const _0x3a3d76=_0x3ee7d6;await this['whenReady']();if(this['jitUser'])return{'user':this['jitUser'],'fresh':![]};if(!this['opts'][_0x3a3d76(0x403)])throw new _0x51fd3d('not-configured','No\x20auth\x20provider\x20configured.\x20Add\x20`auth:\x20{\x20provider,\x20secretEnv\x20}`\x20to\x20ceraph.config.js\x20to\x20enable\x20JIT\x20test-user\x20provisioning.');const _0x523cb0=_0x398e78(this['jitLabel']),_0x6bf470=_0x4434cd(),_0x50db21=await this['opts'][_0x3a3d76(0x403)]['provision']({'email':_0x523cb0,'password':_0x6bf470,'label':this['jitLabel']}),_0x2d8002={'id':randomUUID(),'providerUserId':_0x50db21['providerUserId'],'email':_0x50db21[_0x3a3d76(0x89c)],'password':_0x50db21['password'],..._0x50db21[_0x3a3d76(0x5ca)]?{'sessionToken':_0x50db21[_0x3a3d76(0x5ca)]}:{},'tier':_0x3a3d76(0x2b8),'createdAt':new Date()[_0x3a3d76(0x4a0)]()};return await this[_0x3a3d76(0x217)]['store'][_0x3a3d76(0x1db)](async()=>{const _0x568d7b=_0x3a3d76,_0x554cbe=await this[_0x568d7b(0x217)][_0x568d7b(0x904)]['load']();await this[_0x568d7b(0x217)]['store']['save']([..._0x554cbe,_0x2d8002]);}),this[_0x3a3d76(0x609)]=_0x2d8002,{'user':_0x2d8002,'fresh':!![]};}[_0x3ee7d6(0x3ce)](){const _0x3398f5=_0x3ee7d6;return this[_0x3398f5(0x609)];}async[_0x3ee7d6(0x502)](_0x444872={}){const _0x121ffc=_0x3ee7d6;await this[_0x121ffc(0x7ce)]();if(!this['opts'][_0x121ffc(0x403)])throw new _0x51fd3d('not-configured','No\x20auth\x20provider\x20configured.\x20Add\x20`auth:\x20{\x20provider,\x20secretEnv\x20}`\x20to\x20ceraph.config.js\x20to\x20enable\x20on-demand\x20test-user\x20provisioning.');const _0x1d7a8c=_0x444872['tag']??'on-demand',_0x514831=_0x398e78(_0x1d7a8c),_0x470096=_0x4434cd(),_0x5696dc=await this[_0x121ffc(0x217)]['adapter']['provision']({'email':_0x514831,'password':_0x470096,'label':_0x1d7a8c}),_0xd31e0c=Date[_0x121ffc(0x3d1)](),_0x5e2de9={'id':randomUUID(),'providerUserId':_0x5696dc[_0x121ffc(0x1a7)],'email':_0x5696dc['email'],'password':_0x5696dc[_0x121ffc(0x9e6)],..._0x5696dc['sessionToken']?{'sessionToken':_0x5696dc[_0x121ffc(0x5ca)]}:{},'tier':'on-demand','createdAt':new Date(_0xd31e0c)[_0x121ffc(0x4a0)](),..._0x444872['tag']?{'tag':_0x444872['tag']}:{},'ttlExpiresAt':new Date(_0xd31e0c+this['onDemandTtlMs'])['toISOString']()};return await this[_0x121ffc(0x217)]['store'][_0x121ffc(0x1db)](async()=>{const _0x5b1ffb=_0x121ffc,_0x352674=await this['opts'][_0x5b1ffb(0x904)]['load']();await this[_0x5b1ffb(0x217)]['store']['save']([..._0x352674,_0x5e2de9]);}),{'user':_0x5e2de9,'fresh':!![]};}async['listOnDemand'](){const _0x1ea1eb=_0x3ee7d6;await this['whenReady']();const _0x27ae0f=await this['opts'][_0x1ea1eb(0x904)][_0x1ea1eb(0x777)]();return _0x27ae0f['filter'](_0x321028=>_0x321028[_0x1ea1eb(0x7a9)]==='on-demand');}async['cleanup'](_0x190fcf){const _0x3aaa23=_0x3ee7d6;return await this[_0x3aaa23(0x7ce)](),this['opts'][_0x3aaa23(0x904)][_0x3aaa23(0x1db)](async()=>{const _0x2e705e=_0x3aaa23,_0x3cbbd5=await this['opts']['store'][_0x2e705e(0x777)]();let _0x1c0808;if(_0x190fcf[_0x2e705e(0x9a6)])_0x1c0808=_0x3cbbd5[_0x2e705e(0x65c)](_0x2aad2c=>_0x2aad2c[_0x2e705e(0x7a9)]==='on-demand');else{if(_0x190fcf['id']){if('snKmL'==='VJZch'){const _0x1d6d73=_0x53ccb6(_0x7c3267[_0x2e705e(0x1b0)][_0x1e6eb8]);if(_0x1d6d73)return{..._0x4de9ba({'success':![],'error':'queries['+_0x376041+']:\x20'+_0x1d6d73}),'isError':!![]};}else _0x1c0808=_0x3cbbd5['filter'](_0x35ab51=>_0x35ab51['id']===_0x190fcf['id']&&_0x35ab51[_0x2e705e(0x7a9)]===_0x2e705e(0x46d));}else return{'deleted':0x0};}for(const _0x5d26be of _0x1c0808){await this['cleanupOne'](_0x5d26be);}const _0x4c67a8=_0x3cbbd5[_0x2e705e(0x65c)](_0x128e57=>!_0x1c0808[_0x2e705e(0x2a5)](_0x3e1ae0=>_0x3e1ae0['id']===_0x128e57['id']));return await this[_0x2e705e(0x217)]['store'][_0x2e705e(0x47d)](_0x4c67a8),{'deleted':_0x1c0808[_0x2e705e(0x945)]};});}async['sweepExpired'](){const _0x58da5c=_0x3ee7d6;return await this['whenReady'](),this[_0x58da5c(0x217)]['store']['withLock'](async()=>{const _0x4bc0ac=_0x58da5c,_0x46e33b=await this[_0x4bc0ac(0x217)][_0x4bc0ac(0x904)][_0x4bc0ac(0x777)](),_0x547391=new Date(),_0x5105e3=_0x46e33b[_0x4bc0ac(0x65c)](_0x4513e6=>_0x4513e6['tier']==='on-demand'&&_0x4513e6[_0x4bc0ac(0x4f2)]!==void 0x0&&new Date(_0x4513e6['ttlExpiresAt'])<=_0x547391);if(_0x5105e3['length']===0x0)return{'expired':0x0};for(const _0x480502 of _0x5105e3){await this[_0x4bc0ac(0x4fe)](_0x480502);}const _0x2014ad=_0x46e33b[_0x4bc0ac(0x65c)](_0x186541=>!_0x5105e3['some'](_0x2a17d5=>_0x2a17d5['id']===_0x186541['id']));return await this['opts']['store'][_0x4bc0ac(0x47d)](_0x2014ad),{'expired':_0x5105e3['length']};});}async[_0x3ee7d6(0x6de)](){const _0x1fe7c1=_0x3ee7d6;await this['whenReady']();const _0x3e2599=this[_0x1fe7c1(0x609)];if(!_0x3e2599)return;this[_0x1fe7c1(0x609)]=null;if(this[_0x1fe7c1(0x217)]['adapter'])try{await this[_0x1fe7c1(0x217)][_0x1fe7c1(0x403)]['cleanup'](_0x3e2599[_0x1fe7c1(0x1a7)]);}catch(_0x41d9f3){console['error']('[ceraph-test-data]\x20JIT\x20cleanup\x20failed\x20for\x20'+_0x3e2599[_0x1fe7c1(0x89c)]+':\x20'+(_0x41d9f3?.[_0x1fe7c1(0x92e)]??String(_0x41d9f3)));}await this[_0x1fe7c1(0x217)][_0x1fe7c1(0x904)][_0x1fe7c1(0x1db)](async()=>{const _0x32f8bf=_0x1fe7c1;if('tBpVh'===_0x32f8bf(0x75c))return this[_0x32f8bf(0x9bf)];else{const _0x55f8bd=await this['opts']['store']['load']();await this['opts'][_0x32f8bf(0x904)]['save'](_0x55f8bd[_0x32f8bf(0x65c)](_0x5bb289=>_0x5bb289['id']!==_0x3e2599['id']));}});}async['restartApp'](_0x2a3287,_0x319029){const _0x568e96=_0x3ee7d6;await _0x319029['terminateApp'](_0x2a3287)['catch'](()=>void 0x0),await new Promise(_0x3d8062=>setTimeout(_0x3d8062,0x1f4)),await _0x319029[_0x568e96(0x926)](_0x2a3287)['catch'](()=>void 0x0);}async[_0x3ee7d6(0x4fe)](_0x26bd06){const _0x523813=_0x3ee7d6;if(!this['opts']['adapter'])return;try{await this[_0x523813(0x217)]['adapter'][_0x523813(0x319)](_0x26bd06['providerUserId']);}catch(_0x5370ba){console['error'](_0x523813(0x38b)+_0x26bd06['email']+':\x20'+(_0x5370ba?.['message']??String(_0x5370ba)));}}};import{promises as _0x14a611}from'fs';import{homedir as _0x1b47b7}from'os';import{dirname as _0x45ac0c,join as _0x35a908}from'path';function _0x159c76(_0x44d9ff){return _0x44d9ff['replace'](/[^a-zA-Z0-9_-]/g,'_')['slice'](0x0,0x40);}function _0x37665a(){const _0x217a61=_0x3ee7d6;return _0x35a908(_0x1b47b7(),_0x217a61(0x5d3),_0x217a61(0x745));}function _0x3fa23a(_0xae3471,_0x454482={}){const _0x2036dc=_0x3ee7d6,_0x44ab30=_0x454482[_0x2036dc(0x983)]??_0x37665a(),_0xf40dac=_0x35a908(_0x44ab30,_0x159c76(_0xae3471)+_0x2036dc(0x1fc)),_0x2566d7=async _0x156961=>{const _0x5dc800=_0x2036dc;await _0x14a611[_0x5dc800(0x88d)](_0x45ac0c(_0xf40dac),{'recursive':!![],'mode':0x1c0});const _0x2e86a3=_0xf40dac+'.tmp.'+process[_0x5dc800(0x135)]+'.'+Math['random']()[_0x5dc800(0x510)](0x24)[_0x5dc800(0x63b)](0x2);try{await _0x14a611[_0x5dc800(0x352)](_0x2e86a3,_0x156961,'utf-8'),await _0x14a611['rename'](_0x2e86a3,_0xf40dac);}catch(_0x8654b1){try{await _0x14a611['unlink'](_0x2e86a3);}catch{}throw _0x8654b1;}};let _0x48e38b=Promise['resolve']();return{async 'load'(){let _0x48988f;try{_0x48988f=await _0x14a611['readFile'](_0xf40dac,'utf-8');}catch{return[];}let _0x24c95f;try{_0x24c95f=JSON['parse'](_0x48988f);}catch{return[];}if(!Array['isArray'](_0x24c95f))return[];const _0x21fb4f=[];for(const _0x186e95 of _0x24c95f){if(_0xe06ba4(_0x186e95))_0x21fb4f['push'](_0x186e95);}return _0x21fb4f;},async 'save'(_0x201626){const _0x5e45eb=_0x2036dc;if(_0x5e45eb(0x977)==='CJZIG'){const _0x2ce4a2=_0x5b9b44[_0x5e45eb(0x7bd)](_0x192dc7=>_0x192dc7['udid']===_0x23a331['udid']);if(!_0x2ce4a2)return{'ok':![],'reason':_0x5e45eb(0x5e3),'error':_0x5e45eb(0x981)+_0x5e19e1[_0x5e45eb(0x737)]+_0x5e45eb(0x80c)+_0x106dd0[_0x5e45eb(0x986)](_0xd2a323=>_0xd2a323[_0x5e45eb(0x4d1)]+'\x20('+_0xd2a323['udid']+')')['join'](',\x20')+'.'};_0x4ff1ee=_0x2ce4a2;}else await _0x2566d7(JSON['stringify'](_0x201626,null,0x2));},'getPath'(){return _0xf40dac;},async 'withLock'(_0xa19af6){const _0x1f2678=_0x2036dc,_0x29e8e5=_0x48e38b;let _0x111714=()=>{};_0x48e38b=new Promise(_0x1ee9b6=>{if('QhsSa'!=='VsjRX')_0x111714=_0x1ee9b6;else try{_0x29a324['kill']('SIGKILL');}catch{}});try{return await _0x29e8e5[_0x1f2678(0x4ba)](()=>void 0x0),await _0xa19af6();}finally{_0x111714();}}};}function _0xe06ba4(_0x3d96d4){const _0x4eaf56=_0x3ee7d6;if(!_0x3d96d4||typeof _0x3d96d4!=='object')return![];const _0x553581=_0x3d96d4;if(typeof _0x553581['id']!=='string'||_0x553581['id'][_0x4eaf56(0x945)]===0x0)return![];if(typeof _0x553581['providerUserId']!=='string')return![];if(typeof _0x553581['email']!=='string'||_0x553581['email']['length']===0x0)return![];if(typeof _0x553581[_0x4eaf56(0x9e6)]!=='string')return![];if(_0x553581['tier']!==_0x4eaf56(0x2b8)&&_0x553581['tier']!=='on-demand')return![];if(typeof _0x553581[_0x4eaf56(0x214)]!==_0x4eaf56(0x7fd))return![];if(_0x553581[_0x4eaf56(0x5ca)]!==void 0x0&&typeof _0x553581['sessionToken']!==_0x4eaf56(0x7fd))return![];if(_0x553581[_0x4eaf56(0x61f)]!==void 0x0&&typeof _0x553581[_0x4eaf56(0x61f)]!=='string')return![];if(_0x553581['ttlExpiresAt']!==void 0x0&&typeof _0x553581[_0x4eaf56(0x4f2)]!==_0x4eaf56(0x7fd))return![];return!![];}import{z as _0x2c6512}from'zod';function _0x1ad714(_0x3a0563){const _0x385d47=_0x3ee7d6;return{'content':[{'type':_0x385d47(0x5d9),'text':JSON[_0x385d47(0x2c1)](_0x3a0563,null,0x2)}]};}var _0x2f0e3a='Auth-bypass\x20test-user\x20provisioning\x20is\x20a\x20Pro-tier\x20feature.\x20Upgrade\x20at\x20https://ceraph.dev/billing\x20or\x20run\x20without\x20the\x20auth-bypass\x20tool\x20—\x20JIT\x20provisioning\x20still\x20works\x20automatically\x20during\x20chain\x20runs.';function _0x2ba9f1(_0xf85fe3,_0x30dddd){const _0x38db54=_0x3ee7d6;_0xf85fe3['tool'](_0x38db54(0x568),'Mint\x20a\x20managed\x20test\x20user\x20via\x20the\x20configured\x20auth\x20provider\x20(Clerk\x20/\x20Auth0\x20/\x20Supabase\x20/\x20Firebase\x20/\x20Cognito).\x20Returns\x20email\x20+\x20password\x20(+\x20sessionToken\x20when\x20the\x20provider\x20exposes\x20one)\x20for\x20use\x20in\x20test\x20scripts.\x2024-hour\x20TTL\x20—\x20expired\x20users\x20are\x20swept\x20on\x20the\x20next\x20MCP\x20startup.\x20Pro\x20tier\x20only.',{'tag':_0x2c6512[_0x38db54(0x7fd)]()[_0x38db54(0x4ac)]()[_0x38db54(0x9de)](_0x38db54(0x710))},async({tag:_0x2238ee})=>{const _0x3cbd84=_0x38db54;try{const _0x368333=await _0x30dddd[_0x3cbd84(0x2ad)]();if(!_0x368333)return{..._0x1ad714({'ok':![],'error':_0x2f0e3a}),'isError':!![]};const _0x700c2b=await _0x30dddd['provisionOnDemand']({'tag':_0x2238ee});return _0x1ad714({'ok':!![],'user':{'id':_0x700c2b[_0x3cbd84(0x3d6)]['id'],'email':_0x700c2b['user'][_0x3cbd84(0x89c)],'password':_0x700c2b[_0x3cbd84(0x3d6)]['password'],..._0x700c2b[_0x3cbd84(0x3d6)][_0x3cbd84(0x5ca)]?{'sessionToken':_0x700c2b['user'][_0x3cbd84(0x5ca)]}:{},'tier':_0x700c2b[_0x3cbd84(0x3d6)][_0x3cbd84(0x7a9)],'createdAt':_0x700c2b['user'][_0x3cbd84(0x214)],..._0x700c2b[_0x3cbd84(0x3d6)][_0x3cbd84(0x61f)]?{'tag':_0x700c2b['user']['tag']}:{},..._0x700c2b['user'][_0x3cbd84(0x4f2)]?{'ttlExpiresAt':_0x700c2b['user']['ttlExpiresAt']}:{}}});}catch(_0x2e0495){if(_0x2e0495 instanceof _0x51fd3d)return'vIAdm'!=='vIAdm'?{'success':!![],'transport':'idb'}:{..._0x1ad714({'ok':![],'code':_0x2e0495[_0x3cbd84(0x845)],'error':_0x2e0495[_0x3cbd84(0x92e)]}),'isError':!![]};return{..._0x1ad714({'ok':![],'error':_0x3cbd84(0x5f0)+(_0x2e0495 instanceof Error?_0x2e0495[_0x3cbd84(0x92e)]:String(_0x2e0495))}),'isError':!![]};}}),_0xf85fe3['tool']('ceraph_test_data_list','List\x20active\x20on-demand\x20managed\x20test\x20users\x20for\x20this\x20project.\x20Excludes\x20JIT\x20users\x20(those\x20live\x20for\x20one\x20chain\x20run\x20only).\x20Pro\x20tier\x20only.',{},async()=>{const _0x558535=_0x38db54;try{const _0xddaf55=await _0x30dddd[_0x558535(0x2ad)]();if(!_0xddaf55)return{..._0x1ad714({'ok':![],'error':_0x2f0e3a}),'isError':!![]};const _0x1e39e1=await _0x30dddd[_0x558535(0x70a)]();return _0x1ad714({'ok':!![],'users':_0x1e39e1[_0x558535(0x986)](_0x23d451=>({'id':_0x23d451['id'],'email':_0x23d451[_0x558535(0x89c)],'tier':_0x23d451[_0x558535(0x7a9)],'createdAt':_0x23d451['createdAt'],..._0x23d451[_0x558535(0x61f)]?{'tag':_0x23d451['tag']}:{},..._0x23d451['ttlExpiresAt']?{'ttlExpiresAt':_0x23d451[_0x558535(0x4f2)]}:{}}))});}catch(_0x46a4e2){return{..._0x1ad714({'ok':![],'error':'ceraph_test_data_list\x20failed:\x20'+(_0x46a4e2 instanceof Error?_0x46a4e2[_0x558535(0x92e)]:String(_0x46a4e2))}),'isError':!![]};}}),_0xf85fe3['tool'](_0x38db54(0x53b),_0x38db54(0x28f),{'id':_0x2c6512['string']()['optional']()[_0x38db54(0x9de)](_0x38db54(0xe0)),'all':_0x2c6512[_0x38db54(0x715)]()[_0x38db54(0x4ac)]()[_0x38db54(0x9de)]('When\x20true,\x20deletes\x20every\x20on-demand\x20user\x20for\x20this\x20project.')},async({id:_0x445c6d,all:_0x444e53})=>{const _0x2e6f4e=_0x38db54;try{const _0x1c1f43=await _0x30dddd[_0x2e6f4e(0x2ad)]();if(!_0x1c1f43)return{..._0x1ad714({'ok':![],'error':_0x2f0e3a}),'isError':!![]};if(!_0x445c6d&&!_0x444e53)return'JucqX'==='Xcprf'?{'success':![],'swipes':_0x43de06,'error':_0x5a58f7['error']??_0x2e6f4e(0x68e)}:{..._0x1ad714({'ok':![],'error':'ceraph_test_data_cleanup\x20requires\x20either\x20`id`\x20(single\x20user)\x20or\x20`all:\x20true`\x20(wipe).'}),'isError':!![]};const _0x3991b8=await _0x30dddd[_0x2e6f4e(0x319)]({'id':_0x445c6d,'all':_0x444e53});return _0x1ad714({'ok':!![],'deleted':_0x3991b8['deleted']});}catch(_0x1d2cb0){return{..._0x1ad714({'ok':![],'error':_0x2e6f4e(0x442)+(_0x1d2cb0 instanceof Error?_0x1d2cb0['message']:String(_0x1d2cb0))}),'isError':!![]};}});}var _0x54ddf0=process[_0x3ee7d6(0x346)](),_0x553e71=_0x58646c(_0x54ddf0),_0x59dcf1=_0x553e71['dir'],_0x1e1264=_0x54ddf0;_0x553e71['dir']!==_0x54ddf0&&process[_0x3ee7d6(0x870)]['write'](_0x3ee7d6(0x81b)+_0x553e71['reason']+'\x0a');var _0x3ebe5=_0x328b9d(_0x59dcf1,'.ceraph'),_0x30c079=new _0x38e6bb(_0x59dcf1),_0x2db18f=new _0x5e82ea(),_0x4650a9=new _0xfe777({'targetResolver':_0x2db18f}),_0x6632bd=new _0x2c4950(_0x59dcf1,_0x3ebe5),_0x174ea1=new _0x435cdf(_0x4650a9,_0x2db18f);_0x2db18f[_0x3ee7d6(0x5c0)](_0x174ea1);var _0x43a84f=new _0xb68fb9(_0x4650a9),_0x29f0ce=new _0x1c248a(_0x2db18f,_0x3ebe5,_0x59dcf1),_0x8e538a=new _0xf8466e(),_0x5409fe=new _0x53040b(),_0x550711=new _0x43d6af({'screen':_0x4650a9,'mode':_0x58a148(process.env.CERAPH_AUTO_ACCEPT_PERMISSIONS)}),_0x4d633e=process.env.CERAPH_DISABLE_SPEED_OPTS==='1'||process.env.CERAPH_DISABLE_SPEED_OPTS===_0x3ee7d6(0x704),_0xa7772=new _0x3a1f24(_0x4650a9,_0x174ea1,_0x43a84f,{'projectDir':_0x59dcf1,'permissionInterceptor':_0x550711,'disableAXCache':_0x4d633e,'disableBulkActions':_0x4d633e}),_0x536663=_0x5d7aea(_0x59dcf1),_0x31eb28=process.env.CERAPH_SIGNAL_PORT?Number(process.env.CERAPH_SIGNAL_PORT):void 0x0,_0x32bb67=new _0x195a45(_0x30c079,{'port':Number[_0x3ee7d6(0x996)](_0x31eb28)?_0x31eb28:void 0x0,'host':'0.0.0.0'}),_0x400515=null,_0xe23307=_0x3ee7d6(0x236),_0x499697=0x2710,_0x81af9b,_0x7529b5=![],_0x355fbb=process.env.CERAPH_KEEP_AWAKE_HEARTBEAT===_0x3ee7d6(0x74c)?null:new _0x5d2ab2(_0x4650a9,{'onRedbox':_0x5ae273=>_0x32bb67[_0x3ee7d6(0x17f)]({'kind':_0x3ee7d6(0x67f),'message':_0x5ae273,'stack':'','timestamp':new Date()['toISOString']()})}),_0x2fb690=new _0x9e06d9({'projectDir':_0x59dcf1}),_0x246355=_0x159c76(_0x59dcf1),_0x256a27=_0x3fa23a(_0x246355),_0x50b852=new _0x4907a9({'projectDir':_0x59dcf1,'projectId':_0x246355,'store':_0x256a27,'adapter':void 0x0,'isProTier':()=>_0x5d2ffa()}),_0x1c8370=new _0x451a74(_0xa7772,_0x4650a9,_0x174ea1,_0x32bb67,{'runsStore':_0x2fb690,'testDataManager':_0x50b852,'videoRecorderFactory':({runId:_0x10d525})=>new _0x3547fc({'resolver':_0x2db18f,'outputPath':_0x328b9d(_0x2fb690[_0x3ee7d6(0x7f2)],_0x10d525,'chain.mp4')})});_0x2db18f[_0x3ee7d6(0x227)](async _0x501fd6=>{const _0x26aa1d=_0x3ee7d6;if(!_0x501fd6[_0x26aa1d(0x737)])return;await _0x107894(_0x501fd6[_0x26aa1d(0x737)])['catch'](()=>null);const _0x63311f=await _0xbd101(_0x501fd6['udid'])[_0x26aa1d(0x4ba)](()=>null);_0x63311f&&_0x63311f[_0x26aa1d(0x9d0)]==='denied'&&process[_0x26aa1d(0x870)][_0x26aa1d(0x65a)](_0x26aa1d(0x81b)+_0x63311f['message']+'\x0a');});function _0x3535ad(){return _0x3df3ac({'screen':_0x4650a9,'apps':_0x174ea1,'autonomy':_0x43a84f,'iproxyManager':_0x8e538a,'projectDir':_0x59dcf1,'target':_0x2db18f});}var _0x14f67c=new McpServer({'name':_0x3ee7d6(0x954),'version':_0x2a3197},{'capabilities':{'tools':{},'logging':{}},'instructions':_0x3ee7d6(0x7ec)});_0x32bb67[_0x3ee7d6(0x2f0)](_0x1022b4=>{const _0x3b9383=_0x3ee7d6,_0x4a277e=_0x1022b4['kind']==='network-error'?'warning':_0x3b9383(0x125);void _0x14f67c[_0x3b9383(0x239)]['sendLoggingMessage']({'level':_0x4a277e,'logger':'ceraph-rn-shim','data':{'kind':_0x1022b4['kind'],'message':_0x1022b4['message'],..._0x1022b4['stack']?{'stack':_0x1022b4[_0x3b9383(0x209)]}:{},..._0x1022b4[_0x3b9383(0x72e)]?{'url':_0x1022b4[_0x3b9383(0x72e)]}:{},..._0x1022b4['status']!==void 0x0?{'status':_0x1022b4[_0x3b9383(0x9d0)]}:{},'timestamp':_0x1022b4['timestamp']}})['catch'](()=>void 0x0);});function _0x2859f2(_0x2b918a,_0x439b83){const _0x490878=_0x3ee7d6;_0x439b83 instanceof _0x45acbf&&(_0x439b83[_0x490878(0x3ea)]==='account-invalid'||_0x439b83['kind']==='tier-gated')&&_0x242b1a();const _0x31f5af=_0x439b83 instanceof _0x45acbf?_0x439b83[_0x490878(0x70e)]:_0x2b918a+_0x490878(0x9f8)+(_0x439b83 instanceof Error?_0x439b83[_0x490878(0x92e)]:String(_0x439b83));return{'content':[{'type':'text','text':_0x31f5af}],'isError':!![]};}async function _0x3aa6f4(_0x18ba0c){const _0x182672=_0x3ee7d6,_0x592f8c=new AbortController(),_0x3d97bd=setTimeout(()=>_0x592f8c[_0x182672(0x2d4)](),0x5dc);try{const _0x7d3b65=await fetch(_0x182672(0x26b)+_0x18ba0c+_0x182672(0x6f9),{'signal':_0x592f8c['signal']});return _0x7d3b65['ok'];}catch{return![];}finally{clearTimeout(_0x3d97bd);}}_0x14f67c['tool'](_0x3ee7d6(0x893),_0x3ee7d6(0x328),{'clean':_0x161c47[_0x3ee7d6(0x715)]()['optional']()[_0x3ee7d6(0x9de)]('Run\x20prebuild\x20--clean\x20before\x20building\x20(Expo\x20only)'),'device':_0x161c47[_0x3ee7d6(0x7fd)]()['optional']()[_0x3ee7d6(0x9de)]('Device\x20UDID\x20to\x20target\x20(e.g.,\x2000008140-001958943A78801C)')},async({clean:_0x2c8bf4,device:_0x1955e4})=>{const _0x14f652=_0x3ee7d6;try{const _0x5b3493=await _0x30c079['runBuild']({'clean':_0x2c8bf4,'device':_0x1955e4});return _0x5b3493['success']&&await _0x6632bd['saveSnapshot']()[_0x14f652(0x4ba)](()=>{}),{'content':[{'type':'text','text':JSON[_0x14f652(0x2c1)](_0x5b3493,null,0x2)}],'isError':!_0x5b3493['success']};}catch(_0x142e88){return _0x2859f2(_0x14f652(0x893),_0x142e88);}}),_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x32a),_0x3ee7d6(0x1f2),{'port':_0x161c47['number']()[_0x3ee7d6(0x4ac)]()['describe']('Port\x20for\x20Metro\x20bundler\x20(default:\x208081)'),'clear':_0x161c47['boolean']()['optional']()[_0x3ee7d6(0x9de)]('Clear\x20Metro\x20bundler\x20cache\x20on\x20start')},async({port:_0x201f36,clear:_0x3fbf8b})=>{const _0x35681d=_0x3ee7d6;try{const _0x51a5ce=await _0x30c079[_0x35681d(0x111)]({'port':_0x201f36,'clear':_0x3fbf8b});return{'content':[{'type':'text','text':JSON[_0x35681d(0x2c1)](_0x51a5ce,null,0x2)}],'isError':!_0x51a5ce['success']};}catch(_0x30e106){return _0x2859f2('rn_start',_0x30e106);}}),_0x14f67c['tool'](_0x3ee7d6(0x82a),'Bring\x20Ceraph\x20to\x20a\x20ready-to-test\x20state\x20in\x20one\x20call:\x20starts\x20Metro,\x20builds/installs\x20the\x20app\x20if\x20needed,\x20and\x20verifies\x20on-device\x20automation.\x20Runs\x20only\x20the\x20steps\x20that\x20aren\x27t\x20already\x20done\x20and\x20stops\x20at\x20the\x20first\x20failure\x20with\x20its\x20remediation.\x20Prefer\x20this\x20over\x20calling\x20rn_start\x20/\x20rn_build_ios\x20/\x20ceraph_doctor\x20separately.\x20Works\x20against\x20either\x20a\x20plugged-in\x20iPhone\x20or\x20a\x20booted\x20simulator\x20(honoring\x20CERAPH_TARGET).',{'device':_0x161c47[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)]('Device\x20UDID\x20to\x20target\x20(e.g.,\x2000008140-001958943A78801C)'),'port':_0x161c47['number']()[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)]('Port\x20for\x20Metro\x20bundler\x20(default:\x208081)'),'bundleId':_0x161c47[_0x3ee7d6(0x7fd)]()['optional']()[_0x3ee7d6(0x9de)](_0x3ee7d6(0xed)),'clean':_0x161c47['boolean']()[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)]('Run\x20prebuild\x20--clean\x20before\x20building\x20(Expo\x20only)'),'requiredEnv':_0x161c47[_0x3ee7d6(0x27a)](_0x161c47['string']())[_0x3ee7d6(0x4ac)]()['describe'](_0x3ee7d6(0x11b)),'expectedNetwork':_0x161c47['string']()['optional']()[_0x3ee7d6(0x9de)]('Optional\x20WiFi\x20SSID\x20the\x20user\x20expects\x20the\x20laptop\x20(and\x20phone)\x20to\x20be\x20on.\x20Mismatch\x20is\x20a\x20warning,\x20not\x20a\x20stop.')},async({device:_0x585a3b,port:_0xd93e2b,bundleId:_0x1c63de,clean:_0x2e6228,requiredEnv:_0x331b39,expectedNetwork:_0x475937})=>{const _0x20e068=_0x3ee7d6;try{const _0x479dfc=_0x1c63de??await _0x2258f0(_0x59dcf1)[_0x20e068(0x4ba)](()=>null),_0x39a2d9=await _0x1f4edb({'checkTargetReady':async()=>{const _0x22752a=_0x20e068,_0x4b46c6=await _0x2db18f[_0x22752a(0x75f)]();if(_0x4b46c6['target']==='simulator'){const _0x105262=await _0x5d4596()[_0x22752a(0x4ba)](()=>[]);if(_0x105262[_0x22752a(0x945)]===0x0)return{'ok':![],'detail':_0x22752a(0x79c),'remediation':'Boot\x20a\x20simulator\x20(open\x20-a\x20Simulator),\x20or\x20connect\x20an\x20iPhone\x20via\x20USB-C,\x20then\x20retry.'};const _0x3249d4=await _0xf66b1c(_0x59dcf1,{'log':_0x4ee89a=>{const _0x1e345c=_0x22752a;void _0x14f67c[_0x1e345c(0x239)][_0x1e345c(0x8ec)]({'level':_0x1e345c(0x9bd),'logger':_0x1e345c(0x8da),'data':_0x4ee89a})[_0x1e345c(0x4ba)](()=>void 0x0);}});if(_0x3249d4['status']==='install-failed'){const _0x5df66c=await _0x45f4cc(_0x59dcf1)[_0x22752a(0x4ba)](()=>_0x22752a(0x38f));return{'ok':![],'detail':_0x22752a(0x97b)+_0x3249d4[_0x22752a(0x125)],'remediation':_0x22752a(0x1f0)+_0x5df66c+'\x20'+(_0x5df66c===_0x22752a(0x38f)?_0x22752a(0x18f):_0x22752a(0x5c1))+'\x20-D\x20appium-webdriveragent`,\x20then\x20retry.'};}return{'ok':!![],'detail':_0x3249d4[_0x22752a(0x9d0)]==='installed'?_0x22752a(0x55d)+_0x105262[0x0]['name']+_0x22752a(0x41a):'Simulator\x20booted\x20('+_0x105262[0x0][_0x22752a(0x4d1)]+_0x22752a(0x941)};}const _0xf4a2cb=await _0x174ea1['getUdid']()[_0x22752a(0x4ba)](()=>null);return _0xf4a2cb?{'ok':!![],'detail':_0x22752a(0x500)+_0xf4a2cb+_0x22752a(0x72a)}:{'ok':![],'detail':_0x22752a(0x2a1),'remediation':_0x22752a(0x1c0)};},'missingRequiredEnv':()=>(_0x331b39??[])['filter'](_0xdde284=>{const _0x5e8cff=process.env[_0xdde284];return _0x5e8cff===void 0x0||_0x5e8cff==='';}),'isMetroRunning':_0x3aa6f4,'startMetro':({port:_0x370a8d})=>_0x30c079['startMetro']({'port':_0x370a8d}),'needsBuild':async()=>{const _0x3d63c2=_0x20e068;if(_0x3d63c2(0x70d)==='XSdtV')return _0x3f27e8(_0x3d63c2(0x233),_0x511ffe);else{const _0x3a5513=[];if(_0x479dfc){const _0x59cbcf=await _0x174ea1[_0x3d63c2(0x960)]()[_0x3d63c2(0x4ba)](_0x20a394=>({'success':![],'apps':[],'error':_0x20a394 instanceof Error?_0x20a394[_0x3d63c2(0x92e)]:String(_0x20a394)})),_0x17059e=_0x59cbcf[_0x3d63c2(0x42d)]&&_0x59cbcf[_0x3d63c2(0x7dd)][_0x3d63c2(0x2a5)](_0x29aa86=>_0x29aa86['bundleId']===_0x479dfc);if(!_0x17059e){if(_0x59cbcf[_0x3d63c2(0x42d)])_0x3a5513[_0x3d63c2(0x496)](_0x3d63c2(0x4f8)+_0x479dfc+_0x3d63c2(0x336));else{if(_0x3d63c2(0x3f9)==='GrjWY'){const _0x2dade9=_0x59cbcf['error']?':\x20'+_0x59cbcf[_0x3d63c2(0x125)]:'';_0x3a5513['push']('could\x20not\x20confirm\x20the\x20app\x20is\x20installed'+_0x2dade9);}else return{'status':'needs-auth','tier':'pro','authUrl':_0x4c769c({'intent':_0x3d63c2(0x1b6)}),'message':'Pro\x20requires\x20sign-in.\x20Surface\x20the\x20authUrl\x20to\x20the\x20user,\x20have\x20them\x20paste\x20the\x20token\x20it\x20issues,\x20then\x20call\x20ceraph_init_auth_browser\x20with\x20that\x20token.\x20After\x20sign-in,\x20re-call\x20ceraph_init_select_tier\x20to\x20continue.'};}}}const _0x448fcf=await _0x6632bd[_0x3d63c2(0x4b6)]()['catch'](()=>({'needsClean':![],'reasons':[]}));return _0x448fcf['needsClean']&&_0x3a5513['push'](..._0x448fcf[_0x3d63c2(0x360)]),{'needsBuild':_0x3a5513[_0x3d63c2(0x945)]>0x0,'reasons':_0x3a5513};}},'runBuild':({clean:_0xd9d56a,device:_0x574967})=>_0x30c079['runBuild']({'clean':_0xd9d56a,'device':_0x574967}),'saveBuildSnapshot':()=>_0x6632bd[_0x20e068(0x505)](),'foregroundApp':_0x479dfc?async()=>{const _0x27f5b0=_0x20e068,_0x49a1e8=await _0x174ea1['listInstalledApps']()['catch'](()=>null);if(_0x49a1e8?.['success']&&!_0x49a1e8['apps'][_0x27f5b0(0x2a5)](_0x410159=>_0x410159[_0x27f5b0(0x708)]===_0x479dfc))return{'ok':![],'detail':_0x479dfc+_0x27f5b0(0x768)+(_0x1c63de?'':'\x20(auto-detected\x20from\x20the\x20project\x20config;\x20pass\x20bundleId\x20if\x20your\x20build\x20uses\x20a\x20different\x20id.)')};const _0x2ca3f7=await _0x174ea1['launchApp'](_0x479dfc);return _0x2ca3f7['success']?{'ok':!![],'detail':_0x27f5b0(0x5af)+_0x479dfc+'\x20—\x20keep-awake\x20shim\x20active.'}:{'ok':![],'detail':'Could\x20not\x20foreground\x20'+_0x479dfc+':\x20'+(_0x2ca3f7[_0x27f5b0(0x125)]??_0x27f5b0(0x3de))+'.'};}:void 0x0,'ensureWda':async()=>{const _0x5a4d64=_0x20e068,_0x23e229=await _0x2db18f['resolve']();if(_0x23e229[_0x5a4d64(0x555)]===_0x5a4d64(0x21f)){const _0x105e80=await _0x29f0ce[_0x5a4d64(0x41b)]({});if(_0x105e80['ok'])return{'ok':!![],'reason':_0x105e80[_0x5a4d64(0x266)]?_0x5a4d64(0x266):'started','detail':_0x5a4d64(0x87c)+(_0x105e80[_0x5a4d64(0x266)]?_0x5a4d64(0x266):'started')+_0x5a4d64(0x80e)+_0x105e80['port']+'.'};let _0x24fbf8;if(_0x105e80['reason']===_0x5a4d64(0x6c1))_0x24fbf8=_0x5a4d64(0x62e);else{if(_0x105e80[_0x5a4d64(0x78c)]===_0x5a4d64(0x5e3))_0x5a4d64(0x527)==='oEbAD'?_0xb62c9f(null):_0x24fbf8='The\x20selected\x20simulator\x20wasn\x27t\x20found\x20—\x20boot\x20one\x20and\x20retry.';else{if(_0x105e80['reason']==='wda-package-missing')_0x24fbf8=_0x5a4d64(0x109);else _0x105e80[_0x5a4d64(0x78c)]==='port-not-detected'?_0x24fbf8=_0x5a4d64(0x728):'zsJiU'===_0x5a4d64(0x20b)?_0x24fbf8=_0x5a4d64(0x953):_0x1019f5=!![];}}return{'ok':![],'error':_0x105e80['error'],'detail':'Could\x20not\x20start\x20simulator\x20WebDriverAgent:\x20'+_0x105e80['error'],'remediation':_0x24fbf8};}const _0x104163=await _0x91f18b(),_0x3c2119=await _0x5409fe[_0x5a4d64(0x41b)]({'resolverUdid':_0x23e229['udid']});if(_0x3c2119['ok'])return{'ok':!![],'reason':_0x3c2119[_0x5a4d64(0x78c)],'detail':_0x5a4d64(0x5fb)+_0x3c2119['reason']+'\x20('+_0x104163+').'};return{'ok':![],'error':_0x3c2119['error'],'detail':_0x5a4d64(0x738)+_0x3c2119[_0x5a4d64(0x125)],'remediation':_0x3c2119[_0x5a4d64(0x5de)]??'Connect\x20the\x20iPhone\x20via\x20USB-C,\x20trust\x20this\x20Mac,\x20enable\x20Developer\x20Mode,\x20then\x20call\x20ceraph_start\x20again.'};},'runDoctor':()=>_0x3df3ac({'screen':_0x4650a9,'apps':_0x174ea1,'autonomy':_0x43a84f,'iproxyManager':_0x8e538a,'bundleId':_0x479dfc??void 0x0,'requiredEnv':_0x331b39,'expectedNetwork':_0x475937,'projectDir':_0x59dcf1,'target':_0x2db18f}),'cacheDoctor':_0x55f53b=>_0x2e83b7(_0x55f53b),'resolveTarget':()=>_0x2db18f[_0x20e068(0xfb)]()},{'device':_0x585a3b,'port':_0xd93e2b,'clean':_0x2e6228});return{..._0x1a18b6(_0x39a2d9),'isError':!_0x39a2d9[_0x20e068(0x798)]};}catch(_0x1f0633){return _0x2859f2('ceraph_start',_0x1f0633);}}),_0x14f67c['tool'](_0x3ee7d6(0x4b5),_0x3ee7d6(0x64a),{},async()=>{const _0x4c7283=_0x3ee7d6;try{const _0x3bd4c5=_0x30c079[_0x4c7283(0x3d2)]();return{'content':[{'type':_0x4c7283(0x5d9),'text':JSON['stringify'](_0x3bd4c5,null,0x2)}]};}catch(_0x39503b){return _0x2859f2('rn_get_errors',_0x39503b);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('rn_get_console','Return\x20recent\x20console\x20output\x20from\x20Metro\x20dev\x20server,\x20optionally\x20filtered\x20by\x20log\x20level.',{'lines':_0x161c47[_0x3ee7d6(0x513)]()[_0x3ee7d6(0x4ac)]()['describe']('Number\x20of\x20recent\x20lines\x20to\x20return\x20(default:\x2050)'),'level':_0x161c47['enum']([_0x3ee7d6(0x9a6),_0x3ee7d6(0x125),'warn',_0x3ee7d6(0x183)])[_0x3ee7d6(0x4ac)]()['describe']('Filter\x20by\x20log\x20level\x20(default:\x20all)')},async({lines:_0x42f547,level:_0x17095e})=>{const _0x3997ba=_0x3ee7d6;try{const _0x380321=_0x30c079[_0x3997ba(0x721)]({'lines':_0x42f547,'level':_0x17095e});if(_0x380321['length']===0x0)return{'content':[{'type':'text','text':'No\x20console\x20output\x20captured.\x20Is\x20Metro\x20running?\x20Use\x20rn_start\x20to\x20launch\x20it.'}]};return{'content':[{'type':'text','text':_0x380321['join']('\x0a')}]};}catch(_0x3b06d2){if(_0x3997ba(0x988)!==_0x3997ba(0x988)){_0x540080=!![];const _0x2194ad=_0x2fc64b['missingRequiredEnv']();if(_0x2194ad[_0x3997ba(0x945)]>0x0)return _0x1a3a73({'name':_0x3997ba(0x1fd),'status':_0x3997ba(0x320),'detail':_0x3997ba(0x97e)+(_0x2194ad['length']===0x1?'':'s')+'\x20not\x20set:\x20'+_0x2194ad['join'](',\x20')+'.','details':{'missing':_0x2194ad}}),_0x56e15c(_0x52b413,_0x241591,_0x3997ba(0xcd)+_0x2194ad['join'](',\x20')+'\x20in\x20the\x20MCP\x20server\x20environment,\x20then\x20call\x20ceraph_start\x20again.');}else return _0x2859f2(_0x3997ba(0x4d0),_0x3b06d2);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('rn_check_prebuild','Check\x20if\x20a\x20clean\x20Expo\x20prebuild\x20is\x20needed\x20(Expo\x20projects\x20only).\x20Compares\x20current\x20package.json\x20dependencies,\x20app.json\x20config,\x20and\x20ios/Podfile.lock\x20against\x20a\x20cached\x20snapshot\x20from\x20the\x20last\x20successful\x20build.',{},async()=>{const _0x4052b1=_0x3ee7d6;try{const _0x2253ea=await _0x30c079[_0x4052b1(0x26a)]();if(!_0x2253ea){if(_0x4052b1(0x3a7)!==_0x4052b1(0x3a7)){if(!(_0xdfa2fb in _0x57f7d6))_0x18eb39[_0x4052b1(0x496)](_0x59cd41);else{if(!(_0x5a2afe in _0x2ddd07))_0x55e161['push'](_0x4aaaea);else _0x563c01[_0x4c7f49]!==_0x49f349[_0x3ab701]&&_0x1bab7a[_0x4052b1(0x496)](_0x18867c);}}else return{'content':[{'type':'text','text':JSON['stringify']({'needsClean':![],'reasons':['Not\x20an\x20Expo\x20project.\x20Prebuild\x20detection\x20is\x20Expo-only.']})}]};}const _0xc9e2a7=await _0x6632bd[_0x4052b1(0x4b6)]();return{'content':[{'type':'text','text':JSON[_0x4052b1(0x2c1)](_0xc9e2a7,null,0x2)}]};}catch(_0x55f876){return _0x2859f2('rn_check_prebuild',_0x55f876);}}),_0x14f67c['tool']('screen_tap',_0x3ee7d6(0x39f),{'x':_0x161c47[_0x3ee7d6(0x513)]()['describe'](_0x3ee7d6(0x14c)),'y':_0x161c47[_0x3ee7d6(0x513)]()['describe'](_0x3ee7d6(0x93d)),'coordinateSource':_0x161c47['enum']([_0x3ee7d6(0x863),_0x3ee7d6(0x931)])['optional']()[_0x3ee7d6(0x9de)]('Source\x20of\x20coordinates:\x20\x27screenshot\x27\x20(default)\x20auto-corrects\x20for\x20pixel\x20ratio;\x20\x27device\x27\x20uses\x20coordinates\x20as-is')},async({x:_0x19f108,y:_0x233b35,coordinateSource:_0x18d086})=>{const _0xc0d71b=_0x3ee7d6;try{const _0x29af5b=await _0x4650a9[_0xc0d71b(0x9b2)]();if(!_0x29af5b)return _0xc0d71b(0x933)===_0xc0d71b(0x933)?{'content':[{'type':'text','text':JSON['stringify']({'success':![],'error':_0xc0d71b(0x9a3),'tappedAt':{'x':_0x19f108,'y':_0x233b35},'pixelRatio':0x0,'correction':_0xc0d71b(0x8cf)})}],'isError':!![]}:_0x26b5ba(_0x3c3c75);const _0x103269=(_0x18d086??_0xc0d71b(0x863))==='screenshot',_0x3341bf=await _0x4650a9['tap'](_0x19f108,_0x233b35,_0x103269);return{'content':[{'type':'text','text':JSON['stringify'](_0x3341bf,null,0x2)}],'isError':!_0x3341bf[_0xc0d71b(0x42d)]};}catch(_0x27e60e){return _0x2859f2('screen_tap',_0x27e60e);}});async function _0x3fa9b2(){const _0x122ed7=_0x3ee7d6,_0x19ed45=await _0x4650a9['isAvailable']();if(_0x19ed45)return{'ok':!![]};return{'ok':![],'payload':{'success':![],'error':_0x122ed7(0x9a3)}};}function _0x1a18b6(_0x512822){const _0x1a87b3=_0x3ee7d6;return{'content':[{'type':_0x1a87b3(0x5d9),'text':JSON[_0x1a87b3(0x2c1)](_0x512822,null,0x2)}]};}var _0x197098=0xa;function _0x4a850b(_0x287cc3){const _0x297cb0=_0x3ee7d6;if(Array['isArray'](_0x287cc3))return _0x287cc3['map'](_0x2594ec=>_0x4a850b(_0x2594ec));if(_0x287cc3&&typeof _0x287cc3==='object'){const _0x207eb8={};for(const [_0x1483db,_0x242497]of Object[_0x297cb0(0x6b0)](_0x287cc3)){if(_0x1483db===_0x297cb0(0x93e))continue;_0x207eb8[_0x1483db]=_0x4a850b(_0x242497);}return _0x207eb8;}return _0x287cc3;}function _0xd9289f(_0x3fd334,_0x3d163f,_0x314dd1){const _0x101859=_0x3ee7d6,_0x44b49a=[{'type':_0x101859(0x5d9),'text':JSON['stringify'](_0x4a850b(_0x3fd334),null,0x2)}];_0x314dd1&&_0x44b49a['push']({'type':'text','text':_0x314dd1});const _0x4b9335=[];for(const _0x5bcd42 of _0x3d163f){if(!('steps'in _0x5bcd42)||!Array[_0x101859(0x246)](_0x5bcd42['steps']))continue;for(const _0x5ea423 of _0x5bcd42[_0x101859(0x22d)]){_0x5ea423['screenshotBase64']&&_0x4b9335['push']({'flow':_0x5bcd42['flow'],'stepIndex':_0x5ea423[_0x101859(0x148)],'base64':_0x5ea423['screenshotBase64']});}}const _0x5c7156=Math[_0x101859(0x71d)](_0x4b9335[_0x101859(0x945)],_0x197098);for(let _0x2ed56c=0x0;_0x2ed56c<_0x5c7156;_0x2ed56c++){const _0x432d51=_0x4b9335[_0x2ed56c];_0x44b49a['push']({'type':_0x101859(0x5d9),'text':_0x101859(0x911)+_0x432d51['flow']+'\x22\x20step='+_0x432d51[_0x101859(0x148)]}),_0x44b49a[_0x101859(0x496)]({'type':_0x101859(0x588),'data':_0x432d51['base64'],'mimeType':'image/png'});}if(_0x4b9335['length']>_0x197098){const _0x3b0c52=_0x4b9335[_0x101859(0x945)]-_0x197098;_0x44b49a[_0x101859(0x496)]({'type':'text','text':'+'+_0x3b0c52+_0x101859(0x7a1)+(_0x3b0c52===0x1?'':'s')+_0x101859(0x59a)+_0x197098+_0x101859(0x1c7)});}return{'content':_0x44b49a};}function _0x31a38a(_0x58cafc){const _0x4ad9d1=_0x3ee7d6,{entry:_0x502b13,advisedStatus:_0x4b5807}=_0x4614e8(_0x32bb67[_0x4ad9d1(0x7dc)](),_0x400515,_0xe23307);_0x400515=_0x4b5807;if(_0x502b13)_0x58cafc['push'](_0x502b13);}async function _0x246281(){const _0x417bb8=_0x3ee7d6;if(_0x32bb67[_0x417bb8(0x5b3)]()||_0x7529b5)return;_0x7529b5=!![];try{const _0x257d09=await _0x32bb67['ensureListening']();_0xe23307=_0x9a373a(_0x257d09)[_0x417bb8(0x9d0)];if(_0x32bb67['isListening']()){if('BGtNf'==='BGtNf')console[_0x417bb8(0x125)](_0x417bb8(0x559)),_0x81af9b&&(clearInterval(_0x81af9b),_0x81af9b=void 0x0);else return![];}}finally{_0x7529b5=![];}}function _0x230cf7(){const _0x1efd0c=_0x3ee7d6;if(_0x81af9b||_0x32bb67['isListening']())return;_0x81af9b=setInterval(()=>{void _0x246281();},_0x499697),_0x81af9b[_0x1efd0c(0x60e)]?.();}_0x14f67c[_0x3ee7d6(0x8dc)]('screen_swipe',_0x3ee7d6(0x6d7),{'direction':_0x161c47[_0x3ee7d6(0x499)](['up','down','left','right']),'from':_0x161c47[_0x3ee7d6(0x5ab)]({'x':_0x161c47[_0x3ee7d6(0x513)](),'y':_0x161c47['number']()})[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x43a)),'distancePx':_0x161c47['number']()['optional']()['describe']('Swipe\x20distance\x20in\x20points.'),'durationMs':_0x161c47[_0x3ee7d6(0x513)]()[_0x3ee7d6(0x4ac)]()['describe'](_0x3ee7d6(0x835)),'coordinateSource':_0x161c47[_0x3ee7d6(0x499)]([_0x3ee7d6(0x863),'device'])['optional']()},async _0x3ad6c2=>{const _0x8d5bec=_0x3ee7d6;try{const _0xc475f4=await _0x3fa9b2();if(!_0xc475f4['ok'])return{..._0x1a18b6(_0xc475f4['payload']),'isError':!![]};const _0x377a1f=await _0x4650a9[_0x8d5bec(0x81d)]({'direction':_0x3ad6c2[_0x8d5bec(0x41f)],'from':_0x3ad6c2[_0x8d5bec(0x70f)],'distancePx':_0x3ad6c2['distancePx'],'durationMs':_0x3ad6c2[_0x8d5bec(0x8ad)],'coordinateSource':_0x3ad6c2[_0x8d5bec(0x19b)]});return{..._0x1a18b6(_0x377a1f),'isError':!_0x377a1f[_0x8d5bec(0x42d)]};}catch(_0x2de634){return _0x2859f2('screen_swipe',_0x2de634);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('screen_scroll_to',_0x3ee7d6(0x4a7),{'text':_0x161c47['string']()['optional'](),'accessibilityLabel':_0x161c47['string']()['optional'](),'maxSwipes':_0x161c47[_0x3ee7d6(0x513)]()[_0x3ee7d6(0x4ac)](),'direction':_0x161c47['enum'](['up','down'])[_0x3ee7d6(0x4ac)]()},async _0x4fd5d7=>{const _0x4e5775=_0x3ee7d6;try{const _0x4befb2=await _0x3fa9b2();if(!_0x4befb2['ok'])return{..._0x1a18b6(_0x4befb2[_0x4e5775(0x836)]),'isError':!![]};if(!_0x4fd5d7[_0x4e5775(0x5d9)]&&!_0x4fd5d7['accessibilityLabel'])return{..._0x1a18b6({'success':![],'error':'text\x20or\x20accessibilityLabel\x20is\x20required.'}),'isError':!![]};const _0x525fcb=await _0x4650a9[_0x4e5775(0x8c7)]({'text':_0x4fd5d7['text'],'accessibilityLabel':_0x4fd5d7['accessibilityLabel']},{'maxSwipes':_0x4fd5d7['maxSwipes'],'direction':_0x4fd5d7[_0x4e5775(0x41f)]});return{..._0x1a18b6(_0x525fcb),'isError':!_0x525fcb['success']};}catch(_0x4e566c){return _0x2859f2(_0x4e5775(0x59d),_0x4e566c);}}),_0x14f67c['tool'](_0x3ee7d6(0x785),_0x3ee7d6(0x8fd),{'text':_0x161c47['string']()['optional'](),'accessibilityLabel':_0x161c47['string']()['optional'](),'durationMs':_0x161c47[_0x3ee7d6(0x513)]()[_0x3ee7d6(0x4ac)]()},async _0x5ae427=>{const _0x52cee4=_0x3ee7d6;try{const _0x371b6d=await _0x3fa9b2();if(!_0x371b6d['ok'])return{..._0x1a18b6(_0x371b6d[_0x52cee4(0x836)]),'isError':!![]};if(!_0x5ae427['text']&&!_0x5ae427[_0x52cee4(0x478)])return{..._0x1a18b6({'success':![],'error':_0x52cee4(0x6ab)}),'isError':!![]};const _0x5bf4e6=await _0x4650a9[_0x52cee4(0x5f7)]({'text':_0x5ae427['text'],'accessibilityLabel':_0x5ae427['accessibilityLabel']},_0x5ae427['durationMs']??0x3e8);return{..._0x1a18b6(_0x5bf4e6),'isError':!_0x5bf4e6['success']};}catch(_0x42b270){return _0x2859f2('screen_long_press',_0x42b270);}}),_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x6d4),'Press\x20a\x20hardware/system\x20button:\x20home,\x20volumeUp,\x20volumeDown,\x20or\x20lock.',{'key':_0x161c47['enum'](['home',_0x3ee7d6(0x5ea),_0x3ee7d6(0x1b4),_0x3ee7d6(0x7c5)])},async({key:_0x286f71})=>{const _0x27a24e=_0x3ee7d6;try{const _0x3cc332=await _0x3fa9b2();if(!_0x3cc332['ok'])return{..._0x1a18b6(_0x3cc332['payload']),'isError':!![]};const _0xda42dc=await _0x4650a9['pressKey'](_0x286f71);return{..._0x1a18b6(_0xda42dc),'isError':!_0xda42dc['success']};}catch(_0x198309){if('lWRSI'===_0x27a24e(0x774)){const _0x40b79e=(_0x1f52e3[_0x27a24e(0x945)]*0x3/0x4/(0x400*0x400))['toFixed'](0x2);throw new _0x3b65bf(_0x27a24e(0x92c),_0x27a24e(0x77e)+_0x40b79e+'\x20MB\x20which\x20exceeds\x20the\x205\x20MB\x20cap.','Resize\x20or\x20recompress\x20the\x20image\x20before\x20uploading.\x20Test\x20fixtures\x20rarely\x20need\x20to\x20be\x20larger\x20than\x201\x20MB.\x20Cap:\x205\x20MB.');}else return _0x2859f2('screen_press_key',_0x198309);}}),_0x14f67c['tool']('screen_open_url',_0x3ee7d6(0x2de),{'url':_0x161c47['string']()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x95e))},async({url:_0xd126b6})=>{try{const _0x8a803a=await _0x3fa9b2();if(!_0x8a803a['ok'])return{..._0x1a18b6(_0x8a803a['payload']),'isError':!![]};const _0x32fb89=await _0x4650a9['openUrl'](_0xd126b6);return{..._0x1a18b6(_0x32fb89),'isError':!_0x32fb89['success']};}catch(_0x5000c5){return _0x2859f2('screen_open_url',_0x5000c5);}}),_0x14f67c['tool'](_0x3ee7d6(0x20c),'Capture\x20a\x20screenshot\x20of\x20the\x20current\x20iOS\x20screen\x20via\x20WebDriverAgent.\x20Returns\x20the\x20PNG\x20as\x20a\x20viewable\x20image.',{},async()=>{const _0x5e4c76=_0x3ee7d6;try{const _0x48b223=await _0x3fa9b2();if(!_0x48b223['ok'])return{..._0x1a18b6(_0x48b223[_0x5e4c76(0x836)]),'isError':!![]};const _0x1d1bb4=await _0x4650a9['screenshot']();return{..._0x59184d(_0x1d1bb4)};}catch(_0x2344dc){return _0x2859f2(_0x5e4c76(0x20c),_0x2344dc);}}),_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x453),_0x3ee7d6(0xf4),{'text':_0x161c47[_0x3ee7d6(0x7fd)]()['optional'](),'accessibilityLabel':_0x161c47[_0x3ee7d6(0x7fd)]()['optional'](),'type':_0x161c47[_0x3ee7d6(0x7fd)]()['optional'](),'timeoutMs':_0x161c47['number']()['optional'](),'pollIntervalMs':_0x161c47['number']()['optional'](),'disappear':_0x161c47['boolean']()[_0x3ee7d6(0x4ac)]()},async _0x5a38f0=>{const _0x17d915=_0x3ee7d6;try{const _0x3ccb51=await _0x3fa9b2();if(!_0x3ccb51['ok'])return{..._0x1a18b6(_0x3ccb51['payload']),'isError':!![]};if(!_0x5a38f0['text']&&!_0x5a38f0['accessibilityLabel']&&!_0x5a38f0[_0x17d915(0x85c)])return{..._0x1a18b6({'success':![],'error':_0x17d915(0x3f4)}),'isError':!![]};const _0x2acb48=await _0x4650a9[_0x17d915(0x85e)]({'text':_0x5a38f0['text'],'accessibilityLabel':_0x5a38f0['accessibilityLabel'],'type':_0x5a38f0['type']},{'timeoutMs':_0x5a38f0['timeoutMs'],'pollIntervalMs':_0x5a38f0[_0x17d915(0x31e)],'disappear':_0x5a38f0['disappear']});return{..._0x1a18b6(_0x2acb48),'isError':!_0x2acb48[_0x17d915(0x42d)]};}catch(_0x3610ab){return _0x2859f2('screen_wait_for',_0x3610ab);}});!_0x4d633e&&_0x3586ff(_0x14f67c,{'screenManager':_0x4650a9,'toolErrorContent':_0x2859f2,'jsonText':_0x1a18b6,'requireWDA':_0x3fa9b2});_0x14f67c['tool']('app_launch',_0x3ee7d6(0x794),{'bundleId':_0x161c47['string']()[_0x3ee7d6(0x9de)]('e.g.,\x20com.acme.myapp')},async({bundleId:_0x3fa810})=>{const _0x41ab6a=_0x3ee7d6;try{const _0x2a57ef=await _0x174ea1[_0x41ab6a(0x926)](_0x3fa810);return{..._0x1a18b6(_0x2a57ef),'isError':!_0x2a57ef['success']};}catch(_0x35af0e){if(_0x41ab6a(0x88f)!=='shiBF')return _0x2859f2('app_launch',_0x35af0e);else{const _0x986a8=_0x787b64[_0x41ab6a(0x877)](),_0x385c47=_0x5efa7a['getLineAndColumnAtPos'](_0x986a8);_0x774ecb[_0x41ab6a(0x496)]({'filePath':_0x261b20['getFilePath'](),'relPath':_0x424f85(_0xfa7d7f,_0x4ccb64['getFilePath']())['split'](_0x374239)[_0x41ab6a(0x221)]('/'),'line':_0x385c47['line'],'suggestedKey':_0x1a9faa(_0x2ba93f[_0x41ab6a(0x7ff)]()),'alreadyHasImageKey':_0x3c29de(_0x5106ff)});}}}),_0x14f67c[_0x3ee7d6(0x8dc)]('app_terminate','Terminate\x20an\x20iOS\x20app\x20by\x20bundle\x20ID.',{'bundleId':_0x161c47[_0x3ee7d6(0x7fd)]()},async({bundleId:_0x40bce3})=>{try{const _0x190125=await _0x174ea1['terminateApp'](_0x40bce3);return{..._0x1a18b6(_0x190125),'isError':!_0x190125['success']};}catch(_0x4eb93d){return _0x2859f2('app_terminate',_0x4eb93d);}}),_0x14f67c['tool']('app_activate','Bring\x20an\x20app\x20to\x20the\x20foreground\x20without\x20a\x20cold\x20restart.\x20Uses\x20WDA\x27s\x20/wda/apps/launch,\x20falls\x20back\x20to\x20a\x20fresh\x20launch\x20if\x20WDA\x20is\x20unreachable.',{'bundleId':_0x161c47[_0x3ee7d6(0x7fd)]()},async({bundleId:_0x17071b})=>{const _0xe66a1=_0x3ee7d6;try{const _0x131933=await _0x174ea1['activateApp'](_0x17071b);return{..._0x1a18b6(_0x131933),'isError':!_0x131933[_0xe66a1(0x42d)]};}catch(_0x556ca3){return _0x2859f2('app_activate',_0x556ca3);}}),_0x14f67c['tool'](_0x3ee7d6(0x6c0),'List\x20apps\x20installed\x20on\x20the\x20connected\x20real\x20device\x20via\x20`xcrun\x20devicectl\x20device\x20info\x20apps`.\x20Cached\x20for\x2030s.',{},async()=>{const _0xf968f=_0x3ee7d6;try{const _0x1df03a=await _0x174ea1[_0xf968f(0x960)]();return{..._0x1a18b6(_0x1df03a),'isError':!_0x1df03a[_0xf968f(0x42d)]};}catch(_0x13e1b3){return _0x2859f2(_0xf968f(0x6c0),_0x13e1b3);}}),_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x790),'Return\x20info\x20about\x20the\x20foreground\x20app\x20via\x20WDA\x27s\x20/wda/activeAppInfo\x20(bundleId,\x20pid,\x20name).',{},async()=>{const _0x163e00=_0x3ee7d6;try{const _0x56fddf=await _0x174ea1[_0x163e00(0x899)]();return{..._0x1a18b6(_0x56fddf),'isError':!_0x56fddf['success']};}catch(_0x311dea){return _0x2859f2('app_active',_0x311dea);}}),_0x14f67c['tool'](_0x3ee7d6(0x233),'Ensure\x20the\x20iOS\x20device\x20is\x20awake\x20and\x20unlocked.\x20Returns\x20a\x20structured\x20result\x20with\x20remediation\x20guidance\x20when\x20the\x20device\x20is\x20locked.',{},async()=>{const _0x56bd2f=_0x3ee7d6;try{const _0x816b3b=await _0x43a84f['ensureAwake']();return{..._0x1a18b6(_0x816b3b),'isError':!_0x816b3b[_0x56bd2f(0x12f)]};}catch(_0xa3a7ba){return _0x2859f2(_0x56bd2f(0x233),_0xa3a7ba);}}),_0x14f67c['tool']('device_set_orientation','Set\x20the\x20device\x20orientation\x20to\x20portrait\x20or\x20landscape\x20via\x20WDA.',{'orientation':_0x161c47['enum'](['portrait','landscape'])},async({orientation:_0x3c2887})=>{const _0x1983dd=_0x3ee7d6;try{const _0x1ba45b=await _0x43a84f[_0x1983dd(0x71b)](_0x3c2887);return{..._0x1a18b6(_0x1ba45b),'isError':!_0x1ba45b[_0x1983dd(0x42d)]};}catch(_0x5d57ca){return _0x2859f2(_0x1983dd(0x15e),_0x5d57ca);}});function _0x44ed91(){const _0x30242c=_0x3ee7d6;return{'loadAuth':_0x9b2b8c,'resolveRepo':_0x4c7f9c,'getCurrentBranch':_0x6b60b3,'getGitSha':_0x37a731,'getWorkingTreeDiff':_0x27a85c,'listChangedFiles':_0x392eac,'readChangedFileContents':_0x50bda3,'getDefaultBranch':_0x4e9ac7,'fetcher':(_0x20b9db,_0xd6d72d,_0x381aa4)=>_0x4ace5b(_0x20b9db,_0xd6d72d,_0x381aa4),'ensureGraph':()=>_0x3a93e6({'workingDir':_0x59dcf1}),'flowRunner':_0xa7772,'progressWriter':_0x536663,'testDataManager':_0x50b852,'runsStore':_0x2fb690,'getTestIdReady':()=>_0x126d97({'projectDir':_0x59dcf1,'sentinel':_0x32bb67[_0x30242c(0x9db)]()})['then'](_0x7045bc=>_0x7045bc[_0x30242c(0x798)]),'cwd':_0x59dcf1};}_0x14f67c['tool']('rn_test_flows',_0x3ee7d6(0x3b4),{'flowIds':_0x161c47[_0x3ee7d6(0x27a)](_0x161c47[_0x3ee7d6(0x7fd)]())['min'](0x1)[_0x3ee7d6(0x9de)]('Flow\x20ids\x20to\x20execute,\x20as\x20returned\x20by\x20rn_find_flows\x20/\x20rn_list_flows.\x20Treated\x20as\x20a\x20set\x20—\x20execution\x20order\x20is\x20decided\x20server-side.')},async({flowIds:_0x203a13})=>{const _0x248119=_0x3ee7d6;try{if(_0x248119(0x167)!=='clcde'){await _0x246281();const _0x2dbcff=await _0xd571ff(_0x3535ad);if(_0x2dbcff['kind']==='block')return _0x2dbcff[_0x248119(0x856)];const _0x210670=await _0x1f93a6({'flowIds':_0x203a13},_0x44ed91()),_0x1c0619=typeof _0x210670[_0x248119(0x46c)]===_0x248119(0x513)||(_0x210670[_0x248119(0x2ca)]?.[_0x248119(0x945)]??0x0)>0x0,_0x14741e=_0x4ec2e8(_0x2dbcff['advisories']),_0x1e67a9=_0x14741e?{..._0x210670,'doctorAdvisories':_0x14741e}:_0x210670,_0x8e5bb=_0xd9289f(_0x1e67a9,_0x210670['results'],_0x210670[_0x248119(0x77d)]);return _0x31a38a(_0x8e5bb['content']),{..._0x8e5bb,'isError':_0x1c0619};}else _0x23aba4=_0x5ecf67(_0xda93f0,_0x21068d,{'stdio':[_0x248119(0x317),_0x248119(0x406),_0x248119(0x406)]});}catch(_0x8869dc){if(_0x8869dc instanceof _0x45acbf&&_0x8869dc[_0x248119(0x220)]!==void 0x0)return{..._0x1a18b6(_0x8869dc[_0x248119(0x220)]),'isError':!![]};return _0x2859f2('rn_test_flows',_0x8869dc);}}),_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x6d3),'Preview\x20which\x20flows\x20your\x20changes\x20(or\x20specific\x20files)\x20affect\x20—\x20THE\x20first\x20step\x20for\x20any\x20\x27test\x20my\x20changes\x27\x20or\x20\x27what\x20does\x20this\x20touch\x27\x20ask.\x20Each\x20row\x20carries\x20a\x20`flowId`\x20plus\x20the\x20flow\x27s\x20name,\x20outcome,\x20mutation\x20status,\x20and\x20preconditions.\x20The\x20rows\x20are\x20a\x20menu:\x20their\x20order\x20is\x20presentational\x20only\x20(the\x20server\x20determines\x20execution\x20order),\x20so\x20just\x20decide\x20what\x20to\x20run\x20—\x20the\x20chosen\x20flowIds\x20for\x20a\x20focused\x20subset,\x20or\x20ALL\x20of\x20them\x20for\x20comprehensive\x20verification\x20—\x20and\x20pass\x20them\x20to\x20`rn_test_flows`\x20to\x20execute\x20(batching\x20above\x20its\x2010-id\x20cap).\x20The\x20preview\x20is\x20comprehensive:\x20`totalCount`\x20is\x20the\x20true\x20matched\x20count,\x20and\x20rows\x20are\x20only\x20ever\x20clipped\x20past\x20a\x20high\x20bound,\x20flagged\x20with\x20`truncated:\x20true`\x20plus\x20a\x20hint.\x20For\x20app-wide\x20queries\x20not\x20scoped\x20to\x20a\x20diff\x20(\x27test\x20the\x20login\x20flows\x27),\x20use\x20`rn_find_flows`\x20instead.\x0a\x0aScope\x20inputs:\x20pass\x20`filePaths`\x20when\x20the\x20user\x20scoped\x20to\x20specific\x20files;\x20otherwise\x20omit\x20both\x20arguments\x20and\x20the\x20preview\x20defaults\x20to\x20the\x20working-tree\x20diff\x20vs\x20the\x20repo\x27s\x20default\x20branch.\x20Requires\x20auth.',{'base':_0x161c47['string']()[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)]('Base\x20ref\x20to\x20diff\x20the\x20working\x20tree\x20against.\x20Ignored\x20when\x20filePaths\x20is\x20supplied.\x20Defaults\x20to\x20the\x20repo\x27s\x20default\x20branch\x20(origin/HEAD,\x20falling\x20back\x20to\x20main,\x20then\x20master).'),'filePaths':_0x161c47['union']([_0x161c47[_0x3ee7d6(0x7fd)](),_0x161c47['array'](_0x161c47[_0x3ee7d6(0x7fd)]())])[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)]('Optional\x20single\x20path\x20or\x20array\x20of\x20repo-relative\x20file\x20paths.\x20When\x20present,\x20scopes\x20the\x20preview\x20to\x20flows\x20that\x20touch\x20these\x20files\x20and\x20ignores\x20the\x20diff\x20path.')},async({base:_0x1c35ac,filePaths:_0x5b230e})=>{const _0x2e5523=_0x3ee7d6;try{const _0x441eec=await _0x432da2({'base':_0x1c35ac,'filePaths':_0x5b230e},_0x44ed91());return _0x1a18b6(_0x441eec);}catch(_0x5c14c9){if('Ejukv'==='HdcYa')_0x25edb1(_0x4d7ca2);else return _0x2859f2(_0x2e5523(0x6d3),_0x5c14c9);}}),_0x14f67c['tool'](_0x3ee7d6(0x9ef),'Find\x20flows\x20app-wide\x20by\x20describing\x20them\x20in\x20natural\x20language\x20(e.g.\x20\x27user\x20logs\x20in\x27,\x20\x27checkout\x20flows\x27).\x20NOT\x20diff-scoped\x20—\x20searches\x20every\x20flow\x20in\x20the\x20app;\x20for\x20\x27what\x20would\x20my\x20changes\x20affect\x27\x20use\x20`rn_list_flows`\x20instead.\x20The\x20returned\x20candidate\x20set\x20is\x20COMPLETE\x20for\x20the\x20query\x20(the\x20matcher\x20over-includes\x20rather\x20than\x20filters),\x20so\x20make\x20the\x20final\x20selection\x20yourself:\x20pick\x20ONE\x20flow\x20for\x20a\x20happy-path\x20ask,\x20several\x20or\x20all\x20of\x20them\x20for\x20broad\x20behavior\x20coverage.\x20Match\x20order\x20is\x20presentational,\x20not\x20a\x20relevance\x20ranking\x20(each\x20match\x27s\x20`reason`\x20carries\x20the\x20why;\x20the\x20server\x20determines\x20execution\x20order).\x20Then\x20pass\x20the\x20chosen\x20flowIds\x20to\x20`rn_test_flows`\x20to\x20execute.\x20Requires\x20auth.',{'query':_0x161c47[_0x3ee7d6(0x7fd)]()['min'](0x1)['describe'](_0x3ee7d6(0x1e7))},async({query:_0x5d80fa})=>{const _0x3eb619=_0x3ee7d6;try{const _0x368aa8=await _0x4123b7({'query':_0x5d80fa},_0x44ed91()),_0xcdf1d5=_0x1a18b6(_0x368aa8);return _0x368aa8[_0x3eb619(0x77d)]?{'content':[..._0xcdf1d5['content'],{'type':_0x3eb619(0x5d9),'text':_0x368aa8['warning']}]}:_0xcdf1d5;}catch(_0x56f48d){return _0x2859f2('rn_find_flows',_0x56f48d);}}),_0x14f67c['tool'](_0x3ee7d6(0x75e),_0x3ee7d6(0x108),{'chainId':_0x161c47['string']()[_0x3ee7d6(0x9de)]('Chain\x20identifier\x20—\x20surfaced\x20verbatim\x20in\x20responses.'),'flows':_0x161c47['array'](_0x161c47['unknown']())['describe']('Ordered\x20flow\x20list.\x20Pass\x20through\x20verbatim\x20from\x20the\x20planning\x20tool.'),'bridges':_0x161c47['array'](_0x161c47[_0x3ee7d6(0x27a)](_0x161c47['unknown']()))[_0x3ee7d6(0x9de)](_0x3ee7d6(0x9b1)),'snapPointFlowIndices':_0x161c47[_0x3ee7d6(0x27a)](_0x161c47['number']()[_0x3ee7d6(0x22a)]()[_0x3ee7d6(0x1ba)]())[_0x3ee7d6(0x9de)]('Indices\x20after\x20which\x20the\x20runner\x20pauses\x20for\x20an\x20AI-agent\x20decision.\x20Pass\x20through\x20verbatim\x20from\x20the\x20planning\x20tool.'),'perFlowStatedDependencies':_0x161c47['array'](_0x161c47[_0x3ee7d6(0x71c)]([_0x161c47[_0x3ee7d6(0x27a)](_0x161c47['string']()),_0x161c47['undefined']()]))['optional']()['describe'](_0x3ee7d6(0x278)),'perFlowMutexWith':_0x161c47[_0x3ee7d6(0x27a)](_0x161c47[_0x3ee7d6(0x71c)]([_0x161c47[_0x3ee7d6(0x27a)](_0x161c47[_0x3ee7d6(0x7fd)]()),_0x161c47['undefined']()]))[_0x3ee7d6(0x4ac)]()['describe'](_0x3ee7d6(0x90e)),'bootRequestPatterns':_0x161c47[_0x3ee7d6(0x27a)](_0x161c47[_0x3ee7d6(0x7fd)]())[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x24a)),'affectedFlowNames':_0x161c47['array'](_0x161c47['string']())['optional']()['describe']('Flow\x20names\x20that\x20touch\x20diff-affected\x20screens.\x20Pass\x20through\x20verbatim\x20from\x20a\x20planning\x20response\x20that\x20carried\x20them.\x20Used\x20to\x20promote\x20selective\x20screenshot\x20capture\x20for\x20diff-affected\x20flows\x20during\x20chain\x20execution.\x20Absent\x20or\x20empty\x20means\x20no\x20promotion\x20(event-triggered\x20capture\x20only).'),'signature':_0x161c47[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x9de)](_0x3ee7d6(0xf2))},async _0x28edda=>{const _0x345e2c=_0x3ee7d6;try{await _0x246281();const _0x40e0eb=await _0xd571ff(_0x3535ad);if(_0x40e0eb['kind']==='block')return _0x40e0eb['response'];const _0x11c125=_0x28edda,_0x1cf223=await _0x1c8370['start'](_0x11c125),_0x55949f=_0x4ec2e8(_0x40e0eb['advisories']),_0xe6e760=[..._0x1a18b6(_0x55949f?{..._0x1cf223,'doctorAdvisories':_0x55949f}:_0x1cf223)[_0x345e2c(0x791)]];return _0x31a38a(_0xe6e760),{'content':_0xe6e760,'isError':_0x1cf223['status']==='error'};}catch(_0x3cde8d){return _0x2859f2(_0x345e2c(0x75e),_0x3cde8d);}}),_0x14f67c['tool']('rn_test_chain_continue',_0x3ee7d6(0x37b),{'runId':_0x161c47[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x9de)]('Opaque\x20chain\x20identifier\x20returned\x20by\x20`rn_test_chain_start`.\x20Expires\x20after\x2030\x20minutes\x20of\x20inactivity.'),'decision':_0x161c47[_0x3ee7d6(0x499)](['continue',_0x3ee7d6(0x150),'retry','halt'])['describe']('`continue`\x20/\x20`recreate`\x20are\x20valid\x20only\x20at\x20`snap_point_pending`.\x20`retry`\x20/\x20`halt`\x20are\x20valid\x20only\x20at\x20`awaiting_error_decision`.\x20Mismatched\x20pairings\x20are\x20rejected\x20before\x20the\x20runner\x20advances.')},async({runId:_0x39a444,decision:_0x52a207})=>{const _0x2b0749=_0x3ee7d6;try{await _0x246281();const _0x3cb56f=await _0xd571ff(_0x3535ad,{'force':!![]});if(_0x3cb56f['kind']===_0x2b0749(0x34d))return _0x3cb56f['response'];const _0x1165bf=await _0x1c8370['continueRun'](_0x39a444,_0x52a207),_0x1c58f0=_0x4ec2e8(_0x3cb56f['advisories']),_0x240b46=[..._0x1a18b6(_0x1c58f0?{..._0x1165bf,'doctorAdvisories':_0x1c58f0}:_0x1165bf)[_0x2b0749(0x791)]];return _0x31a38a(_0x240b46),{'content':_0x240b46,'isError':_0x1165bf[_0x2b0749(0x9d0)]===_0x2b0749(0x125)};}catch(_0x5c77ea){return _0x2859f2(_0x2b0749(0x2d9),_0x5c77ea);}}),_0x14f67c['tool'](_0x3ee7d6(0x31c),_0x3ee7d6(0x201),{'olderThan':_0x161c47[_0x3ee7d6(0x499)]([_0x3ee7d6(0x2ab),_0x3ee7d6(0x3a2),_0x3ee7d6(0x9a6)])[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x95b))},async({olderThan:_0x5f08ee})=>{const _0x3af6f1=_0x3ee7d6;try{const _0x2e06a3=await _0x576e14(_0x2fb690,{'olderThan':_0x5f08ee});if(_0x2e06a3['failedToPurge']>0x0)return{..._0x1a18b6({..._0x2e06a3,'error':_0x2e06a3['failedToPurge']+'\x20run(s)\x20could\x20not\x20be\x20purged\x20(permission\x20or\x20disk\x20error).\x20See\x20server\x20logs\x20for\x20per-run\x20detail.'}),'isError':!![]};return _0x1a18b6(_0x2e06a3);}catch(_0x446cdf){return _0x2859f2(_0x3af6f1(0x31c),_0x446cdf);}}),_0x14f67c['tool']('ceraph_doctor','Run\x20every\x20setup\x20check\x20we\x20can\x20before\x20flows\x20execute:\x20WDA\x20reachable,\x20device\x20connected,\x20device\x20awake,\x20app\x20installed,\x20required\x20env\x20vars\x20present,\x20laptop\x20WiFi.\x20Returns\x20a\x20structured\x20DoctorResult\x20—\x20when\x20ok:\x20false,\x20surface\x20the\x20failing\x20checks\x27\x20remediation\x20verbatim\x20and\x20DO\x20NOT\x20attempt\x20to\x20fix\x20environment\x20issues\x20by\x20editing\x20source\x20code.\x20Call\x20this\x20once\x20before\x20a\x20batch\x20of\x20rn_test_*\x20runs.\x20To\x20bring\x20everything\x20up\x20in\x20one\x20call\x20(Metro\x20+\x20build\x20+\x20verify),\x20use\x20ceraph_start.',{'bundleId':_0x161c47['string']()['optional']()[_0x3ee7d6(0x9de)]('Bundle\x20ID\x20of\x20the\x20app\x20under\x20test\x20(e.g.,\x20com.acme.myapp).\x20Required\x20for\x20the\x20app-installed\x20check.'),'requiredEnv':_0x161c47[_0x3ee7d6(0x27a)](_0x161c47['string']())[_0x3ee7d6(0x4ac)]()['describe']('Env\x20var\x20names\x20the\x20planned\x20flows\x20reference.\x20Each\x20must\x20be\x20set\x20+\x20non-empty.'),'expectedNetwork':_0x161c47['string']()['optional']()[_0x3ee7d6(0x9de)]('Optional\x20WiFi\x20SSID\x20the\x20user\x20expects\x20the\x20laptop\x20(and\x20phone)\x20to\x20be\x20on.\x20Mismatch\x20is\x20a\x20warning,\x20not\x20an\x20error.')},async({bundleId:_0x170dd9,requiredEnv:_0x3b32be,expectedNetwork:_0x38a728})=>{try{const _0x86939b=await _0x3df3ac({'screen':_0x4650a9,'apps':_0x174ea1,'autonomy':_0x43a84f,'iproxyManager':_0x8e538a,'bundleId':_0x170dd9,'requiredEnv':_0x3b32be,'expectedNetwork':_0x38a728,'projectDir':_0x59dcf1,'target':_0x2db18f});return _0x2e83b7(_0x86939b),{..._0x1a18b6(_0x86939b),'isError':!_0x86939b['ok']};}catch(_0x1e6b3e){return _0x2859f2('ceraph_doctor',_0x1e6b3e);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('rn_sync_camera_registry',_0x3ee7d6(0x12a),{},async()=>{const _0x2e2eb7=_0x3ee7d6;try{if(_0x2e2eb7(0x756)!==_0x2e2eb7(0x756))void this[_0x2e2eb7(0x41c)]['cleanupJit']()['catch'](()=>void 0x0);else{const _0x59aa39=await _0x280e91(_0x59dcf1);if(_0x59aa39['writtenOrUnchanged']==='missing-dir'){if(_0x2e2eb7(0x7ea)==='zmYKh')_0x320371[_0x2e2eb7(0x4ae)](),_0x9f5fce(_0x131d55);else return{..._0x1a18b6({'registered':[],'registryPath':_0x10fa2a(_0x59dcf1,_0x59aa39[_0x2e2eb7(0x6a9)]),'state':_0x59aa39[_0x2e2eb7(0x969)],'message':'Create\x20`.ceraph/camera-images/`\x20and\x20add\x20at\x20least\x20one\x20image.\x20Run\x20this\x20tool\x20again\x20to\x20generate\x20the\x20registry.'}),'isError':!![]};}return _0x1a18b6({'registered':_0x59aa39['registered'][_0x2e2eb7(0x986)](_0x39e252=>_0x39e252['key']),'registryPath':_0x10fa2a(_0x59dcf1,_0x59aa39[_0x2e2eb7(0x6a9)]),'state':_0x59aa39[_0x2e2eb7(0x969)]});}}catch(_0x4a9bcd){return _0x2859f2(_0x2e2eb7(0x9a9),_0x4a9bcd);}}),_0x14f67c['tool'](_0x3ee7d6(0x50c),'Drop\x20a\x20camera\x20test\x20image\x20into\x20`.ceraph/camera-images/`\x20without\x20the\x20dev\x20having\x20to\x20copy\x20files\x20by\x20hand.\x20Pass\x20`imageBase64`\x20(the\x20bytes\x20—\x20no\x20`data:`\x20prefix\x20needed)\x20plus\x20a\x20lowercase\x20hyphen-separated\x20`imageKey`\x20(e.g.\x20`handwriting-sample-1`).\x20`contentType`\x20is\x20a\x20hint\x20only\x20—\x20the\x20extension\x20is\x20chosen\x20from\x20magic\x20bytes\x20(JPEG/PNG/WebP/HEIC).\x20A\x20collision\x20with\x20an\x20existing\x20imageKey\x20is\x20rejected\x20unless\x20`overwrite:\x20true`\x20is\x20set.\x20After\x20writing,\x20the\x20static\x20`_registry.ts`\x20is\x20regenerated\x20automatically\x20(same\x20step\x20as\x20`rn_sync_camera_registry`).',{'imageKey':_0x161c47[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x575)),'imageBase64':_0x161c47['string']()['describe'](_0x3ee7d6(0x569)),'contentType':_0x161c47['string']()[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x66b)),'overwrite':_0x161c47[_0x3ee7d6(0x715)]()['optional']()['describe'](_0x3ee7d6(0x7ee)),'subDir':_0x161c47['string']()[_0x3ee7d6(0x4ac)]()['describe'](_0x3ee7d6(0x51d))},async({imageKey:_0x156b81,imageBase64:_0x4064a6,contentType:_0x5bb2f6,overwrite:_0x478255,subDir:_0x5a1c65})=>{const _0x26ca36=_0x3ee7d6;try{const _0x109971=await _0x36607e(_0x59dcf1,{'imageKey':_0x156b81,'imageBase64':_0x4064a6,'contentType':_0x5bb2f6,'overwrite':_0x478255,'subDir':_0x5a1c65});return _0x1a18b6({'written':_0x109971[_0x26ca36(0x7c2)],'registry':_0x109971[_0x26ca36(0x517)],'registered':_0x109971['registered'],'detectedContentType':_0x109971[_0x26ca36(0x3ee)],'detectedExt':_0x109971['detectedExt'],'replaced':_0x109971[_0x26ca36(0x32b)],'removedSiblingPath':_0x109971[_0x26ca36(0x1b9)],'bytes':_0x109971[_0x26ca36(0x107)],'registryState':_0x109971[_0x26ca36(0x347)],'warnings':_0x109971['warnings']});}catch(_0x28227e){if(_0x28227e instanceof _0x58b24e)return{..._0x1a18b6({'error':_0x28227e['code'],'message':_0x28227e[_0x26ca36(0x92e)],'remediation':_0x28227e[_0x26ca36(0x5de)]}),'isError':!![]};return _0x2859f2('ceraph_add_camera_image',_0x28227e);}}),_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x866),_0x3ee7d6(0x13f),{'timeoutMs':_0x161c47[_0x3ee7d6(0x513)]()['optional']()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x2c4))},async({timeoutMs:_0x498a1a})=>{const _0x53875b=_0x3ee7d6;try{const _0x22ddd3=await _0x3fa9b2();if(!_0x22ddd3['ok'])return{..._0x1a18b6(_0x22ddd3['payload']),'isError':!![]};let _0x6852f3=_0x53875b(0x6cb);await _0x246281();const _0x3cf83f=_0x32bb67['isListening'](),_0x3627d4=_0x3cf83f?await _0x32bb67['enqueueCommand'](_0x53875b(0x1cd)):{'acked':![]};if(!_0x3627d4[_0x53875b(0x947)]){const _0xd87978=await _0x4650a9['openUrl'](_0x53875b(0x3b0));if(!_0xd87978['success'])return{..._0x1a18b6({'success':![],'error':_0x3cf83f?_0x53875b(0x51f)+(_0xd87978[_0x53875b(0x125)]??'openUrl\x20failed'):_0xe23307===_0x53875b(0x236)?_0x53875b(0x434)+(_0xd87978['error']??_0x53875b(0x81f))+'.\x20Fix\x20the\x20listener\x20(check\x20CERAPH_SIGNAL_HOST\x20and\x20that\x20port\x208101\x20is\x20free\x20and\x20permitted)\x20and\x20restart,\x20or\x20rebuild\x20so\x20the\x20ceraph://\x20scheme\x20is\x20registered.':'Another\x20process\x20holds\x20the\x20device-signal\x20port\x20(:8101),\x20so\x20Ceraph\x27s\x20command\x20channel\x20is\x20unavailable\x20in\x20this\x20session,\x20and\x20the\x20deep-link\x20fallback\x20failed:\x20'+(_0xd87978[_0x53875b(0x125)]??'openUrl\x20failed')+_0x53875b(0x3a8)}),'isError':!![]};_0x6852f3=_0x3cf83f?'deep-link-fallback':'deep-link\x20(command\x20channel\x20unavailable\x20—\x20:8101\x20not\x20bound\x20by\x20this\x20session)';}const _0x43f362=_0x498a1a??0x2710,_0x510573=Date['now']();let _0x7a4ab1=![];while(Date[_0x53875b(0x3d1)]()-_0x510573<_0x43f362){const _0x8c0d97=await _0x4650a9[_0x53875b(0x655)]()['catch'](()=>![]);if(_0x8c0d97){_0x7a4ab1=!![];break;}await new Promise(_0x346450=>setTimeout(_0x346450,0xc8));}const _0x629353=await _0x4650a9['screenshot']()[_0x53875b(0x4ba)](()=>void 0x0);return{..._0x1a18b6({'success':_0x7a4ab1,'via':_0x6852f3,'elapsedMs':Date['now']()-_0x510573,'screenshotBase64':_0x629353?.[_0x53875b(0x589)],'error':_0x7a4ab1?void 0x0:_0x53875b(0x8a5)+_0x43f362+'ms'}),'isError':!_0x7a4ab1};}catch(_0x1dd821){return _0x2859f2(_0x53875b(0x866),_0x1dd821);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('rn_reset_state','Reset\x20the\x20running\x20RN\x20app\x27s\x20persisted\x20state\x20(AsyncStorage.clear\x20+\x20any\x20cleanup\x20hooks\x20registered\x20via\x20`registerResetHook`)\x20by\x20dispatching\x20the\x20`ceraph://reset`\x20deep\x20link\x20through\x20WDA.\x20Requires\x20the\x20app\x20to\x20have\x20called\x20`installSignalCapture()`\x20(default-on\x20behavior)\x20or\x20`installResetListener()`\x20explicitly.\x20Dev-only\x20—\x20production\x20builds\x20no-op\x20the\x20in-app\x20clear.',{},async()=>{const _0x285da0=_0x3ee7d6;try{await _0x246281();const _0x49c7f6=_0x32bb67[_0x285da0(0x5b3)](),_0x5cb476=_0x49c7f6?await _0x32bb67['enqueueCommand'](_0x285da0(0x88b)):{'acked':![]};if(_0x5cb476['acked'])return _0x1a18b6({'success':_0x5cb476['ok']!==![],'cleared':_0x5cb476['ok']!==![],'via':'command-channel',..._0x5cb476['detail']?{'detail':_0x5cb476[_0x285da0(0x6d9)]}:{},'hint':_0x5cb476['ok']!==![]?_0x285da0(0x49c):'Shim\x20received\x20the\x20reset\x20but\x20reported\x20the\x20clear\x20didn\x27t\x20complete\x20—\x20see\x20detail.'});const _0x152293=await _0x3fa9b2();if(!_0x152293['ok'])return{..._0x1a18b6(_0x152293[_0x285da0(0x836)]),'isError':!![]};const _0x48fc50=await _0x4650a9[_0x285da0(0x620)](_0x285da0(0x2cd));if(!_0x48fc50[_0x285da0(0x42d)])return{..._0x1a18b6({'success':![],'error':_0x49c7f6?_0x285da0(0x5a5)+(_0x48fc50[_0x285da0(0x125)]??'openUrl\x20failed'):_0xe23307===_0x285da0(0x236)?'Ceraph\x27s\x20device-signal\x20listener\x20couldn\x27t\x20start\x20(e.g.\x20a\x20permission\x20error\x20or\x20an\x20invalid\x20CERAPH_SIGNAL_HOST),\x20so\x20the\x20command\x20channel\x20is\x20unavailable\x20in\x20this\x20session,\x20and\x20the\x20deep-link\x20fallback\x20failed:\x20'+(_0x48fc50['error']??'openUrl\x20failed')+_0x285da0(0x6e6):_0x285da0(0x411)+(_0x48fc50[_0x285da0(0x125)]??'openUrl\x20failed')+'.\x20Stop\x20whatever\x20holds\x20:8101\x20(lsof\x20-nP\x20-iTCP:8101)\x20—\x20the\x20session\x20reclaims\x20it\x20automatically\x20—\x20or\x20rebuild\x20so\x20the\x20ceraph://\x20scheme\x20is\x20registered.'}),'isError':!![]};return _0x1a18b6({'success':!![],'dispatched':!![],'via':_0x49c7f6?'deep-link-fallback':_0x285da0(0x28d),'hint':'ceraph://reset\x20dispatched\x20via\x20the\x20legacy\x20deep\x20link;\x20the\x20clear\x20runs\x20in-app.\x20Update\x20the\x20shim\x20to\x20get\x20command-channel\x20acks.'});}catch(_0x586814){return _0x2859f2('rn_reset_state',_0x586814);}}),_0x14f67c['tool']('rn_stop',_0x3ee7d6(0x87f),{},async()=>{const _0x4d37b6=_0x3ee7d6;try{const _0x7d54f5=await _0x30c079['stopAll']();if(_0x7d54f5[_0x4d37b6(0x945)]===0x0)return{'content':[{'type':_0x4d37b6(0x5d9),'text':JSON['stringify']({'stopped':[],'message':_0x4d37b6(0x374)})}]};return{'content':[{'type':_0x4d37b6(0x5d9),'text':JSON['stringify']({'stopped':_0x7d54f5},null,0x2)}]};}catch(_0x3a5e32){return _0x2859f2(_0x4d37b6(0x2d2),_0x3a5e32);}}),_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x296),_0x3ee7d6(0x48e),{},async()=>{const _0x31f429=_0x3ee7d6;try{_0x2db18f[_0x31f429(0x46a)]();const _0x1246cf=await _0x2db18f['resolve'](),_0xac2e7e=_0x29f0ce['getSession']();return _0x1a18b6({'target':_0x1246cf['target'],'udid':_0x1246cf['udid'],'baseUrl':_0x1246cf[_0x31f429(0x3a9)],'reason':_0x1246cf[_0x31f429(0x78c)],'preferenceEnv':process.env.CERAPH_TARGET??null,'simulatorWdaSession':_0xac2e7e?{'port':_0xac2e7e['port'],'udid':_0xac2e7e[_0x31f429(0x737)],'projectPath':_0xac2e7e[_0x31f429(0x139)]}:null});}catch(_0x3d6c38){if('daoAk'==='zJKap')this['projectDir']=_0x477e7c,this[_0x31f429(0x175)]=_0x3296a7,this[_0x31f429(0x396)]=_0x102616(_0x24e89b,'last-build-snapshot.json');else return _0x2859f2('rn_target_status',_0x3d6c38);}}),_0x14f67c['tool']('rn_wda_start',_0x3ee7d6(0x8ee),{'udid':_0x161c47[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)]('Simulator\x20UDID;\x20defaults\x20to\x20first\x20booted\x20simulator'),'derivedDataPath':_0x161c47['string']()['optional']()['describe'](_0x3ee7d6(0x65e))},async({udid:_0x130997,derivedDataPath:_0x4f99dc})=>{try{const _0x8b1d40=await _0x29f0ce['start']({'udid':_0x130997,'derivedDataPath':_0x4f99dc});return{..._0x1a18b6(_0x8b1d40),'isError':!_0x8b1d40['ok']};}catch(_0x37ec4a){return _0x2859f2('rn_wda_start',_0x37ec4a);}}),_0x14f67c['tool'](_0x3ee7d6(0x881),'Tear\x20down\x20the\x20simulator\x20WebDriverAgent\x20session\x20started\x20by\x20rn_wda_start\x20and\x20clear\x20the\x20captured\x20port.\x20Idempotent\x20—\x20calling\x20it\x20when\x20no\x20simulator\x20WDA\x20session\x20is\x20running\x20is\x20a\x20no-op.\x20Real-device\x20WDA\x20is\x20unaffected.',{},async()=>{const _0x24389a=_0x3ee7d6;try{const _0x152d14=await _0x29f0ce[_0x24389a(0x2bf)]();return _0x1a18b6(_0x152d14);}catch(_0x598cc7){return _0x2859f2('rn_wda_stop',_0x598cc7);}});async function _0x91f18b(){const _0x4a2ea3=_0x3ee7d6;if(await _0x4650a9[_0x4a2ea3(0x9b2)]())return _0x4a2ea3(0x961);const _0x561860=await _0x55be9b(await _0x174ea1[_0x4a2ea3(0x29a)]()['catch'](()=>null));if(!_0x561860)return _0x4a2ea3(0x7d8);const _0x5963f8=await _0x8e538a['start'](_0x561860)['catch'](()=>null);if(!_0x5963f8)return _0x4a2ea3(0x862);if(_0x5963f8['ok'])return'iproxy\x20bridge\x20started\x20(pid\x20'+_0x5963f8[_0x4a2ea3(0x135)]+').';if(_0x5963f8['reason']==='already-running')return'iproxy\x20bridge\x20already\x20running.';if(_0x5963f8['reason']===_0x4a2ea3(0x828))return'iproxy\x20not\x20installed\x20—\x20`brew\x20install\x20libimobiledevice`\x20to\x20enable\x20the\x20USB\x20bridge.';return'iproxy\x20bridge\x20failed\x20to\x20start:\x20'+(_0x5963f8['stderr']?.[0x0]??_0x4a2ea3(0x5bb))+'.';}_0x14f67c['tool']('rn_wait_for_device','Wait\x20for\x20an\x20iPhone\x20to\x20be\x20connected\x20via\x20USB-C.\x20Uses\x20macOS\x27s\x20usbmuxd\x20daemon\x20for\x20sub-second\x20event-driven\x20detection\x20(no\x20polling).\x20Waits\x20indefinitely\x20until\x20either\x20a\x20device\x20connects\x20or\x20the\x20agent\x20aborts\x20the\x20call.\x20Use\x20this\x20after\x20telling\x20the\x20user\x20\x27please\x20plug\x20in\x20your\x20iPhone\x27\x20—\x20the\x20call\x20resolves\x20immediately\x20when\x20they\x20do,\x20with\x20zero\x20detection\x20lag.',{'timeoutMs':_0x161c47[_0x3ee7d6(0x513)]()['int']()['positive']()['optional']()[_0x3ee7d6(0x9de)]('Optional\x20explicit\x20deadline\x20in\x20milliseconds.\x20Default:\x20none\x20—\x20the\x20call\x20waits\x20forever\x20and\x20relies\x20on\x20the\x20MCP\x20abort\x20signal\x20for\x20cancellation.\x20Set\x20this\x20only\x20when\x20you\x20want\x20a\x20hard\x20cap.')},async({timeoutMs:_0x35adaf},_0xd0c821)=>{const _0x1d6845=_0x3ee7d6;try{const _0x54cd79=await _0x32b680({'timeoutMs':_0x35adaf,'signal':_0xd0c821['signal']});return _0x2db18f['invalidate'](),_0x1a18b6(_0x54cd79);}catch(_0x25aa56){return _0x2859f2(_0x1d6845(0x23f),_0x25aa56);}});function _0x44ee80(_0x158786){const _0x3fa8fc=_0x3ee7d6;return{'content':[{'type':_0x3fa8fc(0x5d9),'text':JSON[_0x3fa8fc(0x2c1)](_0x158786,null,0x2)}]};}function _0x5e6299(_0x383407,_0xd3b7f8){return _0x2859f2(_0x383407,_0xd3b7f8);}_0x14f67c[_0x3ee7d6(0x8dc)]('ceraph_init','Run\x20the\x20COMPLETE\x20Ceraph\x20init\x20—\x20identical\x20to\x20`npx\x20@ceraph/react-native-mcp\x20init`.\x20This\x20is\x20the\x20recommended\x20path\x20for\x20agent-driven\x20setup:\x20it\x20runs\x20EVERY\x20phase\x20in\x20one\x20call\x20(MCP-client\x20configs,\x20Claude\x20Code\x20hooks,\x20.gitignore,\x20camera-images\x20dir,\x20<CameraView>\x20scan/replace,\x20installCeraph()\x20boot\x20injection,\x20ceraph://\x20URL\x20scheme,\x20server-side\x20graph\x20seed,\x20and\x20doctor)\x20so\x20you\x20never\x20hand-assemble\x20a\x20partial\x20install\x20from\x20the\x20granular\x20ceraph_init_*\x20tools.\x20Resumable\x20auth\x20gate:\x20with\x20no\x20sign-in\x20and\x20no\x20token\x20it\x20returns\x20{\x20status:\x20\x27needs-auth\x27,\x20verificationUri\x20}\x20and\x20DOES\x20NOT\x20mutate\x20the\x20project\x20—\x20surface\x20the\x20verificationUri\x20to\x20the\x20user,\x20have\x20them\x20sign\x20in\x20and\x20paste\x20the\x20token\x20it\x20issues,\x20then\x20re-call\x20ceraph_init\x20with\x20that\x20value\x20as\x20`token`\x20(persisted\x20directly,\x20no\x20browser\x20opens).\x20Once\x20signed\x20in\x20it\x20returns\x20{\x20status:\x20\x27ready\x27,\x20result\x20}\x20where\x20`result`\x20is\x20the\x20structured\x20per-phase\x20walkthrough\x20outcome.',{'token':_0x161c47[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x4ac)]()[_0x3ee7d6(0x9de)]('Bearer\x20token\x20the\x20user\x20pasted\x20after\x20signing\x20in\x20at\x20the\x20verificationUri\x20(issued\x20by\x20ceraph.dev/cli-auth).\x20When\x20set,\x20it\x20is\x20persisted\x20to\x20~/.ceraph/auth.json\x20and\x20the\x20full\x20init\x20runs\x20in\x20the\x20same\x20call.')},async({token:_0x33b55d},_0x3eb77d)=>{const _0x7cd409=_0x3ee7d6;try{const _0x70ebbd=await _0x435db2({'token':_0x33b55d,'signal':_0x3eb77d[_0x7cd409(0x294)]});return _0x44ee80(_0x70ebbd);}catch(_0xe8fb33){return'zjTaL'==='jMAMd'?{'status':'preserved','settingsPath':_0x234685,'reason':'existing\x20settings\x20at\x20'+_0x552f0d+_0x7cd409(0x93f)}:_0x5e6299(_0x7cd409(0x50e),_0xe8fb33);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('ceraph_init_status','Snapshot\x20the\x20current\x20init\x20state\x20of\x20the\x20project:\x20which\x20steps\x20are\x20complete\x20(package\x20installed,\x20GitHub\x20auth\x20cached,\x20ceraph://\x20scheme\x20registered,\x20installCeraph()\x20injected,\x20CameraView\x20usages\x20found)\x20and\x20which\x20MCP-client\x20config\x20files\x20exist.\x20Read-only.\x20To\x20actually\x20run\x20a\x20COMPLETE\x20setup,\x20call\x20`ceraph_init`\x20(CLI\x20parity\x20—\x20runs\x20every\x20phase\x20including\x20Claude\x20hooks\x20+\x20.gitignore);\x20use\x20the\x20granular\x20ceraph_init_*\x20tools\x20only\x20for\x20surgical\x20re-runs\x20of\x20a\x20single\x20step.',{'projectDir':_0x161c47['string']()['optional']()[_0x3ee7d6(0x9de)]('Directory\x20to\x20inspect.\x20Defaults\x20to\x20the\x20MCP\x20server\x27s\x20cwd\x20(usually\x20the\x20user\x27s\x20project\x20root).')},async({projectDir:_0x20f8b9})=>{const _0x537bec=_0x3ee7d6;try{if(_0x537bec(0x2eb)==='fYEIW'){const _0x55366d=_0x20f8b9??_0x59dcf1,_0x59c8b5=await _0x5b7020(_0x55366d,_0x423853(_0x55366d,_0x1e1264));return _0x44ee80(_0x59c8b5);}else{const _0x282eda=_0xbc15f8[_0x537bec(0x45d)]();if(_0x58ae52['isIdentifier'](_0x282eda)&&_0x282eda['getText']()===_0x2445d5)return _0x537bec(0x72f);}}catch(_0x35b392){return _0x5e6299(_0x537bec(0x5a6),_0x35b392);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('ceraph_init_auth_browser',_0x3ee7d6(0x301),{'token':_0x161c47[_0x3ee7d6(0x7fd)]()[_0x3ee7d6(0x4ac)]()['describe'](_0x3ee7d6(0x9a0))},async({token:_0x491b3c},_0x364130)=>{try{const _0x495392=await _0xd9bac1({'signal':_0x364130['signal'],'token':_0x491b3c});return _0x44ee80(_0x495392);}catch(_0x315aed){return _0x5e6299('ceraph_init_auth_browser',_0x315aed);}});async function _0xba6d72(_0x4328bb){const _0x33e238=_0x3ee7d6,_0x5a0af4=_0x33e238(0x6ec),_0x1cf336='Pro\x20·\x20$10/mo\x20—\x20AI\x20flow\x20testing\x20on\x20your\x20real\x20device.\x20Sign\x20in\x20to\x20start.',_0x357ddb=_0x33e238(0x98e);let _0x4b86a4=_0x4328bb['tier'];if(_0x4b86a4)await _0x4107c4(_0x4b86a4)[_0x33e238(0x4ba)](()=>void 0x0);else{const _0x58de61=await _0x3fccb9()['catch'](()=>null);_0x4b86a4=_0x58de61?.['tier'];}if(!_0x4b86a4)return{'status':'needs-tier','question':_0x33e238(0x378),'options':[{'tier':_0x33e238(0x3fa),'label':_0x5a0af4},{'tier':_0x33e238(0x1b6),'label':_0x1cf336}],'detailsUrl':_0x357ddb,'hint':'Re-call\x20ceraph_init_select_tier\x20with\x20the\x20user\x27s\x20chosen\x20{\x20tier\x20}.\x20Share\x20detailsUrl\x20if\x20the\x20user\x20wants\x20more\x20about\x20the\x20plans.'};if(_0x4b86a4===_0x33e238(0x3fa))return{'status':_0x33e238(0x92b),'tier':_0x33e238(0x3fa),'message':'Starter\x20selected\x20—\x20local\x20build,\x20run,\x20and\x20device\x20tools\x20are\x20ready.\x20No\x20sign-in\x20needed.\x20To\x20add\x20AI\x20flow\x20testing\x20on\x20a\x20real\x20device\x20later,\x20re-call\x20this\x20tool\x20with\x20{\x20tier:\x20\x27pro\x27\x20}.'};const _0x1f04f2=await _0x9b2b8c()[_0x33e238(0x4ba)](()=>null);if(!_0x1f04f2?.[_0x33e238(0x315)])return{'status':'needs-auth','tier':_0x33e238(0x1b6),'authUrl':_0x58f401({'intent':'pro'}),'message':'Pro\x20requires\x20sign-in.\x20Surface\x20the\x20authUrl\x20to\x20the\x20user,\x20have\x20them\x20paste\x20the\x20token\x20it\x20issues,\x20then\x20call\x20ceraph_init_auth_browser\x20with\x20that\x20token.\x20After\x20sign-in,\x20re-call\x20ceraph_init_select_tier\x20to\x20continue.'};const _0x164d6f=await _0x590cfe()[_0x33e238(0x4ba)](()=>![]);if(!_0x164d6f)return{'status':'needs-checkout','tier':'pro','checkoutUrl':_0x357ddb,'message':'Selecting\x20Pro\x20isn\x27t\x20the\x20same\x20as\x20being\x20Pro.\x20Complete\x20checkout\x20at\x20'+_0x357ddb+_0x33e238(0x959)};return{'status':'pro-ready','tier':'pro','message':'Pro\x20is\x20active\x20on\x20this\x20account.\x20AI\x20flow\x20testing\x20on\x20your\x20real\x20device\x20is\x20unlocked.'};}_0x14f67c[_0x3ee7d6(0x8dc)](_0x3ee7d6(0x949),'Select\x20the\x20Ceraph\x20plan\x20and\x20drive\x20Pro\x20onboarding.\x20Call\x20with\x20no\x20args\x20to\x20get\x20the\x20two\x20plan\x20options\x20({\x20status:\x20\x27needs-tier\x27\x20});\x20call\x20with\x20{\x20tier:\x20\x27starter\x27\x20}\x20for\x20the\x20free\x20local\x20toolset\x20({\x20status:\x20\x27starter-ready\x27\x20});\x20call\x20with\x20{\x20tier:\x20\x27pro\x27\x20}\x20to\x20start\x20Pro\x20setup.\x20The\x20Pro\x20path\x20is\x20a\x20state\x20machine\x20resolved\x20fresh\x20each\x20call:\x20not\x20signed\x20in\x20→\x20{\x20status:\x20\x27needs-auth\x27,\x20authUrl\x20}\x20(sign\x20in\x20via\x20ceraph_init_auth_browser,\x20then\x20re-call);\x20signed\x20in\x20but\x20not\x20yet\x20paid\x20→\x20{\x20status:\x20\x27needs-checkout\x27,\x20checkoutUrl\x20}\x20(selecting\x20Pro\x20is\x20NOT\x20being\x20Pro\x20—\x20complete\x20checkout,\x20then\x20re-call);\x20paid\x20→\x20{\x20status:\x20\x27pro-ready\x27\x20}.\x20Re-calling\x20re-checks\x20server-side,\x20so\x20an\x20abandoned\x20then-completed\x20checkout\x20self-heals.\x20For\x20a\x20complete\x20install\x20(this\x20tier\x20step\x20plus\x20every\x20other\x20phase),\x20call\x20`ceraph_init`\x20instead.',{'tier':_0x161c47[_0x3ee7d6(0x499)]([_0x3ee7d6(0x3fa),_0x3ee7d6(0x1b6)])[_0x3ee7d6(0x4ac)]()['describe']('The\x20plan\x20the\x20user\x20chose.\x20Omit\x20on\x20the\x20first\x20call\x20to\x20receive\x20the\x20two\x20options\x20to\x20surface.')},async({tier:_0x1cb670})=>{const _0x1790b0=_0x3ee7d6;try{const _0x43416e=await _0xba6d72({'tier':_0x1cb670});return _0x44ee80(_0x43416e);}catch(_0x2cb795){return _0x5e6299(_0x1790b0(0x949),_0x2cb795);}}),_0x14f67c['tool']('ceraph_init_scan_camera','AST-scan\x20the\x20project\x20for\x20<CameraView>\x20usages\x20(from\x20expo-camera).\x20Returns\x20each\x20usage\x20with\x20its\x20file\x20path,\x20line,\x20suggested\x20imageKey\x20(heuristic),\x20and\x20~30\x20lines\x20of\x20surrounding\x20code\x20so\x20the\x20AI\x20can\x20reason\x20about\x20what\x20to\x20put\x20in\x20imageKey.\x20The\x20AI\x20should\x20override\x20the\x20suggestion\x20based\x20on\x20context\x20(e.g.\x20a\x20`project.type\x20===\x20\x27uppercase\x27`\x20branch\x20nearby\x20implies\x20imageKey=\x27letter-uppercase\x27).',{'projectDir':_0x161c47['string']()['optional']()},async({projectDir:_0x3d4946})=>{const _0x5a8e6a=_0x3ee7d6;try{const _0x35d214=await _0x574a8e(_0x3d4946??_0x59dcf1);return _0x44ee80(_0x35d214);}catch(_0x54e483){return _0x5e6299(_0x5a8e6a(0x77b),_0x54e483);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('ceraph_init_replace_camera','Apply\x20ONE\x20<CameraView>\x20→\x20<CeraphCamera\x20imageKey=\x22...\x22>\x20AST\x20replacement.\x20The\x20AI\x20provides\x20the\x20imageKey\x20based\x20on\x20the\x20context\x20it\x20saw\x20in\x20scan_camera\x27s\x20surroundingCode.\x20Also\x20valid\x20for\x20an\x20EXISTING\x20<CeraphCamera\x20/>\x20that\x27s\x20still\x20uninitialized\x20(no\x20imageKey)\x20—\x20call\x20with\x20the\x20same\x20filePath/line\x20to\x20set\x20the\x20imageKey\x20on\x20the\x20tag.\x0a\x0aAccepted\x20imageKey\x20values:\x0a\x20\x20-\x20\x22default\x22\x20—\x20bundled\x201024x1024\x20black\x20PNG.\x20Right\x20for\x20tests\x20that\x20don\x27t\x20care\x20about\x20image\x20content\x20(form\x20submits,\x20file\x20uploads,\x20permission\x20flows).\x0a\x20\x20-\x20\x22<scenario>\x22\x20(lowercase-dashes)\x20—\x20a\x20specific\x20user-supplied\x20image.\x20Drop\x20the\x20file\x20at\x20.ceraph/camera-images/<scenario>.{jpg,png,webp}\x20(or\x20write\x20it\x20via\x20`ceraph_add_camera_image`)\x20before\x20flows\x20execute.\x0a\x20\x20-\x20\x22@runtime\x22\x20(or\x20any\x20value\x20starting\x20with\x20@)\x20—\x20declares\x20runtime\x20control\x20of\x20the\x20image.\x20The\x20planner\x20or\x20a\x20deep-link\x20push\x20picks\x20the\x20image\x20per-step\x20at\x20flow\x20time.\x20Use\x20when\x20one\x20camera\x20screen\x20feeds\x20different\x20scenarios\x20across\x20flows.\x0a\x0aAlso\x20adds\x20the\x20shim\x20import\x20and\x20trims\x20`CameraView`\x20from\x20the\x20expo-camera\x20import\x20when\x20no\x20JSX\x20uses\x20it\x20anymore.\x20Idempotent\x20—\x20returns\x20`{\x20already:\x20true\x20}`\x20when\x20the\x20line\x20is\x20already\x20CeraphCamera\x20with\x20the\x20same\x20imageKey.',{'filePath':_0x161c47['string']()[_0x3ee7d6(0x9de)]('Absolute\x20path\x20of\x20the\x20source\x20file.'),'line':_0x161c47[_0x3ee7d6(0x513)]()['int']()[_0x3ee7d6(0x3cd)]()[_0x3ee7d6(0x9de)](_0x3ee7d6(0x164)),'imageKey':_0x161c47['string']()[_0x3ee7d6(0x71d)](0x1)['describe']('The\x20imageKey\x20to\x20use.\x20Either\x20\x22default\x22\x20(bundled\x20black\x20PNG),\x20a\x20user-defined\x20lowercase-dashes\x20key\x20matching\x20.ceraph/camera-images/<key>.{jpg,png,webp},\x20or\x20\x22@runtime\x22\x20/\x20any\x20\x22@\x22-prefixed\x20sentinel\x20for\x20runtime-controlled\x20selection.'),'projectDir':_0x161c47[_0x3ee7d6(0x7fd)]()['optional']()},async({filePath:_0xf8fbec,line:_0x38f9cf,imageKey:_0x4dc8da,projectDir:_0x44a76d})=>{const _0x45a7fd=_0x3ee7d6;try{const _0x23856c=await _0x5c99ef(_0x44a76d??_0x59dcf1,{'filePath':_0xf8fbec,'line':_0x38f9cf,'imageKey':_0x4dc8da});return _0x44ee80(_0x23856c);}catch(_0x2d85e8){return _0x5e6299(_0x45a7fd(0x273),_0x2d85e8);}}),_0x14f67c['tool']('ceraph_init_inject_boot','AST-inject\x20the\x20`installCeraph({\x20readTestidConfig\x20})`\x20seam\x20(plus\x20the\x20shim\x20+\x20react\x20imports)\x20into\x20the\x20root\x20layout\x20(app/_layout.tsx\x20for\x20Expo\x20Router,\x20App.tsx\x20for\x20bare\x20RN)\x20AND\x20wire\x20`@ceraph/react-native-mcp/babel-plugin`\x20into\x20babel.config\x20+\x20write\x20the\x20`.ceraph/testid-config.json`\x20sentinel\x20—\x20so\x20testID\x20injection\x20actually\x20activates.\x20Idempotent\x20—\x20returns\x20`{\x20already:\x20true\x20}`\x20when\x20the\x20seam\x20is\x20already\x20present;\x20the\x20`babelConfig`\x20field\x20reports\x20the\x20babel\x20wiring\x20outcome\x20(added\x20/\x20already-present\x20/\x20created\x20/\x20needs-manual).',{'projectDir':_0x161c47[_0x3ee7d6(0x7fd)]()['optional']()},async({projectDir:_0x37e47b})=>{const _0x314c44=_0x3ee7d6;try{const _0xc0b00d=await _0x1ed8ab(_0x37e47b??_0x59dcf1);return _0x44ee80(_0xc0b00d);}catch(_0x40f48e){return _0x5e6299(_0x314c44(0x643),_0x40f48e);}}),_0x14f67c[_0x3ee7d6(0x8dc)]('ceraph_init_register_scheme',_0x3ee7d6(0x6a1),{'projectDir':_0x161c47[_0x3ee7d6(0x7fd)]()['optional']()},async({projectDir:_0x5dd044})=>{const _0x19b781=_0x3ee7d6;try{const _0x5363af=await _0x46b911(_0x5dd044??_0x59dcf1);return _0x44ee80(_0x5363af);}catch(_0x3403c0){return _0x5e6299(_0x19b781(0x815),_0x3403c0);}}),_0x14f67c['tool']('ceraph_init_setup_mcp_clients','Write\x20the\x20MCP\x20server\x20config\x20block\x20to\x20every\x20supported\x20editor\x27s\x20local\x20config\x20file:\x20.mcp.json\x20(Claude\x20Code),\x20.cursor/mcp.json\x20(Cursor),\x20.codex/config.toml\x20(Codex),\x20.vscode/mcp.json\x20(VS\x20Code).\x20A\x20single\x20react-native-mcp\x20entry\x20(this\x20package)\x20is\x20written\x20per\x20file\x20—\x20it\x20owns\x20the\x20full\x20device-interaction\x20layer\x20(screen\x20taps/swipes,\x20app\x20lifecycle,\x20device\x20control)\x20and\x20talks\x20to\x20WebDriverAgent\x20directly.\x20Also\x20pre-approves\x20the\x20server\x20in\x20Claude\x20Code\x27s\x20project\x20scope\x20(.claude/settings.local.json\x20`enabledMcpjsonServers`)\x20so\x20the\x20ceraph_*\x20tools\x20load\x20without\x20the\x20one-time\x20trust\x20prompt.\x20Returns\x20{\x20written:\x20string[],\x20skipped:\x20string[],\x20preserved:\x20{name,reason}[],\x20claudePreApproval\x20}.\x20Skip\x20=\x20already\x20had\x20the\x20react-native-mcp\x20entry.\x20Preserved\x20=\x20the\x20existing\x20config\x20was\x20malformed\x20JSON\x20or\x20an\x20unexpected\x20shape,\x20so\x20it\x20was\x20left\x20untouched\x20(no\x20overwrite);\x20surface\x20the\x20reason\x20so\x20the\x20user\x20fixes\x20it\x20by\x20hand\x20and\x20re-runs.\x20NOTE:\x20this\x20writes\x20ONLY\x20the\x20MCP-client\x20configs\x20—\x20it\x20does\x20NOT\x20install\x20the\x20Claude\x20hooks\x20or\x20.gitignore\x20entries.\x20For\x20a\x20complete\x20install\x20call\x20`ceraph_init`;\x20use\x20this\x20tool\x20standalone\x20only\x20to\x20(re)write\x20a\x20single\x20client\x27s\x20config.',{'projectDir':_0x161c47[_0x3ee7d6(0x7fd)]()['optional']()[_0x3ee7d6(0x9de)]('Optional\x20project\x20to\x20write\x20client\x20configs\x20for.\x20Defaults\x20to\x20where\x20the\x20server\x20launched.\x20A\x20subpackage\x20of\x20the\x20launch\x20dir\x20resolves\x20to\x20the\x20launch\x20root\x20(monorepo);\x20a\x20path\x20outside\x20it\x20writes\x20to\x20that\x20project.')},async({projectDir:_0x4b82b2})=>{const _0x28c11c=_0x3ee7d6;try{const _0x51eb4f=await _0x5c8c10(_0x423853(_0x4b82b2??_0x59dcf1,_0x1e1264));return _0x44ee80(_0x51eb4f);}catch(_0x340ba3){if(_0x28c11c(0x895)!=='JcYxn'){const _0x1362f5=this[_0x28c11c(0x375)](_0x51d430);if(!_0x1c3d2d['has'](_0x1362f5)){_0x4a1c52['add'](_0x1362f5),_0x14ce27[_0x28c11c(0x496)]({'message':_0x12c049['message'],'stack':_0x18c32b['stack']}),_0x44c825['push'](_0x3a6fd6);const _0x4d7ecf=this['classifyRuntimeEntry'](_0x8e4fea,_0x5ed3be['flowId']);if(_0x4d7ecf[_0x28c11c(0x89a)])_0x4455fb['push'](_0x4d7ecf['objective']);if(_0x4d7ecf['witness'])_0x27cb12[_0x28c11c(0x496)](_0x4d7ecf['witness']);if(_0x4d7ecf[_0x28c11c(0x53a)])_0x230358=!![];}}else return _0x5e6299('ceraph_init_setup_mcp_clients',_0x340ba3);}}),_0x14f67c['tool']('ceraph_init_monorepo_status','Inspect\x20the\x20project\x20root\x20for\x20monorepo\x20signals\x20(package.json\x20workspaces,\x20pnpm-workspace.yaml,\x20lerna.json)\x20and\x20return\x20any\x20RN/Expo\x20subpackages\x20found.\x20If\x20the\x20cwd\x20is\x20itself\x20an\x20RN\x20app,\x20`rootIsRnApp:\x20true`\x20and\x20`matches:\x20[]`.\x20Use\x20this\x20before\x20calling\x20other\x20init\x20tools\x20—\x20when\x20matches.length\x20===\x201,\x20pass\x20that\x20absPath\x20as\x20projectDir\x20to\x20every\x20subsequent\x20ceraph_init_*\x20call.',{'projectDir':_0x161c47['string']()['optional']()},async({projectDir:_0xbaf63a})=>{const _0x151b7f=_0x3ee7d6;try{if(_0x151b7f(0x11d)===_0x151b7f(0x44f)){const _0x50aae2=_0x43d6b8(_0xcd8f31[_0x151b7f(0x85c)]??'');return _0x3a2ee9[_0x151b7f(0x2a5)](_0x3ac5de=>_0x3ac5de['test'](_0x50aae2));}else{const _0x332633=await _0x254ce6(_0xbaf63a??_0x59dcf1);return _0x44ee80(_0x332633);}}catch(_0x2e954a){return _0x5e6299('ceraph_init_monorepo_status',_0x2e954a);}}),_0x27ac7d(_0x14f67c),_0x2ba9f1(_0x14f67c,_0x50b852);async function _0x52d329(){const _0x10707e=_0x3ee7d6;try{const _0x12af19=0xe*0x18*0x3c*0x3c*0x3e8,_0x3edebe=0x400*0x400*0x400,{swept:_0x37af39,freedBytes:_0x376db6}=await _0x2fb690[_0x10707e(0x98c)](_0x12af19),{evicted:_0xd9ccfe,freedBytes:_0x2c32e1}=await _0x2fb690['enforceCapacityCap'](_0x3edebe),_0x6fceeb=(_0x376db6/(0x400*0x400))['toFixed'](0x1),_0x391efc=(_0x2c32e1/(0x400*0x400))[_0x10707e(0x65d)](0x1);console[_0x10707e(0x125)](_0x10707e(0x4ea)+_0x37af39['length']+'\x20runs\x20('+_0x6fceeb+'\x20MB)\x20older\x20than\x2014d;\x20evicted\x20'+_0xd9ccfe['length']+_0x10707e(0x6fb)+_0x391efc+'\x20MB)\x20over\x201GB\x20cap');}catch(_0x12ad38){console['error']('[runs-store]\x20retention\x20sweep\x20failed\x20(non-fatal):\x20'+(_0x12ad38 instanceof Error?_0x12ad38['message']:String(_0x12ad38)));}}function _0x16eb2c(){const _0x3ae044=_0x3ee7d6;if(!process.env.CERAPH_SIGNAL_HOST)try{const _0x602bb=_0x7b4852();_0x602bb?(process.env.CERAPH_SIGNAL_HOST=_0x602bb[_0x3ae044(0x26c)],console[_0x3ae044(0x125)]('[react-native-mcp]\x20CERAPH_SIGNAL_HOST\x20auto-detected:\x20'+_0x602bb['address']+'\x20('+_0x602bb[_0x3ae044(0x920)]+',\x20'+_0x602bb['kind']+').\x20To\x20persist\x20across\x20shells,\x20run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20—\x20it\x20adds\x20the\x20export\x20to\x20~/.zshrc.')):console[_0x3ae044(0x125)](_0x3ae044(0x974));}catch(_0x341da5){console['error'](_0x3ae044(0x823)+(_0x341da5 instanceof Error?_0x341da5['message']:String(_0x341da5)));}else console[_0x3ae044(0x125)](_0x3ae044(0x98a)+process.env.CERAPH_SIGNAL_HOST);}async function _0xf05776(){const _0x46995e=_0x3ee7d6;_0x16eb2c();const _0x29120a=await _0x32bb67[_0x46995e(0x41b)](),_0x233220=_0x9a373a(_0x29120a);_0xe23307=_0x233220[_0x46995e(0x9d0)],console['error'](_0x46995e(0x1f1)+_0x233220['message']);!_0x32bb67[_0x46995e(0x5b3)]()&&_0x230cf7();_0x233220['fatal']&&process['exit'](0x1);const _0x277827=new StdioServerTransport();await _0x14f67c['connect'](_0x277827),console['error'](_0x46995e(0x2ef)),void _0x9b2b8c()['catch'](()=>null)[_0x46995e(0x4cf)](_0x193716=>{!_0x193716?.['accessToken']&&console['error']('[react-native-mcp]\x20Not\x20signed\x20in.\x20Run\x20`npx\x20@ceraph/react-native-mcp\x20init`\x20to\x20finish\x20setup\x20—\x20sign-in\x20(required\x20for\x20the\x20flow\x20tools),\x20the\x20runtime-error\x20hook\x20that\x20surfaces\x20app\x20errors\x20in\x20your\x20chat,\x20and\x20your\x20Mac\x27s\x20LAN\x20IP.\x20Build\x20/\x20run\x20/\x20device\x20tools\x20work\x20without\x20it.');}),void _0x52d329(),void((async()=>{const _0x2384d2=_0x46995e;if(_0x2384d2(0x2d8)===_0x2384d2(0x2d8)){const _0x1986dd=await _0x45c4be()['catch'](()=>null);_0xe15240(_0x1986dd);}else _0xbc5f5d=_0x333e15['ok'];})()),void _0x3a93e6({'workingDir':_0x59dcf1}),void((async()=>{const _0xc1ed85=_0x46995e;try{const _0x51c32b=await _0x53bedf(_0x59dcf1);if(!_0x51c32b){_0x50b852['setAdapter'](null);return;}const _0x2f975b=await _0xf580df(_0x59dcf1,_0x51c32b);_0x50b852[_0xc1ed85(0x4c0)](_0x2f975b),console[_0xc1ed85(0x125)]('[react-native-mcp]\x20Auth-bypass\x20provider\x20wired:\x20'+_0x51c32b['provider']+_0xc1ed85(0x379)+_0x51c32b[_0xc1ed85(0x5b2)]+')');}catch(_0x501a11){_0x50b852['setAdapter'](null);const _0x7ae58a=_0x501a11 instanceof Error?_0x501a11['message']:String(_0x501a11);console[_0xc1ed85(0x125)]('[react-native-mcp]\x20Auth-bypass\x20provider\x20detection\x20failed\x20(non-fatal):\x20'+_0x7ae58a);}})()),void _0x50b852['sweepExpired']()[_0x46995e(0x4ba)](_0x228e3a=>{const _0x4c0b4b=_0x46995e;if(_0x4c0b4b(0x511)===_0x4c0b4b(0x511))console['error']('[react-native-mcp]\x20Managed\x20test-user\x20sweep\x20failed\x20(non-fatal):\x20'+(_0x228e3a instanceof Error?_0x228e3a[_0x4c0b4b(0x92e)]:String(_0x228e3a)));else{const _0x192fab=[..._0xb0f2f2,_0xf6163];return _0x8ce560[_0x4c0b4b(0x389)]=_0x192fab,{'action':'added','scheme':_0x192fab,'previousScheme':_0x26a234,'nextScheme':_0x192fab};}}),_0x355fbb?.[_0x46995e(0x41b)]();const _0x501a3e=async()=>{const _0x4dda7b=_0x46995e;_0x355fbb?.['stop'](),_0x81af9b&&(clearInterval(_0x81af9b),_0x81af9b=void 0x0),await Promise['all']([_0x1c8370['shutdown']()[_0x4dda7b(0x4ba)](()=>void 0x0),_0x32bb67[_0x4dda7b(0x2bf)]()[_0x4dda7b(0x4ba)](()=>void 0x0),_0x29f0ce['stop']()[_0x4dda7b(0x4ba)](()=>void 0x0),_0x5409fe['stop']()['catch'](()=>void 0x0),_0x8e538a[_0x4dda7b(0x2bf)]()['catch'](()=>void 0x0)]);};process['on'](_0x46995e(0x518),()=>{void _0x501a3e()['then'](()=>process['exit'](0x0));}),process['on']('SIGTERM',()=>{const _0x17ba6c=_0x46995e;void _0x501a3e()[_0x17ba6c(0x4cf)](()=>process[_0x17ba6c(0x41e)](0x0));});}process.env.CERAPH_NO_AUTOSTART!=='1'&&_0xf05776()[_0x3ee7d6(0x4ba)](_0x265b4d=>{const _0x5d3ad3=_0x3ee7d6;console[_0x5d3ad3(0x125)](_0x5d3ad3(0x4d3),_0x265b4d),process['exit'](0x1);});export{_0xd9289f as buildRunResultContent,_0x4a850b as stripScreenshotBlobs};