__vite_ssr_exportName__("PullRequestRoutingPermission", () => { try { return PullRequestRoutingPermission } catch {} });
__vite_ssr_exportName__("StoredPullRequestRoutingPermission", () => { try { return StoredPullRequestRoutingPermission } catch {} });
__vite_ssr_exportName__("pullRequestRoutingConnectionKey", () => { try { return pullRequestRoutingConnectionKey } catch {} });
__vite_ssr_exportName__("pullRequestRoutingPermissionFor", () => { try { return pullRequestRoutingPermissionFor } catch {} });
__vite_ssr_exportName__("PullRequestRoutingPermissions", () => { try { return PullRequestRoutingPermissions } catch {} });
__vite_ssr_exportName__("makePullRequestRoutingPermissions", () => { try { return makePullRequestRoutingPermissions } catch {} });
const __vite_ssr_import_0__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/contracts/src/index.ts", {"importedNames":["EnvironmentId"]});
const __vite_ssr_import_1__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Context.js");
const __vite_ssr_import_2__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Effect.js");
const __vite_ssr_import_3__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Option.js");
const __vite_ssr_import_4__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Schema.js");
const __vite_ssr_import_5__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Semaphore.js");
const __vite_ssr_import_6__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/Stream.js");
const __vite_ssr_import_7__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/node_modules/.pnpm/effect@4.0.5/node_modules/effect/dist/SubscriptionRef.js");
const __vite_ssr_import_8__ = await __vite_ssr_import__("/@fs/home/ubuntu/wt/pr-24263/packages/client-runtime/src/connection/model.ts", {"importedNames":["ConnectionBlockedError"]});









