@git.zone/cli 5.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/assets/templates/ci_default/.gitea/workflows/default_tags.yaml +0 -21
  2. package/assets/templates/ci_default_gitlab/.gitlab-ci.yml +0 -13
  3. package/assets/templates/ci_default_private/.gitea/workflows/default_tags.yaml +0 -21
  4. package/assets/templates/ci_default_private_gitlab/.gitlab-ci.yml +0 -13
  5. package/dist_ts/00_commitinfo_data.js +1 -1
  6. package/dist_ts/helpers.climode.js +31 -2
  7. package/dist_ts/helpers.workflow.d.ts +10 -0
  8. package/dist_ts/helpers.workflow.js +80 -8
  9. package/dist_ts/mod_release/classes.releasejournal.d.ts +78 -0
  10. package/dist_ts/mod_release/classes.releasejournal.js +511 -0
  11. package/dist_ts/mod_release/helpers.npmartifact.d.ts +32 -0
  12. package/dist_ts/mod_release/helpers.npmartifact.js +358 -0
  13. package/dist_ts/mod_release/helpers.releasebranch.d.ts +1 -0
  14. package/dist_ts/mod_release/helpers.releasebranch.js +54 -6
  15. package/dist_ts/mod_release/helpers.releasepublication.d.ts +24 -0
  16. package/dist_ts/mod_release/helpers.releasepublication.js +293 -0
  17. package/dist_ts/mod_release/index.d.ts +1 -11
  18. package/dist_ts/mod_release/index.js +410 -288
  19. package/package.json +1 -1
  20. package/readme.hints.md +47 -1
  21. package/readme.md +61 -26
  22. package/ts/00_commitinfo_data.ts +1 -1
  23. package/ts/helpers.climode.ts +34 -1
  24. package/ts/helpers.workflow.ts +114 -7
  25. package/ts/mod_release/classes.releasejournal.ts +740 -0
  26. package/ts/mod_release/helpers.npmartifact.ts +553 -0
  27. package/ts/mod_release/helpers.releasebranch.ts +67 -5
  28. package/ts/mod_release/helpers.releasepublication.ts +641 -0
  29. package/ts/mod_release/index.ts +576 -411
