@enricai/barnacle 1.6.11 → 1.6.13
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.
- package/README.md +113 -9
- package/dist/api/schemas/submissions.d.ts +14 -0
- package/dist/api/schemas/submissions.d.ts.map +1 -1
- package/dist/api/schemas/submissions.js +1 -0
- package/dist/api/schemas/submissions.js.map +1 -1
- package/dist/config.d.ts +33 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/lib/telemetry/beacon-capture.d.ts +45 -2
- package/dist/lib/telemetry/beacon-capture.d.ts.map +1 -1
- package/dist/lib/telemetry/beacon-capture.js +36 -0
- package/dist/lib/telemetry/beacon-capture.js.map +1 -1
- package/dist/lib/telemetry/reconciliation-record.d.ts +50 -2
- package/dist/lib/telemetry/reconciliation-record.d.ts.map +1 -1
- package/dist/lib/telemetry/reconciliation-record.js +60 -7
- package/dist/lib/telemetry/reconciliation-record.js.map +1 -1
- package/dist/lib/telemetry/reconciliation-source.d.ts +7 -1
- package/dist/lib/telemetry/reconciliation-source.d.ts.map +1 -1
- package/dist/lib/telemetry/reconciliation-source.js +21 -5
- package/dist/lib/telemetry/reconciliation-source.js.map +1 -1
- package/dist/lib/telemetry/run-telemetry.d.ts +67 -0
- package/dist/lib/telemetry/run-telemetry.d.ts.map +1 -0
- package/dist/lib/telemetry/run-telemetry.js +55 -0
- package/dist/lib/telemetry/run-telemetry.js.map +1 -0
- package/dist/lib/telemetry/submission-capture.d.ts +11 -4
- package/dist/lib/telemetry/submission-capture.d.ts.map +1 -1
- package/dist/lib/telemetry/submission-capture.js +1 -0
- package/dist/lib/telemetry/submission-capture.js.map +1 -1
- package/dist/lib/telemetry/submission-reader.d.ts +11 -3
- package/dist/lib/telemetry/submission-reader.d.ts.map +1 -1
- package/dist/lib/telemetry/submission-reader.js +32 -8
- package/dist/lib/telemetry/submission-reader.js.map +1 -1
- package/dist/lib/tracking-click.d.ts.map +1 -1
- package/dist/lib/tracking-click.js +19 -0
- package/dist/lib/tracking-click.js.map +1 -1
- package/dist/plugins/loader.d.ts +20 -0
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +94 -17
- package/dist/plugins/loader.js.map +1 -1
- package/dist/scraper/deep-locator-actuate.d.ts +94 -0
- package/dist/scraper/deep-locator-actuate.d.ts.map +1 -0
- package/dist/scraper/deep-locator-actuate.js +216 -0
- package/dist/scraper/deep-locator-actuate.js.map +1 -0
- package/dist/scraper/deep-locator-candidates.d.ts +105 -18
- package/dist/scraper/deep-locator-candidates.d.ts.map +1 -1
- package/dist/scraper/deep-locator-candidates.js +238 -46
- package/dist/scraper/deep-locator-candidates.js.map +1 -1
- package/dist/scraper/deep-locator-click.d.ts +71 -0
- package/dist/scraper/deep-locator-click.d.ts.map +1 -0
- package/dist/scraper/deep-locator-click.js +71 -0
- package/dist/scraper/deep-locator-click.js.map +1 -0
- package/dist/scraper/deep-locator-fake.d.ts +344 -14
- package/dist/scraper/deep-locator-fake.d.ts.map +1 -1
- package/dist/scraper/deep-locator-fake.js +509 -7
- package/dist/scraper/deep-locator-fake.js.map +1 -1
- package/dist/scraper/deep-locator-scan.d.ts +220 -0
- package/dist/scraper/deep-locator-scan.d.ts.map +1 -0
- package/dist/scraper/deep-locator-scan.js +386 -0
- package/dist/scraper/deep-locator-scan.js.map +1 -0
- package/dist/scraper/fake-timer-advance.d.ts +47 -0
- package/dist/scraper/fake-timer-advance.d.ts.map +1 -0
- package/dist/scraper/fake-timer-advance.js +44 -0
- package/dist/scraper/fake-timer-advance.js.map +1 -0
- package/dist/scraper/flow-runner.d.ts +36 -1
- package/dist/scraper/flow-runner.d.ts.map +1 -1
- package/dist/scraper/flow-runner.js +354 -56
- package/dist/scraper/flow-runner.js.map +1 -1
- package/dist/scraper/frame-target.d.ts +28 -0
- package/dist/scraper/frame-target.d.ts.map +1 -1
- package/dist/scraper/frame-target.js +30 -0
- package/dist/scraper/frame-target.js.map +1 -1
- package/dist/scraper/session-browserbase.d.ts +13 -0
- package/dist/scraper/session-browserbase.d.ts.map +1 -1
- package/dist/scraper/session-browserbase.js +29 -0
- package/dist/scraper/session-browserbase.js.map +1 -1
- package/dist/scraper/session-ip.d.ts +69 -0
- package/dist/scraper/session-ip.d.ts.map +1 -0
- package/dist/scraper/session-ip.js +88 -0
- package/dist/scraper/session-ip.js.map +1 -0
- package/dist/scraper/session-shared.d.ts +9 -0
- package/dist/scraper/session-shared.d.ts.map +1 -1
- package/dist/scraper/session-shared.js.map +1 -1
- package/dist/scraper/submit-control.d.ts +14 -2
- package/dist/scraper/submit-control.d.ts.map +1 -1
- package/dist/scraper/submit-control.js +33 -2
- package/dist/scraper/submit-control.js.map +1 -1
- package/dist/scripts/recon-browser.d.ts.map +1 -1
- package/dist/scripts/recon-browser.js +32 -0
- package/dist/scripts/recon-browser.js.map +1 -1
- package/dist/site-plugin.d.ts +20 -0
- package/dist/site-plugin.d.ts.map +1 -1
- package/dist/testing/integration-runner.d.ts.map +1 -1
- package/dist/testing/integration-runner.js +6 -7
- package/dist/testing/integration-runner.js.map +1 -1
- package/package.json +1 -1
package/dist/plugins/loader.js
CHANGED
|
@@ -4,9 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.SITE_PLUGINS = void 0;
|
|
7
|
+
exports.buildPluginContext = buildPluginContext;
|
|
7
8
|
exports.dispatch = dispatch;
|
|
8
9
|
exports.registerRoutes = registerRoutes;
|
|
9
10
|
const multipart_1 = __importDefault(require("@fastify/multipart"));
|
|
11
|
+
const date_fns_1 = require("date-fns");
|
|
10
12
|
const v4_1 = require("zod/v4");
|
|
11
13
|
const errors_1 = require("../api/errors");
|
|
12
14
|
const envelope_1 = require("../api/helpers/envelope");
|
|
@@ -16,6 +18,7 @@ const dispatch_metrics_1 = require("../lib/dispatch-metrics");
|
|
|
16
18
|
const errors_2 = require("../lib/errors");
|
|
17
19
|
const logging_1 = require("../lib/logging");
|
|
18
20
|
const beacon_capture_1 = require("../lib/telemetry/beacon-capture");
|
|
21
|
+
const run_telemetry_1 = require("../lib/telemetry/run-telemetry");
|
|
19
22
|
const submission_capture_1 = require("../lib/telemetry/submission-capture");
|
|
20
23
|
const tracking_click_1 = require("../lib/tracking-click");
|
|
21
24
|
const discover_1 = require("../plugins/discover");
|
|
@@ -58,6 +61,51 @@ function toApiError(err) {
|
|
|
58
61
|
return new errors_1.ScrapeFailureError(err.message);
|
|
59
62
|
return undefined;
|
|
60
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Builds the `SitePluginContext` core injects into every plugin call. Single
|
|
66
|
+
* shared factory for all three construction sites (`/run` route, extra
|
|
67
|
+
* routes, `runIntegrationJob`) so a new context member is a one-line change
|
|
68
|
+
* here instead of three drifting literals.
|
|
69
|
+
*/
|
|
70
|
+
function buildPluginContext(input) {
|
|
71
|
+
const { plugin, cfg, requestId, logger, baseUrl } = input;
|
|
72
|
+
return {
|
|
73
|
+
baseUrl: baseUrl ?? cfg.scraper.siteBaseUrls[plugin.meta.siteId] ?? plugin.meta.defaultBaseUrl ?? "",
|
|
74
|
+
logger,
|
|
75
|
+
config: cfg,
|
|
76
|
+
requestId,
|
|
77
|
+
metricsCollector: new dispatch_metrics_1.MetricsCollector(),
|
|
78
|
+
recordBeaconOutcome: (0, beacon_capture_1.createBeaconOutcomeRecorder)({ requestId, siteId: plugin.meta.siteId }),
|
|
79
|
+
telemetry: new run_telemetry_1.RunTelemetry(),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Wraps a session-scoped plugin call so the acquired session's identity and
|
|
84
|
+
* outbound IP are recorded onto `context.telemetry` regardless of whether the
|
|
85
|
+
* call succeeds or throws. `runWithSession` (`src/scraper/pool.ts`) creates
|
|
86
|
+
* and closes the `BrowserSession` entirely inside its own callback — this is
|
|
87
|
+
* the only place still holding a reference to it, so it is the only place
|
|
88
|
+
* that can still query `getOutboundIp()` before the session is gone.
|
|
89
|
+
* Tolerates a null/absent session (the hot path never acquires one; some
|
|
90
|
+
* pool test doubles pass null) and an absent `getOutboundIp` (Steel has no
|
|
91
|
+
* accessor) by recording `ip: null, ipCapturedAt: null` in either case.
|
|
92
|
+
*/
|
|
93
|
+
async function withSessionTelemetry(session, context, run) {
|
|
94
|
+
try {
|
|
95
|
+
return await run();
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
if (session) {
|
|
99
|
+
const ip = (await session.getOutboundIp?.()) ?? null;
|
|
100
|
+
context.telemetry.recordSession({
|
|
101
|
+
sessionId: session.sessionId,
|
|
102
|
+
provider: session.provider,
|
|
103
|
+
ip,
|
|
104
|
+
ipCapturedAt: ip ? (0, date_fns_1.formatISO)(new Date()) : null,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
61
109
|
/**
|
|
62
110
|
* Runs the hot path (when available) + fallback pipeline for a single
|
|
63
111
|
* submission. Extracted so dispatch() reads as a linear "run pipeline,
|
|
@@ -70,7 +118,7 @@ async function runPluginPipeline(plugin, payload, context, options) {
|
|
|
70
118
|
(0, metrics_1.recordFallbackActivation)(plugin.meta.siteId);
|
|
71
119
|
(0, dd_metrics_1.recordDdFallback)(plugin.meta.siteId);
|
|
72
120
|
}
|
|
73
|
-
return (await (0, pool_1.runWithSession)((session) => plugin.execute(payload, session, context), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
|
|
121
|
+
return (await (0, pool_1.runWithSession)((session) => withSessionTelemetry(session, context, () => plugin.execute(payload, session, context)), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
|
|
74
122
|
advancedStealth: plugin.meta.advancedStealth,
|
|
75
123
|
...(plugin.meta.browserbaseSessionCreateParams && {
|
|
76
124
|
browserbaseSessionCreateParams: plugin.meta.browserbaseSessionCreateParams,
|
|
@@ -98,7 +146,7 @@ async function runPluginPipeline(plugin, payload, context, options) {
|
|
|
98
146
|
logger.warn(`hot path failed for ${plugin.meta.siteId} (${httpErr.constructor.name}): ${httpErr.message} — engaging browser fallback`);
|
|
99
147
|
(0, metrics_1.recordFallbackActivation)(plugin.meta.siteId);
|
|
100
148
|
(0, dd_metrics_1.recordDdFallback)(plugin.meta.siteId);
|
|
101
|
-
return (await (0, pool_1.runWithSession)((session) => plugin.execute(payload, session, context), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
|
|
149
|
+
return (await (0, pool_1.runWithSession)((session) => withSessionTelemetry(session, context, () => plugin.execute(payload, session, context)), { onRetry: plugin.onRetry, maxAttempts: plugin.meta.maxAttempts }, plugin.meta.taskTimeoutMs, {
|
|
102
150
|
advancedStealth: plugin.meta.advancedStealth,
|
|
103
151
|
...(plugin.meta.browserbaseSessionCreateParams && {
|
|
104
152
|
browserbaseSessionCreateParams: plugin.meta.browserbaseSessionCreateParams,
|
|
@@ -145,6 +193,33 @@ async function emitBeaconSafely(input) {
|
|
|
145
193
|
logger.warn(`beacon event emit failed: ${(0, errors_2.toErrorMessage)(err)}`);
|
|
146
194
|
}
|
|
147
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Merges a plugin's pre-run `extractJoinKeys(payload)` result with whatever
|
|
198
|
+
* it attached mid-run via `context.telemetry.addJoinKeys()`, run-attached
|
|
199
|
+
* fields winning on collision. Stays `null` (not `{}`) when both sources are
|
|
200
|
+
* empty so the envelope's `joinKeys: null` precedent holds for a plugin that
|
|
201
|
+
* uses neither mechanism.
|
|
202
|
+
*/
|
|
203
|
+
function mergeJoinKeys(extracted, attached) {
|
|
204
|
+
if (!extracted && !attached)
|
|
205
|
+
return null;
|
|
206
|
+
return { ...extracted, ...attached };
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Maps `RunTelemetry`'s collector-shaped session record (`sessionId`) onto
|
|
210
|
+
* the durable envelope's persisted shape (`id`) documented in
|
|
211
|
+
* `docs/telemetry-and-judging.md`'s "session" field.
|
|
212
|
+
*/
|
|
213
|
+
function toEnvelopeSession(session) {
|
|
214
|
+
if (!session)
|
|
215
|
+
return null;
|
|
216
|
+
return {
|
|
217
|
+
id: session.sessionId,
|
|
218
|
+
provider: session.provider,
|
|
219
|
+
ip: session.ip,
|
|
220
|
+
ipCapturedAt: session.ipCapturedAt,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
148
223
|
/**
|
|
149
224
|
* Runs a single plugin submission end-to-end. Tries the direct-HTTP hot path
|
|
150
225
|
* first when the plugin supplies `executeHttp`; on `HttpSchemaError`,
|
|
@@ -175,7 +250,7 @@ async function dispatch(plugin, payload, context, options = {}) {
|
|
|
175
250
|
const hasHttpPath = !!plugin.executeHttp && !options.forceFallback;
|
|
176
251
|
const pathTag = hasHttpPath ? "http" : "browser";
|
|
177
252
|
const ddTags = { site: plugin.meta.siteId, path: pathTag };
|
|
178
|
-
const
|
|
253
|
+
const extractedJoinKeys = plugin.extractJoinKeys?.(payload) ?? null;
|
|
179
254
|
const managesOwnTracking = !!plugin.extractJoinKeys;
|
|
180
255
|
(0, dd_metrics_1.recordDdAttempt)(ddTags);
|
|
181
256
|
try {
|
|
@@ -193,10 +268,13 @@ async function dispatch(plugin, payload, context, options = {}) {
|
|
|
193
268
|
(0, dd_metrics_1.recordDdDuration)(ddTags, durationMs);
|
|
194
269
|
const metrics = context.metricsCollector.finalize(pathTag);
|
|
195
270
|
result.metrics = metrics;
|
|
271
|
+
const successSnapshot = context.telemetry.snapshot();
|
|
272
|
+
const joinKeys = mergeJoinKeys(extractedJoinKeys, successSnapshot.joinKeys);
|
|
196
273
|
await emitEnvelopeSafely({
|
|
197
274
|
siteId: plugin.meta.siteId,
|
|
198
275
|
requestId: context.requestId,
|
|
199
276
|
joinKeys,
|
|
277
|
+
session: toEnvelopeSession(successSnapshot.session),
|
|
200
278
|
inboundPayload: payload,
|
|
201
279
|
status: "submitted",
|
|
202
280
|
auditPayload: result.auditPayload ?? result.data,
|
|
@@ -236,10 +314,13 @@ async function dispatch(plugin, payload, context, options = {}) {
|
|
|
236
314
|
(0, dd_metrics_1.recordDdFailure)(failureTags);
|
|
237
315
|
(0, dd_metrics_1.recordDdDuration)(ddTags, durationMs);
|
|
238
316
|
const metrics = context.metricsCollector.finalize(pathTag);
|
|
317
|
+
const errorSnapshot = context.telemetry.snapshot();
|
|
318
|
+
const joinKeys = mergeJoinKeys(extractedJoinKeys, errorSnapshot.joinKeys);
|
|
239
319
|
await emitEnvelopeSafely({
|
|
240
320
|
siteId: plugin.meta.siteId,
|
|
241
321
|
requestId: context.requestId,
|
|
242
322
|
joinKeys,
|
|
323
|
+
session: toEnvelopeSession(errorSnapshot.session),
|
|
243
324
|
inboundPayload: payload,
|
|
244
325
|
status: "error",
|
|
245
326
|
auditPayload: null,
|
|
@@ -302,7 +383,6 @@ async function registerRoutes(app, cfg, plugins) {
|
|
|
302
383
|
}
|
|
303
384
|
for (const plugin of plugins) {
|
|
304
385
|
const routePath = plugin.meta.routeOverride ?? `/v1/${plugin.meta.siteId}/run`;
|
|
305
|
-
const baseUrl = cfg.scraper.siteBaseUrls[plugin.meta.siteId] ?? plugin.meta.defaultBaseUrl ?? "";
|
|
306
386
|
app.post(routePath, {
|
|
307
387
|
onRequest: [app.authenticate],
|
|
308
388
|
schema: {
|
|
@@ -312,13 +392,12 @@ async function registerRoutes(app, cfg, plugins) {
|
|
|
312
392
|
},
|
|
313
393
|
}, async (request) => {
|
|
314
394
|
const forceFallback = request.headers["x-barnacle-execution"] === "browser";
|
|
315
|
-
const context = {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
config: cfg,
|
|
395
|
+
const context = buildPluginContext({
|
|
396
|
+
plugin,
|
|
397
|
+
cfg,
|
|
319
398
|
requestId: request.id,
|
|
320
|
-
|
|
321
|
-
};
|
|
399
|
+
logger: (0, logging_1.extendLogger)(request.log),
|
|
400
|
+
});
|
|
322
401
|
const result = await dispatch(plugin, request.body, context, { forceFallback });
|
|
323
402
|
return (0, envelope_1.successEnvelope)({
|
|
324
403
|
...result.data,
|
|
@@ -389,14 +468,12 @@ function registerExtraRoutes(app, cfg, plugins) {
|
|
|
389
468
|
// above); shared routes defer body validation to here, against the
|
|
390
469
|
// resolved plugin's own contract.
|
|
391
470
|
const body = shared && route.bodySchema ? route.bodySchema.parse(request.body) : request.body;
|
|
392
|
-
const
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
logger: (0, logging_1.extendLogger)(request.log),
|
|
396
|
-
config: cfg,
|
|
471
|
+
const context = buildPluginContext({
|
|
472
|
+
plugin,
|
|
473
|
+
cfg,
|
|
397
474
|
requestId: request.id,
|
|
398
|
-
|
|
399
|
-
};
|
|
475
|
+
logger: (0, logging_1.extendLogger)(request.log),
|
|
476
|
+
});
|
|
400
477
|
const result = await route.handler({
|
|
401
478
|
body,
|
|
402
479
|
params: request.params,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fill/select actuation seam over `deepLocator`, mirroring
|
|
3
|
+
* `clickDeepLocatorCandidate`'s contract (`deep-locator-candidates.ts`) for
|
|
4
|
+
* the two other primitives a cross-origin OOPIF form's text/select steps
|
|
5
|
+
* need. Stagehand `act`/`observe` are measured blind inside that OOPIF, and
|
|
6
|
+
* `verifyDomEffect` (`flow-runner.ts`) can't locate a `deeplocator=` selector
|
|
7
|
+
* to confirm the write, so both actuators here read the written value back
|
|
8
|
+
* through the same delegate before reporting success — the caller gets a
|
|
9
|
+
* trustworthy boolean instead of a downstream verifier that can never fire.
|
|
10
|
+
*
|
|
11
|
+
* Both actuators prefer one batched `frameTarget.evaluate(buildFillFrameCandidateExpr(...) |
|
|
12
|
+
* buildSelectFrameCandidateExpr(...))` round-trip (`deep-locator-scan.ts`) over
|
|
13
|
+
* the legacy `deepLocator(hop).nth(index).fill()`/`.selectOption()` +
|
|
14
|
+
* `.inputValue()` pair, which pays Stagehand's `index + 1` serial
|
|
15
|
+
* `resolveAtIndex` round-trips per call — the same cost
|
|
16
|
+
* `clickDeepLocatorCandidate` already batches away. The legacy fallback's
|
|
17
|
+
* watchdog budget scales with `index` using
|
|
18
|
+
* {@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS} — the same per-round-trip
|
|
19
|
+
* constant `clickDeepLocatorCandidate` uses — so a legitimately-reachable
|
|
20
|
+
* candidate deep in a dense OOPIF form isn't killed by a budget sized for one
|
|
21
|
+
* round-trip.
|
|
22
|
+
*/
|
|
23
|
+
import type { Page } from "@browserbasehq/stagehand";
|
|
24
|
+
import { type FrameTarget } from "../scraper/frame-target";
|
|
25
|
+
/** Overrides for the watchdog timeout this module applies to every `deepLocator()` await; tests pass small values so cases don't burn wall-clock. */
|
|
26
|
+
export interface DeepLocatorActuateTimeoutOptions {
|
|
27
|
+
/** Per-call watchdog timeout for `fill()`/`selectOption()`/`inputValue()`. Defaults to {@link DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS}. */
|
|
28
|
+
callTimeoutMs?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Pre-resolved `FrameTarget` to actuate via one batched
|
|
31
|
+
* `evaluate(buildFillFrameCandidateExpr(...) | buildSelectFrameCandidateExpr(...))`
|
|
32
|
+
* round-trip instead of the legacy `nth(index)` delegate pair. When
|
|
33
|
+
* omitted, a single non-polling `probeAttachedFrameTarget(page,
|
|
34
|
+
* frameSelector)` pass (`frame-target.ts`) is attempted internally so
|
|
35
|
+
* existing call sites get the batched fast path for free. Unlike a bare
|
|
36
|
+
* `resolveFrameTarget(page, frameSelector, { timeoutMs: 0 })` pass — which
|
|
37
|
+
* always loses the race against genuine CDP latency — this probe carries a
|
|
38
|
+
* real per-probe budget (`config.scraper.framePresenceProbeFloorMs`), so it
|
|
39
|
+
* can actually land against an already-attached frame under live latency.
|
|
40
|
+
* If the probe doesn't land a resolved child frame, the legacy delegate
|
|
41
|
+
* path runs unchanged — the same degrade contract
|
|
42
|
+
* `deep-locator-candidates.ts`'s `resolveScanFrameTarget` uses for the
|
|
43
|
+
* scan/click seam. A caller that already resolved a `FrameTarget` (e.g.
|
|
44
|
+
* `flow-runner.ts`'s per-step resolution) should pass it here to skip the
|
|
45
|
+
* redundant internal probe.
|
|
46
|
+
*/
|
|
47
|
+
frameTarget?: FrameTarget;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Fills the candidate at `index` inside the frame scoped by `frameSelector`
|
|
51
|
+
* with `value`, re-deriving the same hop selector
|
|
52
|
+
* `resolveDeepLocatorCandidates` used (`deep-locator-candidates.ts`) rather
|
|
53
|
+
* than trusting a candidate's display `selector` (`deeplocator=`-prefixed,
|
|
54
|
+
* deliberately not an xpath).
|
|
55
|
+
*
|
|
56
|
+
* Prefers the one-round-trip {@link actuateCandidateBatched} fast path when a
|
|
57
|
+
* frame seam is available: a `written: true` result whose inline `readBack`
|
|
58
|
+
* already matches `value` resolves `true` immediately (no second round-trip
|
|
59
|
+
* needed); a `reason: "not-actionable"` result (the matched element has no
|
|
60
|
+
* layout box) resolves `false` immediately — no delegate write against that
|
|
61
|
+
* same node could succeed either. Every other batched outcome — no frame
|
|
62
|
+
* seam, a rejecting or non-conforming evaluate, `reason: "out-of-range"`, or
|
|
63
|
+
* a `written: true` result whose inline `readBack` disagrees with `value`
|
|
64
|
+
* (e.g. a controlled component's `onChange` reverted the write on a tick the
|
|
65
|
+
* single synchronous evaluate call couldn't observe) — degrades to the
|
|
66
|
+
* legacy `deepLocator(hop).nth(index).fill()` + `.inputValue()` pair rather
|
|
67
|
+
* than trusting the batched call's verdict outright: returns `true` only
|
|
68
|
+
* when that separate read-back equals `value`, and `false` — never a throw —
|
|
69
|
+
* when the delegate rejects the fill/read-back or the read-back disagrees.
|
|
70
|
+
* The legacy path's watchdog budget scales with `index`
|
|
71
|
+
* ({@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS}, the same per-round-trip
|
|
72
|
+
* cost `clickDeepLocatorCandidate`'s legacy fallback charges), so a candidate
|
|
73
|
+
* deep in a dense OOPIF form isn't killed by a budget sized for a single
|
|
74
|
+
* round-trip. A wedged `fill()`/`inputValue()` call that still exceeds that
|
|
75
|
+
* scaled budget rejects with a `WatchdogTimeoutError` instead of hanging the
|
|
76
|
+
* caller, the same "rejects on a genuine hang" contract
|
|
77
|
+
* `clickDeepLocatorCandidate` uses.
|
|
78
|
+
*/
|
|
79
|
+
export declare function fillDeepLocatorCandidate(page: Page, frameSelector: string | null | undefined, innerSelector: string, index: number, value: string, timeoutOptions?: DeepLocatorActuateTimeoutOptions): Promise<boolean>;
|
|
80
|
+
/**
|
|
81
|
+
* Selects `value` on the `<select>`-shaped candidate at `index` inside the
|
|
82
|
+
* frame scoped by `frameSelector`, under the same re-derived-hop,
|
|
83
|
+
* batched-first, index-scaled-watchdog-guarded contract as
|
|
84
|
+
* {@link fillDeepLocatorCandidate} — `selectOption()` is the legacy write,
|
|
85
|
+
* and `inputValue()` (which reads a `<select>`'s selected value the same as
|
|
86
|
+
* any other form control) is the legacy confirmation. Differs from
|
|
87
|
+
* `fillDeepLocatorCandidate` in one respect: a batched `written: true` result
|
|
88
|
+
* resolves `true` on its own, without comparing `readBack` to `value` —
|
|
89
|
+
* {@link buildSelectFrameCandidateExpr} matches an option by value OR trimmed
|
|
90
|
+
* label, so `readBack` (the MATCHED option's value) can legitimately differ
|
|
91
|
+
* from a caller-supplied label string even on a successful write.
|
|
92
|
+
*/
|
|
93
|
+
export declare function selectDeepLocatorCandidateOption(page: Page, frameSelector: string | null | undefined, innerSelector: string, index: number, value: string, timeoutOptions?: DeepLocatorActuateTimeoutOptions): Promise<boolean>;
|
|
94
|
+
//# sourceMappingURL=deep-locator-actuate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-locator-actuate.d.ts","sourceRoot":"","sources":["../../src/scraper/deep-locator-actuate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAUrD,OAAO,EAEL,KAAK,WAAW,EAEjB,MAAM,wBAAwB,CAAC;AAehC,qJAAqJ;AACrJ,MAAM,WAAW,gCAAgC;IAC/C,wIAAwI;IACxI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;OAiBG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAgHD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,gCAAqC,GACpD,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,cAAc,GAAE,gCAAqC,GACpD,OAAO,CAAC,OAAO,CAAC,CA8BlB"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Fill/select actuation seam over `deepLocator`, mirroring
|
|
4
|
+
* `clickDeepLocatorCandidate`'s contract (`deep-locator-candidates.ts`) for
|
|
5
|
+
* the two other primitives a cross-origin OOPIF form's text/select steps
|
|
6
|
+
* need. Stagehand `act`/`observe` are measured blind inside that OOPIF, and
|
|
7
|
+
* `verifyDomEffect` (`flow-runner.ts`) can't locate a `deeplocator=` selector
|
|
8
|
+
* to confirm the write, so both actuators here read the written value back
|
|
9
|
+
* through the same delegate before reporting success — the caller gets a
|
|
10
|
+
* trustworthy boolean instead of a downstream verifier that can never fire.
|
|
11
|
+
*
|
|
12
|
+
* Both actuators prefer one batched `frameTarget.evaluate(buildFillFrameCandidateExpr(...) |
|
|
13
|
+
* buildSelectFrameCandidateExpr(...))` round-trip (`deep-locator-scan.ts`) over
|
|
14
|
+
* the legacy `deepLocator(hop).nth(index).fill()`/`.selectOption()` +
|
|
15
|
+
* `.inputValue()` pair, which pays Stagehand's `index + 1` serial
|
|
16
|
+
* `resolveAtIndex` round-trips per call — the same cost
|
|
17
|
+
* `clickDeepLocatorCandidate` already batches away. The legacy fallback's
|
|
18
|
+
* watchdog budget scales with `index` using
|
|
19
|
+
* {@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS} — the same per-round-trip
|
|
20
|
+
* constant `clickDeepLocatorCandidate` uses — so a legitimately-reachable
|
|
21
|
+
* candidate deep in a dense OOPIF form isn't killed by a budget sized for one
|
|
22
|
+
* round-trip.
|
|
23
|
+
*/
|
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
+
exports.fillDeepLocatorCandidate = fillDeepLocatorCandidate;
|
|
26
|
+
exports.selectDeepLocatorCandidateOption = selectDeepLocatorCandidateOption;
|
|
27
|
+
const errors_1 = require("../lib/errors");
|
|
28
|
+
const logging_1 = require("../lib/logging");
|
|
29
|
+
const deep_locator_scan_1 = require("../scraper/deep-locator-scan");
|
|
30
|
+
const frame_target_1 = require("../scraper/frame-target");
|
|
31
|
+
const watchdog_1 = require("../scraper/watchdog");
|
|
32
|
+
const logger = (0, logging_1.getLogger)({ name: "scraper/deep-locator-actuate" });
|
|
33
|
+
/**
|
|
34
|
+
* Per-CDP-call watchdog default: bounds a single `fill()`/`selectOption()`/
|
|
35
|
+
* `inputValue()` round-trip. Owned locally (not imported from
|
|
36
|
+
* `deep-locator-candidates.ts` or `flow-runner.ts`) so this module stays a
|
|
37
|
+
* self-contained leaf, matching how `deep-locator-candidates.ts` already
|
|
38
|
+
* avoids the `flow-runner.ts` import cycle by owning its own timeout
|
|
39
|
+
* constant.
|
|
40
|
+
*/
|
|
41
|
+
const DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS = 10_000;
|
|
42
|
+
/**
|
|
43
|
+
* Runs `write`, then `readBack`, and reports whether the read-back matches
|
|
44
|
+
* `expected` — the shared write/verify shape `fillDeepLocatorCandidate` and
|
|
45
|
+
* `selectDeepLocatorCandidateOption` both need, differing only in which
|
|
46
|
+
* delegate method performs the write. A {@link WatchdogTimeoutError} from
|
|
47
|
+
* either await (a wedged CDP round-trip) propagates so the caller can tell a
|
|
48
|
+
* genuine hang apart from an ordinary failed write — everything else (the
|
|
49
|
+
* delegate rejecting, or a read-back that disagrees with `expected`) resolves
|
|
50
|
+
* to `false` instead of throwing.
|
|
51
|
+
*/
|
|
52
|
+
async function writeAndVerify(write, readBack, expected) {
|
|
53
|
+
try {
|
|
54
|
+
await write();
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if (error instanceof watchdog_1.WatchdogTimeoutError)
|
|
58
|
+
throw error;
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
return (await readBack()) === expected;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
if (error instanceof watchdog_1.WatchdogTimeoutError)
|
|
66
|
+
throw error;
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Resolves the `FrameTarget` a batched actuation evaluate should run
|
|
72
|
+
* against: `timeoutOptions.frameTarget` when the caller already resolved
|
|
73
|
+
* one, else a single non-polling `probeAttachedFrameTarget(page,
|
|
74
|
+
* frameSelector)` pass (`frame-target.ts`) so existing call sites — which
|
|
75
|
+
* pass only a `frameSelector` string — still get the batched fast path
|
|
76
|
+
* without themselves changing. Unlike a bare `resolveFrameTarget(page,
|
|
77
|
+
* frameSelector, { timeoutMs: 0 })` pass, the probe carries a real per-probe
|
|
78
|
+
* budget, so it can land against an already-attached frame under genuine CDP
|
|
79
|
+
* latency instead of always losing a zero-budget race. Returns `null` (never
|
|
80
|
+
* throws) when `frameSelector` is unset, the probe rejects (e.g. a fake
|
|
81
|
+
* `Page` in a legacy-path test lacking `evaluate`/`frames`), or nothing
|
|
82
|
+
* attaches within the probe's budget — each of those means "no frame seam
|
|
83
|
+
* available", and the caller degrades to the legacy delegate path. Mirrors
|
|
84
|
+
* `deep-locator-candidates.ts`'s `resolveScanFrameTarget` exactly; duplicated
|
|
85
|
+
* (not imported) so this module stays a leaf that never depends on
|
|
86
|
+
* `deep-locator-candidates.ts`.
|
|
87
|
+
*/
|
|
88
|
+
async function resolveActuateFrameTarget(page, frameSelector, timeoutOptions) {
|
|
89
|
+
if (timeoutOptions.frameTarget)
|
|
90
|
+
return timeoutOptions.frameTarget;
|
|
91
|
+
if (!frameSelector)
|
|
92
|
+
return null;
|
|
93
|
+
try {
|
|
94
|
+
return await (0, frame_target_1.probeAttachedFrameTarget)(page, frameSelector);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/** Narrows a batched fill/select evaluate result to {@link FrameCandidateWriteResult}'s shape, guarding against a non-conforming payload (the same degrade-to-legacy contract `deep-locator-candidates.ts`'s `isFrameCandidateScanResult`/`isFrameCandidateClickResult` enforce). */
|
|
101
|
+
function isFrameCandidateWriteResult(entry) {
|
|
102
|
+
if (typeof entry !== "object" || entry === null)
|
|
103
|
+
return false;
|
|
104
|
+
const result = entry;
|
|
105
|
+
if (typeof result.written !== "boolean")
|
|
106
|
+
return false;
|
|
107
|
+
if (result.written)
|
|
108
|
+
return typeof result.readBack === "string";
|
|
109
|
+
return result.reason === "out-of-range" || result.reason === "not-actionable";
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Batched fill/select fast path: one `frameTarget.evaluate(expression)`
|
|
113
|
+
* round-trip replaces the legacy `nth(index).fill()`/`.selectOption()` +
|
|
114
|
+
* `.inputValue()` pair. Returns `null` (never throws) when no frame seam is
|
|
115
|
+
* available, the evaluate call rejects, or the resolved payload doesn't
|
|
116
|
+
* conform to {@link FrameCandidateWriteResult} — every one of those degrades
|
|
117
|
+
* the caller to the legacy delegate path instead of losing the write,
|
|
118
|
+
* mirroring `clickCandidateBatched`'s degrade contract
|
|
119
|
+
* (`deep-locator-candidates.ts`).
|
|
120
|
+
*/
|
|
121
|
+
async function actuateCandidateBatched(page, frameSelector, hopSelector, index, timeoutOptions, expression, actionLabel) {
|
|
122
|
+
const frameTarget = await resolveActuateFrameTarget(page, frameSelector, timeoutOptions);
|
|
123
|
+
if (!frameTarget)
|
|
124
|
+
return null;
|
|
125
|
+
let result;
|
|
126
|
+
try {
|
|
127
|
+
result = await frameTarget.evaluate(expression);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
logger.warn(`deepLocator batched ${actionLabel} for ${hopSelector} nth=${index} failed, degrading to delegate ${actionLabel}: ${(0, errors_1.toErrorMessage)(err)}`);
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
if (!isFrameCandidateWriteResult(result)) {
|
|
134
|
+
logger.warn(`deepLocator batched ${actionLabel} for ${hopSelector} nth=${index} returned a non-conforming payload, degrading to delegate ${actionLabel}`);
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Fills the candidate at `index` inside the frame scoped by `frameSelector`
|
|
141
|
+
* with `value`, re-deriving the same hop selector
|
|
142
|
+
* `resolveDeepLocatorCandidates` used (`deep-locator-candidates.ts`) rather
|
|
143
|
+
* than trusting a candidate's display `selector` (`deeplocator=`-prefixed,
|
|
144
|
+
* deliberately not an xpath).
|
|
145
|
+
*
|
|
146
|
+
* Prefers the one-round-trip {@link actuateCandidateBatched} fast path when a
|
|
147
|
+
* frame seam is available: a `written: true` result whose inline `readBack`
|
|
148
|
+
* already matches `value` resolves `true` immediately (no second round-trip
|
|
149
|
+
* needed); a `reason: "not-actionable"` result (the matched element has no
|
|
150
|
+
* layout box) resolves `false` immediately — no delegate write against that
|
|
151
|
+
* same node could succeed either. Every other batched outcome — no frame
|
|
152
|
+
* seam, a rejecting or non-conforming evaluate, `reason: "out-of-range"`, or
|
|
153
|
+
* a `written: true` result whose inline `readBack` disagrees with `value`
|
|
154
|
+
* (e.g. a controlled component's `onChange` reverted the write on a tick the
|
|
155
|
+
* single synchronous evaluate call couldn't observe) — degrades to the
|
|
156
|
+
* legacy `deepLocator(hop).nth(index).fill()` + `.inputValue()` pair rather
|
|
157
|
+
* than trusting the batched call's verdict outright: returns `true` only
|
|
158
|
+
* when that separate read-back equals `value`, and `false` — never a throw —
|
|
159
|
+
* when the delegate rejects the fill/read-back or the read-back disagrees.
|
|
160
|
+
* The legacy path's watchdog budget scales with `index`
|
|
161
|
+
* ({@link DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS}, the same per-round-trip
|
|
162
|
+
* cost `clickDeepLocatorCandidate`'s legacy fallback charges), so a candidate
|
|
163
|
+
* deep in a dense OOPIF form isn't killed by a budget sized for a single
|
|
164
|
+
* round-trip. A wedged `fill()`/`inputValue()` call that still exceeds that
|
|
165
|
+
* scaled budget rejects with a `WatchdogTimeoutError` instead of hanging the
|
|
166
|
+
* caller, the same "rejects on a genuine hang" contract
|
|
167
|
+
* `clickDeepLocatorCandidate` uses.
|
|
168
|
+
*/
|
|
169
|
+
async function fillDeepLocatorCandidate(page, frameSelector, innerSelector, index, value, timeoutOptions = {}) {
|
|
170
|
+
const callTimeoutMs = timeoutOptions.callTimeoutMs ?? DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS;
|
|
171
|
+
const hopSelector = (0, frame_target_1.buildHopSelector)(frameSelector, innerSelector);
|
|
172
|
+
const batchedResult = await actuateCandidateBatched(page, frameSelector, hopSelector, index, timeoutOptions, (0, deep_locator_scan_1.buildFillFrameCandidateExpr)(innerSelector, index, value), "fill");
|
|
173
|
+
if (batchedResult?.written && batchedResult.readBack === value)
|
|
174
|
+
return true;
|
|
175
|
+
if (batchedResult?.reason === "not-actionable")
|
|
176
|
+
return false;
|
|
177
|
+
const scaledCallTimeoutMs = callTimeoutMs + index * deep_locator_scan_1.DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS;
|
|
178
|
+
return writeAndVerify(() => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).fill(value), {
|
|
179
|
+
timeoutMs: scaledCallTimeoutMs,
|
|
180
|
+
label: `deepLocator fill() for ${hopSelector} nth=${index}`,
|
|
181
|
+
}), () => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).inputValue(), {
|
|
182
|
+
timeoutMs: scaledCallTimeoutMs,
|
|
183
|
+
label: `deepLocator inputValue() for ${hopSelector} nth=${index}`,
|
|
184
|
+
}), value);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Selects `value` on the `<select>`-shaped candidate at `index` inside the
|
|
188
|
+
* frame scoped by `frameSelector`, under the same re-derived-hop,
|
|
189
|
+
* batched-first, index-scaled-watchdog-guarded contract as
|
|
190
|
+
* {@link fillDeepLocatorCandidate} — `selectOption()` is the legacy write,
|
|
191
|
+
* and `inputValue()` (which reads a `<select>`'s selected value the same as
|
|
192
|
+
* any other form control) is the legacy confirmation. Differs from
|
|
193
|
+
* `fillDeepLocatorCandidate` in one respect: a batched `written: true` result
|
|
194
|
+
* resolves `true` on its own, without comparing `readBack` to `value` —
|
|
195
|
+
* {@link buildSelectFrameCandidateExpr} matches an option by value OR trimmed
|
|
196
|
+
* label, so `readBack` (the MATCHED option's value) can legitimately differ
|
|
197
|
+
* from a caller-supplied label string even on a successful write.
|
|
198
|
+
*/
|
|
199
|
+
async function selectDeepLocatorCandidateOption(page, frameSelector, innerSelector, index, value, timeoutOptions = {}) {
|
|
200
|
+
const callTimeoutMs = timeoutOptions.callTimeoutMs ?? DEFAULT_DEEP_LOCATOR_CALL_TIMEOUT_MS;
|
|
201
|
+
const hopSelector = (0, frame_target_1.buildHopSelector)(frameSelector, innerSelector);
|
|
202
|
+
const batchedResult = await actuateCandidateBatched(page, frameSelector, hopSelector, index, timeoutOptions, (0, deep_locator_scan_1.buildSelectFrameCandidateExpr)(innerSelector, index, value), "select");
|
|
203
|
+
if (batchedResult?.written)
|
|
204
|
+
return true;
|
|
205
|
+
if (batchedResult?.reason === "not-actionable")
|
|
206
|
+
return false;
|
|
207
|
+
const scaledCallTimeoutMs = callTimeoutMs + index * deep_locator_scan_1.DEEP_LOCATOR_CLICK_INDEX_ROUND_TRIP_MS;
|
|
208
|
+
return writeAndVerify(() => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).selectOption(value), {
|
|
209
|
+
timeoutMs: scaledCallTimeoutMs,
|
|
210
|
+
label: `deepLocator selectOption() for ${hopSelector} nth=${index}`,
|
|
211
|
+
}), () => (0, watchdog_1.withWatchdog)(() => page.deepLocator(hopSelector).nth(index).inputValue(), {
|
|
212
|
+
timeoutMs: scaledCallTimeoutMs,
|
|
213
|
+
label: `deepLocator inputValue() for ${hopSelector} nth=${index}`,
|
|
214
|
+
}), value);
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=deep-locator-actuate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-locator-actuate.js","sourceRoot":"","sources":["../../src/scraper/deep-locator-actuate.ts"],"names":[],"mappings":"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"}
|