const PullRequestRoutingPermission = __vite_ssr_import_4__.Literals([
	"off",
	"read",
	"read-write"
]);
const StoredPullRequestRoutingPermission = __vite_ssr_import_4__.Struct({
	environmentId: __vite_ssr_import_0__.EnvironmentId,
	connectionKey: __vite_ssr_import_4__.String,
	permission: PullRequestRoutingPermission
});
/**
* Trust belongs to the saved endpoints, never to an environment id advertised
* by a server alone. With several routes the key covers all of them, sorted so
* reordering keeps trust but adding or changing an address revokes it.
*/
function pullRequestRoutingConnectionKey(entry) {
	const routes = [{
		target: entry.target,
		profile: entry.profile
	}, ...entry.alternateRoutes ?? []].filter((route) => {
		const profile = __vite_ssr_import_3__.getOrNull(route.profile);
		return !(profile?._tag === "BearerConnectionProfile" && profile.learned === true);
	});
	if (routes.length === 1) return routeConnectionKey(routes[0].target, routes[0].profile);
	const keys = routes.map((route) => routeConnectionKey(route.target, route.profile));
	return keys.every((key) => key !== null) ? JSON.stringify([...keys].sort()) : null;
};
function routeConnectionKey(target, routeProfile) {
	const entry = { profile: routeProfile };
	if (target._tag === "RelayConnectionTarget") return JSON.stringify([target._tag, target.environmentId]);
	const profile = __vite_ssr_import_3__.getOrNull(entry.profile);
	if (target._tag === "SshConnectionTarget") {
		if (profile?._tag !== "SshConnectionProfile") return null;
		const { alias, hostname, username, port } = profile.target;
		return JSON.stringify([
			target._tag,
			target.environmentId,
			alias,
			hostname,
			username,
			port
		]);
	};
	const baseUrls = target._tag === "PrimaryConnectionTarget" ? [target.httpBaseUrl, target.wsBaseUrl] : profile?._tag === "BearerConnectionProfile" ? [profile.httpBaseUrl, profile.wsBaseUrl] : null;
	if (baseUrls === null) return null;
	try {
		const urls = baseUrls.map((baseUrl) => new URL(baseUrl));
		if (!["http:", "https:"].includes(urls[0].protocol) || !["ws:", "wss:"].includes(urls[1].protocol) || urls.some((url) => url.username || url.password)) return null;
		return JSON.stringify([
			target._tag,
			target.environmentId,
			...urls.map((url) => url.href.replace(/\/+$/, ""))
		]);
	} catch {
		return null;
	}
}
function pullRequestRoutingPermissionFor(entry, permissions) {
	const key = pullRequestRoutingConnectionKey(entry);
	return key === null ? "off" : permissions.find((permission) => permission.connectionKey === key)?.permission ?? "off";
};
class PullRequestRoutingPermissions extends __vite_ssr_import_1__.Reference("@t3tools/client-runtime/connection/PullRequestRoutingPermissions", { defaultValue: () => ({
	get: () => __vite_ssr_import_2__.succeed("off"),
	changes: __vite_ssr_import_6__.succeed([]),
	set: () => __vite_ssr_import_2__.fail(new __vite_ssr_import_8__.ConnectionBlockedError({
		reason: "unsupported",
		detail: "Pull request routing preferences are unavailable on this client."
	})),
	forget: () => __vite_ssr_import_2__.void
}) }) {};
const makePullRequestRoutingPermissions = __vite_ssr_import_2__.fn("makePullRequestRoutingPermissions")(function* (storage) {
	const state = yield* __vite_ssr_import_7__.make(yield* storage.read);
	const lock = yield* __vite_ssr_import_5__.make(1);
	const update = (transform) => lock.withPermits(1)(__vite_ssr_import_2__.gen(function* () {
		const current = yield* __vite_ssr_import_7__.get(state);
		const next = transform(current);
		if (next === current) return;
		yield* storage.write(next);
		yield* __vite_ssr_import_7__.set(state, next);
	}));
	return PullRequestRoutingPermissions.of({
		get: (entry) => __vite_ssr_import_7__.get(state).pipe(__vite_ssr_import_2__.map((permissions) => pullRequestRoutingPermissionFor(entry, permissions))),
		changes: __vite_ssr_import_7__.changes(state),
		set: (entry, permission) => {
			const connectionKey = pullRequestRoutingConnectionKey(entry);
			if (connectionKey === null) return __vite_ssr_import_2__.fail(new __vite_ssr_import_8__.ConnectionBlockedError({
				reason: "configuration",
				detail: "This environment does not have a saved connection endpoint."
			}));
			return update((current) => [...current.filter((value) => value.environmentId !== entry.target.environmentId), ...permission === "off" ? [] : [{
				environmentId: entry.target.environmentId,
				connectionKey,
				permission
			}]]);
		},
		forget: (environmentId) => update((current) => current.some((permission) => permission.environmentId === environmentId) ? current.filter((permission) => permission.environmentId !== environmentId) : current)
	});
});
//# sourceMappingSource=vite-generated
//# sourceMappingURL=data:application/json;base64,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LENBQy9FLENBQUM7RUFDSDtFQUNBLFNBQVMsa0JBQ1AsUUFBUSxZQUNOLFFBQVEsTUFBTSxlQUFlLFdBQVcsa0JBQWtCLGFBQWEsSUFDbkUsUUFBUSxRQUFRLGVBQWUsV0FBVyxrQkFBa0IsYUFBYSxJQUN6RSxPQUNOO0NBQ0osQ0FBQztBQUNILENBQ0YiLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VzIjpbInB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudmlyb25tZW50SWQgfSBmcm9tIFwiQHQzdG9vbHMvY29udHJhY3RzXCI7XG5pbXBvcnQgKiBhcyBDb250ZXh0IGZyb20gXCJlZmZlY3QvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgRWZmZWN0IGZyb20gXCJlZmZlY3QvRWZmZWN0XCI7XG5pbXBvcnQgKiBhcyBPcHRpb24gZnJvbSBcImVmZmVjdC9PcHRpb25cIjtcbmltcG9ydCAqIGFzIFNjaGVtYSBmcm9tIFwiZWZmZWN0L1NjaGVtYVwiO1xuaW1wb3J0ICogYXMgU2VtYXBob3JlIGZyb20gXCJlZmZlY3QvU2VtYXBob3JlXCI7XG5pbXBvcnQgKiBhcyBTdHJlYW0gZnJvbSBcImVmZmVjdC9TdHJlYW1cIjtcbmltcG9ydCAqIGFzIFN1YnNjcmlwdGlvblJlZiBmcm9tIFwiZWZmZWN0L1N1YnNjcmlwdGlvblJlZlwiO1xuXG5pbXBvcnQgdHlwZSB7IENvbm5lY3Rpb25DYXRhbG9nRW50cnkgfSBmcm9tIFwiLi9jYXRhbG9nLnRzXCI7XG5pbXBvcnQgeyBDb25uZWN0aW9uQmxvY2tlZEVycm9yLCB0eXBlIENvbm5lY3Rpb25BdHRlbXB0RXJyb3IgfSBmcm9tIFwiLi9tb2RlbC50c1wiO1xuXG5leHBvcnQgY29uc3QgUHVsbFJlcXVlc3RSb3V0aW5nUGVybWlzc2lvbiA9IFNjaGVtYS5MaXRlcmFscyhbXCJvZmZcIiwgXCJyZWFkXCIsIFwicmVhZC13cml0ZVwiXSk7XG5leHBvcnQgdHlwZSBQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uID0gdHlwZW9mIFB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb24uVHlwZTtcbmV4cG9ydCBjb25zdCBTdG9yZWRQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uID0gU2NoZW1hLlN0cnVjdCh7XG4gIGVudmlyb25tZW50SWQ6IEVudmlyb25tZW50SWQsXG4gIGNvbm5lY3Rpb25LZXk6IFNjaGVtYS5TdHJpbmcsXG4gIHBlcm1pc3Npb246IFB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb24sXG59KTtcbmV4cG9ydCB0eXBlIFN0b3JlZFB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb24gPSB0eXBlb2YgU3RvcmVkUHVsbFJlcXVlc3RSb3V0aW5nUGVybWlzc2lvbi5UeXBlO1xuXG4vKipcbiAqIFRydXN0IGJlbG9uZ3MgdG8gdGhlIHNhdmVkIGVuZHBvaW50cywgbmV2ZXIgdG8gYW4gZW52aXJvbm1lbnQgaWQgYWR2ZXJ0aXNlZFxuICogYnkgYSBzZXJ2ZXIgYWxvbmUuIFdpdGggc2V2ZXJhbCByb3V0ZXMgdGhlIGtleSBjb3ZlcnMgYWxsIG9mIHRoZW0sIHNvcnRlZCBzb1xuICogcmVvcmRlcmluZyBrZWVwcyB0cnVzdCBidXQgYWRkaW5nIG9yIGNoYW5naW5nIGFuIGFkZHJlc3MgcmV2b2tlcyBpdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB1bGxSZXF1ZXN0Um91dGluZ0Nvbm5lY3Rpb25LZXkoZW50cnk6IENvbm5lY3Rpb25DYXRhbG9nRW50cnkpOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3Qgcm91dGVzID0gW1xuICAgIHsgdGFyZ2V0OiBlbnRyeS50YXJnZXQsIHByb2ZpbGU6IGVudHJ5LnByb2ZpbGUgfSxcbiAgICAuLi4oZW50cnkuYWx0ZXJuYXRlUm91dGVzID8/IFtdKSxcbiAgXS5maWx0ZXIoKHJvdXRlKSA9PiB7XG4gICAgY29uc3QgcHJvZmlsZSA9IE9wdGlvbi5nZXRPck51bGwocm91dGUucHJvZmlsZSk7XG4gICAgcmV0dXJuICEocHJvZmlsZT8uX3RhZyA9PT0gXCJCZWFyZXJDb25uZWN0aW9uUHJvZmlsZVwiICYmIHByb2ZpbGUubGVhcm5lZCA9PT0gdHJ1ZSk7XG4gIH0pO1xuICBpZiAocm91dGVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHJvdXRlQ29ubmVjdGlvbktleShyb3V0ZXNbMF0hLnRhcmdldCwgcm91dGVzWzBdIS5wcm9maWxlKTtcbiAgY29uc3Qga2V5cyA9IHJvdXRlcy5tYXAoKHJvdXRlKSA9PiByb3V0ZUNvbm5lY3Rpb25LZXkocm91dGUudGFyZ2V0LCByb3V0ZS5wcm9maWxlKSk7XG4gIHJldHVybiBrZXlzLmV2ZXJ5KChrZXkpID0+IGtleSAhPT0gbnVsbCkgPyBKU09OLnN0cmluZ2lmeShbLi4ua2V5c10uc29ydCgpKSA6IG51bGw7XG59XG5cbmZ1bmN0aW9uIHJvdXRlQ29ubmVjdGlvbktleShcbiAgdGFyZ2V0OiBDb25uZWN0aW9uQ2F0YWxvZ0VudHJ5W1widGFyZ2V0XCJdLFxuICByb3V0ZVByb2ZpbGU6IENvbm5lY3Rpb25DYXRhbG9nRW50cnlbXCJwcm9maWxlXCJdLFxuKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGVudHJ5ID0geyBwcm9maWxlOiByb3V0ZVByb2ZpbGUgfTtcbiAgaWYgKHRhcmdldC5fdGFnID09PSBcIlJlbGF5Q29ubmVjdGlvblRhcmdldFwiKVxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShbdGFyZ2V0Ll90YWcsIHRhcmdldC5lbnZpcm9ubWVudElkXSk7XG4gIGNvbnN0IHByb2ZpbGUgPSBPcHRpb24uZ2V0T3JOdWxsKGVudHJ5LnByb2ZpbGUpO1xuICBpZiAodGFyZ2V0Ll90YWcgPT09IFwiU3NoQ29ubmVjdGlvblRhcmdldFwiKSB7XG4gICAgaWYgKHByb2ZpbGU/Ll90YWcgIT09IFwiU3NoQ29ubmVjdGlvblByb2ZpbGVcIikgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgeyBhbGlhcywgaG9zdG5hbWUsIHVzZXJuYW1lLCBwb3J0IH0gPSBwcm9maWxlLnRhcmdldDtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoW3RhcmdldC5fdGFnLCB0YXJnZXQuZW52aXJvbm1lbnRJZCwgYWxpYXMsIGhvc3RuYW1lLCB1c2VybmFtZSwgcG9ydF0pO1xuICB9XG4gIGNvbnN0IGJhc2VVcmxzID1cbiAgICB0YXJnZXQuX3RhZyA9PT0gXCJQcmltYXJ5Q29ubmVjdGlvblRhcmdldFwiXG4gICAgICA/IFt0YXJnZXQuaHR0cEJhc2VVcmwsIHRhcmdldC53c0Jhc2VVcmxdXG4gICAgICA6IHByb2ZpbGU/Ll90YWcgPT09IFwiQmVhcmVyQ29ubmVjdGlvblByb2ZpbGVcIlxuICAgICAgICA/IFtwcm9maWxlLmh0dHBCYXNlVXJsLCBwcm9maWxlLndzQmFzZVVybF1cbiAgICAgICAgOiBudWxsO1xuICBpZiAoYmFzZVVybHMgPT09IG51bGwpIHJldHVybiBudWxsO1xuICB0cnkge1xuICAgIGNvbnN0IHVybHMgPSBiYXNlVXJscy5tYXAoKGJhc2VVcmwpID0+IG5ldyBVUkwoYmFzZVVybCkpO1xuICAgIGlmIChcbiAgICAgICFbXCJodHRwOlwiLCBcImh0dHBzOlwiXS5pbmNsdWRlcyh1cmxzWzBdIS5wcm90b2NvbCkgfHxcbiAgICAgICFbXCJ3czpcIiwgXCJ3c3M6XCJdLmluY2x1ZGVzKHVybHNbMV0hLnByb3RvY29sKSB8fFxuICAgICAgdXJscy5zb21lKCh1cmwpID0+IHVybC51c2VybmFtZSB8fCB1cmwucGFzc3dvcmQpXG4gICAgKVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFtcbiAgICAgIHRhcmdldC5fdGFnLFxuICAgICAgdGFyZ2V0LmVudmlyb25tZW50SWQsXG4gICAgICAuLi51cmxzLm1hcCgodXJsKSA9PiB1cmwuaHJlZi5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpKSxcbiAgICBdKTtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb25Gb3IoXG4gIGVudHJ5OiBDb25uZWN0aW9uQ2F0YWxvZ0VudHJ5LFxuICBwZXJtaXNzaW9uczogUmVhZG9ubHlBcnJheTxTdG9yZWRQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uPixcbik6IFB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb24ge1xuICBjb25zdCBrZXkgPSBwdWxsUmVxdWVzdFJvdXRpbmdDb25uZWN0aW9uS2V5KGVudHJ5KTtcbiAgcmV0dXJuIGtleSA9PT0gbnVsbFxuICAgID8gXCJvZmZcIlxuICAgIDogKHBlcm1pc3Npb25zLmZpbmQoKHBlcm1pc3Npb24pID0+IHBlcm1pc3Npb24uY29ubmVjdGlvbktleSA9PT0ga2V5KT8ucGVybWlzc2lvbiA/PyBcIm9mZlwiKTtcbn1cblxuZXhwb3J0IGNsYXNzIFB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb25zIGV4dGVuZHMgQ29udGV4dC5SZWZlcmVuY2U8e1xuICByZWFkb25seSBnZXQ6IChlbnRyeTogQ29ubmVjdGlvbkNhdGFsb2dFbnRyeSkgPT4gRWZmZWN0LkVmZmVjdDxQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uPjtcbiAgcmVhZG9ubHkgY2hhbmdlczogU3RyZWFtLlN0cmVhbTxSZWFkb25seUFycmF5PFN0b3JlZFB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb24+PjtcbiAgcmVhZG9ubHkgc2V0OiAoXG4gICAgZW50cnk6IENvbm5lY3Rpb25DYXRhbG9nRW50cnksXG4gICAgcGVybWlzc2lvbjogUHVsbFJlcXVlc3RSb3V0aW5nUGVybWlzc2lvbixcbiAgKSA9PiBFZmZlY3QuRWZmZWN0PHZvaWQsIENvbm5lY3Rpb25BdHRlbXB0RXJyb3I+O1xuICByZWFkb25seSBmb3JnZXQ6IChlbnZpcm9ubWVudElkOiBFbnZpcm9ubWVudElkKSA9PiBFZmZlY3QuRWZmZWN0PHZvaWQsIENvbm5lY3Rpb25BdHRlbXB0RXJyb3I+O1xufT4oXCJAdDN0b29scy9jbGllbnQtcnVudGltZS9jb25uZWN0aW9uL1B1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb25zXCIsIHtcbiAgZGVmYXVsdFZhbHVlOiAoKSA9PiAoe1xuICAgIGdldDogKCkgPT4gRWZmZWN0LnN1Y2NlZWQoXCJvZmZcIiksXG4gICAgY2hhbmdlczogU3RyZWFtLnN1Y2NlZWQoW10pLFxuICAgIHNldDogKCkgPT5cbiAgICAgIEVmZmVjdC5mYWlsKFxuICAgICAgICBuZXcgQ29ubmVjdGlvbkJsb2NrZWRFcnJvcih7XG4gICAgICAgICAgcmVhc29uOiBcInVuc3VwcG9ydGVkXCIsXG4gICAgICAgICAgZGV0YWlsOiBcIlB1bGwgcmVxdWVzdCByb3V0aW5nIHByZWZlcmVuY2VzIGFyZSB1bmF2YWlsYWJsZSBvbiB0aGlzIGNsaWVudC5cIixcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgIGZvcmdldDogKCkgPT4gRWZmZWN0LnZvaWQsXG4gIH0pLFxufSkge31cblxuZXhwb3J0IGNvbnN0IG1ha2VQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9ucyA9IEVmZmVjdC5mbihcIm1ha2VQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uc1wiKShcbiAgZnVuY3Rpb24qIChzdG9yYWdlOiB7XG4gICAgcmVhZG9ubHkgcmVhZDogRWZmZWN0LkVmZmVjdDxcbiAgICAgIFJlYWRvbmx5QXJyYXk8U3RvcmVkUHVsbFJlcXVlc3RSb3V0aW5nUGVybWlzc2lvbj4sXG4gICAgICBDb25uZWN0aW9uQXR0ZW1wdEVycm9yXG4gICAgPjtcbiAgICByZWFkb25seSB3cml0ZTogKFxuICAgICAgcGVybWlzc2lvbnM6IFJlYWRvbmx5QXJyYXk8U3RvcmVkUHVsbFJlcXVlc3RSb3V0aW5nUGVybWlzc2lvbj4sXG4gICAgKSA9PiBFZmZlY3QuRWZmZWN0PHZvaWQsIENvbm5lY3Rpb25BdHRlbXB0RXJyb3I+O1xuICB9KSB7XG4gICAgY29uc3Qgc3RhdGUgPSB5aWVsZCogU3Vic2NyaXB0aW9uUmVmLm1ha2UoeWllbGQqIHN0b3JhZ2UucmVhZCk7XG4gICAgY29uc3QgbG9jayA9IHlpZWxkKiBTZW1hcGhvcmUubWFrZSgxKTtcbiAgICBjb25zdCB1cGRhdGUgPSAoXG4gICAgICB0cmFuc2Zvcm06IChcbiAgICAgICAgY3VycmVudDogUmVhZG9ubHlBcnJheTxTdG9yZWRQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uPixcbiAgICAgICkgPT4gUmVhZG9ubHlBcnJheTxTdG9yZWRQdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uPixcbiAgICApID0+XG4gICAgICBsb2NrLndpdGhQZXJtaXRzKDEpKFxuICAgICAgICBFZmZlY3QuZ2VuKGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IHlpZWxkKiBTdWJzY3JpcHRpb25SZWYuZ2V0KHN0YXRlKTtcbiAgICAgICAgICBjb25zdCBuZXh0ID0gdHJhbnNmb3JtKGN1cnJlbnQpO1xuICAgICAgICAgIGlmIChuZXh0ID09PSBjdXJyZW50KSByZXR1cm47XG4gICAgICAgICAgeWllbGQqIHN0b3JhZ2Uud3JpdGUobmV4dCk7XG4gICAgICAgICAgeWllbGQqIFN1YnNjcmlwdGlvblJlZi5zZXQoc3RhdGUsIG5leHQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgcmV0dXJuIFB1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb25zLm9mKHtcbiAgICAgIGdldDogKGVudHJ5KSA9PlxuICAgICAgICBTdWJzY3JpcHRpb25SZWYuZ2V0KHN0YXRlKS5waXBlKFxuICAgICAgICAgIEVmZmVjdC5tYXAoKHBlcm1pc3Npb25zKSA9PiBwdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9uRm9yKGVudHJ5LCBwZXJtaXNzaW9ucykpLFxuICAgICAgICApLFxuICAgICAgY2hhbmdlczogU3Vic2NyaXB0aW9uUmVmLmNoYW5nZXMoc3RhdGUpLFxuICAgICAgc2V0OiAoZW50cnksIHBlcm1pc3Npb24pID0+IHtcbiAgICAgICAgY29uc3QgY29ubmVjdGlvbktleSA9IHB1bGxSZXF1ZXN0Um91dGluZ0Nvbm5lY3Rpb25LZXkoZW50cnkpO1xuICAgICAgICBpZiAoY29ubmVjdGlvbktleSA9PT0gbnVsbClcbiAgICAgICAgICByZXR1cm4gRWZmZWN0LmZhaWwoXG4gICAgICAgICAgICBuZXcgQ29ubmVjdGlvbkJsb2NrZWRFcnJvcih7XG4gICAgICAgICAgICAgIHJlYXNvbjogXCJjb25maWd1cmF0aW9uXCIsXG4gICAgICAgICAgICAgIGRldGFpbDogXCJUaGlzIGVudmlyb25tZW50IGRvZXMgbm90IGhhdmUgYSBzYXZlZCBjb25uZWN0aW9uIGVuZHBvaW50LlwiLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZSgoY3VycmVudCkgPT4gW1xuICAgICAgICAgIC4uLmN1cnJlbnQuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUuZW52aXJvbm1lbnRJZCAhPT0gZW50cnkudGFyZ2V0LmVudmlyb25tZW50SWQpLFxuICAgICAgICAgIC4uLihwZXJtaXNzaW9uID09PSBcIm9mZlwiXG4gICAgICAgICAgICA/IFtdXG4gICAgICAgICAgICA6IFt7IGVudmlyb25tZW50SWQ6IGVudHJ5LnRhcmdldC5lbnZpcm9ubWVudElkLCBjb25uZWN0aW9uS2V5LCBwZXJtaXNzaW9uIH1dKSxcbiAgICAgICAgXSk7XG4gICAgICB9LFxuICAgICAgZm9yZ2V0OiAoZW52aXJvbm1lbnRJZCkgPT5cbiAgICAgICAgdXBkYXRlKChjdXJyZW50KSA9PlxuICAgICAgICAgIGN1cnJlbnQuc29tZSgocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5lbnZpcm9ubWVudElkID09PSBlbnZpcm9ubWVudElkKVxuICAgICAgICAgICAgPyBjdXJyZW50LmZpbHRlcigocGVybWlzc2lvbikgPT4gcGVybWlzc2lvbi5lbnZpcm9ubWVudElkICE9PSBlbnZpcm9ubWVudElkKVxuICAgICAgICAgICAgOiBjdXJyZW50LFxuICAgICAgICApLFxuICAgIH0pO1xuICB9LFxuKTtcbiJdLCJmaWxlIjoiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9wYWNrYWdlcy9jbGllbnQtcnVudGltZS9zcmMvY29ubmVjdGlvbi9wdWxsUmVxdWVzdFJvdXRpbmdQZXJtaXNzaW9ucy50cyJ9