@@ -0,0 +1,358 @@
1
+ import * as plugins from "./mod.plugins.js";
2
+ import { releaseArtifactFileName, } from "./classes.releasejournal.js";
3
+ import { assertCredentialFreeGitPushDestination } from "./helpers.releasebranch.js";
4
+ const supportedPnpmVersion = "11.21.0";
5
+ const maximumMetadataResponseBytes = 8 * 1024 * 1024;
6
+ const capabilityCommandTimeoutMs = 30_000;
7
+ const packCommandTimeoutMs = 10 * 60_000;
8
+ const publishCommandTimeoutMs = 5 * 60_000;
9
+ const packageNameRegex = /^(?:@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*|[a-z0-9][a-z0-9._-]*)$/;
10
+ const readPackageIdentity = async (cwdArg) => {
11
+ let packageJson;
12
+ try {
13
+ packageJson = JSON.parse(await plugins.fs.readFile(plugins.path.join(cwdArg, "package.json"), "utf8"));
14
+ }
15
+ catch (error) {
16
+ throw new Error("Unable to read package.json for npm release packaging.", {
17
+ cause: error,
18
+ });
19
+ }
20
+ if (typeof packageJson !== "object" ||
21
+ packageJson === null ||
22
+ Array.isArray(packageJson) ||
23
+ typeof packageJson.name !== "string" ||
24
+ !packageNameRegex.test(packageJson.name) ||
25
+ typeof packageJson.version !== "string") {
26
+ throw new Error("package.json requires a canonical npm name and version.");
27
+ }
28
+ return {
29
+ packageName: packageJson.name,
30
+ version: packageJson.version,
31
+ };
32
+ };
33
+ const requireHelpFragments = (outputArg, fragmentsArg, commandArg) => {
34
+ const missing = fragmentsArg.filter((fragmentArg) => !outputArg.includes(fragmentArg));
35
+ if (missing.length > 0) {
36
+ throw new Error(`pnpm ${commandArg} is missing required exact-release capabilities: ${missing.join(", ")}.`);
37
+ }
38
+ };
39
+ export const assertPnpmReleaseCapability = async (smartshellArg, cwdArg) => {
40
+ const versionResult = await smartshellArg.execSpawn("pnpm", ["--version"], {
41
+ cwd: cwdArg,
42
+ silent: true,
43
+ timeout: capabilityCommandTimeoutMs,
44
+ timeoutKillGraceMs: 5_000,
45
+ });
46
+ const version = versionResult.stdout.trim();
47
+ if (versionResult.exitCode !== 0 || version !== supportedPnpmVersion) {
48
+ throw new Error(`Exact release packaging requires the verified pnpm ${supportedPnpmVersion}; resolved ${version || "unknown"}.`);
49
+ }
50
+ const packHelp = await smartshellArg.execSpawn("pnpm", ["pack", "--help"], {
51
+ cwd: cwdArg,
52
+ silent: true,
53
+ timeout: capabilityCommandTimeoutMs,
54
+ timeoutKillGraceMs: 5_000,
55
+ });
56
+ if (packHelp.exitCode !== 0) {
57
+ throw new Error("Unable to inspect pnpm pack capabilities.");
58
+ }
59
+ requireHelpFragments(packHelp.combinedOutput, ["--out <path>", "--json"], "pack");
60
+ const publishHelp = await smartshellArg.execSpawn("pnpm", ["publish", "--help"], {
61
+ cwd: cwdArg,
62
+ silent: true,
63
+ timeout: capabilityCommandTimeoutMs,
64
+ timeoutKillGraceMs: 5_000,
65
+ });
66
+ if (publishHelp.exitCode !== 0) {
67
+ throw new Error("Unable to inspect pnpm publish capabilities.");
68
+ }
69
+ requireHelpFragments(publishHelp.combinedOutput, [
70
+ "publish [<tarball>|<dir>]",
71
+ "--no-git-checks",
72
+ "--ignore-scripts",
73
+ "--json",
74
+ "--tag <tag>",
75
+ "--access <public|restricted>",
76
+ ], "publish");
77
+ return { version: supportedPnpmVersion };
78
+ };
79
+ const legacyPublishWorkflowPaths = [
80
+ ".gitea/workflows/default_tags.yaml",
81
+ ".gitlab-ci.yml",
82
+ ];
83
+ export const assertNoLegacyNpmPublisher = async (cwdArg) => {
84
+ for (const relativePath of legacyPublishWorkflowPaths) {
85
+ const filePath = plugins.path.join(cwdArg, relativePath);
86
+ let content;
87
+ try {
88
+ content = await plugins.fs.readFile(filePath, "utf8");
89
+ }
90
+ catch (error) {
91
+ if (error.code === "ENOENT") {
92
+ continue;
93
+ }
94
+ throw new Error(`Unable to inspect ${relativePath} for legacy npm publication.`, {
95
+ cause: error,
96
+ });
97
+ }
98
+ const activeContent = content
99
+ .split("\n")
100
+ .filter((lineArg) => !/^\s*#/.test(lineArg))
101
+ .join("\n");
102
+ if (/\bnpmci\s+npm\s+publish\b/.test(activeContent)) {
103
+ throw new Error(`${relativePath} still contains the legacy independent npm publisher. ` +
104
+ "Remove it or apply the Gitzone v6 Gitea workflow template, then commit the workflow change before releasing.");
105
+ }
106
+ }
107
+ };
108
+ export const normalizeNpmRegistryUrl = (valueArg) => {
109
+ if (typeof valueArg !== "string" || !valueArg.trim()) {
110
+ throw new Error("npm registry URLs must be non-empty strings.");
111
+ }
112
+ let url;
113
+ try {
114
+ url = new URL(valueArg.trim());
115
+ }
116
+ catch (error) {
117
+ throw new Error("Invalid npm registry URL.", { cause: error });
118
+ }
119
+ if ((url.protocol !== "https:" && url.protocol !== "http:") ||
120
+ url.username ||
121
+ url.password ||
122
+ url.search ||
123
+ url.hash) {
124
+ throw new Error("npm registry URLs must use credential-free http(s) without query strings or fragments.");
125
+ }
126
+ const pathname = url.pathname.replace(/\/+$/, "");
127
+ return `${url.origin}${pathname}`;
128
+ };
129
+ export const hashReleaseDestination = (valueArg) => {
130
+ assertCredentialFreeGitPushDestination(valueArg);
131
+ return plugins.crypto.createHash("sha256").update(valueArg).digest("hex");
132
+ };
133
+ export const calculateNpmArtifact = async (artifactPathArg, packageNameArg, versionArg) => {
134
+ const stat = await plugins.fs.lstat(artifactPathArg);
135
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size <= 0) {
136
+ throw new Error("Release npm artifact must be a non-empty regular file.");
137
+ }
138
+ const bytes = await plugins.fs.readFile(artifactPathArg);
139
+ return {
140
+ kind: "npm-tarball",
141
+ file: releaseArtifactFileName,
142
+ packageName: packageNameArg,
143
+ version: versionArg,
144
+ size: bytes.byteLength,
145
+ sha1: plugins.crypto.createHash("sha1").update(bytes).digest("hex"),
146
+ sha256: plugins.crypto.createHash("sha256").update(bytes).digest("hex"),
147
+ integrity: `sha512-${plugins.crypto.createHash("sha512").update(bytes).digest("base64")}`,
148
+ };
149
+ };
150
+ const syncFile = async (filePathArg) => {
151
+ const handle = await plugins.fs.open(filePathArg, "r");
152
+ try {
153
+ await handle.sync();
154
+ }
155
+ finally {
156
+ await handle.close();
157
+ }
158
+ };
159
+ export const packNpmArtifact = async (smartshellArg, cwdArg, destinationDirectoryArg, expectedVersionArg) => {
160
+ const identity = await readPackageIdentity(cwdArg);
161
+ if (identity.version !== expectedVersionArg) {
162
+ throw new Error(`package.json version ${identity.version} does not match release ${expectedVersionArg}.`);
163
+ }
164
+ const artifactPath = plugins.path.join(destinationDirectoryArg, releaseArtifactFileName);
165
+ const result = await smartshellArg.execSpawn("pnpm", ["pack", "--out", artifactPath, "--json"], {
166
+ cwd: cwdArg,
167
+ timeout: packCommandTimeoutMs,
168
+ timeoutKillGraceMs: 5_000,
169
+ });
170
+ if (result.exitCode !== 0) {
171
+ throw new Error("pnpm pack failed while creating the exact release artifact.");
172
+ }
173
+ let report;
174
+ try {
175
+ report = JSON.parse(result.stdout.trim());
176
+ }
177
+ catch (error) {
178
+ throw new Error("pnpm pack did not return its required JSON report.", {
179
+ cause: error,
180
+ });
181
+ }
182
+ if (typeof report !== "object" ||
183
+ report === null ||
184
+ Array.isArray(report) ||
185
+ report.name !== identity.packageName ||
186
+ report.version !== identity.version) {
187
+ throw new Error("pnpm pack reported a different package identity.");
188
+ }
189
+ await syncFile(artifactPath);
190
+ return calculateNpmArtifact(artifactPath, identity.packageName, identity.version);
191
+ };
192
+ export const verifyStoredNpmArtifact = async (artifactPathArg, expectedArtifactArg) => {
193
+ const actual = await calculateNpmArtifact(artifactPathArg, expectedArtifactArg.packageName, expectedArtifactArg.version);
194
+ if (actual.size !== expectedArtifactArg.size ||
195
+ actual.sha1 !== expectedArtifactArg.sha1 ||
196
+ actual.sha256 !== expectedArtifactArg.sha256 ||
197
+ actual.integrity !== expectedArtifactArg.integrity) {
198
+ throw new Error("Stored npm artifact no longer matches its release journal identity.");
199
+ }
200
+ };
201
+ export const buildPnpmPublishArgs = (artifactPathArg, registryArg) => [
202
+ "publish",
203
+ artifactPathArg,
204
+ `--registry=${normalizeNpmRegistryUrl(registryArg)}`,
205
+ "--access=public",
206
+ "--tag=latest",
207
+ "--no-git-checks",
208
+ "--ignore-scripts",
209
+ "--json",
210
+ ];
211
+ export const publishNpmArtifact = async (smartshellArg, cwdArg, artifactPathArg, registryArg) => {
212
+ const result = await smartshellArg.execSpawn("pnpm", buildPnpmPublishArgs(artifactPathArg, registryArg), {
213
+ cwd: cwdArg,
214
+ timeout: publishCommandTimeoutMs,
215
+ timeoutKillGraceMs: 5_000,
216
+ });
217
+ return { exitCode: result.exitCode, output: result.combinedOutput };
218
+ };
219
+ const getFetch = (optionsArg) => optionsArg.fetchImplementation || globalThis.fetch;
220
+ const fetchWithoutRedirects = async (urlArg, acceptArg, optionsArg) => {
221
+ const timeoutMs = optionsArg.timeoutMs ?? 10_000;
222
+ return getFetch(optionsArg)(urlArg, {
223
+ method: "GET",
224
+ headers: { accept: acceptArg },
225
+ redirect: "manual",
226
+ signal: AbortSignal.timeout(timeoutMs),
227
+ });
228
+ };
229
+ const cancelResponseBody = (responseArg) => {
230
+ if (responseArg.body && !responseArg.body.locked) {
231
+ void responseArg.body.cancel().catch(() => { });
232
+ }
233
+ };
234
+ const readBoundedResponse = async (responseArg, maximumSizeArg, contextArg) => {
235
+ const contentLength = responseArg.headers.get("content-length");
236
+ if (contentLength &&
237
+ (!/^\d+$/.test(contentLength) || Number(contentLength) > maximumSizeArg)) {
238
+ cancelResponseBody(responseArg);
239
+ throw new Error(`${contextArg} exceeds its maximum response size.`);
240
+ }
241
+ if (!responseArg.body) {
242
+ throw new Error(`${contextArg} response has no body.`);
243
+ }
244
+ const chunks = [];
245
+ let size = 0;
246
+ const reader = responseArg.body.getReader();
247
+ let complete = false;
248
+ try {
249
+ while (true) {
250
+ const item = await reader.read();
251
+ if (item.done) {
252
+ complete = true;
253
+ break;
254
+ }
255
+ size += item.value.byteLength;
256
+ if (size > maximumSizeArg) {
257
+ throw new Error(`${contextArg} exceeds its maximum response size.`);
258
+ }
259
+ chunks.push(item.value);
260
+ }
261
+ }
262
+ finally {
263
+ if (!complete) {
264
+ void reader.cancel().catch(() => { });
265
+ }
266
+ reader.releaseLock();
267
+ }
268
+ return Buffer.concat(chunks.map((chunkArg) => Buffer.from(chunkArg)), size);
269
+ };
270
+ const readBoundedJsonResponse = async (responseArg) => JSON.parse((await readBoundedResponse(responseArg, maximumMetadataResponseBytes, "Registry metadata")).toString("utf8"));
271
+ const getMetadataUrl = (registryArg, packageNameArg, versionArg) => {
272
+ const encodedPackage = encodeURIComponent(packageNameArg);
273
+ return new URL(versionArg
274
+ ? `${normalizeNpmRegistryUrl(registryArg)}/${encodedPackage}/${encodeURIComponent(versionArg)}`
275
+ : `${normalizeNpmRegistryUrl(registryArg)}/${encodedPackage}`);
276
+ };
277
+ export const probeAnonymousNpmArtifact = async (registryArg, artifactArg, tagArg = "latest", optionsArg = {}) => {
278
+ const registry = normalizeNpmRegistryUrl(registryArg);
279
+ try {
280
+ const versionResponse = await fetchWithoutRedirects(getMetadataUrl(registry, artifactArg.packageName, artifactArg.version), "application/json", optionsArg);
281
+ if (versionResponse.status === 404) {
282
+ cancelResponseBody(versionResponse);
283
+ return { status: "absent", code: "absent" };
284
+ }
285
+ if (versionResponse.status !== 200) {
286
+ cancelResponseBody(versionResponse);
287
+ return { status: "inconclusive", code: "registry-response" };
288
+ }
289
+ const metadata = (await readBoundedJsonResponse(versionResponse));
290
+ if (metadata.name !== artifactArg.packageName ||
291
+ metadata.version !== artifactArg.version ||
292
+ metadata.dist?.integrity !== artifactArg.integrity ||
293
+ metadata.dist?.shasum !== artifactArg.sha1 ||
294
+ typeof metadata.dist?.tarball !== "string") {
295
+ return { status: "conflict", code: "metadata-conflict" };
296
+ }
297
+ const tarballUrl = new URL(metadata.dist.tarball);
298
+ const registryUrl = new URL(registry);
299
+ if (tarballUrl.origin !== registryUrl.origin ||
300
+ (tarballUrl.protocol !== "https:" && tarballUrl.protocol !== "http:") ||
301
+ tarballUrl.username ||
302
+ tarballUrl.password ||
303
+ tarballUrl.search ||
304
+ tarballUrl.hash) {
305
+ return { status: "conflict", code: "metadata-conflict" };
306
+ }
307
+ const tarballResponse = await fetchWithoutRedirects(tarballUrl, "application/octet-stream", optionsArg);
308
+ if (tarballResponse.status !== 200) {
309
+ cancelResponseBody(tarballResponse);
310
+ return { status: "inconclusive", code: "registry-response" };
311
+ }
312
+ const bytes = await readBoundedResponse(tarballResponse, artifactArg.size, "Registry tarball");
313
+ if (bytes.byteLength !== artifactArg.size ||
314
+ plugins.crypto.createHash("sha1").update(bytes).digest("hex") !==
315
+ artifactArg.sha1 ||
316
+ plugins.crypto.createHash("sha256").update(bytes).digest("hex") !==
317
+ artifactArg.sha256 ||
318
+ `sha512-${plugins.crypto.createHash("sha512").update(bytes).digest("base64")}` !==
319
+ artifactArg.integrity) {
320
+ return { status: "conflict", code: "tarball-conflict" };
321
+ }
322
+ const packageResponse = await fetchWithoutRedirects(getMetadataUrl(registry, artifactArg.packageName), "application/json", optionsArg);
323
+ if (packageResponse.status !== 200) {
324
+ cancelResponseBody(packageResponse);
325
+ return { status: "inconclusive", code: "registry-response" };
326
+ }
327
+ const packageMetadata = (await readBoundedJsonResponse(packageResponse));
328
+ if (packageMetadata["dist-tags"]?.[tagArg] !== artifactArg.version) {
329
+ return { status: "inconclusive", code: "tag-conflict" };
330
+ }
331
+ return { status: "exact", code: "exact" };
332
+ }
333
+ catch {
334
+ return { status: "inconclusive", code: "network-error" };
335
+ }
336
+ };
337
+ export const waitForAnonymousNpmArtifact = async (registryArg, artifactArg, tagArg = "latest", optionsArg = {}) => {
338
+ const attempts = optionsArg.attempts ?? 10;
339
+ const delayMs = optionsArg.delayMs ?? 1_000;
340
+ if (!Number.isSafeInteger(attempts) || attempts < 1) {
341
+ throw new Error("npm verification attempts must be a positive safe integer.");
342
+ }
343
+ let lastResult = {
344
+ status: "inconclusive",
345
+ code: "network-error",
346
+ };
347
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
348
+ lastResult = await probeAnonymousNpmArtifact(registryArg, artifactArg, tagArg, optionsArg);
349
+ if (lastResult.status === "exact" || lastResult.status === "conflict") {
350
+ return lastResult;
351
+ }
352
+ if (attempt + 1 < attempts) {
353
+ await plugins.smartdelay.delayFor(delayMs);
354
+ }
355
+ }
356
+ return lastResult;
357
+ };
358
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5ucG1hcnRpZmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL21vZF9yZWxlYXNlL2hlbHBlcnMubnBtYXJ0aWZhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsdUJBQXVCLEdBRXhCLE1BQU0sNkJBQTZCLENBQUM7QUFDckMsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFcEYsTUFBTSxvQkFBb0IsR0FBRyxTQUFTLENBQUM7QUFDdkMsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyRCxNQUFNLDBCQUEwQixHQUFHLE1BQU0sQ0FBQztBQUMxQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFDekMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQzNDLE1BQU0sZ0JBQWdCLEdBQUcsd0VBQXdFLENBQUM7QUErQmxHLE1BQU0sbUJBQW1CLEdBQUcsS0FBSyxFQUMvQixNQUFjLEVBQ3FDLEVBQUU7SUFDckQsSUFBSSxXQUFvQixDQUFDO0lBQ3pCLElBQUksQ0FBQztRQUNILFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUN0QixNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FDN0UsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyx3REFBd0QsRUFBRTtZQUN4RSxLQUFLLEVBQUUsS0FBSztTQUNiLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxJQUNFLE9BQU8sV0FBVyxLQUFLLFFBQVE7UUFD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
@@ -36,6 +36,7 @@ export interface IInspectReleaseBranchOptions {
36
36
  }
