@restormel/testing-config 0.1.0 → 0.1.4
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/LICENSE +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/load.d.ts +5 -1
- package/dist/load.d.ts.map +1 -1
- package/dist/load.js +11 -4
- package/dist/load.js.map +1 -1
- package/dist/validate.d.ts +2 -3
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +595 -24
- package/dist/validate.js.map +1 -1
- package/package.json +6 -6
package/LICENSE
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare const testingConfigPackage: "@restormel/testing-config";
|
|
|
5
5
|
export type { ConfigDefaults, ConfigError, LoadConfigFailure, LoadConfigResult, LoadConfigSuccess, RestormelTestingConfig, SupportedSchemaVersion, } from "./schema.js";
|
|
6
6
|
export { SUPPORTED_SCHEMA_VERSIONS } from "./schema.js";
|
|
7
7
|
export { loadConfigFromFile, loadConfigFromString } from "./load.js";
|
|
8
|
-
export type { ConfigStringFormat } from "./load.js";
|
|
8
|
+
export type { ConfigStringFormat, LoadConfigFromFileOptions } from "./load.js";
|
|
9
9
|
export { isOpaqueKeyRef, isSafeHttpUrl, looksLikeInlineSecret, } from "./refs.js";
|
|
10
10
|
export { formatConfigErrors, resolvedKeysForEnvironment, resolveEnvironmentProfile, resolveSuite, validateConfigDocument, validateMvpRunnerRestrictions, } from "./validate.js";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAG,2BAAoC,CAAC;AAEzE,YAAY,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAG,2BAAoC,CAAC;AAEzE,YAAY,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACrE,YAAY,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,YAAY,EACZ,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,eAAe,CAAC"}
|
package/dist/load.d.ts
CHANGED
|
@@ -4,6 +4,10 @@ export type ConfigStringFormat = "yaml" | "json";
|
|
|
4
4
|
* Parse and validate config from a string. YAML is preferred on disk; JSON supported for tooling.
|
|
5
5
|
*/
|
|
6
6
|
export declare function loadConfigFromString(content: string, format: ConfigStringFormat): LoadConfigResult;
|
|
7
|
+
export type LoadConfigFromFileOptions = {
|
|
8
|
+
/** Directory tree the config path must stay within (default: `process.cwd()`). */
|
|
9
|
+
allowedRoot?: string;
|
|
10
|
+
};
|
|
7
11
|
/** Infer `yaml` vs `json` from file extension (.json → json, else yaml). */
|
|
8
|
-
export declare function loadConfigFromFile(filePath: string): Promise<LoadConfigResult>;
|
|
12
|
+
export declare function loadConfigFromFile(filePath: string, options?: LoadConfigFromFileOptions): Promise<LoadConfigResult>;
|
|
9
13
|
//# sourceMappingURL=load.d.ts.map
|
package/dist/load.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AASjD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,gBAAgB,CAQlG;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,4EAA4E;AAC5E,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,gBAAgB,CAAC,CAiB3B"}
|
package/dist/load.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
|
+
import { resolvePathUnderRoot } from "@restormel/testing-core";
|
|
2
3
|
import YAML from "yaml";
|
|
3
4
|
import { validateConfigDocument } from "./validate.js";
|
|
4
5
|
function parseToUnknown(content, format) {
|
|
@@ -21,16 +22,22 @@ export function loadConfigFromString(content, format) {
|
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
24
|
/** Infer `yaml` vs `json` from file extension (.json → json, else yaml). */
|
|
24
|
-
export async function loadConfigFromFile(filePath) {
|
|
25
|
-
const
|
|
25
|
+
export async function loadConfigFromFile(filePath, options) {
|
|
26
|
+
const root = options?.allowedRoot ?? process.cwd();
|
|
27
|
+
const resolved = resolvePathUnderRoot(root, filePath);
|
|
28
|
+
if (!resolved.ok) {
|
|
29
|
+
return { ok: false, errors: [{ path: filePath, code: "io", message: resolved.reason }] };
|
|
30
|
+
}
|
|
31
|
+
const absolutePath = resolved.path;
|
|
32
|
+
const lower = absolutePath.toLowerCase();
|
|
26
33
|
const format = lower.endsWith(".json") ? "json" : "yaml";
|
|
27
34
|
let content;
|
|
28
35
|
try {
|
|
29
|
-
content = await readFile(
|
|
36
|
+
content = await readFile(absolutePath, "utf8");
|
|
30
37
|
}
|
|
31
38
|
catch (e) {
|
|
32
39
|
const message = e instanceof Error ? e.message : String(e);
|
|
33
|
-
return { ok: false, errors: [{ path:
|
|
40
|
+
return { ok: false, errors: [{ path: absolutePath, code: "io", message }] };
|
|
34
41
|
}
|
|
35
42
|
return loadConfigFromString(content, format);
|
|
36
43
|
}
|
package/dist/load.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAIvD,SAAS,cAAc,CAAC,OAAe,EAAE,MAA0B;IACjE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAA0B;IAC9E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"load.js","sourceRoot":"","sources":["../src/load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAIvD,SAAS,cAAc,CAAC,OAAe,EAAE,MAA0B;IACjE,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,MAA0B;IAC9E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAOD,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,OAAmC;IAEnC,MAAM,IAAI,GAAG,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;IAC3F,CAAC;IACD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;IACnC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;IACzC,MAAM,MAAM,GAAuB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7E,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,OAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/validate.d.ts
CHANGED
|
@@ -11,10 +11,9 @@ export declare function validateConfigDocument(raw: unknown): {
|
|
|
11
11
|
errors: ConfigError[];
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
* Reject non-empty values so repos do not rely on silent no-ops.
|
|
14
|
+
* Reserved for future policy checks (e.g. schema_version gates). Shell hooks are executed when not skipped via env; see runner docs.
|
|
16
15
|
*/
|
|
17
|
-
export declare function validateMvpRunnerRestrictions(
|
|
16
|
+
export declare function validateMvpRunnerRestrictions(_config: RestormelTestingConfig, _errors: ConfigError[]): void;
|
|
18
17
|
export declare function resolveSuite(config: RestormelTestingConfig, suiteId: string): {
|
|
19
18
|
ok: true;
|
|
20
19
|
suite: TestSuite;
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,kBAAkB,EASlB,SAAS,EACV,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAkB,WAAW,EAAE,sBAAsB,EAA0B,MAAM,aAAa,CAAC;AAsrC/G;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,sBAAsB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAuGxI;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAI,CAE3G;AAkDD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,MAAM,GACd;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAevE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,MAAM,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAA;CAAE,CAmBlF;AAED,gFAAgF;AAChF,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,MAAM,GACpB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAGxB;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAOhE"}
|
package/dist/validate.js
CHANGED
|
@@ -233,11 +233,87 @@ function parseJudgeRubric(raw, path, errors) {
|
|
|
233
233
|
}
|
|
234
234
|
return rubric;
|
|
235
235
|
}
|
|
236
|
-
function
|
|
236
|
+
function parseMissionConstraints(raw, path, errors) {
|
|
237
|
+
if (raw === undefined || raw === null)
|
|
238
|
+
return undefined;
|
|
239
|
+
if (!isPlainObject(raw)) {
|
|
240
|
+
errors.push(err(path, "type", "mission_constraints must be an object"));
|
|
241
|
+
return undefined;
|
|
242
|
+
}
|
|
243
|
+
const out = {};
|
|
244
|
+
const maxDur = pickKey(raw, "max_duration_ms", "maxDurationMs");
|
|
245
|
+
if (maxDur !== undefined && maxDur !== null) {
|
|
246
|
+
const n = asPosInt(maxDur, `${path}.max_duration_ms`, "max_duration_ms", errors);
|
|
247
|
+
if (n !== undefined)
|
|
248
|
+
out.maxDurationMs = n;
|
|
249
|
+
}
|
|
250
|
+
const ua = pickKey(raw, "url_allowlist", "urlAllowlist");
|
|
251
|
+
if (ua !== undefined && ua !== null) {
|
|
252
|
+
if (!Array.isArray(ua) || !ua.every((x) => typeof x === "string")) {
|
|
253
|
+
errors.push(err(`${path}.url_allowlist`, "type", "url_allowlist must be string[]"));
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
out.urlAllowlist = ua;
|
|
257
|
+
}
|
|
258
|
+
return Object.keys(out).length > 0 ? out : undefined;
|
|
259
|
+
}
|
|
260
|
+
function parseAfterAgent(raw, path, errors) {
|
|
261
|
+
if (raw === undefined || raw === null)
|
|
262
|
+
return undefined;
|
|
263
|
+
if (!isPlainObject(raw)) {
|
|
264
|
+
errors.push(err(path, "type", "after_agent must be an object"));
|
|
265
|
+
return undefined;
|
|
266
|
+
}
|
|
267
|
+
const out = {};
|
|
268
|
+
const sp = pickKey(raw, "start_path", "startPath");
|
|
269
|
+
if (sp !== undefined && sp !== null) {
|
|
270
|
+
const s = asString(sp, `${path}.start_path`, "start_path", errors);
|
|
271
|
+
if (s) {
|
|
272
|
+
if (s.includes("..")) {
|
|
273
|
+
errors.push(err(`${path}.start_path`, "unsafe", "start_path must not contain '..'"));
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
out.startPath = s;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
const scr = pickKey(raw, "success_criteria", "successCriteria");
|
|
281
|
+
if (scr !== undefined && scr !== null) {
|
|
282
|
+
const sc = parseSuccessCriteria(scr, `${path}.success_criteria`, errors);
|
|
283
|
+
if (sc)
|
|
284
|
+
out.successCriteria = sc;
|
|
285
|
+
}
|
|
286
|
+
if (out.startPath === undefined && out.successCriteria === undefined) {
|
|
287
|
+
errors.push(err(path, "empty", "after_agent must include start_path and/or success_criteria"));
|
|
288
|
+
return undefined;
|
|
289
|
+
}
|
|
290
|
+
return out;
|
|
291
|
+
}
|
|
292
|
+
function parseSuccessCriteria(raw, path, errors, opts) {
|
|
237
293
|
if (!isPlainObject(raw)) {
|
|
238
294
|
errors.push(err(path, "type", "success_criteria must be an object"));
|
|
239
295
|
return undefined;
|
|
240
296
|
}
|
|
297
|
+
const anyOfRaw = pickKey(raw, "any_of", "anyOf");
|
|
298
|
+
if (anyOfRaw !== undefined && anyOfRaw !== null) {
|
|
299
|
+
const otherKeys = Object.keys(raw).filter((k) => k !== "any_of" && k !== "anyOf");
|
|
300
|
+
if (otherKeys.length > 0) {
|
|
301
|
+
errors.push(err(path, "any_of_exclusive", `When any_of is set, no other success_criteria keys are allowed at the same level (found: ${otherKeys.join(", ")})`));
|
|
302
|
+
return undefined;
|
|
303
|
+
}
|
|
304
|
+
if (!Array.isArray(anyOfRaw) || anyOfRaw.length < 2) {
|
|
305
|
+
errors.push(err(`${path}.any_of`, "any_of_length", "any_of must be an array with at least two alternative criteria objects"));
|
|
306
|
+
return undefined;
|
|
307
|
+
}
|
|
308
|
+
const branches = [];
|
|
309
|
+
for (let i = 0; i < anyOfRaw.length; i++) {
|
|
310
|
+
const b = parseSuccessCriteria(anyOfRaw[i], `${path}.any_of[${i}]`, errors);
|
|
311
|
+
if (!b)
|
|
312
|
+
return undefined;
|
|
313
|
+
branches.push(b);
|
|
314
|
+
}
|
|
315
|
+
return { anyOf: branches };
|
|
316
|
+
}
|
|
241
317
|
const out = {};
|
|
242
318
|
const urlMatches = pickKey(raw, "url_matches", "urlMatches");
|
|
243
319
|
if (urlMatches !== undefined && urlMatches !== null) {
|
|
@@ -304,12 +380,291 @@ function parseSuccessCriteria(raw, path, errors) {
|
|
|
304
380
|
(out.structuredChecks != null && out.structuredChecks.length > 0) ||
|
|
305
381
|
out.judgeRubric != null;
|
|
306
382
|
if (!hasAny) {
|
|
307
|
-
|
|
383
|
+
if (opts?.allowEmpty) {
|
|
384
|
+
return {};
|
|
385
|
+
}
|
|
386
|
+
errors.push(err(path, "success_criteria_empty", "success_criteria must include at least one of: any_of, url_matches, dom_signals, text_present, text_absent, structured_checks, judge_rubric"));
|
|
387
|
+
return undefined;
|
|
388
|
+
}
|
|
389
|
+
return out;
|
|
390
|
+
}
|
|
391
|
+
function parseAcSequencePostCheck(raw, path, errors, allowedAcIds) {
|
|
392
|
+
if (!isPlainObject(raw)) {
|
|
393
|
+
errors.push(err(path, "type", "post_checks entry must be an object"));
|
|
394
|
+
return undefined;
|
|
395
|
+
}
|
|
396
|
+
const acId = asString(pickKey(raw, "ac_id", "acId"), `${path}.ac_id`, "ac_id", errors);
|
|
397
|
+
if (!acId)
|
|
398
|
+
return undefined;
|
|
399
|
+
if (!allowedAcIds.has(acId)) {
|
|
400
|
+
errors.push(err(`${path}.ac_id`, "unknown_ac_id", `post_checks ac_id "${acId}" is not a suite acceptance_criteria id`));
|
|
401
|
+
return undefined;
|
|
402
|
+
}
|
|
403
|
+
let http;
|
|
404
|
+
const httpRaw = pickKey(raw, "http", "http");
|
|
405
|
+
if (httpRaw !== undefined && httpRaw !== null) {
|
|
406
|
+
if (!isPlainObject(httpRaw)) {
|
|
407
|
+
errors.push(err(`${path}.http`, "type", "post_checks.http must be an object"));
|
|
408
|
+
return undefined;
|
|
409
|
+
}
|
|
410
|
+
const url = asString(pickKey(httpRaw, "url", "url"), `${path}.http.url`, "url", errors);
|
|
411
|
+
if (!url)
|
|
412
|
+
return undefined;
|
|
413
|
+
http = { url };
|
|
414
|
+
const method = pickKey(httpRaw, "method", "method");
|
|
415
|
+
if (method !== undefined && method !== null) {
|
|
416
|
+
if (typeof method !== "string") {
|
|
417
|
+
errors.push(err(`${path}.http.method`, "type", "method must be a string"));
|
|
418
|
+
return undefined;
|
|
419
|
+
}
|
|
420
|
+
http.method = method;
|
|
421
|
+
}
|
|
422
|
+
const expectStatus = pickKey(httpRaw, "expect_status", "expectStatus");
|
|
423
|
+
if (expectStatus !== undefined && expectStatus !== null) {
|
|
424
|
+
if (!Array.isArray(expectStatus) || !expectStatus.every((x) => typeof x === "number" && Number.isInteger(x))) {
|
|
425
|
+
errors.push(err(`${path}.http.expect_status`, "type", "expect_status must be number[]"));
|
|
426
|
+
return undefined;
|
|
427
|
+
}
|
|
428
|
+
http.expectStatus = expectStatus;
|
|
429
|
+
}
|
|
430
|
+
const headers = pickKey(httpRaw, "headers", "headers");
|
|
431
|
+
if (headers !== undefined && headers !== null) {
|
|
432
|
+
if (!isPlainObject(headers)) {
|
|
433
|
+
errors.push(err(`${path}.http.headers`, "type", "headers must be an object"));
|
|
434
|
+
return undefined;
|
|
435
|
+
}
|
|
436
|
+
const h = {};
|
|
437
|
+
for (const [k, v] of Object.entries(headers)) {
|
|
438
|
+
if (typeof v !== "string") {
|
|
439
|
+
errors.push(err(`${path}.http.headers`, "type", "headers values must be strings"));
|
|
440
|
+
return undefined;
|
|
441
|
+
}
|
|
442
|
+
h[k] = v;
|
|
443
|
+
}
|
|
444
|
+
http.headers = h;
|
|
445
|
+
}
|
|
446
|
+
const body = pickKey(httpRaw, "body", "body");
|
|
447
|
+
if (body !== undefined && body !== null) {
|
|
448
|
+
if (typeof body !== "string") {
|
|
449
|
+
errors.push(err(`${path}.http.body`, "type", "body must be a string"));
|
|
450
|
+
return undefined;
|
|
451
|
+
}
|
|
452
|
+
http.body = body;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
let domRoleName;
|
|
456
|
+
const domRaw = pickKey(raw, "dom_role_name", "domRoleName");
|
|
457
|
+
if (domRaw !== undefined && domRaw !== null) {
|
|
458
|
+
if (!isPlainObject(domRaw)) {
|
|
459
|
+
errors.push(err(`${path}.dom_role_name`, "type", "dom_role_name must be an object"));
|
|
460
|
+
return undefined;
|
|
461
|
+
}
|
|
462
|
+
const role = asString(pickKey(domRaw, "role", "role"), `${path}.dom_role_name.role`, "role", errors);
|
|
463
|
+
if (!role)
|
|
464
|
+
return undefined;
|
|
465
|
+
domRoleName = { role };
|
|
466
|
+
const name = pickKey(domRaw, "name", "name");
|
|
467
|
+
if (name !== undefined && name !== null) {
|
|
468
|
+
if (typeof name !== "string") {
|
|
469
|
+
errors.push(err(`${path}.dom_role_name.name`, "type", "name must be a string"));
|
|
470
|
+
return undefined;
|
|
471
|
+
}
|
|
472
|
+
domRoleName.name = name;
|
|
473
|
+
}
|
|
474
|
+
const ev = pickKey(domRaw, "expect_visible", "expectVisible");
|
|
475
|
+
if (ev !== undefined && ev !== null) {
|
|
476
|
+
if (typeof ev !== "boolean") {
|
|
477
|
+
errors.push(err(`${path}.dom_role_name.expect_visible`, "type", "expect_visible must be a boolean"));
|
|
478
|
+
return undefined;
|
|
479
|
+
}
|
|
480
|
+
domRoleName.expectVisible = ev;
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
let dbShell;
|
|
484
|
+
const dbs = pickKey(raw, "db_shell", "dbShell");
|
|
485
|
+
if (dbs !== undefined && dbs !== null) {
|
|
486
|
+
if (typeof dbs !== "string") {
|
|
487
|
+
errors.push(err(`${path}.db_shell`, "type", "db_shell must be a string"));
|
|
488
|
+
return undefined;
|
|
489
|
+
}
|
|
490
|
+
const t = dbs.trim();
|
|
491
|
+
if (t.length > 0)
|
|
492
|
+
dbShell = t;
|
|
493
|
+
}
|
|
494
|
+
if (http === undefined && domRoleName === undefined && dbShell === undefined) {
|
|
495
|
+
errors.push(err(path, "post_check_empty", "post_checks entry must include at least one of: http, dom_role_name, db_shell"));
|
|
308
496
|
return undefined;
|
|
309
497
|
}
|
|
498
|
+
const out = { acId };
|
|
499
|
+
if (http !== undefined)
|
|
500
|
+
out.http = http;
|
|
501
|
+
if (domRoleName !== undefined)
|
|
502
|
+
out.domRoleName = domRoleName;
|
|
503
|
+
if (dbShell !== undefined)
|
|
504
|
+
out.dbShell = dbShell;
|
|
310
505
|
return out;
|
|
311
506
|
}
|
|
312
|
-
function
|
|
507
|
+
function parseAcSequence(raw, path, errors, allowedAcIds) {
|
|
508
|
+
if (!isPlainObject(raw)) {
|
|
509
|
+
errors.push(err(path, "type", "ac_sequence must be an object"));
|
|
510
|
+
return undefined;
|
|
511
|
+
}
|
|
512
|
+
const agentRaw = pickKey(raw, "built_in_agent", "builtInAgent");
|
|
513
|
+
if (agentRaw === undefined || agentRaw === null || !isPlainObject(agentRaw)) {
|
|
514
|
+
errors.push(err(`${path}.built_in_agent`, "required", "ac_sequence.built_in_agent is required"));
|
|
515
|
+
return undefined;
|
|
516
|
+
}
|
|
517
|
+
const builtInAgent = {};
|
|
518
|
+
const mr = pickKey(agentRaw, "model_ref", "modelRef");
|
|
519
|
+
if (mr !== undefined && mr !== null) {
|
|
520
|
+
const s = asString(mr, `${path}.built_in_agent.model_ref`, "model_ref", errors);
|
|
521
|
+
if (s)
|
|
522
|
+
builtInAgent.modelRef = s;
|
|
523
|
+
}
|
|
524
|
+
const maxRounds = asNonNegInt(pickKey(agentRaw, "max_rounds_per_criterion", "maxRoundsPerCriterion"), `${path}.built_in_agent.max_rounds_per_criterion`, "max_rounds_per_criterion", errors);
|
|
525
|
+
if (maxRounds !== undefined)
|
|
526
|
+
builtInAgent.maxRoundsPerCriterion = maxRounds;
|
|
527
|
+
const instr = pickKey(agentRaw, "instructions", "instructions");
|
|
528
|
+
if (instr !== undefined && instr !== null) {
|
|
529
|
+
if (typeof instr !== "string") {
|
|
530
|
+
errors.push(err(`${path}.built_in_agent.instructions`, "type", "instructions must be a string"));
|
|
531
|
+
return undefined;
|
|
532
|
+
}
|
|
533
|
+
if (instr.trim() !== "")
|
|
534
|
+
builtInAgent.instructions = instr;
|
|
535
|
+
}
|
|
536
|
+
let criterionExecutor;
|
|
537
|
+
const ceRaw = pickKey(raw, "criterion_executor", "criterionExecutor");
|
|
538
|
+
if (ceRaw !== undefined && ceRaw !== null) {
|
|
539
|
+
const s = asString(ceRaw, `${path}.criterion_executor`, "criterion_executor", errors);
|
|
540
|
+
if (!s)
|
|
541
|
+
return undefined;
|
|
542
|
+
criterionExecutor = s;
|
|
543
|
+
}
|
|
544
|
+
let criterionSuccess;
|
|
545
|
+
const csRaw = pickKey(raw, "criterion_success", "criterionSuccess");
|
|
546
|
+
if (csRaw !== undefined && csRaw !== null) {
|
|
547
|
+
if (!isPlainObject(csRaw)) {
|
|
548
|
+
errors.push(err(`${path}.criterion_success`, "type", "criterion_success must be an object"));
|
|
549
|
+
return undefined;
|
|
550
|
+
}
|
|
551
|
+
criterionSuccess = {};
|
|
552
|
+
for (const [k, v] of Object.entries(csRaw)) {
|
|
553
|
+
if (!allowedAcIds.has(k)) {
|
|
554
|
+
errors.push(err(`${path}.criterion_success`, "unknown_ac_id", `criterion_success key "${k}" is not a suite acceptance_criteria id`));
|
|
555
|
+
return undefined;
|
|
556
|
+
}
|
|
557
|
+
const sc = parseSuccessCriteria(v, `${path}.criterion_success.${k}`, errors);
|
|
558
|
+
if (!sc)
|
|
559
|
+
return undefined;
|
|
560
|
+
criterionSuccess[k] = sc;
|
|
561
|
+
}
|
|
562
|
+
}
|
|
563
|
+
let criterionRubrics;
|
|
564
|
+
const crRaw = pickKey(raw, "criterion_rubrics", "criterionRubrics");
|
|
565
|
+
if (crRaw !== undefined && crRaw !== null) {
|
|
566
|
+
if (!isPlainObject(crRaw)) {
|
|
567
|
+
errors.push(err(`${path}.criterion_rubrics`, "type", "criterion_rubrics must be an object"));
|
|
568
|
+
return undefined;
|
|
569
|
+
}
|
|
570
|
+
criterionRubrics = {};
|
|
571
|
+
for (const [k, v] of Object.entries(crRaw)) {
|
|
572
|
+
if (!allowedAcIds.has(k)) {
|
|
573
|
+
errors.push(err(`${path}.criterion_rubrics`, "unknown_ac_id", `criterion_rubrics key "${k}" is not a suite acceptance_criteria id`));
|
|
574
|
+
return undefined;
|
|
575
|
+
}
|
|
576
|
+
const rub = parseJudgeRubric(v, `${path}.criterion_rubrics.${k}`, errors);
|
|
577
|
+
if (!rub)
|
|
578
|
+
return undefined;
|
|
579
|
+
criterionRubrics[k] = rub;
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
let postChecks;
|
|
583
|
+
const pcRaw = pickKey(raw, "post_checks", "postChecks");
|
|
584
|
+
if (pcRaw !== undefined && pcRaw !== null) {
|
|
585
|
+
if (!Array.isArray(pcRaw)) {
|
|
586
|
+
errors.push(err(`${path}.post_checks`, "type", "post_checks must be an array"));
|
|
587
|
+
return undefined;
|
|
588
|
+
}
|
|
589
|
+
const list = [];
|
|
590
|
+
for (let i = 0; i < pcRaw.length; i++) {
|
|
591
|
+
const p = parseAcSequencePostCheck(pcRaw[i], `${path}.post_checks[${i}]`, errors, allowedAcIds);
|
|
592
|
+
if (!p)
|
|
593
|
+
return undefined;
|
|
594
|
+
list.push(p);
|
|
595
|
+
}
|
|
596
|
+
postChecks = list;
|
|
597
|
+
}
|
|
598
|
+
const out = { builtInAgent };
|
|
599
|
+
if (criterionExecutor !== undefined)
|
|
600
|
+
out.criterionExecutor = criterionExecutor;
|
|
601
|
+
if (criterionSuccess)
|
|
602
|
+
out.criterionSuccess = criterionSuccess;
|
|
603
|
+
if (criterionRubrics)
|
|
604
|
+
out.criterionRubrics = criterionRubrics;
|
|
605
|
+
if (postChecks)
|
|
606
|
+
out.postChecks = postChecks;
|
|
607
|
+
return out;
|
|
608
|
+
}
|
|
609
|
+
function parseSuiteAcceptanceCriteria(raw, path, errors) {
|
|
610
|
+
if (raw === undefined || raw === null)
|
|
611
|
+
return undefined;
|
|
612
|
+
if (!Array.isArray(raw)) {
|
|
613
|
+
errors.push(err(path, "type", "acceptance_criteria must be an array of { id, text }"));
|
|
614
|
+
return undefined;
|
|
615
|
+
}
|
|
616
|
+
if (raw.length === 0) {
|
|
617
|
+
errors.push(err(path, "empty", "acceptance_criteria must not be an empty array"));
|
|
618
|
+
return undefined;
|
|
619
|
+
}
|
|
620
|
+
const list = [];
|
|
621
|
+
const idSet = new Set();
|
|
622
|
+
for (let i = 0; i < raw.length; i++) {
|
|
623
|
+
const item = raw[i];
|
|
624
|
+
if (!isPlainObject(item)) {
|
|
625
|
+
errors.push(err(`${path}[${i}]`, "type", "each acceptance_criteria entry must be an object"));
|
|
626
|
+
return undefined;
|
|
627
|
+
}
|
|
628
|
+
const cid = asString(pickKey(item, "id", "id"), `${path}[${i}].id`, "id", errors);
|
|
629
|
+
const text = asString(pickKey(item, "text", "text"), `${path}[${i}].text`, "text", errors);
|
|
630
|
+
if (!cid || !text)
|
|
631
|
+
return undefined;
|
|
632
|
+
if (idSet.has(cid)) {
|
|
633
|
+
errors.push(err(`${path}[${i}].id`, "duplicate", `Duplicate acceptance criterion id "${cid}"`));
|
|
634
|
+
return undefined;
|
|
635
|
+
}
|
|
636
|
+
idSet.add(cid);
|
|
637
|
+
list.push({ id: cid, text });
|
|
638
|
+
}
|
|
639
|
+
return { list, idSet };
|
|
640
|
+
}
|
|
641
|
+
/** Returns false if validation errors were added for this field. */
|
|
642
|
+
function addOptionalAcceptanceCriterionIds(goal, raw, path, errors, allowedAcIds) {
|
|
643
|
+
const acRaw = pickKey(raw, "acceptance_criterion_ids", "acceptanceCriterionIds");
|
|
644
|
+
if (acRaw === undefined || acRaw === null)
|
|
645
|
+
return true;
|
|
646
|
+
if (!Array.isArray(acRaw) || !acRaw.every((x) => typeof x === "string")) {
|
|
647
|
+
errors.push(err(`${path}.acceptance_criterion_ids`, "type", "acceptance_criterion_ids must be string[]"));
|
|
648
|
+
return false;
|
|
649
|
+
}
|
|
650
|
+
const ids = acRaw.map((s) => s.trim()).filter((s) => s.length > 0);
|
|
651
|
+
if (ids.length === 0)
|
|
652
|
+
return true;
|
|
653
|
+
if (allowedAcIds === undefined) {
|
|
654
|
+
errors.push(err(`${path}.acceptance_criterion_ids`, "requires_suite_ac", "acceptance_criterion_ids requires suite-level acceptance_criteria"));
|
|
655
|
+
return false;
|
|
656
|
+
}
|
|
657
|
+
for (let i = 0; i < ids.length; i++) {
|
|
658
|
+
const cid = ids[i];
|
|
659
|
+
if (!allowedAcIds.has(cid)) {
|
|
660
|
+
errors.push(err(`${path}.acceptance_criterion_ids`, "unknown_ac_id", `Unknown acceptance criterion id "${cid}" (not in suite acceptance_criteria)`));
|
|
661
|
+
return false;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
goal.acceptanceCriterionIds = ids;
|
|
665
|
+
return true;
|
|
666
|
+
}
|
|
667
|
+
function parseGoal(raw, path, errors, allowedAcIds, orderedAcIds) {
|
|
313
668
|
if (!isPlainObject(raw)) {
|
|
314
669
|
errors.push(err(path, "type", "goal must be an object"));
|
|
315
670
|
return undefined;
|
|
@@ -322,11 +677,227 @@ function parseGoal(raw, path, errors) {
|
|
|
322
677
|
return undefined;
|
|
323
678
|
}
|
|
324
679
|
const type = typeRaw;
|
|
680
|
+
const emRaw = pickKey(raw, "execution_mode", "executionMode");
|
|
681
|
+
let executionMode = "observe";
|
|
682
|
+
if (emRaw !== undefined && emRaw !== null) {
|
|
683
|
+
if (emRaw !== "observe" && emRaw !== "agent" && emRaw !== "ac_sequence") {
|
|
684
|
+
errors.push(err(`${path}.execution_mode`, "enum", `execution_mode must be observe, agent, or ac_sequence (got ${JSON.stringify(emRaw)})`));
|
|
685
|
+
return undefined;
|
|
686
|
+
}
|
|
687
|
+
executionMode = emRaw;
|
|
688
|
+
}
|
|
689
|
+
const acSeqKey = pickKey(raw, "ac_sequence", "acSequence");
|
|
690
|
+
if (acSeqKey != null && executionMode !== "ac_sequence") {
|
|
691
|
+
errors.push(err(`${path}.ac_sequence`, "forbidden", "ac_sequence is only allowed when execution_mode is ac_sequence"));
|
|
692
|
+
return undefined;
|
|
693
|
+
}
|
|
694
|
+
const missionRaw = pickKey(raw, "mission", "mission");
|
|
695
|
+
const missionExecRaw = pickKey(raw, "mission_executor", "missionExecutor");
|
|
696
|
+
const missionConstraintsRaw = pickKey(raw, "mission_constraints", "missionConstraints");
|
|
697
|
+
if (executionMode === "agent") {
|
|
698
|
+
if (type !== "browser") {
|
|
699
|
+
errors.push(err(`${path}.execution_mode`, "agent_browser_only", "execution_mode: agent is only valid for type: browser"));
|
|
700
|
+
return undefined;
|
|
701
|
+
}
|
|
702
|
+
const afterAgentKey = pickKey(raw, "after_agent", "afterAgent");
|
|
703
|
+
let afterAgent;
|
|
704
|
+
if (afterAgentKey !== undefined && afterAgentKey !== null) {
|
|
705
|
+
afterAgent = parseAfterAgent(afterAgentKey, `${path}.after_agent`, errors);
|
|
706
|
+
if (!afterAgent)
|
|
707
|
+
return undefined;
|
|
708
|
+
}
|
|
709
|
+
const mission = asString(missionRaw, `${path}.mission`, "mission", errors);
|
|
710
|
+
const missionExecutor = asString(missionExecRaw, `${path}.mission_executor`, "mission_executor", errors);
|
|
711
|
+
if (!mission || !missionExecutor)
|
|
712
|
+
return undefined;
|
|
713
|
+
const missionConstraints = parseMissionConstraints(missionConstraintsRaw, `${path}.mission_constraints`, errors);
|
|
714
|
+
if (missionConstraintsRaw != null && missionConstraints === undefined)
|
|
715
|
+
return undefined;
|
|
716
|
+
const scRaw = pickKey(raw, "success_criteria", "successCriteria");
|
|
717
|
+
let successCriteria;
|
|
718
|
+
if (afterAgent?.successCriteria) {
|
|
719
|
+
successCriteria = afterAgent.successCriteria;
|
|
720
|
+
}
|
|
721
|
+
else {
|
|
722
|
+
successCriteria = parseSuccessCriteria(scRaw, `${path}.success_criteria`, errors);
|
|
723
|
+
}
|
|
724
|
+
if (!id || !description || !successCriteria)
|
|
725
|
+
return undefined;
|
|
726
|
+
const goal = {
|
|
727
|
+
id,
|
|
728
|
+
type,
|
|
729
|
+
description,
|
|
730
|
+
successCriteria,
|
|
731
|
+
executionMode: "agent",
|
|
732
|
+
mission,
|
|
733
|
+
missionExecutor,
|
|
734
|
+
};
|
|
735
|
+
if (missionConstraints)
|
|
736
|
+
goal.missionConstraints = missionConstraints;
|
|
737
|
+
if (afterAgent?.startPath !== undefined) {
|
|
738
|
+
goal.afterAgent = { startPath: afterAgent.startPath };
|
|
739
|
+
}
|
|
740
|
+
const startPathRaw = pickKey(raw, "start_path", "startPath");
|
|
741
|
+
if (startPathRaw !== undefined && startPathRaw !== null) {
|
|
742
|
+
const sp = asString(startPathRaw, `${path}.start_path`, "start_path", errors);
|
|
743
|
+
if (sp) {
|
|
744
|
+
if (sp.includes("..")) {
|
|
745
|
+
errors.push(err(`${path}.start_path`, "unsafe", "start_path must not contain '..'"));
|
|
746
|
+
}
|
|
747
|
+
else {
|
|
748
|
+
goal.startPath = sp;
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
const pre = pickKey(raw, "preconditions", "preconditions");
|
|
753
|
+
if (pre !== undefined && pre !== null) {
|
|
754
|
+
if (!Array.isArray(pre) || !pre.every((x) => typeof x === "string")) {
|
|
755
|
+
errors.push(err(`${path}.preconditions`, "type", "preconditions must be string[]"));
|
|
756
|
+
return undefined;
|
|
757
|
+
}
|
|
758
|
+
goal.preconditions = pre;
|
|
759
|
+
}
|
|
760
|
+
const clean = pickKey(raw, "cleanup", "cleanup");
|
|
761
|
+
if (clean !== undefined && clean !== null) {
|
|
762
|
+
if (!Array.isArray(clean) || !clean.every((x) => typeof x === "string")) {
|
|
763
|
+
errors.push(err(`${path}.cleanup`, "type", "cleanup must be string[]"));
|
|
764
|
+
return undefined;
|
|
765
|
+
}
|
|
766
|
+
goal.cleanup = clean;
|
|
767
|
+
}
|
|
768
|
+
const ex = pickKey(raw, "exclusive_with", "exclusiveWith");
|
|
769
|
+
if (ex !== undefined && ex !== null) {
|
|
770
|
+
if (!Array.isArray(ex) || !ex.every((x) => typeof x === "string")) {
|
|
771
|
+
errors.push(err(`${path}.exclusive_with`, "type", "exclusive_with must be string[]"));
|
|
772
|
+
return undefined;
|
|
773
|
+
}
|
|
774
|
+
goal.exclusiveWith = ex;
|
|
775
|
+
}
|
|
776
|
+
const tags = pickKey(raw, "tags", "tags");
|
|
777
|
+
if (tags !== undefined && tags !== null) {
|
|
778
|
+
if (!Array.isArray(tags) || !tags.every((x) => typeof x === "string")) {
|
|
779
|
+
errors.push(err(`${path}.tags`, "type", "tags must be string[]"));
|
|
780
|
+
return undefined;
|
|
781
|
+
}
|
|
782
|
+
goal.tags = tags;
|
|
783
|
+
}
|
|
784
|
+
if (!addOptionalAcceptanceCriterionIds(goal, raw, path, errors, allowedAcIds))
|
|
785
|
+
return undefined;
|
|
786
|
+
return goal;
|
|
787
|
+
}
|
|
788
|
+
if (executionMode === "ac_sequence") {
|
|
789
|
+
if (type !== "browser") {
|
|
790
|
+
errors.push(err(`${path}.execution_mode`, "ac_sequence_browser_only", "execution_mode: ac_sequence is only valid for type: browser"));
|
|
791
|
+
return undefined;
|
|
792
|
+
}
|
|
793
|
+
if (!allowedAcIds || orderedAcIds.length === 0) {
|
|
794
|
+
errors.push(err(`${path}.execution_mode`, "requires_suite_ac", "execution_mode: ac_sequence requires suite-level acceptance_criteria"));
|
|
795
|
+
return undefined;
|
|
796
|
+
}
|
|
797
|
+
if (acSeqKey === undefined || acSeqKey === null) {
|
|
798
|
+
errors.push(err(`${path}.ac_sequence`, "required", "execution_mode: ac_sequence requires an ac_sequence block"));
|
|
799
|
+
return undefined;
|
|
800
|
+
}
|
|
801
|
+
const acSequence = parseAcSequence(acSeqKey, `${path}.ac_sequence`, errors, allowedAcIds);
|
|
802
|
+
if (!acSequence)
|
|
803
|
+
return undefined;
|
|
804
|
+
const scRawAc = pickKey(raw, "success_criteria", "successCriteria");
|
|
805
|
+
let successCriteriaAc;
|
|
806
|
+
if (scRawAc === undefined || scRawAc === null) {
|
|
807
|
+
successCriteriaAc = {};
|
|
808
|
+
}
|
|
809
|
+
else {
|
|
810
|
+
const p = parseSuccessCriteria(scRawAc, `${path}.success_criteria`, errors, { allowEmpty: true });
|
|
811
|
+
if (!p)
|
|
812
|
+
return undefined;
|
|
813
|
+
successCriteriaAc = p;
|
|
814
|
+
}
|
|
815
|
+
if (!id || !description)
|
|
816
|
+
return undefined;
|
|
817
|
+
const goalAc = {
|
|
818
|
+
id,
|
|
819
|
+
type,
|
|
820
|
+
description,
|
|
821
|
+
successCriteria: successCriteriaAc,
|
|
822
|
+
executionMode: "ac_sequence",
|
|
823
|
+
acSequence,
|
|
824
|
+
};
|
|
825
|
+
const startPathRawAc = pickKey(raw, "start_path", "startPath");
|
|
826
|
+
if (startPathRawAc !== undefined && startPathRawAc !== null) {
|
|
827
|
+
const sp = asString(startPathRawAc, `${path}.start_path`, "start_path", errors);
|
|
828
|
+
if (sp) {
|
|
829
|
+
if (sp.includes("..")) {
|
|
830
|
+
errors.push(err(`${path}.start_path`, "unsafe", "start_path must not contain '..'"));
|
|
831
|
+
}
|
|
832
|
+
else {
|
|
833
|
+
goalAc.startPath = sp;
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
const preAc = pickKey(raw, "preconditions", "preconditions");
|
|
838
|
+
if (preAc !== undefined && preAc !== null) {
|
|
839
|
+
if (!Array.isArray(preAc) || !preAc.every((x) => typeof x === "string")) {
|
|
840
|
+
errors.push(err(`${path}.preconditions`, "type", "preconditions must be string[]"));
|
|
841
|
+
return undefined;
|
|
842
|
+
}
|
|
843
|
+
goalAc.preconditions = preAc;
|
|
844
|
+
}
|
|
845
|
+
const cleanAc = pickKey(raw, "cleanup", "cleanup");
|
|
846
|
+
if (cleanAc !== undefined && cleanAc !== null) {
|
|
847
|
+
if (!Array.isArray(cleanAc) || !cleanAc.every((x) => typeof x === "string")) {
|
|
848
|
+
errors.push(err(`${path}.cleanup`, "type", "cleanup must be string[]"));
|
|
849
|
+
return undefined;
|
|
850
|
+
}
|
|
851
|
+
goalAc.cleanup = cleanAc;
|
|
852
|
+
}
|
|
853
|
+
const exAc = pickKey(raw, "exclusive_with", "exclusiveWith");
|
|
854
|
+
if (exAc !== undefined && exAc !== null) {
|
|
855
|
+
if (!Array.isArray(exAc) || !exAc.every((x) => typeof x === "string")) {
|
|
856
|
+
errors.push(err(`${path}.exclusive_with`, "type", "exclusive_with must be string[]"));
|
|
857
|
+
return undefined;
|
|
858
|
+
}
|
|
859
|
+
goalAc.exclusiveWith = exAc;
|
|
860
|
+
}
|
|
861
|
+
const tagsAc = pickKey(raw, "tags", "tags");
|
|
862
|
+
if (tagsAc !== undefined && tagsAc !== null) {
|
|
863
|
+
if (!Array.isArray(tagsAc) || !tagsAc.every((x) => typeof x === "string")) {
|
|
864
|
+
errors.push(err(`${path}.tags`, "type", "tags must be string[]"));
|
|
865
|
+
return undefined;
|
|
866
|
+
}
|
|
867
|
+
goalAc.tags = tagsAc;
|
|
868
|
+
}
|
|
869
|
+
if (!addOptionalAcceptanceCriterionIds(goalAc, raw, path, errors, allowedAcIds))
|
|
870
|
+
return undefined;
|
|
871
|
+
if (goalAc.acceptanceCriterionIds === undefined || goalAc.acceptanceCriterionIds.length === 0) {
|
|
872
|
+
goalAc.acceptanceCriterionIds = [...orderedAcIds];
|
|
873
|
+
}
|
|
874
|
+
return goalAc;
|
|
875
|
+
}
|
|
876
|
+
if (missionRaw != null || missionExecRaw != null || missionConstraintsRaw != null) {
|
|
877
|
+
errors.push(err(`${path}.mission`, "forbidden", "mission, mission_executor, and mission_constraints are only allowed when execution_mode is agent"));
|
|
878
|
+
return undefined;
|
|
879
|
+
}
|
|
880
|
+
if (pickKey(raw, "after_agent", "afterAgent") != null) {
|
|
881
|
+
errors.push(err(`${path}.after_agent`, "forbidden", "after_agent is only allowed when execution_mode is agent"));
|
|
882
|
+
return undefined;
|
|
883
|
+
}
|
|
325
884
|
const scRaw = pickKey(raw, "success_criteria", "successCriteria");
|
|
326
885
|
const successCriteria = parseSuccessCriteria(scRaw, `${path}.success_criteria`, errors);
|
|
327
886
|
if (!id || !description || !successCriteria)
|
|
328
887
|
return undefined;
|
|
329
888
|
const goal = { id, type, description, successCriteria };
|
|
889
|
+
const startPathRaw = pickKey(raw, "start_path", "startPath");
|
|
890
|
+
if (startPathRaw !== undefined && startPathRaw !== null) {
|
|
891
|
+
const sp = asString(startPathRaw, `${path}.start_path`, "start_path", errors);
|
|
892
|
+
if (sp) {
|
|
893
|
+
if (sp.includes("..")) {
|
|
894
|
+
errors.push(err(`${path}.start_path`, "unsafe", "start_path must not contain '..'"));
|
|
895
|
+
}
|
|
896
|
+
else {
|
|
897
|
+
goal.startPath = sp;
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
}
|
|
330
901
|
const pre = pickKey(raw, "preconditions", "preconditions");
|
|
331
902
|
if (pre !== undefined && pre !== null) {
|
|
332
903
|
if (!Array.isArray(pre) || !pre.every((x) => typeof x === "string")) {
|
|
@@ -359,6 +930,8 @@ function parseGoal(raw, path, errors) {
|
|
|
359
930
|
}
|
|
360
931
|
goal.tags = tags;
|
|
361
932
|
}
|
|
933
|
+
if (!addOptionalAcceptanceCriterionIds(goal, raw, path, errors, allowedAcIds))
|
|
934
|
+
return undefined;
|
|
362
935
|
return goal;
|
|
363
936
|
}
|
|
364
937
|
function parseSuite(raw, index, path, envIds, errors) {
|
|
@@ -374,6 +947,12 @@ function parseSuite(raw, index, path, envIds, errors) {
|
|
|
374
947
|
errors.push(err(`${path}.environment`, "unknown_environment", `Suite "${id}" references unknown environment "${environment}". Defined environments: ${[...envIds].join(", ") || "(none)"}`));
|
|
375
948
|
return undefined;
|
|
376
949
|
}
|
|
950
|
+
const acParsed = parseSuiteAcceptanceCriteria(pickKey(raw, "acceptance_criteria", "acceptanceCriteria"), `${path}.acceptance_criteria`, errors);
|
|
951
|
+
if (pickKey(raw, "acceptance_criteria", "acceptanceCriteria") != null && acParsed === undefined) {
|
|
952
|
+
return undefined;
|
|
953
|
+
}
|
|
954
|
+
const allowedAcIds = acParsed?.idSet;
|
|
955
|
+
const orderedAcIds = acParsed?.list.map((c) => c.id) ?? [];
|
|
377
956
|
const goalsRaw = pickKey(raw, "goals", "goals");
|
|
378
957
|
if (!Array.isArray(goalsRaw) || goalsRaw.length === 0) {
|
|
379
958
|
errors.push(err(`${path}.goals`, "required", `Suite "${id}" must declare a non-empty goals array`));
|
|
@@ -381,7 +960,7 @@ function parseSuite(raw, index, path, envIds, errors) {
|
|
|
381
960
|
}
|
|
382
961
|
const goals = [];
|
|
383
962
|
goalsRaw.forEach((g, gi) => {
|
|
384
|
-
const goal = parseGoal(g, `${path}.goals[${gi}]`, errors);
|
|
963
|
+
const goal = parseGoal(g, `${path}.goals[${gi}]`, errors, allowedAcIds, orderedAcIds);
|
|
385
964
|
if (goal)
|
|
386
965
|
goals.push(goal);
|
|
387
966
|
});
|
|
@@ -394,6 +973,15 @@ function parseSuite(raw, index, path, envIds, errors) {
|
|
|
394
973
|
if (d)
|
|
395
974
|
suite.description = d;
|
|
396
975
|
}
|
|
976
|
+
const us = pickKey(raw, "user_story", "userStory");
|
|
977
|
+
if (us !== undefined && us !== null) {
|
|
978
|
+
const story = asString(us, `${path}.user_story`, "user_story", errors);
|
|
979
|
+
if (!story)
|
|
980
|
+
return undefined;
|
|
981
|
+
suite.userStory = story;
|
|
982
|
+
}
|
|
983
|
+
if (acParsed)
|
|
984
|
+
suite.acceptanceCriteria = acParsed.list;
|
|
397
985
|
const tags = pickKey(raw, "tags", "tags");
|
|
398
986
|
if (tags !== undefined && tags !== null) {
|
|
399
987
|
if (!Array.isArray(tags) || !tags.every((x) => typeof x === "string")) {
|
|
@@ -516,33 +1104,16 @@ export function validateConfigDocument(raw) {
|
|
|
516
1104
|
adapterHooks,
|
|
517
1105
|
targetUrlOverrides,
|
|
518
1106
|
};
|
|
519
|
-
validateMvpRunnerRestrictions(config, errors);
|
|
520
1107
|
if (errors.length > 0) {
|
|
521
1108
|
return { ok: false, errors };
|
|
522
1109
|
}
|
|
523
1110
|
return { ok: true, config };
|
|
524
1111
|
}
|
|
525
1112
|
/**
|
|
526
|
-
*
|
|
527
|
-
* Reject non-empty values so repos do not rely on silent no-ops.
|
|
1113
|
+
* Reserved for future policy checks (e.g. schema_version gates). Shell hooks are executed when not skipped via env; see runner docs.
|
|
528
1114
|
*/
|
|
529
|
-
export function validateMvpRunnerRestrictions(
|
|
530
|
-
|
|
531
|
-
errors.push(err("adapter_hooks", "unsupported_mvp", "This MVP runner does not execute adapter_hooks. Remove all entries or use adapter_hooks: {}."));
|
|
532
|
-
}
|
|
533
|
-
for (let si = 0; si < config.suites.length; si++) {
|
|
534
|
-
const suite = config.suites[si];
|
|
535
|
-
for (let gi = 0; gi < suite.goals.length; gi++) {
|
|
536
|
-
const goal = suite.goals[gi];
|
|
537
|
-
const base = `suites[${si}].goals[${gi}]`;
|
|
538
|
-
if (goal.preconditions !== undefined && goal.preconditions.length > 0) {
|
|
539
|
-
errors.push(err(`${base}.preconditions`, "unsupported_mvp", `Goal "${goal.id}": preconditions are not executed in this MVP runner. Remove the preconditions array.`));
|
|
540
|
-
}
|
|
541
|
-
if (goal.cleanup !== undefined && goal.cleanup.length > 0) {
|
|
542
|
-
errors.push(err(`${base}.cleanup`, "unsupported_mvp", `Goal "${goal.id}": cleanup is not executed in this MVP runner. Remove the cleanup array.`));
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
}
|
|
1115
|
+
export function validateMvpRunnerRestrictions(_config, _errors) {
|
|
1116
|
+
/* no-op: adapter_hooks, preconditions, and cleanup are supported by the runner */
|
|
546
1117
|
}
|
|
547
1118
|
function parseStringMap(raw, path, errors, valueLabel) {
|
|
548
1119
|
if (raw === undefined || raw === null)
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,gBAAgB;IAChB,eAAe;IACf,MAAM;IACN,UAAU;IACV,cAAc;IACd,QAAQ;IACR,eAAe;IACf,cAAc;IACd,sBAAsB;IACtB,oBAAoB;CACrB,CAAC,CAAC;AAEH,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe;IACtD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa,EAAE,MAAqB;IAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa,EAAE,MAAqB;IACrF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,iCAAiC,CAAC,CAAC,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa,EAAE,MAAqB;IAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,6BAA6B,CAAC,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CACnB,GAAY,EACZ,IAAY,EACZ,MAAqB;IAErB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,wCAAwC,CAAC,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,wEAAwE,CAAC,CAAC,CAAC;YACxG,SAAS;QACX,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,CAAC,EACD,YAAY,EACZ,qFAAqF,CACtF,CACF,CAAC;YACF,SAAS;QACX,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IACzE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC9E,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,UAAU,EAAE,sCAAsC,CAAC,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,GAAG,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACtF,MAAM,MAAM,GAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IAChD,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,cAAc,GAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE5E,SAAS,mBAAmB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IAC5E,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,mCAAmC,CAAC,CAAC,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CACpB,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,EAC1C,GAAG,IAAI,cAAc,EACrB,aAAa,EACb,MAAM,CACP,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CACpB,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,cAAc,CAAC,EAC7C,GAAG,IAAI,gBAAgB,EACvB,eAAe,EACf,MAAM,CACP,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,2CAA2C,CAAC,CAAC,CAAC;QACzF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,cAAc,EACrB,MAAM,EACN,8DAA8D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CACvF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,gBAAgB,EACvB,MAAM,EACN,gEAAgE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CACzF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,WAAW,EAAE,KAAsC;QACnD,YAAY,EAAE,KAAuC;QACrD,OAAO,EAAE,UAAU;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IACtE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,CAAC,CAAC;IAClH,MAAM,gBAAgB,GAAG,QAAQ,CAC/B,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,EACtD,GAAG,IAAI,qBAAqB,EAC5B,oBAAoB,EACpB,MAAM,CACP,CAAC;IACF,MAAM,cAAc,GAAG,mBAAmB,CACxC,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EACjD,GAAG,IAAI,kBAAkB,EACzB,MAAM,CACP,CAAC;IACF,MAAM,CAAC,GAAmB,EAAE,CAAC;IAC7B,IAAI,WAAW;QAAE,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;IAC7C,IAAI,gBAAgB,KAAK,SAAS;QAAE,CAAC,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC1E,IAAI,cAAc;QAAE,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CACvB,EAAU,EACV,GAAY,EACZ,IAAY,EACZ,MAAqB;IAErB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACxE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,QAAwC,CAAC;IAC7C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACtD,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC;SAAM,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,YAAY,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;QACrG,QAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,YAAY,EACnB,MAAM,EACN,6DAA6D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAC5F,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GACX,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI;QAC7C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,QAAQ,EAAE,sEAAsE,CAAC,CAAC,CAAC;QACvH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,OAAO,GAAuB,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACvG,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IACrD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvF,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACjD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,GAAG;YAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IACzE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,MAAM,MAAM,GAAgB,EAAE,EAAE,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC;YAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACpF,IAAI,EAAE;YAAE,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,UAAU,GAAG,UAAsB,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,0CAA0C,CAAC,CAAC,CAAC;YAC5F,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,GAAe,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,eAAe,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAAC;YAClF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,WAAW,GAAG,EAAc,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,EAAc,CAAC;IAClC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAoB,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC5F,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChF,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM;YAAE,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACnD,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,MAAM;YAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GACV,GAAG,CAAC,UAAU,IAAI,IAAI;QACtB,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QACjE,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CACT,GAAG,CACD,IAAI,EACJ,wBAAwB,EACxB,qIAAqI,CACtI,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,SAAS,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IAClE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3F,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,OAAO,EACd,MAAM,EACN,qDAAqD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAChF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,OAAmB,CAAC;IACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,EAAE,GAAG,IAAI,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACxF,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAE9D,MAAM,IAAI,GAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAClE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC3D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;YACpF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,GAAe,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;YACxE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAiB,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAC3D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;YACtF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,EAAc,CAAC;IACtC,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAgB,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CACjB,GAAY,EACZ,KAAa,EACb,IAAY,EACZ,MAAmB,EACnB,MAAqB;IAErB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,KAAK,qBAAqB,CAAC,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACvH,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,cAAc,EACrB,qBAAqB,EACrB,UAAU,EAAE,qCAAqC,WAAW,4BAA4B,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC7H,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,wCAAwC,CAAC,CAAC,CAAC;QACpG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAEvD,MAAM,KAAK,GAAc,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC;YAAE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,IAAgB,CAAC;IAChC,CAAC;IACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,CAAC,CAAC;IACzG,IAAI,EAAE;QAAE,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAClB,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,EACtD,GAAG,IAAI,qBAAqB,EAC5B,oBAAoB,EACpB,MAAM,CACP,CAAC;IACF,IAAI,GAAG,KAAK,SAAS;QAAE,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;IACpD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,GAAG,IAAI,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACrH,IAAI,EAAE;QAAE,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB,EAAE,QAAoC;IAC3E,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAc,EAAE,GAAG,KAAK,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC3E,MAAM,CAAC,WAAW,GAAG,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACrF,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACjF,MAAM,CAAC,cAAc,GAAG,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,GAA4B,EAAE,MAAqB;IACjF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,EAAE,EACF,kBAAkB,EAClB,qBAAqB,CAAC,uGAAuG,CAC9H,CACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,oCAAoC,CAAC,CAAC,EAAE,CAAC;IAC7F,CAAC;IACD,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAClE,IAAI,SAA6B,CAAC;IAClC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,sCAAsC,CAAC,CAAC,CAAC;IACzF,CAAC;SAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,kCAAkC,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAE,yBAA+C,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1E,MAAM,CAAC,IAAI,CACT,GAAG,CACD,gBAAgB,EAChB,aAAa,EACb,+BAA+B,SAAS,iBAAiB,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACrE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,yDAAyD,CAAC,CAAC,CAAC;QACxG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,iCAAiC,CAAC,CAAC,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,YAAY,GAAuC,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAG,eAA2C,CAAC,KAAK,CAAC,EAAE,gBAAgB,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACxH,IAAI,CAAC,EAAE,CAAC;YACN,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEzF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,cAAc,CACjC,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,cAAc,CAAC,EAC7C,eAAe,EACf,MAAM,EACN,sBAAsB,CACvB,CAAC;IACF,MAAM,kBAAkB,GAAG,mBAAmB,CAC5C,OAAO,CAAC,GAAG,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,EAC1D,sBAAsB,EACtB,MAAM,CACP,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,CAAE,yBAA+C,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,2DAA2D,CAAC,CAAC;SACxG,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,sCAAsC,CAAC,CAAC,EAAE,CAAC;IACjG,CAAC;IAED,MAAM,MAAM,GAA2B;QACrC,aAAa,EAAE,SAAmC;QAClD,IAAI,EAAE,UAAU;QAChB,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,YAAY;QACZ,kBAAkB;KACnB,CAAC;IAEF,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,6BAA6B,CAAC,MAA8B,EAAE,MAAqB;IACjG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,IAAI,CACT,GAAG,CACD,eAAe,EACf,iBAAiB,EACjB,8FAA8F,CAC/F,CACF,CAAC;IACJ,CAAC;IACD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAE,CAAC;QACjC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YAC/C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,UAAU,EAAE,WAAW,EAAE,GAAG,CAAC;YAC1C,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtE,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,gBAAgB,EACvB,iBAAiB,EACjB,SAAS,IAAI,CAAC,EAAE,uFAAuF,CACxG,CACF,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,UAAU,EACjB,iBAAiB,EACjB,SAAS,IAAI,CAAC,EAAE,0EAA0E,CAC3F,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CACrB,GAAY,EACZ,IAAY,EACZ,MAAqB,EACrB,UAAkB;IAElB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,uCAAuC,CAAC,CAAC,CAAC;QAC/E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,2EAA2E,CAAC,CAAC,CAAC;YACxH,SAAS;QACX,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAY,EACZ,IAAY,EACZ,MAAqB;IAErB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,4CAA4C,CAAC,CAAC,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA8B,EAC9B,OAAe;IAEf,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE;gBACN,GAAG,CACD,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,OAAO,iBAAiB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CACrG;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA8B,EAC9B,aAAqB;IAErB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE;gBACN,GAAG,CACD,cAAc,EACd,qBAAqB,EACrB,mBAAmB,aAAa,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CACzG;aACF;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,0BAA0B,CACxC,MAA8B,EAC9B,aAAqB;IAErB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,MAAqB;IACtD,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,gBAAgB;IAChB,eAAe;IACf,MAAM;IACN,UAAU;IACV,cAAc;IACd,QAAQ;IACR,eAAe;IACf,cAAc;IACd,sBAAsB;IACtB,oBAAoB;CACrB,CAAC,CAAC;AAEH,SAAS,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,OAAe;IACtD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa,EAAE,MAAqB;IAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAC;QAC5D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,oBAAoB,CAAC,CAAC,CAAC;QAC9D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa,EAAE,MAAqB;IACrF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,iCAAiC,CAAC,CAAC,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc,EAAE,IAAY,EAAE,KAAa,EAAE,MAAqB;IAClF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,6BAA6B,CAAC,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CACnB,GAAY,EACZ,IAAY,EACZ,MAAqB;IAErB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,wCAAwC,CAAC,CAAC,CAAC;QACzE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAC9B,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,wEAAwE,CAAC,CAAC,CAAC;YACxG,SAAS;QACX,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,CAAC,EACD,YAAY,EACZ,qFAAqF,CACtF,CACF,CAAC;YACF,SAAS;QACX,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IACzE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IAC9E,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,UAAU,EAAE,sCAAsC,CAAC,CAAC,CAAC;QAC5F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,EAAE,GAAG,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IACtF,MAAM,MAAM,GAAgB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IAChD,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,cAAc,GAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;AAE5E,SAAS,mBAAmB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IAC5E,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,mCAAmC,CAAC,CAAC,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CACpB,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,EAC1C,GAAG,IAAI,cAAc,EACrB,aAAa,EACb,MAAM,CACP,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CACpB,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,cAAc,CAAC,EAC7C,GAAG,IAAI,gBAAgB,EACvB,eAAe,EACf,MAAM,CACP,CAAC;IACF,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,OAAO,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,2CAA2C,CAAC,CAAC,CAAC;QACzF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,cAAc,EACrB,MAAM,EACN,8DAA8D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CACvF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,gBAAgB,EACvB,MAAM,EACN,gEAAgE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CACzF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO;QACL,WAAW,EAAE,KAAsC;QACnD,YAAY,EAAE,KAAuC;QACrD,OAAO,EAAE,UAAU;KACpB,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IACtE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,4BAA4B,CAAC,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,CAAC,CAAC;IAClH,MAAM,gBAAgB,GAAG,QAAQ,CAC/B,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,EACtD,GAAG,IAAI,qBAAqB,EAC5B,oBAAoB,EACpB,MAAM,CACP,CAAC;IACF,MAAM,cAAc,GAAG,mBAAmB,CACxC,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EACjD,GAAG,IAAI,kBAAkB,EACzB,MAAM,CACP,CAAC;IACF,MAAM,CAAC,GAAmB,EAAE,CAAC;IAC7B,IAAI,WAAW;QAAE,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;IAC7C,IAAI,gBAAgB,KAAK,SAAS;QAAE,CAAC,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC1E,IAAI,cAAc;QAAE,CAAC,CAAC,cAAc,GAAG,cAAc,CAAC;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC;AAED,SAAS,gBAAgB,CACvB,EAAU,EACV,GAAY,EACZ,IAAY,EACZ,MAAqB;IAErB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAC;QACxE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IAC1D,IAAI,QAAwC,CAAC;IAC7C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACtD,QAAQ,GAAG,SAAS,CAAC;IACvB,CAAC;SAAM,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,YAAY,IAAI,WAAW,KAAK,eAAe,EAAE,CAAC;QACrG,QAAQ,GAAG,WAAW,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,YAAY,EACnB,MAAM,EACN,6DAA6D,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAC5F,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GACX,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI;QAC7C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,IAAI,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,OAAO,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,QAAQ,EAAE,sEAAsE,CAAC,CAAC,CAAC;QACvH,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,CAAC,CAAC;IAChF,MAAM,OAAO,GAAuB,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACvG,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACxD,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IACrD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IAC7E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvF,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACjD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,GAAG;YAAE,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IACzE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;QACjE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IAC1B,MAAM,MAAM,GAAgB,EAAE,EAAE,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC;YAAE,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC;YAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACpF,IAAI,EAAE;YAAE,MAAM,CAAC,eAAe,GAAG,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IAChF,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,uCAAuC,CAAC,CAAC,CAAC;QACxE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;YACpF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,YAAY,GAAG,EAAc,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,GAAY,EAAE,IAAY,EAAE,MAAqB;IACxE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,CAAC;YACN,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE,QAAQ,EAAE,kCAAkC,CAAC,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAChE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,oBAAoB,CAAC,GAAG,EAAE,GAAG,IAAI,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACzE,IAAI,EAAE;YAAE,GAAG,CAAC,eAAe,GAAG,EAAE,CAAC;IACnC,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,6DAA6D,CAAC,CAAC,CAAC;QAC/F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,oBAAoB,CAC3B,GAAY,EACZ,IAAY,EACZ,MAAqB,EACrB,IAA+B;IAE/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,OAAO,CAAC,CAAC;QAClF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,IAAI,EACJ,kBAAkB,EAClB,4FAA4F,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACpH,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,GAAG,IAAI,SAAS,EAAE,eAAe,EAAE,wEAAwE,CAAC,CACjH,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,GAAsB,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAC5E,IAAI,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IAC7D,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACpD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YACnC,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,UAAU,GAAG,UAAsB,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,0CAA0C,CAAC,CAAC,CAAC;YAC5F,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,GAAe,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,eAAe,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAAC;YAClF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,WAAW,GAAG,EAAc,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACrD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,EAAc,CAAC;IAClC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAoB,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC5F,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,CAAC,GAAG,oBAAoB,CAAC,IAAI,EAAE,GAAG,IAAI,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAChF,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM;YAAE,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC;IACnD,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,MAAM;YAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GACV,GAAG,CAAC,UAAU,IAAI,IAAI;QACtB,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,IAAI,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;QACjE,GAAG,CAAC,WAAW,IAAI,IAAI,CAAC;IAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,IAAI,CACT,GAAG,CACD,IAAI,EACJ,wBAAwB,EACxB,6IAA6I,CAC9I,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,wBAAwB,CAC/B,GAAY,EACZ,IAAY,EACZ,MAAqB,EACrB,YAAyB;IAEzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,qCAAqC,CAAC,CAAC,CAAC;QACtE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACvF,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,eAAe,EAAE,sBAAsB,IAAI,yCAAyC,CAAC,CAC3G,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAiC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,oCAAoC,CAAC,CAAC,CAAC;YAC/E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACxF,IAAI,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QAC3B,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAC;gBAC3E,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;QACD,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7G,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,qBAAqB,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;gBACzF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,YAAY,GAAG,YAAwB,CAAC;QAC/C,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,eAAe,EAAE,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC;gBAC9E,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,GAA2B,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,eAAe,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;oBACnF,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,YAAY,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;gBACvE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,IAAI,WAA+C,CAAC;IACpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;IAC5D,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;YACrF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,qBAAqB,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrG,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,WAAW,GAAG,EAAE,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,qBAAqB,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;gBAChF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC9D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,OAAO,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,+BAA+B,EAAE,MAAM,EAAE,kCAAkC,CAAC,CAAC,CAAC;gBACrG,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,WAAW,CAAC,aAAa,GAAG,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED,IAAI,OAA2B,CAAC;IAChC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAChD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,EAAE,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC;YAC1E,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,CAAC,IAAI,CACT,GAAG,CACD,IAAI,EACJ,kBAAkB,EAClB,+EAA+E,CAChF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAwB,EAAE,IAAI,EAAE,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;IACxC,IAAI,WAAW,KAAK,SAAS;QAAE,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;IAC7D,IAAI,OAAO,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACjD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CACtB,GAAY,EACZ,IAAY,EACZ,MAAqB,EACrB,YAAyB;IAEzB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAAC;QAChE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAC;IAChE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,EAAE,UAAU,EAAE,wCAAwC,CAAC,CAAC,CAAC;QACjG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,CAAC,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,2BAA2B,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC;YAAE,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAC3B,OAAO,CAAC,QAAQ,EAAE,0BAA0B,EAAE,uBAAuB,CAAC,EACtE,GAAG,IAAI,0CAA0C,EACjD,0BAA0B,EAC1B,MAAM,CACP,CAAC;IACF,IAAI,SAAS,KAAK,SAAS;QAAE,YAAY,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IAChE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,8BAA8B,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAC,CAAC;YACjG,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,YAAY,CAAC,YAAY,GAAG,KAAK,CAAC;IAC7D,CAAC;IAED,IAAI,iBAAqC,CAAC;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;IACtE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,IAAI,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,CAAC,CAAC;QACtF,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,iBAAiB,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,gBAAsD,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAoB,EAAE,MAAM,EAAE,qCAAqC,CAAC,CAAC,CAAC;YAC7F,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,gBAAgB,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,oBAAoB,EAC3B,eAAe,EACf,0BAA0B,CAAC,yCAAyC,CACrE,CACF,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,EAAE,GAAG,oBAAoB,CAAC,CAAC,EAAE,GAAG,IAAI,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC7E,IAAI,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;YAC1B,gBAAgB,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,gBAAsD,CAAC;IAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,CAAC;IACpE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAoB,EAAE,MAAM,EAAE,qCAAqC,CAAC,CAAC,CAAC;YAC7F,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,gBAAgB,GAAG,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,oBAAoB,EAC3B,eAAe,EACf,0BAA0B,CAAC,yCAAyC,CACrE,CACF,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,EAAE,GAAG,IAAI,sBAAsB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YAC1E,IAAI,CAAC,GAAG;gBAAE,OAAO,SAAS,CAAC;YAC3B,gBAAgB,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,UAA6C,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC,CAAC;YAChF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAA0B,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;YAChG,IAAI,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,CAAC;QACD,UAAU,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,MAAM,GAAG,GAAqB,EAAE,YAAY,EAAE,CAAC;IAC/C,IAAI,iBAAiB,KAAK,SAAS;QAAE,GAAG,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAC/E,IAAI,gBAAgB;QAAE,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC9D,IAAI,gBAAgB;QAAE,GAAG,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC9D,IAAI,UAAU;QAAE,GAAG,CAAC,UAAU,GAAG,UAAU,CAAC;IAC5C,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,4BAA4B,CACnC,GAAY,EACZ,IAAY,EACZ,MAAqB;IAErB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,sDAAsD,CAAC,CAAC,CAAC;QACvF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,gDAAgD,CAAC,CAAC,CAAC;QAClF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAoC,EAAE,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,kDAAkD,CAAC,CAAC,CAAC;YAC9F,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAClF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QACpC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,sCAAsC,GAAG,GAAG,CAAC,CAAC,CAAC;YAChG,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC;AAED,oEAAoE;AACpE,SAAS,iCAAiC,CACxC,IAAc,EACd,GAA4B,EAC5B,IAAY,EACZ,MAAqB,EACrB,YAAqC;IAErC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,0BAA0B,EAAE,wBAAwB,CAAC,CAAC;IACjF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,2BAA2B,EAAE,MAAM,EAAE,2CAA2C,CAAC,CAAC,CAAC;QAC1G,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAI,KAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,2BAA2B,EAClC,mBAAmB,EACnB,mEAAmE,CACpE,CACF,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,2BAA2B,EAClC,eAAe,EACf,oCAAoC,GAAG,sCAAsC,CAC9E,CACF,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAChB,GAAY,EACZ,IAAY,EACZ,MAAqB,EACrB,YAAqC,EACrC,YAAsB;IAEtB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,wBAAwB,CAAC,CAAC,CAAC;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACvH,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3F,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,OAAO,EACd,MAAM,EACN,qDAAqD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAChF,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,OAAmB,CAAC;IAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,aAAa,GAAkB,SAAS,CAAC;IAC7C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,iBAAiB,EACxB,MAAM,EACN,8DAA8D,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CACvF,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,aAAa,GAAG,KAAsB,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,QAAQ,IAAI,IAAI,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,cAAc,EACrB,WAAW,EACX,gEAAgE,CACjE,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAC3E,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;IAExF,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC9B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,GAAG,IAAI,iBAAiB,EAAE,oBAAoB,EAAE,uDAAuD,CAAC,CAC7G,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAChE,IAAI,UAAuC,CAAC;QAC5C,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAC1D,UAAU,GAAG,eAAe,CAAC,aAAa,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,CAAC,CAAC;YAC3E,IAAI,CAAC,UAAU;gBAAE,OAAO,SAAS,CAAC;QACpC,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,GAAG,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3E,MAAM,eAAe,GAAG,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QACzG,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe;YAAE,OAAO,SAAS,CAAC;QACnD,MAAM,kBAAkB,GAAG,uBAAuB,CAChD,qBAAqB,EACrB,GAAG,IAAI,sBAAsB,EAC7B,MAAM,CACP,CAAC;QACF,IAAI,qBAAqB,IAAI,IAAI,IAAI,kBAAkB,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAExF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QAClE,IAAI,eAA4C,CAAC;QACjD,IAAI,UAAU,EAAE,eAAe,EAAE,CAAC;YAChC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,eAAe,GAAG,oBAAoB,CAAC,KAAK,EAAE,GAAG,IAAI,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe;YAAE,OAAO,SAAS,CAAC;QAE9D,MAAM,IAAI,GAAa;YACrB,EAAE;YACF,IAAI;YACJ,WAAW;YACX,eAAe;YACf,aAAa,EAAE,OAAO;YACtB,OAAO;YACP,eAAe;SAChB,CAAC;QACF,IAAI,kBAAkB;YAAE,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QACrE,IAAI,UAAU,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,UAAU,GAAG,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,CAAC;QACxD,CAAC;QACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC7D,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAC9E,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE,QAAQ,EAAE,kCAAkC,CAAC,CAAC,CAAC;gBACvF,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACpE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;gBACpF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,GAAe,CAAC;QACvC,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACxE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;gBACxE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,OAAO,GAAG,KAAiB,CAAC;QACnC,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;gBACtF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,aAAa,GAAG,EAAc,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;gBAClE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,CAAC,IAAI,GAAG,IAAgB,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC;YAAE,OAAO,SAAS,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,iBAAiB,EACxB,0BAA0B,EAC1B,6DAA6D,CAC9D,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,iBAAiB,EACxB,mBAAmB,EACnB,sEAAsE,CACvE,CACF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,CAAC,IAAI,CACT,GAAG,CAAC,GAAG,IAAI,cAAc,EAAE,UAAU,EAAE,2DAA2D,CAAC,CACpG,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,IAAI,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAElC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;QACpE,IAAI,iBAAkC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,iBAAiB,GAAG,EAAE,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,oBAAoB,CAAC,OAAO,EAAE,GAAG,IAAI,mBAAmB,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;YAClG,IAAI,CAAC,CAAC;gBAAE,OAAO,SAAS,CAAC;YACzB,iBAAiB,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,MAAM,GAAa;YACvB,EAAE;YACF,IAAI;YACJ,WAAW;YACX,eAAe,EAAE,iBAAiB;YAClC,aAAa,EAAE,aAAa;YAC5B,UAAU;SACX,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAC/D,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5D,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,GAAG,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YAChF,IAAI,EAAE,EAAE,CAAC;gBACP,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE,QAAQ,EAAE,kCAAkC,CAAC,CAAC,CAAC;gBACvF,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;QAC7D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACxE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;gBACpF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,aAAa,GAAG,KAAiB,CAAC;QAC3C,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;gBACxE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,OAAmB,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAC7D,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;gBACtF,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,aAAa,GAAG,IAAgB,CAAC;QAC1C,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;gBAC1E,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;gBAClE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,CAAC,IAAI,GAAG,MAAkB,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC;YAAE,OAAO,SAAS,CAAC;QAClG,IAAI,MAAM,CAAC,sBAAsB,KAAK,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9F,MAAM,CAAC,sBAAsB,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,UAAU,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,IAAI,qBAAqB,IAAI,IAAI,EAAE,CAAC;QAClF,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,UAAU,EACjB,WAAW,EACX,kGAAkG,CACnG,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,IAAI,IAAI,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,cAAc,EACrB,WAAW,EACX,0DAA0D,CAC3D,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,EAAE,GAAG,IAAI,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACxF,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAE9D,MAAM,IAAI,GAAa,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAClE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,GAAG,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAC9E,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,aAAa,EAAE,QAAQ,EAAE,kCAAkC,CAAC,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC;IAC3D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC,CAAC;YACpF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,GAAe,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACxE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC;YACxE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,KAAiB,CAAC;IACnC,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAC3D,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,iBAAiB,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;YACtF,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,EAAc,CAAC;IACtC,CAAC;IACC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAgB,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,iCAAiC,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC;QAAE,OAAO,SAAS,CAAC;IAChG,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,GAAY,EACZ,KAAa,EACb,IAAY,EACZ,MAAmB,EACnB,MAAqB;IAErB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,KAAK,qBAAqB,CAAC,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;IACvH,IAAI,CAAC,EAAE,IAAI,CAAC,WAAW;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CACT,GAAG,CACD,GAAG,IAAI,cAAc,EACrB,qBAAqB,EACrB,UAAU,EAAE,qCAAqC,WAAW,4BAA4B,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAC7H,CACF,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,4BAA4B,CAC3C,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,EACzD,GAAG,IAAI,sBAAsB,EAC7B,MAAM,CACP,CAAC;IACF,IAAI,OAAO,CAAC,GAAG,EAAE,qBAAqB,EAAE,oBAAoB,CAAC,IAAI,IAAI,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAChG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,QAAQ,EAAE,KAAK,CAAC;IACrC,MAAM,YAAY,GAAG,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;IAE3D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,wCAAwC,CAAC,CAAC,CAAC;QACpG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,EAAE,GAAG,IAAI,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QACtF,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAEvD,MAAM,KAAK,GAAc,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACpD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,IAAI,cAAc,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC;YAAE,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,IAAI,aAAa,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,IAAI,QAAQ;QAAE,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC;YAClE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,IAAI,GAAG,IAAgB,CAAC;IAChC,CAAC;IACD,MAAM,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,GAAG,IAAI,eAAe,EAAE,MAAM,CAAC,CAAC;IACzG,IAAI,EAAE;QAAE,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAClB,OAAO,CAAC,GAAG,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,EACtD,GAAG,IAAI,qBAAqB,EAC5B,oBAAoB,EACpB,MAAM,CACP,CAAC;IACF,IAAI,GAAG,KAAK,SAAS;QAAE,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;IACpD,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,EAAE,GAAG,IAAI,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACrH,IAAI,EAAE;QAAE,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC;IAClC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAAgB,EAAE,QAAoC;IAC3E,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,MAAM,MAAM,GAAc,EAAE,GAAG,KAAK,EAAE,CAAC;IACvC,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QAC3E,MAAM,CAAC,WAAW,GAAG,EAAE,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACrF,MAAM,CAAC,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACjF,MAAM,CAAC,cAAc,GAAG,EAAE,GAAG,QAAQ,CAAC,cAAc,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,GAA4B,EAAE,MAAqB;IACjF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CACT,GAAG,CACD,EAAE,EACF,kBAAkB,EAClB,qBAAqB,CAAC,uGAAuG,CAC9H,CACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAY;IACjD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,oCAAoC,CAAC,CAAC,EAAE,CAAC;IAC7F,CAAC;IACD,sBAAsB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;IAClE,IAAI,SAA6B,CAAC;IAClC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,sCAAsC,CAAC,CAAC,CAAC;IACzF,CAAC;SAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,EAAE,kCAAkC,CAAC,CAAC,CAAC;IAClF,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAE,yBAA+C,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1E,MAAM,CAAC,IAAI,CACT,GAAG,CACD,gBAAgB,EAChB,aAAa,EACb,+BAA+B,SAAS,iBAAiB,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACrE,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,yDAAyD,CAAC,CAAC,CAAC;QACxG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,EAAE,iCAAiC,CAAC,CAAC,CAAC;QAChF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,YAAY,GAAuC,EAAE,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,EAAG,eAA2C,CAAC,KAAK,CAAC,EAAE,gBAAgB,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QACxH,IAAI,CAAC,EAAE,CAAC;YACN,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAEzF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IACD,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,KAAK;YAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,cAAc,CACjC,OAAO,CAAC,GAAG,EAAE,eAAe,EAAE,cAAc,CAAC,EAC7C,eAAe,EACf,MAAM,EACN,sBAAsB,CACvB,CAAC;IACF,MAAM,kBAAkB,GAAG,mBAAmB,CAC5C,OAAO,CAAC,GAAG,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,EAC1D,sBAAsB,EACtB,MAAM,CACP,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,SAAS,IAAI,CAAE,yBAA+C,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACxF,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,EAAE,2DAA2D,CAAC,CAAC;SACxG,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,sCAAsC,CAAC,CAAC,EAAE,CAAC;IACjG,CAAC;IAED,MAAM,MAAM,GAA2B;QACrC,aAAa,EAAE,SAAmC;QAClD,IAAI,EAAE,UAAU;QAChB,QAAQ;QACR,YAAY;QACZ,MAAM;QACN,YAAY;QACZ,kBAAkB;KACnB,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,OAA+B,EAAE,OAAsB;IACnG,kFAAkF;AACpF,CAAC;AAED,SAAS,cAAc,CACrB,GAAY,EACZ,IAAY,EACZ,MAAqB,EACrB,UAAkB;IAElB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,uCAAuC,CAAC,CAAC,CAAC;QAC/E,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,2EAA2E,CAAC,CAAC,CAAC;YACxH,SAAS;QACX,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAY,EACZ,IAAY,EACZ,MAAqB;IAErB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,4CAA4C,CAAC,CAAC,CAAC;QACpF,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QACD,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA8B,EAC9B,OAAe;IAEf,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE;gBACN,GAAG,CACD,QAAQ,EACR,iBAAiB,EACjB,qBAAqB,OAAO,iBAAiB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CACrG;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,MAA8B,EAC9B,aAAqB;IAErB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE;gBACN,GAAG,CACD,cAAc,EACd,qBAAqB,EACrB,mBAAmB,aAAa,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CACzG;aACF;SACF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC;AAC/D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,0BAA0B,CACxC,MAA8B,EAC9B,aAAqB;IAErB,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAC/C,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,MAAqB;IACtD,OAAO,MAAM;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9C,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@restormel/testing-config",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Load and validate restormel-testing.yaml / JSON workspace config.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
|
-
"url": "https://github.com/Allotment-Technology-Ltd/restormel-
|
|
9
|
-
"directory": "packages/config"
|
|
8
|
+
"url": "https://github.com/Allotment-Technology-Ltd/restormel-keys.git",
|
|
9
|
+
"directory": "packages/testing-config"
|
|
10
10
|
},
|
|
11
11
|
"bugs": {
|
|
12
|
-
"url": "https://github.com/Allotment-Technology-Ltd/restormel-
|
|
12
|
+
"url": "https://github.com/Allotment-Technology-Ltd/restormel-keys/issues"
|
|
13
13
|
},
|
|
14
|
-
"homepage": "https://github.com/Allotment-Technology-Ltd/restormel-testing/tree/main/packages/config#readme",
|
|
14
|
+
"homepage": "https://github.com/Allotment-Technology-Ltd/restormel-testing/tree/main/packages/testing-config#readme",
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
34
|
"yaml": "^2.7.0",
|
|
35
|
-
"@restormel/testing-core": "0.1.
|
|
35
|
+
"@restormel/testing-core": "0.1.4"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"typescript": "^5.7.0"
|