//# vitestCache=W3siZmlsZSI6IjEiLCJpZCI6IjEiLCJ1cmwiOiIyIiwiaW1wb3J0cyI6IjMiLCJtYXBwaW5ncyI6ZmFsc2UsImRlcHMiOiI0IiwiZHluYW1pY0RlcHMiOiI1Iiwic3RhdGljTW9ja3MiOm51bGx9LCIvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvcGFja2FnZXMvY2xpZW50LXJ1bnRpbWUvc3JjL2Nvbm5lY3Rpb24vcHVsbFJlcXVlc3RSb3V0aW5nUGVybWlzc2lvbnMudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NsaWVudC1ydW50aW1lL3NyYy9jb25uZWN0aW9uL3B1bGxSZXF1ZXN0Um91dGluZ1Blcm1pc3Npb25zLnRzIix7InVybHMiOiI2IiwiaWRzIjoiNyJ9LFsiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiJdLFtdLFsiOCIsIjkiLCIxMCIsIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiJdLHt9LCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NvbnRyYWN0cy9zcmMvaW5kZXgudHMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9lZmZlY3RANC4wLjUvbm9kZV9tb2R1bGVzL2VmZmVjdC9kaXN0L0NvbnRleHQuanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9lZmZlY3RANC4wLjUvbm9kZV9tb2R1bGVzL2VmZmVjdC9kaXN0L0VmZmVjdC5qcyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvT3B0aW9uLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vZWZmZWN0QDQuMC41L25vZGVfbW9kdWxlcy9lZmZlY3QvZGlzdC9TY2hlbWEuanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL25vZGVfbW9kdWxlcy8ucG5wbS9lZmZlY3RANC4wLjUvbm9kZV9tb2R1bGVzL2VmZmVjdC9kaXN0L1NlbWFwaG9yZS5qcyIsIi9AZnMvaG9tZS91YnVudHUvd3QvcHItMjQyNjMvbm9kZV9tb2R1bGVzLy5wbnBtL2VmZmVjdEA0LjAuNS9ub2RlX21vZHVsZXMvZWZmZWN0L2Rpc3QvU3RyZWFtLmpzIiwiL0Bmcy9ob21lL3VidW50dS93dC9wci0yNDI2My9ub2RlX21vZHVsZXMvLnBucG0vZWZmZWN0QDQuMC41L25vZGVfbW9kdWxlcy9lZmZlY3QvZGlzdC9TdWJzY3JpcHRpb25SZWYuanMiLCIvQGZzL2hvbWUvdWJ1bnR1L3d0L3ByLTI0MjYzL3BhY2thZ2VzL2NsaWVudC1ydW50aW1lL3NyYy9jb25uZWN0aW9uL21vZGVsLnRzIl0=