37
37
  type TSmartshell = plugins.smartshell.Smartshell;
38
38
  export declare const releaseGitEnv: NodeJS.ProcessEnv;
39
+ export declare const assertCredentialFreeGitPushDestination: (valueArg: string) => void;
39
40
  export declare function resolveReleaseMergeFlag(argvArg: Record<string, unknown>): boolean;
40
41
  export declare function parseGitWorktreePorcelain(outputArg: string): IGitWorktree[];
41
42
  export declare function inspectReleaseBranch(optionsArg: IInspectReleaseBranchOptions): Promise<IReleaseBranchContext>;
@@ -5,6 +5,51 @@ export const releaseGitEnv = {
5
5
  ...process.env,
6
6
  GIT_NO_REPLACE_OBJECTS: "1",
7
7
  };
8
+ export const assertCredentialFreeGitPushDestination = (valueArg) => {
9
+ if (!valueArg ||
10
+ valueArg.trim() !== valueArg ||
11
+ /[\u0000-\u001f\u007f]/.test(valueArg)) {
12
+ throw new Error("Git push destinations must be non-empty canonical strings.");
13
+ }
14
+ if (plugins.path.isAbsolute(valueArg) ||
15
+ /^[A-Za-z]:[\\/]/.test(valueArg) ||
16
+ valueArg.startsWith("./") ||
17
+ valueArg.startsWith("../") ||
18
+ valueArg.startsWith("~/")) {
19
+ return;
20
+ }
21
+ if (/^[A-Za-z0-9._-]+@[A-Za-z0-9.-]+:.+$/.test(valueArg)) {
22
+ return;
23
+ }
24
+ let url;
25
+ try {
26
+ url = new URL(valueArg);
27
+ }
28
+ catch (error) {
29
+ if (/^[A-Za-z0-9._/-]+$/.test(valueArg)) {
30
+ return;
31
+ }
32
+ throw new Error("Git push destination syntax is unsupported.", {
33
+ cause: error,
34
+ });
35
+ }
36
+ const sshProtocol = url.protocol === "ssh:" ||
37
+ url.protocol === "git+ssh:" ||
38
+ url.protocol === "ssh+git:";
39
+ if (!sshProtocol &&
40
+ url.protocol !== "https:" &&
41
+ url.protocol !== "http:" &&
42
+ url.protocol !== "git:" &&
43
+ url.protocol !== "file:") {
44
+ throw new Error("Git push destination protocol is unsupported.");
45
+ }
46
+ if (url.password ||
47
+ url.search ||
48
+ url.hash ||
49
+ (!sshProtocol && url.username)) {
50
+ throw new Error("Git push destinations must not contain embedded credentials or parameters.");
51
+ }
52
+ };
8
53
  const readOnlyGitEnv = {
9
54
  ...releaseGitEnv,
10
55
  GIT_NO_LAZY_FETCH: "1",
@@ -62,6 +107,8 @@ const runGit = async (smartshellArg, cwdArg, argsArg, readOnlyArg = false) => sm
62
107
  cwd: cwdArg,
63
108
  env: readOnlyArg ? readOnlyGitEnv : releaseGitEnv,
64
109
  silent: true,
110
+ timeout: argsArg[0] === "fetch" || argsArg[0] === "push" ? 5 * 60_000 : 60_000,
111
+ timeoutKillGraceMs: 5_000,
65
112
  });
66
113
  const requireGitSuccess = (resultArg, messageArg) => {
67
114
  if (resultArg.exitCode !== 0) {
@@ -174,13 +221,14 @@ const resolvePushUrl = async (smartshellArg, cwdArg, remoteArg, readOnlyArg = fa
174
221
  const hasUrlScheme = /^[a-z][a-z0-9+.-]*:\/\//i.test(pushUrl);
175
222
  const isScpStyle = /^(?:[^@/\\:]+@)?[^/\\:]+:.+/.test(pushUrl);
176
223
  const isWindowsAbsolutePath = /^[a-z]:[\\/]/i.test(pushUrl);
177
- if (!hasUrlScheme &&
224
+ const resolvedPushUrl = !hasUrlScheme &&
178
225
  !isScpStyle &&
179
226
  !plugins.path.isAbsolute(pushUrl) &&
180
- !isWindowsAbsolutePath) {
181
- return plugins.path.resolve(cwdArg, pushUrl);
182
- }
183
- return pushUrl;
227
+ !isWindowsAbsolutePath
228
+ ? plugins.path.resolve(cwdArg, pushUrl)
229
+ : pushUrl;
230
+ assertCredentialFreeGitPushDestination(resolvedPushUrl);
231
+ return resolvedPushUrl;
184
232
  };
185
233
  const resolveRemoteMainOid = async (smartshellArg, cwdArg, pushUrlArg, readOnlyArg = false) => {
186
234
  const result = requireGitSuccess(await runGit(smartshellArg, cwdArg, ["ls-remote", "--exit-code", pushUrlArg, mainBranchRef], readOnlyArg), "The configured Git push destination does not expose refs/heads/main.");
@@ -576,4 +624,4 @@ export async function integrateReleaseBranch(smartshellArg, contextArg) {
576
624
  expectedRemoteMainOid: contextArg.sourceOid,
577
625
  };
578
626
  }
579
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5yZWxlYXNlYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX3JlbGVhc2UvaGVscGVycy5yZWxlYXNlYnJhbmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQzFCLE1BQU0sYUFBYSxHQUFHLGNBQWMsVUFBVSxFQUFFLENBQUM7QUEyQ2pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBc0I7SUFDOUMsR0FBRyxPQUFPLENBQUMsR0FBRztJQUNkLHNCQUFzQixFQUFFLEdBQUc7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFzQjtJQUN4QyxHQUFHLGFBQWE7SUFDaEIsaUJBQWlCLEVBQUUsR0FBRztJQUN0QixrQkFBa0IsRUFBRSxHQUFHO0NBQ3hCLENBQUM7QUFFRixNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLE9BQWdDO0lBRWhDLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztRQUMzRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsU0FBaUI7SUFDekQsTUFBTSxTQUFTLEdBQW1CLEVBQUUsQ0FBQztJQUNyQyxJQUFJLE9BQU8sR0FBMEIsRUFBRSxDQUFDO0lBRXhDLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRTtRQUNqQixJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixTQUFTLENBQUMsSUFBSSxD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
627
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5yZWxlYXNlYnJhbmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdHMvbW9kX3JlbGVhc2UvaGVscGVycy5yZWxlYXNlYnJhbmNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFFNUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDO0FBQzFCLE1BQU0sYUFBYSxHQUFHLGNBQWMsVUFBVSxFQUFFLENBQUM7QUEyQ2pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBc0I7SUFDOUMsR0FBRyxPQUFPLENBQUMsR0FBRztJQUNkLHNCQUFzQixFQUFFLEdBQUc7Q0FDNUIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNDQUFzQyxHQUFHLENBQ3BELFFBQWdCLEVBQ1YsRUFBRTtJQUNSLElBQ0UsQ0FBQyxRQUFRO1FBQ1QsUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLFFBQVE7UUFDNUIsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUN0QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFDRCxJQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQztRQUNqQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQ2hDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQ3pCLENBQUM7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUkscUNBQXFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDekQsT0FBTztJQUNULENBQUM7SUFFRCxJQUFJLEdBQVEsQ0FBQztJQUNiLElBQUksQ0FBQztRQUNILEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLElBQUksb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDeEMsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxFQUFFO1lBQzdELEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE1BQU0sV0FBVyxHQUNmLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTTtRQUN2QixHQUFHLENBQUMsUUFBUSxLQUFLLFVBQVU7UUFDM0IsR0FBRyxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUM7SUFDOUIsSUFDRSxDQUFDLFdBQVc7UUFDWixHQUFHLENBQUMsUUFBUSxLQUFLLFFBQVE7UUFDekIsR0FBRyxDQUFDLFFBQVEsS0FBSyxPQUFPO1FBQ3hCLEdBQUcsQ0FBQyxRQUFRLEtBQUssTUFBTTtRQUN2QixHQUFHLENBQUMsUUFBUSxLQUFLLE9BQU8sRUFDeEIsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFDRSxHQUFHLENBQUMsUUFBUTtRQUNaLEdBQUcsQ0FBQyxNQUFNO1FBQ1YsR0FBRyxDQUFDLElBQUk7UUFDUixDQUFDLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFDOUIsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsNEVBQTRFLENBQzdFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQXNCO0lBQ3hDLEdBQUcsYUFBYTtJQUNoQixpQkFBaUIsRUFBRSxHQUFHO0lBQ3RCLGtCQUFrQixFQUFFLEdBQUc7Q0FDeEIsQ0FBQztBQUVGLE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsT0FBZ0M7SUFFaEMsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQzNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxTQUFpQjtJQUN6RCxNQUFNLFNBQVMsR0FBbUIsRUFBRSxDQUFDO0lBQ3JDLElBQUksT0FBTyxHQUEwQixFQUFFLENBQUM7SUFFeEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUM7Z0JBQ2IsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO2dCQUNsQixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7Z0JBQ2xCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtnQkFDdEIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksS0FBSzthQUNwQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxHQUFHLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGLEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLEtBQUssRUFBRSxDQUFDO1lBQ1IsU0FBUztRQUNYLENBQUM7UUFDRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLGNBQWMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUMzRSxNQUFNLEtBQUssR0FBRyxjQUFjLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0UsSUFBSSxHQUFHLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdkIsS0FBSyxFQUFFLENBQUM7WUFDUixPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztRQUN2QixDQUFDO2FBQU0sSUFBSSxHQUFHLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQzthQUFNLElBQUksR0FBRyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLENBQUM7YUFBTSxJQUFJLEdBQUcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUNELEtBQUssRUFBRSxDQUFDO0lBQ1IsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELE1BQU0sTUFBTSxHQUFHLEtBQUssRUFDbEIsYUFBMEIsRUFDMUIsTUFBYyxFQUNkLE9BQWlCLEVBQ2pCLFdBQVcsR0FBRyxLQUFLLEVBQ25CLEVBQUUsQ0FDRixhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDdEMsR0FBRyxFQUFFLE1BQU07SUFDWCxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLGFBQWE7SUFDakQsTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQ0wsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNO0lBQ3ZFLGtCQUFrQixFQUFFLEtBQUs7Q0FDMUIsQ0FBQyxDQUFDO0FBRUwsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixTQUF5QyxFQUN6QyxVQUFrQixFQUNjLEVBQUU7SUFDbEMsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdCLE1BQU0sSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMsQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUcsS0FBSyxFQUNqQyxhQUEwQixFQUMxQixNQUFjLEVBQ2QsV0FBVyxHQUFHLEtBQUssRUFDdUIsRUFBRTtJQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLE1BQU0sQ0FDekIsYUFBYSxFQUNiLE1BQU0sRUFDTixDQUFDLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLEVBQ25DLFdBQVcsQ0FDWixDQUFDO0lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQzVELE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLENBQ2pGLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTztRQUNMLE1BQU0sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7UUFDdkMsR0FBRztLQUNKLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQ3pCLGFBQTBCLEVBQzFCLE1BQWMsRUFDZCxXQUFtQixFQUNuQixVQUFrQixFQUNsQixXQUFXLEdBQUcsS0FBSyxFQUNGLEVBQUU7SUFDbkIsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQzlCLE1BQU0sTUFBTSxDQUNWLGFBQWEsRUFDYixNQUFNLEVBQ04sQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLEdBQUcsV0FBVyxXQUFXLENBQUMsRUFDcEQsV0FBVyxDQUNaLEVBQ0QsVUFBVSxDQUNYLENBQUM7SUFDRixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDOUIsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUMzQixhQUEwQixFQUMxQixNQUFjLEVBQ2QsUUFBZ0IsRUFDaEIsV0FBVyxHQUFHLEtBQUssRUFDSixFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUM5QixNQUFNLE1BQU0sQ0FDVixhQUFhLEVBQ2IsTUFBTSxFQUNOO1FBQ0UsUUFBUTtRQUNSLGdCQUFnQjtRQUNoQix1QkFBdUI7UUFDdkIsMEJBQTBCO0tBQzNCLEVBQ0QsV0FBVyxDQUNaLEVBQ0QseUJBQXlCLFFBQVEsWUFBWSxDQUM5QyxDQUFDO0lBQ0YsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDekIsTUFBTSxJQUFJLEtBQUssQ0FDYixPQUFPLFFBQVEsbUVBQW1FLENBQ25GLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQWUsRUFBb0IsRUFBRTtJQUM3RCxJQUFJLENBQUM7UUFDSCxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUNFLE9BQU8sS0FBSyxLQUFLLFFBQVE7WUFDekIsS0FBSyxLQUFLLElBQUk7WUFDZCxNQUFNLElBQUksS0FBSztZQUNmLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUN2QixDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsT0FBTyxHQUFHLEVBQUU7WUFDcEUsS0FBSyxFQUFFLEtBQUs7U0FDYixDQUFDLENBQUM7SUFDTCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ2hDLGFBQTBCLEVBQzFCLE1BQWMsRUFDZCxRQUFnQixFQUNoQixXQUFXLEdBQUcsS0FBSyxFQUNKLEVBQUU7SUFDakIsTUFBTSxPQUFPLEdBQUc7UUFDZCxZQUFZO1FBQ1osa0JBQWtCO1FBQ2xCLGFBQWE7UUFDYixjQUFjO1FBQ2QsY0FBYztRQUNkLFdBQVc7UUFDWCxjQUFjO1FBQ2QsWUFBWTtLQUNiLENBQUM7SUFDRixLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzdCLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUNsQyxNQUFNLE1BQU0sQ0FDVixhQUFhLEVBQ2IsTUFBTSxFQUNOLENBQUMsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLENBQUMsRUFDbkMsV0FBVyxDQUNaLEVBQ0QsZ0RBQWdELFFBQVEsWUFBWSxDQUNyRSxDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMxRSxJQUFJLE1BQU0sVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FDYixPQUFPLFFBQVEsb0ZBQW9GLENBQ3BHLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxFQUNwQyxhQUEwQixFQUMxQixNQUFjLEVBQ2QsV0FBVyxHQUFHLEtBQUssRUFDSixFQUFFO0lBQ2pCLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUNuQyxNQUFNLE1BQU0sQ0FDVixhQUFhLEVBQ2IsTUFBTSxFQUNOLENBQUMsY0FBYyxFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQyxFQUN4RCxXQUFXLENBQ1osRUFDRCwrQ0FBK0MsQ0FDaEQsQ0FBQztJQUNGLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzlCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0dBQStHLENBQ2hILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FDeEMsTUFBTSxNQUFNLENBQ1YsYUFBYSxFQUNiLE1BQU0sRUFDTixDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLEVBQzFDLFdBQVcsQ0FDWixFQUNELDZDQUE2QyxDQUM5QyxDQUFDO0lBQ0YsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQ3JDLE1BQU0sRUFDTixnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQy9CLENBQUM7SUFDRixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQ2IsOEdBQThHLENBQy9HLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUNFLEtBQUssWUFBWSxLQUFLO1lBQ3RCLE1BQU0sSUFBSSxLQUFLO1lBQ2YsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxFQUNyRCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQ3pCLGFBQTBCLEVBQzFCLE1BQWMsRUFDZCxXQUFXLEdBQUcsS0FBSyxFQUNNLEVBQUU7SUFDM0IsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQzlCLE1BQU0sTUFBTSxDQUNWLGFBQWEsRUFDYixNQUFNLEVBQ04sQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFDekMsV0FBVyxDQUNaLEVBQ0Qsa0NBQWtDLENBQ25DLENBQUM7SUFDRixPQUFPLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLEtBQUssRUFDakMsYUFBMEIsRUFDMUIsTUFBYyxFQUNkLFdBQVcsR0FBRyxLQUFLLEVBQ0YsRUFBRTtJQUNuQixNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FDOUIsTUFBTSxNQUFNLENBQ1YsYUFBYSxFQUNiLE1BQU0sRUFDTixDQUFDLFdBQVcsRUFBRSxvQkFBb0IsQ0FBQyxFQUNuQyxXQUFXLENBQ1osRUFDRCxrREFBa0QsQ0FDbkQsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQzFCLGFBQTBCLEVBQzFCLE1BQWMsRUFDZCxTQUFpQixFQUNqQixXQUFXLEdBQUcsS0FBSyxFQUNGLEVBQUU7SUFDbkIsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQzlCLE1BQU0sTUFBTSxDQUNWLGFBQWEsRUFDYixNQUFNLEVBQ04sQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLEVBQ25ELFdBQVcsQ0FDWixFQUNELGlEQUFpRCxTQUFTLEdBQUcsQ0FDOUQsQ0FBQztJQUNGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNO1NBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUM7U0FDWCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN4QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUVBQW1FLFNBQVMsR0FBRyxDQUNoRixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixNQUFNLFlBQVksR0FBRywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUQsTUFBTSxVQUFVLEdBQUcsNkJBQTZCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9ELE1BQU0scUJBQXFCLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxNQUFNLGVBQWUsR0FDbkIsQ0FBQyxZQUFZO1FBQ2IsQ0FBQyxVQUFVO1FBQ1gsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUM7UUFDakMsQ0FBQyxxQkFBcUI7UUFDcEIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7UUFDdkMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNkLHNDQUFzQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sZUFBZSxDQUFDO0FBQ3pCLENBQUMsQ0FBQztBQUVGLE1BQU0sb0JBQW9CLEdBQUcsS0FBSyxFQUNoQyxhQUEwQixFQUMxQixNQUFjLEVBQ2QsVUFBa0IsRUFDbEIsV0FBVyxHQUFHLEtBQUssRUFDRixFQUFFO0lBQ25CLE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUM5QixNQUFNLE1BQU0sQ0FDVixhQUFhLEVBQ2IsTUFBTSxFQUNOLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsYUFBYSxDQUFDLEVBQ3ZELFdBQVcsQ0FDWixFQUNELHNFQUFzRSxDQUN2RSxDQUFDO0lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2xELE1BQU0sSUFBSSxLQUFLLENBQ2IseUVBQXlFLENBQzFFLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDLENBQUM7QUFFRixNQUFNLGVBQWUsR0FBRyxLQUFLLEVBQzNCLGFBQTBCLEVBQzFCLE1BQWMsRUFDZCxNQUFjLEVBQ2QsV0FBVyxHQUFHLEtBQUssRUFDRCxFQUFFO0lBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sTUFBTSxDQUN6QixhQUFhLEVBQ2IsTUFBTSxFQUNOLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sV0FBVyxDQUFDLEVBQ3hDLFdBQVcsQ0FDWixDQUFDO0lBQ0YsT0FBTyxNQUFNLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFDL0IsYUFBMEIsRUFDMUIsTUFBYyxFQUNkLFdBQVcsR0FBRyxLQUFLLEVBQ0QsRUFBRTtJQUNwQixNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FDOUIsTUFBTSxNQUFNLENBQ1YsYUFBYSxFQUNiLE1BQU0sRUFDTixDQUFDLFdBQVcsRUFBRSx5QkFBeUIsQ0FBQyxFQUN4QyxXQUFXLENBQ1osRUFDRCx3REFBd0QsQ0FDekQsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLENBQUM7QUFDekMsQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ2hDLGFBQTBCLEVBQzFCLE1BQWMsRUFDZCxVQUFrQixFQUNsQixZQUFvQixFQUNwQixXQUFXLEdBQUcsS0FBSyxFQUNKLEVBQUU7SUFDakIsTUFBTSxjQUFjLEdBQUcsTUFBTSxNQUFNLENBQ2pDLGFBQWEsRUFDYixNQUFNLEVBQ04sQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxZQUFZLENBQUMsRUFDekQsV0FBVyxDQUNaLENBQUM7SUFDRixJQUFJLGNBQWMsQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDbEMsSUFBSSxNQUFNLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNsRSxNQUFNLElBQUksS0FBSyxDQUNiLHVIQUF1SCxDQUN4SCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsaUhBQWlILENBQ2xILENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsaUJBQWlCLENBQ25DLE1BQU0sTUFBTSxDQUNWLGFBQWEsRUFDYixNQUFNLEVBQ04sQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLEdBQUcsVUFBVSxLQUFLLFlBQVksRUFBRSxDQUFDLEVBQzFELFdBQVcsQ0FDWixFQUNELGlEQUFpRCxDQUNsRCxDQUFDO0lBQ0YsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUM7UUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLEtBQUssRUFDOUIsYUFBMEIsRUFDMUIsT0FBZSxFQUNmLGNBQXNCLEVBQ3RCLGlCQUEwQixFQUMxQixXQUFXLEdBQUcsS0FBSyxFQUNGLEVBQUU7SUFDbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FDMUMsYUFBYSxFQUNiLE9BQU8sRUFDUCxXQUFXLENBQ1osQ0FBQztJQUNGLElBQUksUUFBUSxDQUFDLEdBQUcsS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUNiLHlHQUF5RyxDQUMxRyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sYUFBYSxDQUM5QixhQUFhLEVBQ2IsT0FBTyxFQUNQLE1BQU0sRUFDTixnREFBZ0QsRUFDaEQsV0FBVyxDQUNaLENBQUM7SUFDRixJQUFJLElBQUksS0FBSyxjQUFjLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksS0FBSyxDQUNiLHVHQUF1RyxDQUN4RyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0scUJBQXFCLENBQ3hDLGFBQWEsRUFDYixPQUFPLEVBQ1AsV0FBVyxDQUNaLENBQUM7SUFDRixJQUFJLGlCQUFpQixJQUFJLE1BQU0sS0FBSyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQ2IsMEdBQTBHLENBQzNHLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxlQUFlLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDbkUsTUFBTSxvQkFBb0IsQ0FBQyxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN4RSxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLEtBQUssRUFDL0IsYUFBMEIsRUFDMUIsTUFBYyxFQUNkLGVBQXVCLEVBQ3ZCLFdBQVcsR0FBRyxLQUFLLEVBQ3dCLEVBQUU7SUFDN0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN4RSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUNoQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxhQUFhLENBQzVDLENBQUM7SUFDRixJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FDYixtRkFBbUYsQ0FDcEYsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0ZBQWdGLENBQ2pGLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FDYiwrRUFBK0UsQ0FDaEYsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtCQUFrQixDQUNyQyxhQUFhLEVBQ2IsVUFBVSxDQUFDLElBQUksRUFDZixlQUFlLEVBQ2YsU0FBUyxFQUNULFdBQVcsQ0FDWixDQUFDO0lBQ0YsT0FBTztRQUNMLElBQUksRUFBRSxVQUFVLENBQUMsSUFBSTtRQUNyQixNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUM3QixhQUEwQixFQUMxQixVQUFpQyxFQUNqQyxXQUFXLEdBQUcsS0FBSyxFQUNKLEVBQUU7SUFDakIsTUFBTSx3QkFBd0IsQ0FDNUIsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFdBQVcsQ0FDWixDQUFDO0lBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxxQkFBcUIsQ0FDMUMsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFdBQVcsQ0FDWixDQUFDO0lBQ0YsSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUMxQyxNQUFNLElBQUksS0FBSyxDQUNiLDBHQUEwRyxDQUMzRyxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sYUFBYSxDQUNwQyxhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsTUFBTSxFQUNOLDhDQUE4QyxFQUM5QyxXQUFXLENBQ1osQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sYUFBYSxDQUN0QyxhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsVUFBVSxDQUFDLFNBQVMsRUFDcEIsOENBQThDLEVBQzlDLFdBQVcsQ0FDWixDQUFDO0lBQ0YsSUFDRSxVQUFVLEtBQUssVUFBVSxDQUFDLFNBQVM7UUFDbkMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQ3JDLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLDZGQUE2RixDQUM5RixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sZUFBZSxDQUNuQixhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsZ0JBQWdCLEVBQ2hCLFdBQVcsQ0FDWixDQUFDO0lBQ0YsTUFBTSxvQkFBb0IsQ0FDeEIsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLGdCQUFnQixFQUNoQixXQUFXLENBQ1osQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLFVBQXdDO0lBRXhDLE1BQU0sUUFBUSxHQUFHLE1BQU0scUJBQXFCLENBQzFDLFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQ2QsVUFBVSxDQUFDLFFBQVEsQ0FDcEIsQ0FBQztJQUNGLE1BQU0sd0JBQXdCLENBQzVCLFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQ2QsVUFBVSxDQUFDLFFBQVEsQ0FDcEIsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sYUFBYSxDQUNuQyxVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsR0FBRyxFQUNkLE1BQU0sRUFDTiw4Q0FBOEMsRUFDOUMsVUFBVSxDQUFDLFFBQVEsQ0FDcEIsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUEwQjtRQUNyQyxTQUFTLEVBQUUsVUFBVSxDQUFDLEdBQUc7UUFDekIsWUFBWSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1FBQzdCLFNBQVMsRUFBRSxRQUFRLENBQUMsR0FBRztRQUN2QixTQUFTO1FBQ1QsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1FBQy9CLGNBQWMsRUFBRSxVQUFVLENBQUMsY0FBYztRQUN6QyxvQkFBb0IsRUFBRSxLQUFLO0tBQzVCLENBQUM7SUFFRixNQUFNLG9CQUFvQixDQUN4QixVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsR0FBRyxFQUNkLGdCQUFnQixFQUNoQixVQUFVLENBQUMsUUFBUSxDQUNwQixDQUFDO0lBRUYsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFVBQVUsSUFBSSxVQUFVLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FDYixnRkFBZ0YsQ0FDakYsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ2pFLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0RBQWdELFFBQVEsQ0FBQyxNQUFNLDZFQUE2RSxDQUM3SSxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbEUsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUNFLFVBQVUsQ0FBQyxlQUFlO1FBQzFCLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLEVBQ3pELENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLHdHQUF3RyxDQUN6RyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sZUFBZSxDQUNuQixVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsR0FBRyxFQUNkLGdCQUFnQixFQUNoQixVQUFVLENBQUMsUUFBUSxDQUNwQixDQUFDO0lBQ0YsT0FBTyxDQUFDLFlBQVksR0FBRyxNQUFNLGFBQWEsQ0FDeEMsVUFBVSxDQUFDLFVBQVUsRUFDckIsVUFBVSxDQUFDLEdBQUcsRUFDZCxhQUFhLEVBQ2IseURBQXlELEVBQ3pELFVBQVUsQ0FBQyxRQUFRLENBQ3BCLENBQUM7SUFDRixJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDbkMsTUFBTSxvQkFBb0IsQ0FDeEIsVUFBVSxDQUFDLFVBQVUsRUFDckIsVUFBVSxDQUFDLEdBQUcsRUFDZCxPQUFPLENBQUMsWUFBWSxFQUNwQixPQUFPLENBQUMsU0FBUyxFQUNqQixVQUFVLENBQUMsUUFBUSxDQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLE1BQU0sbUJBQW1CLENBQzVDLFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQ2QsT0FBTyxDQUFDLFlBQVksRUFDcEIsVUFBVSxDQUFDLFFBQVEsQ0FDcEIsQ0FBQztJQUNGLE9BQU8sQ0FBQyxnQkFBZ0IsR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQzdDLE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ2pELElBQ0UsUUFBUSxDQUFDLE1BQU0sS0FBSyxVQUFVO1FBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUN0QyxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixrRUFBa0UsQ0FDbkUsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMvQixPQUFPLENBQUMsT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUNwQyxVQUFVLENBQUMsVUFBVSxFQUNyQixVQUFVLENBQUMsR0FBRyxFQUNkLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFVBQVUsQ0FBQyxRQUFRLENBQ3BCLENBQUM7UUFDRixPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sb0JBQW9CLENBQ2hELFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQ2QsT0FBTyxDQUFDLE9BQU8sRUFDZixJQUFJLENBQ0wsQ0FBQztRQUNGLElBQ0UsTUFBTSxlQUFlLENBQ25CLFVBQVUsQ0FBQyxVQUFVLEVBQ3JCLFVBQVUsQ0FBQyxHQUFHLEVBQ2QsT0FBTyxDQUFDLGFBQWEsRUFDckIsVUFBVSxDQUFDLFFBQVEsQ0FDcEIsRUFDRCxDQUFDO1lBQ0QsTUFBTSxvQkFBb0IsQ0FDeEIsVUFBVSxDQUFDLFVBQVUsRUFDckIsVUFBVSxDQUFDLEdBQUcsRUFDZCxPQUFPLENBQUMsYUFBYSxFQUNyQixPQUFPLENBQUMsU0FBUyxFQUNqQixVQUFVLENBQUMsUUFBUSxDQUNwQixDQUFDO1lBQ0YsT0FBTyxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHlCQUF5QixDQUM3QyxhQUEwQixFQUMxQixVQUFpQztJQUVqQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzdELE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsTUFBTSxrQkFBa0IsQ0FDdEIsYUFBYSxFQUNiLFVBQVUsQ0FBQyxnQkFBZ0IsRUFDM0IsVUFBVSxDQUFDLFlBQVksRUFDdkIsVUFBVSxDQUFDLGtCQUFrQixDQUM5QixDQUFDO0lBQ0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QixPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsTUFBTSxjQUFjLEdBQUcsTUFBTSxjQUFjLENBQ3pDLGFBQWEsRUFDYixVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsU0FBUyxDQUNyQixDQUFDO0lBQ0YsSUFBSSxjQUFjLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNEhBQTRILENBQzdILENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxvQkFBb0IsQ0FDOUMsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFVBQVUsQ0FBQyxPQUFPLENBQ25CLENBQUM7SUFDRixJQUFJLFVBQVUsQ0FBQyxhQUFhLElBQUksYUFBYSxLQUFLLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzRSxNQUFNLElBQUksS0FBSyxDQUNiLG1GQUFtRixDQUNwRixDQUFDO0lBQ0osQ0FBQztJQUNELGlCQUFpQixDQUNmLE1BQU0sTUFBTSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsU0FBUyxFQUFFO1FBQ2hELE9BQU87UUFDUCxXQUFXO1FBQ1gseUJBQXlCO1FBQ3pCLHVCQUF1QjtRQUN2QixVQUFVLENBQUMsT0FBTztRQUNsQixhQUFhO0tBQ2QsQ0FBQyxFQUNGLHdFQUF3RSxDQUN6RSxDQUFDO0lBQ0YsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLG9CQUFvQixDQUN0RCxhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQztJQUNGLElBQUkscUJBQXFCLEtBQUssYUFBYSxFQUFFLENBQUM7UUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYixzR0FBc0csQ0FDdkcsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUNFLENBQUMsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxFQUM1RSxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixvRkFBb0YsQ0FDckYsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLG9CQUFvQixDQUN4QixhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLENBQ3JCLENBQUM7SUFDRixNQUFNLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRCxNQUFNLGtCQUFrQixDQUN0QixhQUFhLEVBQ2IsVUFBVSxDQUFDLGdCQUFnQixFQUMzQixVQUFVLENBQUMsWUFBWSxFQUN2QixVQUFVLENBQUMsa0JBQWtCLENBQzlCLENBQUM7SUFDRixPQUFPO1FBQ0wsR0FBRyxVQUFVO1FBQ2IsYUFBYTtRQUNiLG9CQUFvQixFQUFFLElBQUk7S0FDM0IsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLCtCQUErQixDQUNuRCxhQUEwQixFQUMxQixVQUFpQztJQUVqQyxJQUNFLENBQUMsVUFBVSxDQUFDLFlBQVk7UUFDeEIsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCO1FBQzVCLENBQUMsVUFBVSxDQUFDLGtCQUFrQixFQUM5QixDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNuRCxNQUFNLGtCQUFrQixDQUN0QixhQUFhLEVBQ2IsVUFBVSxDQUFDLGdCQUFnQixFQUMzQixVQUFVLENBQUMsWUFBWSxFQUN2QixVQUFVLENBQUMsa0JBQWtCLENBQzlCLENBQUM7SUFDRixJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixNQUFNLGNBQWMsR0FBRyxNQUFNLGNBQWMsQ0FDekMsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLFVBQVUsQ0FBQyxTQUFTLENBQ3JCLENBQUM7UUFDRixJQUFJLGNBQWMsS0FBSyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLEtBQUssQ0FDYiw2R0FBNkcsQ0FDOUcsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLG9CQUFvQixHQUFHLE1BQU0sb0JBQW9CLENBQ3JELGFBQWEsRUFDYixVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsT0FBTyxDQUNuQixDQUFDO1FBQ0YsSUFBSSxvQkFBb0IsS0FBSyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEQsTUFBTSxJQUFJLEtBQUssQ0FDYixnRkFBZ0YsQ0FDakYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUNBQWlDLENBQ3JELGFBQTBCLEVBQzFCLFVBQWlDLEVBQ2pDLGtCQUEwQixFQUMxQix3QkFBaUM7SUFFakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25FLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSx3QkFBd0IsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxtQkFBbUIsQ0FDbkQsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLGtCQUFrQixDQUNuQixDQUFDO0lBQ0YsSUFDRSxtQkFBbUIsQ0FBQyxJQUFJLEtBQUssVUFBVSxDQUFDLGdCQUFnQjtRQUN4RCxtQkFBbUIsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLGtCQUFrQixFQUM1RCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiwwR0FBMEcsQ0FDM0csQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxZQUFZLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDM0MsTUFBTSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQzlCLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUVBQWlFLENBQ2xFLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxjQUFjLEdBQUcsTUFBTSxjQUFjLENBQ3pDLGFBQWEsRUFDYixVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsU0FBUyxDQUNyQixDQUFDO1FBQ0YsSUFBSSxjQUFjLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0hBQWdILENBQ2pILENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLG9CQUFvQixDQUNyRCxhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQztRQUNGLElBQUksb0JBQW9CLEtBQUssd0JBQXdCLEVBQUUsQ0FBQztZQUN0RCxNQUFNLElBQUksS0FBSyxDQUNiLDJGQUEyRixDQUM1RixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxzQkFBc0IsR0FBRyxLQUFLLEVBQ2xDLGFBQTBCLEVBQzFCLFVBQWlDLEVBQ2pDLGFBQXFCLEVBQ3JCLG9CQUE0QixFQUNYLEVBQUU7SUFDbkIsSUFBSSxPQUFlLENBQUM7SUFDcEIsSUFBSSxDQUFDO1FBQ0gsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUMzQixhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYix1REFBdUQsQ0FDeEQsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLCtFQUErRSxDQUFDO0lBQ3pGLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFrQixDQUN0QixhQUFhLEVBQ2IsYUFBYSxFQUNiLE9BQU8sRUFDUCxvQkFBb0IsQ0FDckIsQ0FBQztRQUNGLE9BQU8sMEJBQTBCLE9BQU8sa0NBQWtDLENBQUM7SUFDN0UsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8seUJBQXlCLE9BQU8sZ0ZBQWdGLENBQUM7SUFDMUgsQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sbUNBQW1DLEdBQUcsS0FBSyxFQUMvQyxhQUEwQixFQUMxQixVQUFpQyxFQUNqQyxhQUFxQixFQUNyQixvQkFBNEIsRUFDWCxFQUFFO0lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsT0FBTywyREFBMkQsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxNQUFNLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRTtRQUMvRCxZQUFZO1FBQ1osSUFBSTtRQUNKLHNDQUFzQztRQUN0QyxhQUFhO1FBQ2IsVUFBVSxDQUFDLFlBQVk7UUFDdkIsVUFBVSxDQUFDLFNBQVM7S0FDckIsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxVQUFVLEdBQUcsTUFBTSxzQkFBc0IsQ0FDN0MsYUFBYSxFQUNiLFVBQVUsRUFDVixhQUFhLEVBQ2Isb0JBQW9CLENBQ3JCLENBQUM7SUFDRixJQUFJLGFBQWEsQ0FBQyxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakMsT0FBTyxpRUFBaUUsVUFBVSxFQUFFLENBQUM7SUFDdkYsQ0FBQztJQUNELE9BQU8sd0RBQXdELFVBQVUsRUFBRSxDQUFDO0FBQzlFLENBQUMsQ0FBQztBQUVGLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUM3QixhQUEwQixFQUMxQixVQUFpQyxFQUNqQyxhQUFxQixFQUNyQixvQkFBNEIsRUFDWCxFQUFFO0lBQ25CLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsT0FBTywyREFBMkQsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLENBQ3RCLGFBQWEsRUFDYixhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsb0JBQW9CLENBQ3JCLENBQUM7UUFDRixpQkFBaUIsQ0FDZixNQUFNLE1BQU0sQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFO1lBQ3pDLFlBQVk7WUFDWixhQUFhO1lBQ2IsVUFBVSxDQUFDLFlBQVk7WUFDdkIsVUFBVSxDQUFDLFNBQVM7U0FDckIsQ0FBQyxFQUNGLGdFQUFnRSxDQUNqRSxDQUFDO1FBQ0YsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNuQixpQkFBaUIsQ0FDZixNQUFNLE1BQU0sQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFO1lBQ3pDLFdBQVc7WUFDWCxJQUFJO1lBQ0osSUFBSTtZQUNKLFVBQVUsQ0FBQyxTQUFTO1lBQ3BCLFVBQVUsQ0FBQyxZQUFZO1NBQ3hCLENBQUMsRUFDRiw2RUFBNkUsQ0FDOUUsQ0FBQztRQUNGLE1BQU0sa0JBQWtCLENBQ3RCLGFBQWEsRUFDYixhQUFhLEVBQ2IsVUFBVSxDQUFDLFlBQVksRUFDdkIsb0JBQW9CLENBQ3JCLENBQUM7UUFDRixPQUFPLDJCQUEyQixDQUFDO0lBQ3JDLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sTUFBTSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUU7Z0JBQ3pDLFlBQVk7Z0JBQ1osYUFBYTtnQkFDYixVQUFVLENBQUMsU0FBUztnQkFDcEIsVUFBVSxDQUFDLFlBQVk7YUFDeEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sc0JBQXNCLENBQzNCLGFBQWEsRUFDYixVQUFVLEVBQ1YsYUFBYSxFQUNiLG9CQUFvQixDQUNyQixDQUFDO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxLQUFLLFVBQVUsc0JBQXNCLENBQzFDLGFBQTBCLEVBQzFCLFVBQWlDO0lBRWpDLElBQUksVUFBVSxDQUFDLFlBQVksS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxNQUFNLElBQUksS0FBSyxDQUNiLHNFQUFzRSxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUNELElBQ0UsQ0FBQyxVQUFVLENBQUMsT0FBTztRQUNuQixDQUFDLFVBQVUsQ0FBQyxZQUFZO1FBQ3hCLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFDekIsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsTUFBTSxjQUFjLEdBQUcsTUFBTSxjQUFjLENBQ3pDLGFBQWEsRUFDYixVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsU0FBUyxDQUNyQixDQUFDO0lBQ0YsSUFBSSxjQUFjLEtBQUssVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQ2IsbUZBQW1GLENBQ3BGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLG9CQUFvQixDQUNyRCxhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsVUFBVSxDQUFDLE9BQU8sQ0FDbkIsQ0FBQztJQUNGLElBQUksb0JBQW9CLEtBQUssVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RELE1BQU0sSUFBSSxLQUFLLENBQ2IsOEZBQThGLENBQy9GLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLGFBQWEsQ0FDN0MsYUFBYSxFQUNiLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLGFBQWEsRUFDYixvREFBb0QsQ0FDckQsQ0FBQztJQUNGLElBQUksbUJBQW1CLEtBQUssVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGLENBQ3RGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLG1CQUFtQixDQUNuRCxhQUFhLEVBQ2IsVUFBVSxDQUFDLFNBQVMsRUFDcEIsVUFBVSxDQUFDLFlBQVksQ0FDeEIsQ0FBQztJQUNGLElBQ0UsbUJBQW1CLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxnQkFBZ0I7UUFDeEQsbUJBQW1CLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxrQkFBa0IsRUFDNUQsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isa0dBQWtHLENBQ25HLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLGdCQUFnQixDQUFDO0lBQy9DLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUNiLHlGQUF5RixDQUMxRixDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0saUJBQWlCLEdBQUcsTUFBTSxrQkFBa0IsQ0FDaEQsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLENBQUMsWUFBWSxFQUN2QixVQUFVLENBQUMsa0JBQWtCLENBQzlCLENBQUM7SUFFRixNQUFNLGdCQUFnQixHQUFHLE1BQU0sTUFBTSxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUU7UUFDL0QsWUFBWTtRQUNaLElBQUk7UUFDSiw2QkFBNkI7UUFDN0IsYUFBYTtRQUNiLFVBQVUsQ0FBQyxTQUFTO1FBQ3BCLFVBQVUsQ0FBQyxZQUFZO0tBQ3hCLENBQUMsQ0FBQztJQUNILElBQUksZ0JBQWdCLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLENBQzFGLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLE1BQU0sQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFO1FBQ3BFLFdBQVc7UUFDWCxJQUFJO1FBQ0osSUFBSTtRQUNKLFVBQVUsQ0FBQyxZQUFZO1FBQ3ZCLFVBQVUsQ0FBQyxTQUFTO0tBQ3JCLENBQUMsQ0FBQztJQUNILElBQUkscUJBQXFCLENBQUMsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE1BQU0sYUFBYSxHQUFHLE1BQU0sbUNBQW1DLENBQzdELGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FDYix1SEFBdUgsYUFBYSxFQUFFLENBQ3ZJLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsQ0FDdEIsYUFBYSxFQUNiLFVBQVUsRUFDVixVQUFVLENBQUMsU0FBUyxFQUNwQixpQkFBaUIsQ0FDbEIsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxNQUFNLGFBQWEsR0FBRyxNQUFNLGlCQUFpQixDQUMzQyxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixpQkFBaUIsQ0FDbEIsQ0FBQztRQUNGLE1BQU0sSUFBSSxLQUFLLENBQ2IscUdBQXFHLGFBQWEsRUFBRSxDQUNySCxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sWUFBWSxHQUFHLE1BQU0sYUFBYSxDQUN0QyxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsQ0FBQyxTQUFTLEVBQ3BCLDJEQUEyRCxDQUM1RCxDQUFDO0lBQ0YsSUFBSSxZQUFZLEtBQUssVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sYUFBYSxHQUFHLE1BQU0saUJBQWlCLENBQzNDLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FDYiwwRkFBMEYsYUFBYSxFQUFFLENBQzFHLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRTtRQUN6RCxNQUFNO1FBQ04sa0JBQWtCO1FBQ2xCLHNCQUFzQixhQUFhLElBQUksVUFBVSxDQUFDLGFBQWEsRUFBRTtRQUNqRSxVQUFVLENBQUMsT0FBTztRQUNsQixHQUFHLFVBQVUsQ0FBQyxTQUFTLElBQUksYUFBYSxFQUFFO0tBQzNDLENBQUMsQ0FBQztJQUNILElBQUksVUFBVSxDQUFDLFFBQVEsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixJQUFJLGVBQW1DLENBQUM7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsZUFBZSxHQUFHLE1BQU0sb0JBQW9CLENBQzFDLGFBQWEsRUFDYixVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsT0FBTyxDQUNuQixDQUFDO1FBQ0osQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGVBQWUsR0FBRyxTQUFTLENBQUM7UUFDOUIsQ0FBQztRQUNELElBQUksZUFBZSxLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUM3QyxNQUFNLGFBQWEsR0FBRyxNQUFNLGlCQUFpQixDQUMzQyxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixpQkFBaUIsQ0FDbEIsQ0FBQztZQUNGLE1BQU0sSUFBSSxLQUFLLENBQ2IseUZBQXlGLGFBQWEsR0FDcEcsZUFBZTtnQkFDYixDQUFDLENBQUMsRUFBRTtnQkFDSixDQUFDLENBQUMsMEVBQ04sRUFBRSxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sa0JBQWtCLENBQ3RCLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxDQUFDLFNBQVMsRUFDcEIsaUJBQWlCLENBQ2xCLENBQUM7SUFDRixJQUFJLG1CQUEyQixDQUFDO0lBQ2hDLElBQUksQ0FBQztRQUNILG1CQUFtQixHQUFHLE1BQU0sb0JBQW9CLENBQzlDLGFBQWEsRUFDYixVQUFVLENBQUMsU0FBUyxFQUNwQixVQUFVLENBQUMsT0FBTyxDQUNuQixDQUFDO0lBQ0osQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sYUFBYSxHQUFHLE1BQU0saUJBQWlCLENBQzNDLGFBQWEsRUFDYixVQUFVLEVBQ1YsVUFBVSxFQUNWLGlCQUFpQixDQUNsQixDQUFDO1FBQ0YsTUFBTSxJQUFJLEtBQUssQ0FDYix1RkFBdUYsYUFBYSxrREFBa0QsQ0FDdkosQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLG1CQUFtQixLQUFLLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqRCxNQUFNLGFBQWEsR0FBRyxNQUFNLGlCQUFpQixDQUMzQyxhQUFhLEVBQ2IsVUFBVSxFQUNWLFVBQVUsRUFDVixpQkFBaUIsQ0FDbEIsQ0FBQztRQUNGLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkZBQTZGLGFBQWEsRUFBRSxDQUM3RyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxVQUFVO1FBQ1YsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPO1FBQzNCLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxTQUFTO0tBQzVDLENBQUM7QUFDSixDQUFDIn0=