From 56af067b06fe1b0c4638f337580e2d85bee9036c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erwan=20Herv=C3=A9?= Date: Fri, 30 Jan 2026 12:26:28 +0100 Subject: [PATCH 001/562] feat: Add OCI standard labels to Dockerfile.standalone-infisical Add Open Container Initiative (OCI) standard labels for better image metadata and container registry compatibility. Labels added: - org.opencontainers.image.title - org.opencontainers.image.description - org.opencontainers.image.url - org.opencontainers.image.documentation - org.opencontainers.image.source - org.opencontainers.image.vendor - org.opencontainers.image.licenses - org.opencontainers.image.base.name - org.opencontainers.image.version (dynamic) - org.opencontainers.image.revision (dynamic) See: https://github.com/opencontainers/image-spec/blob/main/annotations.md --- Dockerfile.standalone-infisical | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Dockerfile.standalone-infisical b/Dockerfile.standalone-infisical index 19b83bedbf2..fd7bc2fa970 100644 --- a/Dockerfile.standalone-infisical +++ b/Dockerfile.standalone-infisical @@ -215,6 +215,21 @@ ENV DD_GIT_REPOSITORY_URL $DD_GIT_REPOSITORY_URL ARG DD_GIT_COMMIT_SHA ENV DD_GIT_COMMIT_SHA $DD_GIT_COMMIT_SHA +# OCI Image Labels - Static metadata +# See: https://github.com/opencontainers/image-spec/blob/main/annotations.md +LABEL org.opencontainers.image.title="Infisical" +LABEL org.opencontainers.image.description="Open-source secret management platform" +LABEL org.opencontainers.image.url="https://infisical.com" +LABEL org.opencontainers.image.documentation="https://infisical.com/docs" +LABEL org.opencontainers.image.source="https://github.com/Infisical/infisical" +LABEL org.opencontainers.image.vendor="Infisical" +LABEL org.opencontainers.image.licenses="MIT" +LABEL org.opencontainers.image.base.name="node:20.20.0-trixie-slim" + +# OCI Image Labels - Dynamic metadata (set via build args) +LABEL org.opencontainers.image.version="${INFISICAL_PLATFORM_VERSION}" +LABEL org.opencontainers.image.revision="${DD_GIT_COMMIT_SHA}" + ENV PORT 8080 ENV HOST=0.0.0.0 ENV HTTPS_ENABLED false From ec39898f5e02c5e6c2ecbe772eb5151524bc1ac6 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:12:36 -0300 Subject: [PATCH 002/562] chore(db): rename vault migration config table and add provider column Add migration to rename vault_external_migration_config to external_migration_configs, introduce nullable namespace and provider field, and register the Zod schema plus Knex typings. Made-with: Cursor --- backend/src/@types/knex.d.ts | 8 ++++ ...name-vault-to-external-migration-config.ts | 46 +++++++++++++++++++ .../db/schemas/external-migration-configs.ts | 27 +++++++++++ backend/src/db/schemas/index.ts | 1 + backend/src/db/schemas/models.ts | 1 + 5 files changed, 83 insertions(+) create mode 100644 backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts create mode 100644 backend/src/db/schemas/external-migration-configs.ts diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 089367103ab..acb399bbf91 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -623,6 +623,9 @@ import { TUsers, TUsersInsert, TUsersUpdate, + TExternalMigrationConfigs, + TExternalMigrationConfigsInsert, + TExternalMigrationConfigsUpdate, TVaultExternalMigrationConfigs, TVaultExternalMigrationConfigsInsert, TVaultExternalMigrationConfigsUpdate, @@ -1627,6 +1630,11 @@ declare module "knex/types/tables" { TAdditionalPrivilegesInsert, TAdditionalPrivilegesUpdate >; + [TableName.ExternalMigrationConfig]: KnexOriginal.CompositeTableType< + TExternalMigrationConfigs, + TExternalMigrationConfigsInsert, + TExternalMigrationConfigsUpdate + >; [TableName.VaultExternalMigrationConfig]: KnexOriginal.CompositeTableType< TVaultExternalMigrationConfigs, TVaultExternalMigrationConfigsInsert, diff --git a/backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts b/backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts new file mode 100644 index 00000000000..e67d0419685 --- /dev/null +++ b/backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts @@ -0,0 +1,46 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; +import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; + +export async function up(knex: Knex): Promise { + if (await knex.schema.hasTable(TableName.VaultExternalMigrationConfig)) { + await knex.schema.renameTable(TableName.VaultExternalMigrationConfig, TableName.ExternalMigrationConfig); + } + + if (await knex.schema.hasTable(TableName.ExternalMigrationConfig)) { + const hasProviderColumn = await knex.schema.hasColumn(TableName.ExternalMigrationConfig, "provider"); + if (!hasProviderColumn) { + await knex.schema.alterTable(TableName.ExternalMigrationConfig, (t) => { + t.string("provider").notNullable().defaultTo("vault"); + }); + await knex(TableName.ExternalMigrationConfig).update({ provider: "vault" }); + } + + const hasNullableNamespace = await knex.schema.hasColumn(TableName.ExternalMigrationConfig, "namespace"); + if (hasNullableNamespace) { + await knex.schema.alterTable(TableName.ExternalMigrationConfig, (t) => { + t.string("namespace").nullable().alter(); + }); + } + + // Drop the old trigger (still named after the old table, but now on the renamed table) + await knex.raw( + `DROP TRIGGER IF EXISTS "${TableName.VaultExternalMigrationConfig}_updatedAt" ON ${TableName.ExternalMigrationConfig}` + ); + await createOnUpdateTrigger(knex, TableName.ExternalMigrationConfig); + } +} + +export async function down(knex: Knex): Promise { + if (await knex.schema.hasTable(TableName.ExternalMigrationConfig)) { + await knex.schema.alterTable(TableName.ExternalMigrationConfig, (t) => { + t.dropColumn("provider"); + t.string("namespace").notNullable().alter(); + }); + + await dropOnUpdateTrigger(knex, TableName.ExternalMigrationConfig); + await knex.schema.renameTable(TableName.ExternalMigrationConfig, TableName.VaultExternalMigrationConfig); + await createOnUpdateTrigger(knex, TableName.VaultExternalMigrationConfig); + } +} diff --git a/backend/src/db/schemas/external-migration-configs.ts b/backend/src/db/schemas/external-migration-configs.ts new file mode 100644 index 00000000000..39e0bbb791e --- /dev/null +++ b/backend/src/db/schemas/external-migration-configs.ts @@ -0,0 +1,27 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { TImmutableDBKeys } from "./models"; + +export const ExternalMigrationConfigsSchema = z.object({ + id: z.string().uuid(), + orgId: z.string().uuid(), + namespace: z.string().nullable().optional(), + connectionId: z.string().uuid().nullable().optional(), + provider: z.string(), + createdAt: z.date(), + updatedAt: z.date() +}); + +export type TExternalMigrationConfigs = z.infer; +export type TExternalMigrationConfigsInsert = Omit< + z.input, + TImmutableDBKeys +>; +export type TExternalMigrationConfigsUpdate = Partial< + Omit, TImmutableDBKeys> +>; diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 54f2e123d0e..6d5f17b9941 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -234,6 +234,7 @@ export * from "./user-aliases"; export * from "./user-encryption-keys"; export * from "./user-group-membership"; export * from "./users"; +export * from "./external-migration-configs"; export * from "./vault-external-migration-configs"; export * from "./webauthn-credentials"; export * from "./webhooks"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index 5daa1ff79b1..e066443bb68 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -235,6 +235,7 @@ export enum TableName { PamResourceFavorite = "pam_resource_favorites", VaultExternalMigrationConfig = "vault_external_migration_configs", + ExternalMigrationConfig = "external_migration_configs", // PKI ACME PkiAcmeAccount = "pki_acme_accounts", From ed8b12ec19b1f30c13e8f6f99ce7abbe5fec9853 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:12:40 -0300 Subject: [PATCH 003/562] refactor(backend): point external migration config DAL at shared table Update joins and queries to use external_migration_configs (renamed table) while preserving connection hydration behavior. Made-with: Cursor --- .../vault-external-migration-config-dal.ts | 110 ++++++++++-------- 1 file changed, 62 insertions(+), 48 deletions(-) diff --git a/backend/src/services/external-migration/vault-external-migration-config-dal.ts b/backend/src/services/external-migration/vault-external-migration-config-dal.ts index 453432b6ed5..b92dfc106ec 100644 --- a/backend/src/services/external-migration/vault-external-migration-config-dal.ts +++ b/backend/src/services/external-migration/vault-external-migration-config-dal.ts @@ -7,63 +7,77 @@ import { buildFindFilter, ormify, prependTableNameToFindFilter, selectAllTableCo export type TVaultExternalMigrationConfigDALFactory = ReturnType; +const buildConnectionJoin = (qb: ReturnType, db: TDbClient) => + qb + .leftJoin(TableName.AppConnection, `${TableName.AppConnection}.id`, `${TableName.ExternalMigrationConfig}.connectionId`) + .select(selectAllTableCols(TableName.ExternalMigrationConfig)) + .select( + db.ref("id").withSchema(TableName.AppConnection).as("appConnectionId"), + db.ref("name").withSchema(TableName.AppConnection).as("appConnectionName"), + db.ref("app").withSchema(TableName.AppConnection).as("appConnectionApp"), + db.ref("encryptedCredentials").withSchema(TableName.AppConnection).as("appConnectionEncryptedCredentials"), + db.ref("orgId").withSchema(TableName.AppConnection).as("appConnectionOrgId"), + db.ref("isAutoRotationEnabled").withSchema(TableName.AppConnection).as("appConnectionIsAutoRotationEnabled"), + db.ref("method").withSchema(TableName.AppConnection).as("appConnectionMethod"), + db.ref("description").withSchema(TableName.AppConnection).as("appConnectionDescription"), + db.ref("version").withSchema(TableName.AppConnection).as("appConnectionVersion"), + db.ref("gatewayId").withSchema(TableName.AppConnection).as("appConnectionGatewayId"), + db.ref("projectId").withSchema(TableName.AppConnection).as("appConnectionProjectId"), + db.ref("createdAt").withSchema(TableName.AppConnection).as("appConnectionCreatedAt"), + db.ref("updatedAt").withSchema(TableName.AppConnection).as("appConnectionUpdatedAt") + ); + +const mapResultToConnection = (result: Record) => ({ + ...result, + connection: result.appConnectionId + ? { + id: result.appConnectionId, + name: result.appConnectionName, + app: result.appConnectionApp, + encryptedCredentials: result.appConnectionEncryptedCredentials, + orgId: result.appConnectionOrgId, + method: result.appConnectionMethod, + description: result.appConnectionDescription, + version: result.appConnectionVersion, + gatewayId: result.appConnectionGatewayId, + projectId: result.appConnectionProjectId, + createdAt: result.appConnectionCreatedAt, + updatedAt: result.appConnectionUpdatedAt, + isAutoRotationEnabled: result.appConnectionIsAutoRotationEnabled + } + : undefined +}); + export const vaultExternalMigrationConfigDALFactory = (db: TDbClient) => { - const orm = ormify(db, TableName.VaultExternalMigrationConfig); + const orm = ormify(db, TableName.ExternalMigrationConfig); - const findOne = async (filter: { orgId: string; namespace: string }, tx?: Knex) => { + const findOne = async (filter: { orgId: string; namespace?: string; provider?: string }, tx?: Knex) => { try { - const result = await (tx || db?.replicaNode?.() || db)(TableName.VaultExternalMigrationConfig) - .leftJoin( - TableName.AppConnection, - `${TableName.AppConnection}.id`, - `${TableName.VaultExternalMigrationConfig}.connectionId` - ) - /* eslint-disable @typescript-eslint/no-misused-promises */ - .where(buildFindFilter(prependTableNameToFindFilter(TableName.VaultExternalMigrationConfig, filter))) - .select(selectAllTableCols(TableName.VaultExternalMigrationConfig)) - .select( - db.ref("id").withSchema(TableName.AppConnection).as("appConnectionId"), - db.ref("name").withSchema(TableName.AppConnection).as("appConnectionName"), - db.ref("app").withSchema(TableName.AppConnection).as("appConnectionApp"), - db.ref("encryptedCredentials").withSchema(TableName.AppConnection).as("appConnectionEncryptedCredentials"), - db.ref("orgId").withSchema(TableName.AppConnection).as("appConnectionOrgId"), - db.ref("isAutoRotationEnabled").withSchema(TableName.AppConnection).as("appConnectionIsAutoRotationEnabled"), - db.ref("method").withSchema(TableName.AppConnection).as("appConnectionMethod"), - db.ref("description").withSchema(TableName.AppConnection).as("appConnectionDescription"), - db.ref("version").withSchema(TableName.AppConnection).as("appConnectionVersion"), - db.ref("gatewayId").withSchema(TableName.AppConnection).as("appConnectionGatewayId"), - db.ref("projectId").withSchema(TableName.AppConnection).as("appConnectionProjectId"), - db.ref("createdAt").withSchema(TableName.AppConnection).as("appConnectionCreatedAt"), - db.ref("updatedAt").withSchema(TableName.AppConnection).as("appConnectionUpdatedAt") - ) - .first(); + const qb = (tx || db?.replicaNode?.() || db)(TableName.ExternalMigrationConfig); + buildConnectionJoin(qb, db); + qb.where(buildFindFilter(prependTableNameToFindFilter(TableName.ExternalMigrationConfig, filter))); + const result = await qb.first(); if (!result) return undefined; - return { - ...result, - connection: result.appConnectionId - ? { - id: result.appConnectionId, - name: result.appConnectionName, - app: result.appConnectionApp, - encryptedCredentials: result.appConnectionEncryptedCredentials, - orgId: result.appConnectionOrgId, - method: result.appConnectionMethod, - description: result.appConnectionDescription, - version: result.appConnectionVersion, - gatewayId: result.appConnectionGatewayId, - projectId: result.appConnectionProjectId, - createdAt: result.appConnectionCreatedAt, - updatedAt: result.appConnectionUpdatedAt, - isAutoRotationEnabled: result.appConnectionIsAutoRotationEnabled - } - : undefined - }; + return mapResultToConnection(result as Record); } catch (error) { throw new DatabaseError({ error, name: "Find one" }); } }; - return { ...orm, findOne }; + const findWithConnection = async (filter: { orgId: string; provider?: string }, tx?: Knex) => { + try { + const qb = (tx || db?.replicaNode?.() || db)(TableName.ExternalMigrationConfig); + buildConnectionJoin(qb, db); + qb.where(buildFindFilter(prependTableNameToFindFilter(TableName.ExternalMigrationConfig, filter))); + + const results = await qb; + return (results as Record[]).map(mapResultToConnection); + } catch (error) { + throw new DatabaseError({ error, name: "Find with connection" }); + } + }; + + return { ...orm, findOne, findWithConnection }; }; From 6616132fbcb1c9bed740a294370558aa4d8dbb4e Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:12:45 -0300 Subject: [PATCH 004/562] feat(backend): add Doppler app connection type and API router Implement Doppler connection schema, service helpers, and v1 router; register enum, maps, and factory wiring alongside existing app connections. Made-with: Cursor --- .../app-connection-router.ts | 10 +- .../doppler-connection-router.ts | 18 +++ .../routes/v1/app-connection-routers/index.ts | 4 +- .../app-connection/app-connection-enums.ts | 3 +- .../app-connection/app-connection-fns.ts | 12 +- .../app-connection/app-connection-maps.ts | 6 +- .../app-connection/app-connection-service.ts | 8 +- .../app-connection/app-connection-types.ts | 14 +- .../doppler/doppler-connection-enums.ts | 3 + .../doppler/doppler-connection-fns.ts | 141 ++++++++++++++++++ .../doppler/doppler-connection-schema.ts | 63 ++++++++ .../doppler/doppler-connection-service.ts | 46 ++++++ .../doppler/doppler-connection-types.ts | 46 ++++++ .../services/app-connection/doppler/index.ts | 5 + 14 files changed, 366 insertions(+), 13 deletions(-) create mode 100644 backend/src/server/routes/v1/app-connection-routers/doppler-connection-router.ts create mode 100644 backend/src/services/app-connection/doppler/doppler-connection-enums.ts create mode 100644 backend/src/services/app-connection/doppler/doppler-connection-fns.ts create mode 100644 backend/src/services/app-connection/doppler/doppler-connection-schema.ts create mode 100644 backend/src/services/app-connection/doppler/doppler-connection-service.ts create mode 100644 backend/src/services/app-connection/doppler/doppler-connection-types.ts create mode 100644 backend/src/services/app-connection/doppler/index.ts diff --git a/backend/src/server/routes/v1/app-connection-routers/app-connection-router.ts b/backend/src/server/routes/v1/app-connection-routers/app-connection-router.ts index ddeb9274c69..f58aa4954e5 100644 --- a/backend/src/server/routes/v1/app-connection-routers/app-connection-router.ts +++ b/backend/src/server/routes/v1/app-connection-routers/app-connection-router.ts @@ -69,6 +69,10 @@ import { DatabricksConnectionListItemSchema, SanitizedDatabricksConnectionSchema } from "@app/services/app-connection/databricks"; +import { + DopplerConnectionListItemSchema, + SanitizedDopplerConnectionSchema +} from "@app/services/app-connection/doppler/doppler-connection-schema"; import { DbtConnectionListItemSchema, SanitizedDbtConnectionSchema } from "@app/services/app-connection/dbt"; import { DigitalOceanConnectionListItemSchema, @@ -218,7 +222,8 @@ const SanitizedAppConnectionSchema = z.union([ ...SanitizedOpenRouterConnectionSchema.options, ...SanitizedAzureEntraIdConnectionSchema.options, ...SanitizedVenafiConnectionSchema.options, - ...SanitizedExternalInfisicalConnectionSchema.options + ...SanitizedExternalInfisicalConnectionSchema.options, + ...SanitizedDopplerConnectionSchema.options ]); const AppConnectionOptionsSchema = z.discriminatedUnion("app", [ @@ -275,7 +280,8 @@ const AppConnectionOptionsSchema = z.discriminatedUnion("app", [ OpenRouterConnectionListItemSchema, AzureEntraIdConnectionListItemSchema, VenafiConnectionListItemSchema, - ExternalInfisicalConnectionListItemSchema + ExternalInfisicalConnectionListItemSchema, + DopplerConnectionListItemSchema ]); export const registerAppConnectionRouter = async (server: FastifyZodProvider) => { diff --git a/backend/src/server/routes/v1/app-connection-routers/doppler-connection-router.ts b/backend/src/server/routes/v1/app-connection-routers/doppler-connection-router.ts new file mode 100644 index 00000000000..12dc6932b94 --- /dev/null +++ b/backend/src/server/routes/v1/app-connection-routers/doppler-connection-router.ts @@ -0,0 +1,18 @@ +import { AppConnection } from "@app/services/app-connection/app-connection-enums"; +import { + CreateDopplerConnectionSchema, + SanitizedDopplerConnectionSchema, + UpdateDopplerConnectionSchema +} from "@app/services/app-connection/doppler/doppler-connection-schema"; + +import { registerAppConnectionEndpoints } from "./app-connection-endpoints"; + +export const registerDopplerConnectionRouter = async (server: FastifyZodProvider) => { + registerAppConnectionEndpoints({ + app: AppConnection.Doppler, + server, + sanitizedResponseSchema: SanitizedDopplerConnectionSchema, + createSchema: CreateDopplerConnectionSchema, + updateSchema: UpdateDopplerConnectionSchema + }); +}; diff --git a/backend/src/server/routes/v1/app-connection-routers/index.ts b/backend/src/server/routes/v1/app-connection-routers/index.ts index ca5276eb77f..416fbf27192 100644 --- a/backend/src/server/routes/v1/app-connection-routers/index.ts +++ b/backend/src/server/routes/v1/app-connection-routers/index.ts @@ -20,6 +20,7 @@ import { registerCircleCIConnectionRouter } from "./circleci-connection-router"; import { registerCloudflareConnectionRouter } from "./cloudflare-connection-router"; import { registerDatabricksConnectionRouter } from "./databricks-connection-router"; import { registerDbtConnectionRouter } from "./dbt-connection-router"; +import { registerDopplerConnectionRouter } from "./doppler-connection-router"; import { registerDigitalOceanConnectionRouter } from "./digital-ocean-connection-router"; import { registerDNSMadeEasyConnectionRouter } from "./dns-made-easy-connection-router"; import { registerExternalInfisicalConnectionRouter } from "./external-infisical-connection-router"; @@ -112,5 +113,6 @@ export const APP_CONNECTION_REGISTER_ROUTER_MAP: Record { getCircleCIConnectionListItem(), getAzureEntraIdConnectionListItem(), getVenafiConnectionListItem(), - getExternalInfisicalConnectionListItem() + getExternalInfisicalConnectionListItem(), + getDopplerConnectionListItem() ] .filter((option) => { switch (projectType) { @@ -428,7 +430,8 @@ export const validateAppConnectionCredentials = async ( validateExternalInfisicalConnectionCredentials( config as TExternalInfisicalConnectionConfig, deps.identityUaDAL - )) as TAppConnectionCredentialsValidator + )) as TAppConnectionCredentialsValidator, + [AppConnection.Doppler]: validateDopplerConnectionCredentials as TAppConnectionCredentialsValidator }; return VALIDATE_APP_CONNECTION_CREDENTIALS_MAP[appConnection.app](appConnection, gatewayService, gatewayV2Service); @@ -520,6 +523,8 @@ export const getAppConnectionMethodName = (method: TAppConnection["method"]) => return "Access Token"; case ExternalInfisicalConnectionMethod.MachineIdentityUniversalAuth: return "Machine Identity - Universal Auth"; + case DopplerConnectionMethod.ApiToken: + return "API Token"; default: // eslint-disable-next-line @typescript-eslint/restrict-template-expressions throw new Error(`Unhandled App Connection Method: ${method}`); @@ -627,7 +632,8 @@ export const TRANSITION_CONNECTION_CREDENTIALS_TO_PLATFORM: Record< [AppConnection.CircleCI]: platformManagedCredentialsNotSupported, [AppConnection.AzureEntraId]: platformManagedCredentialsNotSupported, [AppConnection.Venafi]: platformManagedCredentialsNotSupported, - [AppConnection.ExternalInfisical]: platformManagedCredentialsNotSupported + [AppConnection.ExternalInfisical]: platformManagedCredentialsNotSupported, + [AppConnection.Doppler]: platformManagedCredentialsNotSupported }; export const enterpriseAppCheck = async ( diff --git a/backend/src/services/app-connection/app-connection-maps.ts b/backend/src/services/app-connection/app-connection-maps.ts index e5e9587471c..1312b0d4033 100644 --- a/backend/src/services/app-connection/app-connection-maps.ts +++ b/backend/src/services/app-connection/app-connection-maps.ts @@ -54,7 +54,8 @@ export const APP_CONNECTION_NAME_MAP: Record = { [AppConnection.CircleCI]: "CircleCI", [AppConnection.AzureEntraId]: "Azure Entra ID", [AppConnection.Venafi]: "Venafi TLS Protect Cloud", - [AppConnection.ExternalInfisical]: "Infisical" + [AppConnection.ExternalInfisical]: "Infisical", + [AppConnection.Doppler]: "Doppler" }; export const APP_CONNECTION_PLAN_MAP: Record = { @@ -111,5 +112,6 @@ export const APP_CONNECTION_PLAN_MAP: Record>>; @@ -438,6 +445,7 @@ export type TAppConnectionInput = { id: string } & ( | TAzureEntraIdConnectionInput | TVenafiConnectionInput | TExternalInfisicalConnectionInput + | TDopplerConnectionInput ); export type TSqlConnectionInput = @@ -531,7 +539,8 @@ export type TAppConnectionConfig = | TCircleCIConnectionConfig | TAzureEntraIdConnectionConfig | TVenafiConnectionConfig - | TExternalInfisicalConnectionConfig; + | TExternalInfisicalConnectionConfig + | TDopplerConnectionConfig; export type TValidateAppConnectionCredentialsSchema = | TValidateAwsConnectionCredentialsSchema @@ -587,7 +596,8 @@ export type TValidateAppConnectionCredentialsSchema = | TValidateCircleCIConnectionCredentialsSchema | TValidateAzureEntraIdConnectionCredentialsSchema | TValidateVenafiConnectionCredentialsSchema - | TValidateExternalInfisicalConnectionCredentialsSchema; + | TValidateExternalInfisicalConnectionCredentialsSchema + | TValidateDopplerConnectionCredentialsSchema; export type TListAwsConnectionKmsKeys = { connectionId: string; diff --git a/backend/src/services/app-connection/doppler/doppler-connection-enums.ts b/backend/src/services/app-connection/doppler/doppler-connection-enums.ts new file mode 100644 index 00000000000..2bc9e4f9db6 --- /dev/null +++ b/backend/src/services/app-connection/doppler/doppler-connection-enums.ts @@ -0,0 +1,3 @@ +export enum DopplerConnectionMethod { + ApiToken = "api-token" +} diff --git a/backend/src/services/app-connection/doppler/doppler-connection-fns.ts b/backend/src/services/app-connection/doppler/doppler-connection-fns.ts new file mode 100644 index 00000000000..ce6047ce539 --- /dev/null +++ b/backend/src/services/app-connection/doppler/doppler-connection-fns.ts @@ -0,0 +1,141 @@ +import { AxiosError } from "axios"; + +import { request } from "@app/lib/config/request"; +import { BadRequestError } from "@app/lib/errors"; + +import { AppConnection } from "../app-connection-enums"; +import { DopplerConnectionMethod } from "./doppler-connection-enums"; +import { + TDopplerConnection, + TDopplerConnectionConfig, + TDopplerEnvironment, + TDopplerProject, + TDopplerSecret +} from "./doppler-connection-types"; + +const DOPPLER_API_URL = "https://api.doppler.com"; + +export const getDopplerConnectionListItem = () => { + return { + name: "Doppler" as const, + app: AppConnection.Doppler as const, + methods: Object.values(DopplerConnectionMethod) as [DopplerConnectionMethod.ApiToken] + }; +}; + +export const validateDopplerConnectionCredentials = async (config: TDopplerConnectionConfig) => { + const { credentials: inputCredentials } = config; + + try { + await request.get(`${DOPPLER_API_URL}/v3/me`, { + headers: { + Authorization: `Bearer ${inputCredentials.apiToken}` + } + }); + } catch (error: unknown) { + if (error instanceof AxiosError) { + throw new BadRequestError({ + message: `Failed to validate Doppler credentials: ${error.response?.data?.messages?.join(", ") || error.message || "Unknown error"}` + }); + } + throw new BadRequestError({ + message: "Unable to validate Doppler connection: verify credentials" + }); + } + + return inputCredentials; +}; + +export const listDopplerProjects = async (appConnection: TDopplerConnection): Promise => { + const { + credentials: { apiToken } + } = appConnection; + + const projects: TDopplerProject[] = []; + let page = 1; + const perPage = 50; + let hasMore = true; + + while (hasMore) { + const res = await request.get<{ projects: TDopplerProject[]; page: number }>( + `${DOPPLER_API_URL}/v3/projects`, + { + params: { page, per_page: perPage }, + headers: { Authorization: `Bearer ${apiToken}` } + } + ); + + projects.push(...res.data.projects); + + if (res.data.projects.length < perPage) { + hasMore = false; + } else { + page += 1; + } + } + + return projects; +}; + +export const listDopplerEnvironments = async ( + appConnection: TDopplerConnection, + projectSlug: string +): Promise => { + const { + credentials: { apiToken } + } = appConnection; + + const environments: TDopplerEnvironment[] = []; + let page = 1; + const perPage = 50; + let hasMore = true; + + while (hasMore) { + const res = await request.get<{ environments: TDopplerEnvironment[] }>( + `${DOPPLER_API_URL}/v3/environments`, + { + params: { project: projectSlug, page, per_page: perPage }, + headers: { Authorization: `Bearer ${apiToken}` } + } + ); + + environments.push(...res.data.environments); + + if (res.data.environments.length < perPage) { + hasMore = false; + } else { + page += 1; + } + } + + return environments; +}; + +export const getDopplerSecrets = async ( + appConnection: TDopplerConnection, + projectSlug: string, + environmentSlug: string +): Promise> => { + const { + credentials: { apiToken } + } = appConnection; + + const res = await request.get<{ secrets: Record }>( + `${DOPPLER_API_URL}/v3/configs/config/secrets`, + { + params: { + project: projectSlug, + config: environmentSlug, + include_dynamic_secrets: false, + include_managed_secrets: false + }, + headers: { Authorization: `Bearer ${apiToken}` } + } + ); + + return Object.fromEntries( + Object.entries(res.data.secrets) + .filter(([, v]) => v.raw !== null) + .map(([k, v]) => [k, v.raw ?? ""]) + ); +}; diff --git a/backend/src/services/app-connection/doppler/doppler-connection-schema.ts b/backend/src/services/app-connection/doppler/doppler-connection-schema.ts new file mode 100644 index 00000000000..4ef92dc4494 --- /dev/null +++ b/backend/src/services/app-connection/doppler/doppler-connection-schema.ts @@ -0,0 +1,63 @@ +import z from "zod"; + +import { AppConnections } from "@app/lib/api-docs"; +import { AppConnection } from "@app/services/app-connection/app-connection-enums"; +import { + BaseAppConnectionSchema, + GenericCreateAppConnectionFieldsSchema, + GenericUpdateAppConnectionFieldsSchema +} from "@app/services/app-connection/app-connection-schemas"; + +import { APP_CONNECTION_NAME_MAP } from "../app-connection-maps"; +import { DopplerConnectionMethod } from "./doppler-connection-enums"; + +export const DopplerConnectionApiTokenCredentialsSchema = z.object({ + apiToken: z + .string() + .trim() + .min(1, "API token required") + .max(512, "API token cannot exceed 512 characters") +}); + +const BaseDopplerConnectionSchema = BaseAppConnectionSchema.extend({ app: z.literal(AppConnection.Doppler) }); + +export const DopplerConnectionSchema = BaseDopplerConnectionSchema.extend({ + method: z.literal(DopplerConnectionMethod.ApiToken), + credentials: DopplerConnectionApiTokenCredentialsSchema +}); + +export const SanitizedDopplerConnectionSchema = z.discriminatedUnion("method", [ + BaseDopplerConnectionSchema.extend({ + method: z.literal(DopplerConnectionMethod.ApiToken), + credentials: DopplerConnectionApiTokenCredentialsSchema.pick({}) + }).describe(JSON.stringify({ title: `${APP_CONNECTION_NAME_MAP[AppConnection.Doppler]} (API Token)` })) +]); + +export const ValidateDopplerConnectionCredentialsSchema = z.discriminatedUnion("method", [ + z.object({ + method: z.literal(DopplerConnectionMethod.ApiToken).describe(AppConnections.CREATE(AppConnection.Doppler).method), + credentials: DopplerConnectionApiTokenCredentialsSchema.describe( + AppConnections.CREATE(AppConnection.Doppler).credentials + ) + }) +]); + +export const CreateDopplerConnectionSchema = ValidateDopplerConnectionCredentialsSchema.and( + GenericCreateAppConnectionFieldsSchema(AppConnection.Doppler) +); + +export const UpdateDopplerConnectionSchema = z + .object({ + credentials: DopplerConnectionApiTokenCredentialsSchema.optional().describe( + AppConnections.UPDATE(AppConnection.Doppler).credentials + ) + }) + .and(GenericUpdateAppConnectionFieldsSchema(AppConnection.Doppler)); + +export const DopplerConnectionListItemSchema = z + .object({ + name: z.literal("Doppler"), + app: z.literal(AppConnection.Doppler), + methods: z.nativeEnum(DopplerConnectionMethod).array() + }) + .describe(JSON.stringify({ title: APP_CONNECTION_NAME_MAP[AppConnection.Doppler] })); diff --git a/backend/src/services/app-connection/doppler/doppler-connection-service.ts b/backend/src/services/app-connection/doppler/doppler-connection-service.ts new file mode 100644 index 00000000000..17837c54322 --- /dev/null +++ b/backend/src/services/app-connection/doppler/doppler-connection-service.ts @@ -0,0 +1,46 @@ +import { logger } from "@app/lib/logger"; +import { OrgServiceActor } from "@app/lib/types"; + +import { AppConnection } from "../app-connection-enums"; +import { getDopplerSecrets, listDopplerEnvironments, listDopplerProjects } from "./doppler-connection-fns"; +import { TDopplerConnection } from "./doppler-connection-types"; + +type TGetAppConnectionFunc = ( + app: AppConnection, + connectionId: string, + actor: OrgServiceActor +) => Promise; + +export const dopplerConnectionService = (getAppConnection: TGetAppConnectionFunc) => { + const listProjects = async (connectionId: string, actor: OrgServiceActor) => { + const appConnection = await getAppConnection(AppConnection.Doppler, connectionId, actor); + try { + return await listDopplerProjects(appConnection); + } catch (error) { + logger.error(error, "Failed to list projects for Doppler connection"); + return []; + } + }; + + const listEnvironments = async (connectionId: string, projectSlug: string, actor: OrgServiceActor) => { + const appConnection = await getAppConnection(AppConnection.Doppler, connectionId, actor); + try { + return await listDopplerEnvironments(appConnection, projectSlug); + } catch (error) { + logger.error(error, "Failed to list environments for Doppler connection"); + return []; + } + }; + + const getSecrets = async ( + connectionId: string, + projectSlug: string, + environmentSlug: string, + actor: OrgServiceActor + ) => { + const appConnection = await getAppConnection(AppConnection.Doppler, connectionId, actor); + return getDopplerSecrets(appConnection, projectSlug, environmentSlug); + }; + + return { listProjects, listEnvironments, getSecrets }; +}; diff --git a/backend/src/services/app-connection/doppler/doppler-connection-types.ts b/backend/src/services/app-connection/doppler/doppler-connection-types.ts new file mode 100644 index 00000000000..cb002801c95 --- /dev/null +++ b/backend/src/services/app-connection/doppler/doppler-connection-types.ts @@ -0,0 +1,46 @@ +import z from "zod"; + +import { DiscriminativePick } from "@app/lib/types"; + +import { AppConnection } from "../app-connection-enums"; +import { + CreateDopplerConnectionSchema, + DopplerConnectionSchema, + ValidateDopplerConnectionCredentialsSchema +} from "./doppler-connection-schema"; + +export type TDopplerConnection = z.infer; + +export type TDopplerConnectionInput = z.infer & { + app: AppConnection.Doppler; +}; + +export type TValidateDopplerConnectionCredentialsSchema = typeof ValidateDopplerConnectionCredentialsSchema; + +export type TDopplerConnectionConfig = DiscriminativePick< + TDopplerConnectionInput, + "method" | "app" | "credentials" +> & { + orgId: string; +}; + +export type TDopplerProject = { + id: string; + slug: string; + name: string; + description: string; +}; + +export type TDopplerEnvironment = { + id: string; + slug: string; + name: string; + project: string; + initialFetchAt: string | null; + createdAt: string; +}; + +export type TDopplerSecret = { + raw: string | null; + computed: string | null; +}; diff --git a/backend/src/services/app-connection/doppler/index.ts b/backend/src/services/app-connection/doppler/index.ts new file mode 100644 index 00000000000..5ff3c4c11cb --- /dev/null +++ b/backend/src/services/app-connection/doppler/index.ts @@ -0,0 +1,5 @@ +export * from "./doppler-connection-enums"; +export * from "./doppler-connection-fns"; +export * from "./doppler-connection-schema"; +export * from "./doppler-connection-service"; +export * from "./doppler-connection-types"; From 3b8e57234a143af9cf9164240ac2f3a78ca31819 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:12:48 -0300 Subject: [PATCH 005/562] feat(backend): Doppler in-platform migration and vault config filtering Add Doppler config CRUD, project/environment listing, and secret import; scope vault migration endpoints to provider=vault so Doppler rows do not break response validation. Register v3 external-migration routes. Made-with: Cursor --- .../routes/v3/external-migration-router.ts | 194 ++++++++++++++ .../external-migration-fns/doppler.ts | 3 + .../external-migration-fns/index.ts | 1 + .../external-migration-service.ts | 236 +++++++++++++++++- .../external-migration-types.ts | 32 ++- 5 files changed, 458 insertions(+), 8 deletions(-) create mode 100644 backend/src/services/external-migration/external-migration-fns/doppler.ts diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index c44ecb4b181..bb1fd0da1e4 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -639,4 +639,198 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider return { roles }; } }); + + // ─── Doppler In-Platform Migration Routes ──────────────────────────────────── + + server.route({ + method: "GET", + url: "/doppler/configs", + config: { rateLimit: readLimit }, + schema: { + operationId: "getDopplerExternalMigrationConfigsV3", + response: { + 200: z.object({ + configs: z + .object({ + id: z.string(), + orgId: z.string(), + connectionId: z.string().nullish(), + provider: z.string(), + createdAt: z.date(), + updatedAt: z.date() + }) + .array() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const configs = await server.services.migration.getDopplerExternalMigrationConfigs(req.permission); + return { configs }; + } + }); + + server.route({ + method: "POST", + url: "/doppler/configs", + config: { rateLimit: writeLimit }, + schema: { + operationId: "createDopplerExternalMigrationV3", + body: z.object({ + connectionId: z.string().uuid() + }), + response: { + 200: z.object({ + config: z.object({ + id: z.string(), + orgId: z.string(), + connectionId: z.string().nullish(), + provider: z.string(), + createdAt: z.date(), + updatedAt: z.date() + }) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const config = await server.services.migration.createDopplerExternalMigration({ + connectionId: req.body.connectionId, + actor: req.permission + }); + return { config }; + } + }); + + server.route({ + method: "PUT", + url: "/doppler/configs/:id", + config: { rateLimit: writeLimit }, + schema: { + operationId: "updateDopplerExternalMigrationV3", + params: z.object({ id: z.string().uuid() }), + body: z.object({ + connectionId: z.string().uuid().nullable() + }) + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const config = await server.services.migration.updateDopplerExternalMigration({ + id: req.params.id, + connectionId: req.body.connectionId, + actor: req.permission + }); + return { config }; + } + }); + + server.route({ + method: "DELETE", + url: "/doppler/configs/:id", + config: { rateLimit: writeLimit }, + schema: { + operationId: "deleteDopplerExternalMigrationV3", + params: z.object({ id: z.string().uuid() }) + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const config = await server.services.migration.deleteDopplerExternalMigration({ + id: req.params.id, + actor: req.permission + }); + return { config }; + } + }); + + server.route({ + method: "GET", + url: "/doppler/projects", + config: { rateLimit: readLimit }, + schema: { + operationId: "getDopplerProjectsV3", + querystring: z.object({ configId: z.string().uuid() }), + response: { + 200: z.object({ + projects: z + .object({ + id: z.string(), + slug: z.string(), + name: z.string(), + description: z.string() + }) + .array() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const projects = await server.services.migration.getDopplerProjects({ + configId: req.query.configId, + actor: req.permission + }); + return { projects }; + } + }); + + server.route({ + method: "GET", + url: "/doppler/environments", + config: { rateLimit: readLimit }, + schema: { + operationId: "getDopplerEnvironmentsV3", + querystring: z.object({ + configId: z.string().uuid(), + projectSlug: z.string().min(1) + }), + response: { + 200: z.object({ + environments: z + .object({ + id: z.string(), + slug: z.string(), + name: z.string(), + project: z.string() + }) + .array() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const environments = await server.services.migration.getDopplerEnvironments({ + configId: req.query.configId, + projectSlug: req.query.projectSlug, + actor: req.permission + }); + return { environments }; + } + }); + + server.route({ + method: "POST", + url: "/doppler/import-secrets", + config: { rateLimit: writeLimit }, + schema: { + operationId: "importDopplerSecretsV3", + body: z.object({ + configId: z.string().uuid(), + dopplerProject: z.string().min(1), + dopplerEnvironment: z.string().min(1), + targetProjectId: z.string().min(1), + targetEnvironment: z.string().min(1), + targetSecretPath: z.string().min(1).default("/") + }), + response: { + 200: z.object({ imported: z.number() }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const result = await server.services.migration.importDopplerSecrets({ + ...req.body, + actor: req.permission + }); + return result; + } + }); }; diff --git a/backend/src/services/external-migration/external-migration-fns/doppler.ts b/backend/src/services/external-migration/external-migration-fns/doppler.ts new file mode 100644 index 00000000000..8cd2c93a8de --- /dev/null +++ b/backend/src/services/external-migration/external-migration-fns/doppler.ts @@ -0,0 +1,3 @@ +// Re-export Doppler API helpers for use in the migration service. +// The actual implementation lives in the Doppler AppConnection package. +export { getDopplerSecrets, listDopplerEnvironments, listDopplerProjects } from "@app/services/app-connection/doppler/doppler-connection-fns"; diff --git a/backend/src/services/external-migration/external-migration-fns/index.ts b/backend/src/services/external-migration/external-migration-fns/index.ts index 4af82bf2285..a7e60cabc47 100644 --- a/backend/src/services/external-migration/external-migration-fns/index.ts +++ b/backend/src/services/external-migration/external-migration-fns/index.ts @@ -1,3 +1,4 @@ +export * from "./doppler"; export * from "./envkey"; export * from "./import"; export * from "./vault"; diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 0a3d4766f1a..956f77fe9b2 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -18,6 +18,7 @@ import { OrgServiceActor } from "@app/lib/types"; import { AppConnection } from "../app-connection/app-connection-enums"; import { decryptAppConnectionCredentials } from "../app-connection/app-connection-fns"; import { TAppConnectionServiceFactory } from "../app-connection/app-connection-service"; +import { TDopplerConnection } from "../app-connection/doppler"; import { convertVaultValueToString, getHCVaultAuthMounts, @@ -41,7 +42,10 @@ import { SecretProtectionType } from "../secret/secret-types"; import { TUserDALFactory } from "../user/user-dal"; import { decryptEnvKeyDataFn, + getDopplerSecrets, importVaultDataFn, + listDopplerEnvironments, + listDopplerProjects, parseEnvKeyDataFn, vaultMigrationTransformMappings } from "./external-migration-fns"; @@ -49,11 +53,15 @@ import { TExternalMigrationQueueFactory } from "./external-migration-queue"; import { ExternalMigrationProviders, ExternalPlatforms, + TCreateDopplerExternalMigrationDTO, TCreateVaultExternalMigrationDTO, + TDeleteDopplerExternalMigrationDTO, TDeleteVaultExternalMigrationDTO, THasCustomVaultMigrationDTO, + TImportDopplerSecretsDTO, TImportEnvKeyDataDTO, TImportVaultDataDTO, + TUpdateDopplerExternalMigrationDTO, TUpdateVaultExternalMigrationDTO, VaultImportStatus } from "./external-migration-types"; @@ -67,7 +75,7 @@ type TExternalMigrationServiceFactoryDep = { appConnectionService: Pick; vaultExternalMigrationConfigDAL: Pick< TVaultExternalMigrationConfigDALFactory, - "create" | "findOne" | "transaction" | "find" | "updateById" | "deleteById" | "findById" + "create" | "findOne" | "transaction" | "find" | "updateById" | "deleteById" | "findById" | "findWithConnection" >; userDAL: Pick; gatewayService: Pick; @@ -155,7 +163,8 @@ export const externalMigrationServiceFactory = ({ const vaultConfig = await vaultExternalMigrationConfigDAL.findOne({ orgId: actor.orgId, - namespace + namespace, + provider: ExternalMigrationProviders.Vault }); if (!vaultConfig) { @@ -385,7 +394,8 @@ export const externalMigrationServiceFactory = ({ const config = await vaultExternalMigrationConfigDAL.create({ namespace, connectionId, - orgId: actor.orgId + orgId: actor.orgId, + provider: ExternalMigrationProviders.Vault }); return config; @@ -422,6 +432,14 @@ export const externalMigrationServiceFactory = ({ throw new ForbiddenRequestError({ message: "Only admins can update vault external migration" }); } + const existing = await vaultExternalMigrationConfigDAL.findById(id); + if (!existing || existing.orgId !== actor.orgId) { + throw new NotFoundError({ message: "Vault migration config not found" }); + } + if (existing.provider !== ExternalMigrationProviders.Vault) { + throw new NotFoundError({ message: "Vault migration config not found" }); + } + if (connectionId) { const connection = await appConnectionService.connectAppConnectionById( AppConnection.HCVault, @@ -458,7 +476,8 @@ export const externalMigrationServiceFactory = ({ } const configs = await vaultExternalMigrationConfigDAL.find({ - orgId: actor.orgId + orgId: actor.orgId, + provider: ExternalMigrationProviders.Vault }); return configs; @@ -480,7 +499,8 @@ export const externalMigrationServiceFactory = ({ // Get all configured namespaces for this org const vaultConfigs = await vaultExternalMigrationConfigDAL.find({ - orgId: actor.orgId + orgId: actor.orgId, + provider: ExternalMigrationProviders.Vault }); // Return the configured namespaces as an array of objects with id and name @@ -621,6 +641,10 @@ export const externalMigrationServiceFactory = ({ throw new ForbiddenRequestError({ message: "Config does not belong to this organization" }); } + if (config.provider !== ExternalMigrationProviders.Vault) { + throw new NotFoundError({ message: "Vault migration config not found" }); + } + const deletedConfig = await vaultExternalMigrationConfigDAL.deleteById(id); return deletedConfig; @@ -691,6 +715,199 @@ export const externalMigrationServiceFactory = ({ return getHCVaultLdapRoles(namespace, mountPath, connection, gatewayService, gatewayV2Service); }; + // ─── Doppler In-Platform Migration ────────────────────────────────────────── + + const getDopplerConnectionForConfig = async (configId: string, actor: OrgServiceActor) => { + const { hasRole } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor: actor.type, + actorId: actor.id, + orgId: actor.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId + }); + + if (!hasRole(OrgMembershipRole.Admin)) { + throw new ForbiddenRequestError({ message: "Only admins can use Doppler migration" }); + } + + const config = await vaultExternalMigrationConfigDAL.findById(configId); + + if (!config || config.orgId !== actor.orgId) { + throw new NotFoundError({ message: "Doppler migration config not found" }); + } + + if (!config.connectionId) { + throw new BadRequestError({ message: "Doppler migration config has no connection configured" }); + } + + const appConnection = await appConnectionService.connectAppConnectionById( + AppConnection.Doppler, + config.connectionId, + actor + ); + + return appConnection; + }; + + const createDopplerExternalMigration = async ({ connectionId, actor }: TCreateDopplerExternalMigrationDTO) => { + const { hasRole } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor: actor.type, + actorId: actor.id, + orgId: actor.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId + }); + + if (!hasRole(OrgMembershipRole.Admin)) { + throw new ForbiddenRequestError({ message: "Only admins can create Doppler migration configs" }); + } + + try { + const config = await vaultExternalMigrationConfigDAL.create({ + orgId: actor.orgId, + connectionId, + provider: ExternalMigrationProviders.Doppler, + namespace: null + }); + + return config; + } catch (error) { + if (error instanceof DatabaseError && error.error && "code" in (error.error as object)) { + const dbError = error.error as { code: string }; + if (dbError.code === DatabaseErrorCode.UniqueViolation) { + throw new BadRequestError({ message: "A Doppler migration config already exists for this connection" }); + } + } + throw error; + } + }; + + const getDopplerExternalMigrationConfigs = async (actor: OrgServiceActor) => { + const { hasRole } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor: actor.type, + actorId: actor.id, + orgId: actor.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId + }); + + if (!hasRole(OrgMembershipRole.Admin)) { + throw new ForbiddenRequestError({ message: "Only admins can view Doppler migration configs" }); + } + + return vaultExternalMigrationConfigDAL.findWithConnection({ + orgId: actor.orgId, + provider: ExternalMigrationProviders.Doppler + }); + }; + + const updateDopplerExternalMigration = async ({ + id, + connectionId, + actor + }: TUpdateDopplerExternalMigrationDTO) => { + const { hasRole } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor: actor.type, + actorId: actor.id, + orgId: actor.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId + }); + + if (!hasRole(OrgMembershipRole.Admin)) { + throw new ForbiddenRequestError({ message: "Only admins can update Doppler migration configs" }); + } + + const config = await vaultExternalMigrationConfigDAL.findById(id); + + if (!config || config.orgId !== actor.orgId) { + throw new NotFoundError({ message: "Doppler migration config not found" }); + } + + return vaultExternalMigrationConfigDAL.updateById(id, { connectionId }); + }; + + const deleteDopplerExternalMigration = async ({ id, actor }: TDeleteDopplerExternalMigrationDTO) => { + const { hasRole } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor: actor.type, + actorId: actor.id, + orgId: actor.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId + }); + + if (!hasRole(OrgMembershipRole.Admin)) { + throw new ForbiddenRequestError({ message: "Only admins can delete Doppler migration configs" }); + } + + const config = await vaultExternalMigrationConfigDAL.findById(id); + + if (!config || config.orgId !== actor.orgId) { + throw new NotFoundError({ message: "Doppler migration config not found" }); + } + + return vaultExternalMigrationConfigDAL.deleteById(id); + }; + + const getDopplerProjects = async ({ configId, actor }: { configId: string; actor: OrgServiceActor }) => { + const appConnection = await getDopplerConnectionForConfig(configId, actor); + return listDopplerProjects(appConnection); + }; + + const getDopplerEnvironments = async ({ + configId, + projectSlug, + actor + }: { + configId: string; + projectSlug: string; + actor: OrgServiceActor; + }) => { + const appConnection = await getDopplerConnectionForConfig(configId, actor); + return listDopplerEnvironments(appConnection, projectSlug); + }; + + const importDopplerSecrets = async ({ + configId, + dopplerProject, + dopplerEnvironment, + targetProjectId, + targetEnvironment, + targetSecretPath, + actor + }: TImportDopplerSecretsDTO) => { + const appConnection = await getDopplerConnectionForConfig(configId, actor); + + const dopplerSecrets = await getDopplerSecrets(appConnection, dopplerProject, dopplerEnvironment); + + try { + await secretService.createManySecretsRaw({ + actorId: actor.id, + actor: actor.type, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + projectId: targetProjectId, + environment: targetEnvironment, + secretPath: targetSecretPath, + secrets: Object.entries(dopplerSecrets).map(([secretKey, secretValue]) => ({ + secretKey, + secretValue + })) + }); + } catch (error) { + throw new BadRequestError({ + message: `Failed to import Doppler secrets. ${error instanceof Error ? error.message : "Unknown error"}` + }); + } + + return { imported: Object.keys(dopplerSecrets).length }; + }; + return { importEnvKeyData, importVaultData, @@ -708,6 +925,13 @@ export const externalMigrationServiceFactory = ({ getVaultKubernetesAuthRoles, getVaultKubernetesRoles, getVaultDatabaseRoles, - getVaultLdapRoles + getVaultLdapRoles, + createDopplerExternalMigration, + getDopplerExternalMigrationConfigs, + updateDopplerExternalMigration, + deleteDopplerExternalMigration, + getDopplerProjects, + getDopplerEnvironments, + importDopplerSecrets }; }; diff --git a/backend/src/services/external-migration/external-migration-types.ts b/backend/src/services/external-migration/external-migration-types.ts index 2b9069b9194..58ee2ca2cd0 100644 --- a/backend/src/services/external-migration/external-migration-types.ts +++ b/backend/src/services/external-migration/external-migration-types.ts @@ -119,12 +119,14 @@ export type TEnvKeyExportJSON = { export enum ExternalPlatforms { EnvKey = "EnvKey", - Vault = "Vault" + Vault = "Vault", + Doppler = "Doppler" } export enum ExternalMigrationProviders { Vault = "vault", - EnvKey = "env-key" + EnvKey = "env-key", + Doppler = "doppler" } export enum VaultImportStatus { @@ -132,6 +134,32 @@ export enum VaultImportStatus { ApprovalRequired = "approval-required" } +export type TCreateDopplerExternalMigrationDTO = { + connectionId: string; + actor: OrgServiceActor; +}; + +export type TUpdateDopplerExternalMigrationDTO = { + id: string; + connectionId: string | null; + actor: OrgServiceActor; +}; + +export type TDeleteDopplerExternalMigrationDTO = { + id: string; + actor: OrgServiceActor; +}; + +export type TImportDopplerSecretsDTO = { + configId: string; + dopplerProject: string; + dopplerEnvironment: string; + targetProjectId: string; + targetEnvironment: string; + targetSecretPath: string; + actor: OrgServiceActor; +}; + export type TCreateVaultExternalMigrationDTO = { namespace: string; connectionId: string; From 9f8d8fe44237a3fd6dd0f0a8ff2b67f17aa56040 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:12:53 -0300 Subject: [PATCH 006/562] feat(frontend): Doppler app connection form and types Add Doppler to APP_CONNECTION_MAP, hooks enums and option types, form component, and integration logo asset. Made-with: Cursor --- .../public/images/integrations/Doppler.png | Bin 0 -> 30078 bytes frontend/src/helpers/appConnections.ts | 6 +- .../src/hooks/api/appConnections/enums.ts | 3 +- .../api/appConnections/types/app-options.ts | 8 +- .../types/doppler-connection.ts | 11 ++ .../hooks/api/appConnections/types/index.ts | 5 +- .../AppConnectionForm/AppConnectionForm.tsx | 5 + .../DopplerConnectionForm.tsx | 134 ++++++++++++++++++ 8 files changed, 168 insertions(+), 4 deletions(-) create mode 100644 frontend/public/images/integrations/Doppler.png create mode 100644 frontend/src/hooks/api/appConnections/types/doppler-connection.ts create mode 100644 frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/DopplerConnectionForm.tsx diff --git a/frontend/public/images/integrations/Doppler.png b/frontend/public/images/integrations/Doppler.png new file mode 100644 index 0000000000000000000000000000000000000000..69028e2c525ddd80fdebea6593a3e2b1cafaa189 GIT binary patch literal 30078 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 literal 0 HcmV?d00001 diff --git a/frontend/src/helpers/appConnections.ts b/frontend/src/helpers/appConnections.ts index cfb07fba518..9680b1fe7d8 100644 --- a/frontend/src/helpers/appConnections.ts +++ b/frontend/src/helpers/appConnections.ts @@ -56,6 +56,7 @@ import { ChefConnectionMethod } from "@app/hooks/api/appConnections/types/chef-c import { CircleCIConnectionMethod } from "@app/hooks/api/appConnections/types/circleci-connection"; import { DigitalOceanConnectionMethod } from "@app/hooks/api/appConnections/types/digital-ocean"; import { DNSMadeEasyConnectionMethod } from "@app/hooks/api/appConnections/types/dns-made-easy-connection"; +import { DopplerConnectionMethod } from "@app/hooks/api/appConnections/types/doppler-connection"; import { ExternalInfisicalConnectionMethod } from "@app/hooks/api/appConnections/types/external-infisical-connection"; import { HerokuConnectionMethod } from "@app/hooks/api/appConnections/types/heroku-connection"; import { LaravelForgeConnectionMethod } from "@app/hooks/api/appConnections/types/laravel-forge-connection"; @@ -156,7 +157,8 @@ export const APP_CONNECTION_MAP: Record< [AppConnection.CircleCI]: { name: "CircleCI", image: "CircleCI.png" }, [AppConnection.AzureEntraId]: { name: "Azure Entra ID", image: "Microsoft Azure.png" }, [AppConnection.Venafi]: { name: "Venafi TLS Protect Cloud", image: "Venafi.png" }, - [AppConnection.ExternalInfisical]: { name: "Infisical", image: "Infisical.png" } + [AppConnection.ExternalInfisical]: { name: "Infisical", image: "Infisical.png" }, + [AppConnection.Doppler]: { name: "Doppler", image: "Doppler.png" } }; export const getAppConnectionMethodDetails = (method: TAppConnection["method"]) => { @@ -259,6 +261,8 @@ export const getAppConnectionMethodDetails = (method: TAppConnection["method"]) return { name: "Credentials", icon: faLock }; case ExternalInfisicalConnectionMethod.MachineIdentityUniversalAuth: return { name: "Machine Identity - Universal Auth", icon: faKey }; + case DopplerConnectionMethod.ApiToken: + return { name: "API Token", icon: faKey }; default: throw new Error(`Unhandled App Connection Method: ${method}`); } diff --git a/frontend/src/hooks/api/appConnections/enums.ts b/frontend/src/hooks/api/appConnections/enums.ts index 5faf3c2e588..3d4e78407f3 100644 --- a/frontend/src/hooks/api/appConnections/enums.ts +++ b/frontend/src/hooks/api/appConnections/enums.ts @@ -52,5 +52,6 @@ export enum AppConnection { CircleCI = "circleci", AzureEntraId = "azure-entra-id", Venafi = "venafi", - ExternalInfisical = "external-infisical" + ExternalInfisical = "external-infisical", + Doppler = "doppler" } diff --git a/frontend/src/hooks/api/appConnections/types/app-options.ts b/frontend/src/hooks/api/appConnections/types/app-options.ts index b1464cce5ec..f43106dbc0c 100644 --- a/frontend/src/hooks/api/appConnections/types/app-options.ts +++ b/frontend/src/hooks/api/appConnections/types/app-options.ts @@ -232,6 +232,10 @@ export type TExternalInfisicalConnectionOption = TAppConnectionOptionBase & { app: AppConnection.ExternalInfisical; }; +export type TDopplerConnectionOption = TAppConnectionOptionBase & { + app: AppConnection.Doppler; +}; + export type TAppConnectionOption = | TAwsConnectionOption | TGitHubConnectionOption @@ -286,7 +290,8 @@ export type TAppConnectionOption = | TSmbConnectionOption | TAzureEntraIdConnectionOption | TVenafiConnectionOption - | TExternalInfisicalConnectionOption; + | TExternalInfisicalConnectionOption + | TDopplerConnectionOption; export type TAppConnectionOptionMap = { [AppConnection.AWS]: TAwsConnectionOption; @@ -343,4 +348,5 @@ export type TAppConnectionOptionMap = { [AppConnection.AzureEntraId]: TAzureEntraIdConnectionOption; [AppConnection.Venafi]: TVenafiConnectionOption; [AppConnection.ExternalInfisical]: TExternalInfisicalConnectionOption; + [AppConnection.Doppler]: TDopplerConnectionOption; }; diff --git a/frontend/src/hooks/api/appConnections/types/doppler-connection.ts b/frontend/src/hooks/api/appConnections/types/doppler-connection.ts new file mode 100644 index 00000000000..539bfd731bf --- /dev/null +++ b/frontend/src/hooks/api/appConnections/types/doppler-connection.ts @@ -0,0 +1,11 @@ +import { AppConnection } from "@app/hooks/api/appConnections/enums"; +import { TRootAppConnection } from "@app/hooks/api/appConnections/types/root-connection"; + +export enum DopplerConnectionMethod { + ApiToken = "api-token" +} + +export type TDopplerConnection = TRootAppConnection & { app: AppConnection.Doppler } & { + method: DopplerConnectionMethod.ApiToken; + credentials: Record; // sanitized — no credentials returned +}; diff --git a/frontend/src/hooks/api/appConnections/types/index.ts b/frontend/src/hooks/api/appConnections/types/index.ts index 5883f8b9c01..132f151388e 100644 --- a/frontend/src/hooks/api/appConnections/types/index.ts +++ b/frontend/src/hooks/api/appConnections/types/index.ts @@ -19,6 +19,7 @@ import { TCloudflareConnection } from "./cloudflare-connection"; import { TDatabricksConnection } from "./databricks-connection"; import { TDbtConnection } from "./dbt-connection"; import { TDigitalOceanConnection } from "./digital-ocean"; +import { TDopplerConnection } from "./doppler-connection"; import { TDNSMadeEasyConnection } from "./dns-made-easy-connection"; import { TExternalInfisicalConnection } from "./external-infisical-connection"; import { TFlyioConnection } from "./flyio-connection"; @@ -74,6 +75,7 @@ export * from "./cloudflare-connection"; export * from "./databricks-connection"; export * from "./dbt-connection"; export * from "./dns-made-easy-connection"; +export * from "./doppler-connection"; export * from "./external-infisical-connection"; export * from "./flyio-connection"; export * from "./gcp-connection"; @@ -163,7 +165,8 @@ export type TAppConnection = | TCircleCIConnection | TAzureEntraIdConnection | TVenafiConnection - | TExternalInfisicalConnection; + | TExternalInfisicalConnection + | TDopplerConnection; export type TAvailableAppConnection = Pick; diff --git a/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AppConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AppConnectionForm.tsx index 2c4de454c07..76efcf3038a 100644 --- a/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AppConnectionForm.tsx +++ b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AppConnectionForm.tsx @@ -34,6 +34,7 @@ import { DatabricksConnectionForm } from "./DatabricksConnectionForm"; import { DbtConnectionForm } from "./DbtConnectionForm"; import { DigitalOceanConnectionForm } from "./DigitalOceanConnectionForm"; import { DNSMadeEasyConnectionForm } from "./DNSMadeEasyConnectionForm"; +import { DopplerConnectionForm } from "./DopplerConnectionForm"; import { ExternalInfisicalConnectionForm } from "./ExternalInfisicalConnectionForm"; import { FlyioConnectionForm } from "./FlyioConnectionForm"; import { GcpConnectionForm } from "./GcpConnectionForm"; @@ -270,6 +271,8 @@ const CreateForm = ({ app, onComplete, projectId }: CreateFormProps) => { return ; case AppConnection.ExternalInfisical: return ; + case AppConnection.Doppler: + return ; default: throw new Error(`Unhandled App ${app}`); } @@ -477,6 +480,8 @@ const UpdateForm = ({ appConnection, onComplete }: UpdateFormProps) => { return ( ); + case AppConnection.Doppler: + return ; default: throw new Error(`Unhandled App ${(appConnection as TAppConnection).app}`); } diff --git a/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/DopplerConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/DopplerConnectionForm.tsx new file mode 100644 index 00000000000..d2c729537f8 --- /dev/null +++ b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/DopplerConnectionForm.tsx @@ -0,0 +1,134 @@ +import { Controller, FormProvider, useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { z } from "zod"; + +import { + Button, + FormControl, + ModalClose, + SecretInput, + Select, + SelectItem +} from "@app/components/v2"; +import { APP_CONNECTION_MAP, getAppConnectionMethodDetails } from "@app/helpers/appConnections"; +import { AppConnection } from "@app/hooks/api/appConnections/enums"; +import { + DopplerConnectionMethod, + TDopplerConnection +} from "@app/hooks/api/appConnections/types/doppler-connection"; + +import { + genericAppConnectionFieldsSchema, + GenericAppConnectionsFields +} from "./GenericAppConnectionFields"; + +type Props = { + appConnection?: TDopplerConnection; + onSubmit: (formData: FormData) => void; +}; + +const rootSchema = genericAppConnectionFieldsSchema.extend({ + app: z.literal(AppConnection.Doppler) +}); + +const formSchema = z.discriminatedUnion("method", [ + rootSchema.extend({ + method: z.literal(DopplerConnectionMethod.ApiToken), + credentials: z.object({ + apiToken: z.string().trim().min(1, "API token required") + }) + }) +]); + +type FormData = z.infer; + +export const DopplerConnectionForm = ({ appConnection, onSubmit }: Props) => { + const isUpdate = Boolean(appConnection); + + const form = useForm({ + resolver: zodResolver(formSchema), + defaultValues: appConnection ?? { + app: AppConnection.Doppler, + method: DopplerConnectionMethod.ApiToken + } + }); + + const { + handleSubmit, + control, + formState: { isSubmitting, isDirty } + } = form; + + return ( + +
+ {!isUpdate && } + ( + + + + )} + /> + ( + + onChange(e.target.value)} + /> + + )} + /> + +
+ + + + +
+ +
+ ); +}; From 483bbf005b54efcf912c9ccd5f129bfcfaa2e3b2 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:12:55 -0300 Subject: [PATCH 007/562] feat(frontend): migration API hooks for Doppler external migration Add query keys, Doppler config mutations, import mutation, and Doppler project/environment fetchers. Made-with: Cursor --- .../src/hooks/api/migration/mutations.tsx | 88 ++++++++++++++++++- frontend/src/hooks/api/migration/queries.tsx | 54 ++++++++++++ frontend/src/hooks/api/migration/types.ts | 35 +++++++- 3 files changed, 175 insertions(+), 2 deletions(-) diff --git a/frontend/src/hooks/api/migration/mutations.tsx b/frontend/src/hooks/api/migration/mutations.tsx index 00d3148efe9..0bdba3471b0 100644 --- a/frontend/src/hooks/api/migration/mutations.tsx +++ b/frontend/src/hooks/api/migration/mutations.tsx @@ -6,7 +6,13 @@ import { secretKeys } from "@app/hooks/api/secrets/queries"; import { projectKeys } from "../projects"; import { externalMigrationQueryKeys } from "./queries"; -import { TImportVaultSecretsDTO, TVaultExternalMigrationConfig, VaultImportStatus } from "./types"; +import { + TDopplerExternalMigrationConfig, + TImportDopplerSecretsDTO, + TImportVaultSecretsDTO, + TVaultExternalMigrationConfig, + VaultImportStatus +} from "./types"; export const useImportEnvKey = () => { const queryClient = useQueryClient(); @@ -163,3 +169,83 @@ export const useDeleteVaultExternalMigrationConfig = () => { } }); }; + +export const useCreateDopplerExternalMigrationConfig = () => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async ({ connectionId }) => { + const { data } = await apiRequest.post<{ config: TDopplerExternalMigrationConfig }>( + "/api/v3/external-migration/doppler/configs", + { connectionId } + ); + return data.config; + }, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: externalMigrationQueryKeys.dopplerConfigs() + }); + } + }); +}; + +export const useUpdateDopplerExternalMigrationConfig = () => { + const queryClient = useQueryClient(); + + return useMutation< + TDopplerExternalMigrationConfig, + Error, + { id: string; connectionId: string } + >({ + mutationFn: async ({ id, connectionId }) => { + const { data } = await apiRequest.put<{ config: TDopplerExternalMigrationConfig }>( + `/api/v3/external-migration/doppler/configs/${id}`, + { connectionId } + ); + return data.config; + }, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: externalMigrationQueryKeys.dopplerConfigs() + }); + } + }); +}; + +export const useDeleteDopplerExternalMigrationConfig = () => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async ({ id }) => { + const { data } = await apiRequest.delete<{ config: TDopplerExternalMigrationConfig }>( + `/api/v3/external-migration/doppler/configs/${id}` + ); + return data.config; + }, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: externalMigrationQueryKeys.dopplerConfigs() + }); + } + }); +}; + +export const useImportDopplerSecrets = () => { + const queryClient = useQueryClient(); + + return useMutation({ + mutationFn: async (dto) => { + await apiRequest.post("/api/v3/external-migration/doppler/import-secrets", dto); + }, + onSuccess: (_, { targetProjectId, targetEnvironment, targetSecretPath }) => { + queryClient.invalidateQueries({ queryKey: dashboardKeys.all() }); + queryClient.invalidateQueries({ + queryKey: secretKeys.getProjectSecret({ + projectId: targetProjectId, + environment: targetEnvironment, + secretPath: targetSecretPath + }) + }); + } + }); +}; diff --git a/frontend/src/hooks/api/migration/queries.tsx b/frontend/src/hooks/api/migration/queries.tsx index 77ee0e36203..a4c5041c01b 100644 --- a/frontend/src/hooks/api/migration/queries.tsx +++ b/frontend/src/hooks/api/migration/queries.tsx @@ -4,6 +4,9 @@ import { apiRequest } from "@app/config/request"; import { ExternalMigrationProviders, + TDopplerEnvironment, + TDopplerExternalMigrationConfig, + TDopplerProject, TVaultExternalMigrationConfig, VaultDatabaseRole, VaultKubernetesAuthRole, @@ -49,6 +52,13 @@ export const externalMigrationQueryKeys = { "vault-ldap-roles", namespace, mountPath + ], + dopplerConfigs: () => ["doppler-external-migration-configs"], + dopplerProjects: (configId?: string) => ["doppler-projects", configId], + dopplerEnvironments: (configId?: string, projectSlug?: string) => [ + "doppler-environments", + configId, + projectSlug ] }; @@ -267,3 +277,47 @@ export const useGetVaultLdapRoles = (enabled = true, namespace?: string, mountPa enabled: enabled && !!namespace && !!mountPath }); }; + +export const useGetDopplerExternalMigrationConfigs = () => { + return useQuery({ + queryKey: externalMigrationQueryKeys.dopplerConfigs(), + queryFn: async () => { + const { data } = await apiRequest.get<{ configs: TDopplerExternalMigrationConfig[] }>( + "/api/v3/external-migration/doppler/configs" + ); + return data.configs; + } + }); +}; + +export const useGetDopplerProjects = (configId?: string) => { + return useQuery({ + queryKey: externalMigrationQueryKeys.dopplerProjects(configId), + queryFn: async () => { + const { data } = await apiRequest.get<{ projects: TDopplerProject[] }>( + "/api/v3/external-migration/doppler/projects", + { + params: { configId } + } + ); + return data.projects; + }, + enabled: !!configId + }); +}; + +export const useGetDopplerEnvironments = (configId?: string, projectSlug?: string) => { + return useQuery({ + queryKey: externalMigrationQueryKeys.dopplerEnvironments(configId, projectSlug), + queryFn: async () => { + const { data } = await apiRequest.get<{ environments: TDopplerEnvironment[] }>( + "/api/v3/external-migration/doppler/environments", + { + params: { configId, projectSlug } + } + ); + return data.environments; + }, + enabled: !!configId && !!projectSlug + }); +}; diff --git a/frontend/src/hooks/api/migration/types.ts b/frontend/src/hooks/api/migration/types.ts index f9f4336ba2f..31dd81fa4b1 100644 --- a/frontend/src/hooks/api/migration/types.ts +++ b/frontend/src/hooks/api/migration/types.ts @@ -1,8 +1,41 @@ export enum ExternalMigrationProviders { Vault = "vault", - EnvKey = "env-key" + EnvKey = "env-key", + Doppler = "doppler" } +export type TDopplerExternalMigrationConfig = { + id: string; + orgId: string; + connectionId: string | null; + provider: string; + createdAt: string; + updatedAt: string; +}; + +export type TDopplerProject = { + id: string; + slug: string; + name: string; + description: string; +}; + +export type TDopplerEnvironment = { + id: string; + slug: string; + name: string; + project: string; +}; + +export type TImportDopplerSecretsDTO = { + configId: string; + dopplerProject: string; + dopplerEnvironment: string; + targetProjectId: string; + targetEnvironment: string; + targetSecretPath: string; +}; + export enum VaultImportStatus { Imported = "imported", ApprovalRequired = "approval-required" From 206d1a91d0f24f652c1af8c0212c0be5fe46eff3 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:13:00 -0300 Subject: [PATCH 008/562] feat(frontend): unified external migrations settings UI Replace per-provider sections with provider picker, merged v3 table and row actions menu, Doppler config/import modals, Vault/Doppler docs link in header, and remove legacy Vault-only section component. Made-with: Cursor --- .../helpers/externalMigrationInPlatform.ts | 33 ++ .../ExternalMigrationsTab.tsx | 28 +- .../components/DopplerConfigModal.tsx | 140 +++++++ .../components/DopplerImportModal.tsx | 282 ++++++++++++++ .../components/InPlatformMigrationSection.tsx | 368 ++++++++++++++++++ ...SelectInPlatformMigrationProviderModal.tsx | 74 ++++ .../components/VaultConnectionSection.tsx | 193 --------- 7 files changed, 920 insertions(+), 198 deletions(-) create mode 100644 frontend/src/helpers/externalMigrationInPlatform.ts create mode 100644 frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx create mode 100644 frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx create mode 100644 frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx create mode 100644 frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx delete mode 100644 frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx diff --git a/frontend/src/helpers/externalMigrationInPlatform.ts b/frontend/src/helpers/externalMigrationInPlatform.ts new file mode 100644 index 00000000000..d6e1290b40b --- /dev/null +++ b/frontend/src/helpers/externalMigrationInPlatform.ts @@ -0,0 +1,33 @@ +import { AppConnection } from "@app/hooks/api/appConnections/enums"; + +import { APP_CONNECTION_MAP } from "./appConnections"; + +/** App connection types that support org-level in-platform migration configuration. */ +export const IN_PLATFORM_MIGRATION_APP_CONNECTIONS = [ + AppConnection.HCVault, + AppConnection.Doppler +] as const; + +export type TInPlatformMigrationApp = (typeof IN_PLATFORM_MIGRATION_APP_CONNECTIONS)[number]; + +export const IN_PLATFORM_MIGRATION_PROVIDER_DETAILS: Record< + TInPlatformMigrationApp, + { description: string } +> = { + [AppConnection.HCVault]: { + description: + "Policy imports, auth methods, secret engine migrations, and importing secrets from Vault in the UI." + }, + [AppConnection.Doppler]: { + description: "Import secrets from Doppler into Infisical projects from the UI." + } +}; + +export function getInPlatformMigrationProviderMeta(app: TInPlatformMigrationApp) { + const meta = APP_CONNECTION_MAP[app]; + return { + name: meta.name, + imageFileName: meta.image, + size: meta.size ?? 50 + }; +} diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx index 8a793536cf8..781475d9192 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx @@ -6,8 +6,8 @@ import { useOrgPermission } from "@app/context"; import { OrgMembershipRole } from "@app/helpers/roles"; import { usePopUp } from "@app/hooks"; +import { InPlatformMigrationSection } from "./components/InPlatformMigrationSection"; import { SelectImportFromPlatformModal } from "./components/SelectImportFromPlatformModal"; -import { VaultConnectionSection } from "./components/VaultConnectionSection"; export const ExternalMigrationsTab = () => { const { hasOrgRole } = useOrgPermission(); @@ -19,13 +19,31 @@ export const ExternalMigrationsTab = () => { {/* In-Platform Migration Tooling Section */}
-

In-Platform Migration Tooling

+
+

In-Platform Migration Tooling

+ +
+ + Docs + +
+
+

- Configure platform connections to enable migration features throughout Infisical, such - as importing policies and resources directly within the UI. + Connect HashiCorp Vault or{" "} + Doppler to enable migration features across + Infisical: import KV secrets (and from Vault, policies, Kubernetes-related resources, + and more) directly from the UI.

- +
{/* Bulk Data Import Section */} diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx new file mode 100644 index 00000000000..923f224671e --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx @@ -0,0 +1,140 @@ +import { useEffect, useMemo } from "react"; +import { Controller, useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { z } from "zod"; + +import { createNotification } from "@app/components/notifications"; +import { Button, FilterableSelect, FormControl, Modal, ModalContent } from "@app/components/v2"; +import { AppConnection } from "@app/hooks/api/appConnections/enums"; +import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; +import { + useCreateDopplerExternalMigrationConfig, + useUpdateDopplerExternalMigrationConfig +} from "@app/hooks/api/migration"; +import { TDopplerExternalMigrationConfig } from "@app/hooks/api/migration/types"; + +const schema = z.object({ + connectionId: z.string().min(1, "Connection is required") +}); + +type FormData = z.infer; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + editConfig?: TDopplerExternalMigrationConfig; +}; + +export const DopplerConfigModal = ({ isOpen, onOpenChange, editConfig }: Props) => { + const isEdit = Boolean(editConfig); + + const { data: appConnections = [], isPending: isLoadingConnections } = useListAppConnections(); + + const dopplerConnections = useMemo( + () => appConnections.filter((conn) => conn.app === AppConnection.Doppler), + [appConnections] + ); + + const { mutateAsync: createConfig, isPending: isCreating } = + useCreateDopplerExternalMigrationConfig(); + const { mutateAsync: updateConfig, isPending: isUpdating } = + useUpdateDopplerExternalMigrationConfig(); + + const { + control, + handleSubmit, + reset, + formState: { errors, isSubmitting } + } = useForm({ + resolver: zodResolver(schema), + defaultValues: { + connectionId: "" + } + }); + + useEffect(() => { + if (isOpen) { + reset({ + connectionId: editConfig?.connectionId || "" + }); + } + }, [isOpen, editConfig, reset]); + + const onFormSubmit = async (data: FormData) => { + if (isEdit && editConfig) { + await updateConfig({ id: editConfig.id, connectionId: data.connectionId }); + createNotification({ type: "success", text: "Doppler configuration updated successfully" }); + } else { + await createConfig({ connectionId: data.connectionId }); + createNotification({ type: "success", text: "Doppler configuration created successfully" }); + } + reset(); + onOpenChange(false); + }; + + const handleClose = () => { + reset(); + onOpenChange(false); + }; + + return ( + + +
+ { + const selectedConnection = dopplerConnections.find((conn) => conn.id === field.value); + + return ( + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "id" in singleValue) { + field.onChange(singleValue.id); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingConnections} + options={dopplerConnections} + placeholder="Select connection..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.id} + /> + + ); + }} + /> + +
+ + +
+ +
+
+ ); +}; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx new file mode 100644 index 00000000000..4cbd88e458f --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx @@ -0,0 +1,282 @@ +import { useMemo } from "react"; +import { Controller, useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { z } from "zod"; + +import { createNotification } from "@app/components/notifications"; +import { + Button, + FilterableSelect, + FormControl, + Input, + Modal, + ModalContent +} from "@app/components/v2"; +import { useGetUserProjects } from "@app/hooks/api"; +import { + useGetDopplerEnvironments, + useGetDopplerProjects, + useImportDopplerSecrets +} from "@app/hooks/api/migration"; +import { TDopplerExternalMigrationConfig } from "@app/hooks/api/migration/types"; +import { ProjectType } from "@app/hooks/api/projects/types"; + +const schema = z.object({ + dopplerProject: z.string().min(1, "Doppler project is required"), + dopplerEnvironment: z.string().min(1, "Doppler environment is required"), + targetProjectId: z.string().min(1, "Target project is required"), + targetEnvironment: z.string().min(1, "Target environment is required"), + targetSecretPath: z.string().min(1, "Secret path is required") +}); + +type FormData = z.infer; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + config: TDopplerExternalMigrationConfig; +}; + +export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { + const { + control, + handleSubmit, + watch, + reset, + formState: { errors, isSubmitting } + } = useForm({ + resolver: zodResolver(schema), + defaultValues: { + dopplerProject: "", + dopplerEnvironment: "", + targetProjectId: "", + targetEnvironment: "", + targetSecretPath: "/" + } + }); + + const selectedDopplerProject = watch("dopplerProject"); + const selectedTargetProjectId = watch("targetProjectId"); + + const { data: dopplerProjects = [], isPending: isLoadingProjects } = useGetDopplerProjects( + config.id + ); + const { data: dopplerEnvironments = [], isPending: isLoadingEnvironments } = + useGetDopplerEnvironments(config.id, selectedDopplerProject || undefined); + + const { data: userProjects = [], isPending: isLoadingUserProjects } = useGetUserProjects(); + + const secretManagerProjects = useMemo( + () => userProjects.filter((p) => p.type === ProjectType.SecretManager), + [userProjects] + ); + + const selectedProject = useMemo( + () => secretManagerProjects.find((p) => p.id === selectedTargetProjectId), + [secretManagerProjects, selectedTargetProjectId] + ); + + const { mutateAsync: importSecrets } = useImportDopplerSecrets(); + + const onFormSubmit = async (data: FormData) => { + await importSecrets({ + configId: config.id, + dopplerProject: data.dopplerProject, + dopplerEnvironment: data.dopplerEnvironment, + targetProjectId: data.targetProjectId, + targetEnvironment: data.targetEnvironment, + targetSecretPath: data.targetSecretPath + }); + createNotification({ + type: "success", + text: "Secrets imported successfully from Doppler" + }); + reset(); + onOpenChange(false); + }; + + const handleClose = () => { + reset(); + onOpenChange(false); + }; + + return ( + + +
+

Doppler Source

+ + { + const selectedItem = dopplerProjects.find((p) => p.slug === field.value); + + return ( + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingProjects} + options={dopplerProjects} + placeholder="Select Doppler project..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + ); + }} + /> + + { + const selectedItem = dopplerEnvironments.find((e) => e.slug === field.value); + + return ( + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingEnvironments} + isDisabled={!selectedDopplerProject} + options={dopplerEnvironments} + placeholder="Select Doppler environment..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + ); + }} + /> + +

Infisical Destination

+ + { + const selectedItem = secretManagerProjects.find((p) => p.id === field.value); + + return ( + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "id" in singleValue) { + field.onChange(singleValue.id); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingUserProjects} + options={secretManagerProjects} + placeholder="Select Infisical project..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.id} + /> + + ); + }} + /> + + { + const environments = selectedProject?.environments ?? []; + const selectedItem = environments.find((e) => e.slug === field.value); + + return ( + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isDisabled={!selectedTargetProjectId} + options={environments} + placeholder="Select environment..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + ); + }} + /> + + ( + + + + )} + /> + +
+ + +
+ +
+
+ ); +}; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx new file mode 100644 index 00000000000..51820db1164 --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx @@ -0,0 +1,368 @@ +import { useMemo, useState } from "react"; +import { Download, Edit, MoreVertical, Plus, Trash2 } from "lucide-react"; +import { Link } from "@tanstack/react-router"; + +import { createNotification } from "@app/components/notifications"; +import { DeleteActionModal } from "@app/components/v2"; +import { + Button, + EmptyMedia, + Skeleton, + UnstableDropdownMenu, + UnstableDropdownMenuContent, + UnstableDropdownMenuItem, + UnstableDropdownMenuTrigger, + UnstableEmpty, + UnstableEmptyDescription, + UnstableEmptyHeader, + UnstableEmptyTitle, + UnstableIconButton, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow +} from "@app/components/v3"; +import { useOrganization } from "@app/context"; +import { APP_CONNECTION_MAP } from "@app/helpers/appConnections"; +import { + getInPlatformMigrationProviderMeta, + TInPlatformMigrationApp +} from "@app/helpers/externalMigrationInPlatform"; +import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; +import { AppConnection } from "@app/hooks/api/appConnections/enums"; +import { + useDeleteDopplerExternalMigrationConfig, + useDeleteVaultExternalMigrationConfig, + useGetDopplerExternalMigrationConfigs, + useGetVaultExternalMigrationConfigs +} from "@app/hooks/api/migration"; +import { + TDopplerExternalMigrationConfig, + TVaultExternalMigrationConfig +} from "@app/hooks/api/migration/types"; + +import { DopplerConfigModal } from "./DopplerConfigModal"; +import { DopplerImportModal } from "./DopplerImportModal"; +import { SelectInPlatformMigrationProviderModal } from "./SelectInPlatformMigrationProviderModal"; +import { VaultNamespaceConfigModal } from "./VaultNamespaceConfigModal"; + +type TMergedRow = + | { kind: "vault"; config: TVaultExternalMigrationConfig } + | { kind: "doppler"; config: TDopplerExternalMigrationConfig }; + +const SKELETON_ROW_KEYS = ["sk-1", "sk-2", "sk-3"] as const; + +export const InPlatformMigrationSection = () => { + const [isProviderPickerOpen, setIsProviderPickerOpen] = useState(false); + + const [vaultModalOpen, setVaultModalOpen] = useState(false); + const [vaultEditConfig, setVaultEditConfig] = useState(); + + const [dopplerConfigModalOpen, setDopplerConfigModalOpen] = useState(false); + const [dopplerEditConfig, setDopplerEditConfig] = useState< + TDopplerExternalMigrationConfig | undefined + >(); + + const [dopplerImportModalOpen, setDopplerImportModalOpen] = useState(false); + const [dopplerImportConfig, setDopplerImportConfig] = useState( + null + ); + + const [vaultDeleteOpen, setVaultDeleteOpen] = useState(false); + const [vaultToDelete, setVaultToDelete] = useState(null); + + const [dopplerDeleteOpen, setDopplerDeleteOpen] = useState(false); + const [dopplerToDelete, setDopplerToDelete] = useState(null); + + const { data: vaultConfigs = [], isPending: isVaultLoading } = useGetVaultExternalMigrationConfigs(); + const { data: dopplerConfigs = [], isPending: isDopplerLoading } = + useGetDopplerExternalMigrationConfigs(); + + const { currentOrg } = useOrganization(); + const { data: appConnections = [] } = useListAppConnections(); + + const { mutateAsync: deleteVaultConfig } = useDeleteVaultExternalMigrationConfig(); + const { mutateAsync: deleteDopplerConfig } = useDeleteDopplerExternalMigrationConfig(); + + const mergedRows = useMemo(() => { + const rows: TMergedRow[] = [ + ...vaultConfigs.map((config) => ({ kind: "vault" as const, config })), + ...dopplerConfigs.map((config) => ({ kind: "doppler" as const, config })) + ]; + rows.sort((a, b) => b.config.createdAt.localeCompare(a.config.createdAt)); + return rows; + }, [vaultConfigs, dopplerConfigs]); + + const isLoading = isVaultLoading || isDopplerLoading; + + const getConnectionName = (connectionId: string | null) => { + if (!connectionId) return "None"; + const connection = appConnections.find((conn) => conn.id === connectionId); + return connection?.name || "Unknown"; + }; + + const providerApp = (row: TMergedRow): TInPlatformMigrationApp => + row.kind === "vault" ? AppConnection.HCVault : AppConnection.Doppler; + + const openAddForProvider = (app: TInPlatformMigrationApp) => { + if (app === AppConnection.HCVault) { + setVaultEditConfig(undefined); + setVaultModalOpen(true); + } else { + setDopplerEditConfig(undefined); + setDopplerConfigModalOpen(true); + } + }; + + const handleVaultDeleteConfirm = async () => { + if (!vaultToDelete) return; + await deleteVaultConfig({ id: vaultToDelete.id }); + createNotification({ + type: "success", + text: "Namespace configuration deleted successfully" + }); + setVaultDeleteOpen(false); + setVaultToDelete(null); + }; + + const handleDopplerDeleteConfirm = async () => { + if (!dopplerToDelete) return; + await deleteDopplerConfig({ id: dopplerToDelete.id }); + createNotification({ + type: "success", + text: "Doppler configuration deleted successfully" + }); + setDopplerDeleteOpen(false); + setDopplerToDelete(null); + }; + + return ( +
+
+
+

Configured platforms

+

+ Link HashiCorp Vault namespaces or Doppler to enable migration actions across Infisical. +

+
+ +
+ + {isLoading ? ( + + + + Platform + Namespace + Connection + + + + + {SKELETON_ROW_KEYS.map((key) => ( + + + + + + + + + + + + + + + ))} + + + ) : mergedRows.length === 0 ? ( + + + + + + No migration configurations + + Add a platform configuration to enable in-platform migration features. + + + + ) : ( + + + + Platform + Namespace + Connection + + + + + {mergedRows.map((row) => { + const app = providerApp(row); + const { name, imageFileName } = getInPlatformMigrationProviderMeta(app); + + return ( + + +
+ + {name} +
+
+ + {row.kind === "vault" ? row.config.namespace : "—"} + + {getConnectionName(row.config.connectionId)} + + + + + + + + + {row.kind === "doppler" && ( + { + setDopplerImportConfig(row.config); + setDopplerImportModalOpen(true); + }} + > + + Import secrets + + )} + { + if (row.kind === "vault") { + setVaultEditConfig(row.config); + setVaultModalOpen(true); + } else { + setDopplerEditConfig(row.config); + setDopplerConfigModalOpen(true); + } + }} + > + + Edit + + { + if (row.kind === "vault") { + setVaultToDelete(row.config); + setVaultDeleteOpen(true); + } else { + setDopplerToDelete(row.config); + setDopplerDeleteOpen(true); + } + }} + > + + Delete + + + + +
+ ); + })} +
+
+ )} + +

+ Manage credentials in{" "} + + App Connections + + . Use {APP_CONNECTION_MAP[AppConnection.HCVault].name}{" "} + or {APP_CONNECTION_MAP[AppConnection.Doppler].name}{" "} + connection types as needed. +

+ + + + { + setVaultModalOpen(open); + if (!open) setVaultEditConfig(undefined); + }} + editConfig={vaultEditConfig} + /> + + { + setDopplerConfigModalOpen(open); + if (!open) setDopplerEditConfig(undefined); + }} + editConfig={dopplerEditConfig} + /> + + {dopplerImportConfig && ( + { + setDopplerImportModalOpen(open); + if (!open) setDopplerImportConfig(null); + }} + config={dopplerImportConfig} + /> + )} + + { + setVaultDeleteOpen(open); + if (!open) setVaultToDelete(null); + }} + deleteKey="confirm" + onDeleteApproved={handleVaultDeleteConfirm} + /> + + { + setDopplerDeleteOpen(open); + if (!open) setDopplerToDelete(null); + }} + deleteKey="confirm" + onDeleteApproved={handleDopplerDeleteConfirm} + /> +
+ ); +}; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx new file mode 100644 index 00000000000..6fb4cf12f17 --- /dev/null +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx @@ -0,0 +1,74 @@ +import { Link } from "@tanstack/react-router"; + +import { Modal, ModalContent } from "@app/components/v2"; +import { useOrganization } from "@app/context"; +import { + getInPlatformMigrationProviderMeta, + IN_PLATFORM_MIGRATION_APP_CONNECTIONS, + IN_PLATFORM_MIGRATION_PROVIDER_DETAILS, + TInPlatformMigrationApp +} from "@app/helpers/externalMigrationInPlatform"; + +type Props = { + isOpen: boolean; + onOpenChange: (open: boolean) => void; + onSelect: (app: TInPlatformMigrationApp) => void; +}; + +export const SelectInPlatformMigrationProviderModal = ({ + isOpen, + onOpenChange, + onSelect +}: Props) => { + const { currentOrg } = useOrganization(); + + return ( + + +

+ Select a platform to link to in-platform migration. Credentials are managed in{" "} + onOpenChange(false)} + > + App Connections + + . +

+
+ {IN_PLATFORM_MIGRATION_APP_CONNECTIONS.map((app) => { + const { name, imageFileName, size } = getInPlatformMigrationProviderMeta(app); + const { description } = IN_PLATFORM_MIGRATION_PROVIDER_DETAILS[app]; + + return ( + + ); + })} +
+
+
+ ); +}; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx deleted file mode 100644 index 070d9929d13..00000000000 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultConnectionSection.tsx +++ /dev/null @@ -1,193 +0,0 @@ -import { useState } from "react"; -import { faEdit, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { Link } from "@tanstack/react-router"; - -import { createNotification } from "@app/components/notifications"; -import { - Button, - DeleteActionModal, - EmptyState, - Table, - TableContainer, - TableSkeleton, - TBody, - Td, - Th, - THead, - Tr -} from "@app/components/v2"; -import { useOrganization } from "@app/context"; -import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; -import { - useDeleteVaultExternalMigrationConfig, - useGetVaultExternalMigrationConfigs -} from "@app/hooks/api/migration"; -import { TVaultExternalMigrationConfig } from "@app/hooks/api/migration/types"; - -import { VaultNamespaceConfigModal } from "./VaultNamespaceConfigModal"; - -export const VaultConnectionSection = () => { - const [selectedConfig, setSelectedConfig] = useState(null); - const [isModalOpen, setIsModalOpen] = useState(false); - const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); - const [configToDelete, setConfigToDelete] = useState(null); - - const { data: configs = [], isPending: isLoadingConfigs } = useGetVaultExternalMigrationConfigs(); - - const { currentOrg } = useOrganization(); - const { data: appConnections = [] } = useListAppConnections(); - const { mutateAsync: deleteConfig } = useDeleteVaultExternalMigrationConfig(); - - const handleEdit = (config: TVaultExternalMigrationConfig) => { - setSelectedConfig(config); - setIsModalOpen(true); - }; - - const handleAdd = () => { - setSelectedConfig(null); - setIsModalOpen(true); - }; - - const handleDeleteClick = (config: TVaultExternalMigrationConfig) => { - setConfigToDelete(config); - setIsDeleteModalOpen(true); - }; - - const handleDeleteConfirm = async () => { - if (!configToDelete) return; - - await deleteConfig({ id: configToDelete.id }); - createNotification({ - type: "success", - text: "Namespace configuration deleted successfully" - }); - setIsDeleteModalOpen(false); - setConfigToDelete(null); - }; - - const getConnectionName = (connectionId: string | null) => { - if (!connectionId) return "None"; - const connection = appConnections.find((conn) => conn.id === connectionId); - return connection?.name || "Unknown"; - }; - - return ( -
-
-
- HashiCorp Vault logo -
-

HashiCorp Vault

-

- Enable in-platform migration tooling for policy imports, auth methods, and secret - engine migrations -

-
-
- -
- - - - - - - - - - - {isLoadingConfigs && ( - - )} - {!isLoadingConfigs && configs.length === 0 && ( - - - - )} - {!isLoadingConfigs && - configs.map((config) => ( - - - - - - ))} - -
NamespaceConnection -
- -

- Add a namespace configuration to enable in-platform migration features. -

-
-
{config.namespace}{getConnectionName(config.connectionId)} -
- - -
-
-
- -

- Configure namespace-specific connections to enable in-platform migration features. Manage - connections in the{" "} - - App Connections - {" "} - section. -

- - { - setIsModalOpen(open); - if (!open) setSelectedConfig(null); - }} - editConfig={selectedConfig || undefined} - /> - - { - setIsDeleteModalOpen(open); - if (!open) setConfigToDelete(null); - }} - deleteKey="confirm" - onDeleteApproved={handleDeleteConfirm} - /> -
- ); -}; From 0e7c716d30e8fdafa5439c0b7390f362f97334ef Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:13:05 -0300 Subject: [PATCH 009/562] feat(frontend): import Doppler secrets from secret overview Add Add from Doppler to the overview Add Secret menu when a Doppler migration config exists, with modal for project/environment selection and useImportDopplerSecrets targeting the current folder. Made-with: Cursor --- .../OverviewPage/OverviewPage.tsx | 41 ++++ .../AddResourceButtons/AddResourceButtons.tsx | 40 ++++ .../ActionBar/DopplerSecretImportModal.tsx | 192 ++++++++++++++++++ 3 files changed, 273 insertions(+) create mode 100644 frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index b968dd96324..6cbcd918a5f 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -137,7 +137,9 @@ import { TDynamicSecret } from "@app/hooks/api/dynamicSecret/types"; import { useGetFolderCommitsCount } from "@app/hooks/api/folderCommits"; import { OrderByDirection } from "@app/hooks/api/generic/types"; import { + useGetDopplerExternalMigrationConfigs, useGetVaultExternalMigrationConfigs, + useImportDopplerSecrets, useImportVaultSecrets } from "@app/hooks/api/migration"; import { VaultImportStatus } from "@app/hooks/api/migration/types"; @@ -175,6 +177,7 @@ import { CreateDynamicSecretForm } from "../SecretDashboardPage/components/Actio import { CreateSecretImportForm } from "../SecretDashboardPage/components/ActionBar/CreateSecretImportForm"; import { FolderForm } from "../SecretDashboardPage/components/ActionBar/FolderForm"; import { ReplicateFolderFromBoard } from "../SecretDashboardPage/components/ActionBar/ReplicateFolderFromBoard/ReplicateFolderFromBoard"; +import { DopplerSecretImportModal } from "../SecretDashboardPage/components/ActionBar/DopplerSecretImportModal"; import { VaultSecretImportModal } from "../SecretDashboardPage/components/ActionBar/VaultSecretImportModal"; import { CommitForm } from "../SecretDashboardPage/components/CommitForm"; import { CreateDynamicSecretLease } from "../SecretDashboardPage/components/DynamicSecretListView/CreateDynamicSecretLease"; @@ -283,7 +286,14 @@ const OverviewPageContent = () => { const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); + const { data: dopplerConfigs = [] } = useGetDopplerExternalMigrationConfigs(); + const dopplerImportConfigId = useMemo( + () => dopplerConfigs.find((c) => c.connectionId)?.id, + [dopplerConfigs] + ); + const hasDopplerConnection = Boolean(dopplerImportConfigId); const { mutateAsync: importVaultSecrets } = useImportVaultSecrets(); + const { mutateAsync: importDopplerSecrets } = useImportDopplerSecrets(); const prevPageSize = useRef(0); const canReadCommits = permission.can( @@ -730,6 +740,7 @@ const OverviewPageContent = () => { "deleteEnv", "requestAccess", "importFromVault", + "importFromDoppler", "confirmDisableBatchMode" ] as const); @@ -824,6 +835,24 @@ const OverviewPageContent = () => { } }; + const handleDopplerImport = async (dopplerProject: string, dopplerEnvironment: string) => { + if (!dopplerImportConfigId) return; + + await importDopplerSecrets({ + configId: dopplerImportConfigId, + dopplerProject, + dopplerEnvironment, + targetProjectId: projectId, + targetEnvironment: singleEnvSlug, + targetSecretPath: secretPath + }); + + createNotification({ + type: "success", + text: "Successfully imported secrets from Doppler" + }); + }; + const handleFolderCreate = async (folderName: string, description: string | null) => { if (isBatchModeActive && singleVisibleEnv) { if (isFolderPresentInEnv(folderName, singleVisibleEnv.slug)) { @@ -2378,8 +2407,10 @@ const OverviewPageContent = () => { isSecretImportAvailable={userAvailableSecretImportEnvs.length > 0} isSingleEnvSelected={isSingleEnvView} hasVaultConnection={hasVaultConnection} + hasDopplerConnection={hasDopplerConnection} isOrgAdmin={isOrgAdmin} onImportFromVault={() => handlePopUpOpen("importFromVault")} + onImportFromDoppler={() => handlePopUpOpen("importFromDoppler")} /> )} @@ -3322,6 +3353,16 @@ const OverviewPageContent = () => { secretPath={secretPath} onImport={handleVaultImport} /> + {dopplerImportConfigId && ( + handlePopUpToggle("importFromDoppler", isOpen)} + configId={dopplerImportConfigId} + environment={singleEnvSlug} + secretPath={secretPath} + onImport={handleDopplerImport} + /> + )} handlePopUpToggle("deleteFolder", isOpen)} diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/AddResourceButtons/AddResourceButtons.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/AddResourceButtons/AddResourceButtons.tsx index 26affc0ab52..a0f2e51ff34 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/components/AddResourceButtons/AddResourceButtons.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/components/AddResourceButtons/AddResourceButtons.tsx @@ -33,12 +33,14 @@ type Props = { onImportSecrets: () => void; onReplicateSecrets: () => void; onImportFromVault: () => void; + onImportFromDoppler: () => void; isDyanmicSecretAvailable: boolean; isSecretRotationAvailable: boolean; isReplicateSecretsAvailable: boolean; isSecretImportAvailable: boolean; isSingleEnvSelected: boolean; hasVaultConnection: boolean; + hasDopplerConnection: boolean; isOrgAdmin: boolean; }; @@ -51,12 +53,14 @@ export function AddResourceButtons({ onImportSecrets, onReplicateSecrets, onImportFromVault, + onImportFromDoppler, isDyanmicSecretAvailable, isSecretRotationAvailable, isReplicateSecretsAvailable, isSecretImportAvailable, isSingleEnvSelected, hasVaultConnection, + hasDopplerConnection, isOrgAdmin }: Props) { return ( @@ -217,6 +221,42 @@ export function AddResourceButtons({ )} )} + {hasDopplerConnection && ( + + {(isAllowed) => ( + + + +
+ Doppler +
+ Add from Doppler +
+
+ + {/* eslint-disable-next-line no-nested-ternary */} + {!isOrgAdmin + ? "Only organization admins can import secrets from Doppler" + : !isSingleEnvSelected + ? "Select a single environment to import from Doppler" + : "Access Restricted"} + +
+ )} +
+ )} diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx new file mode 100644 index 00000000000..d664fd756b9 --- /dev/null +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx @@ -0,0 +1,192 @@ +import { faInfoCircle } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Controller, useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { z } from "zod"; + +import { + Button, + FilterableSelect, + FormControl, + Modal, + ModalClose, + ModalContent +} from "@app/components/v2"; +import { + useGetDopplerEnvironments, + useGetDopplerProjects +} from "@app/hooks/api/migration/queries"; + +const schema = z.object({ + dopplerProject: z.string().min(1, "Doppler project is required"), + dopplerEnvironment: z.string().min(1, "Doppler environment is required") +}); + +type FormData = z.infer; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + configId: string; + environment: string; + secretPath: string; + onImport: (dopplerProject: string, dopplerEnvironment: string) => void; +}; + +export const DopplerSecretImportModal = ({ + isOpen, + onOpenChange, + configId, + environment, + secretPath, + onImport +}: Props) => { + const { + control, + handleSubmit, + watch, + reset, + formState: { errors, isSubmitting } + } = useForm({ + resolver: zodResolver(schema), + defaultValues: { + dopplerProject: "", + dopplerEnvironment: "" + } + }); + + const selectedDopplerProject = watch("dopplerProject"); + + const { data: dopplerProjects = [], isPending: isLoadingProjects } = useGetDopplerProjects( + configId + ); + const { data: dopplerEnvironments = [], isPending: isLoadingEnvironments } = + useGetDopplerEnvironments(configId, selectedDopplerProject || undefined); + + const handleClose = () => { + reset(); + onOpenChange(false); + }; + + const onFormSubmit = (data: FormData) => { + onImport(data.dopplerProject, data.dopplerEnvironment); + handleClose(); + }; + + return ( + { + if (!open) reset(); + onOpenChange(open); + }} + > + +
+
+ +
+
+ Import secrets from Doppler +
+
+

+ Secrets will be imported into environment{" "} + {environment} at path{" "} + {secretPath}. +

+
+
+
+
+ +
+ { + const selectedItem = dopplerProjects.find((p) => p.slug === field.value); + + return ( + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingProjects} + options={dopplerProjects} + placeholder="Select Doppler project..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + ); + }} + /> + + { + const selectedItem = dopplerEnvironments.find((e) => e.slug === field.value); + + return ( + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingEnvironments} + isDisabled={!selectedDopplerProject} + options={dopplerEnvironments} + placeholder="Select Doppler environment..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + ); + }} + /> + +
+ + + + +
+ +
+
+ ); +}; From 237023bc756ad14539e3e162eae9fb0a0296fe6c Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 21:13:11 -0300 Subject: [PATCH 010/562] docs: external migrations overview, Vault flow, and Doppler guide Document unified in-platform tooling, update Vault namespace setup for Add configuration flow, add Doppler migration page and nav entry. Made-with: Cursor --- docs/docs.json | 3 +- .../platform/external-migrations/doppler.mdx | 115 ++++++++++++++++++ .../platform/external-migrations/overview.mdx | 10 +- .../platform/external-migrations/vault.mdx | 12 +- 4 files changed, 131 insertions(+), 9 deletions(-) create mode 100644 docs/documentation/platform/external-migrations/doppler.mdx diff --git a/docs/docs.json b/docs/docs.json index cf77aff2f71..3b4cb09f1e5 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -177,7 +177,8 @@ "pages": [ "documentation/platform/external-migrations/overview", "documentation/platform/external-migrations/envkey", - "documentation/platform/external-migrations/vault" + "documentation/platform/external-migrations/vault", + "documentation/platform/external-migrations/doppler" ] }, "documentation/platform/admin-panel/server-admin", diff --git a/docs/documentation/platform/external-migrations/doppler.mdx b/docs/documentation/platform/external-migrations/doppler.mdx new file mode 100644 index 00000000000..51fec243857 --- /dev/null +++ b/docs/documentation/platform/external-migrations/doppler.mdx @@ -0,0 +1,115 @@ +--- +title: "Migrating from Doppler to Infisical" +sidebarTitle: "Doppler" +description: "Learn how to migrate secrets from Doppler to Infisical using in-platform migration." +--- + +This guide helps you bring secrets from **Doppler** into Infisical. In-platform migration lets you register a Doppler **App Connection** once, link it under **External Migrations**, then import secrets on demand from the organization settings or directly from a project’s secret overview—similar to how [Vault in-platform migration](./vault) works, but scoped to Doppler’s project and environment model. + +**What you can migrate:** + +- **Secrets** — Key/value pairs from a Doppler **project** and **environment** are imported into a chosen Infisical **project**, **environment**, and **secret path** (folder). + + + **Organization Admin Access Required:** Creating and managing Doppler migration + configurations, listing Doppler projects and environments, and running + in-platform imports are limited to **organization administrators**, matching + the Vault in-platform migration model. + + +## Set Up Your Doppler Connection + + + + In **Doppler**, create an API token that can read the projects and configs you plan to import (for example a **Personal** or **Service** token with access to the right projects). + + Store the token securely; you will paste it into Infisical in the next step. + + + + + In Infisical, open **Organization Settings > App Connections** and add a new connection with the **Doppler** type. + + Provide the token and complete the connection flow. The connection is reused anywhere Infisical needs to talk to Doppler for migration. + + + + + Go to **Organization Settings > External Migrations**. + + Under **In-Platform Migration Tooling**, click **Add configuration**. In the provider chooser, select **Doppler**. + + ![Choose Doppler in the in-platform migration provider modal](/images/platform/external-migrations/doppler-in-platform/select-doppler-provider.png) + + Pick the **App Connection** you created (each row in the table is one linked connection). + + ![Doppler migration configuration modal](/images/platform/external-migrations/doppler-in-platform/doppler-connection-modal.png) + + + If you need several Doppler sources (for example different credentials), add multiple **Doppler** rows from **Add configuration**; each row can use a different App Connection. + + + The **In-Platform Migration Tooling** table lists all configured platforms (Vault and Doppler) together: **Platform**, **Namespace** (Vault shows the namespace path; Doppler shows **—**), and **Connection**. + + + + +## Import Secrets + +You can import in two places: **External Migrations** (pick any Infisical project and path) or the **Secret overview** for a single environment (current project, path, and environment). + + + **Migration strategy:** Same as Vault—start with a non-production Infisical environment, verify key names and values, then expand to other environments. + + +### Import from Organization Settings + +1. Open **Organization Settings > External Migrations** and find your Doppler row. +2. Click **Import**. +3. Choose the **Doppler project** and **Doppler environment** to read from. +4. Choose the **Infisical project**, **environment**, and **secret path** where secrets should be created or updated. +5. Confirm the import. + +![Import secrets from Doppler (organization settings)](/images/platform/external-migrations/doppler-in-platform/doppler-import-modal-org-settings.png) + +Secrets are written as normal Infisical secret keys at the target path; existing keys with the same name are updated when the import runs. + +### Import from the Secret Overview + +When you are already in a **Secret Manager** project and have **one** environment selected (not “all environments”): + +1. Open the **Secret overview** for the folder path where you want the secrets. +2. Open the **Add Secret** split button (caret next to **Add Secret**). +3. Choose **Add from Doppler**. + +![Add from Doppler on the secret overview](/images/platform/external-migrations/doppler-in-platform/import-doppler-secret-overview-option.png) + +4. Select the **Doppler project** and **environment**; Infisical uses your linked migration configuration and imports into the **current** environment and path. + +![Import from Doppler modal on secret overview](/images/platform/external-migrations/doppler-in-platform/import-doppler-secret-overview-modal.png) + + + **First time in this project?** Create a [project](/documentation/platform/project) and environments if you have not already. The overview import always targets the project you are viewing. + + +## Comparison with Vault In-Platform Migration + +| Topic | Vault | Doppler | +|-------|--------|---------| +| **Org setup** | Vault policy + App Connection + namespace row | Doppler token + App Connection + Doppler row | +| **Table “Namespace” column** | Vault **namespace** | **—** (not applicable for Doppler) | +| **Secret import** | Namespace + secret path | Doppler **project** + **environment** | +| **Other imports** | Kubernetes auth, dynamic secrets, policies | Secrets only (this guide) | + +For Vault-specific steps (KV paths, policy translation, Kubernetes), use [Migrating from Vault to Infisical](./vault). + +## Next Steps + + + + Structure Infisical projects to mirror how you used Doppler projects and configs + + + Read imported secrets from applications using Infisical clients + + diff --git a/docs/documentation/platform/external-migrations/overview.mdx b/docs/documentation/platform/external-migrations/overview.mdx index d8e85fe9155..10b62c4147c 100644 --- a/docs/documentation/platform/external-migrations/overview.mdx +++ b/docs/documentation/platform/external-migrations/overview.mdx @@ -10,13 +10,19 @@ Infisical supports migrating resources from third-party secrets management platf Infisical offers two types of migration approaches: -- **In-Platform Migration Tooling**: Configure platform connections to enable granular, on-demand imports of secrets, policies, and configurations directly within the Infisical UI. This allows you to migrate resources incrementally as needed. +- **In-Platform Migration Tooling**: Connect supported platforms (for example HashiCorp Vault or Doppler) under **Organization Settings > External Migrations**, then run granular, on-demand imports of secrets—and Vault-only features like policies and Kubernetes-related configuration—directly in the Infisical UI. This allows you to migrate resources incrementally as needed. - **Bulk Data Import**: Perform one-time organization-level migrations to import all resources from external platforms at once. This is ideal for initial migrations when moving entirely to Infisical. ## Supported Platforms +**Bulk / one-shot organization import** + - [EnvKey](./envkey) -- [Vault](./vault) + +**In-platform migration (per-platform guides)** + +- [Vault](./vault) — KV secrets, Kubernetes auth and dynamic secret shapes, policy translation +- [Doppler](./doppler) — secrets from Doppler projects and environments We're always looking to add more migration paths for other providers. If we're missing a platform, please open an issue on our [GitHub repository](https://github.com/infisical/infisical/issues). diff --git a/docs/documentation/platform/external-migrations/vault.mdx b/docs/documentation/platform/external-migrations/vault.mdx index a67f2f30400..3d63a80e090 100644 --- a/docs/documentation/platform/external-migrations/vault.mdx +++ b/docs/documentation/platform/external-migrations/vault.mdx @@ -107,22 +107,22 @@ Before importing anything, you need to establish a secure connection between Inf - + Navigate to **Organization Settings > External Migrations** in Infisical. - Under the "In-Platform Migration Tooling" section for HashiCorp Vault, click **"+ Add Namespace"**. + Under **In-Platform Migration Tooling**, click **Add configuration**. In the provider chooser, select **HashiCorp Vault** (listed by the same name as in **App Connections**). - ![In-Platform Migration Tooling](/images/platform/external-migrations/vault-in-platform/external-migration-overview.png) + ![Choose provider for in-platform migration](/images/platform/external-migrations/in-platform-migration-select-provider.png) - Configure your namespace: + Configure the Vault namespace entry: - ![Namespace Configuration](/images/platform/external-migrations/vault-in-platform/namespace-configuration-modal.png) + ![Namespace configuration modal](/images/platform/external-migrations/vault-in-platform/namespace-configuration-modal.png) - **Namespace**: Enter your Vault namespace path (e.g., `admin/namespace1`). If you intend to use the root namespace, set the namespace value to "root". - **Connection**: Select the App Connection you created in the previous step. - You can add multiple namespaces with different connections if you have multiple Vault instances or namespaces to migrate from. + You can add multiple Vault rows (different namespaces and/or connections) in the same table if you have several Vault instances or namespaces to migrate from. From 1972e8eedd4ae52e686eb8566c138e21cb2bf69c Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:07:41 -0300 Subject: [PATCH 011/562] fix(backend): add Doppler provider validation to external migration operations Add explicit checks to ensure updateDopplerExternalMigration and deleteDopplerExternalMigration only operate on Doppler configs, not other provider types. This prevents accidental modification or deletion of wrong config types. --- .../external-migration/external-migration-service.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 956f77fe9b2..557ca033149 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -733,7 +733,7 @@ export const externalMigrationServiceFactory = ({ const config = await vaultExternalMigrationConfigDAL.findById(configId); - if (!config || config.orgId !== actor.orgId) { + if (!config || config.orgId !== actor.orgId || config.provider !== ExternalMigrationProviders.Doppler) { throw new NotFoundError({ message: "Doppler migration config not found" }); } @@ -824,10 +824,14 @@ export const externalMigrationServiceFactory = ({ const config = await vaultExternalMigrationConfigDAL.findById(id); - if (!config || config.orgId !== actor.orgId) { + if (!config || config.orgId !== actor.orgId || config.provider !== ExternalMigrationProviders.Doppler) { throw new NotFoundError({ message: "Doppler migration config not found" }); } + if (connectionId) { + await appConnectionService.connectAppConnectionById(AppConnection.Doppler, connectionId, actor); + } + return vaultExternalMigrationConfigDAL.updateById(id, { connectionId }); }; @@ -847,7 +851,7 @@ export const externalMigrationServiceFactory = ({ const config = await vaultExternalMigrationConfigDAL.findById(id); - if (!config || config.orgId !== actor.orgId) { + if (!config || config.orgId !== actor.orgId || config.provider !== ExternalMigrationProviders.Doppler) { throw new NotFoundError({ message: "Doppler migration config not found" }); } From d1aa42b9ff06a176400ed3125b4573708d7aa3a9 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:02 -0300 Subject: [PATCH 012/562] feat(backend): add connection validation and approval-required status for Doppler imports Validate that the Doppler connection exists and is accessible before updating a migration config. When importing Doppler secrets, detect if the operation requires approval and return status indicating approval-required or imported state. This allows the frontend to surface different messaging based on whether secrets are imported immediately or pending approval. --- .../external-migration/external-migration-service.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 557ca033149..772e066971a 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -890,7 +890,7 @@ export const externalMigrationServiceFactory = ({ const dopplerSecrets = await getDopplerSecrets(appConnection, dopplerProject, dopplerEnvironment); try { - await secretService.createManySecretsRaw({ + const secretOperation = await secretService.createManySecretsRaw({ actorId: actor.id, actor: actor.type, actorAuthMethod: actor.authMethod, @@ -903,13 +903,17 @@ export const externalMigrationServiceFactory = ({ secretValue })) }); + + if (secretOperation.type === SecretProtectionType.Approval) { + return { status: VaultImportStatus.ApprovalRequired, imported: 0 }; + } } catch (error) { throw new BadRequestError({ message: `Failed to import Doppler secrets. ${error instanceof Error ? error.message : "Unknown error"}` }); } - return { imported: Object.keys(dopplerSecrets).length }; + return { status: VaultImportStatus.Imported, imported: Object.keys(dopplerSecrets).length }; }; return { From 501fef824f0a83b89332d64b4f7697126ed133dc Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:08 -0300 Subject: [PATCH 013/562] fix(backend): update response schemas and type casting for Doppler operations Add response schema to updateDopplerExternalMigrationV3 and deleteDopplerExternalMigrationV3 endpoints showing the returned config object. Update importDopplerSecretsV3 response to include status field alongside imported count. Fix type casting for raw secret values to ensure TypeScript type safety. --- .../routes/v3/external-migration-router.ts | 30 +++++++++++++++++-- .../doppler/doppler-connection-fns.ts | 2 +- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index bb1fd0da1e4..3fd870be961 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -711,7 +711,19 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider params: z.object({ id: z.string().uuid() }), body: z.object({ connectionId: z.string().uuid().nullable() - }) + }), + response: { + 200: z.object({ + config: z.object({ + id: z.string(), + orgId: z.string(), + connectionId: z.string().nullish(), + provider: z.string(), + createdAt: z.date(), + updatedAt: z.date() + }) + }) + } }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { @@ -730,7 +742,19 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider config: { rateLimit: writeLimit }, schema: { operationId: "deleteDopplerExternalMigrationV3", - params: z.object({ id: z.string().uuid() }) + params: z.object({ id: z.string().uuid() }), + response: { + 200: z.object({ + config: z.object({ + id: z.string(), + orgId: z.string(), + connectionId: z.string().nullish(), + provider: z.string(), + createdAt: z.date(), + updatedAt: z.date() + }) + }) + } }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { @@ -821,7 +845,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider targetSecretPath: z.string().min(1).default("/") }), response: { - 200: z.object({ imported: z.number() }) + 200: z.object({ status: z.string(), imported: z.number() }) } }, onRequest: verifyAuth([AuthMode.JWT]), diff --git a/backend/src/services/app-connection/doppler/doppler-connection-fns.ts b/backend/src/services/app-connection/doppler/doppler-connection-fns.ts index ce6047ce539..9af218236e3 100644 --- a/backend/src/services/app-connection/doppler/doppler-connection-fns.ts +++ b/backend/src/services/app-connection/doppler/doppler-connection-fns.ts @@ -136,6 +136,6 @@ export const getDopplerSecrets = async ( return Object.fromEntries( Object.entries(res.data.secrets) .filter(([, v]) => v.raw !== null) - .map(([k, v]) => [k, v.raw ?? ""]) + .map(([k, v]) => [k, v.raw as string]) ); }; From d21b8357c88fa50e3ec4fab70c4113dcea3056e4 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:12 -0300 Subject: [PATCH 014/562] feat(frontend): update import mutation to return status and imported count Update useImportDopplerSecrets mutation to return the API response object containing status and imported count, allowing the caller to conditionally handle approval-required vs imported states. --- frontend/src/hooks/api/migration/mutations.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/frontend/src/hooks/api/migration/mutations.tsx b/frontend/src/hooks/api/migration/mutations.tsx index 0bdba3471b0..0fd14bfde5f 100644 --- a/frontend/src/hooks/api/migration/mutations.tsx +++ b/frontend/src/hooks/api/migration/mutations.tsx @@ -233,9 +233,13 @@ export const useDeleteDopplerExternalMigrationConfig = () => { export const useImportDopplerSecrets = () => { const queryClient = useQueryClient(); - return useMutation({ + return useMutation<{ status: string; imported: number }, Error, TImportDopplerSecretsDTO>({ mutationFn: async (dto) => { - await apiRequest.post("/api/v3/external-migration/doppler/import-secrets", dto); + const { data } = await apiRequest.post<{ status: string; imported: number }>( + "/api/v3/external-migration/doppler/import-secrets", + dto + ); + return data; }, onSuccess: (_, { targetProjectId, targetEnvironment, targetSecretPath }) => { queryClient.invalidateQueries({ queryKey: dashboardKeys.all() }); From 464594d9303ada9013dbf66710ada2dd29b93597 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:19 -0300 Subject: [PATCH 015/562] refactor(frontend): migrate DopplerImportModal to v3 components and handle import status Upgrade from v2 (Modal, FormControl, Input) to v3 (Dialog, Field, UnstableInput, Tooltip) components with improved styling. Add useEffect to reset form when modal opens. Update success notification to show different message based on import status: either submission for approval or count of imported secrets. Add reset() call to cleanup handlers. --- .../components/DopplerImportModal.tsx | 292 ++++++++++-------- 1 file changed, 163 insertions(+), 129 deletions(-) diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx index 4cbd88e458f..07258dc7faa 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx @@ -1,17 +1,28 @@ -import { useMemo } from "react"; +import { useEffect, useMemo } from "react"; import { Controller, useForm } from "react-hook-form"; +import { InfoIcon } from "lucide-react"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, - FilterableSelect, - FormControl, - Input, - Modal, - ModalContent -} from "@app/components/v2"; + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + Field, + FieldContent, + FieldError, + FieldLabel, + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableInput +} from "@app/components/v3"; +import { FilterableSelect } from "@app/components/v3/generic/ReactSelect"; import { useGetUserProjects } from "@app/hooks/api"; import { useGetDopplerEnvironments, @@ -55,6 +66,10 @@ export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { } }); + useEffect(() => { + if (isOpen) reset(); + }, [isOpen, reset]); + const selectedDopplerProject = watch("dopplerProject"); const selectedTargetProjectId = watch("targetProjectId"); @@ -79,7 +94,7 @@ export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { const { mutateAsync: importSecrets } = useImportDopplerSecrets(); const onFormSubmit = async (data: FormData) => { - await importSecrets({ + const result = await importSecrets({ configId: config.id, dopplerProject: data.dopplerProject, dopplerEnvironment: data.dopplerEnvironment, @@ -89,7 +104,10 @@ export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { }); createNotification({ type: "success", - text: "Secrets imported successfully from Doppler" + text: + result.status === "approval-required" + ? "Secrets submitted for approval — review the pending request in your project" + : `${result.imported} secret${result.imported !== 1 ? "s" : ""} imported successfully from Doppler` }); reset(); onOpenChange(false); @@ -101,14 +119,22 @@ export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { }; return ( - - -
-

Doppler Source

+ { + if (!open) { + reset(); + onOpenChange(false); + } + }} + > + + + Import Secrets from Doppler + Select source and destination to import secrets + + +

Doppler Source

{ const selectedItem = dopplerProjects.find((p) => p.slug === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingProjects} - options={dopplerProjects} - placeholder="Select Doppler project..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - + + Project + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingProjects} + options={dopplerProjects} + placeholder="Select Doppler project..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + {errors.dopplerProject?.message} + ); }} /> @@ -150,34 +176,34 @@ export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { const selectedItem = dopplerEnvironments.find((e) => e.slug === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingEnvironments} - isDisabled={!selectedDopplerProject} - options={dopplerEnvironments} - placeholder="Select Doppler environment..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - + + Environment + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingEnvironments} + isDisabled={!selectedDopplerProject} + options={dopplerEnvironments} + placeholder="Select Doppler environment..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + {errors.dopplerEnvironment?.message} + ); }} /> -

Infisical Destination

+

Infisical Destination

{ const selectedItem = secretManagerProjects.find((p) => p.id === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "id" in singleValue) { - field.onChange(singleValue.id); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingUserProjects} - options={secretManagerProjects} - placeholder="Select Infisical project..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - /> - + + Project + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "id" in singleValue) { + field.onChange(singleValue.id); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingUserProjects} + options={secretManagerProjects} + placeholder="Select Infisical project..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.id} + /> + + {errors.targetProjectId?.message} + ); }} /> @@ -220,28 +246,28 @@ export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { const selectedItem = environments.find((e) => e.slug === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isDisabled={!selectedTargetProjectId} - options={environments} - placeholder="Select environment..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - + + Environment + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isDisabled={!selectedTargetProjectId} + options={environments} + placeholder="Select environment..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + {errors.targetEnvironment?.message} + ); }} /> @@ -250,33 +276,41 @@ export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { control={control} name="targetSecretPath" render={({ field, fieldState: { error } }) => ( - - - + + + Secret Path + + + + + + + The path in Infisical where secrets will be imported + + + + + + {error?.message} + )} /> -
- - -
+ + -
-
+ + ); }; From c8ca3fe7792b5f2cc6248e0a07f7452bdb1ad162 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:29 -0300 Subject: [PATCH 016/562] refactor(frontend): migrate DopplerConfigModal to v3 components Upgrade from v2 (Modal, ModalContent, FormControl) to v3 (Dialog, DialogContent, Field, Tooltip) components. Standardize form structure with consistent spacing via form className. Update footer layout with DialogFooter component and proper button ordering (Cancel, Create/Update). --- .../components/DopplerConfigModal.tsx | 122 +++++++++++------- 1 file changed, 77 insertions(+), 45 deletions(-) diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx index 923f224671e..c30765de585 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx @@ -1,10 +1,27 @@ import { useEffect, useMemo } from "react"; import { Controller, useForm } from "react-hook-form"; +import { InfoIcon } from "lucide-react"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; -import { Button, FilterableSelect, FormControl, Modal, ModalContent } from "@app/components/v2"; +import { + Button, + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + Field, + FieldContent, + FieldError, + FieldLabel, + Tooltip, + TooltipContent, + TooltipTrigger +} from "@app/components/v3"; +import { FilterableSelect } from "@app/components/v3/generic/ReactSelect"; import { AppConnection } from "@app/hooks/api/appConnections/enums"; import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { @@ -77,14 +94,26 @@ export const DopplerConfigModal = ({ isOpen, onOpenChange, editConfig }: Props) onOpenChange(false); }; + const isPending = isSubmitting || isCreating || isUpdating; + return ( - - -
+ { + if (!open) { + reset(); + onOpenChange(false); + } + }} + > + + + {isEdit ? "Edit Doppler Configuration" : "Add Doppler Configuration"} + + Configure a Doppler connection for in-platform migration tooling + + + conn.id === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "id" in singleValue) { - field.onChange(singleValue.id); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingConnections} - options={dopplerConnections} - placeholder="Select connection..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - /> - + + + Doppler Connection + + + + + + + Select a Doppler app connection + + + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "id" in singleValue) { + field.onChange(singleValue.id); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingConnections} + options={dopplerConnections} + placeholder="Select connection..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.id} + /> + + {errors.connectionId?.message} + ); }} /> -
- - -
+ + -
-
+ + ); }; From e1ccc7752e2eee55cd9408858ef0fcdab6956b4d Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:36 -0300 Subject: [PATCH 017/562] refactor(frontend): upgrade ExternalMigrationsTab styling and components Replace FontAwesome icons with lucide-react (Plus). Migrate custom documentation badge to DocumentationLinkBadge component from v3. Update semantic color tokens from mineshaft theme to modern v3 palette (border, card, foreground, muted). Refactor button to use v3 variant system with proper spacing. --- .../ExternalMigrationsTab.tsx | 71 ++++++------------- 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx index 781475d9192..013cc494468 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx @@ -1,7 +1,6 @@ -import { faArrowUpRightFromSquare, faBookOpen, faPlus } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { Plus } from "lucide-react"; -import { Button } from "@app/components/v2"; +import { Button, DocumentationLinkBadge } from "@app/components/v3"; import { useOrgPermission } from "@app/context"; import { OrgMembershipRole } from "@app/helpers/roles"; import { usePopUp } from "@app/hooks"; @@ -9,6 +8,9 @@ import { usePopUp } from "@app/hooks"; import { InPlatformMigrationSection } from "./components/InPlatformMigrationSection"; import { SelectImportFromPlatformModal } from "./components/SelectImportFromPlatformModal"; +const EXTERNAL_MIGRATIONS_DOCS_HREF = + "https://infisical.com/docs/documentation/platform/external-migrations/overview"; + export const ExternalMigrationsTab = () => { const { hasOrgRole } = useOrgPermission(); @@ -17,40 +19,27 @@ export const ExternalMigrationsTab = () => { return (
{/* In-Platform Migration Tooling Section */} -
+
-

In-Platform Migration Tooling

- -
- - Docs - -
-
+

In-Platform Migration Tooling

+
-

- Connect HashiCorp Vault or{" "} - Doppler to enable migration features across - Infisical: import KV secrets (and from Vault, policies, Kubernetes-related resources, - and more) directly from the UI. +

+ Connect HashiCorp Vault or{" "} + Doppler to enable migration features across + Infisical: import KV secrets (and from Vault, policies, Kubernetes-related resources, and + more) directly from the UI.

{/* Bulk Data Import Section */} -
+
-

Bulk Data Import

-

+

Bulk Data Import

+

Perform one-time bulk imports of data from external platforms.

@@ -58,36 +47,22 @@ export const ExternalMigrationsTab = () => {
-

- Import from external source -

- -
- - Docs - -
-
+

Import from external source

+
-

- Import data from another platform to Infisical. -

+

Import data from another platform to Infisical.

From f8cc35420cde14a6b28aa6ed4f10ec8a8e0a821d Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:41 -0300 Subject: [PATCH 018/562] refactor(frontend): adjust Doppler icon sizing for visual consistency The Doppler mark fills more of its asset bounds than Vault. Use a smaller px width (36px) for Doppler compared to default 50px to achieve visual size parity with Vault icon. --- frontend/src/helpers/externalMigrationInPlatform.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/helpers/externalMigrationInPlatform.ts b/frontend/src/helpers/externalMigrationInPlatform.ts index d6e1290b40b..d301c28fc4b 100644 --- a/frontend/src/helpers/externalMigrationInPlatform.ts +++ b/frontend/src/helpers/externalMigrationInPlatform.ts @@ -25,9 +25,13 @@ export const IN_PLATFORM_MIGRATION_PROVIDER_DETAILS: Record< export function getInPlatformMigrationProviderMeta(app: TInPlatformMigrationApp) { const meta = APP_CONNECTION_MAP[app]; + const defaultSize = meta.size ?? 50; + // Doppler mark fills more of its asset bounds than Vault; use a smaller px width so it matches visually. + const size = app === AppConnection.Doppler ? 36 : defaultSize; + return { name: meta.name, imageFileName: meta.image, - size: meta.size ?? 50 + size }; } From 8d81e3146ffac3db07f785c2e981999c013fc6d5 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Mon, 30 Mar 2026 22:08:48 -0300 Subject: [PATCH 019/562] refactor(frontend): migrate migration modal components to v3 design system MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upgrade ExternalMigrationsTab modals and supporting components from v2 to v3: - EnvKeyPlatformModal, GenericDropzone, InPlatformMigrationSection - SelectImportFromPlatformModal, SelectInPlatformMigrationProviderModal - VaultNamespaceConfigModal, VaultPlatformModal - New MigrationConfigDeleteDialog component Changes include: v2→v3 component imports, updated semantic colors (border, card, foreground, muted), Dialog/Field/Tooltip replacements for v2 Modal/ FormControl, lucide-react icon usage, improved form spacing and button styling. --- .../components/EnvKeyPlatformModal.tsx | 33 +- .../components/GenericDropzone.tsx | 2 +- .../components/InPlatformMigrationSection.tsx | 29 +- .../MigrationConfigDeleteDialog.tsx | 104 ++++++ .../SelectImportFromPlatformModal.tsx | 54 +-- ...SelectInPlatformMigrationProviderModal.tsx | 57 ++-- .../components/VaultNamespaceConfigModal.tsx | 151 ++++---- .../components/VaultPlatformModal.tsx | 323 ++++++++++-------- 8 files changed, 488 insertions(+), 265 deletions(-) create mode 100644 frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/MigrationConfigDeleteDialog.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/EnvKeyPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/EnvKeyPlatformModal.tsx index 2c15cfb8a86..289aaeafc9d 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/EnvKeyPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/EnvKeyPlatformModal.tsx @@ -4,7 +4,14 @@ import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; -import { Button, FormControl, Input } from "@app/components/v2"; +import { + Button, + Field, + FieldContent, + FieldError, + FieldLabel, + UnstableInput +} from "@app/components/v3"; import { useImportEnvKey } from "@app/hooks/api/migration/mutations"; import { GenericDropzone } from "./GenericDropzone"; @@ -76,19 +83,18 @@ export const EnvKeyPlatformModal = ({ onClose }: Props) => { }; return ( -
+ ( - - - + + Encryption key + + + + {error?.message} + )} /> { onData={onImportFileDrop} isSmaller /> -
+
-
diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx index c564572a415..b6f9b47bda3 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx @@ -82,7 +82,7 @@ export const GenericDropzone = forwardRef( onDragOver={handleDrag} onDrop={handleDrop} className={twMerge( - "relative mx-0.5 mt-4 mb-4 flex cursor-pointer items-center justify-center rounded-md bg-mineshaft-900 px-2 py-4 text-sm text-mineshaft-200 opacity-60 outline-2 outline-chicago-600 duration-200 outline-dashed hover:opacity-100", + "relative mx-0.5 mt-4 mb-4 flex cursor-pointer items-center justify-center rounded-md border border-dashed border-border bg-container/40 px-2 py-4 text-sm text-muted opacity-80 outline-none duration-200 hover:border-accent/30 hover:opacity-100", isDragActive && "opacity-100", !isSmaller && "mx-auto w-full max-w-3xl flex-col space-y-4 py-20" )} diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx index 51820db1164..fd1cd00173a 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx @@ -3,7 +3,6 @@ import { Download, Edit, MoreVertical, Plus, Trash2 } from "lucide-react"; import { Link } from "@tanstack/react-router"; import { createNotification } from "@app/components/notifications"; -import { DeleteActionModal } from "@app/components/v2"; import { Button, EmptyMedia, @@ -45,6 +44,7 @@ import { import { DopplerConfigModal } from "./DopplerConfigModal"; import { DopplerImportModal } from "./DopplerImportModal"; +import { MigrationConfigDeleteDialog } from "./MigrationConfigDeleteDialog"; import { SelectInPlatformMigrationProviderModal } from "./SelectInPlatformMigrationProviderModal"; import { VaultNamespaceConfigModal } from "./VaultNamespaceConfigModal"; @@ -141,12 +141,7 @@ export const InPlatformMigrationSection = () => { return (
-
-

Configured platforms

-

- Link HashiCorp Vault namespaces or Doppler to enable migration actions across Infisical. -

-
+

Configurations

+ + + + + ); +}; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectImportFromPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectImportFromPlatformModal.tsx index c7c22e0a7c7..5de0ecacbb7 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectImportFromPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectImportFromPlatformModal.tsx @@ -1,7 +1,13 @@ import { useState } from "react"; import { AnimatePresence, motion } from "framer-motion"; -import { Modal, ModalContent } from "@app/components/v2"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle +} from "@app/components/v3"; import { EnvKeyPlatformModal } from "./EnvKeyPlatformModal"; import { VaultPlatformModal } from "./VaultPlatformModal"; @@ -37,20 +43,27 @@ export const SelectImportFromPlatformModal = ({ isOpen, onToggle }: Props) => { null ); - const handleFormReset = (state: boolean = false) => { - onToggle(state); - setWizardStep(WizardSteps.SelectPlatform); - setSelectedPlatform(null); + const handleOpenChange = (open: boolean) => { + if (!open) { + setWizardStep(WizardSteps.SelectPlatform); + setSelectedPlatform(null); + } + onToggle(open); }; + const title = selectedPlatform + ? `Import from ${selectedPlatform.title}` + : "Import from external source"; + return ( - handleFormReset(state)}> - + + + + {title} + {wizardStep === WizardSteps.SelectPlatform && ( + Select a platform to import from + )} + {wizardStep === WizardSteps.SelectPlatform && ( { animate={{ opacity: 1, translateX: 0 }} exit={{ opacity: 0, translateX: -30 }} > -
- Select a platform to import from -
{PLATFORM_LIST.map((platform, idx) => (
{ @@ -86,7 +96,9 @@ export const SelectImportFromPlatformModal = ({ isOpen, onToggle }: Props) => { alt={`${platform.title} logo`} style={{ width: platform.size }} /> -
{platform.title}
+
+ {platform.title} +
))}
@@ -102,7 +114,7 @@ export const SelectImportFromPlatformModal = ({ isOpen, onToggle }: Props) => { animate={{ opacity: 1, translateX: 0 }} exit={{ opacity: 0, translateX: -30 }} > - handleFormReset(false)} /> + handleOpenChange(false)} />
)} {selectedPlatform?.platform === "vault" && ( @@ -113,13 +125,13 @@ export const SelectImportFromPlatformModal = ({ isOpen, onToggle }: Props) => { animate={{ opacity: 1, translateX: 0 }} exit={{ opacity: 0, translateX: -30 }} > - handleFormReset(false)} /> + handleOpenChange(false)} /> )} )}
-
-
+ + ); }; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx index 6fb4cf12f17..0b0e626a58a 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx @@ -1,6 +1,12 @@ import { Link } from "@tanstack/react-router"; -import { Modal, ModalContent } from "@app/components/v2"; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle +} from "@app/components/v3"; import { useOrganization } from "@app/context"; import { getInPlatformMigrationProviderMeta, @@ -23,20 +29,25 @@ export const SelectInPlatformMigrationProviderModal = ({ const { currentOrg } = useOrganization(); return ( - - -

- Select a platform to link to in-platform migration. Credentials are managed in{" "} - onOpenChange(false)} - > - App Connections - - . -

+ + + + Add migration configuration + +

+ Select a platform to link to in-platform migration. Credentials are managed in{" "} + onOpenChange(false)} + > + App Connections + + . +

+
+
{IN_PLATFORM_MIGRATION_APP_CONNECTIONS.map((app) => { const { name, imageFileName, size } = getInPlatformMigrationProviderMeta(app); @@ -50,25 +61,23 @@ export const SelectInPlatformMigrationProviderModal = ({ onSelect(app); onOpenChange(false); }} - className="group flex flex-col items-center rounded-md border border-mineshaft-600 bg-mineshaft-700 p-4 text-left duration-200 hover:bg-mineshaft-600" + className="group flex flex-col items-center rounded-md border border-border bg-container p-4 text-left duration-200 hover:bg-foreground/5" > - + {name} - - {description} - + {description} ); })}
-
-
+ + ); }; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx index f08aae204db..934e3355cf7 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx @@ -1,17 +1,28 @@ import { useEffect, useMemo } from "react"; import { Controller, useForm } from "react-hook-form"; +import { InfoIcon } from "lucide-react"; import { zodResolver } from "@hookform/resolvers/zod"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, - FilterableSelect, - FormControl, - Input, - Modal, - ModalContent -} from "@app/components/v2"; + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + Field, + FieldContent, + FieldError, + FieldLabel, + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableInput +} from "@app/components/v3"; +import { FilterableSelect } from "@app/components/v3/generic/ReactSelect"; import { AppConnection } from "@app/hooks/api/appConnections/enums"; import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { @@ -63,7 +74,6 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: } }); - // Reset form when editConfig changes or modal opens useEffect(() => { if (isOpen) { reset({ @@ -103,26 +113,44 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: onOpenChange(false); }; + const isPending = isSubmitting || isCreating || isUpdating; + return ( - - -
+ { + if (!open) { + reset(); + onOpenChange(false); + } + }} + > + + + + {isEdit ? "Edit Namespace Configuration" : "Add Namespace Configuration"} + + + Configure a HashiCorp Vault namespace {isEdit ? "configuration" : "for migration tooling"} + + + ( - - - + + Namespace + + + + {errors.namespace?.message} + )} /> @@ -133,49 +161,54 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: const selectedConnection = vaultConnections.find((conn) => conn.id === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "id" in singleValue) { - field.onChange(singleValue.id); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingConnections} - options={vaultConnections} - placeholder="Select connection..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - /> - + + + Vault Connection + + + + + + + + Select a HashiCorp Vault app connection for this namespace + + + + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "id" in singleValue) { + field.onChange(singleValue.id); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingConnections} + options={vaultConnections} + placeholder="Select connection..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.id} + /> + + {errors.connectionId?.message} + ); }} /> -
- - -
+ + -
-
+ + ); }; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx index d793a1e1e72..c6ad9457807 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx @@ -1,6 +1,5 @@ import { Controller, useForm } from "react-hook-form"; -import { faQuestionCircle } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { CircleHelpIcon } from "lucide-react"; import { zodResolver } from "@hookform/resolvers/zod"; import { useQuery } from "@tanstack/react-query"; import { twMerge } from "tailwind-merge"; @@ -8,8 +7,25 @@ import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; -import { Button, FormControl, Input, Select, SelectItem, Tooltip } from "@app/components/v2"; -import { NoticeBannerV2 } from "@app/components/v2/NoticeBannerV2/NoticeBannerV2"; +import { + Button, + Field, + FieldContent, + FieldError, + FieldLabel, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableAlert, + UnstableAlertDescription, + UnstableAlertTitle, + UnstableInput +} from "@app/components/v3"; import { OrgGatewayPermissionActions, OrgPermissionSubjects @@ -30,6 +46,69 @@ enum VaultMappingType { Custom = "custom" } +const GATEWAY_NONE = "__gateway_none__"; + +type VaultGatewaySelectProps = { + isAllowed: boolean; + isGatewayLoading: boolean; + value: string | undefined; + onChange: (next: string | undefined) => void; + hasError: boolean; + gateways?: { id: string; name: string }[]; +}; + +function VaultGatewaySelect({ + isAllowed, + isGatewayLoading, + value, + onChange, + hasError, + gateways +}: VaultGatewaySelectProps) { + const select = ( + + ); + + if (isAllowed) { + return select; + } + + return ( + + + {select} + + + Restricted access. You don't have permission to attach gateways to resources. + + + ); +} + const MAPPING_TYPE_MENU_ITEMS = [ { isCustom: false, @@ -57,9 +136,9 @@ const MAPPING_TYPE_MENU_ITEMS = [ label: "Namespaces", tooltip: (
- When using namespaces for mapping, each namespace within Vault will be created in Infisical - as a project. Each key vault (KV) inside the namespace, will be created as an environment - inside the corresponding project. + When using namespaces for mapping, each namespace within Vault will be created in Infisical as + a project. Each key vault (KV) inside the namespace, will be created as an environment inside + the corresponding project.
Namespace → Project
Key Vault → Project Environment
@@ -128,16 +207,19 @@ export const VaultPlatformModal = ({ onClose }: Props) => { return (
- -

- The Vault migration currently supports importing static secrets from Vault - Dedicated/Self-Hosted. -

+ + Vault KV Secret Engine Import + +

+ The Vault migration currently supports importing static secrets from Vault + Dedicated/Self-Hosted. +

+

Currently only KV Secret Engine is supported for Vault migrations. -

-

-
-
+

+ + +
{ name="gatewayId" defaultValue="" render={({ field: { value, onChange }, fieldState: { error } }) => ( - - -
- -
-
-
+ + + Gateway + (optional) + + + + + {error?.message} + )} /> )} @@ -201,41 +258,39 @@ export const VaultPlatformModal = ({ onClose }: Props) => { control={control} name="vaultUrl" render={({ field, fieldState: { error } }) => ( - - - + + Vault URL + + + + {error?.message} + )} /> ( - - - + + Vault Namespace + + + + {error?.message} + )} /> ( - - - + + Vault Access Token + + + + {error?.message} + )} /> { name="mappingType" defaultValue={VaultMappingType.KeyVault} render={({ field, fieldState: { error } }) => ( - -
- {MAPPING_TYPE_MENU_ITEMS.map((el) => ( -
{ - if (el.isCustom && !isCustomMigrationAvailable?.data?.enabled) return; + + Project Mapping + +
+ {MAPPING_TYPE_MENU_ITEMS.map((el) => ( +
{ + if (el.isCustom && !isCustomMigrationAvailable?.data?.enabled) return; - field.onChange(el.value); - }} - onKeyDown={(e) => { - if (e.key !== "Enter") return; - if (el.isCustom && !isCustomMigrationAvailable?.data?.enabled) return; + field.onChange(el.value); + }} + onKeyDown={(e) => { + if (e.key !== "Enter") return; + if (el.isCustom && !isCustomMigrationAvailable?.data?.enabled) return; - field.onChange(el.value); - }} - role="button" - tabIndex={0} - > -
-
{el.label}
- {el.tooltip && ( -
- - + field.onChange(el.value); + }} + role="button" + tabIndex={0} + > +
+
{el.label}
+ {el.tooltip && ( + + + + + {el.tooltip} -
- )} + )} +
-
- ))} -
- + ))} +
+ + {error?.message} + )} /> -
+
-
From 8f4ab9cda78acc2c4c8b28251c4d31c5f879deda Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Tue, 31 Mar 2026 14:23:20 -0300 Subject: [PATCH 020/562] docs: add Doppler app connection guide and images --- .../doppler/copy-the-generated-code.png | Bin 0 -> 778796 bytes .../doppler/create-api-token.png | Bin 0 -> 740266 bytes .../doppler-app-connection-created.png | Bin 0 -> 147180 bytes .../doppler/doppler-app-connection-form.png | Bin 0 -> 147273 bytes .../doppler/doppler-app-connection-option.png | Bin 0 -> 132610 bytes .../doppler-create-service-account.png | Bin 0 -> 237506 bytes .../doppler/doppler-dashboard.png | Bin 0 -> 360522 bytes .../doppler/manage-service-accounts.png | Bin 0 -> 357702 bytes .../service-account-api-token-creation.png | Bin 0 -> 376424 bytes docs/integrations/app-connections/doppler.mdx | 115 ++++++++++++++++++ 10 files changed, 115 insertions(+) create mode 100644 docs/images/app-connections/doppler/copy-the-generated-code.png create mode 100644 docs/images/app-connections/doppler/create-api-token.png create mode 100644 docs/images/app-connections/doppler/doppler-app-connection-created.png create mode 100644 docs/images/app-connections/doppler/doppler-app-connection-form.png create mode 100644 docs/images/app-connections/doppler/doppler-app-connection-option.png create mode 100644 docs/images/app-connections/doppler/doppler-create-service-account.png create mode 100644 docs/images/app-connections/doppler/doppler-dashboard.png create mode 100644 docs/images/app-connections/doppler/manage-service-accounts.png create mode 100644 docs/images/app-connections/doppler/service-account-api-token-creation.png create mode 100644 docs/integrations/app-connections/doppler.mdx diff --git a/docs/images/app-connections/doppler/copy-the-generated-code.png b/docs/images/app-connections/doppler/copy-the-generated-code.png new file mode 100644 index 0000000000000000000000000000000000000000..89736b87ff27c6e53d7267eed8506261b75d7ebc GIT binary patch literal 778796 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Ⓢ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�&0Ipjf-W_)mRk3Yq`%C<`qQT;e3#@3LH_E`H}nY~NRXVi|A+y4==+$@}E zY5q|s1k<5=P(0{)7A;=)SKBJ|dW*{8IKr|ct^5&D9*ala-I^mw#NYkh)OoYnrwYaD zw%je|IS%^RtQNr^YV~lM4gosV| z3ztGEi&$MtXn3QC2lg3WvekR`WqH48)V}Xz2})r?TG%W46?1AlM0p{dU*BpzeH>A* z_I6)Dd`78(&WQXYI31GrF<(CuV#r&`gYLa<9TgdBi2QVN zCI;STPnS#^6*Nv2lAk^J9KmCfLDDr|aLRw7= z*r?rCLmApraWw6NIG2^n@ytd^H1y~Rp5NyFD6Z#@iw5=33l0VhVcMZSuGl}Ki-q54 zv0qq5ED2BWBoKBs?H})f{#QZZ$DpUf00RZ1C06KFMnWou0`erhFWQ8gCUL=*xZtNL zutV^@nCb%`chq{*Lw|R=yLw-E*oYb-D|jsM&yD&a_g}P!SiA7D-ruhS^F3J*a>};@ zi^GQ23Ipy@6hemU*#5D{#q3v6PB!Hb#*>qGj+_H>nvT5B1{~*fV~sx5@7%q!VWy!E z-;*galp~_!m6vAk7w(#QKjGW!z7Pf!-YZ#Qhz)}ki|fuiP<;8YDqO3!-U?$C(JI1r zmxEZQ-|8*x*%`{ym56P+dlmIX5cfSxu~pevyNXTfnTmupohw$H{d`n#A9&O)mhc)8 z@WR^{B1_d5h{7gAS_4d8+;+2(?h|{_gbsPVa!EhR&qTxrwRE|$`wdxp&6iZ|S;~@s zrroAZeGYVb+c$WAX`p##PrsV9j#AME$#&3^j42rMTXf-}H)YSJ3Asna7?&OQS^YWRaf*-iSFrqsty9K9n}eu?PTQl=nU-yt~N*|6ou)^>^KW@wh23& zeENIesP7)d0a90L{KGslq-ftna2oKGs1$QP4T-Gg9vD-dlkclciN)B*-hj(}%ezi| zX<&^>&wg!&N>?RgkIjj`i$#M}uEA*Z5|2Ozbx`|DZJs_{vF-NNZCqpXHZN(?ofvYsgoNo|oo zDF8sZ9>1r~0Rbhf<0(GB{bsDtJ9w4KsWNS4$B<`xMrd_FA8$MeVMoN9_DfOmX&MS< zR+CI&UQ0WHo4bA#IDK}Iu-R6&8W+gbWKQ=pcFH>oQNcGI5;Rb|~HR+&c5>Yw5s_kwB$0 znE6;v!>{I*Zib2OM1vG1JGBl!}op^<84{ z4IbX&)+QxCKX$I}TRvT(jXK3*d1LW}{E{u`j1)jo9j69 ztTB>l>zhd}d{s1xhEZ(_ABy0fd+#geaeQKo>>^&Fb6~F=-3&G1NyDMgKd4705novW z;r4T8=lo|fpy56dO=8i38smyTzq+c*JS4Y;N_Djk;uCMBHd_mzYm=ZcbkS8bTlz5` z2rxOjb4Xk%@R^}d<#|1Nv2rw#=;ZQP;R$^OZ_)1B^OOtMbOsAON(M@_CebwJV-3Ow6isb(ww*&?2eBa`7$`ks43yky&7 zFNQA!e`S`z(W||CSyLS8_3B`;o=X_hS2dXSgw;VXo>=*Rrq91Vt0B%Tks`mfQ1VE4*2rN z`}ptSw?`kYv-;jQ(0l;2bIwx+vDTtXCxo@ej3#N4A!J)UeAKh$GE*j0x@|R!TNYhT zv?@6o_3FngPR?*ttY~6=@6kuvFyNa?QH_eT^|JBW1MB4%Vos@=**^;8HqC7}E17## z7Op}urvq}F`i}|mKm?uy+*`q^=JCm;B42J@=xfoab_r6|832t^2puH;7Gv0`)MpEf z197dk93^8Ahld=81u$@3$n26j)46~eg9j5l$k9tJ;Gf~N&kB~27YEVe!*S6Lg&7jy zA|mPET7O*_Oy#*v0b*X{8J@ZJE?yOx`ji{q>V&IfM&1&;Os+qn71FOnIsf$hbRHKy zQ<34x+)1$nlCx}0&ioS#uY_mW)Kv5}@~(Z5pNlSl^K@5Pd+$EeTHH_BBT2YDBrB6? zTm0ff_Qua-4&JEslU7b8{SJHZww|2dzewsTJ6ps*+1h0~+!657c1 zyKXO&k3(X{-}oqfnscJ%N(h#(M_lyI6$^qKMy)$aiEkWnYM z##xDNV+73~qSc!U=7H9Lsb~T7WmgH1;TepR#>bk-`V=DZ0_kjGc&MNr6zKYRpxf^J z0@VjV8Cqdy7Rz)`AYvB3A$Un6Gf&o;g?HvqqOs5vsIjoPG&;_0ep>{K9Dfabn%sy^ zR#>Mu9XTmo=Etfg*s$ty$43CJe@4P1;af6wI8}r9cpU%a7YXLt7F~tSKM2?!2I9YP z$DA6DU&E64R+)_2RWoQZ9I#d>F#K*4ALvf?2XfN)=EdE&2h)O^;hCIqKdXhTe~^v* zEBFCKf03U-`p0z5e`ieRC#)YWpx+B$Rmlz=UFVe1V=l0bE@DZSEWR5yY=DAZgMZkP zQoFG6jL{pbg(tR3b6JbGZ<=lhA0`iAYth_I&QfbGlG~d)`+RWBR;Km&*(bmH!h%-9 zw9k(qYK?+|gQ%y;@#*|H5HYSLgR{DHYSe7aXtkuGJEV8oV?OiSF{0Cr)Liz%j#(cU zB+mKdnIM{ZRjzR{jm8OtzxHvY-bbb{zuv7rC;7Gs3zAu$MDX=jN`S#6C6$DISjd7UL=J)!b0e z$u6sTj-PE~q~|U^e?U=)cqjol84bQR1lE|f&2~6d<@5?nmM~>TkK+r?M@sQ-Nxh_# zDmOdduyZRpCurJomJ7<*YLaApF^|)!?=doc&|-+|l8QifC(Qz`7g1=KJGVFV)v+y- zC(+s*tzXJi@b!tl{vuhKB@_|HK8l+0RD8JtS#N9emf(I&WW;WwOMdbZZ$@}l`scvp zw@SLx_XjntR^NgHk2+P}1Kq{koHduZVAias%@|1j5His!T4ShjKcuas1kQyd;kvwB zMl-q-WIY=-jdwd;_YJJ8FDwf!pp%k=>^-U<2Y7u5I~~&^ed%ID#l5irlr;`}$D@A9 z0Wi4FgWV+K>bjJc>@if!8&`vJHtOY1GwvS+s7=oU;c48tT!?MkT^t{2E-JXCQPMh% z*(9$xW&IfSyS+}4Z#{=esU#4Qj+jA!h*{L%hOM0fb`xR~@&0 z5109`hOOV~(MNaxmRYmjP?hRBxjhv3VYy?jqrX3)zd7B#znX<^I6C~L(fr5CC8_aW z6~}$c`{3_4d9dT|Q)>cbf6S<7Xt-<-sybLLo2zcw!pjBowu>j13?cy>9q-&q7K**R zHcK)VL?a6%_m@tGbhb{y3PBPM;j(<*zy((CMqMr6=3N$=!DwJJF?)t|rk-ogAeUg{ z33CqY!QJ?dKs9Q=<*^>w+mAdp@8n0m+t_|+5V8Ofgz;>z={5vB^MZkEYI23H17D%v zc)W1&`&mar_J%p0f+aD|~; zK};9_5+pTbUicaBb4VJS}K5K>~bWUHis$r?>$$Urrv)jr&aIS?_dwo6iGGz^K3Mp;{kA z;CDN1uC}-q(!X{;!0cImfbNqffv3*hKvA=*4|T>*2VO5~vW$*=W!UTXNeh+H8I2ZK zVeJcg^l>$x;+!OJ$2Er_JG%)b>=AtxXXp9cZpY0WXI}Prhw`@d5QeZ=K1H}cHomkD z#vbN_;~LHS=t!z5MFn|q1X0(@zFWQGN5;*A9ySUv`H%`{HR+?0G@HkZIdignetB#B z+9-#PHLD7b@wXCt&38vP!%*yXk_nr8*@|d|%%e=*`;>u^uS9*oYaY7X3Ubn7T?j5# znB~08BTv5t$mijo8*^BR9vgavJ9eh|rc$b{F0?|b?C7HCkvD1BYT~)nZijXTCC3HJ ze5NrQGmeX%Ozv9%>ev_d3RKx0pV{ZcohiH&6U<9>9{Gq_kN?3?8udIX(8KL_5<)UP zLC)B{%I+HD@0LRI4g*>_`%s}~|Ar`k^TkLxV&v~yaHQzg;I#k^!dqe&wS?O)iP3e| zp_+Zyrh4pTp#HD|dVjsYdyj%aSd{Dk{_X!uIsY}bE3XdzJEv^0I*G85o(%LZy(JM> z{`m4`y=8)Z%m8nD+7K*30CENGfUrk{$0$Q?3x+#=^LD01O#^e?03#A@XN2i zI^W?WW$5>X`>jpsFUr)>2};(y6L$Q80m(3QhDq&gP_w3DeccNWyd)2~qPGzTlgK)d zt(lp>>O?CC7%xZ$Sptkkv(OqOHBcOap;c?s-*C@jgelq;QX{Nyx{WlwnB7y~J!-w~XcN2=Zf1At;0=9MGk|0#FdO4<)C7}&xE^z0aF}zL!{9LQrwQLa z>xp7G_TW@rk6agJFr6%Pwbz8DY)-kri9<9T5uUkpyt9jp65v2; zL@z}%bDGV0WM>HxvGJm264g#UUfpQ~M)Sw8>J)>vwG(*4LCaghZxEBuZ|QDr9Jpsr zMZ2N?1{rNa26>I?v!IoZTr1>JPFKJaflbW&0C}RsTf*Ha8OTXMrZ{iYmi&S<9sxLlV&?M9!n4CbeJiYy8ZM&W?BP-|AnV8GTTvN`ps5Pb8F*+2V{76_05)(#O-aD z#}eb2-~Hym%>C0<$2s}G`LzFc2x*N=bD!?KJ=gm0c}5igl}Dr2WE!o+iHHJ_gX(SG zB7xM50lZla!TU$17EjgfMF+O$XMT<$GC5GmWPh0{D-;2NGr!O?u9pLd_XE>FF>mh;^*l=S&lDZAd3rvoyd4MYf?tMy zYaV90`<_vW;nZ`W1E+E`5k#JkYr2EtomwNTto&3&sc7D@5Os_Xy%xqwn$LSPI{%S; z=;b)$gmK26`XK^v(J9{Nu2YYdAtdG8v7e)H#(#0rN_W!A;W_lEhkYAN7xJm->Sn{9 zT_whNTUPOO{B*=gOhdSE+?p|1;X5vGtK|3Wj+0i}d<=H|Z5i|;^dU37Rou*9)+k+K z&&&4IV*m~B)HdYCQ#y4f!?p4Qu1Dz_Tk`0XHI;)^N<^BVTY<}L2`T1ohUSJB;mcES z|5*sNB8;sMUSQPcJk!0y5Zu>8=}NX_|L6)S{zIZ#43+z?_sQK)e9B;Wk7-t^%<5Vo zV_-smgfMS-zZ;AEocZTUshY*{xKW76rW2lqW#+Q*rN?}eQrh7iW7CvMrPHzXN_Tt>7Pc09sm@cl@yh9w;%AoWSg&r(VVCY9-}$NB zPkDh298p1q-&GJ5X9@2-#DYG(0x|_|wK4=)M!m~PmVY_dbk9pfGH^ya z?t(q5NXJaCpXz?ng_h4nJ&OEUAJuU?prrTLr^^;0q$3#QWE z3mjss9y`Mwp`chS)8?U(t!hnnN{5&TweuRwX zA#WB&2)GyI3qyvcwQ%F!3mwUP>HU~|6=b6|Tor=wHbMJi^`%mC-2D+*#x;-cXe=VY zh1K0FO2lN|j>Sz+VCVT2I%U}JjNO`UV-X5l7Mu|m(LU|4+OjyaeV)=~%^|7zB9Ow0X1T4qujm&g_9)AT=F&f zHAMfl?FB};(-L~(&^IrT- z9vXw{ZF1~wsx%&gAmh)-SJ7A+gFWY{LyTw;)|QYs1KFzd(6ES(8CsuP4Z-_R5;lSL z+H<}O7T*KPhGU*B<_w1{?HsBgP-FMU%%MLzDnPPK_qDzhp_i?cK8u_c;^ zxTFDmH+3w+XaA^5MK&<{U$hG&1rKkK-p%jBPHN_TCvk5EF8v-Zt}{k$?!pouBZT}; zcW3Ue)s403`IRKV|0yF3o_4bf)y{=MR?;A4D|Y?>m(To9*fq6+2$-b*R@`g(X` zV(g#)-uS@-B|6bi6qPjBv$R*6tKC~9(A0GD7ukE#%SwDUGLqVzQTlZicLUm9{bh({j-iKL*j=@d*7V*2tFB; z{+S20ozr~HpWqu`QujR6b=owS&L%cTU&B%j+T9>d|Ght37)E^WBcT{`P*>Scs639y z7Qpv_Cgorg(mFfa4d|eIl^0^}fyNiEyX`6fOL94mIyy7`;-kZVlAlJ1C(x#A@|^BG z_K^v~sp@k`Pvs{BHS0%XQR`|*|*zwCEe42KOTrv`xL_@e({bqa4zmWc!uGb z3(>&QdOLyHvZ!pL`C>^--!mb79xmk9b}&&5A<`uHnePN%--x0dSBZTlZ#F#PIBNT2 zfW-HqWNTeiZl{k(IUidxc!OhB=Ih;?*;W+cBG-{^F#ycQl!BRwUydv7+28v}VuO2v zR84U8$3JlcYs>O)4jqo}4$8IL^-o=PEy9ZFg)zDw^a9zP7qy+kKA{_a_o_J(x1;yR z0~MeCT5tYGet{|g^RKxmdcyw@kRkVQ_cQc5jzAW(gW8vd5=OyZz&*X><;$6r|(7+!neJ+rA+&vuA*z-Qj5ljh<02km(>kyPw z=(U>hK0YoVY<4uIx>U@^-xuCi(>zVhL2uK0Ir;)ypq_lj*7s6@Fz2dgN7&P7MuRY+ zCOE4NYZ}mxb6F|)q<%6H zH8T)N#1D!lpjyTAC`0WPyY16*#Ff}0C)JC`A$Pgl4xrJ@cQ4wf7cbMZnehssL#OTZ z56)Ly-nnv%5w>Pjj@gcoln*Q2aI0fGCU^%gX4$R+v4x*XInUMn3u+jpvjblGnlxU= z@t?X=cS7q<#Zgz>Y^nkx-W<~ww*)q<47K)&Pyk(cz>4d~ooQAs+?hO;ou_&iAy>ix zy*_Zw7V`3T>I4fDQm6d2NJjOi6lVFFHKx(1Rm75WKhU$zwz=NZaKJ6~@g#Z6^muJ) zg6$HYSAVU#@buFXVkT8KlQT>&+9*7-F5vf2{`ud4B+pT_;^4)~f7+3y3aBPV?_zoT z*o)q0K57-RPH6YQtwnSLZw`i3{VpK%O|rLb_va751QiA}%+mjt0QVnae+?@DW=y7% zsWP4Ng-vZY7xdJ-pi;8iLd7?M(kscDS15N(mszOs7mK&yE9G9=`DdS-(k+FQ zcu^08p!2qU_B)L#-gz)_utVQSj&;0km2UN!bXBiJ05_efX_-<%oi#kDuUzM4_0y+# zMS8%9beSSrTPlWOtymMJlWUrOFv|6HZz-TY>AueIaw!Rietd&8ox};XC?;TB`53LLd zZw{^$Wzy$Jdy`FP;G;p4Z`iNQ%mw2+o=@IV9Y+3mAFW&3UVn_f;(m3raN{Xsw{sco zCDn0|L9PGjlQ>pR5nhK_^L#fnkzjPKe6ph4Y6Rs);A%bb%6zTvaM~%E2o+wy31e5@ z7=%Kb>CQwE(6Vsk;{}zz#H)o>jY=J!D)l`v9}t1Cv8l*Y2a+x+;s*Fo)~w^R(p`^5 zW~XaRna-$IKyzD?dtplGfE}62%%o|(PL$QQW8`Y8a#Ymx>{(nCu6_KM$D-aVfSk-; zpCSc}<*&Y)`n~S^841OiQB9D{CFS&q#?2WGg}DkS&vgZ=MFcL#;TRX;2s5J~g~~0I zTQy%{^9O@s7$<+Gc)^prB-`jAH8Xk@6=Fklm%~F9yFEhB{P%0-wI?c_{^?BhuzrH{ zZrM7dc>l#iKGjK!+~+ajE0BNCxs3Wlm#mMvU_&J#m#fDxq}==s))cjc zvUN@^rC?Lqc1di*?hgvN*DTHDSeZ2e72<||Fl2SS zb@h2~cqv!^GpJaW_J`Uz$tzUw^VJGXub(mO%+KO@F5bc#w%#voCP0O%eEJK9)^Q|b zUM@5Klx*X$8cQ7-Y=$1QwqercMP$36`ym1tzLQdjbAu#}`ctq6fh%Juj!r40Zu>Sy zffriI?)LLRS)yJtm$g)&OZ#B5QGX_FNNMNEuMv?2F3;aX;FI3qQ7>ne3O0g>fFO(V z=kw@XeI_quBq&ZEi*4hk-HHnB8A`;(4M&s)M`G~!s;hi3^zVP7N*j**Y#hp`+xNuw z+nr8$i)p@u$|hSRds=pEj%%>x!D!n0K3Zd-Ts?193C$}!&~cGjgp{><($LgfrC9JF z?N&kJlUtETpvC9ya_Sh(ns*KBWdpXr<61_A$+uXvs#@Zk>%@8#!`*={!6Khp%U zXy-rVM$K%A=@?c>Ew$SnS!pk**Yz~MdF(MiHAz6=ON*PT9_VjY!VdcPI_J8g+h0zK zUiRGu>R-2C)Z32jH5;rcPL$+dv;RR|KQ(iCQC7kQ#g~BhRVRaKH{H=`_{ESZOuW0L z?JbVZRz>;9K7w7qcN%GyBKT9;Sj5=aJL9d7&F0BaYYqCNc|nJNOqmp7q_j%R$dZz<8VRXT6vogJqKRPhkK$mLLfs zuO*sD!qU#KZ`_N==QN%V=;83pTA7X+y4FO}U~fF-L2=dd$fZ5$5FdQAXL6OxVOEaq zAzs6l)}%@5lRvhxL^zfm$8y8NMWm^kBh@Rr%qk@P{7}PZvio45V?<;IQE!@TM&g@Yj>E%_>Qmyw2$Hw>&PSFu&XxSh>@gm9aTDQgGsD8G`j%=5Q`El_{n?LWgdP zD}Izz)Zt*8cUt{>ie!q#3lRNDyE{m8*`mS8Ui&`WeRT&;`K9_ht9@&s+4hr5`u#P9 zbs<#ui)jUTduERNG<^%JnBXm?L|u50vVc^4q7eF9!%w!25+qAZoNZUNsyoxZudDI2 zhHoLmA)^WvW0H>{!c6i0Y$F0$>VLrfJM)3uYuM1{-3T04S>0J~qfnRJWCLRH)wP@s z3$&cr_?X-HPiE(2ic_VA;ySxQGFbGJ(U`JBF72IigdXeLbTlCB(f7r}==GC0?neNL zb>K+;0jT5|d6aq`5f+9tw&Q5P?4TA_Zwrl_RCW@Hkl4{I1cqsL;Azx86!=$k2=iGnY}1$S<= z-cq?22K#KcJBFr|w63(r>^y0T8FhnWE9BO@PeW@wBwczA2hO*jX!gG7_oL7z7v=u4&jL2p~a+U)m5k_s+v(ntkD4+LX7 zk*na`)AHIm;7~G&-tAH#jr5N)DD5>Mf(q4=$$y)os7u;`c+z0+K77DSm??tsE+uD1 z-r&Q!bh_>>XZR`*G;223Ic1e2$g4J<$dG?|y)3Tn(iMg9fLpHRfMFCmd?ABHgBa++OFH z9;To_C-4Oe#BVmF1Iguw*IhluX54+jFn;>)n`Kr^1(K%HU6}&3tOYWIA$_y#h1w#o zQr0J4yxb0ach0fSPo^eO_wg)B@~it=LB>t+vnqM;HTj?Z9CZ~38M&7d$Y}dsYEDdJ zh31v5XV!N?SQ78dUgQQ-dj&ZRsM2Y$Pr}CvUX>4tR*gz`_qi))y>Y8**+@uTV^&y` zu9*CNly1Q+-KQR28sb#poqZXFIJyGu%yH@UjZ<85@qT9j=@d*p$uJ2f-h-iQs~-u& zK9G%N8B92>JqENC5QAi6(|O}RZkt2~=-uk2s9h0w;+b_`B^j!gFBJNbLymF9=UXhrhBL&o8i;EvR~FU<{^H zfu^~elO@kkrateYX~@cn-n<>YNdmgic+gO*8VSoAi!7+VD1`~8SE`CD z;q$k1Li_syws%U?c8|7?5noHKWjXJ@@RD;=-0p}5iyO(ib?iY)GRur)>YYv}Okc=n zBuFu=u`+x3n@JntH-xE#O}#E53o0>8;@d_@`mOds?35mJ;M1=kJu&-|NbMf$Ga`M((bUSKBI6S=G2m3ByvPpu5D4?}3TVvYyxBlglCC z{ewr;-C`^e=r*HyYA@$@${NS#KMMMDiJSjgVsU?*)%fpXX5@2>g|Xr25|+C<&pvBM z+<{^hd$XA6JkPed%eUP2&1sKZIv4RXcCuD~e6BmlAxDAw_qK9bM@LwvE=`UNstA81 zYefMU-mVH0Y5ca-_G#{oy$^5{Qklf|L4|y=m$pM_!jy=l{{0sHi2N%o zilud6J@~-*mpjpEpd+YrZ}g-b8b$grdYA`>R)T*2h6e4XGPR+3xDaq)7I+2;I-VU?#8EC*eYg)i zKFS~Q>g)uA=2SZJdj#|9$M9eEaj-XGbVf#x9|iOBg}u6c=HP1{va;Q}f zd|mT;_Q{=?avWtcla|HTo?o5~c;qr$kMxMspSnJ2SOMuXOOEA<_Y#ZqzIYUirdG5i z-eYu@Hn0`&K{TIy%}tC5N`k}+W<~Q`Cu9bklHmMi%1VEZh zwXbo1w8mvxhS0k(LUAxMbFMYeYNzl@fOYL z>inW`4+pVghjOnP*Ves0eDL46e`pTr74L>1#^Sdq0FX9kh*tbRJ03)Li~PlLiEvi_ zk3u*1q`Sn+A`H|+o8>nr1;+}5`Z6j20~ZV~D38bClrx};0GbLf}>DQP98Q96fi z7$l{ep+_2K=z$>zUiRMSoPG8_`~QC9!~E9su-0|gweI_RvH^CBoi_|loK?LO9g}t=X<^|(KQz1at&Xd)Rc1AT{wbf8WX0jy+}09~2k&s8T+JXdZBFk<5m z3_H|+1X~ziw&C+1`BS+C{6KxEXK>cK4IRCEdPqajum8MH)H@bO*eqp7UAr=c;G^ZB zp~@q_A5!@<9N@HJL=2Lx;+I>&;9Mn@U^Q#fp)s-P3vw3#_+YElyBEnVSYR763g7Il z!k5EC5=L@W4pO~~mU~ZmfaAt89$3~T8bz4MqZekT&z!{NYRkEepYguf@_zKKu%wMb zoGN*a4Xi;V>GT9Lha}ZNf5*iN_9I@0QazwrxJQ8Yer4u6)i;#fpZh zefVbE=XX;k2;!XHr|GG1T5VIL8eSLHX7q8B$QfDl6;2u$sc0(aMGBEwT73_Bee{se z`3@NEAGY`)2O6uJFI6T_&RF9tnUM8rUay91LL;x8FG)OICc1%!G&C3^9W1PvpRDXy z|IvtAn*s!+TJOlpGln7knSRC2vjdk?pQ28d=*Qa`Ywpn0o$@9<+3e;#xk# zHp6WO|CIDT$amqL2x!lr+P#EdpIewna@o=ta7x3popbn-P($$?4hF{K^dT(wEYo+xWsL>Jr16mXsDD}aYrl!S$m5Bxcv->Ox^$SF3 z&jAYK!C|q7*hhTS{$t(?M+B)sD|rv+abLGEXY&mcfeOOtWQV@B=D<3SO#2UGKG6^H zBmhc<^7sZk8d@Ct^K3tIhhB{3nQa=)&s2+9-T__QMF#-&A^W#KFbc)!?@Fg2_MH48 zKP98Qquin!4)FOqRL|*h2?)|BZ=~t(@6>;GSP6XH*AZVvb;tYD9$EMXe=8Z5i`7Ti zpjbWGW9rQqEPb9`WJMijGDoQ2!KyLb&qLy_*Q?&qGElinx>{-MKV^Q*YDNX2amJ%6yb$}@4F~9qsBnH|1+0r+b{T&5VxOMBk+%MWYoTPH@xEWd6%Fv++6qlM+ zI?79@^7xB`=vz2fiC;%vPyH9GO*@MC!s1@GPOnO%qk+)Yr<@$q@!TRH{5P4W?jz+Z zmSj_3ud=Tjqore{EotA}d!G7rG#WQC8#(hh4&ox>VmK{@eq40wcVD8zYlX#752fl2 zrkjqJ?v)ASQ;Zs>{wEyoi#%ApNDWmxHJFqh+Hno=hp(*ZP4+&r9VJ!vZx&<|5XTI0 z`W+qtX{cZ)9@m>y`QQu7x$9d8Ey>N;*8jwA{Kh`lMg2B>Q~PxH@=rV5|MA@aan`h} zT%+Pn%zNXG8%wANC8{&;-0^J4xl4Cad{ENEHzt&nY4ZAgFWriCris0$qy_aB zX3GtjdG?+Vk z(xPlfx_IS*ZxFQ&8uS($-4S{lU>~(;11=VIdFerpynMJ$2BbAhCLr~kBEoNM#DWwz zx4yWAJTh;7i=enwqogZ}b*f8{$^35mHi8`~Y5i;P>erA1O8*6FAiqMXO5jvof4%0j zw82Vmj%F{1%XaU$y=_~4h;H`h+sKRnF}xLH8Kit-9DqtX{}ZmxSzG^uKI|2qTcc*# zdd(K0k^CKOhN7mlezONeuFjhjNux?eAC;qNY-G03|0t?^Poyj@G|fPkz?)QFa#%*s~q+H^HGeO_M2QOVmdox@xD~n zjdTKLVp68oDNe_{!$FPHGcoYo;RZrPBr1h_}*y}vl zO#SSUx8!lBrkLSUJl?Utzn4@nD5-W2B8wR0RzVfMWAzM1sa$7G9@maJyXm zTj@~omkR6V64aFG1=*&)Hk!+5eAmdlfkac*Vqf(NWSDIIgVcE}il<}v!i0K?cF%|x z+gA4))xAk*m0Oh*)irdYTMlYn3InV?KK-|K0#r=sL!U1~5P7Lh16gU*{8VoA7AWTb^`>iCTYSvccVc>R zucibK06lksBF5n(cjgXX72Hj}@0SgW+n{wj6<(hCB{ZlpOmQrot)ph7rA7{IFw$PX z3IVM6feg;i=L#>lK()n>(tH?n*?3VuSY)QBG}_aAitmI2;LoFp8!Q1D*OyCsIBCL3?Fz^+!0+)yUg(G z#z!HZS~57nLFA-K+)!i=I4nBJWHrDLiT&tk;{ENet;RMK?xL>Nf-jM8{iz5)M{9tr zb3^OXM-tDuE}0d18ryD*;Z4%)lsDBVANih-0Df}M$xO-790z(heu?mtTJOL}5f8&C zj~?7RxW!3vXe;;gb9Cs&%tljex^Yaz538{vYs0~!>o2!GK^+=uAY1y@t(#ADO)A>7 z_wc9u11qNTV3S=Y%rU;f6ME#$Pi=i#N(gGHh2~i`=K@+C?}bE-!m3|7R&T>E9?^(l z`i#y_Kci$aTRhKiWKsWrLu2FtNs_+}=#y2?*8MkWjs3JOPnq)c38zjUFaEuoc0x|9 za7@-x1pZ0&643$bzV_DBZ;#6ZrE>A_8KJX(VCZIk1Nlb=r5Ns19(e55Q$~lBd%3&< zKXe5JI@=k*8TqrOyyg3(mE{z0Cah0Eds%Jv19lD*D%aVyK2O|+1HS_)4KE5uv2{+I z=ERbk(f}k}Z54C;*o_fa`}m&cx7jJ#NZv3E-o*=bSbYL&6$qnsiWHhx@TZmU8^V?wpyE(P`mkFMY7th>N&s1+s+F- zJ}L*5YsUkPwwb|A8;o7vuLs`*(aUoXvC z?jLaXWlbQ6xx%QtahDJK^x*4dyDBQ+3-!j?hea!!4D71SFEFGlD(@&|93n{?Zjic; zOFLDOm`~U;lg87js72i*9tfOt0S(%+p()Dt9|>F@SNR>g;p#cy!?^hDPAqAoPuEF#7A^%v8Lyla%MX6tTROQuf5 zg|WcIkFI{#rOxcMboBds1Mr`Y|0b`xX;p*-8ut9R={aHFwwp+k=$u14^UMkw7+K+C>JcIbg&~WEj(1#9I4GCIkSz^3b^feD zq>C}_FNNk<{iF!~CJ@uOo@-fsknKM%z7;-T2>vPeVMa70RR12e8Cra(1MNl)lRS4s zk)3!2@(@4vGf_j^&JY%UG{XBuUKHSX^oWYu$nf>`dPxYwFU7V%x0T4V4ZWmz22El^clZ(~o55m()qbYML@m1r0C;t{yi^ z(IfahEnZ126ny;BKy4VBvp;ePGVo7Z3JzK?uolo)kCfXoZW@n#WyED&D23Ly{`%DW zDAwX=%eBy`N}6JI~tULE4^xL2R)9al39rUYhsm zd1|T28(Jyal*%bRXP$ls!8zW7pY?b$&|j_#_At||BcL$+y1{$KQhqJPf@D`vqlyR`GULD-F*73ub{E}i2 z^h_Qt3cns29|pPVH_==!-RQ4ilo2s>@J->Se{M;+p@UDopKel=QU8Fa%26LY&OGPM zy*4@dFb`W35a?~z#csh_n{+}J{EIg}A-R2N*EtMJUQ8vXczw(}lWJJu%rE{j99x{_ zaM)HInS4SI)@p$D*N90}>*Am*)>U!WVnYI{c<-kMmGa=TtP!~dadRh6v)(ePb_bZtE&){`Dm4_GdiNw}3&!4j5zQhO2Lzv@wm^-rd zr|!Pt^vnVsZelUaQYsYH`=J}6&ssL<2Xp;Fr+e*mNXTltM}gSMeBD76j6)ABi!_t)^Rg!L6f8Prf`%RluYh@^g~kuEoTs`%hR$o75Y%CMkY_3e#+fRLhDs*CD<1T z>xo=S)xhP~JrKC4Bc!P3O_E|gr^@gPi414m7#vg5n+Brn0aT8%&TH{H$P)dp*FPzn z=qG9^H`)@YX00vCg}IL-3)2pO5}x3T7)z|uW z57A8dhjQ{4`wNvl+uezJZ@rqJ1v#|JM|!=7K4V%+u8EiF6J2_pz7X*`OUlLTvyDP% z@1?|9m!kwGY7Zb0x&I%P2#HO-f9%8kJvVPF{;h*{L7Ls8t$84G@>jn^k9Fu!%R{5$ z1qyS+e4N$&`;k?_KD2TU{l^8V5(Wi zTYImWx|y0}^6m8nU^?VR<0SP9rIp5_2=e?QRTy*OTop_RxSn?3voLhSrmrY7qzO33zQg5#r9`? zNl2eTo|h|pd>d)bP8izkmsH zOof@Ih5AkW&S~-4wUa&oXbNF0zQlgr;gllZMEbEHjfU8vyOqZqd_M5VI$!|=iDbAi z?A0_T=AYiXua7!i*rNJ&m@YEB#GZkPJy7PkVb2B z$DDH;bGw#%khOokYF$j*BsTC$8xMjx_2Rz9Em!jPEoY?Zojwu~s9)|7yOvXx@KCF` z9#TD=qq(pMK7Z$ad8hhxSi6m@e_hd|iQtF$ijCcCEnKZsUj1(x3v(6c6e~Y_#56md z3a0DYw~^oqueq89Ml%$z`Soa%TeN8Q{?pwJQo41@y)X6<-VdxVLs4WTsNv!|SXGIN z*SYX}qPL?d6n?T|&1AmGeg<%Y(o$)^*V&Gr9*@9sm8opgV!S?h8mPM-$BAfLz;YJm&*_ply@Gkq|;by z_cpNBq^{hGpK^0p!HaXw(lbbkRl}C5lha-Io66QN(?@z4o|-I>2D%L}v?NBSnXYH5 zZ8JpqM4CL_-JHWvG2N+bwWp6MR&R-Rb#VUHoHD94w6RDW?nP%a`VH^c<00E*(awlC zv6i9P%g5=E$0ODE?mbEtK?L@I3$q_my{uBNv->{;UKburTzrdrds%ka`EpWcf8n_$ zaKGa=-sM{rsPaJFj{5N4$^3X0{2dwsKHSEEJJirfggG`})zDn6ZVe;Ai&Z|=^Z!Lf z{8g;5t^YTvVj_!kx}}2{>$Uw^To+`Fd%>E-Sd05?=rd2?fb`H3-$fueeUJh2Oacb3 z-e84l6@n9NVNkhD$EwU0XyU)df?8Ry%D(_HXIp(Y-{;G`TyjG5zH&xS-B&pqJez{6 z<4J%INl3k-^!FZWL60{{zDes{?2+Aw{g?NPW^}JnyNQ<$e7>(mg|Fe{1$bbDZ3S|dcq)Y!@sOuTkiRN+|es*YW3SwR^HR8q^Irmj@@a; z{VaCt?JEYM$YmATqUXsuS%8n9ZwKL0lHAc!i0oI|j#WoL4~*K@sl*ZD!@HG&FY&wOSc44Flli-%gh+3!PdSPdxAWK4g@+vIn^-_jM!~#Vf>P7 z))NX4D4GOk@m&?*IJnS24z+220>aTeWbr2Fbe!Zeki|I+2Tl zEHDST8D5YXO24uP4IegD2G|08e5z@Ge?O521B<-lb*@(lX(x5L3tT>68V3(WsEfwQ zT#{E}r!ft?0wnn$AX6iy0)ImL!Z+thUk}4LVc_}ZoIoBXQVlrnQyNw1RcNTE(Lz!U zGVtkzp7;olp~N|RsGB_;t(|SfeSFcHegh@(COsg&sWWsgvT=US)_k>MNqxoE0eEpN z5+e@JcSEo3UJ8e9<|BX&Nw%o+2X2eK&{FxZs%Xa>`P#&!OR{28bJ1TTnwQceis;n- z7V8Q{#*s7z?|K#z_uN1aeh4Hd)| zo!c{)RJL(At>g^z1A)8>$<8=Sx@LmQ$MMU~xLC)rd^LlQebW)73XshSznVak;UP$3 zlC@3A@{kPq`;v_eE}Ze=>KN~ZVz%8PGz#S&?aZZm%&e4YWYA|Vw$WJDdi4p^r#^1K zd^-QLj$FKbWBHup1YI79bc%*WRmZkw&3KiWo%p2%*m*@1oozfFBc*96Z55+7SKI17 zjva236i2wBD~My?JjZm)P_D+IpR$_sW%JQqh}u|a4leNJn1U8e;O<@q=gnqx&E8+L z2|cKwnZ<^0DGq$O@M;Egy>TE>KvlSCrFWU9at3f)7LP9<;E@!3)=&~}(LLu-?bwv| z?5~(=Q-8??jh(HJM%_+Lf;16j5(+@w6_c7ZwugbOlUO&Cu{{!~^`iwETpg{2gF4Vk z%a$Yf7^5Ud@Yi+z0DPL#uP#P?e!<8{PijwsFojMEM-%#ma-K@o7FW7{sS}+}d6Zu4 zg@A3#7j0zOg74uIl<=c?MiZYfpv5#ea2d~ZMjM3c1n8NEQPw9e_ zi~NTzoT+3N@v2beo(kElMO*PpTUpDo9)ywAxnh@Xrl_x7>B@X_$ysvi)06|C=_B)< zY)#?!hB0ELhC_kv+fEVGV2*`OylnE7w3eeKzqvK}wJERBnAAB=fQ`Y{jPh!_qHEDF6PQ0)qhYklFt@rU{)ROY%A@_t`u&LH+`C zb01%_f1n@s+-z7jSmb8S6|SvggTQ1=O+|&1#A;*&9&3@L9<8wMu~joM0Ur(mCRiGh zMZ7chb}D4zy1jzy<6Vi2jK%=AsY5^dlUsJ1cULmE7$uW|$xE@j?{>M@M_UCPrst^Y z037&yNDi7asr!HPXAMs_If9p~FA;#@3e6NZi&B-DQf>Uk^F|KF3weV_x+sHtF2_J0 z#OJJSe~kc8G{FPQ1KhB0!!BAZSH6p3YqCObDI0asSe92R^lCnZi$Lb2*A`s?oV zzIag^Dwvh;CWKheoiJG4kV%Z~d+U=udwJe!kKC&oi$(OonZdw4e0@XC(Dv3h%PyQP zbq+AM>pKu%0NJot*+wEHd%&`K|{j%Gl&5LNy0f4M@v7}=lZN~ ze0|N?d&~LFxo87PH)?p;Epv`KL2skWD$)#ip$8~|PWNX-Filtho;_N5F?k>)IM$;v zt9Q^4d|b&k=uL^#lydZz+$yw-MiSO8&mcJ0@m8v;mAW#ZzVFl8(~{QprV49SU~^yA zj_ap{n|D!MN*X0U;!ln>Wh#hudJa0>c1@>kPAVK~7(d&P`6NQIn9UvUSYU&GQ@b!;A#{(wlJjyj2HRhVnuZD(|nHJ;vU7a!y$_x%zW$ zG^oEQ;RM8Kt3^MhD@XNLSJ2k~qTI8lZkl@;`1$Z>+vLy2{uM$PDj7cMzxed$o*&Zv z91e!*jZ-Xq_uV(juLQSM{u72)^SU%!&x{T=uD1S3AH zn|>W@RVO1|Ck)qITe1wf2H&fd2`n#}R27V}H1kp@YS~IjYUi*-04XeuiWPY}664mDL+B#Z@G-(`G z>{+3EhMJBpCQCJBdX|uf{MtS0%r_LhF%C&e-C5C1b%Z)NWXH3wm^4{Y>ao^()7bkA zg2JH7o_TJD>rE1^xzo0D$H*Q92}zNKm4QPCNh;)`S>~Ov#NyLiout$koy(_7Yd3VFHw_g*v6w%-C5W%Qo zlssGZN~&_2Tgv?pOpKYkki@LRMz+qaGg8}R9P+m;p~yj<%7n|yT+U|s%E^WRQ~bZK z^IM1s2x*Iut1og4w`S^W3hk?%)*luah}GqFonWGH+_6Y?KztI+JI!)|$$k0=A1o5qo-5%m|5lV_49i8Ckwaa7+xH+V64^1~Zg?`W5>Tv^dVW)=T zHYZO@q3AiwXjbr}Xmu7EFoM(IVkQy2c+$k3iLTPF@b6ED2U$AB~*EUaPE6 zdhBiCXPd4L2KMns*>THht*bUR9&AZTYCV3OG$DSyA%ou#(a~j_%kXVDR&rxv?hdh6 z$r<#O(Xj8TNr`$HsvAQmzmc@2!S;$IJ#v|{^(xoRkgq!1bhVhecG3tLjW~vP71q8* z53{rO$7$JZzi6cnvb`SB>yFe={z5!Qaj@-FIRH0g9&!@d`Se|*;*5RJUe-b2VQQZR z^|G~)hLIN4p|)50UI-^2@RkPD>`D%R5S%my^!Di*tyyVPefb2v_w^RXo0pl#@Vybw z=wY9v60d9HwXtT)!(B7dL7fcC6}(5-_J7TAX9)If>ntTkEj}J6=u3a7$R^7m$7YVf z1vCzDvX4)_;)jIvW%rz=-90Vb^97y{P|zZaM6b@Z7E`aT99wpC_HnDV|jQ z=eI7Nzi*j@6hT^`rFh#Sb<27irurgrjQn-W!o8<-xZ+;ok20-k+*$OHX~W%J<(1vP zfLdY&uK7=`ug;M_1rWDmIh*lZZJJUTAxX_SvU~^b;OVVOOYS_f&^LpjTS93OrPCT| zt-8;8-nTWH)#&?S;z}J1w4yZ9eY|!jixqkhHaBwgL^b_~t3zsRJh6{tMGi;eJU~W-zNG3;HhPdujimd$A(QD+So_FiSM>lvCoM`zRFZ2GSdsxIRa2fqgep zMN6~(mS6m_d^95$JXvUQDvqKswHeVdXQ*p*dg7O@J7yo@eOj{U*tlhZ2d!Z9!Rzi3 z^m^AJNM)H9`cc5a{?wdP)yO_6N`8DVguk`2i?D8+@4(i{11N9$D<=ffRr$25E-3}l zQ(05nlUy^_SVLu0Dpq{LsGzpFQsM>Uo;*yp$ND|~>=$62!w$v2iea|y_IATO&>Wr> zb<0N_KEfBl3Lpvi(!k=~B#EAV>Kh$^nyPYH+Z_I4iPWQ3js@|4eSwdZ=bun8MFfUq zx3pquT64`=Zvn1*Md3SN;O-?6T{@^T4jMpd5&$?r(%BWZ2bm^5kFJ<&=PLRka6N8- z8JGg~apTCt41z5H(FG<&dAH>vv9A~MwL)s^UE^8Nu)DG?&X=;=f>Sk*xpGci_2;fo z)!`A|i3vORoO8JgLL>tpfAd2fpfF55f!fgogC^`*Zv3$$uBT|F+`*6oF?2juuAIdJ#S5(I@p#F~@MV_JQ7BkoluGfP%GCHFyDga(}9tOH@Seu*a{QXOpPUrR#Z#BU8RGyuCz3tErKG zCHf!h$3v87H=m0v#!1N@g&v9a=|K6WJ(rO{m+XfEJUrl#(5h9Wk zPlsO|4e7|VWHrSjZfmK+%*~H$K%Zn$+Uc7botTM_r=7*ATlrAb;FiWC(Z!@g67bH# zR>a=L8EV4fZSz0mO#uEooG+H-1iL1B>UW?@@8xzPa^L5aTPNDR*0CQ%Ana>hZ6s$+ zQG<1j)uY)j+34>LVj^D(*Q#26E`+-h#t#nncpBNsbIx+5-vg>{3ziSa9p~W`DZ3lw z*KP>e&bWxZG4HC>ovd1gY1Ez@Kse~Kbw497R`k%U6f5^UqIZYpOv_9c#S{OiIm-h5 zp^1CZ-Eh4Q|GSHL9;wi`U6*C`$h%+srscktIg4mfjBlbkD}GS>8qy#)pY}v~-H2r^ z$G(QGxXqAE@~71)^Ixeia}=XouRwUod;Doy!3PD2aC6g*vbxzX$=FFX&L_LDb?2Yw z$L=jHEoI1qhV(&~(B$vWY;r5Cy%mjpK=Rqcgl(~BcUSe0&68k%*7tvjJ^`W6%bgnz ztbEq+cRg`B1F?<1&cn6+%)PCeAp$^?^q69%N8Lh!6eM(nLvXAp5TDy3pq zFixl-CL7Y?5M2F_WzIbuz(r88xU9uII_Ram(lbYx9*d0aclPRwb0rdj*BWrw)TGuk z0c9mMwXxa9(mdM-Zx{m^k1wQCeKqTx#iuS>>~_!;fwfCpf`z#K@n-Zsh`O;r)MItW z82KnNYT4Eiy-h}_1D#K)|CG2db(xVIiVxqC4PsABk-HAiA3IMNq_lqTjL{wT6oF|P z1vX2N|HAn_#+4<$!p!bUmbJ#@oRpujLSsN%xnBww5k?}PWsCa2w^?WK&c}fKrz zK{XAE!MbOoNVFfADrDIxO~3S=UqBm_=2_|05#!?5W6&0+X>0g;wrPB!1pA*il`X(B z&1urntj1ox{GgMLzO?{8D@8q*F`dnWZpz@B>!`a@BUY442_x>XFxi~+FUhH>ov}!D zlG88Rsp&gxIbrz1FhuB)mJBoXqFB#vC}>W0a7>p@$wzj7=F^oS_z)?>?WKPqS7+{N z!Wt$Qyr)BcD|7VS$`pRMwzhNFAqZr(Ekn(z~eht8I7E?2Ny%F6|j7_>G`CUOsE7WG9z1N z59z)d{)jqvKIOVWNTP3*JRcu;MbmFU3r{)S77bVy zO<^l)sO=SDzr~B8(8WFT*&UzvXL>D>btoNnXM9+;t7Xz%)m>4Uu9Le;l{IufljU@) zlP_~#tq0N|ZtjcEgnIXzg@y>T|K>9Ed z5FwnR6C|=(lPN{Iv@EcyY!BMe@VDl#Uh>k^CxZ~8@U(@%1Cdvnm6J(E7hVVP7H>-a zDK@y>85UY9f={#9L%m))_;$5$h$ZCEvD-}GJY-R%r>FBWqNE*+Rme^S#Z`Tfon@o=uX|Sgz%tWL1&w?sn>MSIlm(qXea+a;*(Q3}W zMFbJc;fKgr=jzQ>K4l2=y-=zl>bL=~#d8nUCD`Gi+sqj1%DE7gbyQuUEwf<6S3KFT zFk#F6Hrgh*^{cC!<3=>-cJV-dZK7*nl@LQh>3#O!?Zfj5>qz|j$;Z>$vz+`nsB$I` z8Q2lf)xB7;=GTasukg5}Kbl$xD-9)m!f>S~Nn9&0)zspJ4x+ZKGSMgHU@>K#r2g^w zj2`+GXs4G)uV;)wjQl`V%o+f-C{E)IO|oW}~6(6HC$FKY{OULi3Pt&U#&kG8I_Joc2q$NhVQs}KIR_#gj=^i$8g zn*`S)wN71!e(&A)JTbQ0@{j2&v@_jw_1w0K7&T3|^voM+yW)&YdY0qf2GNmN2$~II zeX|Qy6Gw=Ci`DK(#EY>ll^CL%M!#fDa9g-&p_~af4xJ{dE8mrgn_<~$$<${n%sXm3Fgd;nWa?|u4@6+`IDeO!XFb1EUnP_@bO4)Zs1MQT1v zPu;Rxx2&=l7rqkdvCOC=A{pyEw|aR6#5-)IX=NxuGN*VcWK(?Y1I03pj0Zt{qs(ozJVLG`|Yt+=h6IPbL5ld31sWDo_gq1 zDUw*`i)T|z&sy1*YKmY|ksXG!JGZ8P7IoI2>H8X56f?^~6F=&CoO2MK%h58owwU*O zo$(iXT%Y7N^dZgbNjJB_AO66w=>7MP3yU@$Za&=x#OMI-2 zvBB;0cHWC+=lm>63+tKOW;_;9g;K{yepG?$Po-ykdFs{$L%uA(3&tiUNSN22;t0qq z6X1yHl}{%VsWo9uV|gn{8dp|yxU2MKb9DEG97KY!D*|*6@@ZdACN!^W2_CXGIHRB1?xf9e1KF~Hhi2K^AtV1>^>J2>-ceI1cELM?V2AtLDyD` z%@kedvJSHHgx{WS=BK0LZeYZ+mX#_jJ(F9(tBqAT}LpHdPD1paNy zn;+cqDVy1DS_|z|l_7GFXX+_a!J}5$-YaN0W+23&khHg|snYZvX+)d!`Qf|xr8|o= z#RpW;oE>53?|C8Jr%+(b`o;M5fg?Qg|8NgI&-Y87l>wGkxjs+srn$EOdYLAXwS3tz zLa(uYn6rM}@Cc|4^OPyDFm-9Z^IeXeOXb4}0 zSF;0ajhG33m+4{U-broh0gv~t*FBnWNqkIYLKl#v?{k?)zG8P%y?|Wf7$p7}>PYFqJSzxv;US$j}ofSQEI z7%_b8_OUXHX{cO>$?T~a^70{5buw@evzv$h&zyyUmAOn&mzX#i zKF*E9O><86if$BsyVcdP=RfK%;u& zybwGJqV#7utF*#NT*QTu>^LQ{s`UVz`P7ROo`DxOiOzm=k9Csgu|0Z?X@=G22J3G- zdR%QdA0M15r~#Oxf3gReT}Eo9S|xaPNrh?E(H`{0mO3~b$!m2vr05WQ+h!3kqH#m- z0Q?{R-7*0LcXo)Dw`0+xmNVV3pz#}r{PwuITd7~xJ|AsO+ck>6v4#7?A=T4jd?tg7 z{4b}|Hu;RnsMyf{(@I++M+t}Ew{7nCl}Y+!GRe?WPP#-w{6yA_Zj8b&2C>7pbD}i4 z6B!B(`I5A3_pg}_#PY`XyigWn5WV9b!FCCS3;5-%U>pUc%vf0g~1%SYQK_Dscqe_V^*F)G)uIgK+R*4E+UD;x>or8oDN4U~D}@Ar<} z!#e{Ue_==y;AIc%S$`oeN38ZMB@?FD(DnO|RNe`K71} zqWPS1%Yj$pDjCpRV!sBoOyhox~CfC>)!uXy<+@5z*2Cb#k8AM5^!HTbER1XuP z2^|z_)n24wDkl}KlFV3=mGk(6?*2|2aLBb8O~l1bPZT>bLalH~L;vHw>F(@U#(Ii* zY0#+7o?4JpGEbrO;bl67StSJtE$L5@re>@|-y2xUqz4?6#X6^i-D1*)gr(bv|9Xl6 z#SBgr$UGD&x_?l^wm6+1vk-oqr45fXweV*6I^)X}V3N7;=%5{{e6CWzwq)6gEZr)d zI}^cl-c&%Kvs7s-{2H^6pg%X1w^OIJlcytkLj`ELKJvj^*Y zQ>j?KK(%evtwU`sJ+VCXq>8fqdc8b3zv-_RpWo5-%N2#Wo46=iT|9@=D@Z5Q=d6gs z7si=iwlwaa+UTUcrc>!yf3~4JxU>Eix;}~duJvx;xhWiumnxkil@e#75y|ZQu4cNd zk55Et2Kh}vyQ&l86!|2F**lsmPKV9%gXaM#1)tAIVHt&Uw!F;Xs!$p z_1jwG=5srxY|<~kN6|LW9rUbS*s#WTSDq}`?9nqC`id5~P|AN`_v<6pa!6@ z`Qv16D7)5La)Z;gA=7rq;|w#ab$}j_M2AcL@kax>?119RO|?7RN4 zj9y+&{s@1p3`R)qZYfX9+!}EV%4R5Rn*Oc`iGtD1*DfiGFZ6BhbTcED0XNs~# zD0#mqqnZ*)DD(2Vwx!nmsI#S8<+;>~j6}4@bp!t5#r9u3m_EUZ;h!9x)Qq;OL4E#Y zD?M{gd;g{lD3N^-E6UquTaElNWuF=Q`7n`IDo*pt5BZ(R_=`uYSKcN*Or+40(z&fr z@#F4+1(+dRS>nj{=E~(E4)$Lj@(0<;U^Uu~PHg8eo-dS7xp@rI`DI#} z8=rnW{Yfg*!Let&N<{Y8O$o@C{-qC7tm2H1dCL{fq_-#f|LFSaxTg2-e?>$Q1tgVL zO1eQBgYFs)(m9aM!9_%rlpKu+1F4PL$N>f*EipzToudcRzp0<={d%vz|MVfaz0d1) zo+qBqbKaiq=DzH-pJOL6@i?0JMbsMh#X{FXAnvsIM~e1IVNT1T&G*~?-YuD=76N;a=)73wf$*yEH( zt;riCL=me#(?(7*?c|mT6W^A>?nkIxxw3(%&laxatiEBqh*64%IUrNZuQOsfQnCOpLip^hfu7 z0hXAi#Rcp>J{F)ds3!HAhq0JUwz}t8R7dX8k0deX3*i9 z*7{YChO$3?V`{>=d{)2Z&Nk3SVXgG`L0|kGSHso%hDF;TUL&)oO-$yMm3L%e@Ei7C z|LF^GhDxIy+C#+pP5M%(BmrS%5|eTWLoBAGm%AGunWY{c++t;tVl`hkTfDS8LlwsX zx7TgTNC-E2)1C?F=S_3eGVr|%)LA5$}bWtTnwjh>7w zq-%|vQ`#9Zd^DkH-_dI6P>So!cz%5&$iFP2ZEtIE$4xohn%G@$RBWbG_TzyR}b zdDk9j!}2d5=pyxdu39|D?qOP9k_V6ka7;ZG)jfe@>L>Sv&KFO;WIvVC{)r7RP-Vi{R?ENKe=SYCB9oQR zMFt({cz67G%r;v!VU?VBtie*MUlGE3l$6hvVN=3rOU&WBpz^U50?pn~>WlWo(;m~V zMzE47bFh(Lj*5{&EU>LCAUgIk>HQ`zy~>iz&d&)$(87nJgB~iX)kor0>5D!Fz9!+> zG1v4=kWOZOuVRcK;P6*@@ismHI$D1llO33I*oM%EW5Zb@6s-295pd+ZdPi8eZJ>N^ zJW3>t+kjZ$1@A92-KPz0N1oAI_~nQdRFHH*1*3^*XroE!;BT6kWMG>&oEz%nh`hin zNEHLp4^vwGVZY^**|$QieNN{n`uuY}yhsBr`7U9Q+kT$f(Fo zY_V=gWLMGGl*s7a)ps_cNEMsR)9zK;x<-F+rD?(E2qq)m%)0V}R6jaz5=Vw0bIJb& zXFn3CM|h615T0j?0>|7myTS?3#Rl3(_cgWePqXY|>I7*AUo|`AOO}Itxso}(?)4}{ z#4)mVemWDD3(yv;PJT>I!pNO=RORYaC;$b-xli6R3G}c~Rzz@H7F|!^DKc{0_CMwI zns~9iv9bBEDABM(c7Zx+R()0duU1#Hj3O4qd!5YV3-AtSW@qp7j6K0N8iIKr$&oqt z0VhSHVx~Meja_uydHDyOcn8y)Co>7$53ThCcF#Yt=D6j!#>^ypv zkuhvzNQ5M6aH-JlC6`zAu8(vw!z*wCM$#rASjn%ptd5@L`$3pf^a|5JVYk>X+CIcAA6FXzlOG@=T##=lrXbo3*N*(M4_g!pfXl0q!Iq=gy^ zuM&F+0T@*^38N~0o$$}h7Dsx1gvKG@OBS=etdvFZ?@<>~BVi@Ts@ZoN90OllBxzCd!uft~kX|Khu2{Sl;7vFx_yl(PmIz2u|-wqkswt_*+&dc zbBpV_bq^GPooX!41V%ZN(hEn0JtStpaRaxp^PGBCrtcHTQliUntM{*UEv_;YIbH*F zcXGdLf5*_~_cm#p8hy`Ym^pHf1*6qF)(@zpz_Kip#Gr#jnzeY60nj%CmId9=Ly_~y zkI(q!yWW2cK;i^dhh;j z06ulcLn)Hzul2E0A57lAI#psgvD?VhlDVsWS zu6BlhT)U)ush_`K*hsQCrUv!jDsPGHi+N&98DlU+lum#mRyr2qU3wfNlCEw&-wJZ! zTzs$XiF;GK0cB;Gwymh(bPfMNQ)B6?LPyi716JviI?bRbM`4WDWZhBp=X*64nz9EA z2aN7~B}6a3qx-*0N=4Fg_2@$+XIBR806goieo&thRD`WM@7d<@(5d2c-_Sd_b9Isx zfFOsI4N~~6i3%9##T-M|Y^xb$3A=OH`%;A++TF9&23N;k63KM=-Y1kUfatt35Ln?{ zcG9R1oluS9?WyJ|ZYj&l+{~p9QY^5_uqvk=EU^r8@(?)W`+O*4pQ-YNI%MUOw^FiH z8>Urb#jrIo$?EpwVT4HhBnsi8!h!39mF?J^p=z?dC@-P;g$7&MEol?mF_#*F>4Kjw z{&=P}{105!=J{9xN)kS#BSs@#qU0{;^TNI0H`yoI22;t!7ynVMv|PTbmm@!5yKp&k zT|oRm2E1M|C&87ci;jFjThvKEmaL**<`P|eETWi~=kmmg$(YWSJ|b>}UrFrW7L>Xg z3R$aLaN|&5o;_FsHFmKD^gzu54aH{DwM!hm*fI(z(3tvwp^55->FjZ=hm;35RshUR z+c&n`F>Px$ux1MknT~KPJfEH0wJG64hRB|V^EFbRZ%=nA{N??JOpX_)>h`lUxyAd% zuKh!9d_}{AUxu)*X7x>BE4+@#+{?#cisskPxx%vhmsI4|oGCa3#M!x1*x^YT#cLNa z9>UU=sWHL^Ak%-LOVjp(3zdK->cG1es5V*KL5V0rgVA+rxj^uv6kDl4y)@o zTJ;!wKL#+cSIx|bnnDq>EQ5FSiN70wFYPb$U~fOivM(E#r*5jQm3q$xsszRJMGnIZ z#`LXiFNpjy(^HmEKYA0;eg9fb#=H_0jKK3(dJptam+Y1iCH=hD09GR2`ZPrQC86F= zpjq`*0Ne87dLPazA16L%UbCPBs>NJKi@7gzTQ^m==~w+#Lqw;`F7Ev+ZTDlsQ#4hk zryfndZ+zXl!diIpw9`n)Kw+O{T<`NG+Ma?L&PTbv8=NI&DH`Wq<5};`)EnZgz^f<@ zki-ONPd4Z%X6w|XYr}iw@lljTklRsb)+DWmcPKgOzwZ|A*{_f~z>YyBiidRO7J?~? zFH{Pai*jbGZ-2j?S;O^3~9&6!@Uu1>)tjj##8WQ}xp2CP4KoOnwy=0D-<=|)k?iIBMtT+{xvg07uJ$)o_}Ul6RYTKeWo8UX`Q_7FMU<~ z2N*q(V`_@SuR~T*Tn1Bj`0z9@<)ilmt=R6F4gCVEmP9sEzNhv=X%#{O4jM&FV?0C+Ht`#0fsw6-DLf7BhL=U6tRNz7bVxjr|L?E7}~!{<_!WjuYFCs zx6+oEbJk5esE8xE&O;7&)>f#Sc(eal;sWs|y+fQiO)bz%K9(CZKoMxldSivEn|&!`D}qqg}<;FSdY(u=AEgdsAlnlMp)p zOM?1p#WBh#Jf7t35EQFm+Wj`@km~}Z5BRCVQSI8;wcBwKi{#6aSDYOjS)y&%iSP#d z$A++iQ)-4GUtR`q<`tb#WK^+7=~_i~i3g;L8w*kI*))IKf6i4F$FRD_NTn*-Yir&n zaE*Bsko>*1jnhzRnfro#&Q#VgAlqQ1#_Ehdg8o)|z-FZ4y%V@3kulKtSJv{?1%KVM z-95*>m+G;g*AZ($NL%sZ+}p2t#n9*G&iXz_Hr9TgsUgIY}QOldSc?gy?Bkm z_0{`2&8OuzM_EiARj?0-qV9Enx6Wy^uWO%mXOWbVNx|`+8~x+YOnNWp1ez(F;N_l^8*%}&0PTuv{h{dk zfm!AI52tI*2zutQEL^IM^+e8)_WOq_K0(B-cKWKjB`iOprW6<60(Q6%)y!8Lgrq}G zhx_Ji0W4vI{Z4+x761`Dtcc$vEArR*KA{e6KW?w5?f3IVwafhHo^2#{GT zz!)i}cPf&>=Fy>iAPp~n`vzybhN8-Tp1#x9;ro%0Wawq<7{eU<|L6a@ z>#whN!&-jiJ$9LWC#rVpsfL`halR(mMCN}9 zlD=ceS4Z;Y1D+sFc}Wflg#%8ykmj=esENw&hr6kA-Sc3uN~M;jcg(l#p+5{Yq+sM1 zIbw2#GR~LR&b?#Ft`)UTWCq?za|=!&A^${MiPD)~WnOWR`zFia+NYWrkdt)}uI9Zm z?CwtoH?JrRd9W-RT@j+ZywSV3=vgh007*A+vaWEw25A6xWnX9$)XM`YvyjAn%jrV- z_@fQh(xpir?;n3;Ixe`okUsn-sWRJpGMO)_#valNSs4*wnKX!H(gM}qiiOI? zU8n42qHEPUyfHa&4_y~%w(qkfx)x`m@3z!}xh~wu6?4_#^NPo~M5ld?M#V0_GqEX3 zf_4(VssL&oP(i=wZ`~kDHQkf{PgxySsT}EKSlP*&ZuyE`^Ert*K{H$dTR&kTQfW>%k`=S-qDt< z2_6(k`UUN3LAqOYys?T87%Y?5g+!29>)vCz947L{)5|=J0!?3}$IPPy=5tlPR^)gc zxYL-dr-kn*zP?hRGChsx(Ws=Ze+z7-ype8-y64+mlmvN)t}$a^<`40IoAydS2%0Cz zEB|a{pBlkiBR?piP&m_p32fkMDF2}L_SvG7A~YW{&IM^VNGO#WRe_w&CeQ9hnEcez zgg&~u2Wt;(bLy5_aq3g@`UQ(Esd7ytbUt9`e#?Wj=W7DXf_{&z@5Cl+Ul}#6nd|+i z@6o8S|38W6@0N;FZGkQW$>q=(pFX*xV1=wG3skAkqOyFMJ_^68QnwYXrXC^%K`xN5M@!1QIpT)!4V7T*oc#LX1(aY*? zbPz!usw`=D#HUW>v~YVnWVGLU#c-{p?X&s)b!ucv`@P)uB~mf5k0*`5Vc~OlOkE7m)^pwMgzem@&~2$AmyE=5STWs~`;$KCZs~`yc(~0JwW@cCRm?=8 zyM)>ktiMo~Cu=xL5&YL<0wb|8&t~t^BYm#cqKJgj(rQFkyDcz7;z#P%P58V9yy!4} zoDO}E7ZATW#YoWkPn2r87V7n&{>?T&qsXwe61aotCiIoT`U`0CROj*w!0K>{dac8h zW0j!hzvckHN4L-`tgo9Bn~^sTT=3BWUelvVe+5}Q(Y{lxK%U_<45Y}>2cio0L@7C~ z+x6jMLm`DIQbCRd>sq90f9q zH&F1?J8LPgBI?BKZuPp(5UJJ*^4?LGUy(yRY@p%<>K(=cIM*&8pnQzXIxSqT2yvb^ z*Ajwz$vTGP%Ff;|(-j`TMJb}#rIbI8Lno6~;;fp??2HfXu%-6t+6=}0np)n-5#suf zJ_%h9C;2p|0F%UVpBGb}(rmu@YU+HZy*fdjFv57FK1+{{@BJGzXPFkT^^TnG?z^2g z-K?tVk;gDq6n4v^eg^@Lx%g9qP#z^0Al_TAy2&NBogsr1vqSmIw*e>@AHDu{twY%# zF@cDUkM9d-cXht}0v|9*8~>s*Y07Bu`Q5K}{;$$F`$DLnGUM3{1*n3dIWPXn{z8Cs zyn1*onzVV?sJaShy}Vs+34dj8ah^BrBXn93H_^LzSTfz1bG9Q1v-kLS$LzaDN-^V| z#?(#@H6F{H5!J5_u|?63kqjUif~CU8pXLBRBvZX@dL>Z*1<-qNeVde%)X0R|>B#n4v zW?<^7lUd-f8#So515t7s?$;0|U6&^>N;+i{GfOPmuvVS4p)on=$gjye+~8yF= zlF*Q;0Wp|&Du}i9M5=DYQaT5oZwxSfs)NOJoIRVaZ%TT~nssJrSx~EcvM~q@$oM{- z(xS@#+B{q6#lCbw0ErsSiWzH@o1xqCa*U0$-ajz3jqfGydl+}S-lsdq$?p9T5r>qecjPi5Vc$2mQ{itf+Pb#!JeVx!^s6v#Z2oAD*7sm=>0u=b4KF5P1TYc< z|5X%x{|ts_a$}d?9r#TEM;ZMBlmRkVlKVtwR1ybc#IQYsbr@e>$iVyn`rTn}k4zT6 zjJfT^o#HF`0TZ{bv%QT4KR`O7#V*&~VBEw|yok$Cgmd@b>S^EsFR`n-uhM{firFOB z=1h@`+-WsvRbcg~ok>Xz3!l#<4D7!m5!>rl(M{0(Y|YjkYD2;+UaAJW749ZEaT=@A zG0Xsm1UDYkO^pBO<(f-`?p0_1BaDhR5Sg=+z%I>~}-2vp$^_Su__@ zT!pBvF)J2Yq9{sMU-X39k-?>BB*f30M`#z9|1A{!p4B)JE{~lp0-6(Srr)lO$qsu! zh(Y&CDXozGPPh)P86GBnZ<+%`^X-X>ed_$hir{P$eA<*Bi>{YTse8MEF2RRQ zk9C^F^s_Ey2cd5DmShc-eW*3mO*`^1Q7{wbqTIHO=*weV*wHpx3ux|ZFI-PFco`^4 zYTHi9+;m@zRioo={dFso;^xgn7nV2$z&TxBVRljGL1hyUJ-xE)4G|t6H@;-3eioZ* zvGSC2efaDksDztj6J{$q>^=X+P{M@c33m4m$2Z$ST&qU7~cUu?{W@?2!X zLLgggmAKa){&U%*qVbgm+57h2d~tHrqr+(@->2CvURQ7aI?#WBE01vGtR)Ei)gjD4 za%+^`^i@#v#YG@%QIbtb`9#H|OZC{*{m)5K5L#$nFaZ8QF!vE6L-4kDT^tq>7ZpYv zwBx_`(Nu=h*=(~^NkGbA$hd^2oj0_vWmfQ=g*PP5cA1y%r=>E9-q6cqKem zI*}9OW+9FR;a=|_ronY={qx{rUxhlT-ad>SpDV$&#-_=j6K`$&Gl_IZjW;D6f3kMk z_(uozdC~m;+)8dzC2%Maa*34Bf`ehRp(-ss%Zv3}=;E`OV@XWs(_hc{3wN2e=&pWp zK6zReqI+tUV6#2GXIf;B8{D{7kq!4~)&DL@=YiW-2JyAHiyF`aveufoT8RwKzbU#F zY@P#7?-~W3>@*xC22V!*6kGkmpdS|!{IF$*Ns4y1uJ7nFizzn4WO!elgSGgRg;@fV z%ecRwKKDnX*PlA2S7XPZ-fc_y)Nbd>&m5Sedu#AnA7~^fTL-XDO^Y*#?n>30gVDBy zWJ|IKkT-j{o#?a?$&h@9JQlZh^qFUZNxAIVW$umzu~PxwO;ft0%3OvD+oRk_eeq{N91#lh%l-gH%&FaRJpy0lY!M(7YOm-6x4@(zlBMYtjxo-9kg%B=vOK2fd zsvW4u(y9#uHX=RzxnIdkdL4xq;MSxpJg~94eVfh}eGjd}I(;FD+{Wcw!h{t!uT({W z62h5A*X`laRdAe3$~-$7s;b_W05z>oKc4qQy?f`tA6>O>7(}HwTXuKtxOQQn8k_@) z!T7 zCbi#2x&+S)ey+c$UsYUC@xY_KIi>LenZV!P{mXE;8n2cFeIll^tSm%rtTp2@?kxddfEf=qU+Te29d3-C_~B8ghZRlkp-i#$%gg8 z%oC%jeS-x19&YF+g$`qcwoxXyj?&1&M0M7q*$$mhcimIDt++i<&3wP<2+_w*#;fUm zYKHc1oCMp(A~Znf?!Zyb-Q*Y- z#Ye=}xsAcwr-d>;LZImgY?n1=J8HT%CwO1=gv?(x{7zWDF!JO=PMM{W1`h&e1F z8mk;Ypqk^GY@Ez@ZhKWdeev-#ue}a_kmQ>G!gbqM%_2VU8tIXf##PPI#>;JMOovl> z=t(EoC~$HkE*I{|q3QfebJ5=AJn5Ts?9qgeksEs99~Sw4otLdG{IRvZh~1FP>5U^1 z+{1rhAux`bbDpekdP4JGZ@Pe|nfe#>R2p6k9Y@}(D5NZ`BM!e2Q5w%RB~9+vZdHU# z>X&AZy3{+g{Utc$+(c|J=kS}<=<0VqzYn<^5OA)x`{DY3oD}zEYVGj&cxP0iDynZ% zl4}k08mh%QZb(#m-S!rnb@hhRQ^#F~Kv=+1z3n-N*7i|_mU zDzxk}^EbIl2V{3lOgM3IpnDVpt(gAsO%2p=hrhBPMgiF;*aJ1t*ClgJc{=&~gcTC( zEzikrJEaHjV8&PU8<@7wo-rO`8&;xhOr(!!ZvKSt|LdC<@JJqgz077hYBxHYVl>v8 zaZu= zvh_8x)vI%0;}y(qG@@4YY{VTI2OcrE7Mra=5Ho{pej(wHiqMmpzu68{dpj1C<58Aw zty$2{PzfmZGLEvAL{44*Q#NgW^&;lxx^le}R^e%-0yMgMzoWWPu*q%ydfP!b{}+ik zx6=ZYX49$D(fpNbzP|hD;JM%<_GTX0KQ+Ke@zHgl5Oh&oMea7M$zda;IcZ+765_7vQM0mOE{zUR zS)dt&`_oCf_AGj?m`ISI7q9e*NbLPh@#h@> zZ^_8TtGL+@KH(XszOk_v=^n3ES#qVBbE0|$lvxXVK|Dn&2omM!v62RZ&7nH8fRllM ztPfrti>yl?>j6>LQT;l(W;QvEyRn|AsVF~z2CUvu>xCAQ|EQCsXB2$pSJ+11In)Q7x;^@-i z7qe?2%a3p#dSW=U9@eyXcDna*voTw##^dgPU;<~$MhZL@(=uo^@VQyQpp(dR#np+# zTOMi-svRuwX4WjvBgwX5k+`Bmta~wRLaETRUb-}d*A319^;VN|-VLe!+&8z9dYIEL z1o+KppV{y!owwX$5`71rDLYCKwVyYZ)Pb`{h( z3Olij^4j?^L+4I|B_^cz$aCs%oHMywa@)f`_7KRP^iJ+AplP8ie<+o3dC%(>BK6wJ z8*hCw9IES;-Avqt?{`*H+jj5@zU?X7-oB+w<)6n5OvMg%pU%A&gZLv@$L$f~HIDQ6 z;ht=+S)^^ZBgU?IA7_l74FnK2$J};*-ea(u z`u6*+%VrE+6$CBK?@$Kk$>L(OBrR=DXpS%rPooW)83Mlr1mwezzJyQ(_3bK;s9ILGr! z81sxktVY~bqTc~$_wG|Dt)+xy(Wo-@7jNS$G3soR zaKkdK{YCxp^D$$UNTqS_uz8v; z#HdES0J5@sOn8@>Mbi&nU)7Po=@DU2ENH**T@n|ZtqKI2_$MxHdQg8`uWTf;<}p&V zUY(C`;?eEOh|9_&659pXLsLIuu+!9rqLMISf|UDc517elcHtEI){U5c31##GR$_Ge zIbIecRCd$fJb^X#lpDS0wV@ZX-}42s8~n-*DbwT{^WbNT^zY2&0zR)YliA%^7=-~H zU#v+*^?kcml0TM?w0L7QFQ=a^bvif!?Ohi-9lA|ZP@cBXT{>1bf)?4+{gRcBH9pM` zq}y{&2PXIUrpj1{ehWtbyGt!yEL&D&(3HfxF1rrddQ~i&nn{O?x;dqHZ(w>_@e4SQ z-?CWS#PohkXw)r9Ka~QH@fxg-t0%4 z^edZ{DU6TBUcB*#E0E205p!|GccLzZEAMuhPr=1NuUNQQ8+Q7lfpqTb^f>hj2i(@e z)jP0P_M~HcrK%IB*$&y-#8JwJ88m%An@_)?;djToi?dt8-9?XaHJxYA>5B%ari_yP z+g7Ly$)_7%Tzm6~C8TYV2$L1p2jcVD`AC1*j}zyrJ}Ip=C03SaSOB3Mg{o{2Sp z6A%3HwGXQhVO{8S`<)Gmpsb;xqhxPwN$2i_h1n-Dd@sy~lBM6+67SSFLaV04KuyS# zFZ(H3P0elxXPG5kWs|)I`6vF|9^)s*?tG_=FF;eatf zi89e2YN#bexxkD2W}Zcu4BO#8N=C8oKI`cQ6`r(rFzw#bt~jl5Ye+j=R&=$u4#8#| z41TZ0)nflww)}JTzXJm9bNggwoH%Y<@z&gsR2A-Dd4hr7+d&Dj#l%SL<`*ZJ-bMO1 zXYdB_8u2deI(nmUTkIZ#z&vm>=*7c#OLh-iS61%&XM9Nvc*tSFn$|WB@fs{(C&E}J zsfiv;t;QPrH{$VxM(g>0=Elp|tq*VqGaEAUFUPD=%mY`PN4u7QVnzkPpycX2W3@BF zWW&XLE(`TJcrCBH+0vS=Oibc2UnMK3HTY!be$MdpOc{?PC}f(!KS?8p#kO($Ft(R$ zkTz};gbh9l{x>zgPyP-%S-g7mO+x?|CHMuvHVswKG^P@r-y_QpSo|tZ{v}%uo8^gi zv7ho;#C3x9aS1GN^qoiyVDlA1=J>ti5z)-AF8Y+e^eLjC`_I>ulu&Bzc?rbkrMdYS z!m{uaiKGsM=b-`MX>0g^=ycM$l_)YRp>+1$6RvyQtQnaJk7ssuR=n%FF)U~oQz|SA zIwUubf!dg=f)Y11Xe6jfF{V2arFsqUSXo1^h+JE$?lJS)$9I&qCO@ywe?u(URMv5lkSnARdp~S4_Nk6F-x5 zOn|$_D!W_eD^WNK2pA~ut7j5tD{RGWQZE!O0Q=iTOJY?&NiY(ti|;4UEXlf%?HmN*SF`MjY@;y;CCbJB~L8_z>B1!W=% zO>f_EkQ^UY3gMNsQ*&!=y0ihAl8LxdV|(COI(^1}aFDy@efqP*E_pt6R`{Jl?G%dw zIsNuEzUTTs;B|1%g&dkfb|=8!ar}kO=xdr9d-k3n#!kIzU&=()RU1wYlLQsD^p`wE zm;FclRpm*mBdn6n?nLydLS%)f)|?@;h~Po7X6ZQ5bh7N$72q*F9)t#4@al@On87A9@s%A)Agx#BHLrp|6T3}2?gB2F%(rkRC z!;0>~;8ffre3HVc9ym14DECqD+{TCk!oaN_Cb>9>JZG``08qL># z?O$IHG=N33#luyW)P%_?Cbdj9fqFSMbBeOwlAwbtn1;OoypSca&4QeBo}TPK=Dl)n z*tT$nT~$sAXmHm{U{~9~Bs9)=)O?Bcb?n4^?x`fQA9v3-of-F3A9#Grb{tS?mQWEX z05fW?Ssj@3NvlDYE+p{Cx;DtLhJVZC*=~2K>*fh`6jH8ZwG?%H#7ijbRx(T|Lt`>u zk^DmZc8z&wZwT6}MqZYd`)#6Ahown3w;hZ)e}FXV$iZY-w?IDunu3OwmMDO|g-k}9 zhUM-i=aQLJKoO3>WIJuPN_}d2y|Jy~wi(eF9T|0NeCE+RxiRerYN~;y7F*oz-Y<9p zt(h`BMR$tMn)XKjW|e;BM=joD_s~S(xXq^)D7cdTB)ubz=kgaoGZ3>MbN3Hc?u-6w z|LXejh|aiJYiSPGahrUZo!a1t@LOc+{_$GR9Yrp>*|oTkJ-Z{^s?w~(qXpkh_S1UG zKgj@a9Aah*kxFf)`h7)y&6MRtw#LcW-TC6XJR&tbS*f3`l55idW4ktlMqjA1fD|cb z_nfjL3!=KD)MhdDdLWE@;MyyId3~_*gnM99+RE7yr00{{a;5*3G8V1Mm&GZ1R^FrK zKBX%iDE%nR&d~Nox)F>~v?@`Aq?9EBSmD4NF(a2?mj)v|LeP3`91r&mt6PII$K4N_ z82T-$h>eK?9irQ-^r#yAU+_x2^E#G!=hhHZhkHde?Jy|Nf4Uil+|q{($s2>mNcG>@b}53;9q}{E#+3%*fsrD0=@5mSUGL#E~)uUm{!$MdnFB# zwHF{O2Z*1A+YpB9B?wJu>vtMW%ojJNI6-R7P(df!>?V^_RCNc(6Ufq~G0X1QE-B&N zrz{UL^vEQ2z+@VwSvl5{HG0a5Vk^)URw~f=tVY`uF1A038UVj0yGH7{qF33dU!t4Tl{x2=ef)hqG4)Ov$9^@YUfODL=Tw$g+JfX_UqxzFWC>i z#R`9iaibhZKv%Li2y2Hj9c37FcF?q2k(@U_7}`&P#XXlQ>1#f93a}>q@;56Wg4gzk zD)vI?lIqu17Sjb}o@xJEV=~p!I;n+1KM(mY<)}XS;#9A1rg5)2Zo1F$VcvyL@@mGW zf>jD`rE?492b1{9OCH6?K_b{qu(mKh#)MHzTURzmizI);mTWpf&O8O0*T<7j+O4}_ zBx_wR1^B}yF4Z-QS>Ns#%$8SVEP;W!;0?%zh`)#2MyJ#_c4#Iki7kn%n7Cw^vfzaEnP>`gXIq?%Wc=rtuygP(C zR!V3TYslU3K@K@b#LC3luu+tSeKr~pp7|{D&QNk&bL~yVa0s=^3Pp*zZgabps7nuS zdm0uEWK{j#MdY5SJ$bq<04UAh6$oTW4&7KS+W2GdDi{B3?tDH@qxm?n$@eHEJnmzoW=l$`!$sfX!MdyY7*JM=Bw+x;2CLQ>o;~|KlKp z+5am$_#S0LS@HUWW{PbdTwlVNC_{(A+43`lH@xwZuP^R@3Ah=c^IXS7n2k;Lvr+dO zEsCZ)24I<~ z2}){!PN=L8d)lf*>56Nj@0!H?Xiq*9@olI2UeUO9@%h+-fnzLw>Ib=1N?JzXwOreY zr8O$DQmeQ6h9z5FHrX!v=PGGwmG{e_LIQN}5uLZ9R*5k0s44P%A`3s|*xMBhR;fC} zRz3VJl4Hg(8=k{41K@e(7i8a;}YI5VuGBg59_eSj;#^iy02Mns-zOVb7nJDT-HL`4WOn zzqBIJU5sfe{m*V)ABWA zf8Hh9#kzGu25plB_=khsddb;MCsn7nJ5QT3zyvS$z%E<>k3p_6IwHjhsX@&#unpH} zv@%)0kyb7G*0kEL;0?e{kg{upb6^8Um^yZ;7BzLch0n#c%g25>%&yO+!=hqyY5^|M znD!A7Ila7~d>3F``AT8w?DL~%odv}m(2UIh>WtCuMzVGrcYDi4cBm0CvqOdgnQxw| z(6}bK%M#2#ry$m5ELKW@QmbI(z)`#;l!A%}(YlGq1Qu#Bkt&$T>yL&!H=fRKD zEd;d|Z_gh!&j$N0og_OXx3%iv*oO_*z`XHx|Hgkea*3IrpzjvOjsjUZs7`ejsXjLN! zDz{Pv{I|jY!G9uq9^}3M)9faxUpjua#Rq-Eh~UkhMCL`+`E=mz0sXg5ywW9ii|VAt zcV`@vHa9r@AJ?nA(7Ilsha>Mkj-;C0p=}bQ?&R*%C>^L>JsM8$eZ#AdhA|iISt#rX z?ib14uNEj^XBanNPFRp*A8@a2~&yr}U7+=JLy8nS@W)ws5fXmTj6jhpFsz@?A zT&f=sX;$*;k(5qr27~1WADass;a`-FK6h?KDMC=zMK_^2mx#0XLY{t&8`p~?1k4yf z_tpRiS92<}xW11nH%E*g`v&aXFBO9-Q*hl{8}y4301QPd5)b0}Zd-9gZ7W>@1?}CI zkdkSw4w&~YPcARWf~9+|60>!x!1ud@_h*yyr{Z=zr!fA3qnfs|dUK5*GT-XiVr%Q_ zNR;&xZdD};9sjFLY?&kfVt*DP(L1yD=4nLdBTI$y zsf-~X4%@_k6kET_3%=}@>Ej03oRBgV{^10uLI;2*gfe0u|A-IR(1Oq>pt+=NFDgc& z)nk1Wx$n^F+X>ply-5zH*_d9C6LgH)EB1tLCWXwSHw*X@fZpcc41b>k{#l8RlKJ`I zHUeg6uq#w^-Qz*KbiFRVsqeW$t5xKML753~gvW4>YDI>#Klr4B+3EtwLvJ9;y9&gOD;fFn%FO2%=ce9rZ1UeeHvUrnM2_mmEt33Pt40osdJS{fwZgw|-=UWyHhEaaTCLMYyUdhAE zvHE1g!m9O=?sdDJkadof`qKKM-{pxU3QQKZQm@-Rzpc4=^=v<0RPpTa%eUB1o|GF=jY6l3LV_A9K{yChig~ zy&_hYMg9!{>vy)+$)Lk*S&7U8O$kdpNdpq5eO<3R zNPFy%js8n7Bw#93gq;G1ca~pNM{Z4|^nZH7s7iHZw)g#vdQOx|$UOxZELq&09ly{& z|NIdt4a{&>x0;f<%Fd)GQ71up{hB7A!lyXUfHR8Ypr3!nPr#`9bTOTn+6>t5d2C?;}>kvvmy*=~+HHWoCF-DP3EgdEUtyz`Ii4%pl0v z;xfg#!IOUH$E42sbRPDCha}kL>D3DMYU{_^8>gJANdV8#la(zWw2IZP?x-i|!207( zm5DmLxzv&xAS>zt=~9`tznozF#|jm6_t7bTMa{>~f$nUb5ROcBNksu5qenmpV`Yg4 z2d&c@xJ+e0-!vp9*;9-c1)n3G6p{QF-X-g$A`yCa$mAD+0_hh+bDklLsPN4vF2l=w7@N8 zahAuQQxdr5`^5;XZy$$629K&Jo;a4Iy51aAw-LmC+R)8O7w@QHnE6t5gkTtObNN)! z@nXCa7rDxV`8uDw*s)sJOzdxWxF8J1`jt~8E4q2a4PB4Fm0IHEMEDjGCLI>WmVy^o zj;6Zp%5>N#m1dR2#P0N_x={9BW}U2^z*dcZg_#wOuk0(t?R5cE5Hzf&J+pg$-Ia&& zZdqwmV9t%^O%i(dCo2b6k=4N#vKHVbbYFxO`zQ~6hbGNvmWBko_hYsqH9W49PrKNc z16%Vm5EZmnnJJrCF6K-Je9V_#l)}^I^Fd_ZADp;ey-^7hq>Tn1A{*9*%~e>-rCN;a zLJjiAY4#cZ#Xp2zm6})FNeqHGCoB%wv^h*kg1ZUQp1`ai_68+H`+p*?_*u%6ys!<; zOM!)b!TW(30wH`XmUY2{+e$Yum!G>S^)&2X)$ta|%nGoESLmI2XhKUB1lCQz1^B)T zEZ!mkb@lAA%Zh3ujs}ho21%NCCC;jH3Xh)rzCY)GQQA)#-(2kjN;@iDbR$TJZ*vaY zK?T}*G$x>n_nhqEs-P=@lh8(JTqZxoi4%jkf1wi>%U~3Z(+=OPC(-{c(kl-^yRCw zs1G_S20MQFA7}*MrHiXWk!ku0l)JeMLL)Ux)(LU*EJ9J_9x3Kd*%&_Kj_kG}XCris zYWDjHP{O@2U|H*o*YBWq<)+`V=Je8*@7tJ}tz3SKOq@rWe4vBf1WUyKp?E7-X-Rx{ zf-cJs!gK&+?qCS#H-pUXbHQuggq(-D!B&N17`>+UE>&y+5S{O zXeHTt6Qy&Zz}{WNL&S?EaQJH9>5*T=G4|qU6924=BHce%G;wXC7--b(Sw+vMO1wK)Z6;92|YNig^7>*2P&w+xzp zN1-3b*h0i!zV^WqDh$s2yuD7K867e6+rR&)=GfJqBzY|i)*&nqJGFL@{cCL&F}->R zSKAib2HK{GlNHV{($;S;70TiyD$6C}?{bbiC-?fAa=-qZRs9d6K+O96gw8_tr!GxZ z7S}UQ@7fW(zB};1k<+jx-GSorgUHBxEa@-V+BB`G^;}5TM~HmXQTI|(9fHpvmq)Qt z=~48vL{2Kb+MBYpn>s=JmLYv4mnH(IGY;&`53|LVpvYl!U`Sux(nQ0ixu@N=*Q>{w zNz}fzi79a&S;Y?-i*awf>b=Y#f#R5YUCl4W_xaVMNM=W6yt_X4r^{ob27A}p|GEb( zGi!IX*(d>Y60*5KUS6JBxXi=lROM&hm=JShOlENIA5{31rmN)IHIky`&RdOb)-lg$ ztmQ<69GT))RSBBe$Ft(>8%o|YT*R=9fJC>*wHQ2V>|F4S_Ic66>t7Wf=2R@vyyllyGaq5q>H*2aqv1QT55Zb};%d z_^B(R$~B#su?|4}|M>dqxG1}=Z9z~ZrID174(SFZrMnxXyBS~x=>`EQDe02Vp}U3- z=^VOY==|`!=lRZio_PP9-;cR(X0Nrb>sqn*rsNR(9QvPk|LKX;AHN`KypyK=(Pn3g z@he+E?3Y7rXG(3$)1U-8AU;s}O3{)L-cNo#yTmbO_L<++hTVckFztHVi!A;*YAL2f z)k*)4+}93}Pmu+6HpMUK!_6FC1M&yl?j$U!F$Gdw#A9Sqy{D$kOj(t<3bk2txMEb7Y>v09b`A+166P%@TCm8*B*Qv z^gMWdBqPtpx652`muL!C`W~W`61B^1TO#f_?L00&wI$z$4X3PbqZ)f<@q(pE| zL4O$ezZSZj^|i;ol4LNY>CwFIp+fuagw}hu!8fuO&O3K`O^T3>_+m)sThoyE)s(|!0W&%UGfWBti}{&=z>IeD93@howq{HiE_RiXw`CXI8|tJ>E#-Uve9 zgLYNEQjJIm2&}&9E-34|LS+b(k!`2*4z2z!##xMc)dLopJZp@OYWsD#4CSW z&7)M~*P-z37c*x%?m%@Q3l}vk5hblF+@-qVSO`?*dvo2 zq+v|y!dya|CB*R+KNo{iA0IfrBfJm#jy`=);03(6dst&NL)bI=aI~+POz1i6>FSC- z48V8bS8;C$D_420LKCByhDn}<%k86?7)IyhV(>o%6op|m@sPP@*X0X~0j`6*anrkfizXR;gUkLkPP%%{oIu9>DYPpmx z#q%7Cf4nGpWpdaC;*z`8>EwIS80Yq@uVj)g5=6%lX@|G3yGYIEToM$BiV_-~igy&< zR$H$)jLG8nYb+2{-B70rIbe9KpSlQLeM6HNhD}$c*c3Hrr7O_H`S9qG>0`r!sPOq+ zKGE+rCeCQ#G`tmwV3Afwf&xsx?;ESa?BERJ!a}Jq8KOQa#SK|~R~QRbcrP**IVWZy z(Pgqzz2mPilj|79mL8Q8J~6&x7%Svx`+8J<&zS zn^APd|Kw9?xs*w?S$`TQhq>6v7dao~UtAP8uVQc{3CDtyRb_XrbBd6Y8$!{@qN(!h zt)kEwT`;8^Z3b^t8DjD?Ekv8@f5;CSOJ}5M44el32D|@d3tvwqG5)nrParS{u zW2rMBYA*J%G#)tmfAI0_*V_!WH)~rXNFLwS=IchoOC=(!>M)!!uZG-WZK)d$%PI>A zrnhq+ZXFhR!9ZL5j!m{66?Z+{+V8vQ7mFJ5!7w|2dpogzd(QvD;D7&HM1E}pCACYN z-_RV(M{S%P{Y*E#g@?LP=U8Bh>hsTd_aP5`4E@;Zzx>Ggyo+f{+ooa*xMx;D)cHa! zrGb%%_fWT)i)+VO3vEM1BPFxXBta!FCgl5NPau=9^3=@r3OU#JUv5;&aUCR^^M(rz zsy;lkC6^zdtW^uLJ9bpCwFpP`mQ+VP{y0&mgK1 zs6N!uWS98eJVBDaXN}Ez{m1XC?CjL$0ySIiRrNmqbB%F1%#4N2T<* zxUc21PoY7Ci0zE23$2wTzr=z%nd_&hLGO0GUhClx$KfpHLIU?infuG)24|<+@x!Up z&&9#^oN8g!z|F{s)kO`tJ**&kbF4vTGd6SoKY8B2-B7a!X{Jf!QJ{C+KM+xa5?QDm ziJxV()<1*#bYXZT)TL(<#ouZ;ek*-bfXV#07D6j9O$BRVCK>p72A7tgz#i@oa~dKl z?kil*SkH5;t|P)&YmtNN4W~4iaI4Ufef~V`gsKRN6D{n5D$@zMP3vHLECib+c=rla zSjgf>b$_cae}P4Xi()Zq>V(^EoU;9c+zpkHW(1QSWRs(&#e)^^@MTP3Eb$pEXUMQm zgS4vK?wT!itB}Ju0(4wHTpOrH9BYZgr^M^l$wxSqoacCb9n(+}Gebf3{jkJlivIZp zrf~2WtqUyuc3*cC%F-crPaMk8pH1#z2f>BoXP>_eYpo-WAKYS}y-k20g2Kio>pdP{ zpI_EoHsUM)SE#}vc((eTAs-Zvd?5<^d;Q=GmNe9@h?ms05!ZOQE#DNriqp7@?0d;8 zfng=}j+4I7OPZrFx5wiCGXc@TktcO&Y7KSs9qas0q>;s^`;w0Q=BI=4b(@%f#-u-J z+Offs?4+dsw@msEaxl6h*ytObEp(2zTTG3=8Td@uj`c&pbsfboE9bMClKwa8)^Q4n z^|<=7?RL|5@mx0L_CL{9Z{;mUvYA$BF)N81XGP#AV~-@hC>f7qw^W2I7VJG&VEv#R zDiMt5@S-e%Xu+^*El%^NF+3W%U`)|m8;V4L<1FhqoJ8n=32J%zBXw|qKPP6&n(JIe2hFY70rA!zBLRk!rTZNy+ewfVzc!wqut9| zWZ5|)j6A{-L23-q#(i;ekjv7ga_bSZ1prHCAQMYF6%|?gk zIPNCu+;YnN$xK=IRgLh2*rM8uq10&_p@SAH5wS_CKad+`bv>=2TfI)c41-3$fombc zr5^LYaQ}aQ7<>f}DP6ImnDiE6RI;>i{Hkev^63ogRikv!f1wnKmLuLss_n2`tB3+4C}}k%)drNakmiA^j#ECv(Vjwclfni_b-- zQN*XFzOA6{imQ)fc>^VfElgnj+kHi1{AX|JUEZZQoTVcb@2pIngrM;+#X5hZBpnWR zlVLlEO>}9JtvVcWROX4M(bGHnDqeUS`RWQV))T(S>5JlDl8~s2oK85G;>ZT>JxE3A z!x^wzv2|Pp(0ms&b*cSxOwD{onp}qCk|$hDI$`J(2s{ea5Z}G9zWh?phR7aD`XZ^d z%}rPFKQZxN)arsspk}i%2Nc&xsh+Wl<$X5zF5>nc?>X@#gao`162ZY3Z#H#ErtgCX zgsc7Ln9;CTRNk$M|D{g1g86RuLa111cAfS1CmkjHZ*2bG_WGX>ZB8EzXK{2hlRk#a zeO~&6Vjf^z5+!Gm*#_5y8|dNqNjw{P3axT>B&Ej^w6As$(f(=#;Yjd#o3!7fWfLMh zQPVzR2fH$3%GNXzVq#p|(1U%=N;^L_%(0msg2R%XZ4WMW91oz>Zx7(X6 zUlUWS#Phu2t%qyaLjffY=}&%Aex)g6nwsN80j`yNlQ?FQaF^?(oR^E;>g(Z29sdMK1-pzrzCDB?)_N@h-a&VI}nAMu!AZ4`L1{xaF*#bU$=js#hr zSh>EugTM}QFECKHnm#Wo_Y8`WGHZpM%8hK5Ju!V}{9Ze8r$g1_N*w(-oOsfd{0I#W zV=R$`A!2c%BhgOjM`}}-!?-C^xOvgVcg`ShmvvUvom{KVjRL0G{2(iaL<1W!Hd567 z5tM8NTx!r+qBKCZ)w4Gh5-_&vYHp z+8wXCukinr7iuCbU8bvaw%jf`ODGhIjNztRZMd2E+fX15l3dv@cG4N5!?)_pm-Tmg z%8f*z5#C02rB^}*%BRg1$)2v|2JxjjiV8mZfeSt5+9af7jsBjrpHkO=*P0bDX7^Ha zJ-q9cCW7u@B^cX1p7}S=!a> zp>IdQh76D7Xgnpo*P%QO3)i1W3JNmT#Gfwc?Z(!13{YN+6Q8nJTt%g;iz18OqVc;` zc+OA~?sibS9WwMegK+NYBKGHnNcX7)bi;7`51#TCxE;JoW zuDQ^+G)$_&Hv6f0)O4Uyn}$qtP+jSY4+6~J99KW;5Cyo@K4_M53FTSG{)3JedrN8P zjGVniQdwJf+VDB0%K?-`En`pXdN0irJy;3oh&S41m*wfR;I8&K!$n8HGpC`yNosOl z!n^Bwd{dYleCki25LnIiX@de`Do{*O@tyV6LS`7_YN&xAOMY%2}J}oFvhra=#{ewuea?0Xiv3mQcF*6VFo1amCMQs1)x*A@kjb+HC=vMfl-KE0P}f z&bMN$NS8reT%wRuB~@I55ZeWUj2-bc%kKK|U=MLwAU)2StRz^7NqUOo&QpN5$iol2 zsh1^y__JL!hM5WnD{^V;&)x-nXFtUw5g4-)oYVfC zD@phB!-KvHq8Mc@0m59Z7A1_CyC^9$RN%u|jYS(xdF&8SGiuHV7$~o*c0aD=Vh@ei z@5Hp43%j9fIB70RkU0#yFn!qV*%*y5A#z%77#wykt}ID%N>VZ~4wn|Q?kZZi^X>`0~T24ITzWp8a|1KT* zBN?K%`(%)+hLI%M5v<=0`U4c05dmRcV-89Kt%s~D9VC<#xHQ9Y2yod(wf4XDl0OWyfK?G!o%J6lTWweoWo04Or+b2VcWOhQe{K@7DbG0{S+$f`H4y{fsjaKZSA za2V0g2%%F{3?X`%xu9?E0C6T#-GmcsplhPOKq4qre784q;LXDj;+kQVV-JmJx1(tP z`jWv`uqgf_mF#PKkCATm(H({cC-6<%Y}^Zr=d`dASb{TVx0*7N881q=0X?DrLeHw( z4TKi&wRfyp4)ta}frNnUKihs(Vw1+BtaA|z8l)QNqX-Fh;2oO`dk zj|!k4I)UrG{8k^=zP~snT)G!{^XnrAS&Ag}yFZbyA@AF-ExI}FQTIY|9NcQzDOF}{ zZ%Zq6ul$S0---Ucm>a}|Pr^PX%Lvvrw#&S9UucgaS0GYb60TlNJ)(70&p&Kn`+3+7 zbxkZo!7rUH*kLDlGVkAVegZDMOv?(g_$&Q0U&_5WjbuD=HMWnr;;2alVNVB8R=FtO z`~VG51Q&35bksB3aMr3IBr;(|TH3~W1z#4QqUsCS@!ExNIYwr!m?JAxhpA>b1b&R? z?KD7yrnNS|P(6L97_O>mMpuDb0qwZ5f}s#z=J{ZTOB(RUXrP93hm9;Q%pnond} zls+JSAhKecNm_2Mgt;XL9G`+YO}xGSXDX7WDNS*tb37 zJ{+_N+(0*pXKI;I^i6zKEEMwDnY(9W8bJlC(6xtkpep^6#{Z$muuXmO4$R>wM;R$c z=w|o1DA2=mX@xjcfxr07fsZPfRGRiP@KhvF?yuheI>dm)>;~qzFNfcrm69k9T*SeANt2U__Lm|^w>YR^(Ene&vJXENQ`)bg?2jDLuukD(z=@-cwE zUo)~qj3SDSCwg#332{_d%*1&8V$UZnt`Wn0*`tN017^hC`_x*;`e`Ll?xbQfpv-Lh z0zK)ru%N(d5U1Da!;jBLkpWels9Ybx?IVDX4Fh#yL{Q5L+_2KMxU9UKD`asE^^o|J zQ5<7ZOguq+hX~H}^=G?Y%nd~uy6fE>6SNI}AjVQhUN&`~K7puW4B?!tddt!QF=9dU zz2FqL1&S~AJdr>#dS-pAJ7vkrXi)0QZsE*1=&4Ns)0-NpwJYzYb7;!aw1!m|-cVrW2wDt@d$NEU4T&7E&-W z1|}(xpKFi4%Orq*kYy$vBiRtKi7G)unC{N2?dZg>?V`lXQCcpf-;p`!I~WagTjtR_ zoCL<#mY^b%(6*eSDX~`LiboJzd+?3#LsI4H(w~cCzUFvY;9_N?=0s8;X@E!7Y&OVP z8qKbv!36W;ACb$}iiyY3*?Bs^FjSwm7K^l7qmS;8&b}`C5EBEuLSSvP0in^|puxSy zF8!fV8y~F4Snq3nZXHSRs>_je7p!I?(o%%)8XruTv-up&TCzn(6`O_AQ;*-DvM0=O zsqNscn4Y}Cfx&3CZRy;GCWFS?`5fWaP;%GT$`rm+c5*T)EB6xL?a45Pdc>k@AJ zuR@3)zr3-@^0Snr5s6(kO9d?C6(8|(WT#8>lBwI6Y&RWd%-Kzhr-qQMdm1 zR||gl&3T$(NQO~uJ`v14!MuT2GA`sKV_m7@wW1AuPF+YL9}zjJ+OOqqXN^p@ z$%xcGn0@o?Vghiotm!Z}vCCOtI zuXj4CLTRf}oNXg6+)A&GHEeK#C!)QW6g$yN=!fb2IacipmtRT>Z;tx#sNfgZ7DHCa zbX>^pdv$YUw2QK;M^z{R{aXzrWMmq7d2}IN5<*e0t1t4t87xN2#JX~wG3OQvOG6zP z(uB;~^fKo>FBTksW~!5UtqX#9GMur4M2LvENM?;3B!lPN7u4R!7kmBXUaJaM{+Icjp{@HRd{wQ`@0duVvjP7z zi-pFb)Wjp4TPg-M-C@IX(U@_hQ55>&z4wuSfjx2dx|_&WzhzypTr=9rV#uOO5F&CA z{#~IDCet@R2D0o{3~0)HH&NsbYqh|>_XmeQnnk@<*}3}!w*OxNvY|%^5;k{X_hUXX z(bJ{<7oQBGz@JZV`@RlT9wSyv*KvI4;Hm@dME=7Hry?1aw)uQrBA{&3{dA|d08)^b z^*NJnH87k8_j^#3P~{BuwYGQi8!t{|gu-QodiopfeG zU$HTiR=Nttoj{`_N~9|_0z$lTK3N8WE!Md#6PtSv8MiIZBO&;u7fSWz6_-5WK)c|6 z2yPtJ7<8a_Nfw6WFlP| zgVLd`@THJ+I`i8ns?K|arfi0^#iFDS1fsFcv$^H|>;nIaHVYLKJ{(@q=(VJc>V{pp z83wAHf76f1-m#vCzv4}{RON7i`-(D1Ur{)AhS8Uqt9O4N9|!n+%EJ^LE7@p&=_0My zmui2TM)Rb#4NoY)mTeKaGaj6qLM6C9bNyiK9_U*)5jSkRSX1B-c>klZcMrgtg?nuUlyqy*y`;nDx~uMN(KU)vj2%9~-M^XVy z8^bm?xjFMyi!MIA0RYyWB}IrEd|q`>ug=fBb!)K$xg}xP`iT2FQxwX0e^vub6}=#3 zhtF7}0(`3u_VE`#}I?Olu zi9g>PAf5U2z9AWEVTt*2*T-!9Z4 zP2!=?N2E-BH(W!x@u)!*r{{Lm#r}LcbAa%oIptbJ!v(8mP8`zdd01QPZb@d_yXQ?t zVp_%v|7?XOEY5s%t7f@Hn}?xdfCtz+C?JY5za7Ehqp}ZleU#|M*J*#{vdBF0OPe$# zpGk2Mj)ZF1ozA<~jk%bP$L83GsY#oeblD@^@>5S|aMUpNz$s6qu=Sgk^0dzkPq)(K zhQ(hIZH)J9nDqPq+~}jdq|<-+g_*+Y+T~=A|pSSY^KFELz@A zMxty+v=&wSv|y@85sk5`1K97qGYCI%mU7Y%QoPUE=l6KQwKmF@y>pSOu5Dvw%El8s zkqkGR8Zw(=Z$Qfb$zGbwNQ~Eh48)%p>kkZmSWZ|ig275oJOLVjx#uDFLPzldg{y?p z^WCigCZ!T#sj=)I?cnNt^hTjE0ut^b})e0d4gR{Sm3+8ylBG2l~|3y4LcB z(teZM@R6lwh((s}HCuAZdGGB%ZYTW%j~qWqE5k0?p1TbL#L^`CO$UYCUl2n(8u`ZH z#Ql1<1@rL2sHM8!gGDW74V3wR+ba0isF5M`Z8;-y>9couIF~FBT{uZ)Th)bpDUc)x;=HO= zsMPGR_7Z*XE}P<|fpQ-S<)GDWMtv~4n~i+D)Ii8hO0&epH+6T24xnju%uxNA{uI-56n4NIgN^+=&<=bQQ?pqTbDWzlcZh< zbpvu}$+Oi9y@XLgc5+amV1MX)Muyvg$)NRI^!X=mWRykd(PQsDzb&Ai>O41A*1JUG z+vQ^?^2t4Fx%fJw1gOs-*Ez~SBRK^Zo+b|wY>t~DMU!9G&(y-$&fuaka zf<+}zKIuPCthW<&zJQRlz&7Pt>Zm2wmk?Kx_d=<5Ka%SdSawpoo0_CX(P+$-%l(sr zk~B12nrU=x=-A?nEw?lT8K=sduwgdBfud(T=><0A8TgHuwW@@gp0qOw?_b3Fe=w5> z!`D>B0r6AC+e*F9TB5d9hS1F&8zUuFl<7u`0*#~&G^XJ}b#QzHSNT}f@^!48VTe|; zmpAu|BOPE<<-)Cw_FOG+*sCca%K+LF$qn;IfxBD%<;ZR(OydW0#74Q zgK+IW72_YBf5_>La^C6FCu=VG(y;g>GA1?w0^Ax|tX{QdKO*MH4|+bZdwxDHD5?LBaF zkI8nk&`+yqI8QFU+c652`nb^S+#J_Oo$$XIk!Y7fG^J# zC^};bH{U=**G`yTq`OV|pb7>H&C!U;yEP4E>?JitvAXD^lF@WJPc|5J?ePo0_F2b^ zQ)&w1mPl^h+HlEfO&=b|Z_rti3tC@lC9nXXf4fdFVVEDa1k@45dI{4#p&<&sZ|0sO zgZ;Ie81zO5xaD}C6nc^V@V~V~i`MJT* zdt)AU#rynTwAcO9(h2Wd3+J&B4m^h}gS6WygT0A`sf?``R9;_ zfuaeX49zNP3d?#+YFcJJ4bWSMtU4$`@a(yvb=G?;L9iM6FLM*#{J};v)*~$&oHDSK z9wbN62DcR(KlA5~poq~osp|JkMw{-Pf*nWrFrv_45A&)dAE(t&UMoSl_; zU8mKIiVI5*8%tBsw-#$-HuZwAa#H^uq2I!by=82CVm?^^*0v3Wjnn<%8$_LXe~-DuOvtXcEJc&w$by7_-LpOvCe(1u%2!20?JLPrccDob3`|3SD!_z8FwsHLe(66wI?U}1kCzIhw zbH;CZCv`4>p-fSJ_WIKiGl}+EL!{OA{Uf#`n{-Q$AbEdkhy0;OjH>UZZ?eGP`u9%D z4#^6e-Wd^NR z{!_mLegfCILal|~jJYW|@u-?@!30(qRmN_givH-d_(Eu|2pSLn6ij~~X1=p;%TZBE zpDc8`^WMVqWFUv#*^C|boK2^3_0xf$+B746Q9`%^|EcCHb}6&mlHNCRwnpl@Wt;_k zcI~^eQ1ok9c6dcc{@xp*pbr7r+!`aDbl;j5mG>qznzlFjM4KQlEzMWwf8@DcT}fD@ zT@H7(kj$4)FPLazWB{s8lABple~t14t=n$K?bf)hKe^(}8Pd%CyDe61P^#U<-14bc z`ocbapj0W{s3lZGo`OAxJCsQ`VuI*&IT4~e5On&TBSY$ZlWhxpHWk&n-n^*X<*t>2 za(Je_ZzuiKHPAGivLgyxHY6qT(7)W!?%Cb5@0CbLVkAM>Uy40^zZithiT}JirdVHc z&R4vQD7V_HFr+!JaFH%}+~IKEH7Q9mE~6sXEc<}q;pe{Vz30vp zHRITOu&(3A_oq%KfG)nA+8sEBBfj^gcJqhZFG5)#UC9wnpVU{k{}5uPAz$RxXNY@5 z-T>2ilLfL(4ta1N9OmOm{88)-$mGE`C4Kn62>3&l|IvJ=er;@w^&K%abY;m3-g3rp zX|py}HAH0A3muc0599!Yu309E8rJ#L?c;#eeeX+C%Ss_1K&ECb?1XCFp(04s ziJN%($TR167Hp_7>~g=)^0W1tyAoT`Dak7n!I&R2JIzvhy-F zRs$udrO9QFrXaYSCe&|sBp!z&hq^No0(+6tYhU@a6U9IILCX`|~28hx!`&)U8B zE{1V}V%cG;3Xmeth@F}X6kxQF_-}6e%|-tmK5bZH&z#|g1YT^SdIx3McO^OZIg{TL z_IL7_12^OPsLvXY%oxsg)Jq^b`P0Eqghyl-MD~BQJW$|$O|>0NXQID<-4o`E46GvJ zS>>!Qs1^>6WFXP+YU|DTh z{N=UCoe*FzTmVzE327#UwfS9&MDxl!12UT?DPBG9Ajfk1!g}s^#ke3!r%;&s1627u zxiLu8#xQ!BTO~*hUdc+D6)P-B!dCPBq#gB6ubPXaEnb#F4Sk7tlI>tH-bZpc&Lnl6 z=sceAg;Il}m9RYgURFMzONoCN)qCwL7yd=T_sl%zX*Yv`b5r$lX98REY1E>6AXDD^ z5oLROu(94%{L>wcrQ8|I$=0oBl7Di7KlUp4ZhUF0WUAklH;Ck4h!pS75`+NCy34mK z?dctaPJ>1qQH**?a_fH;Uw%Qob_YlGt0VRXS|&sf^di`~rn>KLG6~Bc-lK#jm~8Xw zo3?H(=5GOi0J%(k=FT8PUBKAtuwvXB8z5 zj?zgfhP@MSTz71l^sWK5`t?Hjn6oWRc|?0)$(dTpmrc4W0RP}4rKb66Pv)mGR5%%2 zV`bi+^@IhA_v!7}LDt9K;jdEDyr!7}dj(i3A!Rk`ui|7hjw*^%&)9(Jx1VPTOoj=; z@f`2J+#&vI@y{D>P>O2z9CXLmIK!JZINud;dasZx92X|cq>ZiHsX8EYYy3T-^mbeM zDqzxBQ%0+a!zR`%yRBV3=XVVH1_rbV-R@%_dbQpL@0B)lrMmvA>o}-eZuvTH!u;P+ zYIsfl1&okJOh~}DNip#1D_o5nxsYk1nh^`2L#;6lbl>36gLX=`YI9}_=U+2cVff)M z0se2>x?pN1AZh>{HSoVmW6|t1Oz6cYuu2tbs&ckxWd=T(xI25pOCkktG^-BPAcg z9lAut2W8j3BkVFdArp=If`m%()n2)o9t3X5boJNX^3>93i5I*Y(3+TbI1&y|d!< z7YT|F*ae&&y_w)BwKI`u5nvgq;{^3@>8NaUd|d}n{eC5+LE_sP z#c>zSgQLfxV{afGILf$jI}4=~CH?Wvp%ZQTa+k$@)otDuKQB++&9KdNr(v&juaE96 zdM zPk_>^w2|S6KCc;{@Kl6Ze{o%4kKC z&tHVw0Z?tJXIb=;%q=mGw3a3^p4=gaazTxT*0ORX`*Fiy3u-IaC%0T9klR$2bDi4+ zcbz9G@A5ii`nn#WXDRWkIJjkby+QGW0BDEl&)XN;r}m!Xp5 za!~g#d;=$`tNoq);0c9CS^Cj`?LmuPy$10j64l>$++!4Y$0&V{d=f8i0A*PDBuypLyA@g@F>y9{8vGY?_x`+spFy=_INxJ0Z?t=9^XxiE`9Q(NI*JmTmx*o*k9?1LYdR*!`n}fLrscRSS?2jpr zJi?#_eh-eIZFdrT|23bNECBoGQr6s26xR7V%$4w@dT+kz_0EkoIWJ%qFRh)}bk``a z-FfhcznnYf7t`xa`{v2)d`rHx@mqS6zg{*;_wdG;(?hPKJ@aR$hqvaBY^Dyzo{p9a z2}7HH`R#hfOtp+~T-P^?Y<5jeOfcSiA4j}SLu#vAViGgIV4JQCGepzw1>9#YvK7Eb z8q2i?M0E_JV=3cz45+xukE?lrHsB5Q)pslaOP;HkVAVh}V0L?)saq@L za23!?LY98j>q9Khe?Ym)VDJz|Y)_XC{T2Q!9c$dKZW-jopgnq*cIc9SyuT%&fe*Po zH&X4m-LFz;0}ZnF24FNj-mmH`-)z#Jo6ZNrQwT8qTy&eW+)@|Qf6a4c2$nb(SVUg2 zc{g409Nk0n>Sp>eP7~7?*;fvLCUiF1S)?ny>5Jk0Va6z!q(e2irh;68Z-)!=3g|9sAS-nMQSAi(#>roD24*GbE~U!4xeTOTkg21j_d@&`Kh9t z({;5G@ZjW6E0wbBvgy1^7JIC(O9PF#cI!JNLp30m*Sdpj5w2JZX6!v!y|XhDLBCU{ z@Xb-tmbWp*0>lBaiL1%@V%j98F54j(;F3>QnWU07IN9c<{ zNJyDaZZa3Z%i<`UC+uP^Xk_%2s70M!bYG@ydWf_~^*R7gM@Y89h8qLoyFZZZvB-cm^^3Yos!0mGpoT>D^^q@ zkTPc#eg6}L#^8a8f*>v&458DQ;GoCL#|PI>ruyr&ZJzrk(a5()tv(*z4Em(Z@%idb ze{9((|B2bw1V=3tCYR69c6o+t#Wky#l6SaHDRn~>w|lN*zLVmnhwG-ZD7P6mU5aA9 zMEiIxSI0n9_16tVPq6wg7cZB>)TBn#$Tlyq!PImlUW-t#9bmGk!Pd9TlA}3ah-Ty$ z3AU@;rUicyaINoX8Xc}T#!2Mw?kM<{!J%A~mEk%#a}6f+zm<8`B{o2;Y@pD2Es5|Y@kSSx-kUb7@jv}CIj=Dmpw`*o>%8cyB|CT0QtYer!c-Z#?=ef>Zm zzp9U$vS*8(-hxTjZbx5==jqcc{l@=;xH8mZb6Xof>tY&foKEz)1b_|N--++ov;RCk`17#bo zZ&kxf#PS}0ZcDyV^2=-DmlGcA;r+G^QedTVPE_EcnXH=2{Ztl#(gk6BULyl zP$_;G#T(s)rj>*eS%Tc5%xjUq>3&kB^JyqbP})l(R=|wk`+ouemuZ!&NrO)fy+0CfcAfi&T!e05`V>~>^ zKm0p(rxt056DpLb>MKx61s?Rh4oVO!Sa=?I@MQUE|COWut`kvgJ+oz!)H5lvBJvGq&rmFNm9m%J%?w!mnysVoWU1a)xWw&&o zx!#$Ye9Y8EMdSPTdU`4W@_GWMi^+k}O}j{}z;@FO3-sjS`YiiI3?&1^y==GU*}P3C z@##d2=m1I25?^C-vewVnDyP3%>2_mNyStxdIojl>Rl>7_L~kVQ_vk0?dO zlAx??Zj~t;@ND3zN!AbpNmHnf#O4>k$S++!WwtNug;;7sHcF4Yi>EL6m&b(~Phk@| z*KT*a0Hg4m4a3^Sj^4m~EL2wSOW63fYLZBWnt-q*t}gkrELzf&JCR18OIWcNX@>&1 z25Nt;TvwJBrO@?b9kO6Je+qoi-2{D&t{a;^Eme3zZ)W)WX)C~%&Op6TSF6h+(t{Yo zPK?Og1D1llH-RaqMZd)1!_94Ac(g5#rlj{wWRU?O&5g&3!^K!(5fV0bajM8Bwrk>U zW3Z<6NEQKvq93b~h#0}t3d|~|-=DoLrzdm} zt%%=1E_ynL1Eu6^N{=6WseuT;4h}``(nAy+qRHzS<8Y=927~jWcH`oV`~CdYy~pbe zIE5APMT2$czp~ZeYUP+R3dw7~!o2r(HJA*Ox#76uI8?#AX+pAnO?;(7k_7h9QI5+vMzJMo<5+wE46&9t7oo(GgjU!(Esi2Bof zx!@5%VfG03V#&+?x;_v?88EL=I;-H*!``v{xVUV(Dp2!qK9TWs+?RLNZ}E2cY+joZDuq^-nVt>yFr_)t-i3>gobeOHO@DbACKx*Ueqi-lTnV zgm6{sw4D9Oj^I%}LHnxAStBEeM6(*_X!Dk4#_@mH&bK@K!{vjYm)g>p!J#X8xBzxn z_|E`Oa+$)6JN!#0M~g4rUY{D`cvvRC|M;b&T+KkbM3@{JYaY&hMhH7;tlrwkx%SLx z_;lUanM660?j5JT@7yAqB2e8Ll6D#z#I$@PLjaJB)4{{P7M)q&0mXu>WJAjKB>9-_ zH7@I!&OzDNRg`x(hg+u1^|65u$}Xl`w0QUCjdK~O1_*>I4$nyHIzcW`c$uVi-F4|> zWnoT^`>FOYzeMF<%<>Xc{ki=y} zkhIrditcKw9L3;iLd2&XfS7ze3SB+P{V|aB zR>o%ZV}(07>}q?h&C zot9+0Obc%FCAl8M^N+W!t*>SzZG%bG@e4m*RzjF3ZU<=jFa8*reA-=|gwpo2tI6J( zxWFZtuek28f$wJ*f^>yZ`fhw;DcWiDUw01tkukJUd@$_C*X4w1?EF8z&cZ7Sw(a%? zh_pzHfYKe(HK>TBQqn2i-7tVi2na}n#L%76IrPxoJ#@~%5CaTx#^-szwaz-B%Jr2^h;akvc7RLj`%eeOvhjtkAZ(&mpp*4>zB5KvXBC{ z2=uJ8A8N6f`fBvghIuf-Dyi8TI`7T7c2^0(0Dh^E4 zvfcVK^F(NrVj#_C>hd{UV(;^Qi!%QaO>~`Az%>EkLe!UJc_q|IAm;*=T8rotl}#yX*R;NC-SzvqtcnIlH^Qjac`+8+x)=g z5>fe1k!nA0S;2_8UH~nxue*m&u{uC=L!?AnGY7YP&0w^I!bNZK9AzoCGK8e{xMUHM zRJggB*8A|zi86*Zyo~2U5IIp_Kb^#fR?>2GuV$a#Pulo-4gWfL$MGb#BuG!;=K9x` zHz6_S*k#3g)>ftSh^(d1L)>gqT_|whHy1&m;gcjr_#3GG6g-mhdAk@RD2B(cnZ>uy zqm3@s*JegC&-&Fz#&bX3z&WAIOWJUSX~*b1E8k5s&JSsgZuRXEO7Dz@5nTUCH%u;-g_547E$ z6XmUEVd|+mZkXh4whf?3?!T@tyc4+;`GF zaQ=!CnH>|_Tg!sEV)g4J|2qp#w#(a9f92`gRX@~l@!CFtN5l6F!c#9ia~GKUcijg= z=Bal1N&~;6PmSAFEppbH50+tMFz?xB4K~TE{^+hz|2sZT#3EXOtF8iJF0?>8+Hn4D z<1RP5RJ*$If`;1rhn;$tpiz?$8&+p9+K%1I5QVn7a6J(q1n`hGkE~X*^g18E4()3# z^_%F9&V6--B`I9+oggEqHVadex@piu3rp6Z3D;ixToZNbLN(G zd;&UuF?0Jg{}yx6G`G|Ds2icKha(R}i~rjWhfx)Mj;@9G~?{iO?se^&I&L1CXLRm!&Rcj)nBkD~1 z>?BL|XF^VCzu9pJ0(Ki(rX8+k9M3TQPO+=-oK3W=VXIa?rTQ7m+Cguk zq6|nfzcbssCZBUF3^E|1W<=4Y=feMVMn|MI`R~a6n|~WY>DG|3a&LatziW+dCx~Dj zST3H=*40Qv`MlBT4eoYQKN>9LU(yhrAF~2Uw;t^+;adu(BJdp+&^3tWW5=H`}8Y+Vg&e z%*p@~XDe%{@|40zjgZrVGT1UJhT@3LP*rJ&)9XC}A~cKL&0ruoepVBS&$jjHRd_;w zPj_$GL*Q{{2v#}iHI~kL$bnkJs4HJZ`@jGL0j&0}L(lzpFW}43!YitbDS#1MvCiiELg~ z-xK?OdelL9_x-p5A_-VJFZaL~gSRMX)mkTz&@NMqNZ#KZFRtDR-mIm$bk?_>e-cU| z0`^JKyddzL>*}QOIm|*4h#eMQ%o_OEHQXQuJ4Mz})v>Fj2>!}8{9rM-FVd$5S83yL z5pWX|9YV!uxVmy$?h$-ZWW0hEj=AoMgM+gGb53dwI?8LufcKP?H@%6xvN4q4yFny@ zIfexbfl13A@Hr)=iquOvdaV|)&xXlCS^eJSA+as^_5ykmEh#E~7Vx;UyczZa<_WRu zs?k&8YP(!_>~I(*1jiKQ`f7w@mA75*15V}ZUhk|>t)6W=T68oo-EEW@;)5=`AqwM0 zs5ukROPb}D)jN1+M5m3xX|d^K(yEw}gg~0dic;)|^2TS6CN*J1A0*`Q7O*~It!6pB zPHp<20?c&-^8imGJHhvh;7DMxBIy3g4|Lx1GFAd@v$!|;k$|>cV2zUh*yn1J2!LWn zNN~Z)uzOcrSd{nDMi&4DqjF!d+6kb;*Q4idJ)Cf?TDx9``w98(MHoKyEFM#=zY;eu z(X1c{eTnFE3|gy#&@?M_Y(^n&t<1El-9I%T!r9M!FFSW6X-5Dk+s2Q&*k^?|sF7ih zmfIs}fuw{(yte1LjRBQ1gQh(^;ou7G+~00?V~MYQg9dYZs}zv|e6IJPtM|97U+RwP z7DFU&s|!Lx#W!DntzU+f&Rz-F*b|Z)cz(ScNCLlXV}WE=G&lmvJJe%|d04Wog_eZ4 zn|A41qu1KDs4@f_(GP!g&-A%aP{v)#WEUUk>d>{q&F}}91h@RyugfCiJAwBHx5yTB zPN;;1s8fNr#lD0 z#8|U`T9_(>h}!ku-`6*qkI|FJxC(qWAEDunuJ=ApOinGTcd^eP@OPPR(vgk&@6!Dp zedQrexoeDyldP}4bmHPv+Ud$_%AZrp7Gtwtdka%(T(Qrob@i~fS_+?g?+Ssm4RZ57 zZ7Oq(*rHILql@VHiFE-eW-H%#9Z)V7!T$-c@QPoCI_j9lg2e$Yq}lhlOp$14W4ejg z^W6Z&N?kkymCI7JA#XkjeZM$)SN2o#Xi5grg@%A3@*-?fUIYb4lYC;HrcJ88p6`J- zg;e(xL{ovl(zwwUTKVNEM3 z>5aQd)r#yCbnrCcK`W3mBCe_X6ZQxY?Rf`zrx96hmv!O}$Chw(q(i=(Mi++Ep?}l-Gnv zL9S+^I)RL$T5I36-iPB~St@EzNwhv{O!3dDta1u~2oRcB)|YqlKN~>tINQh32S~SQ zc`n(5?#>E2gUR*A!etQXTp+0vE%1jboz48hvBKjnl9-2XHX)MbwjRx=>0JgsF!g>T zk9*XrWXlz&1HP{9*I> z`7)O_bbe2k@Og0Ur4KsZB##1ITWXJiwHM1Utyxr?k*&zdz*4yH&LUI_{R6t;Cs)28 zx7hTzj=Nu%*ArZ}tlrHj>uHney>s8?z%7S)RrmzQDfvmiC9*_2Bxk3Dvp)&|=c8Q( zcUzz?@a^Kg(0C)yD&%lH+Dj1~r)H2V=T6ysK7WmqSea9K{)Y9X&yLs%k#eb^^??uE z)+uy+hw0`#eG)h;EUsPDs$tLElQ{QlXVCCu;6b``*Oec#8BUzxu>^odXB>AQ>#!Q! zoLBhk7w<|Go$Inb<%_d%v=NJviD6lh+H#*9778}JS>IuMKW>kT@9)aXbk}>WyXR16 zr^g7$86ulFBsE5b0FvAWNPeA2c3p{fdvh*1+`{} z`%<2f2UAB)yx&CD&&O3Dk1a5+t3=d8xc`$Qm=aO6ajyX;S|PbUd8@b^z&Fd_AmoK@ z;p)9+dH1c-y3n1)dUXpZ$(`cyW#T$OcYnC8)%ua7l&BP<-$}o=c&6uldjdPqu;?CF zxVMgtx`aaQ+*%jXUgg{t{W*Km0*lgiGO9(s&9b29CYWRXy#MTF>_+&gzf}tjp-Jtj zEem&2!ReSJNQBe3$zD3ur0O{Z^5~fFk-u4BX4n680gMvk{+5ZXzqy%dt4}(V{`pv! z>FK2h31zvTRn^zjsn?Dpq-oi2Wy^UH_3v@MAId3avgeui6&lcMl*S^HT4aLDF^(2B zO9iR-T=a8pozJZNa|gP>-5-ZOjKd-{`<682VoLPMhsb-sz}$!9o%ZJ*rUPZ-9kv27 z9VZjVSje-;q_8W1ovD#Xst}zZPEne{4Pi+}uZK3%QlE(|&KY}j#$-AY)oKK=!b0#> zPIMfAe{@XB8@9BH&&NV(#)Pn^92NnZJG)@WDwR^M|YB=WuZ(W2D zNP^(ipDVF3kSh-0%Ej_#_1|dYG@ayjp4h7G{uVyy|55p#@Xn+4KtGRV2bM4_yp8sP zm49A`mtEVcRJtskj1qE-XZgKX1HpW0`1F{glEgoY?roxfw>Dq*d9&H$nfg}Fn-ki5 zIYT5<0<`&c)K!VW?eCG+;!k+NpWv|t*ojIJ)^38B_kA)n3)rYGmr?wKnRzeoi}}@~ zGg=NMrY?`c$f|U1r9fLDaZ=kNTTgK7?Ucv<)w1TV1)&kt(oP%H;r;?H8f*z{iW^XF zzy0x@5LO62(1+t$45}d(>`YcplR8nQJ<;NShYO>+ryRW^-}JZc^E~5P;$6BZ?nSQ* zqK!+kLUr-)Y4swAg6CCTfFDn*wx!9nn`D8;KFVYGT);fTe<~W8W6=Cxxbqj)K8gOtI93Z(OM>fNdN>zUd&Rh|x`tKU2ghEMWH5_nE!nNM^__w# z+UVi2E8aK$S3?4SR-=7h1U9a0$50~NTRi?yLEd&8w8A{oa9559%G#m! zzcGp-%y{B*dp_IfEnOvx5~z^q896An=t{8=Kh=gt-|b?zMk!D*2ANGRUeiQ zI(TlRZuUDaBTs~B4T2mkycU+m1kq1HR`SMXD9r+}i8RAtM@gU=ZIE@LUzS-XmpQ16 ztEto@5}mf2t%|g1pY7e8=yB#fysHej$;D3#aX#^P;c)XNXj>F=*o4MqQ}NS|x__-+ zy}^0$tfF3Dc;{eJy61Y!How{qP{|Z^hXf}rWnLDyWsK$eWt$IG%A_pG_8=OXZjT+*> zs|}v9{sXCS7-KMTdUf&ztX3`VS02eL7Edi2D&$QQ+NVsZ*(v;gbkZbUfEUQDddqDH z(66q>!O@u?5#e1}!RRcZo|tqd>pc_`7SYX&x%X>L%l6^wwPXcdO036n2-EGy6^Qo= z5Lk=1Q6v4OvV%}xOFY#ICbbfdgXo#LLCRC$exRtnQ@DMQQBQuziS)mHDOODsy%HT=#7~NnAW+G85 z9!rQqQ23NTv(Oue8>kADv1J?y_m3k)fHE>>oHCDEw0ATwRaUc0{G2tX18)oOKD zD>A!(q{@8dAFg1#(f?&1`-@JM=Rmof#t+84^8Sw?BSvqs?%oFD;7BT^@d;*~el`6= z&$Zu}+AHl}k)8f^`9ih6{^47@8!)7fPCbtLj>B1%QaSjEwS4{ zNDv*z%(Hw{?%^W9IpN)}poGWmH;%h?bC6-h+(&GU?uv}ajqVjtwLP1q_4L17nO}|T zWMbc5uqsIJbjd)qi~(9Pl<=jX)6xDnlKUHf5o0CPspO;}pgQehJldw&R|M9u6GG+C z@H(u#ZACC`Uvfp`_JZT6&kCQoR_{#^Ge9K+QBzhD z{1*xmKOY5=0dAsc<^Rm{qiMG;XkMUxGc-(&h2SkwhY2OOijhJ z?c7y$y|e?MI_6KlzaEc1n_Gt8Aqm@2$tHKo2S96tU{kb=X{)F$Cd=E`%@g?uC zM!PtLR$nSBe?xZU(A-+KVl_R?7zmQSb@04B(2L*o1&^v`Qt}_)iERFoapxFVCw2AH z%ph}FMXgj!NM+4n-9u?NDM*n}`L1NUP47v~%4+lBBk0+r5~1h7d=I%{wo-Hx90;e% zxFGi*_gbH+f&fH(_Y@4L4wR{k0nwBr!ORj@{dTgAf_l_|yOZdCw{y?bz@SMw@vKUG^R; zoNE%(n(=2S@O`Eu+Dx29VIeXiY>sUqVC0HVX!G(BjQSMr&rPnk?0rxM1>YUWq%*Uv zv)aUwadelQv#`rBsXbvNvPSiwrh`t`KuffPUWx6NmRaovI=lKsxC8~Wp0Z^p4e zT0b+}g3Cjr-@}+V-I_HF5E%}vr-IiXkF*$UB8*y(2Ry6$lN%)Q4T1c#suh9zP!Dpn@?{D5O1W_vbZEdin0cOo|01H? z6pBp-dP|V9ItnEgdY<=4#>XPAIVLa&g;y7TeLJ*8@5$ROxx7?>s~3ebYVC2-39lM7 zjglHz#1M?K)IdGwdNSct{3qjA^f0G*^c%A47b_-B+KZq~Hxtj6{GIW*gq@>DJGeNh z*K-escZ&#hVmH*e^Xh>XmxyO_sH zVRIE~Td6bY%O zX36BDW73X!dCueRAe!o3%dHDDVCRL;>IDxHgi`#JbVqGYXBcE zL_!F?wbCTAVu9BrF6QwW2;GSOK0FBKDaRy?v$KD=f3oHM8uL@1Lo12vJ9|yM?%z?; zn#TmJ@gKOZ+TR*Xn$OBLhh*xnhtRP<`2JpC@teiBoDWqt=p!A!o`o~6>u@nill7K7 zdO$9HGkx{e!M?unLa2V;?uCQcVS^O&vAX6kY)^w)rux}mG!eSRe6N1Fr!-1c^AS2m z@F{C)7I1ylpH8dCo~&;>0(YF72lZjk z>sGv}fD1n)iEw%}M!kC{^DLpiRnH?{4cbh0%c=QPCO>(sA<}{%j^XLolO2 zja_sSe=a2ZCPgUCRN>n*Sj)3`f3IQ67a*{w%vj5DV2ZnEgs>5 z?tO*V0z!jBB@Us~2Ar?#v+f zp<8mVKsNNac2LleqL4&uMaG>KcJ;6UfUeTSN-gmV%O2O-lz7QKn6p0)O_Ikhd z)&)9XQp8-#Fl=*~&dXOn|&$FtIiWsG=ygW$Ao89>8{f2@IDP?z^5fyID zpaj=iMy#|ByL1$_-MnUb4UlajLB;%HH|}0i7iEoeYf9{9^jIHhL-J;R+F==9rLbSe z#%{YHE}l655$uE~!aXY4OYZMxNCV#a1;GSSGDErwkqHz#?f@G1JC=%wtu5hQr|_L= zj**AI|5e+6;U3A?m$KI|Dh*50h_ZEw+D-PS@Y)DA+Ou;eXs3Urhq&zIx)@34*OjXi`zRE=n9U z>F3XD#`jQ|$DOAMrG0=k?l#24ZDv>5wFtXc%3WJVC~ipai}q{2(2Nor7YT5Yi$K{z z+el?EEhv&iXeH^%K^8YR=cB^c{8X&H2;+{ksXEV*^0#;C%RI-tiBls2^}H`{8qD?) zj}{+_TkGAvWI4obW>fm9jd%hO&42XRpF0k{_a7S2!fiU{h2@ZDKo$S}!-|;IsPqT# z*0J|=UW9d16%Z~gu(5jE$C4$ltPwGFA2`J4rPw7lav*xkLR!gkLuZUSR9|wi>OFTh zaRsIGYohi_T&}rq5q0mJfV_Z>hbcWm*4`Nri@R~9Q{?%9>%6j44DNn9l<`UaUMlgE zdhQ8~M_v+EuVrjx0J10V>(};myi_Oh=j>b06OSj7S}aYgNJqH+U&QSEke*}_?^IK~ z79{xv#ReRCA(H8%4-0d6_Ay5#xx`_G^j$6)w?oGx9vLrIIHc9>suHL=El{r1XGcwg z<>h}mTt{0kaL~?v^uTB^xdDrbH&ESHoo%iEGp*QBjVg&onNFS(yfCQRXyqnfCkKX)2S);j(FTzLk z1^ttyBb?ILQ(1M-%2ipC#AMvIO3jIP5q z{a!1bG{Kq<*tk6x^sl~%!#_Cn7vh7eQO3SIVyorhW%9H_gT&pAk(Tu+Srz7T%`HI? z#1`I)L^Ilygh&22V^}4|C4cTi5gAqypU0yE2RQ4O{(M=^wfmXHQO6c{)r}sYbU!pf zGJF!PQ%ixnUqjuDla%TapGmOM(S<0j-`ck_&k;|OCm`2}ero>)8ov!HLwFx~>ffnN zkadMUqHMqkcw<6~3%)zAP>87`l)U*7Wt;W@d8B55^ln8aHhEq%hS!E>)YTWkt|G30 z8ta4qBydI@ug1iHUprUIDVf@4_er5{&F=T04FSaMS+~MW(80<5isS!q^Z%Q6)T(*v zYT-wAq%3}N4{C)!s3~QcfKet>GSKsE7G}Q61mm!=$-XIly1&m>uI)N(f3u7{}- zgI|uVKP8Y^9`Rh`4|`w}9gAGQh{Y48+jDg{H{_nn2oTxEbGnjRv6`l638Rz1OGzY^@4-d6?lz6qqTp&hm(eSMCr z&DYE1U^lc9Fl>MTO$q+Iz8*&GayG?9sb_A)=}?9`Vj7-lf4Lnh^rsYKdBqd%Vt^>; zE;@=ba?cZ=$>WCS>}uR5iXZ&z=JPZ^`!N|uz^0_V?BXdRqbtGH7Io@{e3^6->%cl- z#P!}vIUQp9+1V??!zZ=AR05!~1acbja7lJ+y@&|Y{dr4EBM2v)xniSc( zfKt%-XWp3?it`5)}Y&GJO`a zo}nO=C=ne?fHMv8`QV9Ko+J)>laTTWPG575nx$^`5og~ZR(tnl#iJ?w#co-$Tbu_q zN2!6lahJh5=VpKA5m1O7WU(_qps__PmGP`Iwe0oxn7(gGn1#I~^c{Ui%o1wrz7^n# zoQ$|qjz-+%9@C0=Elh0@j4)Z$_h+O05g$2T!OhG78^ttAJ%o&%bXl6x%t6zEEJGHEk(Xu z=}}w`jIgpol&x}Ft^G=iSCfwpCxpOSA5+e0Zn}&^b{n-$4xlCTSgNi(Sa@gCAIk{+ z(M8C;T(gfJYrHNy2-_-}r@n@Yq#Rcq#C^Xx#7$|PFoy0w8!T+u=%-00cSWYgFKCV zlH!h0{Weg{_jI~T2jS1>CbGWG2o1!_pIyXnk#}fgF3w^4rvUc<%@Y2BT9xT}aEZ(J zUk5sX*Q|A&?k(&1O65gJ^~lHxV6?Qy()u)7M8uCJfag@%J{PRl z>c05yx*H++PNIYDh)bDSuYd4et;1KAoVV>iGz-;J-%J-tdp*JHc|((|rT8(uKA*@9 zOY&PBDny@BAx?<<4!foH0oIpziWxT#a zYQM^94w{~nr=K`e8qh=|4@j!AXbWnWy#90VD%tC)(Z{hp%hEBoi9c7`JG?_?$<=4= zH|C<3e?&Od;2mv|0jF@r&vqKB7Re6Xp(8-Ya^D&?vRk8GVoB?u_A>Bhat zCqKK|Bm=78lyrQ-D$@~3Pg_t`o*T^9y^>kKg#DO)5?M;w;NPR~hL4&^>ln#F^VD zd8t~v|5Ht6L+UoX+cD|%mDT}L&`Nn*_gyr6l9AKtZRrSo7@pht{BBu4p2?)`yQrr_ zA21H1Ak46?8>{DATYlrzDUR@VoKj#WT@TstT1FsiM!KkidduR%B;)e(_02EljG_%@ z8s>#E>(^7CsRTz%{kMs4b;F#VK89b52ft6#?f#(}oB3)&uuxl4kN`TB@KdK-)cgKB z%YfGesr%^rH|l`O@A!V(7`tOD?ufoixoFwC3BO>=Di$7hC9G<#tRNtbW_<2;xr)%; zIIAn;9?#PyMzOBaD#yr>y@i9)>0(uwC4?)(;%mHmMx*)KIms_cKhj7n)~7mILKKa)C_MEE3F<8 zWhG&F^+`hni6-jUN4*+3R#xRaM!XjQDE?T%rt62>4xU|9j42!a&}H~FDxl}ctiuHZ zcX9BKVjG^m_a0+jVYT0tSyKI`E@6t1;83lms3g2)b+8jfW%}?gU#z-?|65G->gEhRx|lotp4{6dQHT(-?{^nT<@799^2#=fZb$i z1I>llR4n@mraSfSP*NH*7{ek_Jg;TRMUuF$F>>4(r7I8~p`{0|? z@#S!q^nI6$LjB)J{HEIt%$>oOg&UX(R-@&3_VJDaH-7VAbt%WO5cTtN^mI7lI4q!< zlvTSwYvA%pp>9UUrq&d_+M96fGWkg;ID)ICk}qCu^LH6>`L7R6Z46!bF8DK_!B=G_ zHsi_S&(RIq4)=oj%dSGZ&8wBoQ(9ZG5!~bYk77J`F;`tY7QA+{o|g;8Hm=z@_{+>0 zeK&U&ZnJ4YO5A6j{y`mOvzv^7`jOh?A@Tp@ndX9zJo~@GZLfPz?t)7~smW{nSH<^W zdC+DLf;-skj?2~ngywW0GP?D@x@|r5l{gG~_}LTIbS`k= zjE23?+k)QyNc91yjTW|woiB|{w8W*ATIB9p&9+W~GKhqmqtk{=O6O?Sb87Z-_M*ki z$SYUue-_@+t@0QcJS9^u)a$Se+;BKMVo5VqR%I6Sp*s4I9U1idJTiDy>k*BGq7^rB z__b=|s2$zxl?<8nqIi%9ox4YWv`KolRJ*D#4OVa;%YNsjSK+aY zSlT=G8L&QiK<9{3=O|>0U(n^=C6D$~T`WBCvSO_fv22>cH4~aeTgCo*pB89YKRq|i zG3bnEX#vm+A=cFj|Fhw3`*X34{k46K!p`avdc7|OIhj2^v9m-3>(uH#W?nO!2Ei<$D;@FX#s3%T2u$rbn9n!*ZB=@ZHzMhib+*}z$ z@v4e!;nP)p+mm}rcUTpfD*WV{WQDBM^E6~edTLez4Gt7$m(21 z8wW9+*Lygs4DYoSKe`1uDZi-snB>FXYMd$jfKZ|Q&jew z{nt~U1(t-(y=W-eK`ObV#C6~L2x7Se6k>_krcWJ%603X95_RqIamno`D3lr}<)nCf zhDbH_c+Cl^>>IugZuf8l7+$)Lb#QudzWt-5|LYeY3)K32S~H2^_i|?!%|&J9k^5q> zUEREfM`JsT^%}2;`t!s4vCuk*?_9yXRUx(PKCeU5y!qF=o2$njvlMPm=f<%he_?B@bRu5yWW|EOS4 z*;e}DGS`67y9^(lCT*It;ngc|(Z@azIPQ+`5jvXhVrg8@xg=4vj_A>3`Xlvd5__m8 zm)p7FphmAq^ZtIxK9A@X8Y?bNaGZ9-cNNSqhE8h|ey)3uM6QT=)`M9IswO4c$d7Jo zfI6awc!gkiE&uB@zl9v%QFG*3e)7a#sex(f=_bzo~>3x#|Jd z=bXLP!o2qgJb*z7{XM%#!oGCHBU_Nbbn|=k8Xo>l8#Gd*_wTgC2l@F=5k61e)3x-6 zD^`ke&c{tIT`sdWcWpsq<-U&Em%I4GlIFah-kVeWtBU@&jC}QIQj+jeGrN*O&8eAq@N4QJ!?E@2g!*KL6&0-dd_fk>{`IJ3nK@?$YpI0oU`ah!hOB z1z__>;TQ8JYG71Z?2+p)UcP=T8IV{PnQZo&Pvd9+A(r+y$7?F8fJN)y>NTS$bOAdJ zqav+Ple_k`(5u%Yl9fjpkDGRCH^r1*%f$l|<)_9$F^bXw$y->}FFLC#Rr4%=HOmTI zN}Y7GpFPx&Y?f@1n-F~x)3oBmZvaqnqQYR6CU)TA5C|M9RiD3P*;M6h2vMKGd-3r1 z2f|OrZQ{KHd|KzlU)OztJj3MFx4Dtn6(rLfSud6|?3p&|VAN z|2AdBD_oBh9J`{N(jsc~{$Tbq@QM5GIlqQj1F1{2j0uks|C68HQjR)Le&vJRn zuDJ2Z09Pe~e2DLd;wZZ`^xttM#Ck~0Mih~4F^aG{JG?PJpLH{rf+3}B2XGRP2NO?rcB8Ps1~@ zzfRHKZ$2vtK{F|}>+w6N_NaH=)FQT0*%LLEImaB>9fZ$(34$JI)X~jKU`6llhJt%^ zZn%5$9i5cD0vs}(4OvLAi=!Kv9L_z~zKvq<+}GaN2MY|P-Tpl$WM_PtzeCOwIojo*58wnc{+Q!9G~ z<5#~FR|Oxy*-MLBe21Q~s;s5iESBreGBG8R&-`K~gU^{+p*7v9DM&x0$?zCCV4Yb@tzn)=9 zC|mL}W%t>>R^NY{BLbc(5qk>^DTlX$U`_?0&n?9oNXz{57vbZ7B`j8{4| ztT<+V>z%xm*W)KtHx{zw>bhQ4A()S0xZK09`W@h3GV{Cq8Y(7e{#*yNB~m&>)c!J6 zXVUiqMscvIi$Mww`<`T)e4M_cm;I>K_mxK5juIL#dh_0t1n9Y3$d-eD*pe*H*&+*k z7u^=QZxJ}j{s}ZwaHes==~nw^?HRQmX^(FfZR9&P9Zk0L8WhInT9r@2jlgLGdzbSe zNtPIc(Rleyq)P|2oQ7=EZ~D5ex$zMbjz`M=jH9AN|7bl$2aM~CoyfwilvUonqOcL> zWHlb-?pK$ee!FpUuop%$K?{llGB3fRmHzK zgjJ^-_8}URoL)8J>_C2Wz`ITZTJC><)`Ocic58$^o?TguIWSg|`!|;96XP(F>`Fp^ zFBa3P`S6F)DdOUr@HyczTE#jYKE5@%@#g#x?nk75k)&hQbNyCeCartqIe`kCw?Vu% zf~J)AEc8WNJrtD+4HN95`BBIvqA{6?MMlR{O>|r$Y_RP9*o{!mZ7Yu9cYmurvhf5# z;To*Ebbnc8EO10hSM-4nneW-*BA}C<9ZkgNVl~seM9mPZATjf3&y(zJjP!BD%6qcGx>9?GbYEBOcsb6wdU@u043KBP{ zr28^P5J4a&?o9F&&y2oBdLkH2sk8aQ`nWL;jRiEcnPy>IN%~A;MiRaplTHWZLxw!C zI(__E?RtrAuI8`-STh{(DgXWZ=}FMZ&*Sa-7J<^*Z5{l2r3IJKkDb#maGAVHsdws$ z+A$~&Gh90`cS7~u=LNhv1gaNvJSIQ9dFnCu6;gS%t;-<6wv&!TIc`J>37Y1-(Vy-9 z9zh<;sKB&Su~6{?WgE|n1{|0}F{x*Jdt+Z-U(|zLNHiZdmmk$4SD+RU+Ewe>X$TOx zy!wYK+Gt=@8{%R-H|JC_W7ZJ}Ti&x4Lo7c%Y+m(C55Gl9zFMQmL!)A1d!Oxq&5e=k zgLZK6{T;eQPACYi-_$$~n%!e#1(xpz@`+nlMd4vlKDO~r#sz=Spz4xiC$=Q*Tq*m- zH~e1Z@XUW9$*|3WO^3xzFLQJVhK~eSHGyv4|2cUKJ9#QxuK_iHT6lM zlaX-YzTykppZ`7q@R5AePD0NzG`_8BN%j;eU^ay*_C0A(i*elNN*-+7Y6*wio1no*mM!KGDcq@yX zf%hyNagPYJ?XwLk#F?C3D#S5}eE= zow-WPUpL1!P-Zr2;d*%I+8aE?q^+At<2A>BwvZ%0)CeT{A=p31Za&$WH_pFs7PFKD zIY`u=jPL$sE1oUyUS8PyWa(Q@XLfI6L9Dt}w=9^Q(b4#RMI{XT8r`e=8|8uTz%a5@ zzw3fA?jiS~NFS1ay^J~k=*@$vLHhoI3zKQmr@Y~}@!Pu-#??A_S^RQtvm$ovY>|Hu z-|kfEqg45bb*LaU%I=!<+spFuVePhW9|(mnleJ?p2hUt>iLAa^`+k&)_78r7H;6&h z4*NU`gq^-H_$6Mmm!GCTXg;c| zbcA+>jG`+uE*;T(v;wAGZ-n&xZ!7cT%tMzm1s7ebj}e+Jf1oY}=^pmS^()@G-#xaI zP1<17R?@uXZ=g6G5?lRBa@d-(B*lYa%o)lNAGaNj=2GnOCe7tN4J+MHCUHB{EUdElf#XP z73NZYPp{t)Z&=lV!H9ARli#9e?lT%ECbQe4Q_Q-In6by)$8B2D)GNsq{0>-hNQ%5* z#L08ids$xX{zJN#)m!34zXn}|Z;EYRza~v7p;%kksZ-!SLOAP>Jy(>Z+FBfHR9MHB z4EK!2=99^WY&Xpv1KI81mi&=4{oQX75?=8lD$wHMg9%6Dym`YYEFgb)DMBjFdFg_D z%IqdxPVZ^q~6_QH!l+z_AuA-UDE;#VQIWAD3Je}n_^e{KYGBNK6BJr{2oYw zuto0p$f>|ZKm70)UHqz1DR^}C&_(licq@0U(8m@_#&c|%`|J|gCcRx>Tbu(1w*)rn zP=m;*W$y06oG|zBfUooC zW4!WuvevHT{d|u*>5sBBT(0rz%zzDK3|o9>hcN7T)Yfo0jtm!mOZR4Xv%L{o`?BRl!5n5fg=^8*dD7u53Pa)?A?m{YfR{F4wzrHaL#Vq!QhPU zHb>N~>+jMPqga-==KJn>@bz>b?l>yY^Li3QB)DL?5#l}mIKmZD0lGi5fPTZGvE0?b z_`aDW3f(`f_9yl8n$c#@_Bk>^7Yg82_)eGT-U2rc43mOU$huAaz)2-Zw7L&wDE&Le zFQEzQg>UJFD7qy?nAq*J=3ySuw#(JcD>*!z9Q_l@)Jeg0$& zYVh#HJ@0v6a})DrNo-rA5k^^9-ZePV;plU=r_1%F;nfKT) zkFgaE&Wt|d*~q>*dbYACd{uWW`5WTdBhr=JBC5xy0-Gsp7UY>J;l(la5J&nGpb zV)hi0)WT%#jCrr}Z8O`)O8b2M)F``k!}(SM8E4t1Dk%A&kvi`AAsyAsyq# zprTlbnt$#vCMw-*pEa`#pon?qX6NDot)Wi};h-v82lMRu@3WF4gjcME>T9we327I`g3!aQnj9Mbc_ zM}~-b3mK9pQxIQY7^fd5Acna6;{^?B+Kfq3UPg6@U&xS zuetuH?~D92DPJ8$q(Jq@nR*dY-yYL*;eoXsWRYvu8F+y`-{mzm;cf7mn7u4OxW6dT zqh?@YtzX!xT*EfBT7ZLdoyY>xk*Y@BCXIZ7Q0Us*hv4c9n^54z?kN)PPFE?^Rs&7Z}SRSy(@hUPsiuzr4gU`{bp z=5utGN&pNcWjpNV#PMwS#rt7++cD3+2x(@ocQ_zZN4jQp0d|B!uN5SajAAq@Orz{9 z%hi(iK39o?k3+_+J&ez$Dnb4aZ$%Qm>nKw{FdkYf4#@Qk=LZOwFI}7fhOF*V-3Mi& z!fF25PajJ87?$)r-ipryZjJ?6&nLb|8`S$sh(C!Bx7V!YZc{5`!Pl~%wfZH{P4TD& zY`N{>5f=JMwbS^l+B~Z;3h?pUMPCe|(HPSP+Zwd(RA)s-tI5cpXFqdAX?4M)ovXt> z&6V6i4h7KP>dFX+Pw)dx+p0_W4+kU8lOHuOEG(H0YHOyn2R8`r%1a@%zMG(y+m!dW zPrBeAzgcbUk~=bMIV}_nft6jj?dL+Wi|!^~apn1<<{Ac&k27_1oB&w2hW+(Hsa?aO zE9>SYnI=np3*^wQxf8#*I_KF{8`8eLa&VEI!PmJ{Ey`K9misqSj=i)5`wcgWrc^~~ zSIV{k_w)_s%iktit5z|^my7nbQvlm>!MC=EeR}_9zjV1`*Hg4IRN~90okzjzPanyE z!*A7;-OHohCXmeaWnlAV)vCecW*Ui;`LFh5X!(C4Vq0OaS{qQkl6aagO$+s=<8hYi z9KAdSoBCq|pL7RdG&;_%4HOVvoGBg z`kqNS&?+u-Xx-25K+;I*=Pw0%l6ahcMJYji0L@|hlgud3LtsveiL-{FU=PpGw!hp? zr;eq@Zaa1i_IzG?423d}Z3ZXNnsSPoY_R9_>fwMFuObokoFP`+(TMVKFZq3&j7p`! zYIo*gYz|JoTidrKE6GqwtisA$x5v>}HYzT~DhwRn*FTTO6g4y@7`|>gnlmd^!%O;X zW`wP#GnM&b;{WHj-b7i^qDZ@bSYXe8QWAm@LUK;X+D%us`$#{~pJ=b4A4hxqO11hN zj75P_3KL_z<L9ndzgKm|RTH@d|pApZ=wz>u3 z`Y8MTYH#^lGL>6;ro~3$989wOgtm{Il%~;oTAX25Hcgs36J!)bG1niACPE&wr|aE_ zY)2Ka5H#7BhJc1MhtR9mlr^`c#gFdd>wL;DiiOe6-RNj^EV(dwT%RE<7+*@1(|@(v zs0&!;9t;6>eyd?Cima5F?_p4A{5W^hb-#N!DKjkfd17P^#=?nu;Z8|jnw91*7T}3( zne7k{xh<-=`MnL?U*&2y!Uo6Cd22~H{ycu_A`O_Cw_`|SDjrhe}qK$vN{Fad6 z+g$IMM9lqOFXsZPY{Jm>ZHZT~*^}-5HX;q`Jhb8whe1ON2LeA z7E!UY3FfI(+w~qt+V81R%6?oQ+WVMO!4Nq&%h+aBIjO!`d zHShjlO;FP3R4~v?9C|*yV+(rl7CkC#X%>9pE2kTw(wb~|O zylq)DMi?^aRl{S`pQe=nXUY3EygLvuKR=<@@MGpf?31136TKSfu<`>i!wQye??%&y z@vm-!9_vCMO9C1{rCwBZ17-g6!Iq!qzSFI3&17cT?NLJ@1^Cg6wGQq0g zjXGeKfl00Av3qCGLa~bgU&|^o=uX8X)o;<;X^?BR0Il3kYx@4Oji8w!Ieob20g6^C zcs>&Q?jYD@)!)aew*e9K&>Im2(^(d#6IML(O>y&9i^@3tO3=u02dFi>@;_2AoV}?v zx&A(+%En%4YIw)M4z|wP8^fUr6m>>2wN57+_o+=|NWJ0zoYV7koV~%acwl$VMfJZ& zF+`1KH`%L6#2~(-&mq%HpCpS6=~trh%pfov~$seQPX@G0?CZau0a;@oH z<+qi0BCF`d$Vy@})fg;0%JQd7p=(h&vNM^87qZGW&71&TLYuuti|Nb3H^dg;oxc4@ zPq+Wz&w$N%{5)Q) zDh#f;nI_4&vWGXLEV67l@sA_-hKRpw;ZI%Ogx5PIqtCa+(eW3y@R^O}8|9%5Hk{z* z&(Y|xuuMN-)$Dv`F>Q3zUCP}z(&_ep(8Ek2KkC1;Aejj}<4CK6EW4OEQX=hBZ09c0 zf5tZ-bD4o7=%kzTOmj``L@u)=bvopA-`Tv;*_*gX_nr_9?G~6IxViMqRM4uJbpPGL zGF(y34#nJlg$x_>@l9J8xHQ;^ z?Hor`q-y7wFwpe6CXHPvDkpK+k{Vr8hrr=AZ9PohFD7=4XuCX2p1!@iCq;1>Nwf9d zj{@9+w*WY($iv_4?Ho@uT}E9YFP5H9={gSrrru_j#_cBPxZBGdoCC2l1JJc2W1_=7 zU~&5?+1FwVdmGiBi*fr|v&=9I*wB3XwH&059g(Zn29NJyyFL^YqHY`8?fVZ$7e*Ja z%i%Ap<=pKAeID+h*~H z2|1(6^Zpr-;dS~kil^GAe=CBZ66dX=;3ffU!;=rCRZ+^X&syKv0ybcdi3#jLCBXRW zVgqYM2H|=}iy#RSs|4<2H8{m=oSauR^DuD=x}n1|@Sz=R$Wx(5OF|=X@$-ZB-eHZ8 z=8Rp#A+ghfdF}GvX|P5UQ)_eSiq=}MdfA_F#oD9(Ps}~Jr^!?v2-|?M4t5)O)m(Em zTRZxm#J{F-)7BKH*hDd}6qTW*q1huvEWo-6x&%JYq99v>b^RG;glR^a3JZqnet=D#)N0Gfn?%xF)vT9`25o zkg58&!cp3Q7f$J$mnnZo#meKS<0eZ#^tpx>g*d^M&^VW;w?->dMC%J5H$$ih#=MRG zjE%mw#1F;x@)~wj`sML^WQiy&=6`!yQNnW*`yNdaaeGQ5eC-x0yYwn!_-vZ{HgJ5b zq{uB^{k0cs-2BGXSH}!hQxIO!9R+rU*Mv)W_BW}hFRI<&nY&{BV@b2^GFhX(wXWkl zt^mSe-X2vp!;j2!m2p=ePm=MjRoq_+kjjGZv)R@8GDS4{i7_tjj?ogu#xfr=k;qL* z9gOq-7%alQG5RY9{FU!)fLI*^q6>&au{5qy(fh3`%DL=^s300ODoa^+r9{~vwKB%f zscM-wY$@|rujLPrLy9-0W%$N0dg)D*O-1O}BuLJ2OfDZj+#RFoy|Xtd?;trR!HgL6 z=y(N*yZ6$ApCG*O3Z3{f4_AigusNxZm_Fili!V7Awii-PjTA}c-7Re^%$7Tnd#M1L z0}6;K$R7jI#z6nghnK!{c|VV%OY?Om+PS);Sx&1Exh-1|1Z)osf)a%r$J5yHt*ZnSPi~ zdA9RcQPS}lgCLE@)B~>e+?Yf+4;fB;pfPjy>c?$53URVNR5q;tDs)*WT^gk#i@z6D z=3}DrChir>Uix6xr75JX<>I+l4cuf$WRB(QOQNo~s82^pKTsZqx(t6~HwYVl}16=@Kyv0~dCqvc`M_64yE*#AH zg=&b<7_K05v~R0M%PF*eT;b5V>0%0v;(n*Qz2;#Z)MjmP<+j?2kcN|bGtmU^I_A+W zv_uqsf9ci+up@|NbhVpCakmcv1kulr6p)luq^-%qTsSM`>4NfC2!=5BwxH$0I=cjz~WDEHhD< z3Sg=Aesu(NO=9s}mv8zsT7FF(q=Tp`!#`gGFzx^p^WO2oHVD*P1E879fVwm==;$DZ6eDlN0|uf` zTPT|`oz`<9s8DqulcBFJnO6l_-9ODrz$Qx{Y9?*cAeZP*<&$ShT%X9LyErU&7|d7H zbUBwJpbOaPRss8%T~Dk0CS+=_NUCgj{BqPSrHZ&AJxo;*I#Y~#=$JOKIp0lQ*z)eD z(}DZNY6MsUo6L=|(+OJ2jA{qnk^giDO?#*`LNj9;Ch`V7Ue-j|Ues;k>jYqW@4SQS zwKn~8wx30D>%Q;#We`B<4UX|l0<&5JYV6DuH^)+KBug;5MTPwgOh_J`QIj?{CFq)w zrj0Fr#5woCykaj))K6;HZTbGvI$@bk$S=j`;hOcD@=tzlbu{7$X}6sWOFPwwTMK|h ze^{M7ZF=7DI`+BqMguU1D;qf#`TcsGf^0epleu;k2rnW47=otZ9RnqwE_S)LYv6zV zryNvgfDaV?Ty;EAHQxeC@p-H`u1hk#IwsQGz=K2kyK(yuWn=3P6dnzOm$To^c;T~J zB4yE{GYjujtv?&M@Vq-K|8O|EFRs!lp0L>;$?>x(K}HJ9CN9LUgooAPiJkKzG;ZH# zA`3)APbB#m>+=cn`ulro9v0aT=C&_fism#ki?Mf=ZfhPsmwkWdeSUZDlBAm*eEF)* zwR^3UH1`t6*9D9gFEsZ-;&09DHx^vlE!bwr?-v3pZ9IiPTl-7i?g!P^Tk`DASt9r% znTxtR8zb2UoU+yB3U*opC1V)0gQi2~zI*!-*>;SXEf(o#Ol#lBEKVs7jc;*D)(8^1 z^doXYq;46e3ygF0@-d-Gq3N;M2+VuPIp52%bkJC!SE56vO~x!C}T$xxrP_IgWb6v z6MS-$09vs3V8bOa{N`05@Fm8`VjT~uHC|q~E$+rI*&k)V0?`3|-Fr%B`u*!GkF{*3 z8cz-^!aT7}Z{>^y=D9v_ddefZ;X=^s$+Wt+sT2aS>w>R|eY{)iEQ$oeY+g^jGhXEk zYBa`evJ679+df@*S7O>yw{>|#I)Zi04Yw}YB+z@ft^Pavv`GESnU_{o~%ViEHD}(7pe3Es#QtDiIgG37KD><;lqG(pF43 zNym*sS~heIq>eE2c8!)xbOi@y2!&J6a)2MExBe5fg-6D&u((67y#_Hy5SDc9m{VhhNldz>cG&z;N*(R=z)WXT#)v;x4>92X@TN?Iu1q$UTV5XDQtb7;>quY|4pq@x9d z%7fq`SM$rVuX&?Bmo~2Tm0675!!as20G^&IIqK(dB#q%g?CS@fU>D zC5x|6R(AJQwDzl(tEK=jAlQd}`J14oPK0>O*1GKRQqZE&`8clS9iL^q%jauY-~hV) zTwYW5)=*A=dqas22MZBz*ZaUvf492+NnSI9hd+GmOhQ#rk_mP9qm!~e!QAlcdnN+z z^?mHH|Jh^AI6e_ar7zJ1b4vcs^3VZuS;aeej%Z^>zkeJnJ$-K! zEOaIwzABQ1C)z z&n;6v6iKbGl1=pO_|SU*$<{$~%MGdY6DIGaKbQ!d3B@z1WQA;{l)qM|O%1DOWkddz zs7n)4A{-#ks@SpWc&XCK5&kTKAr4W7vlt3gpqZ3|+rYZmY1m zqvnDl2pc|x(e4d`)|k6A!ahb9cj%XP&J0B(uk>Gt(&g?9-;k~);)2XD_e@BW%)qim zH*>thewPHd7yB%o&DwbmuWx&yG92XV>g zg^C5wo*8Z2xG}kX8?;m$=hi&>;IXAW7NIil-0>S{U3!S7K^XA2XL&r#I>E9ujXXrJnSN8KN*5 z6{ebPhh5OL32AUf_a{d>(&Gc!;nE$sn+fkmC>L8XH6L!W^`p&{8s|#8HU>xDM{52& zvH|&rCu!)3vq2mrniY;Xz3vFQdkfp*TqdmAmA;&b++T1W-nH?Q9G`JPMN6Wf3Q}d< z71UlAy}n|9Orj&7!0^5?0HI0`2Ds_1Bw&4{0O*$5mL^rLHk#*{Rg1q%&3d z%(Hum)+HD~CRfLL(e2TCY5i%R@73UQf@BJS*IVDbwH^xqV-Htx0QZvv6mnG!Hk7JK zah($szATT}m#-E_&~4Cb_*C~hzkYb(k+ObLT}Os%F`P9TDDr?B^S#4des1N!5BEx- zbgtf5zA^J@V{lb^r#gs%xlAR3Ad4KQ=dI=bc)OI<5)tE6sD4(`8#j@?im=h*4hFFHdPZvnsT8a96O; zzUW=Nzz7J#cyHJY^B;B_TAj(q4q7!$U~~2+!ue|i@~Qj(9s2A&PwC3T@TL| zU3Hpl&EL}mcWO?(-J{;kv|qP1(m0a3`6|lxP|;ah?h~n%toVC@AofCq!XT3iU+>xU z4zjmx=v3*6AW{b&rXf`zcm}p1vFm>E&Gg_9UL|L)O+SL+tB2(wnDyyx^4D9^j2zy> zu55-A-Q6)|Fwjx-#DjLsQ&e0$n5@EG8-LVFRXRIwzr157N;-}$(tpp1Wz-~JStwQ< zGo?mu0$YCWbjF|}yrpm_JNCncTxHld$T>R5h19m$a(&%#uDY}=WL?QocG)uY4Mxatmqj^M^Cyb# z-17Hc=lP;93b>$XYUM!?Nuh2|1Fy}iVqJT0`rjwpe6zU*rM55Es^UuilvtOOu${ zzP@e+$GXZ@EN3LwWEbWbzrOmIqWqCgCnG$&&@^PzA-JC6M~u_9$=Are3VED5iC>~Q z1`0>P6YC77sdqV$TF5yn#SM$1j5;A2h6lzTG?YtpRz?;xa(h|Bb_v;)4#BXM>BH@i zA(x?<=O5*hN>{2Ic^UmT6f7$8zRX}RupDoRnGJDP*R(MI4l{)+LLu!(`9tFo@sGh; z6d?E~FQEJF{1P$H;tO2$#UkjX4%&hOKpcnjQG=*6{wjK8A*Uv26Ld1g;yuw}jD{Z3 z(!*3uz++TLL5UME@A!?s=>)xAM=h>77IK!zXYNwlpf1v16bTH-be6`|-iDBb? zIcpxs-?AH4pEV-ZE*@kKlziK6?fd#(7PY0+sQDZz=X*i)mrz6A$dt~m7w14cf}ZnFz$Te26XCMWI$-v~3-WsQAu1u!-v`Eb(9CGE{ zn%hhSc;g+M(1lBtCGU558kQyiz47A7O_3JV_at9wVGWlx>lNILESJWAyiDDBX%D}={`9Y2Uey}iHiGy-Q8M70gWKfWPntzjT02nk9LY>;1V$Cs_^ zBao>J>qVny`;wI@dQuQhkMYU{H%zJEeYtX>usqu%0!gfl(4EWDW`Edgo_s#Jmo?|b z5SV~!+Mt;psXVV5%;p?N$dYF-iuWZFwKW1ZBrPdzXGu1yCB5syi`!P@x3dwLUz?<9AJy=kb>aJF_b55Mecy)X-` zv*LDRv$0LB7F|nb#b3(3@{3g$#)tLNI_5{Yv`-cpO}mficYnfjiL3uZ7!tJ}D?sah z{9QBuEHZeaEC1JQNo;#l#9RZ@x&$IE=64+EZx_7WTgPGSsMz;+bU{wzx8|o5_p#t$ zsn0p2w$6kK3k&QV?@mrUh1uMYa}0o1fMZ?>b$OpnitNidgc7-PV#^II zKeDN+?k|^o!V`wZuE!=l3HW(%?33$6XyY)y0AjRe(27)xlzW@TF9CLZgI`M&jjL%8 zi|3&+!7e8fySQ~J7MjdeB2g^i4`V9za+BPt*DSL#JAy{QETmQEw~aayQ~o^Wl3H=M zF9JaGOo#6SV=He!2kn8bbNYd62~zhJ=Qf3RrSpS>=9#HpBrra3Y%KrYsb2+`S!4I9kM~~<`jqS z38d8d%dy`(14*OJ*Z{pQD!@*XGdJ}#nltdVhj`>ggy`{F0x9@To8B^)eIEmjs>Q(x9aJJWzagtFO4% z_kxmz1IeU1!_NoImw_MGMwFXY5^p@+_=c+Oo^tj)shbqX`|Q<;Vig8jJ) z?1nab3GAf%T?md=WlgSiVj|IG-fz%@FbE!Yl}x%0kXkoR``OTZ&N2!5d28%7O~R5H zzGinjdqWgqdm1g+KolDL9HLL9Nqx+TsNZc@`IBU?=LSR`iS7?@UtBH58l(IveYo;5 zbt{uJ3bT@89&pL+ISVj#M?CkAmRKlHjg+o`xE_wce7qk|b3Jku1V=2!{uMO<{DH{z z&l2B}Ak8G40+>r3Sm*(zMl7IN#c`JZ<)GAz0elbeUN{xT@9($5)G-@MXCD@i7H(q$ zvg|jf)S0(f$_W1LaFfSG++tbybf#4m+eu*irZJ&L!=X z>B(zfH97GSrs}*t0=`*Qdc7=~N6w;E(Bh)8i8WwO!(q-4vW;a`6A>S=@;b+3ybkSGckH+QS;-Am;ex_IZjSRkX-{yqLjmZ8|3zdsPN|=ClrSbk z5R%5LT20t4`@YJ~^nfPreJ#o3=}LS$4iSbJmrW({zKVMI^a-=6zEq=wX{YrK>vJ5d zigDzgv5KyFGpvPQakT(4@Xau%%eoE69e1UbAz z+s{rX6x!g#5{oxm!#l6$80P40N|Z{bOD4%3Jlo)m58HiZ!#KTS0{%|kOq}y-hfvn^ z`P=Xk9;>M)`?x9L4W#H4l29E?1ySzgJ*W#h`Q?ch#axU#UCU^0cRD0E6wt#+5f9#1 z&2vw!k53&j*2VqVZ?bKPp1Wstq51fht;Mb2V{TZDzx_qF+DW-0iLw@=h|-tO_M2V< zR*4s4ZFj5o`Ii z#p;HE9Ky;MG>yVFqe=(MuJdhYXj1aE*hwr>^5oVw%-CW4suUS0Rnep#MW%4tnv|R7 zg?bqWlR*^M{58};ITlTQAE$vGSJq3H)K@N}X?CRI&o zGut#Ay25c5wJhBjU3e4*3PEeR4Nq>+`E@~-Xw#1Rk)cRMQ{bM&Re+Wmd!kPcbOK9) zFpcp&G;1AjIxSb}&}iXo^jj4fpJcaI3|E{cwqJXqNk_-*KeFQhSJ>-k^I?2T3=598 zWc9amF4KA>e>uO7ftOV=P$(Lm4br;SkvsS-dCnINyNC%>4bV1cYgYrl z2GJDi``lmD_g`op{)+Z~J-o8ZgVDt$48M6_ZTJA6;>PI%s8_w^Q5Atu(^J;m{$$WK zb=F@Gpw>RAXO9|or2>giL2Uk&lvhg$6P?Qp`HjW+<){}QL{lrK797s;&n}ui?(WCZ z_O~zVo`}^}MYb&MaU@1m6B?pb#Kq8$xv*-umZ`U~4Fl=t^Q=2T2|523{6dX@#P@5rRfeVphB%`)oWKQI`j&|3v=FBDG~_Mc4u@2NMNY`_ggFky zVGRL7L|<3%Nyd&jX|4{B<>&bCAJ_6N62n8zz9944UB$tV1=Q;Ija6Tj&s|SAmu?fg z<})61wHn>U3r^-%YCQ2&1B*trCYgqk+C>G_zSXhekiWG0jNe7l))?m36W&kHsANZKK7xp3I;cnWnH@zAr}C`OMWkzfy08^C-M<^o-oXz$doHcCM$ z5=OjxxI%fIc4Tz?@UklfU6f8+u=BV0=BXBq0q@*yd-^Vkr|p&=W~QeOFO=2iXv^#e zk1e*fp2l#ZIN`mH^}_n`-a{*ajQo!VeP+8j>QQr}x!J-tImZwgjl6X!&huj@-94gV zA{v!ziW4yrT3yMM8TYZ6gRJ~W>pSu^)yO>dm*@y$I_!1oC?xoHM92n-v>#g(@A^S> zy1+!wKk}(Kbg(oNP&JYUlW>}A4!@QySv`1nD(f>r#r3@|){f_IY3BRC47X!xzpO*JC{=KYbIve`x~k__U0O&=m=l8&6z&?|C=s z*`(andRy)8ec1Qj^g>Q`<$~i;EK$~~{Z=5?7;7u}`XxSVLKq88l&p=O+8WF-o0d%g z+XPS2Lpy+`F{o(G1@>NsAf$Z#0pQ^Jo~3)UMEhsrE37MV>#E^!a}Ghb=xnyVu1rf5QH z5%sB8+r-wZKdQuAZ_8vPwIfI6S^_lbYprA|;)qfZyziudQRa;J;oS6o(|PrN8W%(M zu81w|k{y%j#R6YOBopx`BalSZ8v_?Km&5oxuXdE>-2QB4!=KnChR|9Mos2QDvhe4^ zXjt(lC@XJbg}AUOFiJizOx6xKhA>vqhaJD}Xc3H`PVay&UN*Kufblh7JH@+2z5Kor zKg&T*m{G_Dnst6>lr^2jgZF{@(zD^ZBV+HoaXWhlG4VWmvoNafn;3)Yy*+1 zoig4a%vR<#xK7eYRt*+v@8Aet`N1j!x%9TP7l(Isro)~)2SgDP%;Q-up(=;|Vc3N{ zw_j{Ee1UmNz?SiUxmYQmRIwr(z-j-wS%H}F1^y6e^Yxv21s*YEHXQbjSIT{B;w)asn(2`WKBj?eFn>c)8Qi8qe_%( zzWM)5-s)9X%xdy{E)7h}s8fBh);=1P23vHkJ(PJ(O(w$pycDD3ey|{lc$;_HtFMH$ zvd1O)UhQ~pr(_0d8c#}7Y4F0dx6s4p4t1`g=QR~Xt6rN-zu@>zoWn-& zo1q5D4(H^nqT}f&X649yA_sBFGDe5~QE~J8*Eug_^yaL=>a*NMjN>WA#3x!_u*&A5 zSWptL1Is^O-+)&-AEnWHwXtmf-NwD#$Du}ZOBkT6Ff;x?q}h+ppJp~Ut)os+D6__=^(tUo!sQa#QL*D8n?;s^bs0Al#}x8l5rTG2|7$ujMU1`k^36lca7`Ysr2;H%*=yEYAEBLm7H8jBRRu1d7` zywoLZuuJER76U)Jn{EQplAO)s+txO90EP@+`7@ix3gNC;L}Hz_l}f{8UM+QxP!1Qp z$&%I1l1SO?B4c%iF+wVw_f21?0t+N{W-Ov%tL;vY?PI6lpVNgkfw!t9;O?sA5eto? zUVuq_9R(z>gki2Y6eTXNs*c6%>_?SSj|)Owd7(~#hk6mK6|Z>wWr>#$Ll4=v1Ua9i zaO0Zsc?9$YQPg9~82m(uZ(hnx1qAJ_9uBI3?L)?{5TvQ1!tz7D$z9cN-wPYm$X$fX z5RpcDGaiqPu<^vQs$WNxylt#gU7YRnwkN==JoUS#h!xWi#Ufxj>L9%CP`cB@;W`gP z;JQmkxE4`^SeY}03E$<@saGNtDs|>wE^iWYy7n^uINP)ff!cTq=U_ptEV9dHSW^S{z-sokx^QumW_T^!3c`;YAY4`-$!64i*eHILs{ zC|cEhcri3a{bx6lrp-4u=Pu(&4Q+BW_QUk!HTDzPgq_cSRN2GO5?83Jn8AD-hDZb< z1R+I5KfzjoQ|nCo)ebuN8Zu)a>we?m*X_aclbPuDuq?vXG;*h`V};TJ)Qf}nqP-gU z!c6+#so|L8IOSuD)V`h1km)M3=Z)B&+qArsu}kcsO9nSK|3Kdsi?GV|qj7`S>}(HQ zh?4$)#BgpjIN|Pb-PalPV*2Rv&+NNuoj(P5tLm3`6OK~TnTcR&0zL$m;SMw%; zn{V9XgbusgS&=?Ov=`5rJZBqu4<^kG_8g1R#(%Rd7yKqT4Q(AJg9vm!YI)Bsza-Ht zt~ixS)P-E&w;e}OYH127SOo`3oM@TZ+K`X@f_;Be9KKI28KtdL8D#tM6_@NqUc_)` zn?X?`h=cC%Quv-qbc^r zvCCITop{8t@q_2B6=+A(ciLDKdX@g|1|85vtWMyk2ZP5wis4vd3Fx5pM}Hg$^!v;H zYTW$8e-Lo%R-g>DePd?1EBBYyGsi;F4&;rS})MKQnL zShg@eW5N={O(MA`np={fmLc>8_M8B&XJ_kV`%xCwxNC5V0}Lvm^UzBYBIurfHp z(Liyrc}q`}t22(C(XpPS-b2JdFwLx-YMYxv%CAe1hzrEig|W0rt5DuSSPx?(0&kQ- zXa=DOWp7X1!#>F1bR0-4a9MkIul-&Qngk~we@%^v8+ywdrKthIcwxgLs2@6ee+{$V zE7ld&Uz(rf3AAvWyb)~>x*+nMRkg-O_Gb6M(|Ap7K`+_G=xgt`Fmh*zz6P#IO# z&imKH2<+~OEBuTNVFx8&wFeEug}R=RO-%G>+j_K6J+$Z(FeJ+3nDS0GG`-{-^38!c2)&ItY{J!{CKdv4)x|Y z>w67RNo+s4*dD@XMap>(CZ_%CeOQOW@4xd}*IT{7`WR-MKO{cu00*>xFgm^BC zO_G34D`yQ00WA2jWJRv7UhVd#eSZ4X2c3P>(SeD(JncWYBnD>gbRdwcc8+Q6rc+)GY2LL5#V(DV_{iJ!n*S(shzM5JLwiF zW{SyOj1ez5)_&JEdW6afb4IJMsE+(GIChML+gL>zS^w!yvu}2_0qQ`su(T&7z6F{edb%;V6~Y-36JT7G04qp*6s1k9G0Gx z2+cFcsmjmm_iW>K^&nb^|EuzAOr~Y_{u+imP-RGQiz9@PA zlaFnxxIe5vtrhPb8%_!3xL!$mG>w4B1V%L~ql@aCDV)LGE%j$ppFr^7s9>Mm<1FRz|&+_#SqR8*WcQ9>$>Yo=5e&@=a|c~@@-|UodwdWN|IM7ZA`5O`NNZU*N=Sly z+7zB8%rCmw5SxJNqjdyWC5P4cYr?$X$E$oGSnmzi-a5-JrH>u5je|f0pT{cm=c7)h z`^I@*%dZT^qZ1_pY@JvQ^6h)588`@r{{D8CO4?@NiYCFzRbx)wVc$=MqKkx@8D#(6 z(QJrd@}o>bM)Lc3KkKGl8~x)ti;AtF4SR{a{fF_QNp7FIrmJler{<{!UB;~~*d`+G zS;N`!hp9haj%h1RqWBlp?PJZ&O^^U;stu+bnM8Dwn;@>LN6)*X;gJtZ3ac2kC!1WH~-y%{cx^{<2uSS79-GdVDo4LU?4| z_yTU7-Cz$t>o|JT{HLfT&{FuPiW<1}IaCnMY}@egv0Yfl2CRP`_~YY~@4lupGO|be zaojdA$82BJ{Qe!YSB4p{>H1pMRvR6QzEiPAX#D~KtLf6gJvV!RlT6ZO*f^^kBn~98 zQHqS!O?u5d%MhOOp$1;vwAV9E9f>V9^SL&WP>7HV|50$~GXD^dKBux=E>`En5Hlx> z-U{8HHPX*y{jzl(`r%!}Ittw)5`2Hfo4xY2^m~?iXbBj3ojhdp!WiEt@&*rM9ra%a zj0zCJlE1fo-YX>p0f95+zwu3BCFS z`3+rr8>tssICVr|*Jo6eVFLqtZh)Z0edu5G7!m?#WHhzjp$4|arXEf zQRG%PD;Q@9|2l*&Lw#M)G0v|$q05@!hrWSFM>T_R_ex^zH-)dyw;)o~yDtzzs*ks~ zM=X#0c>jK^#_yu6%%*O|8FR3)r`@A7Ibr_hWE|%U+(I_Z8dPdkYB4Tj3rlM z$75bW9p)|JHR#?3Q(P$PLBR^$d%4x6*WdbH!6t0!+osovL(-%TOsXW8dBf`zBpBdg zc$qV&0{hFHBFd}X1R1g7MNoF41<-SQgKE87HD-lbZ#VKAxL}bSn)8R{a&JUIC;V+} zfn;1Hf^#tYpBzrLPKaj6l9t;TgG0sC$n@H}^BecLwQ8O&{~Zt%`=1>akB0(0w6Bfk zucKT(#!xJm)7)(g~d43s(Fjs)na_xoBSbO%GzTW-tCL-sqAd z-2mTE4=X>UioGLM!sHFuY=6_h33+<>PG#abKMQXA7D}L*&kTOPbHY!yB{*E zFU%-o(Nd}G*}vI-u~oR>j%a?RSesa$$nyBKG|XZ=v?SZk>KKN?LoID?D8UCr+<}o;ZA_&E`z1bVNh^bIW8~hxF8C)|p30@YsYYf$h zaP>BQ>D6>`5yQ@TrKzKhd2(736Qor9yS*r+f;cVl3JKyg4aA1b`ia#$f0B-UxoF7}P5?{K*ye@|U^NP>$_UPbtx%o^FB) z=QRN`13d{AI>n}{{S~?AoU-D*yd_vP~Kp0 zv;JAJ(eyiw#`Yf7{e!a6B68=!2FJ983&7%b`T9!(!z0qv#+&zHUaSeZvVlgdvToMJ zny6qrxlUIk#H20eC0BBTCLbYuZ*g5S+-3GL4yYf?h+Oj+%0HucXxMPNN|F? zOMpOdXW{Pd?(XjX*52prJKnp8obkr^eqe*uU0+xAtm^7H0lXw-Dx-TLp<{!t>bpO@ zzn*L`Hanbb412-!`#99K)K9i3ra#8wL(NoXeE#&fTB68Vri@iZq1HxAhluaF6UqRI zW6oLEZ)qb1W>oxD)PV4Bp5-EJ7#&2)9cu!|nZ?K*ikf6%>=yc}7Mc&orGV`=n!|^0 z8Is(~$u&+q9VGK@&x6Z62P)>CAGLE&9QD&?#G>EnjYL8t3K^qO|OXwJ*}`G z1&1$PF-zOERNQ;Ae}eyAewk0A1a1xxB3u&U5ZE|WU1HxfNT<@LP2am@^rOF_@2y>+ z;?;+$#*_MO;=oaKQ&F*#;Cd7+?%8s<&j7bDFLgkRB+F9p^hR0XkD|YDC@RiYFc}MW zo{52&ZHjlN2uJ|{%z>9a1-t)3UMKhlX7Jt*@Bww;J5&>4hZ;GsX4*2}jZGjQPtiP- zYI=T^kv4IE#&`mZadjy$YTRVCpozzVW(9nkSvjmZ60=;7jmj)1g;o4gbXLAzv1Fn6 z6xzz;|Bz*oSs5ERyArAz21d{l2xb;uEvNs@x622q#0^PLF?k_|3CH8i#~SL95RqwM zJDxs>#d#Op%pK0Zk=LVszUMB*_9fwJ4}Q6i0Z9~@ph538ETG?3)D304!!|gafc3sUk@n5P8FGvKE$ax#HGc5GYth-s(&#x!n#&>q z2`DJo$2{g{M@m+jIj>Goiw1oCk8ShsqaFzk2p5V`cW#CfTCE0fMSfZylXN?SvJ&6$8(>{DGG@eEPZ_qF)z0hU(Uaa7N6l>+JXb!u33# z;;Wec>&(d^3XR&)wfY^KQx1Ttm`5qIjy6vr-Uch#sT@J9iY;0$D0r-`9WhU7y2#(YS%<rX=J=EjmcsvWK|DyMO^wmCMsCj{3T&V`@bw-#s4DVhs9Ml4A3{gW?}90B}Zy3y~N?4!Fxnp9u*0Y07NDWvHFq ztqrogZZ@+8patrVTsW|i0MLH#(R+4-x31QH0iDE^$=}B}N1xBQuv!dCizeDUU(ffv z(Ifa?1Yp7pOWcX)%(ACs&ErcK>q%2xPbzX{YIT=utFUGN6N&!qQeflIAD|>|fms-% zKid`9IVp0L_ojcooYH0u7Vh(PtxT{~Ri5s4K}fh~;B;pRsmW+eE2&@kfao0pxxHc8 zJ-Z!`)L$!iaV^@=$*pvRs9e@b3m;OV0nIYUX>v(3e-u-y^Jy0EUpsV>4~#?&dmbR2 zUrbT+dV@PGX3xCwOA*yk&{ct5F1r*M>~=@A{#;3i-s@f=QU61lBdC*0cp4wJ< zR*ZgJcSDPyU2kYBF7;;|@CIe~s}2T*Mp&`}>9tD2WQ>C%IYH)flV5&S0iiTP6`Epl z#xK5|u}ayUir*m81E@*61U*QC=eeT%tQ=O;mES_VlqGiV{t4eS%Kg{+ORt~2i%Pm$ zeK9=rNi{9INwn|s=pn$P|2y_fyn8!XtUuI(7FK2boSvr*`iF*z9tY*qLqx@3x2(N{ z;A=O>f?6H;R`a7x9CrgQ)G`+<3|w7qs*(Jzmz8Mb;a-nxeJ8me-#*oNk% z0=K@L!m2`!U1;T^aKCXK`7-anG$!Et7if%NV`J2l?35J1rjSiEv1MKuY z>gA#lX3Ml$1@DFQU(AY6m<$gLsLyp2!$WAwrFMo=iRTR-&e+%qlGliOz@NKo)GSrEttsiIh=Nt{l z+G%{-xGTCB2`T#h|L@UZrYO7NV3s_&GB-Z7>yKuz-}@zmb!0*K7WMVV+a0#Z$fr;g zb@N?Nr^0*$ZgB~IoF-?tutzh+o+wkS{M2V1jNq_Ts=mHbh0Ko$+PW&wS%tUQ?Vr=k zs1FqosmLcd=tbG9Zk!3+;2(9GJX5AEn{mS(c-N{bj%)-~g6@@_#GF?ZbjQrriK(f% z?5(35@5q7+`i%wQ|1hN2hT0p*moiUg#CO4gl`DSOgta5BVXz%<=uqzcN4uPpmtn(} zq()QZ@4yNPd5el3^ez4f8ihkTX3t8z#J<|36@tL~tokK-f+Rl{j@@nXUFFY@BaG@* zyq3o{Ihii~s{Rjf^Ba!pG2SkA5uG;H1v*gFfb#jR3f@b7Wm?R55cg!V|53X5*~ZL7 ze_NxeW}MkXoZ3r;!CayXB+1SFE@VAL@lJ-kMI0|cE&2^?P=DxtN-HGId= z6rPCQMii%HKs7`#+oh}4BiTGgsgX^!<(*ga#9u;%+(Sea6r&~T>CoDQPma{h9ptJc z+X+TZTT8D9E~al)dym`6bGp_&e=I0RBv(tKZ$R z8{{}yF`9`=WXBNp{YlZ6*!H62@iK?JS_$@%)phZt9Q>6MQX@Y8h`|1}S-(s;V^)?x zA03CT4jU)q?w@Rk98|i>wuyXiGw~zuTd)Pv13*L7;rYcBos z8>~Z-yczNmRT4%#4eO4ynh8cM8Bj@2)B3B*5AoH>KbnG~EE%o@Y=!*Ievc^heosw9 zVdTx-Y~si(L<$OeADNy$$IB(Kg0Upe- zsXpg6j3*sxzE_EtHuxAK=%zyWk88mnO{MF-@-eZR!)F>Q!z>#Jl6Sgs!cM4BacJsd zK*D;TqZa?Y_p70|o(G#PvRjJ<~_YOf=dhdelW7VWT|1nS79n zDA<(^{G&@$>}Pa5p!5nkw`0IHQRF{v`JUl*U( z#Ab>%IvdoJ0p012^JTKw3~C+6=kOe*Xmaepp4!e5SN4y371$}juCgJiCN4<_e=^kv zLVy=m)hmAD9Vh(er2~hwG*9vm2K>o^`e`<+#MGQbgKT1;G9giUo4T5JR(V^?=hqCi zV^aiQy?z|^yIF}p7_F=TRmC4{GXYhHItlUKjR;W|1M$qrUf5y{gF>b;MMAEM=F<_f zp~|MkvxZpWd<8-Q)c4XF7CGsH4mk(iLakeg1AVa?pDRKQxXwZ-Ua!k-3gH4<5_wp#izzm0fpD*Y*2blN4=j0Yr_VJbe)9Qca=Q3N6Zl&4-hf8Hj z-CVrX8b-)V!9QMexqmG>NgZ?y4MUNr&prGh9zl7%aUPk9Kk{{f9%JaFVz-5&#FFQB zgGqaM#kB0Qi2YIyo8L;d{kTqd{dn4vxxCVU^&n1q-tq;zH`Md&s71`**4SKsTGBY8oWna2&a^-P`aT8B6X_HqaMHCSi`o8S%~TWDg7Ja z;wNL#j{2zMLfkB|7OZN9hf`^AVMEs}LxD>6P@0WIL5b=-(c-zb^oLPD=6gp=W2sl( zuOh$B)U(&9BJfJ_%x#?FmAxtQJL;}d>7>SFRk%`z`*X$C_Tvxup)AGqb_fjBF(6($ zP30fLE@>IWUuX(|4zora*YEEGucY(^?MeQNA|Vr8r;?O|BFU!%ND zNAHnP%x|UZbwSd47Ab^GR9_6E8)m;5{)if5V?}v9=m?i@V zo73z4=s+j5+k@_3R7rM*HyrG7an%V;I?^l*Nr!#5-zk)PT&`BFApjE70FYVupElRm zoRK+-?<)|#2d{WPX+9^36;;EOME$8^cFDh-ykaf=PXVqVzSWGpwjT-}bNMn;Ad6Bt zGfue9Zmbx23sw%h8lHBU-;hM?;wN^2zl`!$B>KL}+vu1L6=0BayW_4)RopzveBfQx z2OQ;L^1X5>EHUl@1>I5*@rZjb4|jQ7P>K(wav7$q51@O1 zJcT%n#Tebua?B;r@uOvmxzvHg>~=xFftAz_tRa)I>n(?>Z7LvpC3quJ6{C5ViYJcE zS<>cMal@%7>VE;a|N8Bw_-c3jl|;yVZ3J<8dUDQJZ|B=n`Vp0utxL2^o~yPSaf!D@@9fQw-wJ$n|g+3;me2+aYtc* zvKXd`JP}GGS zQSg6oH|pX>Z6NMl49*;($K?M(HvccC|ho z2IW!9V(b%V(m*rET-&S657t;diN?_%ATIF{(aesaXV;CU3CScu$uFwXY!a#~5mIXx ztK!Y(=k(E-i7dLmP{jdeqNCKt4@hcLg;x5o&3O_2K#M~6GtOIZEk`j(6v%R(qt08P zo^1jMIWDvbz7mjL3DN%wFOjU?#rre##;o~iy1c+WJNvd$_@U@fe3t*6Nc_(_ zBKHCGsxuIn(nxXm;Zx*&+YUNZFw^)2IGUhT{&XP6fRrp$@{Tzi{ah3+ohZ*IlHwax zuN^~?T)C5_RTtGD+!WW?s37chv$4a$Jj8^cBDFDSCAL+g!T7N4lD zKE=q4dh=m**;kz6$uw7GEG|Q) zt^Jm*K2^q|c761PV83q@lB)zg;nJs9RPW$0O{!-uPUS2dO_Seh>rn)M;!&h&P8_{1 zc9&8|+G<*d#_nt!1dF*qUYDkN5i3+XcNXgB(Z0wt;Kkn{v3}o4?P6zdF0Npo^An$$ z^XrZp^c+`WhxwR^!dPf{OQpXDDX5*EnpGl^F14dMU1wdusV;n!UKXa?+l0xwJwWjl z|9T}D|0{j)j{N?_m`4mU(}2%$aWlEsyI3O_SUkBtqn&;QcmE54{@jIBde^2X=N%J< za=6&h7kqj+B_!wv?V(bQ0JZeQ1oA$18_3^7L^4s_hOg8fu0Ijf}_c+jEo zEKy#!*6ZZ+bNJ}~?oa6LwY5YVNopfC!C`bz&0uYK=l(2be`6gIvt1PPKfd$7zTk^P z>23U`Xeh5p*CVB{(J3f}iUt!Ri0@m0rrqVQYzy=fiTVk3jzf_thZ2FdX@Uc(dDg3R z3Wqb~(PH9=v_rO>pla`F0aQ7)9Nm4awNk#OsXDx`-nRSgTv7PZMTI6B=!9{$lh-pg zCaPTa?IPmZCNu?7GP+`j%=0l)p@Pgc+V=SXf}o^C4^Zt(Io!OwE-~}{TfR9e>}L zBI*;-84slq=FaATN=#$RKH;iy6RrFE+OFCeA*G+k3Lh~ZDGdVqH~EbKvaknwui}~B z!0*oy&O9LV@F8-|`b6-ZWN{WQ>tn79u#RIfdy4i~XEixFGti=$_}mkL*Q0JT4!2tv z@mRrBK(1@ZcE!#Y-bbD7!KBLW!xgUhtQ{9r2IGs!CHm(HygpWD$9n( zKrfMpkdvS2&yW$ZA|PYVS+NeR?VqbPQO+B1S27`~3!LHatc*jSgZB)w z+QJ{ub4^k;I~cGyk$Wif7>E+FEJ4!u34Hp(eeQ2ZAGoQ)x4s2$Q+qXMT*RzGN4q`n z?jh0+p~1Q*ck;aL-BI7-Tsw)ym$&`Hr2u_Akmfcb#`jzmxalMnt3g33tHu zSS?I;G%fY`Vk->C5;?A)RzK~MQS6F9Ih`j<(s7hLDbwQl?xH<}E{Vf&zZZl_t)la6 zcdKhOmgR4b8o+E-T5UGPV2$9We$71}Ts#b>zF-b+>-(Lm7tT{(b9gr{exIz{5m5Z) zq2(dnE16cw;78TSGBBA;Jih1)a7S2dwX6e))#E;uhR~{h4~o%c^e2_~c(VuaV)bjp z<`$062v`kertxt+#Ay7NSib)BrM(l?N0t%{$Y56s0J(4CGBOWZbvd(ILshF!;@q3vf;5}zxmLth37G6m11FG9`Q-&~0wXCf zmoA>$uf?g)1OCi%>lohcD~VT;dF&4E(eG%>+3911`o53f#fQ+>tYLz7nufAwy5Uf5(4j*e>-ULXq@CP4JuJoB`dK2c+enkG znDQt$iBbcj)EoMGx^0I#3s$lET8{n!B~HI5&57xx`9f;g_K=#^dqbLSjLCFdFm>5| zBCN|%%K9&KQ|1G6s-eWT8-Re5{1u6N@UU{Ec^fQP$MOPvd1_CyfrM3HgmB!StX}_p zVF13hov4%Uah*h^y;j=tj6Ga#(5H8?P_@#2A52{o+Em*6WLr`|@tt>&-SzyJj19Bx zdS|E@>vC;2`(;_jucwU&UIqfMOIh%TtwY|k6sJ*vuo40V23Vu3j?@A3ZN;v#~F3_tytEHsk7V1e>DR%LwgFfPcA zcIu^wLpV(kvH?~yRSnW5G#PVMN26X@{c3eJ9x5JS!V*fFxWhyoCY5N~sBUtQb zd05_L6A;PvZtizR|Ijj+45?+#J%nZu3dcg{uPt_PZ#U%M>u{P4!hUCvnZWauzrT4U z0R)ABov3czu;g$!+ZP)jn=DS-H2Bzbvm&9Ys@ngF1)SG!5}%HV5MXm9is~p*oIaei zq=>v+l`4AROzAyYnk6K@9Xc>5GPIquvwtpyA51mG()=$+YUsj09sGwB4AFjEl5caH z@qf-EB9>Q~s5o%8%i>emR2BQ;ZU@qx!XRw!i(8}~7JwA5h&PeKj20`NY^e#?89H6< zrZAo;?{iwJX8k7N%id}2&ckZHU8$;Nlz_$c!ESa|;|BE>^$dMpCgH;~AQ7TWYFPn= zz{*O~TfI;{*=>TQMy0BKo`-Z|`Dcl5;_Dc<6^?w=JVNUlsl7G?EXe!R`Qd33P4%tS z?Q-@^I>3cFHT)lAazR||jIbtXEY3)jqkM}@X0bG4S#b|xMuK$y2Z9Tc%k(^#9^=s* zBttPXoHW)N?h7#PO9!Wfgr*+BU751_R7? zh2tT#`RG+$;~;1O|1`Q9@>;H^@p?UX@lc-`2ofjef6wmbkLnK13Rwr@O80%QEMb9O zG$w_%0uNffufhYMoF!TcJ7mrsu;F+!38Fw1L9x?LdAb`i!3AY)%FG!4bo1*gB z!jhFHW5n{mrSK{fjvhu@GHCiAml~W|HR~;?nwMQR92t#=apl$2%$(*;jVD}VhK-)C zaFWV-Uo3>funoIIvGn6ejdLZ^ExIEJtc62w=LZwN zkW7t$Nx_V#Eo)0IpKe-8lUy&hbLJfnC;KiJvwmMnrm~H>-|DLQp|W1md2zQ-7J$WS z=ivEAcyBTqiDPb`IURP9OTapfFBtJ&_j@9Y7PDn#>C_GhX5t6UqoWfTJI@U}-#GZAl?NlEyjH_3)8U z@!%HrV=?tF;1V9+7B>fUfBA7U?6hEMtyXPjs8$6gT%tqCTrH$)Vbb<`QnbPQVtMVd zpk`id$O7JGJS;5cEvurExPkFltWK$oppEXZ5FE@*(DnR5qE(6`V;ZMpy#8LzN^TNC z&m*O*Ks*iLaO7F}@{_1lHt~t&RryXjP%O6D|JwcfT%7Kk{nI^yM5$Jj!~)1tGOgZm z$T?eNfZe#=Py5_cbJEMT?xnfYmf5iX<3*(hfjftT$*{fe3y%v}Xm-m{gtQ$@T0K)` zIx#(2ec*YY|9fzEY$caA^V6a2kOw?)c_Hsf*iK96G6#!gel3Exe&cNhN}ocgz3P|g za7SjdD(^Wk<&dQK13n~O>erT+W8ei?{d#Vu?tWPz%pM>(0#;zFT|KJXir)^Q3!sqQ z(Ja+$0J(RAEN6z{YLn;nO+nlQ5scX_PfEiBcN_&)J5~LunCDBC)-&Mz!w4Mv5-!%~ z%}Z%A%F!sE%}C-sOfaYuPg1t2H*iBvs7`CVxrL2Kk}PxQFCdzgB~n;uc4n(C1d7$F zC6piLR`TsBCQ6osjY^)hnAc`tx1Vm78ND9QL;`qmkpl5NYaeL?PoTgg*cx>w(5Vg2 zW-SYZJ#=bxTrUDzDs~c?w=oeze%hX}4-;^=T9pr04FkrX zhdIGOk!i*ABCO5W4CGgh@46{F9!6Pg-NMb5lK-~j`iL_T5yv@lMBN7bwu`Vht%@3@ zsm}2VDuAV`mGN`7J$OfVHBF7y<<{<{58$10ixF^O1b5hb1JpDeCV941KRkJUZ^b&* zSf92qjjrUaNZ(!%$0=5=@@rur%ws;=l>LM!YZr z&$Ll7Y#)l1B=dH*Bs4|!??Nih~zn2EF-X}L_!K; z35z?darbcz#QCH}{4!bHx>?mv z84F75U8lf~woN7sLDO~_Ow=mxNs~xtl&(G*9GLoXN`q17yXr_VW(;i4n5Ofx=?Dt# zy=KKqsq*zF8SOY%>%s_MM4rxIu7<=q`<u=(bv^wz=tM zS)?Ca(1@x73wX3&@2h;e=s;Slz-G0=jfbbfb?+qtYiLJ^dq{7v#<8xrcW_;yf<IK!ix z>*7+ryre4xlQRmqBl+v;cZMgG@+kD$R{rla+H3G+!|rY>?|z(~VFjE-^=*39wAIlk ztiov^@;;VcBfXu3S;DpJ&6MlDsRy3aaa!EKm(92etIJxlv?=z4;|(b)YnvxCn{Oi_ z4Xn5`_G_@({A@GUAuQ?K#f1BTaXez1LL3ydA znRb5J)S{9rwb}t`08g<5xIRRYkC*r0SrZQ4pk3$m@XW8c9Z15JPzV0qtxS(_VXdnXbg8<^K7ud7i8hCo`A|(BTcf-uf(A~tCWjtsP!V}eBU>i)jWVLHCun3C9rZXz0L!WlB$((U<;bV_N z`^i{zf)I)Cf;z>F#cS2d<2 za1iKNbXz$3Qa(iufD@R6uDdo!V>TV1)L1@&vwwu8xG#aHI%yoB-5wXGLo1*1c@ICB zlW-~7G=|A~vg~j{^Q9bpnr9{CxqQxOY3Lmi4>hZMLQRk!F3Hx=+6`+ptHur&c`-6< z4^Eb)fp~)E^2p_$z0;xap6Nuc8vn|qji^2F5UKIl4JV59g4~svV<**KXf>c0UNnf- z-$a;q9>>zQgA3KFzxm)8$QW+EM|}$0KCocbqUncKix_f)98M<57G6@VR|G~J(kXHm zdU)^RJgkkWhnpj6mYme>=M0|&E&OkKF85j%L>+3w59L?^TDUsaMIu!({lDCo6WE|= z%TMz4!`VTL`8FC_j#JEA&BI-KUcH%t!9g9E>ilI;nYyY;A$9>cjU$Kl@$6uVR{ew0 z-MS(b^PY#T037Ss5lD1(eiL}v9(SBJ6jNv%*v)z{Z{wI7@mmoKw5gvJt0V8%sHp6? z*6rbUBJGFS>BvC>RU+u%Rvw>?o(vbeIQHM@PmRcOQgnR1k0TGql{?`_0_EsD?`*j~ z_dv1e;rngQXmAof;zwTw+zb@gEE$oAKaqV@Uwasi{Tx$_+`hCMv0BM}q_#pkG zKmIbRh(wN{c_wcb4&^Hm+_=5k)BV+u7)6=|?LN@fE)Ryj3gx8fT&|S+=7S{R_yFsZ z=}r8jmT&p9bBdvOrHB;Q-lqH@iU=;5ULl!yLSho5ad)op$6B-_d_Xc`aQ#IIP)`r= zt-ZG30_ya%l_k2xK603OPk=8N6WQ(DPxVW#t^d%Co5#QV zA>5A9Njle5Yd0D#hk3BtU#&8LZz*PR^c+*yEXCsdU{5 zbj~fsQsQK}r+26-#bUf``QsDo#b%7OUvu;AIy?%)8u=3qce#Rz4*bzVO~g`Jcyl^; zjYODT)s~Wa;Ma>EkiWW1o9+wR-ofgTqI2N7kG?gFj;b-A8P;&$%h83z6y$URBbuR5 ztcflRR`m@dgU2hNpxgH{{l(exZp?8*Hc3;yUn!nXB_C}e!lMRgn`Yf_mYlKTk67k= zHQdi~GATFxG1C)7byntjQALB?D+9w&K`+nHy>7$YFYb(boipqtg&#LQfyw{Eq3Eej z5*KxRyK}8q#0UK`Qxn!;A@b6kmxbnuB7vK0fgiGv_lC;AEUV#ycyHdpyoLVo$t0ZP z90s5_cF;Dw1?JW#^+A~=gafmtatRvyxjBytZd$A zJZL*sH_n_ryFAyusMz+qpFw6$iBV)wqbw7`v>sf8Wx#&nzjSdyQ9Ue6>9qn^KLC)E zIju_sBeBk^Ij>KbSHRlTgP(t=8|_c$15S=e!nww|o)oyKB*wKtZmuT-;Nr_Cm}DD^ zugH)@o402hmBK?ET*#aP8fT9eBUpkB_gc$d*O&o(kB}*P<$_HjyFSxXUV3*_8JH!kkQDnDeYhG&blm-!?)MzZ>k`W+O%3?m)ssMcI7iS)R%8x~{w1N;tb#DWD5Qtj<8< zcDtlMD4H16a9I<|JrPREsGK@VRXV&7pp9jlE^Xdcd(dnb`qW|jJOVsH=;~(seF)a2 zWI3NO)q5w4k;S)Uf1`2$B>xa3`zL>5L88m_TZi(z`ooHL!a8ZY>EN%o@ zizaR_O*a-FYbyl_K@(D(3-;^06~fnr>NO?kq9>$Z&+v45U!H$k^$#&e;|>E$o3HC< zy(~wXOfxdXjE7QK!D%yrp?`PwPzMq(Q2h-fgKW~EtSo-%SPKtV$ z&z9bl;-OyO?`B8L?wXbclpaPaTm9v@elN~@$}cNm0>?w=ZyB_Sa77HmL{BAQNYgVf=&gr*oKo2IWmgwG`gr zVj^~t+5jEtbB?`(t(~>!ceHQ4=quo3lj%j4rqA6F4BlkCUKb| zkj{ZBi)-V{GVaDwF`}d{qDNevFR`32PhsD2HIsr_6r{5s`*|I%J!b8?d#+i@CTEO< z!+M-OlzMHXCN500TAdKXmvSpQ|R@=eRV8H()M_R0WV%b+{Bu#(?F zSG$@eV{z5F5s~!p>{`0G8P+S|vTC%uVBIkFcmmGgU2x?+hB-K=5?GY3KgsgmZP%9b zlNa4NC<)nBU}A`M z$$;m1Hyb=KC)|a1(1^$@Y}Y6>`4#!L8{OM+%33TD-1nt27Vk5H674n+SU)Y2MnFc% zfM$wSdicI9FI1?Uz{;9To0Y}ynQLPTo_Cmg`)%CEC1|raFPIP|*IQKNW55p&0JQ~r zp}x$tnwKJY5I8@==I^jEw}xG@F1s|rKr~nNAclVlI>DgT$Rp2HIb=O(P68LV!f!oJ zy&tw*ggUt-SFcvUZ2u9w*NIGV@v#9ry49bV=%(k@L1u=}_cJ8zdnb(>h<6`GM^GI? zu^78GT!nanC8@eLgXZlIHT9%LIX&AcfdhBX4-($yvq^F)GwJHm)er)tsUaohJ2pX4 zL?D6ovv*O5Y!b;#V)KM@3)U}BIYrWc1vm7a_evr2GW~@6ZpY5Kw8;y^!t~`3+anNM(GrA2FJk^XagfaEeS3$1>(NT`})1+32}~u z?5J!bocP%LD3a*w<}H6+0a|m)^Jxdt`4S?8YAP@ix$l6$dC>|A3I8LlZVatvyIu2p zL9WT(yqCL?mLc$x`WRfi`fdg3q-npYbd@#}K zsmjND8Ab$4#%bwkB~@0rppBvZzkL+{SG&kZZ@%rgB4RepFSMzHUEBwuQMW=sO?b2W z?>0Rzf%P{sYm$`bXZNGz0z?Z?4Jzz;fz5;;$II2Ews)Nm#x2|r$k6;j74;g&A#>b>iE~cBjAtZw0m?`)|SyqW9Z?&cUN}8M;(6HhXp9TUg#ne zdlU7Isp;mq0bEz8S;4}MzgafVDANdSSJw70T?W$GOWmfkoz2K3zRMH@07*O;j;ym` zP20mZu;cg^m;z7tyrJu zs(vS=<11>c6Pl7fftq#T0Bhv}HPTbON~KHEB7xyjVD#y-?s(Ic8XqG5SA z9GH@-USox4?|+asyPzA0Z!yfZ!GsgHv7pkTeRnSIT*)*~h$@zQHRDVyS~XIMk~BVk zqBMB}u8*XUMBEk%W{6jQ{$+VMn;|qB!vZy9MReOHc`vGdd1(5`oK>9I!&kn%ppuZG zRn9sYfx|j%4L1-Z2$e}HCjx*f7Ny$sfNg{C#I|lcs}CYZp`lP0P$+a>_T*G|mYw_R z?sO?DGP}$AJ7ve>SEYrR^{t54Kzve<4am0dS`VKU?0|uSBOSOWjTfL($>G5J!?{YK zDnhSY>LDGn8vaiqK_a3-l#p$PM5f>*krAP&7J07?ngFH?ON;>dNYmc&r3@=7@=;-F z*i_L`>-46`5XS5V)@3!~Y{{kLO4VN&xtM>^@8)vJc?liPcM_9$&!pWrn{IyGX%iWB z$?if@7cC2Z>l?BXze|I|UbF(EV6LwU46N)RXwGOMaS2?7LYW56?Z(WFrvrso&{o_@ zuw#ar6OWJx|>Mw10S-~zx=U9m(P);3=Y2J`#7vhGy?_&Lp!6} zV#m}aJ2HyDPoCgXuv@AMoNEbm_uZ2xcX5%WEPh0V;S6SwYgY9Ek0V_k37PYe+Q!H* zxw}$kV0Xrqd4^Iovz2NuBX0ptOp{ZKbJUJN^S1(E~HcJW(1nouw!fyOf@WAAa$c_io%wU12j z&T3CW97tCt8ouDVW5SKyMrE4qD5!h~7H{|!yvqg_e9v?;+>B!vW=P!{lL@_xr&iVT z1WVqfR?=wJQy*&AtkvtP!lO}0O=hvL_hwfJ^Cq)eYndp|wJ-QWFNoUgu^xA@LTZ64 zP13n-2cW0x<3%Eb>-@hq>y?FimLdD5W;SRONW#USmAo-14(gM}$Q!a$Fw)^e*&|wy zC-DEwo+&IS4l-|2Ih-O;c|3i(S#y!b5T$C$W%jMaXCU?7b&#OPS zFW*CPE{KvHIq4n=_acqcS`U%^Qif4y)p7f$FCt>XX)g&9CiVF#$tD6UF@&uG6`A6|Tt z&ADuVBW8Mfm@{VRzDGb-E>Nj)y}-!T?+N#GF5+s3Yo&0_Krfe4_g2~6O3;E!dAfnd zZn-}%lzD6fix&nyAVAMT4Eu9y4RJ&N!v#>>iUHeRan2T`8o$5$Mx_u^vN=8(;fUgfXTpSfbEF=FSylD& zN}w=)ETdhc)jnOSQ2ctjfnJ)n#``oYp>(p4KX`Fms}$#n#Xb~kqUSA<)$Pbf^;M%z zqOSpoPuB}8lLd+khh`+kk2lpb75CJ?^ue!yeaLt?8S9!=qefRnI5Q4?58V18GQU0a zKteJvGx!M|cqA%+z*1aI$!?|5CD{aaW|mqabXF%ijar%edgl|`2jQ)Q(w69y6cj}W zR@s|HyMfuE9&lW!4&{HD@%|}_U9bup<-lYZGMoL>+Y^R^qr_^~BC8?=u&C%G-wwdB zs=(bB0}n{UlIP)Yf@z|x_-i1d?i~^U;+wD+9H%dY739ohy(Err%JYPrVR#gi*H*P+ zmwS-LWRa`=55BQRRr|^xVUVCoj}ub?(l`U3TUc3H8*T^ip2bR|R>kBC-C_uCD2l&; zdia$gu;21{E?&3Y5=uZYzskM)8(azPa<_gs_*%C(<80(GtU8l!Z(~JCihkcbICCQ? z{V9?KjH@Ty&DFt2#gY?7LlTS+yQ9s%bLFY}Dm`%tnD$3h%bf%~Dd6KBS9x{sCA#xv zs+qDNC>-b6*~UAikL(Ny=7NOh?-}bXo|>=QHZly&iazXPmL$WY7-FTlU4*)h& zmEyo)IUxh{peYn40K3cfuOnpC<4`=#Y2naCg?L{_15WEL$Khu~_gWecFOzrA^s7Jl zeFwkv-~yu7PM;7_jvxK0-*Z-U#ez^lSIChJSQ#}MNjKzGPf220vz!0a zVp;pd)m0v@kDoCV!F%@0bwU{Tanf^z-$3C77|dHz(EsdQdA4k93A*c^+YpTLYBWp9 zPzLXjifJMhcq8@88Y@pzxdrEOwpN7&O+|a2Gv(UFCnkzLljqMb(n%WZhX04JuMCQ7 z+qRAZL4pMm+_jP5!5xCTySqbh2oT%?1h?SYjW-U#-QC^Y9lo7&>)v~YnJ9#lzdr4f3VvRjYJ+OMb=A9Apw5UDqY_ZWty55uCEN&OA zN&<&&L^@G5{MDriOFzK?-*X9{e-OrffA6E+c!_vGNZu-yXSM?{65h37++NOF9A&Si1|dZ5z5T!m`v&~ zxJ>HoCGV#NNw`;3B$nAlR@HOTnLI!*tU24;4~g}o)of+#=`mm^F9MI2CCLSzH;VYxXv-MB!TSd#J@AiB?qjVj|UE)qdv^d9p@}Fel+@8I&I6%QH`06q{Uf|kD zPe?cqTn_cHp%}`T$;xwfJ_h4kB!K>{8)=sfE)e5%CW!wNLEamP@+CW%dI*7trlhp# z3Tsbv{zUSWnpJ)2uJ|(Z%O>`Iy2*nRY1g{LV8AiT3n3vg$+U_Un_&%`#O9}m4>t=) zOK)O)i-6uR*;rgGEt4N?W2~k??Bsh|bxp{Vy>vKx*OMMe{UU&LH+vsd604@P=lB%e z_U*d*3|3ls2dbAMpy_1<5{6xsS3=TTufGu2#WmS@-&rN8mFjxc;@_{eKkbXXE$+Um zE98jOwd%M{i=8(S-UHpuD~~uiXj;EugBBYkO_g8ak&ccr#V53!W%AyB-!_i@M;@dy zz?J8-^~d2#v85i}=QCe3uI(gNE{@v`MT&Hztef;O_UhR^-+G zEI#q!db8X)il1zQudee&t+_O%sB|Y+OR6u9b|70U#y(NWm4Mhzk$HuFdTnzS;1BrI z@szPm;Cr_Q%P(ba#bqp;pM6CYQcRK!ScXR}vyI^;R<~-p!JM^PE-F;;gBd}(U;-yl zr!yPeBBE;YD+VN+RRqhN=jvRz4pdDgF-h|dEN`w`7BH5G&PpxMY!)0IxM;y3HVir* zEs{7DoLQdJ3n>5vFLg?NNtVj+C$CF2Ci8VlhxI7YL~!*C$2%*qNk;$xgo?N}ho0Kz zou*PZQ>&K-H_4AK*&Q~2Sa6yQ?hogBJ>2SH`TuUyoy1%&M$ndrfG}KjFb%|F_2N99 zR*=(DU5yDGw)Fx-;YezmfL``okRxv*Js71LpcGKlBS79;96X+Ua{uC(vZ*f1)8zp< z!8mZ=h;?~Kbp4yqFQn*KvjuP?F1$i1E#rER+a>n^vpCDvU3=-G{w8XB?c=3Bf04Sg z=gRFsFS0q1?*2s2K(>49y5sI*=rw}SM>Tr8!GL5c1@dH65|N-`j~J=C_NJvOtGP)+ zVw_PR3Jsj^_zU01_)OgI0Q93|1!*2RArsD{@=!Gsy!TR7knrP~3KJREl$pFp*TK2H0M==|7SiOp$|(aP(=YN*+0oPkP54OZ{#yvU#FMu z^uuJHzC?pdW6n@{tpcG%(`pe7|M}jRM5xA|IJ+jOJJ?~qm^#472bNoqUwxmA=uVFUYWNX)ykF!{l&PhYs z%K2^k;!F#Dbn;y6KZ%k2QKvm4wb4#~mdXv*#fQ6{UK>Oz8=8)E_FsM@Fz5bmGS8X~XU`dG5M-KIU-u~{Pq@h)lQ}?IY zQj;Iv)adWV_}I~DpRa{tq5}W&&%N5)!pF;-Z5z`GjIJRcD<9Q zoSgMM=?TCQ=`w>TM0)i#r|q}z+dxv$zC*s^;&8pv;bhRSP7@U zHy(<3HFIq_HuT`DtGTsDS7)YLM;3V{YY}?VH++*@BKubI!a?*>xaesaBV3&WoZy7T7>rC9qx~2mGEYNbH14>Yx=U zv}Kp$NcloyKrP(D$kJx;F9CXJ|LFgz{JbD8O@f1XyR;w!h`pbP=c&;%1JJAiE*w-8qV;9YvdVX(KT~Iz>4c676I>z zwa&WhAt3H6n`gH5{gt5!+mY@W+r3}(ez-)vxSoC?q?#1!4?m|FAxB(X{w3OgMtoAP z9hPpKM^y>srdJKtDmwUOGm%^zMxB#5vP;%i3Q_4^evSFrYA2F&Ea`dE=~qTQsWxU& z!NZYIQ&w2y$b~F@OG#9GkBx!*ztLgbv`V zY2bumTJpTo%E`mI?V%uMp3YwofsxZ8v}~!$EiX5MkwamYO1Umd1d1VWQEuncny*we zEJqaTMCZCm#fU;8K*oon^QKc!tyywij#>I%KR9iCny zi?3%|L1!j$-RDo#{J$`n^do9v>|Ma&L5TgsIlmxwD5KBUnw5f_80Y$}=8L>v-X zA~@?@Q+kK2R@k#fQhokz&%X3ff$J?h^3 zlxwAV-QV0hky2a@b@lLo?^t^rptFcrjO{6&gS9Ynt0>%ZuT>~X22we@ye>V6Hzsc0 z9HpY_c+(>9qw80-z2%+9bsZl$g@p%rzRqU=@iz9(vz9pQBb$)_9=JX&r45_K+;B)| zgdt&bj5jTJs2kt2n0RR~#1&smkqdLka*W1>y!v6<2%eou6n;`r;Ffn!+2) z$WO7ra#PtBmwVF$Uj4T2quhkZvj?Ev53gw2F;6+i*GiCQ6aHKd`T5}$ijSzxcnXJ8 zVeNTz=mw0&ykYWzozfF%pvG>^@OE<`DH)G{?$i;3dBnhCj;4l zF%#30_myYO)NibS10ndJna2o_{~}oCtgE$lr=zln)A2Z+#H-X6aMCkyH1%ED$-EM9y~?r&VvB881O_jG%D+~0`(j_RCGqN>COzXT#-LBJ zlIY;=FOxJBpGAI%!L8WmjE>5WQGFU(Wh3^a9qTk@?x^IkIvbjq`E~*HJ(-{GmhKp{ z!4EtWu=WBWOGIcX zi}j?b!pLE*q=Q#G<`UyUJFiRIXo#feLNU!b#WJw(0D<~mp`16MKZiwr)Gjk_Lo%#*j@xO@`22EUd=7|_my>VH{RZpIJe%M4Nv!>Wz_ z#E+QtqOWGXF8loGU#lfUDCCPc5KCk!fTd4C(Il@Iv)S}ZtQSQjhbzt^`P#Snlz=gi zjczYxWp*Ch2>b;(;iZ8iJ#iEKCHdXe<=al;a`@@bT3EBJq{sGD-Bs9?j3j?_uk!JL zJ3r0TcsP2vnr8{-f@wM%Tpl(rX}o&d2g;IFRyO9jKYp2r%{B#0!PTLXkvzM;!RZ+ixBPGsITJ!noj zwnvF#d59QGY}c>$KK`ciR;0Vy=|y>S74QEQ|HBA)dEO)6yEzz!)C0|2()v%nQYU4)cllYOm2np8Gt)p zYIj61yg;F`^eGFO7rw8j6`)IFv92^WKD^}&xTs$AAfZvIBy9G4?YB1}@uaOFw}gQe zct%g$sO=)B2V=o?lu*oL+Hr_|SNjb!2RExf657l;M7LsK?wY9Eyo0 zWD3YK03xpHR+Pt774bpg7*Ke=)7Hj(&@FD=(ZA8gxKCNAiJPh8H$I;p0uS#VE=_T@ zY!@CU*@gcZTJXKtd8N$Rf&sOi&-^zr5KA(9{_G^eFC5*{^q4DveNNB zjV<&&eO!Uv+5K}^+=M#Bpg7x@v&*?7-9er^&5Axqea7)V zkJ{)r7>@UKS2*5XpvecGn<)P zH*H{60Cl!J>6cMT09P-e?d?-&?fPh+GEU0`@SEBm4xw|01*mesiqNAwa`rcygKC*3 z(<~=E)`yb=b>zs04SH`D4XXnoX|ejtgSq4ZRtNoNvdig*oaiq6#i0jC4dX?p11|4- zO&7hIZ%>a`N-taD(?eVl-`zDHlvGgn`8UuHaopkJpypNKQZ#G$Ec(7a12t6Ympwh+ z5%f2>o*Ci=8LKpVJ&d#PqqqPpshrE3@SBvrkg6~JobB+uCjAL?5~hm{{=X^jkM^yn zz^>4Xs1(RPMazuj4?Dj{pie}X;i%<0Gaq|85hX~}A+H(A1RvaF9d*QKr$v@717hBm zWe=wY48#=&MejC#9VgB_@b+12#Sj+~Vze~(1+)92HO~0z4CIotqv?))Md3ibYCwkf z;RBP)PRDyhA%@SKhcybyQSUN4@c<~QA4uW-Sjr&xX>Y$ms!v(^=Z16a4?yKeUq4TH zOEh}5 zAk}G-Y8n`TYK#V-AI}x?VxOMgQne|E=B5@8@2-m^X7=nz^hqv>h3+q){j;S@=`Kos z?JiAKL#zOt!YY>8!UhU@?6kKW(j>~v4;c1<&aQffU0CR`EVZlQLFX^bo(-4De5DV8 zJnJoj?Hmw1Pl%3#9f=GCPxu1t34v6#+K0V{jc;T7LMQomTENX$*h|L)@6;VH^~7CrOT ze#04^o+Bve`RIq0%^g5nu5LXJVAJFpY!2opxR+)Q7IVl;-Zm&wa0QW#iFFS+2LtV5 z=mYy|6$1d>Y@&bOd&v{cE?+E$oOs@4UFV5$=wXZZ()cJHvE2YXSIO{OD+hGGD#Coe zZ^b3sR6eE4PlE$Xn;+|ZHk)AaKMo|bu;EnAea;jB^c;LOnC~84kGOM9hG?Y#^o#UL z_=@-V`_2AX#-_!c+dYS#ubFjL82>qRi03YV?TPn(*l#nE_c7>3O$k(k>OQ%zX3Py5 zoo*3c6mX?$>0^IF3P#lNuQ?*%b3~fU_y-{Q=S~#p@Ty zLKuSC!6i-iqss|_>A=k!9|UN^^^a$ZN&*BDnbS9_Xf?0%_#L5t2^O56{5Ji!(wPjp z9xXdms-(6CQwO3%@vJ7*@-k{#T$fL}@FkqoiVc2JFU}PpKzut-7vq2T5I(!3s1U9g z-*@3ZsN|@~BVM|ctbOvEw(PKG6Lo94Ql&N{?3rMI;-k8H%}W_|A?4KYwvt#HG>ptUU2($@4*@L{W^gg(76J&q|dQIez8@?Ol*dqKs(OQ`%wA*palC<_>N&}#w z1^o)1LIC1Xb-xLfzReC|8qc+EkcUp~9>l%>Z0MRw3`PAcRMqCxyFf!)}-MHRIM=7b$Hyn zuAs@*btCf*L%jZ|#I`I}v*Y(mPmTH=w&=p!i)99)sG+O(VazRF)rH+#qC7xG?1W!{ zQi|(mdp~~?$=TNJ>3#IT#-6wFA$mj!;HF_A6!W!}pnI{Lfo*Y!C4?Fq`yYt{WDcBd z?|r^iADG}pluR(N6shT3TdGlT!S3P5&z#}4D>KDy@Eo-?3DKblsl3TFA1D8^JC8J+ zv~F)jY>j^zI7KUe=eJ1XnSrj+oxvg)6TI~zJW&s!pHh9eI zt#69fZ@tO!Hujxx?J<;B0^S6<`f^!bSxq2pj<1XN)Lkmm1hSE>e4%oGleE@2InKK5 zi!*Bg=pU6CWJ5_44HwRQ>7MAQOF-@;gXoeQjHxQ3F8A4>8G^T6>m1!1E%j`t%eQT8 zPP*y)Dr`~J`R~%dviwzZ_KB5#mS^e#nc=!a76*C8YW|JF_x%^P$j|sjABC~Iqo$&c zhBN0SSJ780A4;dR-IHUfYFe=g5q(N`vtwkUnlB^sX_s77P4RxL-Mq!IW(Mdv3_;uWhptPbC7)cJ&iA8CO!afVE>i_p^s*7J=`yo=&ZpIh;f}yBW=a^Xg0M!87+6dyzfU|_!#T>o{2?M48D%R05d-R(OvinzGX5ET1 z!2t87Js@6tbSeyo4KgZ0h3O6#msD*^*Y$jm3gw;*{gvDAdNkMZa@#0|)>wqbraK*I za+cu^79c{nA2rUUxNfRls!NJZUah>mS~Bsfi0V+ZjU^W`O9)CSmu_n%DQFKauE8e8 z*7~wTmiwfnf+N)K^9wn0(VLgt05!<`%T}s$&`*G$9eUmh_f8bZ$7#87B=z`e)j&n<(7q3_9+P?(%lZZZ>n32h@oH z5hDRlbDG<3Pr^Y+K4IZhj0}%n$B#y%Ar$h}sJLU#quV_Qf|s*YMfXA+0E6$3{c7*a zC8VB;N-$RtKTzeZBN}wx>q54t=mnSKEBlm(0OZ6lNHVioV(MP8IUraz0SE^Ae^B{{ zUKFm?f-|`sabGEY8l-C|ElDxBU&GR$umRMSV-w_E;S|o5g$CG@-3@HZhfDDZdI+}Z zul|Y5`YTDA@E!@_>J;+gO=0E)4f`poH|-6(7oF%rpD-MT&`&gmamKk&4*M(03c&1% z8o9F8?FW5)Q}^UdK63ILdn=_1^oOQji1)m>Q{$}qNIcaFts@R*dzl8p_vtV9CJvrI z`TM%{NZebzWaGTteH8biVei6c;u0C>-t+uoGfwtia6{#_ZfM4@Ca=cSh+~g_s8crC zyTt52__7v(q*iZ0gqS@PJ70wQG0cQ<^5X1YUeQ16P)hS0#rT!A;yRrEmpkHDlzf$v zv>Cg+Q~~UxnS6HtTq0KDw&>-OY#Ts)uUAWXHOExY)z#Zl%?5k@H64)Ak1G`Pq6k#0;gl24D{>MO*Z=e-nG_< zGJr3bj3tpHU#9RzziAx;`h-0qd^pMbz4`Aw=s=^jYdPl6S0jJd-!Vu47f`@YwObZDanaF#Op6%9(M6>*dIKFa>VB5|N{MKEFd6;ySAg$_+#&h`XJE zeU6kVwrH7!yMYr96IF!oar~TVDkSsa+mN!*0@v1lMLz|>76nX~yTNp+UPdxdG|88b zLKhU}*So(yDaZHVxlMo2VqIW1t83j2diz?0_wf_?+8xQa6_n2;(YqV*TE=SaSntcb z1ui4j*22bQn1bly?rAzxuC4up%(hb9AuSfliGS$CQ&hSf zG+L5BBf6|zOl_PYp;A6nn#IRn;h#;(?b|QqR!LR69U>cEH}PH@6u7!{?qZGfEm8FS z_sRONcl^XtOdlMqx<2rd@G`1a*0QTP&nL9T zg=RWK2u^&xq$a}d(1aK>9w15Qqqe#b=V2tDI@5{hjpaowGbkz>X|hT+ zhigdzl>2;E(clJ~S6ruDyL8@MDkw%)-?5&QbC%ukmS*u*K(eB@M6GlfTq}7~=?BSn zr!MDf-Sqxu%AELWwE2qk@rnVk7^1~`%EHoQ=-!}gg3en|53w%NSIm-6B`v}xhdq@{ zZuCx9+RbqFer->S5A>eUSzy$;fFs0~1uD3bYvfY>^Xv{*>j`Br#Dz*M6Zvv&%Oy8c z1zKH_sT>{4FgKP3x#8GlD*<3jL#nH(C)98_eII{>_r^H#IR_|#fZ`nC_x@X>WELv)hOuaxgSD&La4retb#XYIR6f}%Q zk^yQXQuSYOdfb28lguO!QcN4zc(I-p9{{>J<%uikQxgqX&YWB(&5~Ru$&gT_uvZcB z@^~ay3a4U3?`f0G?oEP0Tfje_6jExKg3%8!2yL*YR_v{EInu_I&t0EKQJi4a1BI5kq4fg5 z=q(rnjcg^M)h^iKHf6@4|J~iq+ZIFD9YYW<@9p-Ye!#X%6Cb?AT)wA!up7&WNM#~} zfr#rN<1KyD`sl|~%uFnSdj*UF>D0Ph;XX`a$<7S zy@z*k$eAONJ79L`V@9^Lmy{@s@V@z>Tc*seVD83QlwP@X_i1mPq zY{DwFWnsh?)YcAzrnvEvBiF1V7bc21Z^l9Clr0{<4$Rtisa_vY+o-exLR}|Tou#IZB9x{nzxo@M1 z{HOK#`V~~)AUrZsYYuA0)KMRD?Z*B?p>3O`%+l4xMBH{v!tqGrJ`EkOIWq`y=?nTA zM)$_7XXDU5QCnWndQPHvn;I9jQcS|5_=v@=?7XAhN+h`4vqMXRvCGtCFVc=D3lm)5 zkU3O$q}yOkHE%O-)6PHF_8h`rn5b-ifYp)gtKOdkanvAR?6G#2(9zdHojc20iJ2UeYCb_Cz+7UU3mMa zFX+nNQ$%1j4|`OUmY!k0Rte^m6DZcppcM6c;#8m4v)c;3GybEooURnv&nrR;I_Jc0 zE0Rm=7(&?Od;%l09=^>vLq}zP!2#-HwF6Dxs(PAiviLP)!pbfUR8MhwVt}y^-Kf5E za^VZHS2^9A^~Gfp^|Ur@z`qfoj|M0$9ce3BLR>x4nk>g)_fRen!IbY~JGSqMmql)T zw@&$bq{QWhjSUg`#+bVd`H4r7Mj7i=F*es5Kr$kvn?n z0(nR(*`BcH`3KU=Uk#JbXxDu@ktk&tvr8UlP9fmvuc{@OuK?Er+Px3lZp^T23$^Q%Z{0brb`GRVIL@H#LUK9Ufudq^Q z4@998{#wP2$%(ae_Q)Rf{S1Qdp^=?cjnZ6jM9OEXI#CQFB;N zI>})Nw9L~ItC+J=k^bq7wZQZV*~Kjnm-wur4A(!QYWv#j zd#mC5R-uPOYby#!NR6mI=)!MWC91tst|Re6YVB8T*$@6ax}bKnt2wNd62Qt|Qeu*M^Pw5ZT_E9R)sGcRw3UX*u+ zoCWXNcs+kl9iI~g--wcvw|@<=TzsBPjwGM$Qx`VqEU0n3A@zAxPVxQgH!>PDI8G)) zO3M5&4!W=<#IT57YPcZyAm0zq`QM>pydNJKk$dj+PL`ift<4zIa0yM|#TyF&ipKRK z2kF$pI;SH~iL1Ty%jO<;B`0X%?SdOy>fPbai{~iM{`BOF=mJF@<3|-bW-u6RyxtwP zc)v^V_>2>{>ns19>;<4vU@_c zMSmqZS_K_NeJdjBpe~}QWm(?GJrSdI=b9-Do#CBOC^gMR4U`XL^gjz1fU94zwKKLPdDR_w3cTXIdl{&F~iXadEc} z0+d>c7Q@L?$|+iZ9+clB<n}bczNzkzr)Ngw;!`w@o#J%mw-!{J=QeI5 z7wqVWNdLze@k=ZNinMbFou+$Nog;B0fI?;rU~vzbQ=quXgv@pQ)pc_xuO1DahpcGvB(V(|iqpKmF=alcu-}Ci{N4FG>vM+DM z1Fna2m@C+g@?y|4FZT_4-nsP9MX6a3c>Z|p>Ufhxq7{P$EdMCJpcaJC%qhmNCkEgD zsz3{)K$8qtSS8%*)sQS`yMRvarfromozB`rNe@x!(+1aGibd*X?I9Y!YmL1WS}RNa zV8uRe&uG34?oFuTiK)B9>{Qp3hUPFm+_=oo>!cWM8G-sqiwaGL(IN9DFbU)cJ4ZX5 z{-AmNwF2T<9w~@Lb}k`fSHFIr($8Bt0`uSV|4Wxh_TE9}T;~?X$M!*JL3kpXryMi3 zOL2g;XzMNbb9M(udC&Y-kZ4bnu$K|)3{f2~@knxVV7r_g?4P#p_Ujiqsk8cvtmIGb zp571k$?PUKx7LyQ6%}orK}{7ILGy@=^sC~^bR3|*P%)zpX}NsoSu{LYTboA^1wD!r#biWks|c$R5eMCouiPrUn5a>1_*Y-Eij)i z6W_6(4Ptv`{kXhBMk>#meaHyo;h>_4oE4siwfNANa2IBx0l-tH$- zYtKce+i^2(E1Hd!UY45#eGPgU4&IHeZaO?1XfzLR#O*<-{&{xs;?4QGDhkdkK3!eZ zAg@L06jeZ=`NSR1c!BU`=A+SRF^2k|1JB>1(Z^#r+{T;XR>Pt|4bFjhV1Iu4!vgzj z)xi+>l$%&6xVk8_c?PJ=b?p1-atSV+Awi>%n`?et5_$C26M~pt&Zr)`vc3+=hoFDi>KN)>iiwLv~%BOJe z=wllVVQa7bq36U_2MqTbeD=8i`Pcno`A&wOhd-SVF3DJV3VA`W#iC;{&ETy_8r{_8 zz6T@~Dyh|s#U}Il#6MyaJ2|f~rjl_ikx>8V1OEO3C-_$i>cD1YaGOITcxPHyT5HmL z65}zC*F;;1uNoyOlk+*wHVE6*Ki3ag|H5&hUq@j_{hf~J&gkd( z9>Vv{!*TfI(q6KCU9<$S%zq!nKfnI?5iZP(b#v5=);Pfn7Efw#e`BwIY_IKVHVR(p zPrL5-_woz#9iry!AP}YVU8ozcys9tOOk0sM!YSdVM1!mb7QY5_F@vvO`e|=KvIC(x z<_IbUYxBc4PUOwU&zvhi)i}(kQB~yUe15juVbmH7R5bY121AHipqr);JjOTkH#^b9s~-PVwI-BuIxW0L z^+uKQ5aONI_(cK7qKb}=N+eDYisx=u{uRF0r$Bgtj9%-s(EhbVS25lMNQL*u@5Lhv zdS1tcq5XKz%huFNt2BI{xS=O@{hyyzXtFp0s8g!wch40sk6vf8jq|t z%?5o>-ZZR$xBr0EhB01jP`x@Yw)*6o3VfMWisz(M?1VfEDG}I$8I#q&Q z#b1o9VlBij)u-eQ3?;B7sst^6*d&w3GG_#ND4BntFDv{ihT@jih|9)g;s zPM~lxu8M#u=$NPa6?o3cUV-b8?4-7MnV~W@VVZL+fIAtU6fTP zB+c#K{CP`MaXF8pWc96L5-k&JHuWxv{fg`&mAqns@&^G7nfyP`-cO1*icMJ2-pWGz zehoEXl3Wvy&`3ttGAEhOu$HY#tSw|e$5JpRBzDkri=&@DkyMTBe`qAY%=AxcJ`ryE zV)VU)Jgz;*r91j(Q#mpqnJm_%oI4&73=|uPoahOiW0aYQjTPJGND}B?DcbIGAVFx_ zOMD_6p8h7qDw)V-p)?tNVpKITV|*Yeaq~KOyxd;zkh$(hgT&-ysDp#dmR6OOAj3py zkiap_M_{VXu9asu@K`iT^RpFAB~6_5qaF3|;3f)6%5SiTLiFW%P@qo{{yt zj4F|<0mTTQQjH2i4(CT#=1w)|NaSPQ>|K1U zP->;#L=mNq>0<40!qU;+5{*_-`c7FfPTF0;<*Ugx`URUJ)nvg6NwrmFLW_!<0f#e9 zbeozKFZaX@e;s`&Pn|Q|hxIooR3!O1l{8LAAMf3=b4&KL*^40!F>%DZQsJ5m+|$HP zoK?FcM(F;}7{TECTtBgfr)piZe_K_4WG6jj-^=42B$W^O!0BIyVZt(liDPVu)@Tv8 zgpvgbtt2upJzg#KS3-Dj* zW4Y5ptUk{O@lB>UzlX)U;Y1~_UQ&QGIoy7%K$3iT=;LqjfTD?F51 z>jD&_B$vA;7H*F&i8KuJr?39-;}!K1Q}H;yZ48t;J)}fJlGH=IQh31z~A2Y z@sa$R7Ea5XsrbU=M-}p|Vw#l&vYnStuUiG~_ctm#Z4Pf+P#Jue5-$*D4ZkVM5SQW^%lkHQcwS`9XX4w=^%Lx;(wd3tPv6)E!KH5J1 zdLzV3c>P4dV%RHInUAF;;nu4m)F$b13O!$HDQ2EqeI`xn%p3iE{G5&qbL4A7K|n#a z0?uCt@8460zg{Cz*nX9&yzRc$tF57jIwy_AgPBs(OyvtKZQp4xKv4=eQg&tL;0xmu<5;f~$T z-Mr8?Kb(Ijh<}I2eCgz}b6TOc$+^=_bxqSHY$J#@--^yN%&koNz8eaiUJJ`8by?Nz zv^SAnu?>9Qmc~g{P}vdQ-EtU^At6O(D){lHq&c zxKa41W&z$_M<>{QO1M~sAdmV1Hy{76ZK6oRH}%2$VBo`8RTxBJ#zOvMK`wHfd}vAd zPBU5o?d+cc^xr3E*cna|f7TFyh&`Tpqk7GsGYpHA@J_A>Jx%66y!q3R{)VkGDEUX) zDBPi-z>@s0eY>~%&63}>O%e0I70tJeC#_@_Fw9G%6&8oxpBsUiAdEVBxo?&gy7wET~z9r z^|_q3_4Yn=eFZgkc8L4>HdqttjVU(_@pEA{`uz ztg&b5=IRS8nRaL%QO(9ii(_V>O6dOFIPZk>TwW~q{7k{j$wyrzqe9vX(b{%gIng<7Am`(c1--cx%j!@T%jWvO-L2?P2WNQ+m_tn z2T8ddMOVym~&*!d~+zyP3+GR6LjRa{wm6jt&sa26o3uiw3brmb;UD>pm4^jXT5oluS47o>w`szM~@M7vFJEvMf*y*`O?t`22LG#ak@DoaV z*Ev@)DfiSYY;1c~G!Il5@Ap)O08#H-$%wFc+{kOWN2G`nshmx1BCn=k_&*KD-$TeV zxO0*hc`~@xU+~#U*;X}lY}i!5=6yXxe=G(AZ+@_RWiJMc@%&q*Pp_9JH?Qt5Qca9h zS~2h7QNz#6I#B)e+(A;JTEn7EcrlfA1rJ$)u!(6lj-C7HO3+wOb3o7!)|uW;R*Yx} zDJwS$-HqsYGEJE*dh+d}Q5y5cM-wrqIaCn7TvevjuugrJXW>4SDrh`W=w+q-&EBTI z(xU?jh8MC;>nK*R>OQ5ZVJTsP zyJZwq@#y3g5klLYHkr}ckNB@L=QjECTIe?mX`U4AuG1u2q=DUaMtUzbr2nZg`T70o zyk`Gda- zTijGX>7qlPvL0FlS zkyvL8{SLAm{G^&PFXS3lVykiJLaJ*)9gxHT8_9KDTbn2dL&MTk3Q4|2hORT8jezCvhMk`&xMP9zR?Lu-n*6SgTrH_C+ehL6}P7xQ4zveEs|1{r$BrA3CLXadXqw zgJ8<-y&J;e*UvT4?LR+cNUYk*@LGrms>*`IevOin&^dKcNL7wTdu;pcT2|JmNPS#s zCscoPN!FwM!$Y8l>~g@`R+#gC`Ugefu+7$nS@Pik`SlZI~aLmv(Yvw;mztfgdJdlaj3HCpYS^cGHYyX z^g;U=i>eqDH`n>-r!jb`!%~3t{n51(!D{pX}rBF#}eV{Zfm%Ps!LRlc!~} zc5JiW6c*|yUXUn6{ph{$5F(p7HSviqGJTt!B_D%iRS?J+4c+T=&Q<W7DZ z41^6fBfJ8<0CCO= z#s)vGbwx7qUO!$9TueO?F%<*O_{lvADhwUc4NBM0ok|Sd-3KM4JBRK@ zYUn|c8er&7=^VOi{vYSud-UGlxoiE`Vz~y_65->Wcklh|CmJ@J6)H`a>P;$|<;}zS zPkv+o2GE-;86fHB>@uyA_d(f-g0 z@-@OXNcam~OHM)00)9G?KNoy|PsqQ%sDGEw5ZHfH--pnvklX5_QY;5zUoD zcFWE@(vG51KLrD?1ZDzTkBt9(H-)v@u|QV!kqA6jOp)i&6O~hJy^Vy49Dq3{^(-xX zn|88NSAI|t^TiSeDH-0&9uVDFT%2ihS51<@Y11_Ffv5ce-HU*(E0>L>s2@YR!X2_vHTaT0N=h~A z!osCo6{2FmlvS2)(?NJ8_k6Z@+dYc^uqY_a5et_d`B(kp5cs|RxZkl$Z=dt}Q9t>A z^nZuH`2hJUqvD=kZ3l^lbY;(4V^82Go{+eiyE5T(*Tt5B0QPsPkqTG6Xxc95)h{ z@O75Y9#bk7RYJUktr&;Z@_T7a1-tGp_>C5*huE67CS#J5@%F%#rzIC%a_Ujl9`7W+-O5U;KA3 zg2D3pnX3Wf_`ataA4tmE~2bb+FzjGSz*jDw}te4XXqxv7dbaGi}wJ+BfXznc} z(X=<(bLC()+0tpolGA<&?9BlLVJTYUV0!+ncW-Czh_S!0U$1%$@%7|*$^X~3U1#Uo zn(vxXUA*?2XIT#?LDW2==IGen%sRPOioUaE+@BbfkNa4JQC;>2?+36L_#sb}Pf&le zdr?T4TGp-qxK)16>iy#P9`yLq)z7zc&a7<%np1o4=}<13R!Ryl^%q4FdX0-pubFt9 zlkT-}UT|HsUQgydMCMLF5-q++s-?h&$Jsbw&RE=4_>ayMBzdM5Y|RBd!jT(QxaLvr zpMxD7`WxWt^81tq8Qc5zIK0|zfol46^Vv+>pD*k^d6|(uI4?A$VvBA|PrN;xl$G+v zj;bC1PN2L9gBxkl65tHl-R`&L!km|}W%p8^ER3hRavkN7(>LMOuiGEyQ0Vva1cgMJ z^N^AR9Ot116&Gu5jiIpRTSe2cjM}n0CDBq}#@?EG$7K^dX1W&6(Yda#R8gwbxwsD3 zQBp12lqFKq+MJZu&&v9x4wuG^mc7V?`tS?irI*O+?<>;7T% z`PkHhCYzr(-&=1Ao7ttOl_NG#$5`UA#%V~YXAXa4<}dZ|=QIEFV*dpF`iE5Qf^U4q zK>;^s%%ks;Z({B#p@S=o*}QX$=^`(1>WEI-n5VgfW|B0BKq>OLF|~^8UvhN>VxmJ3 zp!;ny9y$&hyc?>kV(bM0d*iT6f`(ezsQ1qTGSch5! zh?83WQ0BGlX?g5J@FB$LlCD%DFANW=WkuT49^|U4N@+=}LG59|e;gRl#~(fDBneME zkb7q`C`se=8Y2E;MpKduu7B57eAq$!vG}(C(QulZl;3J*Zzf(-aS+H+zsl4_;PEPMG>Nn z5LR)CQpb3aMGwRrRm!+8>FncRhtcq8bqVWD7VJQ|{i@t3H)%nysc>RNv*>ez7c`QL zOx4m?%BAFzlZ;<_#V@G%98B0ujpigf?8lz9#u@c?`ykqEZlR)67C3jdZ*d*BrtmBc zQr@#Q6{pS#@zZhSgAH>agY{Hf%tkdzHoNi z2Onu{nlXgFJ9r97c{07T2I(lXAdaqOs8rG`2fHg@7Z6+iN3-`YC`jTCj`zhB5@Nu) zNOQIA+{|9qbgVgl2!rxZ^~`uOZUPCGW`O(PiB5+GBhYn-0=#dQ?T!ZnSy#>+X{eIQ*i1(0rr8aDH>VrDwkQnp}AK_mMai%KMN zK7gz@;{>pClp!QL?GNbj#llyIU7jtkFmcW$4>;#AyB$8OJYeL7qKvKkRt=WB2v!Ef zNtbo(d3bm>?sGeDlR|*}WtM1^tEIU)s~rDP%uSk|)T*Z1Zf9*yPTNh=vWHc!OiI^@ zhpx-~U3;|WNg^g`?cAJjuyzmNj9>+s;vRgQwmME(vQyDr3Zdd96Y@w#+5=%Oo2$N^L+RV30Y6=6M}s*ZIpcKsOIOE@Bf{D)*2KkpH>wHc<+tLPoU(yIv{p zm#B?Vi#f>I_VKSy*u$fZ_$P{Wo4WWecfWg}T!07#S9LcM&#a?|_5f=_nb=HiOs?`u zRB6W>jmgDvbkQL=o3Ku$tB3uR{tY0axVO35lW1_9%o*MRUpQMmJ9yhTHol3E^YgTf zKfALMV#1LJCQjWn19xE9Z&avOmbUMd+5i6XXM6W=bn#z*rx*nDGKzwmEnZCIa zZ*j0^BopWl-@iJ*0YCddEFe{hQ3u-l>MEnzq17=`KAf>UY&5t!t9)1Ub9=ibRgFHGoPk4*g?xhc zm{S6uKvIR?obMm%Z|G=*p$_}{dj6vCez~9jZcD%ZAO|uIcoS=yuSodz2sl10=0dNv z@6Ge?xR!A*MF?xu3{pOh1!*fN4p9l%5>N5(cYa@4MIW$|S=WOh=bhr{;3>h232#n5 z<_>3N#S9TlRGQ571(hHSAs^gB6~;RY=&==Y>s&vdc%*@!XSq`fo_;$io{?*8%x3|# zo-2UiRE-A?^LPJcG71VZsgGyJv1&;T+x4vY`j@A+iOg+X8mz{N8ewBVDBu*zw+IOA zGl1L7xQ>S;FS`Y(&)6l2f6Ygr?I~SEbI)Qy!=2EBE>HtiDOI z>s=s!b;kpWPpUNMHW_LtGS)F9D>!3OJu+JNs%mnn@a&-3!m8m&^&s`6FjvfKhZrcpTYmQ^kGV8r+A$$lD%f$q#r2_x8%T@u-FSn%$g%2~b zU7M$*?ZM)XMP+24F1(koiF9rNQjmW4fAmGa-4gmbtGSsLKw-1gp=%S~|6Jkzy(V)6 zatT~*xVB~Sirs0&&4l*_hqL0QIJ=kWOottZs$78eSx{$z^7XiJC}ytNkL)d{`>N1Z=mUN^BY?32}w)RibL zD^B$|6otXpX$4YYBbpcGmfRGwYkg96ah0ve7 zho3FapH&ru*oW5&7mLGvtIl}-at+;Se{v5OHB>6i3hAM)nz0Xmw0KPIlwr$+4Gmy} zqAxqeEh<{wSrMu{^hqb>9bT>SnGzGsuKQ2y&j{4UbqZ&7lPpBxF<)%2?-C}Qc>nlh zl;Ng)oy%!y40l6-lD7uyGKS;_r=*GsMUh4?YFkI2z4FGiC7^a z@v$n;s~Ni%qLT&0sZty&JUv-}Z^~?hHZ4JnBj(igDBMf?NLyv2C^F<2Fpsm}Q)5C< zXf>HRH@eSmJeDz8@3Cm>i~FJ(6tN+1g{T&?X*lXmCX4N?WMA^~AgrV)GC5F;tvMuF zRWsXihHqyEK7?+ape%}V?o%WEoz3msQp)1<+z7vJUd3n|mqvumG}I`V8phaSKP>Qr zxt&MJ2C57tBMN^!a8=T?6@Y^YLJf+hwc05a-Ke7cuJh6A>6ZFZ0WiluXpKQHOpt8@ z5YxoN)!Pl%!)2p3qwr3)?=j!h1xkk*ebw7p^8bk;;qy-94=347-^jSQrTb;!nWfv$M7!)o*OroqaDaT;?C8f8td z*KqvM9>|un^_*>NYAjJzJ^=!_3iG9xxzhyW@mstu7s(RQS8aWk`+gJ>3Yi3;l!0xd zs_$cnykvb7@%&7CUi(pc`*tGZ=SiF-&6msQeOY7Ni5aK01XklP*Wl2DFlXWq)ES@j z`A>h`)|o6{1Jo95n53t2#POr6C#C15b@Tq44?)fY?+_wYT0}?eKmdA!R^Qpm?H#n* z(8L77jn=w$9z(d{{eW$!77nvuId4)dN%q*{`DR(oNgD+Yg8EuxHQB&_g5oI;5RYWS zh;BDp*#kms8&*~zl?T1N(7v<_QC6odb^G0K*38)GYv%*#oOZ`?s2lI{u+l@&>A*WI zdmt{dpw9W*t)bD;_6nLC-EFTxM^9=KKNVKWB|^z1k4`nNkzHRW#`k!^nb_7BtjQNN z6>}(TzPsJ9y`nR>RtdYiwU<&e`Q-6cykHrVk+ zxWduxOmL9GuhD^ceJwZ_Wf;@g=Hc;*Kx%hBe&m2`Dt&Ia3v+!sO-9Y=sz@Po%++^3 z*msgmMUcrjeY+((q*Y|6gdoS(j=Oq1bDMB0?G)sc#k9fgZSp@p6i%wwWmd2Zc|ar zRvC-{<|y3TrfEDQmm6x$hX_@}V<1JvPA}$-M91l#mQ4!|=k(OWG4wZ1Tp*A{kEt*} zbvsx=U(Lh97+-C)8dmW+>Ym)$62d=fhm9sUs=;I%2&9d3=H-(5vEO2)yjIEWv<2z; zB%p;p8VFC|-KqUfrKPY2WNP+4DgxXtLft0;x2G*e8FJd=$x&(kS{c}zk* z=BMo~TjrR!CV~td!fsHBo(W^mUV1H9h)D7uN5{^MpEi#g*`o%;Q3;$g4ochCfmEcN zt6tZ{z~d2;Dr{Uy(u3}JTu8CH9hy`IUhr+A=3J(m%Dt#3HtIJ^*$MR=Ug-rmmMFH2 z19{PqI7Y25;cT6H2r`KXm(cO&Au+k$T9fDZM4oaM2h{-GKjwp zSLfqr=~!yEgW~z-VCl3@{ksBneu|pZM4gC)XWX^%leX)Y6A4%2^2sUTTv47L6iD@v zlKSIJ(B1Bk2}k;h#xVFHuJ_q(qe;C7DY5kz{!y?w#z z>KC5}Fd#3tsAb~{#w++B3;HofTJ&n8Ji4Zv+?3l}s|iEnMwf_+=($X{0*oeG_-bojcR;?`lAJNWJs|@-)f56vJJ>P3E0?>}Hm^S%dox zdTsvFPnkGMO6<1tz|k({aNZ-8BGp7zS#*r+j(b>zq)Og+cA*;fcZFL+!npjc^?=Pb z6bqm7$z;KohE1Wxm{?2_hlmM7d`a!|UT3)Fb`xiE*|;%klAVKSlbDI;a<}Hftt3{A zIg^5YMyF(iGW%u*;Qm%&9qrV^bPtg4*^!Mjz`GEG;ZMONs zOXBk>|I&r2-nQkBB9gC?(xc)SKeX{k42Cd(Dag5-7w$w`SWl{*nKUE>3Hj)tMazw} zSp>kD_a)hZ)PXCMhlkLk2_^jqXgsBsMq-yJ)dLDFy4Efj2#4y7!dB>3gh9bo-C6%Q zKY>~`d6ZzW{f5Z`vtvc}C+VXaP+hyWM7m{K$de=dsDg?`ndQk9*FA0R*Z3o-Y3^?_ z%RQ4U2D#bs%-NPCYSc5&GMS@$!>2kN?E$3EV@{8lJdmV}u=$$&#R_4{?UKRTKk-8b zYg_)$BUBRq*l+nr{=jKa3cD6`>El1?k*UZr@&&Z;INc_M6qAU6Foi6!L=vZnJH$`N zIcKnfCr6?l4d-!6OMR?gj?=myklw&nV0XM_(J}(K3kZGSpo9sUSHLL!8h-xZt<1G`c8ZSv;UC z09?PK&s87Flam9RnblNR@5w60hD=TIHoCDk+*WqGoX2fG$rQ$=nO&xh>o}er08VqT z(;j0$bVg zrn$aTbiLf`Kn4-?RXVhXl;BySklQSoca*@yO?}(xVhutnJXW;=4dj}MsCI2ZAp7G> zMr&ckA~2jE7NTHuvLc5V`9Dw5Tar6#uO3OkCiP9OZ6kI{%~)$numqdO9zV_f4}A0& zy2{HpYxf?In6T!Gge}FhP0(m&m`2g#Dpo`SsNMt*e`hAs5QXD{P#_iZIGj|~U<3^L zRBbxwA}h(mbDHr?Ys4jSa9ssblI*z_eFcgN?tB=^82Zt9-+bS`(%vB;ehPN{LP~1b zbb*5Qd2kA|`+zk@E>GJK;hs|Ibh!FHZ$<>^3@@P>lhgv}Ix-Ynf`^9c0lqn@<4&ntJty=%4O+QnX11_<<$?@uQ=vsY|5|+h!(t#5|-fKfEd} z))i;JnF2am$Tq3_DT%Lyp!F;ttvdP->DmwP$UNN-2Rfvp@dkCmIHvfZwJhdPjYJIw zo%3Qan`U%mTWA2;wfHn!CB!n?^u%FtomP^37(FD%zZ}5KAQ?3Y_-{9D9|3uyz~H=# z%9IipcZslTSJfht%3a@PHtc-FYPxU8YP%r9>N;pB%&XMK>&MO+a8WQh#^8Mx%)Qqd z{jfw$%I+d=W;xjFT{LM7#Zez7Ne`0UT$i(E#;vHZFb**JWLC!v6*b*_b6go~%U$Z`{GS^7SYS&WAGF{18h6?v0<1^6xkI zn`if?Z7)#CHtZH_Z*C@`MBbgo=sd8bibLaW3$|BYJSIw3&3&gb{3e~`Y#tZhcg_GC zZ@GcbwDrFHNDXSBDOVtKaR-cGrNlD=$&4@-JFFuWRHU^foe>##7^NNsMSHXS{$e^^ z2UbX8yU+OF;JVT|ybT1XFW+%iZdd^~xVVlUtH-_`!&THn5YDW} z0eA&v?Hw@TabTNF;nFwb?Cv}n3j}kPPs7i0p*{7E6~eKcpJ`+69QL6-A||ZSw|i~? zcEFL8%#>3$7OxdJtMS~Y=`{%`NFPUZo(#u~cDXAKd?S9N zU^Tqb`fiiyS{vOom;Jy(VbAS4qsH$uyYo>Ank!$J$NK7zmNygH#ZTVZ{&J&cVG+N_ zFA-qzQfJ%>My0GA8f{LOy+;=OPckKNG^tBLtgpqf*~^K`ET67Pxzs>t#e z!O(yZ4%ZsUd?(w-@sR~rJo41M5lP7dixr;mqG7 zy*~KW(eypSNo0tNMJGu6t~-&$C22d8=YYvfLVmVzLu_0+WY%`%_?;VxnsQ&QX_h9! zc39#$i*b~xR(F?ECQ|lwGV6dH#fjL}8}W|Hp;9I(p6r0QLy%ikcW|aWKV#ivM0M!j zx~yN&Bn%!OAi@}W7H$x>Y`QJrjGJb21nBM)jbcP{Fh^+SgPdA3b^dHp4^}vVvL;-P zabAv~d==@tay}@{q>^k`m`9O#(<+SVc{gS1WyRdElSbr$KPzf7%G)qO!45|f(KTj) z!XACRXlclpjx!ybH*&i|w4tIzz5HWz!Tr$WUH?t=4@(^GC3$=*Z3V6H%@Uo7cMS$9 zw(W_z)CIYKyqeG4*{cB!zi@Fb09;LD{nq0=R(cXwx(}Gxw5;lkJ`hUW%TF~s_oovAX5gJyLoA;o#zjWnD< zLOiK_l%7C_IG%?KaqmDldBy7Q^%O*eIzi9p*eMgubvlF)Z;(##{TCikR3kN_2RR10 zzt^avwXEzfjA#4#F=dNn8PmUgCtxh4D06!gutC$?T7E>+h zhY2th#vDOGjdE*K4-LHvIA}g-G+{qX+BS3yBw2;J{f`WVPoKX6;I5TwsrCm-nFPS$ zxq(7%pjQy6x8I*EP{g`#M=llJq&0H$?(|^MZwR08Y{NH8f0ttfrzi0^nzeDuNgl?e zmzM)Xy7xd+Sc4@Mu1vgmNW|KBy&NyRPk>dxZ#n5Ons#w!-vijd|FA4l(UsCysmvn@ zVyru4sYJo1Drm~<&sLzwOh0TSz8s%b9Ftz};;Uu&1!^_AU~49=r62ISVga0MLyX>h z-)cr*Ls~ySZag3W#R8GtURwvlN^(g7q;C2BX-?JWTdTeMypjXYu8(V)69eMtnX4KG z_LuvBeG12Mih=XOM&PG$z4Pia=s=dZz02g;I+N3CX`A#@sBxOBe`2vtL!4s=iMNnM z?cfVz&?n%!q{iyjms-iZuyotm_gxfJK=9>h!7ManRVDkW#ekj3{!C9Yd-pVug#*`7 z&bU(x=Ae<2*uvh-GntOK5e5JC@iyyT|0l9|8FOZXfKKNL+iB~@e#o{4UEi%%yFYd9 zzr5jpZMA6e*Tw)EX2C%G*)hgz!ov}`^ne1hXF2$Ua2*@MDDeTxfz<^eo#0R90kh5+ zTTqtFOa$TL$!ErShU2>?b1-)L^WcK8GVkC+9bO0WaS-|8%Ugtxs^ck}G_tYb2>G1e zLl!5;m=!H5Cc;$Y?4nGeQc@KaO1aZ4S{$}CUi-`LLm1s(&m%%iOk{#Un35ABNroVA z$wF_9Jh&-hFNKqvs}Z)LAME_38{w**9kXZaoM>Bb8(kM||7gmv>nVs?LeF$CcB6o* z)ZTBFtGH~<)c3_Kx;@IfcXpgaI5sKzdrH>0gK zTA996SC2jSHEyh?)G^H>->s%7f#mjH4mpD`ZvM~5`}cGH`s0;N2dW0@+;l2PoZsF>$4;ph17~bsBYi4G9u+$oM1mcf?`S}>}X7~}KJv2DjvK{MG z!?U&f-Lqn3L=FA*a;Zab#XVW{YLo})W~3@^<8XZizT&O^OC~+}q%UfH&*~c(X+!Ip znr0f$H;Vl6IM-*VSUH$203Wtk?fM+^Cs{z)dzxkaQ&nDIDPEZ=si!VTfO+qiHHJg< z*LC~=Xo~oXH)HeBk(2!h?OEHMnXOyf|Ii`*)hYoKkcsNRZ_ru_>)mXw$WMcBr^(Ew z2&wv8L7-3LgrFID7R6;Xai3H}+A)?u0|O;8KVVDsl-Gm=TB1<2J8hzWpJuWCc^*qB zQ9N76L(lFrtoW+ft+04K2_`WcxVTA9_~yqzPhMPK*yP=b>UVV*-!mWtZ) zW^h7a_^{yUk%;Gu8ZG6VaUjpGNsURPv2(0o|HRMx1O;?r$49C8TL3#kU<-Y|)5$=7NHNDCl_99LE3M5u8Q0nZg(^?+1fjv{7 z(TYUDHs>9OUWx&H%sBl~hWfA9X5??);+JYCMS&O6Kh3c_BjN(i%xNhWODU#`xhL z{Ckr63j4~$f+4~ej-Ux{Ey)(COSV#evL{SXn{1YasH153qDTR?Eq(OcSPHd?IeKY0 z4YnYm)FACv5%#`sBxQPzeMWWqD)%7+i!N1I@LDp%8JA!)R$}GMclENo3wL0W~OgSH_nff6gK@AG5w zEm<{|IbcBgzTI`K_~98(nOoUfPP{5mRkyfHLdBb&c>VbgUd0$D4w!_kk% zW*ikPr#a_5qB+mTPQ1T*3HYBoX}+4#FitZNxI|yi=(;=om^o5}cA?teXx7>JX;ewz z;Q)Ee#sbcx6HfGPdd6Ed=5m6iE6wCH2*a2{d?{^dPIHgUy*vxb2?6mgUgm2>ac{*M}77kPOmHGbQ?eRqbx)b6O_`q*YdSSJ-oa z;6&TAVq>_m=ZS$v6NYp;@q1!c^;V`N9Y>k4QpbN1>%NJ&C(nZTc=u#C#;LlYt#KVZ zWp@Sa0(-y*KA78_n`331>y&=q%K;Gg7a)_kyS0G@IgtO3 z%aJ7(x(AMSA@xUCgmjqy6Peu z2RvCdHyvcs1ipJw!ldc5xs7{?yLYREbjW>A>ia-#Jf{o+PyDkFT;@dyp({~K>96yE z5hOFAe9PMVs>t=6sE)Fy(){d@RY1o@0I@0<#@*h3b{&r9Y9}@jOuO&x8J7d&2zSw`XM) z#dI<|L`njR9v2bt-*V^FB@?AySWJizNx`0Q2Nykvv*L+rI?CZXjF*Zsqhat0pR))b zToQ`T(XNOd*^M8%i;$xji?4ny9VRTCS06)fXPp@i(u{ZA@W^6$W`c}kQ$y5cwbCV$ zA$gOEpp}38IO!BDr6rGDo_ZBC1B1&%NHMC|znMr^sT> zP1dF3bQ*Q=$cZf4i3@X}F5+7)vw}KN^v>swA6glBDKg$q$%%;ShqgT$W6c}Fbh-&? zk5}L=lR$!W5;zBWjLYzTT=Gj_Iw->-uk6NMUemm#h494po-B+CggHMlRYcfiW zWR9r#)%jucWt|oPD?#4@*IZRWSGmlhyK1xL(0$qp@?$&6jg}2>?N2 znlk(W=S}zEipCT$X%8XlzUto=P($wqXv@u&o~|rAS-B_NtYU#XU&em9rrCVEqCuE{ z_s4C3Fp`{+Vx+f_+9#a(pVHa+} zV7n|rW_LuY^Fnb4VY5vs_k3&g15o3#m91tL{EL@Eadlh+>KJlRhNe{`PdZVO6EO8U zA3~RokU0I_2!HzHPjMAWY{|Q0`(YUjng$=9Wy0!ozM9Ag;JpWX`aCj{kLl}2A%0WZ z3B#1ySb}oF4knkPF#(*&6Qm#MjHOO z5||HKiRN4Rj(F}t9@d-GWG)g&G8{KJNwpdg#lLo}87*BA1$BXeos-wf8V;7a?__d# zs*nACB#ucHR~y9>zl8VnbC{t8T~2KQljvvMIcfTyVWU(YJvB}2X7 zkXd1PbIL!Y2YN8)ba4Rd)7NzFZ)COtvoW~8< zrzMu9{_42d)UiJ%-V>!Lj4<9QZ{ThdSEv{P@|&yy!z%j~U?pmxq}O~9#`^$uPXr;d zUOwYgsic5JIW-iWf%KZjDQ&>3BuOUm8JVBjPu5vwS4rH14$Vi4nbR(pBv+*M>c8H+ zi-a348#iaf_W+s&`(bbzdRp7NX^S>?gRXjA09gm9N#HKC@jc_^2A+6Y8wZC&a*0I% zDTupoa^SB^lH3z7 zY@@nyt)&bI0rTdi3Mwd8SXPqbH-cXul_lcKazzS4jiv!2k=wxnHq)su%f&nciBQ(4 zs41rGJA`x^_rcIga$lM`2S7D|Nb<3-GaP%Ps>gbO1R1kbu#4UQ2}q$F3NP=0)ZHSW}6n3iQ4m)bD9@gi5@-U%tQoEwOv2n z{#y!w!SCZ7PGS}|X`vqW{r^LX2DrS)y+m(@ZG;arkb?A7i`4PCDvVqQF((GB=xB#8^p7`!>1!OHlds=*-A$Ir^Nc9z)mh4pjvrB=4;5#QuHBNprpNUftbr8_ z3v|NrQ^#w)7Ozh|zF5z4;HO>SLEqHm_qotZ>Nw$$Yc-@wjp>w{Bog((sG;nEt7+R*&xgNB?g|v3o;sZwroh*_3KP%eMgBV(M~}c_B-jq^ND9 z{$4rbR9F93q@pK}0mvcJS@it0<2u+muJF$4j>!xJ0j60N)=^ytLu?x%~oGM`Dh28ggwA0~DO%(z3U5G1uJH_#WSVFsq~qxqV&L zPwYKS)#HrXRu$z_Ov^mZ6b;iy)^jzwX)aqEZ%Lk==Q0czaa&t6?Y#p>-;Zy<6UM!QDaG%0Pq^Bn z${HWoN7Ts^;xYA5p?{C{<>1C_5ddQ>*b{*6wc*FG5>l`)+{2MXGTfyDlT-Q6SZpK> zy*WB5T75_UBz{s(d%uTRZvS-(yh=woDg-AK#Lx(++3xu)^clK=AEGqNRP7j~1f9=d zsR4keo+%T*-qVAvGp~W$eQi0W^>zFvbKMb-=+` zT#rTU6OFx9^mZHZHIh;>2`W3xR?}RS z%f46;9rGe^g==qipyE-x(nW@FKoY=GNW5Vu#?q-J~d2xshSMYvpgp7DP*eUq{YG{kR@YE zR64zO5+N2&YTz7{WGNOp*~(|+%J$J6xE`wySoB-(>2d-i#gZQ1@e;n=;l1yv@0B?K zOZM%PW9^Uy3K6OPLWe`YBPCOh^03l(0CXEBn*X;V@PYoVtgW))tF}>cw^XmOMn+Z)5k%Ou}43lm(<#Zzuv>3mp;`Iv(s{XH;hywdt)?{kq zv<6A0t+_L$n+GrP@`2ia{PyubBD?S3KEBsC_=Jyc5EsG&*t2|gbjjC7OhHBVP~Ap^<`jnp8(RYVhgRuV#Sb>=u>_uolBxH_71rcD8*uN9^BaJ+_m_*&mgd@7 zcI1p6VPwo2V()VmRs6R+y>UG%EbRep*vv7jBZ zjYH`3Z@hfNh4sXn@`$HEMyR1HK#gR2v1Z+vc~14O!xzdFd^R#GSHfo=eoy+}_1@=N z>g6Thlk2pRwK`t`t_n-as3;ulVku8-3mUU__;h<>&~5g?PdX@c4Pb0a?&1o4C{e2@ z`={l?`$u@sSPUgb?g&YxpRf0M^*Y4SYxMAbeJG@y!1C`C{`KX{-H`%@6-xvE6^I+M z+j3=Vc|ym*UhL}aODwgCo%bvZCq3_Y2u@1E1&$*MEw$3fewg{BiU~fKG|wz>y4@4#|tl|H8Qb`t+RK=W>Xoy5}_?=^#5=^V}pGd@ZX@ zo@KqHe)z`4oSE?A#%K_rrsQNYs-uWs;-0Bk4G)$Yz+&NE2 zYht2NLN?b>CUMd=6ZQVxXTa6B3%oT_1FNtzH2FD2{ht#HtRUm!9^b_3vLCDM5&=8fYES6J@5A?ySa{HN17G#;jTG8BH2{Zlnue3L!EBe-TGL=PL zKfi;pkVzFUh}l-ecH`modDx@~#$Jm;L@lYtsI5jPLq`1xM^qvY4F*zm57( z@V;Ekc<^cddjQnA`GWc&BMXh}E(40ap7`CL4F<-2A8zs_q$z&DYHnpNzy`gkew=Tw z(OWwVr&3N`^o#?MM(mzC9J2|uvABX1dIc6_<}+%F<@w?pFN)GgiTFPLqwn6~yIXCX zLYJ0>5fTwZ?zQ5tu08qH(r=2SmuzC<;ept-j~Vx?>pOKpsVndGCQ4ftg|V2wZOqr- z#UBkFQj4T|2bcw69Yo%nvCLb{Z%WxM{*e%-00!RCtU3H?!@0A{sps*PxPVoXFqx(R zuL6yoS6)q*cm-^jO9z{FPThzH9Xen=Y3%lH7#6pl(6v-RGWq9iqo)Vp+m7f90)ej~ zoL77p)y?%s!9x-IG$am)>c(Nxzo9{&cQQBkjF*@hTUbA)XlYYgXP*kWBul4=l1bY5 z?)xnlmdFYQRgFjqYzG0cy0FH8ht`P0j~IU*&#zyp-T*{h;Xu`)T<|Jluqp6{B+PfT z6b%{KP=T}n#qRhR$lv9hNp3V;XwX&YP(thd6bYx9?wCh&K;e0k9psmJ*Veh1WIj)t}FD$<#{>!j4ra)jYLVR!m|=S@vn72oVdX z)noXnD#YFA;N{8Qm~Fm7nTA29)1G?!tku@IE?DER$wE=dwPLRQocf~dg$mpjEy^+& zk1)_1e)rx6pBfI|V3(Wlbvligacna>eqO+_Zp?D!QKX~Ca66#l@za9`qt*M^q_#-3 z_Tyh@%g>(OX~7kfTu>m-Gxin>zUFf z44bWQk^T?6(NA|Q-u{c3hVj}5P~asRgk8zmkIx4{S8^|JxAUw5{YMg$*Pix4e-wyT z=oilLZU3(XLs~sPP#h$3m8xi}=aOL4e*c=@#60@U*V@Q}fz8Ei(4j>{9Aj^Yte_0z zzzUu@Tye|FNVNBhyh&P9KbNfr^&tik11Aff_1KIQrPR$!sb&^84D+WkX)#_*KtG1dS2{V<&6 z(Wqwp?TOq!hvkd5A)ugPH?uo7u3AISC{$;EY7}MbX{E9b_AR>eIO#9Yq)GPuO0fn6 zeTDm_K?l4zwl-h@=(zYSfmArG10a1q;qD3j8$dj5Ru+zb`zNaDBledo^AgsXo>0YZ zD9*uro+j8mi+5|;MWQwnzrSfGyG!;1B`v&`_WPZGA_zawytUjHI~Pw}Iriw6<32l8&As^=;iuoaFKiWnn} zG|vwqMh2gV@0?TmY#qsUBr7SOIs8zp%26zY3jOVbAw zshXKO{M@i%Joed5OXQ*|{Px>cpY}kw4)AQ#{^8mF4NKj;=*PZuOgv&yn#A1lKr+hU z#(H`7p!LPd+3`p8&`Ar|iwO|WQ9}AWcw+;TiVMV2g}Ge*+1;G?yRQDx14GkYPsv?()l)sgb_=k_%rpIHze7Za9r%mQF#p&a^ZUo?e8f&{ z3r-?go1Pb1BNreuRxO^V(LioSeJA8!@oT@=d|u%Y$STy2<4%_P*~GKJX-?Lk=BQtbe)CM}g@^emNBCpqId zm!wZpL$nIyw|{X(*z|X9cz3M!CFhT^kI9r*&t9A~(^^rjHz<*Dp{WI^QBFraFGN_D zixQd?L!+KCPH(5NAbiV85M}isU``z$(a7|U%YD$qcn_p<5I8md+-Tc!P?2xYa=-M+ z1k=TOE#Hv`|6bNP!=Vu0d(8hmkLn+H#*OZeS4D2RX~X$^YHERd1ad+&`+t|4Jw7)- zm8qur5(CN9utQRCgp8}sUQw{)^2eiQdt2zrCO*y96@t&xmwHT4gXNybv_J10Da%;) zY)Jk)3v7~Q#B;w1O9a^jyR}W4_8$N;x-f|wa9$c`8mGHpNzY`OmJT8mdE4Mdb4%lp z7x>B+TONA_=HZbU{J;CQ?ltK#;5^PTmye@UleVOO~FWmi?c(@VZFP5#ZZ;R}1Qi@8A(5_xCet&%HSaUC`easYX zmStP7>Vth9Hs#889+MpF^ju}UpoUh(WTW8Q|H$Y;r~T=tx@vvOVUL)G^fr0~CJ z*0w6;rCQg$&8?MBqEOOMR7j{_w7BGeo*FYHx(dFBlmO!y_I?@6{<^9Eoam=N`N8#j zN8b0F!G<=UsrNmq0KVI*p+`25AK3o`_roS}zC#H77!2s$q8=bZx9Q~^J)?QYiOv_2 zAS>|QJM67Q4Y#2Tk4VyMdvUyIE{+#AYLq55s%zPVCEB|d1wxEdE`l!x^7!v7&Noiu z$2zuyTQH< zbc%bH3pHzGf^`jB4L}hV%b%(0ue{IC72HOLO>|xR?PV3PiLN|Peok~H^we?=V)FWr zJpR6r9-l=#h?u+&CbvAR1(HruK+hEu^U{aza!*ndWZjjYYsZ%LSnj#UD7~u_E$CJ8 zf;9_jX7sJ}uwuQFf&lTr7;LN+pe*@0MzHE=vf)x{^0SmjvQdofdN##6<72lT4!S$V z+@^XKOaJq=O8<=(f1aNS_>a+H@$g5Gf8X7noSGX@0sQ|gEfo$I6l33=Y4|Srb+$7L z!GhOMSFpL%*_u{po%IN;6vdZq%%>nRPl)+ePbT|WM^jw zt<>r)jv&$8D5PGOooBMA-k9+j#iL*@`wY4oW9z`ECA)7jo+c_H8ueq1SVosDMm#q) zJz@#8`g1{#$kDtg)8K9Ax@^vdCK}!yD&N8O6<4^2pLQE@{%iT%ED&|O z9$%+D^qK`9*0iTwZ=6GyZVy(}noe=EfSZSpnoZ;UV}I;V*!0+0=3O^b=06BB@vQ%Cn@db|7glIKeshyEl6%;L-+St*WDV zTE3i>xEv*RdNs*0L{f=b8xj(HUu(VdvI}nJ79HMXrA;+y#8-BeL!2z8%V|a;hty!( zC~3xIAE$dl6CVEzphF<$;A?1tJ86WuZ8EPKP;ydK|Jr%!MqSx8j+!aq_w^SL@?RKh zwe48DvBri8?*Beg$^9Qr`qC)xTg|#+^&Zx-7b$$MT$h0Bg#S~Mn%8ieNoROZp1tK? z?K(bgJG)+e1nSf$+aMt>!<25l^&=PVeHLx97g~|8}^^06XGU`kiX? zs4P4$`YNxPNA?488wuNVv`r2~Oo-z(gM{)2X~$V;huL)~qxqXD%e;KLX$o(VS4owG z5Qwft71K*tt({cK2)_pUltx4kPG8b|9F&UjAz4OB;md0!*O|URor8un>{N@ z$y%wTdwKyLaObda7T9qBbS4D$QKiuOr4u?D!RtOGpkXz9_1h$E8y#>pc6+Z>geDOY zzEce(P4zbkJH0L+PK0OMO@H2xHNJrzb4r9lR$KhNPRe~bBMJT$wPYm0Y*>rx4`OQ+ z@9ol}r{qZU%_rVfXZ(Epv6K;A;)2(o?thq4yCjaE9oPFYRlXpbVSwYfE>NYAYGmwd zHI`rH&sE|v*eLfN*UkS>0uirl0NLrkqN>!s!Rhh>Q1$&(BwKlr!`*%3S1Dw_`5oJ( zV6FeDD1UmRdU6EcduRu|d{tuAp|%c{&o$W+uh)$w$bRO3YA0os2(lb|?VA#+vs^}n zFV=B!=n>mzZBBQF2q1ic=hl5E#Om42&yht$*_>aR;NS-2P3tl^8`O2|cUX&#FBIq} zR(>G^wj#x?VC2r8(>7folqyF|8u?Uy=4;s0XX=@u^soTFALh9ZITrN_PG=(B-<=|w zG;rwAr?dm>LShs6=@vlm_vYl&EXju@vd*-z#C&4Drb53Rjy*14&ct#fob1UMGn z>FlQN)}K`W+d@;H`Lj`C2mkJ*hQfDm$b4^j8a*%L?c{W*ge7TCf3V+24fKmSmyx?1 zXwp#)`}BbzQK=B4@jBqa{G`b*v=|o0+@uj#`J=995qognjI6stRd+q@!jq~8E;wDG zrV9rhh}ytlR@rwc5Ys z^N*iUCNvM-9qqP7G=}E`ENF3yi4d>x)O3IHt-Ui@nt&@-R4or%-`pjLI_Z?7m*f*3spH3p^@igb z-f*VYd~^QJ=}t%c{#%awB-MBWZF;u-zBCTm3o9g#c(%EX>e1EbY8~CrloKfmcy46V z`)O=2RyHoWxnHRTn0Uq}YWC%SR@IcmFOyo>^h8Yvet9GRQig&Yd%H?E4mS2Nem{5f zrweONKs;-#RUW!HEY!3*b2TYXTng0M=PTQ5fAQyv`;LqLf7&R_h`q)U@7IK{AV*V;<+_>2Y>kf2&11m& zotyAWQ~gVabl;{Y59>~jk0s`fi692VFw{4IXqV+db#Sp69DiKZh4fd@gyM#g^51^lBh~ z)LP25tkgo##q`c*(a7_x<~$-0AN>C4h4w8yoJD`|9{p96=)2LNI`n`ZuRZqIHw}cw zMhNXpO_!l(5Om8L>LO&9a*M+DsZTTO8EH=KB?i@J*m9M}s=D&Eq=BGP@mdDGodUw- zXF<>VG&(%KSyfCIz3=|s87@=}t)#CKDpWlQbdSyB1u)dcv#jwyzxa<2ZKm{Zx|}&adg*&TrUIpEXcD?T<7sqs8#{Peq|E$J zIO^~3cL;~Y{=2CCiKLfLZ)pk!`TMf%yAo$P;!L&u=jyE!Cik*>1#bKR8}Q$p$I(r{ zwq-N7YMl`9cVG4vXOG*7zC*7>4~j8a#?@>U$?5K7qQf3_`{4IJCMURuKp0cSaG_qF zzw8LUcjpb+BW>{Ucr?(XSOqCQb|{6yOmNMg`0b~t%=yl?UKl}N@Ltus1n_BCVZx>i zab(&xn#OUhGcKcYu)K0%KR3o1I8H#n#9$>VGz+HrwBYdj@6u>) zdy>y{d*0|9z5(0ZvQ=Ih{vRPFzY|I0hzTEXq899pb1$#eu$tM-kkLxDyRdKEbn%q= z%hmqJJuL4$xg0(Ico{_H?tN+O9xXs|H_Nj`?z3OlNa^DtIY9XnGW`h8_ULUsiMoZh0E;)vJx}C$Td7>z{h+WE+A(4w4@GJ!YJ#Z8unSo(!64bpt z0bf0Sqlu~&#)Gd=J@F5C=Qc}V?Tp*8;3K1qsQ?g{T<#2EQOsB6gNkLE z$8QM=_z!y#qVu)mFjS0a=5X`p>&#g;!@2upJyYJ@3D)T}Y)Ci7*V)Bn)L+z+raD#b z&;xloZ}>nQzw4ZvGQvLBFlPiLod2g1{^sZ{5RXW*b@UIh?gfAgn-_&gdD)&Tjz)hv ziNDO!-%Mor&}##_5-j}nH^-T?e%z1I9sbp0>9A|ECK6maiHqL28r-hr$g zbupRwygT=4HZQ#eW14_VMJatC0LM7!ORCh9cY*p$-NHk%Eh;;0>{u}bBD5)?7)UxL ztaq4G;x?Fan(G-q+FHYBi8-sBYo^`>GuY6WzdOlP2@qutN`W;Xcr%&g#;Q++^nddf zGbpshMbgR%zYSG}S3@l(J?%nWhUFKX=fxvDN05lwxv5>2@gR&} zyI)xwBE`q@io36sW95WXG67Nqr`^U?`S($ZRM%c5kY^Yz9 zlr*kC6R*5CJ$y#dy+7Xx{}$&7mJ1T8ECb^O#Pmvai8o5&iMPJS2UZ4j>RD67580@x z{H6dVLc~ZLu#okb|u89dhjU|k`_Zyk2h9vpy;cJ4S%KI z@82I=8iw!YQqE4>TpDuzBZ4D)++lI(o}dt!&BVfn=EPL>OPxP_`F|t~137g5O}8Cu zD|Yw8bbyw-`WKaxl^aqSf2EN&8_h+= zW@TR0XRD)1v``WPuar)()dGE$W*sZ2LWkbmiU&HvFKL5k_*y8p8I@Uh)0L=nZKSpJ z)7el4i10^cms~Z}Hc7HUDKpLH{_@b5#HeROaCeR^H9l-$kXC_-1iuWmOrUl5Djy$s zH+b{JCL<1Nh1O0=(6lf;*;4hWTG|ZgG+xRV;maB5`#kgTk(-LJn_Bn?`fRUUg&k}= z((ifje@h#7o+{)|RbT(w>y8PG9bfyDHQqjA#jNRg^N8#)cXumKID4q0?U?dgBXzYc zX5h@HuqF2Ps>ibKE=o(HdpqgWVcd8+%AKkKlkX;(3qLe-^GX}c@c_l=RQLbNnqUZ_ zIrM3|d=R zPK&#fwNgWFCwO*?i;eqZs8?jctz6fK6ut_w??pWsZ@y3)N#04jT0i#x8hdQY*j9?sop)BRs5E19#ejH)+{sX!kdz0gGv8|ss0QsU1D$#4tOo9z7PV3 zzI~!5==l+o@0kySQ_tT4>M{~;b3>_5JeF0YCCLtk@e1|Nt9hX!czXkitWrMrR=smy zOdL{ER|337)znH|vK?zvn((fKSGx<8d=M!WLd_@ByKHVXc_(m$`bm^2Tc#mKm2U01 zsE_Wq#|wA+LU^uA5Y;eRF52sBZ1WkKU<#U?d?b?9e6FOJPR<_E3c|GaVs;J-=> zO_b81>M9lxI+?il1ALfF)>_^&q*%Egm{sz`w0(#oTN;M=zfMKy00WE^-{3I6oo2PC>hR%YpXuRIAqs@8k#F0 z`na#=-5L@fR3+j;1tAFgy-K=$N(GHV3>4}i5@Md)Z|FR`#){Jw(aY&JijD^VF2CQI zfK)F3hqGWI-dmI<$C{JlH1YI_r5j)sQ_VkJ5L+zVf&cN~w9JcT`#Ypon&AF@>ggF%w`kLMx zOK?rdam(mw*QWINya{mcHv05llf*EbfaKQffKifveN5b*7$CG1-W7`43o+Ra zk$e?@Q7o{Y@;7|_GxBL5UaPq30ydW!)+%_xAE-?ecy->riH={&qJZc}Flm;Ly<#_> zH}}7RUosSye34SW&rc+D+(Pah*^VihaJj1h;RG=!?2|E>wX_9##vo_Y zn4{wN0G7?~Depf}h?K=D#wZSdhkqh~$s2uCWnx;D%L!%YvYs-5dnh2|J`r|#792>% zr;Yi!9I}ElYuXy5#|X$Q1gPH*6Y+i9cN35hnNZ24ZzFOFZu}09KH`5eQ$;TE$nM|I z&h`xsgm=@4%liBj!ojF4tnHY`x2}Wy1Y{hskMJrsKg$|YoNi@%{)mLE&>i-&U;v3E z0cj*l#jsKQ#tS?8BR(N;ds!uvAZJ{zqdN#TT;^4$bqki_82>-z_8WZbMQpryVxw0b8E6;$ z9z*QQmMBtQKFyL}l3!0(sG((j(gTO z_}%5~&YF**Q?orc|49~_2W>^3hkbymg7n6lDPjaw#l8?jvH(oxH+8gm1oUHyiCWX^ zzU^3C6*Qs#iVfO;x=Cb9Bw`{fe-2N-6wKOyhDeV3!drTy;r8i@ijx=(!mOA|rX$8` zhG}W}s#ZMUvZMpOxfFUyZC`m|lC?~p3g2Jc?q5jZ2or6&Fq+J9dg>LoqsnH55a{FS z>g(7ne4_8}cMGiS1uby&`ETeHt!GRze~@6ALlGJuD*YYCm;5u6L|8fyZ5sQyjiG0?fD>tmWtL{fYB0@7;cEfA7QN8BDEQxknOSW(>suw*kNY?M;OzO>a>gl5*2 zu=9}a%57NTK*YR?M=@mjEmPFg^Es_6{9l$a%atl@mFOpi&g&Dc6^T+Wc(f4xLZ62c z;Mh#(UI0OOj@{KC_l&@R9o+PGt9SG{vmGT4=0v6S0zp`b`Y7(YJ6Q1*8t*7f%feY& zo82@Lp|?IFgj(Ly9WSgWGn0z+Z(^vEyd}|GPH4z&ma(~FaziyFsCHhyT>MoSjHdfN zuWi%2Zr$h|dN^IG=f4fKYtZRo`3pAvJaOwmbaMpRVyD8xUW#n?qderNX5-N|U)&{; z@2w!OAw)Pcb+9A@nktVL(W#(*V_!UcY+O(8=L($&2ugl0^@0C7K6!=dY&$L zwn$AHpnV`ob}o7UmF;y|Ljmv}PJ(4zl$B!QUF8I_&q{3L+rTq8m#1PR&^BZ)ZF(eb z4Rkcc`eKzrM80mKdg(%zcE$cqr*uG|Di=0Ib=1398SmJbRMKW|rzn@!W#)ArXVeASA&NL%72y&t-E-)47>w~Etgilx@PcW($e&kv>rJw$CGyQ6FLW6XAc z{ya9Rn1eG+= zQ}aJD?XViTRG;EFlevs+F-B zk-X<1v;ks9?nsSi3%>{Bv17q&RaCNw$vl4!AhX!v5sV!%v*uki9_jn8M14`vHSd1I zIaE^7T2T3P^(R68_bQYK+|-wAp#TOjR7@9MnZ%l4YVhh#LObJSF(YVPY{M;#6Y?V$ zXT!7#B>K`oXx9m-J#pp4P>mPg?>zBM(WW*$oTh96c z#2VH3CuS#5t7Px7jo<9kZ3w5d)JTl?)7@X)Mk>1hl>NvxhThfQkzjmn{z0nu9Z!?z z<;3CZ*+M+~Um?q%#wsL)Fhsv>d5!y$a8F>H(8{yA-pn&fp7nVMR>C9=jQ|6BXs}C~ zQxNh(U!_mJS)qdh1mZf_k~b!*rnchvBceky7yxKH?&jhQO=qfp*RNpu1HWL%q*j_? zPqhs$gXngb59qESRa7ZSzcAJ9;e-MI{5P zMRmGN*I%6^oxtI4y-B_&{AGLLa4y^eYh}HvEv_zjv+=N0b*j2LW^;mDOHo(8CIn+$ zRYEAB?8IW(t(7446G3U{R7awy)=lzj18(kEB6|otrkkhIT1y`^OLysXzRvBOksxWO5YumtJLs~+a#*dt zsIV9evXx55eJ3OeWElQNORdC=RXfKN|HPt`$=gq!{zN{olj=h+XP7RXFF4cdZ8342 zfJ!j|p^MJbOUBvdCiyKIkQ7>+s3QFffFIIZ=Dgx~4%TueB*GR95A!GzZq0p-DXy3q zD^)1*JKGU72j27UFMYBWu8)9L$}9|X7V(KaFFktky(@{XKVi98=Ed0j!5{y(SA}tS zAN>nN@@p3*NTwD^6e=*w4TmR8#-ClHgJqDlH!3`OO1;<11oz%jU4sJ$O>=u!IY$B3+M(yVfClz2Hv9SFM22JG%$tRx|T zS09=_QC(7QBJ7s|AX*E*3=ERbk9ZmnCsx3|4|Gh}_s}Fj+f?I~>5HnrTQ_@0Zvc0%_O{j`@KdJ?rnoQX12J5 z5h=V(Su)UqN!iiL;&5+}_pFK{hj=Z}?y`kAGGdA#pfIxvFuRhVs&++H(WTGCyo~;4 zze5P*$f3?W)|#2$eZgrwA~~6*gKucmTZ_-N$qc;cct_A-Rh8goX+elgO4fg!7O1@t^f;`d*uu6&}14#_F$OTi8( zM?m(+hHqRBBnm+|Oo-~@m&%B0CVnctp7+EXj}X8g7sBu#SaN4Gb!OjCMYh=54u9<* zgt9PZhM>nveebA;!+NZJ`UdWfSprU_Qrv$ja2ZXtcTJN-7`3={45-lf<(7cbEcR6t zcGr6?$uHxI^zu+sr=vqsd$4RcFiM$G_Jt*t#r;ztkt!L3a9)iy z{q8d&hDzyaS?PnO=zZI-k6L^~8pA2BKgl6$bwn3|RzvlXH8YR`060gbB^Q6r0{E0e zr&W@SQMn2($|Eo)@Q4}MU`M)hLf}hyx6o_z;)Xm#kj!R3Ucl&6c~A)r(b@~E?9r4l zmOAR_L;eZ&U?F`Ty_RTEHEr|B^@&64+?#0IO3Ml>1hZd2Ek%Ut;-XL)ZOOH~fQ*ww zK2R$Gdk39nhtQ)!njetvJS_?~-B%=m!2C8V2SmLUY03v#q{>|acW9_k$wur)<5T{C z7%mGPwmy07F==YBM_J@lu?9TJ-p*GQ`cuBkLIi-isow-t<=Zm|80(2!kR3(1TkC`; zA3nU%2x43-hZmiw)=Y-$Km6WrAAj?b#PPGj53xg7X%x;4^C?$zO~(suOsaMv-ud$kaO;l7G+f0U@rkCw~X zAz4`5X)*kJg6yC7R{vpkw>-XHh!?mvyCveM7O_uSs)yRO{Lxw9cD;i3egy3i=*Sp= zSssGnEHuLyP(%aP2lS!V)_#F28gEf5W{fz$8V8`N^fm+b$nV(Um^f#cwmWmobpTUP zNAx)?(kl$KG~SL{Az%BjzGlWrcB;|uS>#i#1WrL`U+6S->Lc(^T#rMJJ1%gfj=T3m z+v?hGE?E&gF6E`|Nhl^4Tk8L1creEftJ4Tyw1KgOuSut-`u3^r7U$Z8@4fZvSPQC+ z|ArUYlA2d5^)r_#+B6#Lmy&r-KJtSrsi(?5RMAV#{H!H5m(lrEPza#tH=uB*s?iU5 z_Zq3eb{roLUrFqj6TjWcVa?Mye776~ixbS2EdqjLc}Teia@EqFvfZzeEICWnMY)E9 zpXy4T()Gp2#6d@8*UlKqrwL{;wRRmN7h=T8?hHg+EB$LfRASYJbf~MZ5wxgY1_s{W zTAmbxYr930O*WJi_>Nw1MM@>(qC4nSgmo6aXPKT^t#?HA2MDNqs>Xv_ZX1 zVPFj$ca)8hY_OK-DqeU5w9J?>9VTGu<_S;T-_Sd3!07puqs%{Rk0U%IhQ-~iEqK^2T zII>m)##Aet*8>hiKoJPMnBy$40dZ?DE2;k{K>v*qU&Fop`e&`&@UL3=Kfl?0hq_L| zx0oj*#tgPO=$T54`$-53@F2WK!Nd@lJ)%FX5S&s@uEFz%R{6Vfo}Q5!kZy2&{Wkd| z!)t6Zcd2?*D(rKRxcb{qVQ54|CEs3%R~(^U&(JXka>T!hVYJ!G8~VVSijYR602Yq2hjNHQ_dfI<34cQ_`3);v^C-)eYn8{a1{ zgm1=GQ+0E_|Exdc^ZML}IZ@kA1b45df*2)c9Wnf)^$4YRGp5pg@FB+$y8C1gb`JaU zPcXgw0@r-24~0}<$Q9eT-&BYXVQY|XC_3U`ScoBbD8)>^cL#59oAXWDfqcG@)C8sQ zgN_jDBArq8K;9K!soE!SbuOqmA3ZX}OsOJIgSs1C9$YKngL^EMrd+I&jauEhivzDt zV%?F>jHp9>S%_kLENr)x+@_SBY3C9lXzGLbdV{i~nmg>1gYK9qNA}wMCsoT_pYnWs zQRV(qs_>`E5O3WFn(aaa;OdSlW_1WxsyUR>2t=nvar72|Sswy^zAW{lFGkMI?r-Mz z)30K`S?&^obxHybPtY&P1AULn)>ecc#?nB_58HRpmAt0ol(wW(S)jH0UkugHlcRdn zy#*A|T#!w%j3B7S#AKnz2sbmX$8uJqH}S(CAt;p>zG&gc5ZTVMXY=X z+q++8QmI^iVcsmuMB`*3W?yZh?1vcED^o7hjik^@~Gm=2Yf=x-)(x zXB`ia0Xm(GB7LTu@hG<8L$LGKAFBLEh2v*Qs2=enJlWLXbeLQuv)FwHRI+*9LS&f0(!)Y1?cIb?lt!aHN$jx&_0jK_?i zcON2|(XZyxUIy)ITdNg(5tw6NMwhRy4dKh}LM>j!1L1#!vO;jIp&%r!2C!e*Wdz$h zukEV|2R$5?l5a>Zqob*K9gt`$tX zUyV?_Fh8F=JJunKkrf#n!WBDp=~+ma zQ^m|3Os59-?9~gqF3c`r45^!4Mp&!7?osU7c!lCse(9)S4J74fwNAhr;dNf>tZiZ1 z+~C&dhV!yT>#c(Li%w^)CSeyW(nD|ey$WAeulAmuJJh{_=o<~4s(XdIWd1byCMH*3 zs@b8Lrlh^0>yy1)m(e*H_s4;=E+%DpmRA~xwuv7;q@^J-HlxBz5;!?M@mC~qn+O0B z>qF6D?5+|B$J+U7XGI0knBlSz$xQTfI`COw6@GgM9Mh%pU5@9aPdcl67P(rH`{jom zuiRI3To*X+Cr(fcdwU)YTz+*x){GT+1P(vMno?_10=70?Og(WT*y&JNcibZicD+R5 z{o$j2^%)Lu#_^UYyb_&s@!u$q@=J4CXr7ig$9+qe@420~$K^$%o51ZJ&m#H#a(m9! z(pB$n8@6vi=)}gkOw;N4k^IBao#OV-hLpdGdCeHK3OrS`2&dljCL|9rPaaQKvb~sP zmCq&WsM*gPMfyFA`P04i+jS_H%WLu-6Yseo*G-kw2Tb~`7Z~YmMuV>(d6zGWxhSjp zdOA!rm7iT9Yp+N-G%6#b3Hxbd%hv{c3Js=lbignwCQ71>ovq+B+QZy{Vw#^iwyrHzC9xQAg_ma0HOIPW& zjfZ9Kun8Oae5cc|Fo4+PzKz5mg9M1O2jr{2FaF?e z6O&jYemnS6YyK=>O3I2%5m6c96yL=NiwQeF2(@##*KpfY%z#T?o}o>}9k&WB|@bXD;;{&w>oa zRNb}PGX2lpz58}GrQLOst_sJZL7V!3UAONOH@j-VyU$Y1bLg}i!bAXSPt2jL0wVg; z;sQI2ULko}8=SA09YPO3f|!mV*Tjo%ccdRZf2N*)+Uswt;s%GHcUOcWe-|r!3^~H~ z-E+Gv(DQYK5j{m&AfFQyVO|ll#rrF&CSfla0mL7w!~JI!>yNAWYvD8t@>{>RulqLV zqEYcjkK+4uyk_1<$CM>QL6mbQsaBS(Yj% z1{qOtxbLi@-c(hN14>T-F=esbN>xQNx)x=;u`j?HOCc9M`t})w#{)aoLVzr-F!@@QfW+j^-_AG#vRT(G zRIWnO3%zOyQZ0kLvg5m^uF3(FUMliUg>>3F62+>>>K)M_&Sgecb=WUHvIHc|3KU{! z+&Pl!4!$7<7qz*P_HRW4*-M!@5g?@U4xlu*Zv<(!L3H{Xc&X2t8GXW^IK{%kgqy3I zZxEdpbvI+G6#)YRkd0u$AX1Ahh9tMUA)9=<*NcpG+n zR`{?YDclEFsCU2Mic59xAaDoyt+@qQ)PL9oWke{i&9zMao3Z$z)f*$+`2gs*Q=j(j z-)j@vH_3TaM+6HX88upon3=Py&hrVMJ31OI3X?-mXjkb!{)|-1s)%w;*l9N|OH;?+ z&JDxF1+!7H7h625_x1&Mq_@&EpL2eDyG7A>*f*GdL{kc5Akn)pP?S*4-}0KtnQtLN z;Keo9t9EP3fYo4wuZIN=ed!y+IS(H56=2alBZPFmhWL!81QAtX==M`+9fVxqohe| zt1Fal{RU|SC|lE_gSPBli9%q)8jgg8vI!TMLG0ul1;ZA#1TdyG9q=sGmOxY)%=&B? zg5a-q{6;A4V}}ScWMZrY%RI1|7SXwd^~UeQt1B4AYio!cq_!&%Irc0Ki}IA)m&5nj zJUT%)O?u(xFf{7Q>${`!>Q~ib#~_h{?zIBd1PQ+h6@dxJ4^g$_PXP5e!VL8lOx>eT z*d+lAeK;J&2W)@Ut@XOr3@Zz$frXT~rPi3ojLwFs0b_o0! zUa&zSZmRLHYM%nXoPeagA3?0=WoZ9|_8YBS#4JF(nx~(NnYfn)kD0vC(4pD}$L@l!(Uk{1xhDr!LC_0wtP7mcokjVAe6 z;UTex%+uG@3ho6#@Uk$kz9uC^GaT__VO&8QVoup`^RPFzx$!)On~|f0y&p%3V`k-Fd^rR2-0H zMs-dj*G0={K6RrkD5($fDACBrnzs+SWVEWoFrh4b{k48wA+ay(j(-D++$(%dCi|^X z)ctI~vvWwqfbzj6xZFoF7HNF>uGWWU8CBlHu$kZ##vwE_2&^z76rMQu=mXT^KQy`x zoj}M)y}!BXP<}FYR-yRkT|#!NDHmq$XXAA#a3Z0>$M^tYs3q_s6ozOoV}(~=9fzZZ z{-YySm)yU8u7b3}cIYHm8@w2|rc3Em3#?m8%L!YQKfGbBsYp3^wzsk0!1e9M>tZI( zW$G@~tj>Le)3ORTfAyJ6eDa{{ea*Lr+b3FMh^hSkR{|N%tT9FuD2r@IRYMn#LD=L= zRTt~er}g`4|s<^Mi<^RD%S1jF5g|e=;UqLGh3+7B1}I_ znETdZn7()5%UP1XBeF%No$8`u_wj-J#|gXKBMLAv-2L{sqPhJyV`(C2i=E4l#xvo@ zntRYj1BY!{r+TLiYlJh4o-FM3$2P{MRJFN#5ez4NoYpKR3<+LA{eQH2oze^oolT-C zn&J1v9)xLbMc3#$RH%`7Y-gnvY{tpg)nD+wS(`ucDI(*QB7$l;O!zYIydLE6?ez^y z(r$sDrP|$l{c3be!}Y*^k@U`c^KSl7)&$ygG2(JxCp4A1H)xSI?;-Piuy8s?@ z^c`aBi52zS3wI*tuhp!uzd|B-meLyH` zZGiCcCE(*DQB#`MCiv9P#Y2>tHaSE-ttzeO|E_v1FaB&txjW{oxSNrm@>d;xFoOZH z3!mNnf?Uu);g&x?&hV>{QT`tv@%|uo)NzJGaB@PWiEKreXOOfF1aSzNEwtDa#RLiA zs2lcIHJQ)80uM*!&@_brO5lyrl!hSdqadw5sgH+Fg7^F4UZZoT_D;sY&<+D*bU_CS zt#9s>$;ZTD6|O_rD1u?uWzTm_7I=+>_NNxfJ{(GVf7|&HeCO<5r?z7=rD^$la(@(q zx^4(*$tWqhP44{4H6@yr071qB6gkaa!PCvWUIDI)$s}j6UK*H3E++4%Y2eJ)r-pc*r0)Yq>CxOE)wwW%YT&T7IqTd3ZNbUW%!@xY>c#x>e(?w+1JSb|?Gz zqR~$;PjrnY%aP}7F)x@ihWGdK(-;U-dIUVAFcz8w19`3*rsPgG{Shx@`sVL|gKJHP zuMc^ct6=EA8Uwxo&-&pGa+~4IMSlSmE@55kq|;sK$lF@lgz4}~9k{+Vr|u=zS4pUV_hnMjoHpk?=e=3l_YiEGbNz87 zI?jonA4Vfo`=vlPmYfULFck7m(!n?l=L`-Iqb-X9)tsFn#7u5vfO&VrhEBOj$LbH} zx9g3_RyPO5DRGzfBAFIH&v*@vzw%V~1vW`&?(on{)t#zy4B&pNd1ay<)8f;P=}n(k ziw(KE9;vQVKFk|N!dYRC>t$@-x7%V{4;s6tOc84zeApIFE!Wv0Qmmeg5qzHRnfW43JR?=jS?MVkR@QGC96ViEnGim>eN&cj#%IPC4WV z69Bn=6;;M2Wz||bNkNFICnF%Gx70NaU;XUB9bp7mH%;0F4D%{RCT7t4F>r;~ksLnV z5h|+SHXE($!8ZZGOmD>lzYW^ZjV{|(0hcY!a-E}dFtY|qQH6NXTw{H91p>X5U58h0VFblE7j83p2T~3 zNA=0aAUeYhn4J_ecDZBv9*rLl`$Xsi`ZK)MQ5X7*)^V%}S~RW#9wXXPECqvpnMw%z z*CA@JkX|)i4;)f9LMhd{{>4x%HzIya!z5E$NXqH={KILwy+-hseLTopbCNY0yt`JT zk074-}Lh_I>9bS|;)pNLm9x80DO**;438n^!= z6S2Vg(S%CU*9!}z9tMa;6ph+FWBr4}PCngbI?28;LPu#h_I(EM`um=8$k^O=-w)vl zThQF@1+88j^m_E&pY*0u8 z8#ib@tE|uAC#tqOji}@)(&{k1!27Ze+gV~@-QpcQL$&6C_Zly5Bl3JWy1zDRK*vyEiAwEo?3zq(zr~U4NCIC20yC17_9o&dxuI7u8u(kB| zAPYghrWHHpheTznOUE)Z=b?Ptn_>b4K&C9>d!2T?A`sh$&0Tc)@>XInOmo-}HD3fw zZwM1a=)U1e`%K`X3ENerqk|m1OC0elRdPc`5cUbC(_YcMw$k(QzC3^?wF%#eJt##6 zzs9OG_#2Bo6bNVQ0j#=e%;Z`f&9pIU#L%*(dr7QruFz=l5_%4y^Hh3Lg;}zq$D>Lc zUHz=v;p^G~b>D2?;B!@I^5Wv*Ol#@4xwv^viGcSPH_@ah#S4j5d^uMfxun8rPA|jt z?b@@#PhnI!6_S6-g~9FJnqX-YHnU{b>C~dfkDT*92EjHzCUSxL9jn~4z^{QrUz@Lm z3^q%x&nkQOQ@(6{MGCEfB7awymzFJiCj@@K)k3+&nN3Pm&47KS{dsSMo5R-k?qr>7 z&R)RMeyd!bwh_;UI5X+Y;y}wJ$MIC~s%We9C;2)?n~t3=wN-D-AnA=6#5cTAJuZ$;|+i%OkJ7F&G8#iP!lf2=%He#< zG(~K(!;D}KiF6f#4v1TrS2oe%YLH)<+LJFxWV-!vT?7B_ul4u*Eq|%yZp_I!tf_x} zdmG{9a{2r2GY^4%$O6lp*1|v8`?qix+kaN#nvHOl`J%eEuh#ZY6OgqHRun)F8WaiY zH_;d&`BA$;ncw8u%v&5x2d7&It6-B*nVgXrglh0ZGdepgY%)~-A6s7;71y?Oo8T7Q zU4py22X}XOmxkaCga8TduEE{iLvVL@cWJEA$2sSIcJKSO_pdd2^jBY6 zZ~l@l*Zbzl6BsU~jGudL2eNQa*U2B5nVacNSh)9e4LBN^5vmYYf^1Si>Pg@^ zT+VY|2cc<`s63scQz?=~VP9OsDXMHuT(+A)zJj0@4Q#%}1X&X%Iicl5zoTEsEBgJo zE$-`-57rnii}>A|Yon59pS8elVO~)r0xv(SeDO7QqctSMa`Jq2vA#v4rhF$YlLm`@ zzz(WLO>x8fs3Si`HH_tq1-(4#aSs>qJGa+lbd#=q#jN*vpv}MFDxdE8OTF4Lr`K_9 z!jgSh*VuG47n&iK&$0QcW&|2a3qrgJ^KNXHeA|15x}Z8m1yRaGv3Se}QB_H?c}zDD z_MsfEU2GDU=U)n>|4jq41p1&qtT(qm4;S6H^*_IRz3g6I0Jr`{21k0dm%a}KadiAY zI7)RHi(b4^N8P^AF-MeGg71Ms@-?sH{6JsRiT|Y#cR{dx0Sooq;y`muJ)=U#=sK&` z9}z5^RRs(Ksa4CJKXs?KP=vDAs+m2h+Ol)&A?b^ zH;na;rO}F;?ZWDrO0H|LzVihAjvxXoV!z$!qwcy-%@FFN@ILEuD*1+R^*`)q z`4cawbM{8<3M!q4N8^iEbVXnW?siMX`2cNe5bWBX8D}+7YT4LhK~U8L4oa^)v#VwQ zK&Aowq3_R|{slCpU${5FX6#Xxb_4#|(yBtkbSV7AY6t)upXzi6?%kl_j@l_d2S$n> zOS-oNS(&{Kb#MF&{j32mN1d-RFyk0{8nQ(wzCA`Tvt7d{n1FAp5nhB%!+JKJE!MDz z$9D3u2lSjd!SXA!*~|5{9BJMo#f1}kpK|6_nE_e6Vr?>7JKv<1e&OHrHWDxBtS1vG zKsKNWCmy&}0h2b=lMEtITKzJ%zwIzpxYIqEg*~q$V(069hRvhq!(T2Dobjqe+2^Vy zM0}dk9>4_GAYmjNU63Es{t?j>eD8Scx))n1| zL|#(EVYpJBSitOMLfM18vw)%G2dtn>IRl%s@RP?J!7dWYIIyz=OkMh*zp8ovFrJL0J>eIYBG zz3m}|un}AWr#!bE5F;l|%NMIB=do_(XH?Y~%(g>b=hJP?f>ktaSr>FcHgZC`UBL}i z{qeg&MW?Plh7p~Ea-nMX2AFTuWdfSFzK2sdbY zqhqET#mmF;KMC|v$gyKtfQ~vRK7INc(hq>( z@~WR3frI_KNHK9wc~Dco6#3)=aFU8HU@2yJ;2E>?%`~d5>2PrQgU?<`#-h_<{m#^} zwVt25%TW4<)V&l-J%Ek^=Y)3{KB3W~INjJD&x|1t4DGdE)fzZN6A@4me=6^1yL#;> zpQ_b$^o5-^I?Qj zF>1$lyn^je>vxvcTPdCzF)VRW3l+orNiV zn72PC;BBt9!VDjDA>)YyjWv@bc+thPH@xO0c-xtPj3AJQN<+# z+@)bg$Sl!^fEKQFrAZzqPl#tlQN>r_(oo$-&o`k>wxzIC%AbbwN$)|Qd`@U-ge&5 z7Cnkc?(V}8*phl|rY}Fh;9&UU*0`f1w4`NP1|x~FIoErJeYptbI;QljV6>YiRDRTL zB(RRyk9mP{``VpzYzY|^52ht78-V;@H!rI4(+$hZEnkU2oif9WGF zD?>`_`Q@23Wm=LQ$MM+<+ZGn@(f?4P$kb2zAoTvlaJTm>LgN&6#LSmda2pFxRP@Wv zHd&)9%q>lmRF>78>vJuc@Z|H2Wb`oWGO_2dVbjN#yPpL_^j9isH(fvz7jFiMXudHL zK{DvGvysy-AIl4P{%rMPyGe`0B!NotNV{as!>4eLm$Q6W@TR5 zerEu`N2jXKVsb}n|6sLuF)*Z&Gu3BhPur3JpaYNs$pV<7xm#@paG{shd4Q}ii{shS z(X0!#8Q>J3Vzn3=1_@q9%`o3|ah+ZRtC8zP#k;NKYa7KzSpLCby9nA5@wA;!tOFYd z{KE)rrwrQJlEaP%O0sJtQ3U=TakpK`6H`S#fG40`>s4mNu z4lE{KG!(fWDls2P-~lN7%{mW@#;BhiSSR5`WpHl!BuO=3s3eTB%u@giq3z!)l*b#r z`P5(-}+=M-%kDLE8nBWl= zxlqs_a1pyA*5DbKJszz7b}!VyO4AW~g)@EQ1*@OQ_alwD$n6)hnoUij2x6kH0slSQ z47Cu!&2f^QLhRHx&X+Cw%u$?A;|zo6g%0F>?-lw+1V|2liun4%Gn){O4)^1A59Wbo%~p%}b*~m#rV`cE|Fhi??>P?fTwIg(03EwXt_pA>l=F6r z7=C{HogUghC-PZ!`PAIvblM=o?WpNSwIU{LMEid08vg9N)+yeA=?Taq`QBxY1;$;b zxDKBrs+Xf%AWNZfj>-I)k&$p@o;12bwzfdswSW*(*1bKp*Ck4e_+nJ8f2Zi`JGrmY z8)x#vdO;3-hf_m98Gf0ssBC@x5`#z4Chim7^eKiY`LXbfC`xPOv2l84-=cC?)&_o) zY9z_0&vqr=F;%^b(^W?o$hG}umjqck$OQKE4lmy$E?_T3FE+e43XRMN_GXmN%t_=+ z%jS!Y6G{!pASlDIkw|s#GSO>9&SIq2dYw48LcOy6651}EoMslanFaAwy_WEIKIW;F z=#KKmRC%5@Pe6V)y8dDEZ8v;?X5SAAr;ot<$5mKBUhxFAfCecRWDTj69}FFBG{^GE zPh}+AFfX)T#U~!ew9h@LZ#^_W^BG)qienqeE#duh0686HR=V9qPNWt(4lPogoMV?>9ym6$NO(X?9#mu&7F<4b-hnH}ETL?`ne9qpP; zr7iFL2ueyB+PbmJG@rreD6V2tG{MbvN22airGY9EB|OEx*`<{dhpMg?g$4Kbs*4EJ zyuV!O(b2jOaDhiS^j`CZw@WG8Y0JW7{v1+e6X}_$EdfK-pxkhnW>In^M*IjHp zeV8u@ZS<&wjGnt_dDWTt=Nxf_a&|Q6G=^nkAdV^+(6091rX^gYy+Y>?)Ljg}Z9(9svT9^_ve(!K3_FWCXjVFn}`w{S8S zl5y80ky!?!Tz*Ak+ZXUA)TZcZC=#(iqPF)l@&yZfAN}OR@tjtK3EG0^&yZVla$x{k zFo(v13w)0qw|<|F7e5(;kInJHmEaB+>u1}Pygy8zn&dU=np}KAzK44{_iimsW?FO; zCC}=mE-r)u`zuOc#oj=kEbcs^Y<;U@#$U!+J3~d+AtNu>`?-$&<@?z1kg<4OZ!l`t zNj9i`ysE<$bJCx-oZ4Xcqp-l>f-8~}8P&8mM8U<7j$_2WbGe5!2HR6Jp_@K&hZx&D zr|0yA_=+eg!BpjojhUxA4wxl;wTBP~{ytX1hSZ6j4=XD2UAn>=QE5{~^{T1Z=bcV~ z95%hzOf$cUY)d1_­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

4(n_J1x{-eQ@wvqx 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 y2I50 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ಢ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íGVjPmcRy-6u*S(qg>2R-t}_wF)wU_o2L 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 e@MpY`&EyRAN{Dp-B8{DqK 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 literal 0 HcmV?d00001 diff --git a/docs/images/app-connections/doppler/doppler-app-connection-created.png b/docs/images/app-connections/doppler/doppler-app-connection-created.png new file mode 100644 index 0000000000000000000000000000000000000000..e969cb4aa2bc81dd7b91e3d8847c656a997c6d92 GIT binary patch literal 147180 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/images/app-connections/doppler/doppler-app-connection-form.png b/docs/images/app-connections/doppler/doppler-app-connection-form.png new file mode 100644 index 0000000000000000000000000000000000000000..1074fd32af0fbe21644511cbae8875e68fc5fd52 GIT binary patch literal 147273 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%0DdPEtJp>@NL&FQdHl{fg(@_9 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%0DOnpN*^?6!XOg^|Z#6 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

mVBvuu}z5&}3I||p}YSZAFuPu=4 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

8I|=;GZV+1s)MU`{-a;}R!l9|?vhb{ zXqCQvHC&9!TjtA!+OGjTRgngs_^_Krel;wJ;Qq3EHJ5K=>tlq|<@|ZKVy|`wCh~_9 zi=c0rT5b<^DNBVR%Ep_=Y2ucmmXQuG#&b11{J(I7^Xh86H1j>j$Zo;x)8O2z zpFqW9@c0s#`$ef^`{i@RE%c3Ba4Q~yY2Scj*JCFxnVxds#0lH5zL?ovs;E9Y%)I=1 znK^uWjXLy$du!b=axJP`PwtIscV%K(kR_+R)jYB5=Avhg$KY0PqlwKh1efE0v3~=! zI3^{!I&oRH;?W2~A01wMXf5-MVj)*Y(1T>rO>!r=S6AI){qk}1)-pQQN`|t-gQ9d| zBO&mh+Nsa=xgCl}c)t5&lFQO7Bnt|{gLbA9AHp}AaMnq^?vv!C_|47WHx}XugK7I} zWYuQ|-Fa-;N1T`T3jfv&b8t#r!<(i{BU_jK%qpj|gsxr;T;9Oz%5d-Iml|r7QHQZMH&u*aa~Nv4 z(f!?u26NbgOfe@NX;J|F|vy~jP}|W_A1n)mognW+)rRfz&uvZ5C&oo+aeCL z_HK6Yc&q@jebB*}uI#rpXyNezCI?DZ-4gOoD+)8U=m;|bd?(%Z=w*yw5IdRm1&PNDBvFBY; zu^+yHshi*pj(=?I8!0aB>u$U0LXNO|-+oSHAslv}UMPAxmQ;Wt9=@6fH+PX-{Z!9} zu)lmoo%2M4WoQDsIjFH9nK%wH<2_~C~E{?BGdYhUzay~7emWK9Bn zE_o2fZgShk9v+E|w;#vW32p>jj+mz6muKD!T+orA{-9s{F*_%JC&=z*UA2}*9Lnli zWsr7ZML^UWd;bwF6RKsIhSqTwf9=FTg_qj-beuu6Px)em!p#GShZ=Q)5^lxE_m$*$ zuv@*6-aFV`;&`#-xog1ld|rLFsLN-cxyD*NY;A3+J^oGH#Co57Y`!v~&e#QG8$zd! z#XQ^*CY@6`hJNCbLTmV&1)7Mgph%g^&Y{Mx9h$9G=iqiW23ht2JB(19mQP(2mt{v* z#-PRb64a&m0tD}%E{za3!Oi*$%*>?s?~{Wy_+^q8iBFiyF2>04Ztbl>o7+k$OY8&3 zBVjs$isIyg_sT>x4EfePDtq0X=}d=&s@f;E8+XP<^Fl;Q8eM1&H`U87_j(55IvXE; zopT=9)AO*u5-t-!6+ZU(WhVJRsm{0{eeT2-MQ+?y=f}ENXZ(5S*3;zzti#Vyr9bcn zN-AZ|ZG}rH&<*G(l^WyI9OfHM)VwA_P(fLH558otw& zYie^n*a|+#+w*RZY&-4r81C~lXcNY>Tg-dy z#zU3*OYLQfC_dP=k{lKr?&2HMZ+ITo18{E`7;YwN;V=7)&a){qjCR+uxT=TGrMyaa z|KZdYjYXYgDReXAu==6-VJ5iiTQ$Hy!u}7SBjgDA7&C#e`rT|xE5L}I$BU5pvD&RV z5_U$n2;Vf3ziz-2!>#8SByQ3@X>^nestnl)uwE>w_{iD1l_+&5j+kMhz7MEe2!0va z)?4!?4^DEc2?D;kU%l4;?p<5Z#o~B8_!g=tL*hWs;d3f8T6sgMPzJsa;Px-S(Qp>< z83Z8ebf+CBwr?$f0CArE@ZrO%F(qr$3jksp%5N~?)%s;9&)Bo0ar`D-0AJ?wUN_0c z+@1@d>aDr}GrLP;qx}u@ZISe%m{m9Oiw0}Mn`yyb>!xOTr64Tk=G*vB%QGDv`%7$h z`iQGc_0Wb;FTR+aSMO-xUJ+Ci6jkJ3H58mh=ZHm3OB_8uC))e*mhrU)PH$W+%r}*_ zcQm9xwbNqbX1q*27wB|*!1(B=m5mOA!8{soHuZ|V1%cBg`E<)6IcjLZVGXH?9-OfO z`FP`-&vrq1Lg9Uf3-z|bikSi@naonSic6A)dD5 z)@y6d;z6o0!No;7QkW7|?cN-(0g1*l0X&9+UfLN$`|0JL-<%UG?>`XRGxR`wVd)J} z(E582h=Sy!@1S)rf*!dsJ7&^2G^?P**w0fJaf@pa+aPFyW|bt)HT8SOE%_!m>Ny{7 zIeODTl~BxsN~ zYMrayV1q1ap1J|{>^EHkP5Dg)_FawR7dz3^w?A#%^a#!?j=OGN=C%BSkzE-_i|G+m zj={dhk8JJqwn$%7I^p4IpEZ~}WCj=9V1D1*+M;rB+ z90Q6KGryI1_(rZlJ+9Z5RoPijKezubvG)JyHEAy)>0~f~Y4_`EJ_K@0>_Fb(EJik!ScyQm{ z>N7yWfgErXuHye{@5tklO1FvFvt}yWG`Dct%-nM$m83;|t=5RUmSyfsA)@9Qlhu@| zy;q~CxlIcdiJ4otH!7r(p{AyQrY0#0#wb~k`Yy%Aa(eTAzxTKPh2Q<|x19Z)?>p!A z+%1n4lsGlJko#9Y?WZKEHU}0tzA)>h7}o2sUy<53_rTqugZ(N3Yv;9t2I-sKPv(eI zbTBV0%($_!I*5)vGqE1`DJEnx@u$lKic~?QVJVBFlYEFO4O*s z%Eh+VR(0)MmKgryt$cZ>j$;K5-U^nETPJ)Bn~i&t>2TrYz>k1!X4`CEXtPf3 zIOHCwLbdDZC!Sk~mTaS64O&aI&Bu%?h^?#2U|IH#S|PrQ;f+$2^s^9okpqUN%q^!^g8@g zr^fptno7dGvb;l<#Bl6$4q8pYW@4`dzUxI(vj9iM*LcQQe`POqHa>2`EDqs;N_YaR z5_E=%xMg>u`>K-9PP~7f5YEl2kZ1^_B1s+z4ez1{W8EKP#Z<-M=ifK9m$Th3@ysB(w;jq15NWiOq|j;=-oD0cjy zZ+V;sL70i-K;HJJ*WiA}PPboLA7j9ZY(KP-Ku;P?p9y@YJsXaTQV2^0h-Y)HgH#F5Sv*_c?(&xdZo%|zcox+6pgs~2| z@%U=OK9+;KUF0C8e-uJRTg_xqn>7qbiRLbK4_NSNeou)~@mPV{rAwx1{X!s!l2*}x zb|P$u6OIr7_sI0l+3AV>b-`|BC6?F#n(Hw)_jps`!&LsUw}yenF$LAaj6V~9jLv3U z@66A1|FF6!jj^MY6FE?#PEbgxHBTLm2P%mTP4lz0%_64?blukL%4P#ORC$%vp@W!w z9`#A@@r0A;{JswnKambtrn?li9-CO#APCEeJn43p!*!f)ps|2BV9lrW z#KJ7Zihp?=;hh%gVf>F8LeQy($t9>+d}(*xiy4|-TJ&DJu%lpx`>fZAq+cD`8n%>Y z7te;>t(hU#Z2hCXqKR9oScI*4cLAo}?OSP)GdXCE_pf^pD(#5Mj{%WHuDiRqyu;4EY^W}M`9X0~$h5PG^V|()&&QD19~5=ecG`8H zntG%zbwQILd#o3wwgK5->C4x4A+quh(5_r{30p09ezkf$?Nws;1utF0^TvnC%t()y z0TrC$CNHkVXLhtW)|bR+n1-{$f~<~K6?*7&X!$q)Lw#ngz!tA)w2|sIP+YUpv=2?~ zOS!qctXn5pyC)O)#-z}nwDA`v9t(V@D8eE0>RHu-#9@Lt3o~eQ-6V+VyL}4C&+j)* zJ!`4tWtx2=;oQm_aooU&RIc&+9e~W>Tn?uORuty5MSuazjvesTql7fxc z58vWhs@RLR?un7M=q4VkA*ioWkDq}b_9X;p3;n2*K58cL?|W?-1_H6}G)IJ>r?O}W?#qFn{4}_xV`Y7H^^~AE zbf~E~vTvW2=!bh74)}F{r~eP#;%~U+VFjnU%$^eU&T}EP|NBfmg7O zcbvw4_QHtMKJEDi5vEBOy}&b%tNI!=^*(Bm#5u$HD*`nWjLw8Vr(UH!(Hkpj@K0u> zx5AZw#UoULYmU0#GWGFgmx?XYA)NuG<7y(;T5<2YM+KY zxcuLrAt~GgPGNpaaQpjSv<)&RcseRSUXq@Afl*Hlq-VLD@NR`HSE|cjZUK&^l78MZ z=e>eR{kr9z9dIm_b0_tC&!jO`jlXPk&WM=ngv{Lun2oWit{di7B?-!Y)#)5E7&w;d z*=iz9;QelIoDcwrz$M@^=xBduB;ZjAkOC5T>!kuH6~5n_10+dw`rhCC_t0Gcn3M<> z04C*;1quVX=Ko{KTnsKRuVt!4Q_7;aaA@UJkZp4*C{@#eayKmxYkEO%^G+>)klI#x zcEWE?%-|hykuQ|T5pxMH7$C39!i>^*RC3<0{KKT+&Lmq^)K>X%!ie;mx^>uNmJp_kPiF;C&JG*-FX#2#qtZ^UK<5Ydu{bojI`rMcgahc)G%`QyKhhAZYad z#oj5QG%IZw34~K*GCV-O5iGfRa}~dbsDJ0_)4bv{ts4mLq!rEwzQXv++D1iSRxc6YUlFkDcUJkuzg(4D7xO4b`JJd$E*dKZbs$-fD zpqhf#t5a>hj5>L(_MH|l=1J$CJtUL_kjON-!_{43QA2v|qhJ7)UI?gAFLMj<(gsIS zVYpNG0YVD<6EeFO{)SElZ7=|@O{2Z^8t@HB^J z^w}++I$^^La}K;NX*S3Ll+Vb^4zLzM?nYccvJBltSuqH$NZLMkj);OJjVlweny2N+ znz~FNjr{WfG$1g-V=8OgN=|JjZy*OR1>YhJl?tyNe#WrZR{*m$5ju3v^y~YZlE$^{ zVmno&+vx_(maJ*7H}YS0fXi0$`=k&O_K5M%_D^})XUdLJV zud{y2gVVA>3!?ZZ`iJ$zBo^fr>YBykD-Pgl9|B3&E-MNKzAzrHcMaY(*Dc*7et0W0 z{}dCXC5n6 zOy-%#7c}H*%2A?HQ2KiX)udj>5(#w!1xv&!su-`EYT!+Z+&wr>U5#)ziz1sob}4Ol zpN+|s1jl3zgYKyv?M?>-J41v~^zBkCj41(Fm@y1Z0QaQ=9jL1vSrVp+Ib$??V)#^Y zo4BHa*m}ZsZ_s#_rMs~o4hkD1U4W8CR?@8`!{r7-l3+_)+#fMYLb0H6g|`RjxP$!? zXW=X*LH{*?rM!`J7v!NLr(AyB?x(ylbxm8z{@&=)KV<8S?{|>8Vf1u>PmRo?K^Sgd z1<>u$N13g)+a#6F@V^05Rrw6bm~WL%<+2G_qxJdzBhp3d(?9k9ekOuVtzRjj9gJJ< z$LS6xiP9=HUBjFJx$1Gc3Y?6MM-o@SE>vQIG}I+GC=9re{9dy|(NuG(ZTZX@iO=M} z-j)RNdMqR>##w7ob~PV_`H=#o<~WvvfaHTi%PYvsoFH|{fH*;>L1VV|Z1!W#i8^qC zQyb_x`_!AjfB)J++yc~t`-A!LqP?M%RlfJ*%?2P5(|c3L_i|Pxt6vyOB6AmDwLn)= zURxlB1!7nr1}Ov>^JjEEm_GAx;8GN$~CFsn@&hR1nWWN#H=L{G>U|E?>X# z?E*fJ;e<>dC4AdHd(g9poHCi*(`M6j<+mLOcnRgpA8s5xXgSLU%@;&K{wP>I$&eyP>w^tkls+edUNeh)x{Rxcg{FfKX zA?+imbcWpj8j%SZ9$rd&I}sT-lTYLR4xfkod2b>Q+_o?&Nj`4r<#O!5&lNzPMpp{jq7CzW<=XU-2HZyQbB<1mDgKB zE{mIF()~rQmn!6v0mzYVel9Xwmm~wL8vJ-1kciod9b>|MWa5JRXO)jW~A@U_1gl23-84fp?5}(O(`|RG-n8X!y zAf~QtY57=t#tg@o*vP(y+%ajVsGMZztv#!X+}g%cgB1#sbEI*EjhI7d_S53oqtJN^ z1A?tt!yP7HPJJy_e8%XFrAfwW;wIA4V6<;>STJaCG%(1w82H-{3>*&(`X6yHFbQz{ zKjRAE)c-020R|Ro4hHqFG8%8;? zTOOEzqL8@wTc~L0U~FvTXlCo=&8cnsmhj&0v$`V~7#79v8(duB0|*QZ;-|Tinv(w`~b#~$- zBm3RZpVvR>GzzboTb zb~JVnvbDB0ws8Xf#c|$$wDeyx|DyAsKsj?aV=Fab^Eag9Tc3bT9L%i$g8h5e{|Ht8 z3(CpHm&V z|G!}Vp8oF`SqJksHtPQ-5BNtLe^2{Yd0xQp@&B7V{8QNek@_ZWKsa8&pOOoNi#OOu z1q1s8CN3vLttB@a0{M~&m^ed3q0(IzWG<}5CGu*KDQik0}C zYs?R5pK@eUpq9YOhC5%@Ut?b{4@wour(mBrK5aZ4dR$$2U{q>TA0qY4&dn+^B9gb^ zHDr{GMt^!M!V2-f2HnIW8?O(#uSbWk&%Q5bW#9M@MeuE*@cc!yQO*97zz5YI$?ciU zk74cq)zqKVfJ{;M{T8zNyDB*TcjEp;y!Dg}f)Ml|0;bvipON*}fsIMBDex-(NMFtW zygzp$P~02WkzkE(|8Lg)i@NSCk!(mEU#!>0{|^pC!a8*yVS`(p|EFxm^XHHJ1k?UP z|6<+opK}2FH=_X%i@*L?8TcEUSs{F}evha6(~8G`&H=!0M(aXV_v8P^V)H@|;p#j8 zRHfEM)GOPSn{WJ|Lhoz?KJ}~UtgLoXy}L|?YS-ZgE3)=QzN;dX8DIDhMX-C4)GjKI zz|xFq@fkd@rgKh-k4)!HCS$OY_Z6FTvILFS3r>+*N6VE?b z0%{_wHd!pYYPu!?>252Qhz zl~g$y)7|h1sX76I+w%iI@rK)c$=kr{1a{vqz2KGXn*UYptOgGt02(b@e~yE#)unDWIdlXHw1-mT+B#l=1z z`ymmMN)ON8@Y^!d-5&S~(oN;>wuSXF_5iichJQ8Tg$BjUGTCXenf1NFCGUR_yjK%g zE4q3(CobZ1%rs@!flfD*V~Vm?OX!C5gesWm>|h(Z(C&r3us$!d?jr_{TI@4UlmKU< zp!Yt(ZJe;sH=HDawJ?1SK_2UGW0!^M?>s@=@onKJd5h&ABHOJS;g<}ZwRqdapkRTh zL|8g`IW`oz?EV*#e@$`Sk7RKTg|}NFhYgPMLk;d7F5WBwTBXWugps_c$qDtPmjSYt z!WTti_61`eRcmdgIxw9{Pmed3#wWyBpwfO@XZ$9GHJY}%xl+gtA%W+Cg7_ew?%I#O z7-O+QMLERQcFq=W<1!ibNt@V(*t>&GUkg67P3c%r`%ftVVnXpZs4N5D+)KSxQJD-qXa|u*x zP7BIT95P(ov8cGwQWuMmM1I1C?<|7Z`%wjRl9qyCy&t?lD5xq?=>s|yg3y6h(~~^; z-1ft=xlWsB%9-vb?S=>n{d+(Ei-SV}d=&nuKFEshiuQc&-&5jbz$b0^5#q`wu3N_w z#MSS02CyA}PL)6wh!xXC7MqupE!-a653g?TAqJt(geUf#mj@q2+tYk)CGMk4Mb~}{ z?Z2-Uue?w)XBIk#`tyqFm>mntW_S9Ev^*&yA~gy4JKvRT&@@{dI!BO{P!TR$tGxPU zt;vh8uZlk{koz-0=tOj&#LBO-4x@fK*RV4iR@C43sCtpOhCf(^)N$gH1J{%&M7^#v zwDb)EXww;w}jA%RgFb^r;!iqLy9dS@C^%s(FE9Pd0WP^C`fG9IwSga6|Gu#iM^S3&EqquzOU@ zv-|{H*B2sdufZlAU7Nl&wk?)Ph_uh2s(y^&Jz=^fA(Vr)y9b?qxtIvH_eWH`$RoJm zoK;8(cbE<+ks{FzbkaCFVS*9oRLh{lrTb$BSMM0rg3CV^;|+9jxh!)r?7^bU+UxtK zM3r;un~4TPsWL1h=0o@Emh*>3ordxaRp`!r;z%ywtfhQ1&~{m}{m%;iraQ4iIdJ%r zr(@Pt-l3O8j&m?PsP(#ctq%TN2+%-u*G{}f9lI;Xll@epzw?0u{3yrZm25=GVFHZm#z@MO=WxrP&hsdsCQBw1)G8}z*J zjnxAG==^XXfG_KLJ|J{$0^OnX3K@F13ZcWbPf*1K_QSnbwdq}Et&ZFf_=c=C0xZ~2 zpDpdTPdwm^5Zc@%s+d=;Y;GQ3a<-ko?k!5N=VX6v-ZO6Fs2~tRm`;I;Q3|C>JuLn) zNyG|fPYCE@8?!Ee>B3SYbKHDd(0QQ-tjPQ^!+{)O_rF?srBL8!IjS@+N0?W?q?hP^ zNef9uFUyVMs*m(>8Xc`y)6*Y#^2+DCb5^Sl@4p0n%}!3d`PsH{^fx{4WreJISJ8h% zcJ&+YHKgrJ0$>vHo!65UkZn@p}CV|LAEkSif~0>|Q(CQ|SraMzH_ja((rDdU&3c zo&1Y=9W(liHQ(2KpvIV~b%0KD3hcO8=I9v~DA)Ic-6WV?^;Gv|yx_C>M>ld#3U06R zvU>)`ca}(;J+yC=p0J1H)RDwRz8Lr`SQ`1F^XQa3*s*9J<)|YoIGcw9T=9m3MI)ZV z*_)cQ(TB1zw(^w`T;jzn#Yne2r_g?85*`hx>^8AY=hr1=-;AZD$4joQ(5Wjs0R^Pl ztS9a&Lzb*Mi;h`?IUe7q2E6mLcoI^G(cUtUZRXMp(dlJeX2+4 zf%Wwwp9TO?>~Q*_Mg`3ms0*x`F|L{kygeJVzed$nE0P+`L-DPf?6@BFc_ljBO_Vxq zq*Jl8DdLTBZRx75GM=FDNo4LIu;e_viESm`C2f>HM>IeYm*p&i#zsD_rULsedfc}- znXM|`P64O_fqVC1KkF<+XP!D#AB`@QtpHxNR=w_tM_zZLFQP|y57;<5mZxOhQJcSp zk{n~^=$ba`7~ctZAL$5Gp1nF>7Z(j=cCKpk?GIPOSo!MqFp@DnxC0JyULOYe2Q4^z z&3s?47{RM%L1?Qb3pn#%wRJI4TJZ${{Euu8V@E{9!BF5;RDM1h;8jQG2@42reDC@E zM|dc*?s8b6du=k^9**Qm8GCgT!M={yDD5Cba9i^u9bXh)if(kVK%{#oHd8wSxs@BI zV>rOfi{TBK#GFoGyip6s6w2b~5-K6@ZM5u6SSBGjmd%yyE&oZZx%SMkYqpYRdm2Kbe-fG4}V>Y%G(r}^MYnGwMo_9f$vsL3% zfFg?yrTck-r(Zz9r>`WD2+YqrFTH2CuJ@@55R$ZXCY$`35x+L^=bo{+FE&{$^TqlZ zE3Yj+IoPCe;s|^7!hhggE&GDpqiWQcL+I`muMM4LbLAnZqdW9f+ZE1b)#sU5)pdEu zw(~`H530*;`A9?7v#0EH3Z%}J_y_{s=?+IbhV5ozh)*J^tjqJlT;FY#YV3Na79VI? z7TTqdI`3I}mt?o)?NYZV4hv3Dj-1}x9ODY>@m{V0 zav#p){DUfl&cZ?j??uAGSEPUdb+D`KoE=CKP$sLL+b>CsVbg3wO^Op-8DV+x&$~|2 zJl6?kCqLc>fjAOu0a}+}05|OtRbgT=k0a+^(A_MBSOCU?)@wr4wn zE|(9Ni+_If;BuCkXWu{@nvp=BM2*3)@v-Q-sFxMQZmYVO*3)YW6-(wrg;9T?So8FK*vYlou+TxXH!g5 z9mgDH@?++-Zx$Ui=qytK8I1$;oxUBrirRn$WFIYN1FB!|(_FH2=F{g3m}fIch%X`wFoB(LPz&)k_`4+=)%~4*z=ve;m3p`2fgXTy0*pZ*YVw? z8^L0{!G*WD7UUcK1GC!eXvYsPBC>7=2aM2dr?!<%+N5e+d4 z9SID?7ZH1dzs69)UB#atO*IG`0Bzu4cAcQ=K)sa^7d0(rU-YK=xnV;!LwvYT)56@b z!5zQWuVt&sbz^7H7ZBpl6^6T#_^VQy`=+E3Y|JRl}Y zj>sMpmj}ISS;)&gZY0flO}Uf@9dvsX)Bhw-9%x$Tk#~363{KmT399iH^bqJ1pGB#U z8H3^oQLI>5IKtmW~V zNFEbGx*~Vxm=t$b{D9QtsW`fGNiA%13J|3yHXGadSF-NZ?!BJ~F7En90oddXDSgix zoTM8$H9MiF=F@Vf(pX6K5%IotqM5mpg&AiOCfnt;2~(&2d52J~M4^1UvpPBE?TpCu z0hee|ywBCTWbR*h)rQ#FEtbiIG=KBy&+XnCw!e3@f-xn1YT}QVu~076q8%$Nr(Pd( z8^y-&BSvAzOI*u9eubsO+{<_qI{Y>>9~+n8D--7je^8u~sCgQFaP^pzzuT@F>?6@R zMT>+YLuYFHeb{$Bif<;=2oJPjY6v#p5Jtb})Sqj*z9&xcQ47aBDQZ!#J}!^$U29XY z89hem#?c+?6DjpRf05E*r|P6uF|HI+0ub$jYBb%bO;7nLuR+iI2yPXzjp~iV=i&T2 z9B`SSW)$0S7VQ>7p%yKN?9X3P%GJYQ@{g}!D_5-NnY&H_z%QV_7B55X?QArE3J7gD zj8z&L`#e>MwZmcB09~k#^zD^E2!4*(+XyMIrpCt$S-u=Y1Nn=IYvqs^ue46_P*OCL z1tgaPQgWE~PU^*L<(^94%Fd@FT{ySr*fPLtRJSVMiL=<0BtPL!QJY(DB#u-jsMa=x zqf>Ad9KbgxG9}rydJU4UVoJz()QrK!Ve+|X6(#yi_E~f)(k&`b7s_)AI$>^gukBV- zV~uS?naIQ}KMC?n!DR)lmFtAM)U0i8*it6O_g`$mzorJV2wanvzw61mm+8G2Lz%` zjhVa;OcGKA@R4?v&p<2#<0aZkws+a-H}2{TFHJjQo`cKA(xbnQ9&x2-d_GpwmO0s6 z#`8IL_#L$*6?)k~-P8!En})Chmh160c+Y=DGh0{ovG0#4r(SndAyI~J@RsEz4Wrb{$pn^e&I#zN#78 zXq8C3?;O)elYPc<=vU?*+8UL~@e038*lYKRb0~OPcQeh(F7ZY;csaqXGrK&2ql_pe zm|wQV)77T8HBe-Ou>|QSoUAwuE!wqXheOA*Y%zcyzn!jr%jwIbj z_b4(z9jd+aB`jBS(3^AXEv z?2!>1@UsZAXn0US7>W9MI}W|wc?y1)3-%p}tlfuhXFdpR_tr@KcM|DQ7QRX(QKp@> zZbiXhOC17KC^yto?!}Br?;YjI_Kg`V$ZLu+@e*X-)_zbYtR3M{k9j{GY7X%iW>^xU>=TA#aIl5) z->vBQ*Du~l463;H2~g)Y0P2!?NIO!4zJE%g8V})EZDUL@zs7?BhPH#~Nt! z`NBt>Ox0sd;JUl}s|XRXVO>O5GX@}NRL)>=@}>JTh#jX9vQh(iUz{M|Gc5v3FV*XX zY4q5_gWVUvRCAWjYxS;Nc7N5cymG(s=m46g1TI||{=tmvk*&PbOa6Tuepwlsy%*pb z+MUD*PK()NqVU5Ae_MFgbCj0-Z&(A%N{TU zEjeL1o#tHXlQ23su!T~!oe$|08_~|Yj~U`B_@p9RW!|RvDm-nQV6K=QxjOdla+{ zTA{syV1H3Pc((xU*r(3qV(xl0s@mdPaR_d5Ntj5*PyS*%kcQ^Hp;jZ@zpcN-LVlO` z*5Q#{d$q1C9L90XGk`4R?BCM6E$^_iT`-7uZ*d~4~%Y0Y>=?swZ(bjjhHepJJ`CwJW$!KtSJ$6CNriGv#VnIq?FJ0{E{6VIJ}@nS#Zj$AmNSAF=VQp{lXG#Tz=(<7;d zQgo+;@mL=C7dlmM&uFLRZ5YfP z3CpmX?b(yhM6SWW-7%%8c}Ne66RC3{f+447)7fIu-R!wbeb1wmz$0mcq#MX~F(es^ z74lM;Z}!4uJWYJho<=!F?~)pM84;n@jht|LQ>-hq=u5a~d|$}^_x+J4%8(az596*x zTEW;oE=!U?U&@|jT*~V{Qa&XM8+z_NJyVmaL2TjJ5_Oaj*-cGq`+S6uAVV$6=Gbih zWp3q6%Z{PB#fY8A&c&S*rOQ(67$HT7{4KUKEl%LYh0?-?|5r+$^oYkmUh{f}q>mn5 zoA#XS3MxnY)WbkoJj8OZ^n7P04-4fUHOUY4%3)$X0|t4%W>v~0JG0v_87MttmLmJ7 zq42x3>nDTzh8id7;CsR0==2FjOuk8jFzk98uzz06u#3$lCSC8IEj@kQ4zn^Y$ z)i77l6-3{e)}VYHdqZM5hHpRkmKu(@ZEA>qOTp zj|EmbetldfTD-!*5s-v1y5iV!znUv4Usja z@5zOJuy)jUY=`BoEVzu{K8!xpsgf6|<%x-&uTq|`d%q68sr3r-dLoibq(YggEsN+Fpq@!I3A9m-cnelxAF<@O~W)zN)w*-F#;b zgvheEv8ek#55uvjZ*Kp1D0#2@P=p58_%%t8lXxbN9fW%tq;1eyiTOrX-VjUuf*h z>16e5S15nw=Fu9y-<{1@VZv8*>gJt^4G}(fetD0IV@SRbXowQoKT&}NhIu@a`!zVz zj9#WO*esd}89qQ>1MKpoUks*Pjl^=u3X_p}qX8t*=GS zNl`0Ept{$T*h*+C!BP0&iRH(3%Vjh2QNHt^UbWxb#8@G{u~}ogi3J)K@#(aF*%-4% zMgJtOaMRPy@d~w%AXlj}or0Dm7T;!}J|gE`<66^iD8-?Sk(otbRx+7a2re0C_4&jX zbvlISUk#F3TZcJtztw5ySI6?h%FC2di~wiu#g+;W)TBt@@LW(oPei{2rYj==hN^i$ zLtlBvfL!czSUPj*plHLbEy#&^V)$Jr;;EJg#o7YW=P$=06-u<$mWQNDd`PUyEM?w< zD^~*ZtI2oxTIPWSzFPhpL6uj5S-&<*XalqbA_v)&Vif~luW@TX+}uS2o*0w5tOmIQ zuLs=HXj4Yfmkgrq`7)CP*Z6xrMAdJ{p`BdF&H@S!use*N?!)t;noltjHrc#fJ!lUi zvw#v)@ciOBFy|57p3h|S&$nfd_|J?lxN(z?B{42NlCT%&_#2JAb_q`@nB zp68Q@c4ubIWZ~4zJBo@6ef%X~$VL`T4WXD{Fn&60NXp}VA{pizfY6Ona>WQmCDK)% zQq)~&KLnLE+CEqV2>U#rJF#U`&l^z&v?09VBqfxu#HS}+IM&)NURNM>{2HEiKgF=d z_^){BgMYSfBhWkGt>X9q3eH4$=bwiMe%BW>tW=hEOPK!FGE84V(xP^ z+9$p2#B>fFv}h}6NucsFZ;W_m=XCuk@gItFC~C1S=6A%5y!+exqq4$E#PpVg4C1G` z`?2xu>2BP!)=9@OuCv*4KInrQ#w%sq+Lj!Va!T<^X40IGXf9Jy%R{765|zMy4m_$! z0U1n>rdev!+9GzEn#P`w_oc`~SoRok3>pVt1XsYSBK=u4Dqy^qvwIALUxje~2<+L7!|y{9chN!xxS!KHn=Icw&r0LY)M zPz;~lgek(~H5?UZP-jV>_anPSxtvMO_W|bsFQ{glXKPV!_(}L_dbEvEvY4En0L5>C z+V0UXvgS0~&dn|fC+4$Z?%jy)=SM3cUXNcyD!O{rU+y)-+QkJ}oScx?J3ji0-LTA@ z7ydqy_NQUq7ZO5h;?8u?BiJ2B_U8gG9Ty+&EMW@E0`BEC+nIX7+@*lfz*B0IdZ1ap z(Xt`FtQCH&8BJlDuCa}3Lpg2;{{=0xB*L?2ZMv4j={Kl?_xz#K&OdII&rR;o2=B;% zZ6CNIt0SMM4E>_FL((GXHYZhX=D-uQB;W~Y_X7e5%fq}i@Oi=PQD zN#PnZ`>RuY9*z9gYtdmz+@o4C_xM?KC8bCwP12@*7SXz~aV6dOq2Oi}IZ-vj8Yb24 zmzZlKaq|L0$Rb|*NP7szAjql2t;ERwqrh2x(2Ntn_6eg|+*L)~Y2O}p5CCha|EdFzHr+yj`G81!3sp1VC; zud=y@n&!BsdmnpeI5sSHJ$Qu8E%+=A9F%?J0g?L&$Hh5o=%5!bK#mOhzFCzDPRby3 zuDOM}Qf1;+Ei?K%vMl-Bw}f<8oBBjKD<>aRo&}~$7nk@QpsK%0pTe zz8auW9~#uTFmhN5251irmPt^yOS&{WkA3KMK2(Sp-b}$MK6^IA3b1Y58Ymd7<%~Xi z;v$v^VbW!;8TaiDV_f`^A})APKkzwM#n<#Mp(2N0-2?lYR+I4luD<%dwg$>@JcP2w z%=vQ}xcODqwZK)lG*c`AFKq#Ws0h=CwR>fqz6AnVyKp|o}nTQ+{g39d#|@A z^M!UQ-9k;wEU8ai{P?2F-CJ|^g^D3FK6Lk<*b-&AVD@LGM1qJ%u0Ypm;4H=3*RtvlcMX~%0l-hpyZgAD(=Le(MX2s;VtUqj^w0jkmURWfG@;&2yep zP8*&PlGTdp41b^AUr$rtRSNU9pbaA#*5i&vj`q>jdJ4TjzloDI&g7@jMT)DUVqrMD zIT}t6+ZH+>caTIQS_77!39Ld`lK7(9arj{8b$2F&n^J20*Jm|jiGAAX1NflBDu*P@ zL{P$7+|Xqav)+uWRn$0d-_l(m!?t1FaZf1v&fup$udim5Cm#@We^{JB=mc>}^n*E5 z;K#Y_fIQ1rs=a1}Q+KsELc;Eq8*xuk(l5ny+44qP{3y+a%=WbUNsnGiwG4;ZqZt?o zxUfPEK7lj)3Cf_(P>0SuPDXq}@;pg&1l8Ybftrh3Cr|+wP7NC-@atArbX13!xa9i< z!D7%8xX3!&tA}mL?IS{w=&yP#k=)2A?}n>`r4LN4=GB5I{FxcR+y|RXCcJ`Y4Hcs6 zA6HLQghaSQIt8kFwT6$c|9 z+hIb!PqiKeb16C!{~emZB`04{QZ~eNH;2!AKqo*a&D3FwpX`SGsEpJPwE)fqH})Vl z4xHFJEnTz^)X$e7s}pNDdeQ^51YH>)7NGYfA=)&1AeDP~1ia4Mu>0OG6bLxt8=qrS z>h))N8?R{(Iz|;t%Mdd+%B8#*!k5Px3j$eJV2EJ#nGPSR`)zgCS|!)%s)eV*04w+A zw4G{$h1W1Z`!Tovj1EKV&FII2yCFXKdzJ^n`t@CS5AorpK+SpD`-}CP?SxFw!(P^F zPPAXL4ra0H_6c~EC*P{GTfji>?dW29#v8E5DG-l}X27<+pm z1W(1N8}sSBY$gq7k)LX&=vHC~oZEqG#go(9oO281&-!w2O~0xa=gls{fKz9<+7;Wh z@UX{d>TwFD(RrBg)9b%e9~7;qjx4nAoY(649-%3=XrnwNfwn!DXBW&Rr^UV<_4l?J4Mi^lRPKhLryIk(A|}Ei&b^=_rgi9Pr(n=@XIB0(>4hEVD|fA9Eb3wGX>Iq z=DY{F@_xN)FdjO&YPd2ULQU`W_ex-yyMcJyF&L<0IM(&~&7}CsS7P zSgVV^-0Fw=Y$436L8mM3VyLF&QHpPL>ZsA7M}4;ia~_Bc9u4=g?}LD@aMnkW?)dMC zYQ(tEot;(`IH&y$D8c%2c+FYeez4AhtmkQ@v|$d*w^IrtCZBXA6!Pk$?w@e;hx+-u z7*oVS<{yi%av_XWI3FTnJ@tk>L@s-BYiFj#=0bF4u~%w{QxsP|jV00sI?w1WJIfKh z>mDvlnB1~NxicXY!{M6~$CMZAYOk@wjl_O9xHy&d3e%AqNt)BAYh^j_Cyht&v?urM zqhF}KVB_t0wL}@(DI)b zW2gv~8o}^%6Nr@8l~j-PkYIfS|By8GCCGGI-P_ME*e%uJ&OGcStSqL>>H^(2rOwbX zrff;ad!=6Dy#VAX9Y|B0po$GUcC7)+c`$SmU|LqRc-2+AU$*Xi@r}Z5MA8xwLVV~B z*!oludLNKJPf%YoF-MlvRW4nF4E+41i@irSLh*-}R{_7Q+b}VovXg7_0?vdUngC#0 zrTfiq+`s%e{I0vNLub;ph^n*Rr1iEnoQc49i)E0Zv-L$NE9+d5`=rQj>ph^$W*Quj zc`;)fg9@6t9~0t^g;TKOJrk=QU4VdTbJ7MabvKXdzM1D~=;=alTEEMWzTf z=wWyq!(}tvfEfqu_+8!LlX)K%z zA8q%YS;uP<4RoiH4;iSSXh>xWKKyEUsMgaHo8rpxpb5JDxZR6nK~3&-bF{AqxOoP( zogwqW1OB=DDDnb;_tVwDg%NmB74JG_xs71#V;>nA0U1NUGEL+(JyC{yZ{tL$=TEcJ znGZyzFeN!Z#>U@Sws4CUp!6n=Xg#_9{e6QEuD|^z>7{b_LS_z|ur`_rDPpUi9pWZ; ze<-o4Kc9Q8^2x+>Ha`%gU$0l2gKM!o<*c;V*ir{E_YOG~5-eAipWVGF*)FOLi|sfv zP>WcwU{T8}1<_TEl=#Kwr^`oDxGsH$X7Ta)f+{_$Qy!E>Ls;km8Cw_A~Ygp<1dBPS4y~*OEShE>Qfng73YDk7XE_ESJuu$ z<~dn-@DP4JjzSrsn|$BzL}QI4X64)Mz6VW@e^`nL9iL9t?zDnnDhV)9*V41x3+b_9 zluO^Lup?`F{-xPs{b9t6=SNwVPSE*Dp?TFuf{T4&HeW_MQ+l(Xo&)HnN&I0;&LF7K zS_;Ae4F4}?!d&k=X*m~S*xk6jeW09*y*^~HuqQ0e?GjlT77w6t;IU?2@;^KYR5jG#Q#iGxu}2%A zduiwAgp%(&{mql!g$O?G$vmoW)0b|w`oXnhSMYQpBfR&s<69gA_ksc zq0p8Ps!3B{YZo|hoQO{*s$m$k;In!K=}+mNlNg}w31akoN`dDVz|-dMkn`$NqBY^E z`_yeEfqlEN4_~-bHXuFJLmh2Hu1ir};GH4J-|HZ0DK|AvQyu4$zHa}x;<)fqpC%|9 z9}5)o{?UsRp$OfK#%Z8ElstzcyVF!2`yvd%m$KlM`3c*%x6je*!HC}xfp?F{MJEed z^NuD5DFbuydsBOwZ8_UE;DmrDJ`lGFPQ&84XZ8~pNBxVKtX|zO^~N77F6Z#8cZEPp zhLf#Al2O90oq}k;8P#W>1=UWlVuCF2Q~zwgCpR~Y)gH!qiCzNVX^H~N6)&G}k-JHS zIg%cng^)b_2RnZH0U^BpA(K9qp?V+Ca*C^hIFWmtW5vsh+JB;IqE#u}FuweVsoCz? zag=g-??&^{xuB>G)`V%BcNZkisT29`MfPW(VY>xAXEg;q;gyG6bJ#|5ri=$OK%aHO z(VBab__X1`ye;(6_h`8FRRQeyb++J>KLENt(y$0L+xr~z zlo{R}D1s^ir#MMH@9EfVZ%jX3R<%yEk1u&AWnjD3$-2svV4_R1-tQ3t)U94_N-BQ{ zciAQ`oOzu;2z5~@z(nJJ;dWTYk@LvPZ=~wJi6h^GogL7p%@%P;O}{GZqu2Pyr%1$p zU`0o*SLyiq(!572)I5?C*MV-zPK0F9^l#b^a)^bW%b}mTOci+nPK89^AUf?)?N{@a zN&&GFNw#Sx#3(kK(kePNdzSuuEqt~8tz+Izn7XPjd5#BR21ax^{sH?0uq37i;^CEK zZx-Q;3PUD~?Yx@L{kO~M!(&nfRSur2i&Bi(^dh>8*-A3wL7*)nN;uU+FR~rymNXKO zyCLPB7&v$XXQ0>T`krJAMRkb$c03br>e?boq>^E|W%dka0Te2qGO{(PHD&6{DHr*r z5^h7vUb(xUb9;2e6<&CjAP^1@%^)-R*kCW*{^L|I-pfxIRr*02yD@GTy-~qwXr^ca z-_K5Fg;RPpj4Pk=_k~O@iooVH7Uic^1~~-yuA`N6@V|Z|hHHOf+MH{rl-(_sQI9@o zO8xFlsy{j6G!{*6N_L4_u-Sw=qBrfVBO`B?@gfL?!7p~%bBO9|v z37K~%ZR-JVOf7KYt4?e2{5>avaPmMtMwCM(lhl_zPC`R=W==@kr#i)RE6le4vR%-P z`DDTiaL(mq1)yopa~lHtwT2y8C)2c6*zPL}urPmah%}nqrv{rN72We0%U&w>^j7vh zSjvPU6-iB%*L^ligF5&HaG6Tc5EP`*wcONS86(~DYc?Q!s5iE-5cp)Gh4>EVx)nxj zitU4A6*N==E62`z(p$*3PT5Gb#!Xo%gtS^AZUcjFjdYZ0BgBb{4a$!~fTIIim`v97 zg39-oDBnUT2=Zxf@qWC7Pn_rQy43=Aa2)D%xkY(wCY`fAx&pM{lVPf4j`o#f)T>Lv zyCZ+}8hJOL;G;{sIx}>BK}lbqv3q#lJO|Py^?Z8^zrDAX!<9n{_xE zevzn`?9~rLtZ(CC&j3Qi_=W6Vdo(SpH4Qocx-sMe2DuA|M4Bw?14H19!v$`cl;hJ~hU7djxw2+>MWC>lmt!>;XEjDjRff zC+I;AAJavsS8}RskLP7;UkChDc|WQFe`r}b^w>kGPxtabw{@aiDclo-i~1c!R+A3} zlV2OD^0iQeIWGtJ^OZ+{^+>IU!p&Zh-i?R@2IuQV5p30Iu^PdMp3eI+2Bg$5Y-2`S&` z4dYDn<=`JPUspFIjg1Pil53O_J}aOzK9nKrKO#$yL4y;VCQ#W;D|k#eBayT6Cf~4k z|ANdw04TX!LY#9k6tc7gbv=c@N`7w@^}G|6RW51l=QFF7)&$mR;m}X(;nPA4mVE0x zpg#?#mcnL0O#H=bY~PV4W~18y558_?$of6@BYhUTzrUQj;{9iR!5P6cmX}-j*8&w2NPfX-i3QKDh9d_DSgHd(c7`(ke zz632P`Ae*%et;&f)7ww4yh@j*WtSM zeeIcwEbd%QOmi^HcYyL6_px6?sEAqmtc^S{rH^BP#QKF->S&t@omr>~&!pCaMM?qt zuLEsww!K(Ezk8(F%VP@})?Hsc(S~=Xo>eW_9wp-N5IM zRgbv3g-!C7+A2pG`NB=_Fz@2p{7G`8ENI{f%@Y3)V{aYS*0-$-1BK#HN`c~D+}a|+ zr9fK>!992jl;Rd7!3q?2D_&fKyK8YL6nA$g*v)U>bGCeUpR>QeR@U<*S#yp#$5?aN z`#x=>WXAc{nrM(j$cza(3|bEnYM0oh0*O8YglGRT*SgeYS7es%IydQPYR>G~%g6Y(_vK@0+s@7$gW2Eo9K zFQHN-a^oV^vpb`C{$u{z-o_Sl!7*3Gyx^V62hhau13A%HK2J&ITY^q0M$eV_l-`L^ zScM;c7R&KL6Dg$#)3|`ym0XHq^P+-2Ft&I%&>nY2TFeH46zC!&{pBr%Wo4cmNhb_RBvi_xOnzQjxDdIAR$$7o9VaL z6#~C_s6yseI6pN?XuO23cFp)wPwhSlMwO&|={8ZW zd2AX_ZrEcXRGxsj<4i8VtZzgA&M?n*`IpG0?v^N4x`)9Ax0j7mM_cES+)V+4Lv?$n znq_g+E2vDmM$2#kS>3k9^Sr`^MbDwxPpz&3cAd75EhMe>-90jbIEcxfYL;tE@AF2^ zCT7C$&}gdQeX*}E{Y*tqK6bK{I*YaorXR1~t@iPZog_oqSYB;rB%px^Q*eK`$@uvh zpF~&$!!tV`4Pg9c9?ETdQc~P$hYT|t(7iglPgOD<_59g;wmbX4vxjMKttJ$1Rizga z8#xtOos80h#Ds5s2r@4Y+K^dt*evjp&&mH6R9EYS6gT#Rt^ z*3(!rp!<{+{+Nv3+gRpeW(eKs=Ze1?Rj*Oe^l6;MR?ds}{QB$1vxmZB;sutfXns0& zy1zLaFBryr*`Hc8h@lH-*ZV~wn9}(k7yEKTy=nAn^Eg;ldgkTE@xgp@*?n+apE>`e z{!8`=ipOJR+TsT2DK&wvGVz_d(1!<<9@>X}GQ1oQ&kP(wmg+g?v%qyk)pLqd6M(|V zP1zec?v4$S1CKv(Y*lz;fuTb%GN8Kz@jdsW76 zCW@3?Gvj{AUcs}XZ<5WGVh!IvH7lVoPlkwp9pIs&!fS;6*tgW4`M{>Ph@&}osHW15 zNfy&=*}Fksv_BcpD7@aOvGxvW11`S$5V@nvy~-Jt-1~0RgMaq?I~M^rPD?Ur$xhnk zuT;c0`vcFEsaD}d9py21`b^r>vbD2*4bP<;9v!`d_Di}lipF!dXUk=~%A0SB!kg!d zWVTLFVjiqMfmQNo1*bcf<(3K?$09tp5WhGCms-{kbOt=XwCATbWi?2ZFeJI^Y^sEe zjd_e8tu~0<%+A9^Z4L0kPG}Rpv6%A9CX{$yf71Dz75#fk{Z0&v*UdP!V?I=3$X|3~ zWY%9pX8PNo&H**i!6MErO(v|6jS*r_V8kew+m0NEpxaq2CjX&jKu=2l2Y2j!JFRgC z_Up8K=zags?jv|p(n#9-+uwmWe6wj9Ghf`}9=Z)~q9of+pD3v!5=1as(hDiqiY*IA zrbe!_#bWf**3q6^bdN6oxD`i;+BhUwBlOP}c3ThfWP0S969~@xaX&3nE&mt)B~!tgGC2{BggPD%YK!jWiG@3%DkT*QTzIu=Z@Du|{W2 zD(%e$-;C@0se(Fw#6)z#xO_@+rk_2N^0Kzmbwh07e6MBhYFd#HxM3vweZeej5H?(d zcvoXsgAzL{)IyG%b%^&X@yzzJ_UPN7IQiVl#1kMMz&ko)+EonDHN(i8NLM!fk)Xn} z6>)iFtF?5_E(Shyt4`aFn8oTECA-4x<>eojtS*ENPK*iLT=;hucb^MOV7P;+8SBs} z>!2~frHf#RSsJRu7_T`uAKJsK&H2quj(cHqQ#`F+a)t0LUV?U@4~KjeU4(?;kW*y& z&}>{C=@u>QKp${jglg{_ew-nL02mkPKXz)v`oS_s9A7!trV!Usdv}7Frebl;v7O2T=7@HH85;atW zpJV;B3F~M5F!Ot)J4@Ck`?qvTIw@*8yd`*Y7Zrmn@3xQR$}0Zq0~HC_QM5 z>E^bs=$)32e7~&vd`aXSIL*kyfBTj4d=~AeP}o^O5YfFuBQB=(6!sjep1=y|Scd@i zyeYp@;8-oF9)$|;_y-3i#x{FLtBNWy>h3mL3MS3&Aj8WG?F^n7fdnn{@dl2ZATwPG zPjM;fX?#=Q!dr!=vd(2@MxGx|6TOUW^c0=8Vf;S;ht79>&C8QRPaH_`mYjzp$K!c^ zO#LY7E+8XYUGmd()c(!A_1aMAj3MsKXnU>U(DlqzAtar7WVNiv$a7FA>)TENlw^Li z@gKQ!WbTt6Eo~q)wKcmZ%u8`H(ca#5v^4~&!yz~hUkuWelW-fJfCdW^4R>0YVh78{ zFZenqJc9uw2yBz}r%jH)jO-aGUDCyPjIX|dUWVFP`%SWP=PS9~RKC2*^X-US+v&La zjl_`;t~Z%U>32VXne;~VM+=0pqdc(8bw6vhUR8(w!`d6U#|0YefdIq-i=IQ4$C#9^ z%UuKnXR5NetnHHo^+7tG?^=Lc(N?#qH46n>r5Ymfc`xqcj#Zj2s=Qb`gU%uSoa-IU z`&>iKjfF!kWAqYUjdrjD;q1XB15AX;<-hSxD%)9khGC20{bbSixn$(^Oun@ht-=0&e$+IkPPFEZ)9 zXiw2PfNnb;ve#HHvrPn@PiJ=6a*vj7N(54yzc$uSC6JWAx?NfbJXJsi3}a4%F7ZKt z8W(H#0GLD))9&r_6yQ1eJ%!(;-d3a`$9s?uhd^;iq1aZaK$j4SGlP!4;yYz5PZbu; zSN51qKOk;m1y5m&?S3pxRM!k;@`l(h8+TgWHOCvkY*%b>J;yA$&_%!Glf;I8u}ns)ygN z;Flw}q3-8LX}8*D$&MjHP0>q?H%}8r1c&YdaA+G#YrNmQC4@ayyZQ0ZMhODw5+!|+ zYkyFVm+YahAB#!{7&uM%P)$w&ct!1A-Ijk(V`qHlT$3-{FIz!)x!hJ;l)E4FXS8}x z-1hmd=DyWE`HbHh35=Mh+_bdFr8U1fWj@#~zbWo0d^RGc{wIyexid{O>Q^k2l z-`Vhmnq}SKcuiHUq4bGJIGXdc^*DrwQt%2#b>NjLxA@8$*AppGbnovlUxy_*-tY$d z1xTfu(52>zs_l-`2 zr{l(i{otq-V*Dbi-j9_+*L~6h;_Fi{Igb^p%EPAfsS*LpSQwbDkMvTs(n*|BFCj!; z81|wBToFHgOr{ht#6#D!{Pjxn>^{y}ue}FL$@Vp77FY1*7lmRH?JRAZ?r;NURaDkG z9&q>Xo7fif1Lqj|8$emI!KXZz>>RXx(07yLKJUKYg@p7>RIOjdf1vhHh_L1B6I1+B zrt0$__F91(5Zvq$8J-!@aM81L z%qXz#ZZvJY`_DKwIOvI;p>9ccIX$hdky|_?dz-L1d1cv{{GWoK4URs<0bbKG&dBtR z?R22}158gnBlJ3xU~c&S#7bAJ~_<#nAquftjcq;7zGND~$xe?bUOQE~i$*azg6bqhEu{<$b|*wPHH zQu|8huM{rhX$Fzy<#p8EUxo_>$c*pm=holFiedJv!}-J!2D-~j{mCs)0BY?>2xnbzUa8^M!PL>taD-&0(Xjn-(hw|mUp4B52%#}lS1)}x0uM|V!? z5fV@i*2@f(dBNssUYI@=OhBEocmCexaU##qo~Poey1O%8d;T|Gm(LShj5Anz5*yv+ znwZFbm7T%-y=s3}K4>WQ^iPvjkF#y(Br4&16}!z9aVZ`HL2Me)g}6M@ZZSyvi=I)5 zeRhwd^V=r|yUL|BfXI|m-^<;`Cm@n!G9l@!5bsUb3A>Ku{@@S_Ff=HHRf0^6K!1_3 zz$eQkH4i(@UPe+BIys!bq0KjXcYyWb7U+KF!@LrLo&GnZvL$bn7}{5F>&@7&cJ#LF z#NVr#5-u4PME`D?L9AM>&g(eq%1-zP^gXA2{-FGW8~Btn)BPdO^ACr#o5n@l7Gm4| zCM)`Y(0gn zjDHfjH_+TIqL8LYC8|SGu=OTuET-K6$wPqZ(pl+PU;&$d!0<(>M+_k|COq&%YxL? zSMnE0Rfz9wDep&$9!dR*B_#OR=IVFVAJfzZNjA1SrCJY0#RcZTa#}GG$TzYGDAtqP z4NnE0`x@7uk`(h?GK9GV$HFdoj^rI=G6G9t-hy;cP_-BEU4TzXoTuf=h|J}Z380!f z5=Gj+_R;+qwNcOD!EFrW1Xk{{nelco!4Ll{l=*ij+*21lvAOKad31ZdFI%Yv!4Wxe z<(pUE_`Oa!+0h1jpW5bXXAPZI?mB#tPh)X=_)hfY5#hK{*=kZFJ4X@$S3ozv?j+S8 zev?i~BU|%6U$C20^;Dnh;?o@Kz~OnIFq_A@s>4z?Jbs7eaehU~JhdKKY}>E7nOb5Z zf4?#U$$j+Gj6c~(RPQAK{(5#E4QVx&$1L*o4KehbaCNmhmt5}%xswKnhlCABr3~p> zjE8w#|1^!C7g!*ytphd2W#cN=hg}-8Cs_3*-TX${?_s}bYSFlWqZuc=Uf@AWOMvZ8$L`3@T4}c>?NV_VR=7UL zdxw%`k{}}-pP1XZBOLI_xoJ3gBoWn_+B^5KMb~D{(blDIV)ZjN_7zsh&QgW^JwJ9! zC{A2i-Yl2t?97f}7cww?yX6Or)6{y37fdD;06IlkM_D>R}E-a*LCEDRPSdD zv@`efezTk{m(c5E?GSS-)af#AcOmd8Qr48`to$<{e6vl|nGrW!*h>|5n!%fOq$eTZ zjCmIt^`gG9azwutcI?)AWzy5sy?=0&f`@~_Y22#9k z1#n2ZkS#2aZ<1*0{vd|n=4k#@ZRC>0Lj#}VJ6%_!3hh{Ck^^(-oQ#$ZLJROe-aO^F zm?+1E07G$w(mQhygXJ$t`JN{!s_3qnc}8Bbrb>qZ%;CAVZ%OtJ9mk3-G(s^M2}7Xc zcD8!Ci|XwA?7g{D6>5f_$m+j>4SAQf@eY>;3r>wUKKd@2YsYTSdyaqGyQ>BMyfGzO zRz|!tk?QKuaN{D?Hu}+ZF$V*w94={3_WNnU$|6ly`r0o$$VYnV&0n~Ga!;|C=X)y} zV5GZ-j+*W>8}=M8o*y15ueCXHnrorjZvuZvBu|D(%u^li&QP3>O}(sW1- zHWOGMPwY4Q${Y;u{$wla7!BliEYxQjTGKZ*;3q5f^D0gkmFQRUxaafwRZ4ZhZ7Ws- z93;#eMsIPs*W?*62F4@jH$J;)>O}3Or_tFD;b05DeeCZP?~V-Kq?6Tufyf zQ`R`ds&C7%s5UP|)m5=+d`Sh-f8KSe&Xygplu~IkSY)o{Sufi5hRuHblk6zm=XHnX zar<=Wa)Sd#&;=u2%Jm}XC%Wq=HpKqkZRn}E702=UXtl^S|K$&?CqXAwnb72qW6~UN zUm3CAUT;@ZDsD(z-_(|@E{R?Eem)8l_JV5<1QHGWJl$x zM+x5%mfVMc#7hcTY&AJo7%d`V)rZ-fPxVf$Ow;UBMk|`Zk}S(If7+$HaKz zg9)kvZ4}h1jf0?wk=-sB6$dCkAHjjeb!U;m=!e23NxiR{WTdrNyW9Dh`iBqT$)yx4 zDkqPCQ9eY)~A~xsYXIiiR-rG?;hO9KR z9#PgBD~-Q2{ARnpKO#WU58aM1=W|gNkQ>yQrVx|&@)On+ym$bw`~I6a%tZ~V{6!2t zs*%Gau|uc})EBVkWtm8OMEm9*J&hXV4B++I?R(QNVr-SQovZ3FE-+^p8R5%&eXT!g zAN3X=HoY*2&1uZO+Vh?W*}V9J+0)CpxV}&{ zsgk8yio;vB6?{H+jx5kosDOIO9*n=n^1ezlHmk)w;>%(A6A`ac9+wHGs@Uj}qI0O9 z{1%d!m01dTj_$x|g=Z;OTwm&EsB3&Ie%|y&_JBe%w(67){Igqr+r#zsr_qAv zrnaGka96pwvjVWR6aTzEJPK%lSkK$3;tL6Enc&{>2nfjENVl|g_{WPAi4_*=z4dD5 zoC$eCSJa99%GY+sydmoYxf@(i|dfFi zL9PDcCxSIe^@p=t%b~x-b#m)ON)ytDPz;M5in$ktW|a!qJRI$=*;@7%Xr$HAqy&q3 zxy731S5-AO?9ev+dLLF8QK83MI~KVJ38|qy8jDKP%e;MW7b2LOc_b%5OM+EDMs^sQ zfSEA+&Rn5P`f46~a(PLcY^FE;6sz$B+gVBY{rpI+Fh=+{E$46WJ$$!0|A?eUdVF-f zrz3}1JC_(62-5l$p# zAiLx6H8z0!)C%Jw*_x2#comz=T6CrN%pw9O)Y9!M#vW$@O4%&0QL0%-ss!S@jqew9 zYI!7Dp%1q}+BL(dJnw#xVw2G+Wy7tS-F=NW8Irvru}n=1<5wF=20Oy!(5GNKucgu5 zx#&t>+(KCt%b4^*?&lJFByVC&v4Y1+c35VPH@jc!Qz6assu|+s?7HmPfLZ*)>eyV1 zlgXs>5RZ`KZ+lPYol8hZ=7(|t z$?@FpE|Vb$w|4~~M%kRLR82ADr4N~}^8um#kt>yXU z>Ms|d$`DnlLvX+k6AYG6ko7-91<5=!a*3{2zDz2aIZw$_m!i_ywn+=SP0070-HCYQlAYI zI;Z4@@14(9g!>~Y7iR7~{S^G1cj$kheOHM91~V_m*5EM3LA~fBuF+f{tx}~u+n`*J z(7=f8{4qioIL`64&>#5LeP{%uz=}7}_}b$h_Z1Z$)oCm5dR-x&0OFo?m9GnQi0x$A zIAL3N@|GG2s`)|q%2pvvxIymypkdGVUPOu3+V6&(2yZf=3q-3pfTb~3;#eK|Jv5VZ z&}-*!o}cWuu0nr9+nwO5x3ll1E>k?QA8r48I)^r?b_A98-?4m;K)P(P~d5nfp1y#QuHRUTj6 zGSG(cuxTCv)l=1(y_ACbas-K2y5$E7{pW7gOtW@Q`LroCE#Wz*4#r4zd{+nlNcJRqBt;hr z!24mZ`Py4uaa2K_)b=ik>od>xb{d(>i}zKjd7+WzK!L=|e&#-6kg3s}LeQ&-5zcs_ zsC(;oL2f7OCp46eIVn$NrG|gy^$=XFia%={|L2yUM*7G<@+BvxUk0ZL1d@KI3}+$R zv&{-!o@sm@w(k)QxvcQ)Z%hoqEm7<2c}S^_7Kw`vC+1IZ7smf&fRk5Kcrsu6HOXBa zOVQ&o-7!Vg#p+T8PhNr9etq6L7jG$=vtZ%@`~ZSbv7a$dWF6(aaSy0T;yUO~@cgrM z(mDu{o&p0hIXScLhCJR@{QRvvxIlS0N?f-h-UMgDF&NAkx05)7@;%=-5%V_X<`8i{ z4Kp|pC*osuMxVZBXiDE@%yCAa;Yf&j)Zkh`A&w^dfnJyc4^zJimI&gX?@4+ z_B@b3Hu;jP<$CAU9sO~Z1Qo~QnE6kV$Jy{hlSR#MuMBI>IWV!EcG`c5U=SUVDBo}^ zwR}$^VO2#peJgMsR>4Ycecd&)!fH9uwi3jJID#`i-=~n`#%yGbXz&C13HCk(eYi$M z?bITvm1bCC-BCEvGtjFG+#Z6TaC*Cy;CkV>`y4g5HIGTvseoE@kktqqQu=Z7c?qP-C@rEFMlZHDNrQ<{H{qH z?Ai#66Vnx&F7C|6Jy&@8^RnPszD#eDaypae^5>{*a_$fz4^dLG$xrz@Z^Qf;$tPC0 zN^sIsBt8xne2`zv>?C(QwPVVn8L8wYj`I=>h=7bU*&Jjo743|E`OLidFF5eD0Vrq5 z{I0q=3qGHWYAi!3d)&oO0wTbBxG?V!ja%ztPocGMaOcuyIgKf8a zKZx+&OZJHC|BkvQd5mOf?jI@7HMN#sO_RJEf5_e^9fNvQr20g!vO%3&9MTR~oo_^g zE>bIypZWlc^?|h~FJV{%&+@S2p5a!ZH>ykKt@64vW~DEl0u|ZnoR8q-n?c;Zme2|X zr`Bm@A3k5RcZ_GcGB0!s-o%MB-A{Xy(TqqLUtylIPry-d6e)Q^UbIKOqtS6HQ;6tT z*ah%b`*nvsW4M|Cp*Nw=x^4xnBG~w-DblDK9hNyh_?cn4wSprxha5$V&A{y;mU#Hg@Aa!U_=CZgWKJ7bV}JW>&x{!peNK>#YZ z>TbV4IAe>`{xXqJqfmrRX?_@JK5&kqa zg9@+V<`IPvy`@#X{gxiYF!?*~6^Fwiz-M^ZopVmJLm|XArmMImr#5-!H6mAaP-)FJ z8WNObK;>(|I}qAxcj#eJxF3l}Ht&(3K~eR?CN2T5b@cK}`bT(@ZD-aH^DXGEHL-OX zcubvUc0H5cQF1DD=5fC^YW&H=d|b)FZ$Fh!Q>6eI>n9O?EaH>ZnieA2tl%ZPyN3T1oZP1_Phy$ zg#`)GXM9og-%((kHhb4OqpMcnc%L}E#C+;agXQ4nVK<6v;A<2l^!(TtCiE%XJac(`Yi{0a% zdTCtUjaIF1%vR32oM4jD3O8<=oH%XMwjhuJ9dkp{)cwk1&PO-eHNgE#<^dZ1gJzK$QLF9j6+i*V z@m<=QsLJ~bjOnR#TnC;=C5^PTi>BipZC210jaN@~yi(U%bZ5`1D!WZ1+F%hsa~e3$)(){=@FC^>5Q>0X%UD=Q)}d^5L{| z-fOImAI>5G+#g5|^bx(#xNoP9_`R12U!y=2P_ss%2+!Wx3fEDCUqv_F1)v0P`Y?o8RZ2 zUIv$|T6dz=HyjNHmk!lwv-(_HIT6QO^Iz4(pQ5J5h;uo|^0Vp}PsDl>#PZ>s>uBv? z!oU(ee^&Nv_P5XS{e1}cxTdz=WV4gCwl=(;QP^i~X4^ISXIDENiM^EAeK*q+0a$#} zC1J`h=2mjRxKys0SWGg*t}*A<;#52i&{8qzRBQ5jW$1W*-m%(+J4LCX`YL`qn3h!YTt?V_?KpH6cqB?#j?|D{$= zOoPX8C@s2)ThAa<8{DWbu`R`LKOg%(TKP^kxW#hKvJ}S!nat^L>fmkNV)iIJn*&X= zi3J*w5g3Sh$G!TICP2WrfU<2W1|-VSo8?;TzG1v@&YeNL z&+xwI)euTv*MU7P5`BBpvPj}Yc$+!oq}w8JbD5%pmL4vQO}UKK*z?O0lAH z=YPqgn=iI)o^$x3tf9X7q-RKL=6T>)3@GACYl-&Ud%RfyqncHM6-BO$qxFE9S~b9Z z7rpU!fBcz>#%1PTEICt@1TOek{f81!$nZ+>m>_1`<5N2u5_NTdCOKq!s{XK=c}AAH zuPVk~HF8uz7`@pt zTN_E9B0+|lN(jI<*j_!`>cy2__*>JpcN-xPKJ+EE-fP#ic;A*g=lT;1Hz?$nj0f4d zj`%6a9PIKj;h*EMe*uKaEd%KzMb5nX5soerd0Kgk&{sS<=0u>rPDyrR&sD8-Dz}D) z)xfmqF2*ltYE2&^4wR617<%`UlVLQ%4BI)$MRvrF^bZ|s21~Su7wTlFJQ$5g0-3fr zZ!#$!F4S@sD4L}KX20BNF-j#Zx2MsiF)D1AnEJB{aLX;4kZlz#k;KA!{%5Hwqm>MrAEOd%j7w{gA3*NZR$O)klEGR)H8U zi}`KjV`sDFSyAwv3NeHePsJFweVjpmRr>V9M1G_TJw4(7K+J9_2piC-)G> z-HpWaGp(O0!lOQ3RrC;DVFpN;F_D|_Ubz!5H9rAigTSjfo^*FT9Cl0)qkD-QQIlQShD#e)uJNMe0O5 zAGQ7|@65dxD2|1PhTJcu!;3e4{(aRuy_A~_8anvgTAAEuyASm};Wbi5&t9TG^^sa` zBocb`(m=b&y?j`NrDG(elz+|VuW3C@l>lz__+Q(|*;xF31lQxnTY63}c=7(4Hvbt3P|-tV-F=Eo*9YnI~BH ze2}3o4n>DXZ>F4b_01^4>=k(az1&UM1dtGnl<`0YYG4MLQCZ#|0-+SQa8DiSLPx3W z$BszwuAA7;>Hf|}fRrL7W7|cO;RRnVwI#GE^Jl|DPi{Ek?<*nlY}rdi9MZIPZvDt3 zaq%$!Sk$@|6>k0il|FJU?zpkmCtlgddTxfc@&jkqTx(8eq-)6gaP^$6QADoIqEORK zd4&NpIi7Q48j$|$IVJ8^VmdGPHV&b#`sOD@-)Fi>SWxagUQ@Rf_I*x`IeH6fn1|L^ zyS<`C3b9r`1GbxoW@u}>qW$;fzr#X@9z81D-rvd7@xT5rN&oA`ARHxK;1=7%1H~U` zd0O|}uwF?&U|B0Ix7x!*#KbQYy^dWz^05n;cMDPavvuX@9^%8n@WAhJfmDbHZcXXo{^$u-&Wd}dF-Yb*vn}HOJals`19!qmOLudvlsDq+C zk)vA1n>Eg^TH8Xj6NfJ(YJk?rCql{4hheAK-uK*ZMArVMEyw{>6KxZUwO+FJ{C(m6 zOOyV(K!NDjI&7+FhQT#X$Fl9Ei#b!25toTt#6eLDM)8qqXH^;1w)7rk-GcaFAIY|* zCx%sG7%z>>(>S+Z{WY2N?`Yw7Glo1gUx&wX8AFi2oNlqx-c zWKa7eNC@Un!H2?mHh>r%++#{}|N5){`OfP#+U=`fi{P%@tj}9;;^n(w%E(2&E=+2KnFb3`u>k!S@wvf&qm8@4EhdAO5Q~ z@Kc`fSS)@lhx|IqfK6VdO`0|P3zpcjqHn;~o^itTXri-G% zbNk%q5AG6DWyqnj?^*0q{r~wnlo*{muzq?PT`QcP6#qe`(-!Tw2YHXq-B(!YN=Yo7 z+`Vp=ZRsoP5$kd__j;|b={W%!EU?X81T4nI_@9M;71HL$l(7eg!wHg{#2AI9=LJw< zf{FS~bNF|DAAc4FUV>SUlH3Q{;K>+G?#H&gZ?YVofr-(lEnF#&)@-1fF)@YbqTpILi-Uxkq7n%Ju{Kv_C?1+xAu+&VN1V z$WV*Tyy+&Miw*bmGOaHKhd4Yb z6>Eyu{-0z7{(~ieg|;1DCTvZR1XfXPH?*{x*+=Rf1y=jLwcu&(F1RZZ$<% z?8DXL!xD`0*uCm*vaIH_&zpuS_Y{SbxE?VROrP`!Nzj$W3d>Lcg_WcIX3_YjwXv8)Cx~}P9}!-Lg3Hd@cEuk^bI0jNH*%{QM_xEmphJ1k!zIr1 z%6AZ(zAPvDYNg(oyK~M*q*sr_dHOd47p){ky?>^`PrILzZr8(XGggkdkSv^q|7=_S z)hzw(?)c5KZLs7jI?28;+e}Vb7k+!`M6d9J{l&`p&Ti*W-Xu)Ix}6uZDL&O;rr87c zYJBA7NP4E}MZxp3{$cJ@^lB^{NJ~TGql2@@)y?ju!N#7KA!sSRs#oDmYE%I^KLIzQ z^N$F(2m#OPrQ=z$%7AQp7qND3!Ee?h+_8}o3IgbUZF-E$Wdjs}Y<^YW6JjwIs;GB1 zDRle{N{@)j{2#AapT-!CZL~;yld>lnzXA`oD8B00$S}ri{(aS^h0#G%2^{zjmf;Q^ z{rF;KV{d71*9aaMg9Z|OtV4j$fYgtfrxGOBACLFsP|K37Tp%YR2K(n73N!MQ_pw`L zw-Gmh3k<=-sLZcho{HzH54kL@OnXPabv}zTU!`o;BgSGr;!AK~M({8#UDqSxCT zJwlv45PQ1=3tl_FZDH1@M{dQLO||=Ie_Y(Gn_;@(YH#=#e$ztB!JlRy8@s!!YswXk zpIws>9pew=<(0s>I?BmQeHU*wA+YJa!{`Q<6(E zCKYS_0_53kdPqYlm>Ip8l4k#t4D8U49ixBWpK_PDhi1CC5^W=#R3rB~z4RdsH%D6O zza{QmFIPV-Tx>0%1Kwcn7 z%YDM;R@PP^#3RYUv&@}sdxOLXa57jyU@#|h%Z|!}cQlzp;9?CCs!aav_BB_e3i$ci z^#xJ>p6-*A7AC{H`PZcjQEhOVb6@ry^Lg}-Q^0}UkAhD_VSc*Uc9vFe@V{Aa(yRz} zJk2_M35ii34!cTgXfe+4$lv`|?w>|{UaC$xE3Dz6;$L$Mb$OVry-62K8x#CrHTVUZ z%k|n;=aK8$(!R-6ysHD-?+ZeV`iC1NG2J7rR=PO*vGdu|i}UdnZ!H?@_iY@l>;A65 z-otf~wv^3kM=sj;d8Zoa$67sC>_kN5d1@4F%r`uKS z{k6=AK@q2c?Rz7N)vEi#X=GZF9Thgj3(FI#((zAjB$sy~f^ac3_9b=D9fvTEl0lZj znmIn0x@X9ciD-S7dAqn;P}6zjcE9RpI5^@wa=jZaIeae}Sj)mO>MT9|lm_v~*1`2Z( zA<+jT4*383k>ogy$ih}@6~(h)fd@_N;h+?_*mtqh>7`b-=Vfqzw)WVM)bL*U>Z>gL zKP$2soc7=2ZzpF?-i+6dcOOxNS3|Bka-3lj@h$yAm*OKH*|s9wmbV@ik=Ip_genR6 zw9B#=WR%Bo#iJQczypPa$df}`ZsAjbJdedj2`(-xunk$G;_w)U-5YG$jWlApuychh zui?Uki^pSct$4dw%*5B(9745?JIsq431O!BPkjt=P;ExHq+l1ihCCjnFKu47s+oA| zKUkIRIgJa7+PpY!7^6%NrvdmO%H1mk7^>#4|z`v zXfL#7TzpsFoHODNSn(hB|M_n$fEr^Gb6pLEtQ3!u7-={wK*J?gs^s2DZ^XX?;26{N zz19+b7v0p#fm@%jUV>=Jp%QuC#V`{`ZQyz(I(`f*il{}T@*fK%5^IiLBEB4gXF3%Mg~x1r3#pSf?b zn()zj2X2rhrc(Nh`l!^|H)1^4#-oC$ucQRAY(lYJcJPln!xl%yS+@W!{n(yFD2>mK z8QPp(U0t0$6iRJh&ZjvMH>))%2pZYs=ApOD$Zjk%wDTwr*RWS<>Eg{UzG$=^A_kkC zr2-rr^{_|*5zIVJ^&=%UGfY4zk|z1O@U#Qa{ofwxKRGu4kot0hR9lO{&EWBrTY{zw znCKV*9=8P}`AG=HdX8!LPZ1g3aCu(?+l|8c~suXtN>sqJyq*7_JS?mKesqTbqcSE-b0oI2BWqxF=K{$?S(6d52~`gZ(QcVWhqcrEIk>=;&8 zy~5PD3yjnX5{>`hCAmgOdJM15RS-UVOee%>I{zWMf;Du@FBJ7lZC7xMwRq2tfL1j(+aVyl50+3}ECcxJcq@ zgnd|2(5mRFcH>xT{B8?NR{hbmJ;NUukX|2@SLt>s>RBX;5LjWC*L4&%H=KZoN%YTK zwrjzxG2!MzOY(oX_xzh_9k1I=2_72|4rl3UBRsB;adbIoCWH0&OY0P9lqfFiaJ~bI z*4lHKCk7+rovITvNJrO;6)l0s#E`h*&Bo>3t@K3g8@bu`cymKgo++PkT!1CGIf0{i!JCiQbfZgeWzE`we-W+b2fb zncdO!X_-X~&V$o_HshFo6I1vn-}4C1=d!;0a}PN!orEbe)|C}Oi1YPkEPw?AiSn^p z+lb`?QGXUnZFILtCjRdE1D^}d30O>I1wY(wU;He^vvYCsuR|x~H1i>pdas;i}0^L_2JuRsm zDZL1TIp)GDt<~08+A}BTqMHd%{qo9?RKqK+^s36eOQqJG93*x4pR<0dH}F9>#@_8` z9^s)sp%(5_-U;y4?mmy5m*LCeeHz2tEVqW4YxwFd9jtQe5%NaOPLAfs&c_iW3 z-uX?PhA_y5*HkY2aPVM3P;}AtPFu#;fCZ!OTwCT~A94Nxm4}+v`PsQiLPCtMc5N+= zOL?P$XF3UIqbBbll2>o~c=NC)LRgd#tisavuB@+}#Q_`rzRA9y;!sQ6BBY^ZI+cu2 z3{w~!xjx?<-`GMftK=jyniDXSZ{1vRpgZRgx6{T>Qj`iCa2b<#T&fjtoIb>=(Yf1rhu-3%ygCJfzR^B%@tAT#2y_mvD-Q z0};guZ6T?U4a0e(n0LNkE^k&M6d-$xI8p5MdIOqe6F>x0udXwL1hDal_jLnJLk&3} z|Hl?Q*t;RBqS1=1;^$LZ`<1a5PR4lgC}D{Cu%=&XJp?>1&L<3gA{?~2&=Cd4&6{!2 z*M>=Nd}Bq2%gW`IX!qzicLUQ6_?Ml_YK{R_kdpsH*jt9h!7fdMKn6{43+^5?3GNag zXmFR{u7eM5f#B}$Zi5U?@Zc_kySvNB*=yfx&%S&1IsfMmGj!k8)zwwCa)jav?D)dD z&+CesYbGTwi9RDY`;R@Cd%(EmTYiiQUXUdX5gTvX464tNbd&i}>;Bf8{cOFGZ}{q4 z=anSFy4%1Ep?gkDqEJ#9F!9EjxSgkZ&3HIHMIzl_i>P*S=ULkZ9~EwRBCQ?s7}_== ztFQg;YejYxGb6p4bsQ+ucW(R21^1JwNTng6dzza{{yi@EK%%ck87av%5-G& z<5++mvoy(n>00{lV7-iQIul;y_yXsjX4L-jAf;i9)esAfeEUWvd9XH5>qKH_Bl-AUq>mwaRZDwaOGzG=cmbcE zKsW<6ap}RIk-3Gh;a$C=6N?$Un2ncA8)CaEZ$wbb{&RWndhU_9;*9^|EvBrpFpc#{v2P@muBklzFYBSPqjfuep%!C zW^-*W!o{;@Gn_<^m>Nz3RCislPx7Os?U1y~2oqas1J#d9*u@!BM@iSq6(vw$`Lb|; z2+>6Dmv2atL7Ho->RK5v`?I6*)=xSo3+-zJ6lSjTE&Ftux*fS8zQ5Ko@GbKdg_{o# zi5luO{(23R-;c@K1PK!d{}CUd0*+XFRGv)F^VVg;Uu9vdlo8vnlEo0eUlog8Sla2Q z5jzD|#;>y~XUp(~zl~bQ>8sIUJ!s8bVRRJgejn4_{v^b&D~F>p0N-bLOSeA<4zT+C zM6CR~i1iT=wc`=*!sF#fB9zOVc*6Yam{9L21oz4@(i+ZysUn%z0FNiePE#&~fF*#Q zp-B%s1^`+f6pU=v0u1Rp4&V7PKc&M+9L8 z+oUeaZ@y`3GIqjgktVJwTfBF@L6NYO7eq6(3O3*OBX!58#vyH@HR&|(YyePV-?$fT z7nl2q-}-+_xiFcq(LZJnKNM4iC=-YQ|MSM-e40kF=v~H4yf2r6l>f3 z8e5L{i6UC;?nBBpU;G@}0$^$Yxx5*XOqV9A>xGYyBlo1Pax$e;b6}va%_|sR*A9_m-*?4eXu%49oL6T};|sxw($z{#(zz zu1*nO(0XlPmDIuF>hbpP2?J>Ab$Y(>gy;KQayKHuS2-UfVK5X$P0c2LR_bD!Qg{c- zGv-RH6oHc?yIRsiSAP>CaXl|jda;VMx^eTZ6~M#=$X+9fEI!zDbD0nR3`s_BkI2r@ zo(;li6S=nYNs+YKGbeibw$@J(9O6(pcw<%GwsdqNzxu7YZR#`{wBT=5EFx)d(4UI7 z@{tJ%UFW~Gu=jod{z%SEb*k(J1gQ-xWl1kbwgIx)u1ZgMNGs&<?L4ELhH}a#e9-!qdeuN5Z!cReov?UhXdlcYXZ9^jG z6+ZAQYodAhVt@U1nu%dkBKSF!@G;_@Sl~vreSMhS^dzG9waH@8PoDsU>3=jx+MU*XpR7i;ZDALskycX}x? z-LM+4(lajRWs{NHz9;}x3?{*7YCe^AWG2>jQ#1C`qo9bMwj~)SyjiYaWE*ejpIgj# zcxWy~-l{qrs{T|sQ*q(xuM8+8hQSVD0qOey{Nugs#@qZ!^w7y1tJYkb+KfNU)k= zwfB~(^m30qtR_72#=Yo!sN`OO6-F;YmG>kzh|vu%1lEE&V%FX!%Wv3>QNvGnaCKA% zXg>MFHSA!mR(C3@i|7IT3!*qIqMvCvki=k|L*iI)hvQdMe%`Ewo9wk5$wE{FYHKj^ z9e2s$fKG#Kwcd`3iP9G2Zc5&c?5s4$I+X{IxJ5 zw4H_*am_D$1lVd`-1FP!?YoVwI*9?g9VJGqpK~>;WjDg(`Exu|5&eWdz*bi2v^AeO zwmFPAw5j?IL$c;!fso??N{xavUs97|BHv0Lf3Yp<6IAtwKG-=Uf7OTJKv(l~gjlO- zSk|`>=&Hsr-N#z+B*s8>(cWY=hA86aq2hO-VaySd8(`;q=z&zniR$?NxW#S`3$OOC zk$500g>MKd*Yc8cbZuP(IT_!~v`;suv1b0CVgu=nG#mMUW=L6mVFa0%EuOzW{hGb; z3F&Uk1Q zcwpIa+b&Yh|6p08yJ#yrjnrti72edn6D_{fQ6Dg)q(8E5yJiOA$a4 zneQ`~!7_?I;IC`4T)#CT`fJ+VvI^vl4_ifA>xaQha@4)7VF?6kLi+F!hNc={Q#uY`sRPWP2s$QUZ zO}_%q<6O!$V2^F7mA}igo0yL8{4At5c6EUanG`_3CuvJ0dA}c+6=R_Nl>8wu24hbt z_AR?){3l%!m3!=A1mfM#DRi59W?syo4_R|Oz|FMu6}Gj898BTj2aHzP7LxJpK()2- z{)l@6I9a6Mes7Pd86KQP#!)=#IvrB?M56WXofCqzA#aZiGcg?l`&Rxke#P3cjhU;%TcL`EBpT+6mj@2(VR=?AU$ zW=OnlHP1K=6F~sF#U_K>?7}6^y{=WoDTNQjcaDHiwxJ7ejX(Eqpvap=#kw986u2$9Sq<9$eOlrT!^T>Z00U{ zd+_dP0ZqY3)DAt+DgoPEK#|wp!=;^@1IY!qD13PL_IzEHs(v^iA2`-@6R8Ma;k>#Q z6L@rSAt0I>jhKSnh^l&WJ%YUAVZM_I*Y-~D44dsS87AIj;G3O8dq)gOZLakn@0C8U z(`st2c*<{~wQZ=n&0{ph+mFOuApeIU9^){Jzm_SX0m_d5mkQv2K;pkWbpLlF?I3}J ztPZ~jE?eLlcirybdyB#Qa?j7qM3GQ`3`9p`)rb4y_Jrl!oe^xj0iP5L0^UG=XeoO+ zfMF4{;}*dej4>QxjQBQAfvjIOjN`4k34em+aXiAP9T4@0u&h!AEYm=w)_d_fmmt2vWW5=?S^pM{#o!8q2>wcMieW;=d|d`c1pX| zq}%xIk2`|{cs=j^p^;4)HedR>ZB^l~hw|w@jc73f*iR*q;r33s)T-(fZmYG~<`&~* z86_}9HVnx!gL*UHrV0HyAUqZj6|nC?{d3h$u<5T6CKWDI8=s5_N6?Vlu=9rA`s&;e zjCikbsWO2C*}>^!?5TA4aeI`e+(M*8sS&=kZk4?CHRT@k{v2k; zt!oZB_HRlW#|BK}XLS{#xYNqH(~|f3F8+En=LUxE^fMCD zUmW)qXrH_pjn+r;#pcJiGgM>IBRcL`+Ron{$fj8mU{?V0wvzr-S?vGTr-3i59F*x7 z$jx@j7=hax4ZV-3FqeXEs=j}C#MS=ZSYpI#rqviYPjfuO0&K^4-r9IXa$~3Xu#Ekk zwm9X_;<*9cmo63;19}*j4c}m064d7Eqfjg2VWjE!$K33X)w*Wg_jw~eo}(<0hY-2a zcNr_^G>G>N>D$(~m*_PV__*Katu#wU@1w+hahI7kq5x}lXsK3FM8cIbPx5$O+X8Dq zpCVpJtFus3vhy>v`f<36ZesR}y^*WVFtAeHSy~kO{sA?A)!eaTqM-_E_;Sp$n#8@2 zq2FO>5YW4K^eDYFB+zBoQkGCJl9i6)@s zI6iYbSL@I7R0kFm!e8&N!aHLgx5kv419$>Ml+=m4VAD(0AvN&|lR4zxe8Y(P-n&*O zlR>;2Fx)pv?866TOV%8yDkeoB5U$taUAS%v&=B_=-Mc@WPKY6@jS&4{o9UVg{{Euv z=**T=GwlvhPa%|-Ro8{;=cz3XRsL*~M#y1zKznzs)6%<0v?o8Ey~QY$_oZ{{=26B)Mgq!v2e@4{|^#roGSjpN=f0*33C%)4bGkmg)Vi#U%B6WnrcfNrG% zv^*%|o#@d~3uNZhZNDF4*_c?f%bSR_`cB0+%@eNU5jg2k7EIKzicKA$W(VUM3)J?b zJy@w>Xh)pTAiNAx+&vrru04dT2xN=wXQqskWTvIl7-ji7CG$JZ#F-uB{^ck9d9|b? zaXGe~Gbbw#g4{nVX1q-Ri~SO|QA-<$ab_4kI`>_r>J8Aj)B)IClx})qATNUk^=fLX zKR5C=@3caEx?sz5a61~UYV*7A1JztVL}=jn+z{-;yROZNo&<5;h`T9P00uK%hiSMzj{lOtUx51^(>tk z+z-hWMAJ-i@fS$>91;MvlXP0QBG}qkca%tyY#58(Tl|S@!q87FjNEFfNF*{pk z)J$}f7Y7Osm11S9XxmQg9OG`6G1eSk5r+p8v^nf>lP~Q27&HpFdUP(EZ$NhAqw+%i zYR>8&VtfoRy^XxqDXDACkPg*onTu$uv`-2*1q$`8gFn+E%*9z5DVgk1Q9p2Y3j;sBi3e!2Mv@Bloczr%#M`9AreFuut+vYIGw>|e8mv15(O z&2#jol=#N;1=>YC-{H$YfH4O%=kxpJnp@#>)-W`U>Gx>wUvfc+t;T~Q-iB_rhT2xI z#eK5#Lz}d|+vIpS1~L#CUPEk2_z!KDzq9d`gsl_~Tix^fM4soVM9rb?bx-k=X^5>J zsdE#YoZ3ra`Gl~^$QOU61BKtGaB1MA+p>2al%)5r?U^_B6xGIEW?~fPElmmR3K780 zF7bM+qFpyAn6Q#SzsQLxZkPL%iex*$(&@)FlOiMCvj?NOKp!vzd_8zE@B9;mR^pvm zo2Jqf;j6tsJ&!*W7F5}Oc>;d94Chs$DTL96_Tzgu&7~#Vk}ed$%h{fsUGCs{!|6eE z4^LQz%1{$+MmTZbu{Ap;OwedHZaiLW56|Euw&C1~ws+J}r1teWq9w%gFZ};wfPcM~ zE12{h$s>RIB}i8B*O{MeA1R7b9@F|pRpHoLal9ysfmObysUgm5wec6F!Md;7|h3*lhs_?Nnz56)u zrV@Rz3C14pu-`p-FB8MKzAjA{FK3QXRg;K=7ykh7{Yt)chKGyEG8*RQn2y&AG*-8y`sA^LHIk3i3i<+`B! z&n@yzfOuDXmSLO8?4>JsHnN~ylujahcd?D_qzB5i@+l8cT7=)u&_#dSDB>JZ^1$5K zA9mt=K@PRJof{FV6vVDfsMmd*bj>%h2N-d_RUrEgrUAjc!8&wW@H z;XIg8C+7-cR!VypAWGiBh3A3Z&pExUd%b*}evUN25@#d?J_0wGa9$?JpHi;D%gaXR zCFxx`$kz>=I-h-#_fFbH=&y&JV?lqe5xl+TSm;E)i+ZvwC@S=xA4L6#skq_iMYdItmi{KjWIi&7@FT(AS%bN|;^ky~p z9ybT**uu2SKkpP;CHi8CkZ-bL9W*b5r6<|TDIVmLC%9NZy_;Gd-HLR)$m)+1eUmbM z28O$AjU9c~B1Gq!;%I|xTF_iX6vkz42_mh8_+p^$6TNLcxA6X|wI=VqD3n9q9S=3j z8R*k}e;)aLqHV&_x5UaDzq-HX@C&euR4XFs2o85%O8YUporAL~V`nY?qWxb-lA=gM_U0|(_ zoBh=e%D#oZ;haqpGp_E^4fs%dZn{XT+&Lt`td$ z!&ToB?c9PEDHvX0?n9RG)bLAv>*)P4oZg3Nn7K}vay%s$`(7To>_arfdfHnszMsa? zk=i2|sn-X|IRU%nosI)({{(c@bT`W0WaCY63V3^ z(l?^+i2W-tPgC|4zWI#rl&EtdR6|HM$#IpiIj-8abo*Hv{qn|{`t7*ozWT`BQ>?*XA2u=@B(IiIytHad-2*Xd} zS*`VQ;q;%1xDps$JUK6vyw)bqVv%OYWNQrGM;bg|f{bYeJ3?sK~!*KN_D8>el61TZx?* zb)=Con`>RKXMRDw*ZTha^qaLQE*kTDW{B;`nNk3YjJ zmVYzb__erVD6*=v~RB=QXu?flXSzBRoad*^d-`l)Xll5rsJ=yNq zcRT#E3*oL=3RsjBVZJu_ccVt>!!YH&Pw>1X)ak?A84D>tU)a zs%zGxEeYi)pB)`HeMe6sGRZ&k%OQ@EX}j0|#XI*Ti`b=VnyzJ2IDcydL9|ED{i*qD zOEFG=Xa`ieh*y7$Zz6BxU*t<7Z3U~(-$f|QHC95b;6W#qxK|vuz&0kfnd{EfnK2!V z`iIoa9c|9Nlw#N+_Z(-RF=0;!d^=LCyP3vc8(k}5XcyxN>&mYJ z&kvUsEgUq?)KP)Ytzbz67n(g_QTE)8hS-V8fOw>dM6i~N;eYGG0&s5i2PRqS#~&8o z%uMB9Ch@xyR-d#LJg1D1j_Zwf)!P5AuyA+%hEuFO$5(_9guWE%wxim^#J1&VPWavI%ht(IX8IDYMk>LFs)$XbRPX77hXKWRp(;I{HKK2h}XnTTK#f$07 zzD&&sgcA7pHal$4@g%XdbYu=8jy0jhvEIT=qs<&}MWooFyGfph4mX|Z^ASh&L&P~8 zC^b@z)JlOvPLhJ$%a1z-tC0kwsBNmH&z!WFDCK=~=Q-Kj=eZ22`Soo(_-csEtsnCm zyr*smBP>tHj6?^Sv{Yv}$5kd>++$0FHH(4%p8-E1Sk_Br+US#hfuZ5?7+T>XsXkF76$Iag8NuS=}fdaXGjDxelR}zI^Yan%fNT zMsU0+F}g=9wFMBW-qB^9zO+0zKkBPzDZIJ^ogSsH0L|i{$vo8Sk77?JPrX9ls!K^s zEL@AUrX&7@8>__uIHGk@FZUc3C|sOR0^&>@6PNly-w2two}E% z=(?&s{^SJcp>f}^w5~n=_FIKM-@vl&NNISK0*D=0jwPM#_w`l`o4sc$;2Gh}kH`~^ z?)Lu9!jrF{xnLImL`;6CX4&{TwPe56G4NRV;{wTjK^oo^(*O`L>!{R}m#HBTY50^A zxXQJ|JY-!`ZkDLVpf~`wMG~7Ey@)tqvkg2E@ZA6HUMdRX<^(WLLas00LlWI# zC^>WPF<2_r8G20J)W*NPZ7p%2!bog+aWkz7Py|$Q);9~vZO|fCFxn?%Xd$~zAQR>5 zjIq%;g>O%+c71u>dE>rq&+x@~K-0XTnZCS6K3=CN zG`mzj!&(14dbkN8t@VUCjl8gCTu6y=CY(vw!ONcrdUE0W#iFAmKNYMl^PYbc6&k|G zT58K&yQ1mn+1AxNE|<}7HFg`m=oSmN%bXKv7tov2cOJ#x7*uueTmo+d#ou%tvox7& z?zcBQr3aGE$ZQERAMR)Bo>W?}9=GW;Ezp(T8|=5h-V`Ba?R{5ST*fe*l1vl;3gg(?;M7+Sx+y*@m$DLdX35BT?=8 z29~+JuS5BTgC_1DLMuwC@(^Nj#%)wTL<^Zyx^AamI3Zm<8Kb!zbUF2Jm=x%w0;+O$ zm+-Y>v|<4r=px1MH|CL3eG^Vl+aNN|BfByShv`$bqY`WQ&8v?{O~*-E^iE{wK*|;G zg2<+bq1Gsc{oMyy`YQV90`L)<(em`|BVGp0L(PB%!9U)yydhS%?jyebQ<{)u{kzsH z=RAnj@!6!E5Qt(PI4PgA6y>3%j0oA{qpHq*Nqh8p6M#n1TeG^g{~pbrsHNq>dhQ?0 zVFC7?_AAhQ?f9j}nKWjSF-OL(V|~Y`Q+rdk&y%wLN;uQ9ZlVs9W>qp@eKWLfbz_{N zSi63^EqwuA&n3N%iByg0zeMd^>SsTN~=+=f-o$lj-1n%2z8sBfo*>n6Sy+RXK3J5Gv{eV6GhxxJjq*i==u_ zZsxQomEqMjyL}q&N!3kdo!5xls*-A{-`y*UUf_y3m&01=jzx#bST)d`~5vScGQh$SIw5r#?GwSC}n zA)m|v_sCbGd3WtmMT^QkQ?{N=2aV79S4d0XrS{{~Jy=&0uX69s%#B@9E43CH9XlwL z>3GshepuFtPDnFPDAu)~7wslhGQkmTo-{L)zT~cMm|ra?odUG^?*?54$DPZM*f(b~ z>=^{@<`J+Aq!yC+wZwWgo1#t@!8CS`0P(ac5jP=qE|RmY56>5qAxXCKU)4t=U47fX zgRLrvC>P9ZsiZfU38rs1z9~8@7*oFAj>%+iHW}fHtvCxDw;=uJn!tv;tJ{d{=`b5h z@_Ilvhcb5dqE!(gw%imoslKK6#YJ(wzTJB4D8u($@#$SBi>8B)TeJmCp?HAVMR|qQ zoqp8yvh*d@SLSZkg=^O>ukcZs`uPcuuDQ!XjrW(|&cY-KR}Nx=^iQtRtZ=X1hJ&nY zH!**MqeUtM_o9Ba8#}j!)BV8%g2Sg+_|?@LG&nth&`*Min`&6yE~1`&K*Q<+1^`^S zUl*)g3JJwv*#WLKBVUZ6aajBu%6Ax<5qZmgKD`zlTN$Je6ro=3K?)>oD3jG06L;6t zdPD=&O7<|QM9=+b_+jpS^fbnt1x`f4c%QVVYQBv{L}rA&2=1v?7)$h5GPL>JX)4w{ zgNqjTJldM-{iZ%5?4AU;Q>AocBl)JN>*{8;2|CFImYjpAbE_P7ig~d+J;a+UE*nBh zt|a>18Kw?OmMTAMO}nVM62+$-(|WEmgi}#QZBOgbn-2V!Vas3G3v_ccXcesg71CPS zpuCqz$G5PXaZF%sYKS<&+<^|feDmtucL*+0@W?lG@u`5Vx>*+x`g=DiHb>gC+Z>!L z5S#jy?^8+|pp`@N;kkitB+g$C&C9|pDL}t;%DYV0VEp=oWv89LTo17-;uM1HW-{n7 zT7%ezbW^<@jdv|Debdto3b11GC3AN0Qh(A&H)QK{4D+l++hb{A`e_aNlGp5RUmTvY z7D5+xAu=k%6fR&Y4LvAF&nRtRW^~p6B5udp66&@X3!Zde_{$tjPigPYJroh%zcUZJ42v|m$0(sb1;!BJ-bV&>vdoo^s+8*We&KgVINZ3=@+QFF z$bJ8ic`VZ!wY1omEdFYgdi8dXm2`beBT!{U|IgoMmY?v`ga>tIJmyZz+zA;!w6XN^ z58q=^BUH@e@A`-j@BDRF$6@aY%Q3*o{zK&rRKTS9A&bgA47m6vyiERG6?gZ}ArR2^ zP!oJ~McH(nbkWgTcNp%U;L3Y~?B*VV&wqqAbxtBU1uafWSds3u(hquz%w;$aaQ(aiA5Oo!-$$TMQkE6VhVeuo6qi` zKgodp<`S=3s|}i*gWtshcK-R}C`QNMfcj8%XFz7Z;7Qyv0!*yO3Krh)7kNkwSP8zh z&{QbC6G-bCa)Kenm1Q_`Ehprf_{e!y&@|_xV6SJU60A6HQtO-rz*aojTg7`zErITv2%?{+0m}0P&Yll49mj7R4dXnp z9rFIwt+iSRA*k1%jOvUl`eOcbDNmU%?mgkv#zfFxO;W=FqYn&D#;*8IBfnj>hM_lv z_e2P-9wkU*bc~u72LsI`m@$nR_#yG??xU`md#GrDcE&Y2?ewtrPcaFx zzt41q_Y&*!YBrq26Vt+*KT_m4vri)W3@T|9o;l5I zt17BWrF%qydta)bvk0lZa;h9QI`wKSup`-qkPLkM=L1F^ahRz3TbpqvAMU7Ds*B!m zU13)gHxRjo;|69h$oR7?r~kmNS-+*151!MHsW0BFaOY}Z9Ixe+BJ1ph06lN(9DnUb z{`PT^%28zJnmVgp8w(*SpB~>i2e&|7DP+eVRP*9**K(vb+DDyHj1mMd0&A)wL0`nc z)U*;7X~g>9zW|=DQc0fyNx4aFdV9AE&t=O}CL5Ct8Te2cc4M0WOElq{I!miO9ZO?G zuyGQ;h|p1Pr1-_8=?Ww3$oN;}w)s?FbucDxEl?p_<`yqr3ypX|Gk~Dj(KqBph}Tc= zOxA#XV5cS#u8*u2;DvL)~OT_ZE3f_!@EdkAsc@h8r^6u_jGanx>$=M8`=n z;~vllkJbZb$IdHC$W4#%1brR){TGho$R72lEOi@$jo^!+3$fRp5*6eih2HYGV=h(y}_L>G-C z4rOvN0=IKvJzqc`MU8udzB_d5uWcy+!aI(~L~hwjql~To`#_eX*IUWR`l=ZpiRZ=~ zlYcMQl>JZQc&_PO8{#@KKpPi}&^1h#y{dZNx;Jp|AV?~Gq~|Z`WEtPY#dlvOtfiC6 z=ZWUs2c(H?(OWpLd|6Jws^Y}%`*6~1L|A$m+7rJpK!x&?Qb=c+RTnP6eKwlKCi*x}wuxB^rD{Lr2l^|O7w~@6bn*^Y>dapq(1VI= z<+%)vv?2kY-V%e<)&GXFgyJ@>7np{Bz#2$)7Kd32jB_YN{B!du;rU39E$d1S$?e{Q z#{cYgvvJ6CF`6uA-(r92au&%L*Lv&jl9PT7>0i)Y={~J7aC=3ATPkAcS1V>W{9C98-4VtgvEYhe;5zBZ zd$2oi4e*^)cBvv`yfyd>hV+FC_+@_b8shh^W&wmlO_HNBxEq-IiPC>_#f{_3%fS$+ zFH%TXQV!2*;HL~D61L#9g2cbu{n5#_MF_o_jBCTGJS*1g*NNxucI;oL=hd=J zot0A+A7t;OzDJx@n)0k%fuu(qC{4<4tMb1rHU7QGUt|GiXn!t+rC<5#nmd^nvb(Xz zkMwUlX3C-{Uw!OegY1HYu=~}?fS~dPA!vSmCbF6vn#pgj#U`-h(YAV{>yNWHtoI=u z7lr?jvM@s|To+Rmjt2$1pajo3w_|(pvX|VE4oOYZ;_Dv(1L=GNF6gSB7N0x8K$-ij z04s*BAd*6}g^|7BgX60nXFyQyXGgxZU=WXJLuOsin;zWR;I~5=F5ZGXDK-&1@ANl_ zOl3*y92QNHH~C_*^1#P2!lDNpxCUB;h9Z~;4^Oq-_HP~FFA?VmS1q+2m3gdwk}ae) z5_hG$wRk5eV@12y0<1ql^B{qONYXK1lBOF(8svS^u};VLSFlK3BHMJtDf$<8 z=BkV1ib$uG1Q{F5Z*u&{%!7h#1sCC7_+)qmp94TB7RHpxhOZ*2%KWqWyfKdyrU3N7 z%PNGsiv}?hN6JWFy^`b0;k>`RRIhX_F$d8$Tzq}e#6tm972q6cOOvbOs$_J&@jdZr z_?4Im5k?R)*7vh2JCv>c`2a(-c%V2j9uXF(Ts2NpY^Eb66|Imu5ph+Tz}Z6DXRJY(72TI_kAlXK090hJc^+F8&kAhO8^AOKh*xWGEM-H6*2SG=asXm>Thxi&*)eISet$I#HI$d`EDFIsEq}!n8Fh$Q>sv~89F^x zK80Er2euU87dh8Wp*~+3IQ8w-ggt0&=Gi^|5TgD9BPCwsd_Di!JAaoZCxNrjHrWf~ z&JgLU<(omece&;qW08PL{X?dr>QKMc2>x&la@d9)yRHzOtk3MDiNNkfvs!$&D1-FP zF`g^c{q}6ahQqy%n{unHS|83LsgKOw6MN)UdQ?L(%|Y?KhE+<^rBe$28Q*}=kl>=v zQFwdb!F=Pzv6DXW&m5tT#i*F3t0)v+>+UnSiFwRr$^G@7r;D!c-Y!~6`8zt;M$kUs zH?-?YqxGYo>yzP-ZLg6;-IdaE_{{YWg9zufXyWbm<^FnYUK1}PeI0qEJE9o;tiR^t zNfEsB18*sv;y?{`zw{Eb!iO-zT&r|YJ`h(`U^%l?Rm@8OhgXNy?-5fxX{=nT?7{$+ z^T63v`54}aeRRnObd{aU&99s}yFnQ*t#sG34F{_X75bF3_Z@*Cr}>SUy%X-=##T># z-4362UHE4~6VZ0l&C#!@4v=1bvlG3l^$ZL36~IhwTslzYb+%M=i1$<$vTP<3l|ou& z_JzODQ|$`lf9uar@%%0@=i6U&z~DCRo_;opXa%~{!_Px$2(7;UQ8oZesjyZ1n{b1_ z($}6qn)!UFjP2);U-#Kzn}%b2d%e9ByiC=K2_@p-09iB-Xh{l;;zfIWx17BUf6-Yw z@gC)TAjzIMK3Mu?Cxu@3Ll1)plT37ZE0T(83QYX9E6fMJ=@31dQJY}_8&X!03SGM> zpT-jFfLX9+Jdk#rhU9i{{~a{8ZNHaOX}4Esf&A=;px>g#5@8w zwx@r}qU)dU_`CHbnxaJ_Kt)}j1@MkUZcXtY76H2@e_oPr>c+weR?B%eMg0-fjIdE+ z>LR`x0gzr@vky4Y*Oy1x@V@pYZe7$ArM}pL8Qnz@sB7x_jChGU=2iXERTrF@#;{S^ z3*2!*eo-gG)Rr^)<A z9$0fHW&y`9MYk8HD^Fq{CI?1JIiiFJ=|UNruGe6aJO)xYgkB@1yjod1oK7 zPY&qL6YLgEVILH%!zpZ4UDj>jA9W+5zPTY6FsrqtiZ*0rnVbI6Q|IZ*6kZ@5|83(y zjBtoHL=KHSEh@~Ou`?Agl=wj3tjUSDdT ziM|_R+~l7^U+=N+Sx%At$vyl&)y&RDoIe3U3ACoKG({VHzf2xf{;WqV@91w=)I)uE zxaPiB2CK;ERW{qd^WBK$71|5V&;h3EcD zoaBqpg1(#XPn!i#?_Z?|b-)7e^f9Rc;@(8Ub(RMQjuB>JFUpn5?Ly-cw}+B&gsODizzYU zqg=KQX6O|8Xb$4&ua2oB;*_!g&lckXX>fu|U^Kz{#{h`nC)za$<}TXe>|wKYZo3C| z|N9#||L@>}4C>i8z3{qooC5Gi?rvsdIL%sG z-;r%Cf!|S4!eE%y`G;vz5}CtCh`-VTF_;G(uF4-q9VH24&JHc8yrEzU)?~LKnCrNF zqD8b#T)8Uo6Ep&E{i)$-Xo2H^(>1L{{Qkii20)?{(2gdtu^izENuf5njHTfE#a{C6 z8t40u8OT9<`gfIuRU<8=+1z`o=Ct0LbCR7ED0VvVSaoay&+nSNF8LIsFkjo?jA zu}Lg#(_F2Mr)KpoN)G3v?P1f*F9$(?M^ar<&ZtBNHKnb1_7_IS^;qW;SNX!B;su3d zz;Ft1&@$s98awW4sSi`QOI?S_T{!MQ_+OLhnlVZmzvVRv$r5C_jHR&88fahiE5w~+ z#NROzSWT+!1&g&`+rqcpI@lOZ6Pl%jSQAJiFl0W&M)rq)FxM(}v~~nZ;MGdtSx3db zaf6uX)D_3%Kdn??6}>7~ln)mo)N0y-<>4a`(s=1h$E*2b3=bqiG_hvVDc zM(h;JPjBw8%LCWF6#3`gJ#p2ZEaf=~pE#J2QWDXhS<)5@=@V2AN!4kOz*XG6)jPFM zpTr$-PtxQ84K}^&YbC>0AwyQcq;_POCEEQbVbeU|&%dufnHv@tsda*8Ud@$p;qmW!?w^_-aNwvV4jCIq&w5GFH5 zpDPcj3vC3ny`h*YH_H&zL9-`3j(^<`{BJ|N7ahQgL}%IhZXR(Z3E%H|-2#Q-K=%vG z+6+NYG<|+ zsME379h3HIXBlX=jgf5UeymtjathNiE*2LKRM%yyzi-i8bb?*#oc#5T$)$Zk4{QxA zPOCU>s0@8`Ty7R5ef z0GF78GVr@B3H{NXW|j8b(xdfXcbc$|%su1F#fre{b6?*X3VH~y_kh7%_dVAU6a`So z-Ng8JjKSX&A+N9*Wq06yVS!LHmQcqutRYC%89rgfn!AG%QWf8GNE^_FZ)~ZT-n|h+BJ%Ag|2KCMsWG zMxP@C*nG{8rDRm<5>;iP_0kO)vgX+S!gW1aezX1H(hskh`M$x<3XW8;PO5N`cCUew z_dlsMTmWxV^5LCBG`inQ=$^u+m+Z8|naAB@PkX##tR+5^l6c9 zBayAXPA&g>)NllLuFlLDh|Y*}{!h3Gv#2O8>8ode`XD;NxWV38;8YWXl?lkc}* z`!j$z)#(l?^skKRX@6&cR{nnD@sZK{@}UD^JH2J0dcq}IOj&vei4=3){tQF=!1pJO zL{`T6KyJSeQ;;NP7pKr{d|~+U4hsYYnE>r3ziM4_@JwrS}+b3clI=zy`Ri{{Y+^l zz%@vPdti`wz?yvNJ@nii!K*yyS$CL=$g?thTueKk%kG&?`f2tXDZa^S1{^N}t7L>- z9jYLmF+Gn=^DD@4jiyavl3#{Og3GAi!+wS%F=%$9rlT*r*{Qit$~BJ80D+Z5`y2jG zvqs*kLZdOg&qZhRTZ?LVRUY-DKl$`iElFZ6pN8~w-)UJ}LMC+VNfZ$sW_7Qsy^UB8 zzt-|9Ja%o2yG#|jPMo%rer!<%vn;m8TAw!f7^&J=3tT?%BvD-KFlk2tw{ri|p?EH) zYW%`leUiXz%^za~eXd50pd%5eFV^UT4bEp)xL%HQ%8(0M<79P@f@mA5?G!EERLcET z4w6f~YHHnAuHe(vFe#FC&0fTP&_9W=!*|edIukG)cLCXPfc*niQ*^AzL#Q$T0*6T8 zb=%wJA`2zH{gD4pi;%3)PCg{Jit0+3^fkht9Ed6G5|%I4f7>9E;5A7#=6q30`;|uJu5F>F{9O`Z zFID5d4woCfx-*@_{!#HHc!rZJnPXHjY~B~U>~R`T8t3iStSZ!Zmey)c(j^1qsHOQ$ z%i#pv%vOI`3e_tr*Gg)zo@-dPn)^SDy>oPAUGp|P6KA4HGSS3#GO?|WCw4NiZBMN3 z*tTukwr$(|^1S@vUhnt(b=K+C2YXl5scTnVyK3Qt44VZ)Zd+=g=qOFN-OSGOQDRs9 z(q~i?mHlN!z?+_x#4a^w@5a-^Bl44>6jxYfDCH?ezeJtwcxaXEy6y^$IG`5`|N zH_kqPf@OE=*MJivt&>O=TzEz2L&9}bn$wTh7Z3RoSYRr_bX{nD+|W%_gc;j++>LtB z0UqdlEwpoJTz--co+Zpso}O_+yO{I`IM7;54X|*Ea8?2RdgteHp>1tDfeK>m7z2Fi z*ZDz_gsyO}DmZj>59r(P&$(gEJns98+eLGxcA^})&l$vJfAP1tzmNM+xag}TDRfc_ z?J-N3tDm)j|5!7ugDoz5;pp9$e#|BkSX&zmsoM26JPWa@A7t1I9NtTC?k=Q$UvlR8 zZHy6wgAf9Bf@qe`^gu3Yzh+GY@%VrBvutd^Lbi!-t(@jgp^3-x;#+b3_Ggj!u2oc< zaBgJ@wo}^Qj(%}bTVC5=abW`94}EW#lzrjE}_ZL1r~26%3VZc%_gP=JSjoru81dx{n6^i~CNFuq zPrLW&h}fV9L~g5RJvy`^^Xcpp=CPBf#VRjF{B2sfOG#VJn~+{yZ>2eUghL)4v;ZD4 zrllcJg!KEoe1z-i#%G5Sa}9%d1MHNjkYy+b*#iJ&frz&WTb4m6M5++hiH0$k%%L>j zZOLfes%Fdw4FsaXRZZ->1&?+#=Mz!^N>@0d3(4eOW&)TFn^U%+2^sB5sm6S%B#p{2 zq^29z@7-i+Mj{3Xp;6$V1`U`+I;f zBsqgIRHeu~15(+P`ceYRSQO(il1jnssaE#q>|Hz^$+<2)H}oZkRM0*1*ouisd;0N6 z>?D?0l!lOuXB?SoZO|sV&Bw?b94GZ@yQL*Z3UG6nzrE}}f%(mYx2pBHA~E%s zis-gLw<^}tMp2>X2D6!SMR<&I>*@q9>Qnl~Tcm`D$bj`G+m~anj9QWVBCCNfj&oOP zQ+ z@l=h?1q&OVdm=sJc|h~f;g_7n*UZd>j|*gUP4GpD-)XN~x!&GYTIO_(-}GzaT@0SR zB}T-w!?p28%|ER0hKjUnQBZlR|crH0HLh2wxmM8`G+89kZ47r|pN|UI}vM z170YFBEnVmmZPKU>wUa}CoAMvd=RMYk!&)TKX!}998|OY%hg99+JKg2uv(Dk>xc4x zHO>rUS7@f1D+f8(v^iIe^0P(B`xZA8YfJa)=Fh~+w*EBA&^ZL4pDP>Y=U4sy)n% zcO=|vOVk>V{T_ejoV0=xkm57Xn!kCYC5r78sKGLq>6~p{bc!?y|3^bCAiOO8O3&+b zm1VJ(cgOg5%yinrVPpxPN$V6T)x$s-wqWviF;v35G8;|V`3$U+_u@J%derTYseIyR z$rrghBEN095A796!r_63G_MntEHP}?;wIgk%J4ZaysX&T8UKgVR89&I`tq|8unJK&rAxFLA z>@TnfI#?J9+{01WX()#7IVzcD{jVgWh{NENaOanxw<8Bdn1(=WYQLAY{$ zYsU#Q^jvYd&_TP|_*!KBtv9tm@T77^)wr}@%9O?!me`2eV78}zeHKFk@5#1viqxSENISA9lm_h<3z@pxtcOk#%Y~aibVt92y0-u!717U#mx&x)jgR8q{^;x9jL=^n4b)eYK+rG*Eu&l~yN^F%YKAwm7w( zh`A)9r{gIOW;zrpSMRBY9!`UYNZ{037@D)tlTWl=L-2Mcx=Vu5yDZV-BeQAb%N`D@Kg+HpUh0`Uy*{A64Zaudc`Og-rIP#xVJ?sjnXe3cG-$Lz zibah^3t)g#`gLo}?f$(>T6;vfV`xm#s3_IU!5R&Qmg8nae;?16aFDL0cGwcwx9D|5 zY@!NX&k~<)V6fHTOEK}BDIhNDn^h$vf?%`kW|$ucrYjMzdct?Ts=fQ0gvZPzB+C9! zx$jOW=WJa=LM7}YytRTMR`jgguqKVH9}&Hq87@1nIL6EB$4~A>Og^dHBSr#;e=2Xk z86mK#1g?D&R4vMkKh=C+x0zzN-z-_1`90$LP zQb^T;zL{}7$uKy`qbBMPM$drHXNK4$6gO4{J8`KW2_NUuL<5)EAANM0Zm<5kPzE4h zMd!d0N$;1BqTaBw$z0(~pjO=0;!9}1W!EA%fW^C-H>coEB=~r6Pw6?+)@;-u$=P+z zW##uNh$c<4(6CUCA~Yj&B>soR_6Qlt$=bYe#mqOVrFLOove<#=z)5a{N4RH*g5))#I z&PGo5Ojld}5z8zgX&MEsH&_b(fi{t*{z@!u)=qG3i1~UB`82Ek!>d7`^i2s1-(u3K9f}oZ?{^*=Fnp&;A@$b5*xk2{{Qe1CUI9~{ar_Ls z78oVyJbCKnZ}5M^7Gjf`&~>w_625}+P!7zxYAFSmVRXo)G7BCV)mt?MiW%R3dS(ZUUcSMR~$DaFr z_IVtRrRg(VE@seLS=#AC)M;6*-5OcKNe*6qsfDaBU!;W2FICuD{7Ua|tFGzj4jZT0 zKmKiO`3G9!H}jpTN2&?cO7IoG066BU$~@H;C44lxsq6>jEQjg(X}#kso@w zQC0a$y!e;%vB{L-xYSXu>F4L^1-G}*^L~SiRn>q|bxX6{hCnN>ec3y_Jgw~NnoR#D zZ$mjDm5A1X<*E3hH&uv4AL8}$r7Bwsz5;j6kE-~#fZDNxeJ~l^HkXw5dR2zT4l7;BdXDgoJI1~TIFG~a+}m0TToupT0@+ZHOIxg3TR~mQd}U0p~Sptmmx%)+V1Ib86-JO!knw9 zFC+5U+4YRfwY1R300+yWKzyO@h|EQ?uM#p0C;)C&-CdQRp@F0D<0ZMGdE5G0Fbqoe ztRRnt@4vu~dG*;?cID1jeG3Qh*kh7K>$0uY7Lz(IzYkoW^PpuCx_bK7I1!_K0pEe{ zFN7QUTBx4l6>A9D&ikk?Z!_Q|8i-jNSZz+z0Zont0r{)5=w?2Z@c48+z2dZ6nC<@8 zL0|c3Bykj&qd|jeou!DgJRI#V;<-3_SvyzZl{Q?4qb&AUAW%&B&!1ITl+%Ixj;Os! z#IjsufL*7kWh^LcZG#H=%PK18`IZoN63Pt;!#ax%{6kA6-!;LZ%r;M z^WBUB$q@mxT*Q*)gIg0g--LYQRy!w&PruPFh@7KRnN!RD?g+L%M~fv6A}_89W>Ky~VX3GWK{7BTlNvZ7M?#7hu|I%KN3LE&HKP z1EMlesj+G7=Yq6&((62j|1+cQf1JHy!MslXU3k8Vn9%X4cSw=(aM>kJjNyE`Y?+%; zO`9+TaLanjPSbr7xa!UVu2s-s`AW`@5%Ut{wBql9TE^KE#q{-;f6f)#!F_h%8|&Gr zDNTaLF!)c!T1O#a!N8PRDj#7ZnMAjZZQT_vG}ReVREkR z(j8qH8*?+;vfCM1|7#$_SS&+5*52|@*&ZP-E$} z+?6H^fpC$djC(#{=&VqtU?JkivvXDE5+?GrFA-f`o%CKY-ZQ3kUXM$a>zPo>f(fOvcoDfnv zm;5VVR0*zJ+j`}=o8cGp4A(wPLE0mEwfiCku4ovm!^yWkA8h2_?muCMGFCJk@gm@E za-~(`9A0)2)%`F!g!xV?1OUR*`mq~2yojGEl3x8^buH|0PgvgunqyB^Hw~N|yU1~wLn!aKWf8bo3 z+NG8>Z?)DjO%57LKlT4-C*v$oS5 z(zyk`8NlgZ_$%^oW*NRGb3R#3tgovE`qe}?n+B!h7!+bja;7EM+?eHeh~IZ($H&H{d26U`%RjZQ z(l_Zq`#OPxNS4QLp|u%n9uQ9ZW^^-Z(+GL{NZ}Ch(*0EB6!tx1e4Jmdn?_b9qZx*cy4+= z*LFJ2lZe%G$uJ0W+Rfm0>L zk{^ADvuEMC0Y}WCkf2oG9FVn3C6we?H-2cyEFQHdC#im24Yki{q6_jbDZ&|~Kux9H zL%A5`Ea^g#;Mi4K9V{9+XBMc5Q>+46Ny$DsQ!bK7_MuR-t$tIOSMO=1a&Gw<&E{+# zp0j>q!f_b>j<{VN)7KJJ>r~6XO^i`SOL-HWC6s3t76`C!!PesvS?Tz$R^8pvN0P?r zD6|e(=Q>|~c=>_~M5X;|c!7S*>hc&?M1_(qXUDWRC|oa;G(Vt95E+SRQYeGkde}ua ztzDe_0)t*K-elUc%X_Np^HeF4LbE?@=PW9zA$#;K&3XU(Eq^@i?zo6*s4eq?-jSa7 zL$r0Sq3yAuKcj)Gapr;RfxlG-vP6_&s^So*?>AtTkm1UtWt38~W|h=W?)lh=2kvItw5Yv6n2MTNsxGXQHF&tPXf*h>C9T`T2_RKXC3`bSb1^{*PC4epNEcDF zu>Np;udZAbINfijfp4~T5lJLJ*1GU}Dr?m~cXd(a#VEz3IaN(i4ksI%-mqT!bGnK#vNwrx101@4nU-Xm4+5otm_bpfmWj`pjhE-eV zGN{u{_&6RQ_t?>_i{*7j%Nbb~|IO>Kbk9*Ohmd~=bbF?rOBox>D!2{l#N1HrJIOB%ba3L4$vb%`M|VB6|53Z{HFQ`cVT{{N?g8-s#M5;PjsGvJ2nJPWONT zO=$A=H^AgBFukJMs_b+&2mzfl2r;UyF}3z5>IsZ*w8ihYJg zFF?8pktIEp{tLALz6sesY0ML-{a-RHIvEf_f8wnx$q{z)*0S{h-o4D)#X=(YX8Kj`U)@5`cRTLW$Lm=C}|=p}$2n2H$k1d0_Ic4sjPB5R$ zla=K8xGP~2310Hy9wF(S@L!DPUnb;14q=sk3C7)?dzA;gaClEIvMXh~9HVJ>ERoe2 z>+MZo$9&43*C4)BLcZjl=tI&g?aNX9BDc~T+`eemMO^6p(LN5_s~*Ol3a(eB8CI)q z;XZvKzk1S8vzUJOT6UHs5DhiFcGKGRq;HQ{R3rZD1xONI)Tcp;u2?YhCJ*|tb0d{~ z2%B*`54L%uKrQDif{opcgt;E$*uST|A+;EV51T zT50`AJ_@jz4Dy;kKTG-6G*-kiCCtMl5s`-Cy@`gdhnW6soDPZoY6HIvGRVZ3s6s-( zb-T%)U1{IaY0s(}9P%z(*qKWODt!3i+^;cI6C>jE8{Tl)28`Dlvm9R&H~Omqb$b=; z`+p7x^$zX8SRGN53C62sLyGM~o`fgCgtE*x=A+@o{^nNHWqcLJ;tkXtKq{)go_deN z$^_+}a>2_s5~+h*b&-!HL{s#^&zE0>7B z>t4AU@At~9hM7ZXGJn*uy#m_-Hh~xE*wr7oJALho_^;V~uS7o&Rv<1n6Gq!!2U@`u zATzileuP~S(t)%_A9^J;{W-Pl5ujtByk>XkayhN8y6P?bepjO3XJ@}DLiP|uK>fgi zw%)FcI64V5hB4oNwEz7azT=h>$kz>>lkPlNXo=xV!~3i2rtCi0&t;Zgce%%LB@(Ri z4x4Z8KBaIb2pG`4d_}Ea+$(k~-k@ir2WQY8?2#N?mdEF9 zN;0gKKPVQ%?Iq+30bv%kAf%ly7fIuEbbjHJ9xy)73^8Je=vC9h7-GAMXY3sw_>mTn zR885p1c5Lr+zp$(9%B1QyK#lZ=LqG1Gk7Q*f-Mz_$>tzx;e^epiha>J2TN5)91xvu z6zQm<$euW^%XDRbefCt~HGERw0mEH&B3#t7#huh1hIf#ZO6~9z;KZ~7@6~t~y;ghT zg2l8#P#%n15wgM%s;*BaDL#rf02()m@Xl30UC%_PGYjD>Rl%=r851PL;(2l9cw$0H zd8mriy4Sf&=1Rpb#silycEiBHZIF(d<`m_@AjNhHWLXJAg^Z_)&+~3xtox6h>pvSs zXCj+Gw4;GtL|>{S-zF$|GoZ)OJ9&gCq*NHaUmsXIO`eRbQmx&IZc-C{4`UbJSJOE` z#i99K{DvmvER_oJ7-s(^%uri#&KCnVPh#Q{e`-}p9!`+38C>km_S=C8HA_Kg|LqV{edzCZ)>Aic+p~`{+@t{C45Jt0Pn#SvxWB@sBM{Z%;Ra zd3BY`xyZy+f=6x{Kn4gQQrp8qo7->6+JB*4W#T$VH+#W`EZLi0Z-KfpBWKolP(|`w zx+41QXAMlb%I-CO0oe?4eGOu)_zp)-sg%GaW-1i?SMnY@0n^Zrr(HJ!-QN*TL;>Bi z>1=Nvvnl{9!IZ1lpl_cMHa9W#52MWFW~gf8`Meg?M7QT3P2N0wNqYM<`IJ#idjB%00jX5`hg6 zKImV(R}etN3#l?h7xX29WD`GxYn-jOlRFBvm7=Z5KmZSg^nHw#dvZ}KVCqL@7-#pn zq!t}b4C@~P(Xk4N<=?W9DD^~?VH|;0%}{bW*9 z5okM#G`Q0 zzXOt{Gi=EiI4xyxwqw}#aU7LGS)=vxM(jqc4lXh2OLrS-R?E+YF||y|`(0L=chaJP zN&5CQGuH0(3_DvlMz}S3vYd*bG-{E*iyHq4(EU$%xAD`*S<>YR?sh-SfbIwX&P#F! zk0?(^T^cToHxl>C3NEPgKyY(ZeXxH>HGPvG#tsK}2{4{%+53JCb=4RBTeuje?y*NO z>0U;#k^swGsA+Rd?*-)!J!_UMa643FdjxEMPCU=WRNP?l8UBz1e$!)&NgiTs+vC-c0A#|jVyHv%4qZD z_0{E}*S8}YH=OMbW8zZ5-;~eOt_#e#zq`BrjKOQM$LSFo+N-jrgZb8Jn)0bK1VoAI zh-Vw1O)J1f3B93=^cWUP|3Vp$$)yg=y9aNnrN!ESJs3E#eTZQOAiGKI3oPUsui*`( zxoRigPO3A}45?U3z>8q0mwp3bIUmw-!Y_Zbm%!0#i1qUie^b_Hbs!Pa9mN#ZMAljR z8b>Grpzu&rzXWq4Rl5HYI3t;N6pz%MO)SW-Gs`#!@&$IW- zdKArh4MF`3P#&1!G$)pu`ll|X7alt!1n@toZoKk^#L!RO#jmPL7H(+49 z3F9>2CU-~4l7u$9JW3JQwXUy2?Qj4J$Y}()jETZ}U*hHLwqCHY!9XGj6Ks&aFp$YR zwKAO#6jj1(=oXTG35Fl~xz5D8xb?8uJrHPx3;lR{L#RGu?C=y7`pGEaXedhO?E`)S zBFh^3Q-blwVzkmpSB!VLVf-O`D8VX(A9ra8oqmvW1Hr@v{9Ek)TH6d$sCBlcX@t z9?nD^dylUIiKMDdm_0wu=79H_J44wxk{G$~X_y|}Wf`x3TW;`_ruy%njPB~y;lhG+ zt6WpLBKdbR#X8RyZV|B#zumq@1PqDwOT*hFC9gUe49a8S#3zuUNIw$uHP(bZ zH)_CY6~=rYN~y#i3KDy|m4s_;uL%>;R=)Y>cO6&#s_`<4-H4oV=f-0vZYMC|T-b$d zQV5^a4Px~KesKr<Daqp9zRYgL zO?r>lxl~G<7E`)jR=mTeM_hK{iX!-Vf4K%_nh*)gdHsh*a^X!nL}Y_-tB>gbW~yU%5GVe8nH zOUoilHqGkd2g=sy)KyvTLbG@}jm~^bS*CH2CBLxnCe!F;f$$#-S-qyo#HBixH_zo( zj-WFDJOL_2BCkEyrIV(bleq1RGormS7e?NW9miW!WJ(0;-h^}TMD)+ zYHnl~sS_Lt5e73EIj*>kfDJO_B5(L(x28$Me{db3&b1b@*2m!kdUp?@x&DV% z7YG@T5F8y%rYFPn=XR5jbrvuk2%o0+tiP)1HgYZMI)25pFF99z_qNKx6#5gcK9IWT zSFM?4A~xs~wYO++3P1D$NGEUpi>rdQZg27u+Dn-X?UCVG^58TQON4#jrayb9 zK;mQ}@kBMU?X2DC)6DZ#>KV&lT4Efm)t%xf)}O`d(?Y#61budq@fRRr1(;Pf(sA-a z@}s}?rEv`g_iOP?nB4@kJC4HA5`Opcb1enh2v^ur9ciBhnX2iNVxnd zZLi)Ev37_gnQeTza&2xI7)mtwHWgc@x+aFC@rbFPa3yzWhz4}dPrdQWAOb#`D z(~t2j&dRKIOp*ndG)l)kmCiSiG%MG@?i-KA+7oOVFjhQ*dpgY8Zn)xUWTdUfwr@m| z!nl76PbtO4%HT);wC9Oq)Zp_=a8CaRS}l8ESN4013&;^~=DH|a=MnQJk0_S4{B7I& zJ8%3+eX$yVJEXG*0j};+=JsdWaIpS+~-65tT z_w>q_0b70x`xpehxz%YBRBT7X+CAV|3$Sr=mnp~(KJETHe2`!z4k#=x=Zc@8cghdc zXWS5@octBRZyZV_8*alD-rR!g2U9wsc3chV{jaVkoD5~}Y^$5-2$xz1yKH@5`6GDPcEdh%C5%=6$n=+-DiI!l_{2Mas;jZbV$jI2t1{YZOYZbx zM`s6TnmXbbNC{|K#a2HXTDYyr)}43d-X@{Pwf)><1AbN|NPpY|^|EMGMxn*}U!!3B z#Ftv%T^9T?2(IHs!l0L1Xazko6#Bd;37_d9MwePdH_Zt%)!Ij`8*nzA5Dc^wU(~Nu z9(lJt2gOR&nH1y$h5gW-YEAYb@jmbXbb!7h{Xb|2sF{l1_aarl(*0y;^pmJDY6XM1 zu4&?WV!_c*q^b@v!tR~4(E&uRYO-HDfd{?F{a6bCs95GwdiPpEv`rT5$dKhuz$-5vXs=I8tNB#=S zIrFca#VGHYb6!7j*ib;*wJ0lD&cVWu!AixY2ie)x%J63 zw7KuuakHnzk;?c&6qHm%L~<(m(MbCPvz@of3=nKL-JgPBqZ!+KqB!!+K_(YoMV~b-E zmS;NJ(u!#JwZtdvhGl-%4e>cbh%F}CgHbi2TG+T)FLa3|!lUI>|DsbGnGFB7W5|yY zZ<^EJ7mwh3gVw)KGtmnK4&Sh^fjFNlVuCJlh zap^N8_KfDmudxdxr{=tZ1RqMg7MD(m<7V;**E&{xwdq)?HsCm01o}~1rJqw(&fqEZ zH!6EyXXIe4^f7w24BAgNMHtp%Xul}&3hL}ouTmti<>cIVy5u~7+Ue*V>pnv;|0@#n ze-5A32Kk~d!7?A8S>nT?j8ZO4{FXnlvO8gC_q6j;Ff)2{t%@J#i3|T1#L^57*lpI) zrpKMWG+GHgTW^|S%a`%`T&o)X!+W*!s{4J0Y5}JzRrQDt`)C=N*bypFdUq=hV zn!K)UYOwM}zE{O=g^C zOu4X((#SQ`bY6APRTuNNjYuT7JADLB~_;M^6neT3*$qv?5b|m zvopY|{EE}~Y$^qdA9=>#6*;oY-V%<*oVo|t9{>$=HIf@e@h$z$Kb7<@0Q9#DRt4?7 ziD7hnX26}%!nO}d$fV{Qiz{#+LmVT|3)HWoiv^gcuJm;nE0t%-gheL88Co??;y3m5 zuWQrVCTa#z8pT3(jnxlVnApD$#w$Y9fLe!KjK63c^Zr2#tbIE1C0)>x@9JpUH$c{| zb8Cjgm!R*3Ia}BPsae$|s9~ndB?3H?!S>y%)P8)*j;+`Bt+B*I)H0-gA`+}_^CEAz z*0ii4$c_YDo)M7G04jkDY=+oU{hBGz-jIi3*=-jdCZt&bTGb2bp6XXSL0v~9 zP~l;oX}=0j>_Jbe9ky3gS}H2?MtGA^Yf0$|Wp5_8YvPw6 zKbH}PveLSvpKs(OK`#SUxC*vjJwn7Sy3hCZA5B@CReqGT01QSo$&nuHykW6 zSI&P!{HF%hsyk9uHHY5XVBJ)>Vf7(N9$B`j`(N0X^8(p;hTeDHbX+cni8w`TWkh&tG<+x%ihH}OZi zI2hOLdC#oy0#Un?ziEi22{_GnwH-f95>+zEF$;Lcc9tG#i zIrdWdF2B*D^=LOOS5P{&ORwGh2O(b7IOe5;L;Ls{+-kuMv1KC#{xoYyvh5V8{U`<^ z&^^a)y;@av-U}V2U|%g|*-Ay@OuOXn{yih)u!_!d#!IkMHw6y zt5cL29f90G&$=xA>gnfaS_Rvy+^FO|I~@E&qJHF`Vm*Xl85CQ02vZl4*gm42FuitT zQXXw+@se<(3D4_#)?^5m?+$w-478#N#~Pzrk!mq&F|^#nhPAToc=uk5QrzW5Z6)|W z{U#XUFMb}VWy&5LZ7_>X1UecH^i|=f<=ExT>$#U`4t+G)?HuJ_apJF2nKd=Jr%i3_ zdzCEATu$1kCrQ!I2VRDyx(Bj5&(^tZwA33CzbkL!S6CCRG286~3vbGxLxELlpq zSJE5mWn!QXm~nNV=2a(F8qZXJHP6sjscV@?nbQT62iqGz1Zx*vp z?%Gce4oy8O9}6EBg1AygH~CEMDh#ts?uD$gA4NKQ~5>dC#*qvOR_( zDlN-XbT+lC-{K$FQA^CUddn{voWOgW)6N;<;9JHuwo6HormW!5-bg ziC1yQg?VH2>2$n$2CP`?xtf<+Gu}gGX*@c^)mm>2V0U}V?dH5SL)Itwz8*f(J>9o^ zB0s$>KT0iIqg`m+e!drzZV){_meA6>1`6}ug)w$d8=rSrhI>cL+CNO+!M~<2!&+)N z=Tl7{;l2m&6)jc_(QA5N^mgiek!@N0pVwR(A|FDGCEzY2mi~j^>%jRO$=e?I;yD`_ zsB?h0lB|PwJ>~vixvKwzkp4jnfBIYmb@n{KH4$6=|NQU&Ui>HlYM9xyxe`AOI<0C#7%LvGiSI)g2)@=IT zr&kpM>2(6f68|9ce^{)1KB6;0WK)5>_531SUQ?`A2hRBRqq#+7yToEmaKSi92o3e! zBd?JcuKi5x-@E0jDFm-!w|UB8D1`LX`GN<638gXWQ8`N=n;zO(-*(@iFV%OVu*6$eyWQiIf( zqI4SSlRL=}tcRG)tZeyOiN8&fw=8H*5N@V?XK)At8RD7ZAoV+`=c4=*N(ITIwH3Y! zYJ-A6o`a_JJ46lxvW@wmw)UlTl$iQ?nLGX^2}_L> z29dWK*-_45#jO?#FTDAoXuGxG8s_OXI-exv&Q~0?7`Nr1Sypq#-3mHo5F|Na?OJe* z)ZhEdG9c6!5zI)byZWNC^tG9Vt&h0Z25gig@F)~B%MO=H>sYX*%mfigl}FR0-9mis z_n~N#NKZ3M#WAavXKWdl%}d&&qL*CD_RXLGaRSv7nNY=$gnyFNQw&p=wDu@w_&=J5-1HV_a;K+IHu_i`(!} zFWtSqDmc5p-9A#zp{3Li=f>!TIgBR9b{QR}7?QQ_4lD)+Gm97K5bG-}Z=o~1Yl<;> zSAisuHM38?*4@jaRf))xpZdpQp=)8IEpab7j~lP~@{K1+zvScIV`k^?Lp z3)RwQrsOQjx)WMmb?w`Mb@kYqXel`Grk=VpS(YUg zz!P6S#6|i=0xnAAKcD=)Yk!_Kg!R>>QQ?VS90guyM90)7TEwk-^-#)lJ{gt_co}Lr zZxY02lK5QjHYbGRpdljeFV=Hkj=yF^{`F9W^yZo&DwO&>>>EB9mV=~zpGXpHei@QU z2DX#L02rJfea8|j!#X)KlN1VqaImJMpUc5J$ ze)y6wMhYcydBG%@{x)E}v-3G`fiv6ou%Km;)M`pJV+uwSQ{_c!nwqWBo~RV&pJLAc zk%#%e-M6#IW(0ZbHxoM&5`c@XN*umnp}#Uo%X4O9c=#(96dvPZamoSuO@Tv5(-GBe3Ai-C~6|LULBi;98fgeVeW* zy5bfggfLpTN-mq8S#(>JcPS{6-rQ)KPC+qh+O}GpQ?xrQHk>^aPczakOybOz_dFK+@bIk~$1TipH@M+h zmbWZcy&HD((z_RnfU8?Ji-h(_>Nf@Zg?~fv|AL4o#Fs&++HtT$!m!TfM`K!m)wVmA zij9-$G|knyyNZF&>EL^R+MpBnx-t>+nivT|T3fq|`7Cg*Byt_X)rLp%V)L;v54lG9 zBWX&Se|_7kVo}J(x4+(X7T=losG(;X`t*^Go@e*(K-dBLggg2@w{A z*oLI7-4U}%nl?ZXo&E@7@su)hp7=Qo*2;I4MLnJ7V&UvuB2Qy0UBT*;BLUBeTS@s^ z^1j2`#Ed)kx`6O$%KJ~I?Z4%(Gzk7RH9n@fY(~Dsc;tX?@dzdl#cs(6#@B_25BcpA z@1oa@_LVTM4ger(mH<{TdUUAVI9h8pPQ;GZ7F6KDn=E38;uvO zo%Go3{k<&OxQK9?C67KNPYV|RoZo(VK%8{$G6ZB0*(=Cc7dc8awTA&)(U|k?TL?`f z@m7FuWNv?;)N25aDmSsUXP40Q*;aTW)fU=aC`Y3n{t#VlHj>7n1ecN8sSsN`qGX$} z)Yf1PF6N4?oZwFZia0M}la2trmmYoUt{NZ@wdh;@Vw*nv+aleWyY$+>36w8Ztds@h1V(u}JMblFuhHOv4hnWg)4R3h{!*x!P1m3b6ErlO`h=r>0GOVQGpX`=&;RSlqphvA53AZk53xC=l)$!|LA9}ImaAT zqpIctGq!q0DjVI(VQg9ml6Y;WLk}^EK7EfhxegMV|I|R~xIxx;EXFnFL|xy{_WYV_ zWqW#ILe{nor(VX=#xBrV^`+sZ6*D!pMq+KzVS=~0+LgQF3nv_AUmf=k$*RDc@ zX8RJDhoy{E-&hJnGerw&y|!^-Q?jE`a0W2vXq}8Kr4vO5R-LHEvYTQ>htiBX{MY_u zu}wrZhjTB>3-?w}+a{w*28+jr_g!t|q4Gp^Y2wf57~1y!TwUC!dg)73Aa6+bIVk0% z2su^lO*7m$@XRI|=#boxIo^!oGQ7E zB)IAaPU^!sB@IRL{vG&+veo_Z+QNH*(LXKFrIdumcBd= zfZXVi3q9mHMkR`iFy5cuG#w(9RHrtiQk^SuGLu7J>JAdW*IY{!QpU0tnz8hUCP-Ir z6DY>C(r~jC2;kH6@Ca+4bWwIo-u@2Wj*SyHwvF%KVD`%%^fP)q4knG=u0Z7yMmiud zj1&c%zoyaU%l}dL^wvxiRdiJb`8cL-Xq-;q-*zSTmqsMQ+~e}qaE=t84`iMc0CQR- zRsVFT6?=fM7d6zaV)h5;gYmLRty|dt|I^6-^<_= z0PM$NR>$OB1T)@F?xxUod`{D^cU@YZ6QdeEXyeDaC-9FmV}J#YBgGgdms?~$0zh+*slrT zqA!=$takY?6!?q+wR!9?!X0w8xz?1{i!<>&!u-;bHIe>~q5rof{a+88|7%@WMC1kp zp)z{M6G=r~;He0vbw3KR9Bs6n5oUOEy=?F%$9s}&++^&%wLXnay{SIDoq7wr)S&_8 z+z|-q1%Bj#rIUZj#2DP6)89vj7~@FQd9--t#TQGMntki04kS}u201kvh-hPy;5|vQ zs=8ck=r#*e@82sAP;c-0k>8jwq>2@gJ$LFI(kH?`kmatTVFEU*v_(eJH@aIr8ECK z{fjFLJNOGYF+wV0CQ$#Erfw@Bh_Z2~a`!aBcKd zDl_0I&G|tOz*AVI#}~Vg>uQmgrl*c?)-~O)6nL!N+-z;EB~o-;D!;sWKMJ~!WzUW2 z#ZIM2;B~Ubkv`>=UK%V0WsuML58V^cQ$>@Gkb=nmpo2b4|ATUQ}YfOx*X*E4l!b~^2Ti4sCwx}JRZLASm1D;y?E{e7s5MvN*EQ(JaKL^mH>=Ci{ za8t`kc(CPlpIDStpky`lvOHrm3&TcDfXxmYG=&kxCGiBi19Tw`%(|E3T%JcuViqEN#@4H~jUH72>8a9 zwR52QUdEa{D5?n4h$$T zCtR905y0zfB;kqFj|W5=!q9tSfJRu@4mBW+&yGl)(l$(vR6@sIUI}5Ua=n1?Ra!y`N#mcM6P;tQ?sHh56)PQPo5AV(fsZSp{!@-ZZMjXj*DhIA|o>4vhQ z|IF|rtXoC1lBf9st}ts@FD@LdpY5UahP?RoMs|-VY{uMBQ-1S+Gzq*e zvk+-iRP`nXx3?s`p!r6&7Nu3Bw{0o8F1J)B;>TDr<%m^^;UQ$=~mU=x!g9Z zEUh;grB945M&+dZKR+w@za}K~tlcaU(~|np-HlH<#&M{c^lH!KI9ZVbv4n#6Ba9Ty z^!emN?-;CpD7+8%)pODaVTQ=XMJzLT4SboYcC4fxR-_t=ak{)|LlbK}-vVYR)2HP` z4`o_$x}`(4mAo?4Wwp4kTftW>&MnAt2aBb>gk|>h>)JbcR|Oo<+8x3$OK)(TjkO}o`c%=E8l$oerWU3+xr3-e7v<`R!V zf}G<%a$=dr@PnVJPG&Z)z#kl&zQ&S1YNcH8qMv`5G9tT;kzW55J zpI>$cWAZk4XKweT#R6ik!;Ir>MNt#HWAXS7&!yUSZoYO7g_CFQWFbAgFnaeLg|1x` z_TfZj_v>^oFq)_od9II=yab^?B<*EC$Wc@1NU|JY!1>ZAxb}#fSRY+V?U#skZvKWZ zRduGKnmDiZOqnFlBa|fM-cXgIi`BCSV-d!cUy*%CU@GpOtKXti6b)7HGf89*Up`^Ls-c?GMTE1E)tyqONje+ci? zR&%i8uT}(c2Ss+a3i!)5?b7>D;l#{OtIyOdF`EW=IZ`=rY(-d=6m&Qn8+TZ!dYgDf zVQ~)XqiMRJ9K=+<$;dlxZ%d>6p^XN#l5vu&QHstzptj?{4{~$B;^j zlp!dhCr*(Y`$6Y8n`-2jM@Yn=9LElQoZok}CGtAg?yR9;qU`ogfWSjI!COXO)|)Go z{xZRiXgt9NB0%^nBGGuBbv-LBsVcwaP+hnkh<~f6{sLN}ZhRj>O2)QaMvK`bblX{3 z+oxMa3edX*VlQT{<wn^<3pLV?NcG1-u?wfCuL5kXK){#N00OP?VSi z;{?*6Z^DF&*1}O7^D)BH0tf8oi6T8x<}@%4a@n)hYkJ|9Q4D zlE1~s`<#8A>#nLt4c8=%KFz1wBYZaPlkbIFcan5>@af{>M`|N3b!)z|VL@rte00Pr ziuOGIZSm=1KZ{@1&wZ`uZ=;&@EP+T@S%+0ANx9g*Tb2dR@HP%+tJ&HRz_0FkO)Wv% zJ1&Xr&{4gz!%ZFh{@lcoqsMq;iU~qzA2jSz(WsWNhmKh<)OdS*ziAhynFs7W zeB*Z?+2$@3FmBE>4E`qReh4=?;BBC;H&5hOWyt+pUb5UUk1Bu7`RD(1Z0lRd>-cYr zkyDS}Lq%Q0E)Z5ByMORIvnfQ}1s&2?Vjg_mhA1%AD_3Dbz&cbo zhf4V9u!z`qq;~4(ThtWv*6oj;gO6j2;<>z~!>qvz_g0wQg+DYwRP75gK~8GbmPH>@ zp5(8!DoDE4#Ip()Fb`bnR#4mAM6O@pGxFv|?<)GiW=FcQPL35?8r;{^M}*`8q9tQS zmm+B*4Ze6tUcvZ%dc|9$hqFEIa@v(Yhb@nMwYMc~PtTgyf>8 zf3m@Q^|dwx1l|hBTMd@}b&r8^jy_qea`2E722$Kjd`o08>*qO{=H1OU!&&qD)=Wr0 z5< zg&Q%2$Ua3iaC~IrxY4&5b5pp14YbqlorlioML!TNQQxLUEw9k4V~;fAvM- z#h24XB+}fmhZHA!JG6{n&U3&6^wvFLkC|RsrNVknjqlB)WE3dBLsr8xm$~8;MDa6Q z8xJ91Kkr2AGDzOQ&p5r5vC+RI){Xpbb0X+ZoI^>R8;)Lg{XPSv!EWJ;KspWEjhxnW zM4-I_?;a}KCcRf&9yZxMZuqy$C|5#S4%Ec+%LS1gma*}85JtomiIK)vE9hn8g3?e^c5%E=~Ts0@tJ)=)+ zFH!TM3H5Zl*h2-xI_pWDcdmJPaR*8x!@fZVLrJ-aj?%vSWX6(AMb|j)jyf#UUVpDL zy^p@lvZ)AxG7#FpSPG<0+l-AmfJEWuYC=k$$n7UH9K2)!?jdJ$M+p(bUIM4-(SH@{>pH3(S8lEr zzSJN*RD&4EgqM2iKC|8UJiy3rG2v9xCDdaB6(L0aL35nc68rkk++eV2|7Y#%s(V&a zKwfr2A=Y|jRNn-D(z+z!G!jFpNb(XbYr*ugvi(93HQ9TodBszU+jLV$ip(0Dob7VL z1?_y6WSL%%Sc3@yZI(VbO}m8l4yWuz1Xk@*!tD+NlbWMPt93^m!u!7!A>zrloA-!Q zZ$mgRl-i!`UeFQQFG(aybN-NruvO9-NvogfiH4Gx4mV28n5@fG4=q7RRKm96c@g0BdMdOPgG0}uT4ZKLUHi8#Ifn`qw|TlybXPtq7+Sk%?!~o z`+soT`Q2aBUBJ4bkl!a1u$Fm94J^ax_dinuR15+=oisW#L~t1W=Y@fAbIKz2>3FEF zL#1ve5_I^cdBF)9vs&T1QAqPEXl*YO5GVtJub=t65NzotHO3t`kyJE(5@?MByp zlH`j|U?kS0lns;`c}sJ?rDc~}&AA|`;9_Joz|QT)21DDO1S|;oB9uRvNqwS`_ALh~ z)8UjeYMGr~bSpJ=7fY;7{pL9u!7~@pSq_RDN3`>(Z>8;3aq=ib622!3Au#KC`=lH8 zHI_-y^kZ8Qz;1-Yrg03T5cwLhsd|?$2-EhlkMfUd8(Z)fR;w6TBBoGT9iqv6r@k#* zqO(^;Pr3aAo7xZtl~>Z3yzOW-QSxB)HK|EUoVSfFDU)8RF33GYJSItXeIns{0~N25R9QPQTj1>4S{8%VhUGJ* z8Aa1Bvlep)-g41S=5R&SuUjcn8;((1^2YX`Yv-32qJ`Joy&sCV?wXOsZ2L9uU7WcQ zZ>yIR-l3Oh(Xqoj^NMDh*41SkmF(Fe=zKq>wu+FDn|`_;&gV9m)9my|!uUvMlvxDs z)|hzvk6{TtQfcYmG7L{6sKZJnyj!-T{D5 zAvBVKVn(@UcE=Tc7RCvC=FtjL^%xnGhv|v?N!dpA>$B+wwz6wUo4DT9YZ?sGjKiS^ z!X#YIAazexg(I6?UI4c1XUGT2fRMUDtFX@IumBF$0SUB-RZ~BTMWYK9VTV=;hP>Q; z_X*;I4tvQ{|0ZgyHgqzg|}Q%_;NtR;qnK}^)2JMdVg}JrIbz=;04wWEE0z- zx*3lxj(Ih!8djxtzBq5A@~{?tT;{vO`w}5ySu>ZENldCCp=d(NZ>x^eBYZ3r=PHyp z-SvGSKpd<4_ADb+*5{K7@1LO&lF^L}OF@;n?b>6fK?}J7_Wi9^ZjjOll#`o$&v4)1 z_8$0&0*f!rrZGq8cWgwssr?v2k7ticWN-g@Nsuw&d@>Cv5Y!H=h{kqTdXOz}p=d6q zaw1sLdmgAq*V>2PvLj8x4=%)6BMtrF;~Rcd4d#>v^KK4XeF`IL+3$V}qu9ECPUAgpIti{fep7emL zpsz^aDC*|3U9`=+^ofi6)QcxanLF@$Z67Z}TNZ*0&zlaHXNjEYM2?1vzVj!96;eIOBs#tsV0jfg{FdlUO4a{fONJ*h(Nb8$Ik z-tXbjxHU}wmkfVh7v&xu7C>r@(-}^tdY2~wuuRHaF}=bS_3ngU*asfr`Laf$HSHE* zfGT~&?^gyc{d)jC1HrrQ%W{l&TpuwRMbTIB(6Zu=)D(Tvispv0b0BZ(Iv7cp3I#K* zxf^d(QS{Z^ULADmg^ExiRSW&Sfhsqfpb@8p;;UFr9PL{P4{P(bmAO_n$aeWg$#=}O4;O39~ZQUnz9?#jmP zdKakqZ;MV^Ct)5WgeLvOT-nxjOxH#qH9avE$SpLW^L9iH5$2gfD+*9**Va%)V&&W& zu)ctv$PR8mXd-X-E@i2y?Gg*1fG;R^cM;Ohac41he-Myh3kgbe`pBa!WmDTnE;elF zK&sFt&W;HJR!i9MIq)d4_SYN1gU!lA1GE(U>)oRvM;Sh1o#9RMlCCs1Nv5&pl+Ee) zC$fF!I|hO;yz1RLMsmm*^(+Fa`J35ZhTs~NoYDI#`pYfd%ABId=<3mN6L@^Vfu;<( z#hBwS8I!e1l7yG?6oW7YNXJZ8!IR)ROfED=1cWFl=ilHpd@!!9;A*+y4{ zSKZGI;cKrTIPP_)qtvWoA!!XcK}-7q-OQ5m@g0)F@kS$NxJ%-8h=N+eWLh4U{}d@k zlJ%oVY@Q1z*qqb zi6Vvha|fi&t<_azH!veE!OImuF+J>ixcfvonzMkE0rDVTeQ*w7e z6dq}P4fMS+V(rBD)X!O@G0r*52aF0=z!Yv3MwKxWWo>%L;sd2sN#eAY=eADEBZ2o! zx;%0%u8^MsYs6Y^83{OBk$uRUpyfJ{I}7I~28A8=qq{E5(tjtE&|(FV7IYJS(CDQ& z3H(T(+r!o4AHF(9-%fY1&IZ0hy6k(5Mqa5T8GGfxyZ=oiy_Ms>Vvh#m+_oumjeEXK zquKn(*^p+^z0N%9N;`ouK>1ixf7+^JSEuScpAK7APQb=jRD$}kcQB}{bt04)dbX<; zRRD>v7vR(M<*i(d?`=B^m&VPCtZi>6JKXR`=Md;aL{n2Q0dSdy%?k991}iHd)u@!( z3S@-^IOTF|w%e>yHQy8D6b^n=*ti&*G>Ws2dK?6Elzc5bkK^**e^JI3tvu?WgcEs` zYUC4)@tj~zkt#c<(s6rg-3-+j-_nA@WO$xia&b3V@%?Pp4w+{(WfRI=ZGlK0gR32{ zFr)S(d>KoM?^pqZN?INN8`2vl;w-XuTyHR28|pn1Jx(_r4adKwz4_T5KR{tqvvUi9 zpGKWrT7E3vFqPy!r#lfu!ri{&c}HmJ85+mob&v6UYpl9-^AG#5ZUI&QT&}tq?yg%_ zaQB~c>2q%w&&mLGDBN)NC6kEXX%HwG6n8@;d7g8MYIH_YJ3JHWKU%8eE47G#4{=wE zRk#e~qek|vW;0z7lRGC`{NS4A+`BPt&q$Y%r#uw>ph|OGTU8xUlhOX5fNAAXTu|Pj zNuAX>;G0Wts?ixQy(W_hbG(tlumHNIuoz>K&W|w=n)TuOg+YbuAZb<7y2seJ)^oAN ziu}{)V@O6cr)x1mCx-xu1HAbBAc)1dTBp|#LR-gf7dOL~46tjKA= zkIG5>%!Q*6xMY_;6ptUOyuBR6VXmp$lMws^D1@K)dH)P!hoB&#k%dWHiFHz-0+*#? zZTSsHBLZOM_W!7`^bau3r1gK2;hS6&uS;R3Qs*zvnIbiUfxT%)JzQ{X z->-Dp)wCSZwK!1ciFL1P2lq1?kuP>DqFp+F8fUzGkfga-aSrQgQxx}{Cq|Kg5bdlW z4rE_&Sehwv&i-yu6j+k^o31v02Dl4rv{31*N9QzTyq9Eq&V=~tB~L`=ADecF1`GVq zC&7iz=yz6cpx-7mRKHC}rv6#GK1;yx+%)*a5>*GjBv2yZTAKVIt6{V z%-V`(MW}=-7n0TT$JR%^Nr5M_TVef77Vgnc1o(iflN~)k#oYLb_<9=hIautV6q2+E zxE_(#)SUVS;JN5l;c>ue?KJU-nPc+Pwjj}n+nfK$F5bLg7Ov27KKew1lcg3$YV z2M=SrkuW|$@wYn~l?x>8O&5Vef~OGYNqlv)`5&N)pPHH^ zYI4aL^YeIS>TJn$s&U~wB7o(JnxTlU69~}D13g)^8QW;~p!o??kN9;N$O2kbFN1KD zFO*%mg&>+DO-EI;gDyR%rC8_q8USXUObFak!>Zg7ejYfZLGX z+>$E#!fkm05B!;=8gy3I4H%_AG?_&e!Hpe5k>fcZdLpvxGs{syX#OM2lz4F3411@wD(abELYh-~Ra_W4_!kV({wWVDo z_yv^?qi8fpnfmt5CkxRSrXA8XbZaLL>L$fEyy-9S%;LWeXC7iO(js!|=<&=pTGtEa zGYg9CAiX_Xiyx;XK<4b=FiLffSfM>v^U74`FM1-EYSN1ASx=m|CO?^{@AGj^12dN0@G#)p~zC=6U# zA>1@aL4@`t8&mrKP>g?X@;Z@qfRyVB<9eI6vKMtJ^KcL*V_q-ZLVd$l&j!S z+o)xWSpy$#IWSg_V5WFyNSKnVS%;?;c^(*#tXJrVG8Vu>ZVEa7Xq?Q^CX;^CI*D&)jR98jU#(4rGTSwRVQs1DGpytl8 zD%W9fQ^$T7#!JAp5k3Is=@E(^}zGCk0 zxjDnF%|4kRH-{D#THra=VHy5#p7`4Qaqx$;P{mL(1 zpY<g!gSnpi<)16u|v1l*fGQk1@T9)GJF%7Or0 zZ4VME04V8_>s#M*@U!MU072N)et2o;-OiBL2#>a$s^NAr1V z()41jt;|^KJdwBJr!Cp6>h)6my!3Fpv@MlH{O`vCai#r>7!4fDx5nAjA@UY%yo3a(@Qe8<6vneU zY0-w^`Fu2_tAt1|(G64N%0oXpR~pkfYUdQEFf|h=?b2s6J}mn51ej}$=#U9I4w-!1 zlgz|cT6S%n8X2)>m9Q05TsA60bFv8A#*!nT1LAZ>U<y9=@q z!IckP60@+JEHokhRwx{DQqM^~=mmA?_dh1#bpn+8G_*1R)Y<;hQ-0}@!t)j(xVViq z>P{%H=HJm9=NwQx8#f%wT7~cB7 zrlQoiIgLtDM$NgGQf9aG#saj^R4(;YE|$1h$)`zuYQ}9NA*{x@kM|;KA3v!H!xHhT zn=c#3QD}m4?xekumo#*00Wrhv`s6I6r;Yvr^@buTwH8VeSiFUF8gTr)pOKzTP4Lxl zxQ>x1jmf>>QuHy;B#X<5`LS{~YV?Y1Yww?$lyI_=1k8o_VpWzu-Z*rlNHMJ(+;I6k zh3cb`Kvat?X+Zc0qE5h;Q7{ga!U7ys@x*3zG=gLP2-1d{ToA`4Z9%@qj=K%=4lP5Q zT^Q_jyz;Ha>_0w;zT=qhST_cUa;^mO6iq);WxIeMspU?WXy8@sA*fL8r3@fWCbrdM}@`o;WCb(qo)rX%3viX)(bAlUNM5atOJyp`*YVEAZrm zc*8od?{go_um()C`3?uI*nZ{T#4L#9otV{O^E`olQk4d1HJeb)S(TdDd%dL!tg@`m z&iu>l(e6Py4qJ97TIckav(A>ReQxe?5lhdcW>1C$E}p*AvL=ZaT7x_)(EWz^w{0W| z_=$RW&&gzFchl-(R@jVwl2*6<3$>31-p$nS={##j#vv+L5?d`vfMG`)vUgb+PYJDd zksofW1qnDu$BqP=Fd4j-8wn|{JXq0SO<|a&$eVyh!Xx}`c37eft2okQ`eC!xrdP4) z5-IN%TVj(W4%u>2CaiPL(N6Vwx6#oJRg#r?6SR7_?9{dL_0B!ukC8%~CyC~zGAz?+ z?v?w5!d~z{)A@t_xIFGf@g$IeTy$-SzKs9jZY43R_OSbC!-<07S>`k zoOakH-Vdi06II1!|jo!xiC zj!q*gCZqT2cka7>dbN#XOoAa~5R(A52l0LF!WebE^7nL|TzcW4tzl3-Iq56g-n)2I z6Ff5he$5k8#QdMH_a*!oUlvTVcOpO_$zlhqM%JWZ>_g=LvM>L|LHHw&OU>s!)cq1f zZ*?>kM0YK^Q6Ji&P?_sGw+CM6l@xyZk16HsU&csnB%jY~FwY1u=Q#jW4o`%VvY%R| z5rB?C=L>YE^w~Vykj&7born=VJyu_RfE<}wY2yGBEr4`5cKGvk&`n33+BL%r zz*y?Xc}c=2UC~QjJ>&1IHXrrHZOhMr`Ny>2lSnpGsxN~_d+vHC@_m5K5ibDF|bO;0UA{_IYBRc z#n;R=oN?2&A1Zw>WUI4(HjzRh-(?a8jixUr2cZC)26gUmSw~iCwO@`Fuy&S zC=~W!aszF=H@;fhIQ0adWH%W#*uR&L5ZO)Td(V&2qHn;`nrWJ5L?y_jM@P7u66Z2F z%fq*smn)dD@Xhh6d-2e$l0yD)aJJp3TGjqJ(4TFm0eAJ+(x0|sm1OD0f8;V*Fwdi! zu0WTu`sS99kc0k3*eM*7Ix+{hTa!ukTS415=a}l;f1?8d=)au9@Tb;)MUkuq{A~UB z2m<)fBgWm57Gz0`U5rFiD1&Phe(9lt&%#P6$0)F#6Tr5qR`jvrJ(k`3cD(T>kb^pG zC4n>1kpe~a7l{xIr&9*LO&>Hlg9{%qCt}HF~Ot>L9-!aRUvP z#GD&P{$26+u)Dr{DMFvgLpJ30xg?Vz7bN`VmVdGU$i=*V*jT8=KL!Eq$-TN#w#!SH zrfW}^7hGn189nm1)#fL3jwbl+KH#MRHkm=Vwkt2awnZaQbc5FIehK@TD9+!!R}h`P z6h0#vWM=zAqlZ3TbTQ0}&G|l{v!(TDqiiTsQNC$z zgaIC%!>J+zZuZ)ATWwb0;bic-d?*=7u%<4Y4_&f}dES!WBF;U*Mkx4aR`MJOV+Rzh zdvLdpGH6M-^Cv+_LsNa*_^lh-TXt`PD&2f zaj^qvyZ_!1Z`|2pb8>m+eBePnQ~;Dv-KWxn@4Hh0&>-1GwH|e9=>f7jh3!L%pG9`o z%RVXFOMSrcEaSmlMpWfo-csH44@CJoUekR1$@HmcMU=S3m!Yoy3W3mb#F~utJ2UM> z>9)rF*WblSq`8$8CHh9p2`1U*j2pg@-mWW2%`|E0%f&G2om8lzF%i*3kGeUZ*OD)P z_u-@dGBm<4w6Y|a>(Xl^gO*0cn?Pi~4%XR+qh(VL9^5Q=buj67d&Oh5IvAmY2RVQL z+G*fgoNtB~^v#nZ=6zDRWmz}PO{B@`hyUvqJ&XK}9}xO3Ll?=V?J}WTun3cYfhJ7w z+(z*rLkT(jl*iuca65Q9l#?Y{o1{nKZzI?!35m7GIBNLuZGgKtKqm~Yw?Ya)k_Gr4 z;q{#J?Mm5YEZP(Fg<}&NmdI|fVvvODelS1Q0HaRIIXyXfLzStgt^4x;NvK)nh*l^$ zOot^&_PIX<{iX>tn#g3|Hx-YyzZ?7>DGY9r#$Bhi$j*y*vgOshPM32 znBc&O?+c36aj0o@%r^{dOKb0T!9g+ICoxl#HdTTfjBgwMw)FH><3ujrp&#PRaio4B z?KSH?JF<(ZB@0nO`bJhqSQG*aOQFf{Gr*^{PscjrF(2ZFZ2deZVpi6IgEwh#FA5&QV#cmRD3l}((reEV8K zfv4XZhm1l{-U-<@d2(UeIYgkvk}%C;A|BpSX;sNgUjohW_YCJbfmA@5MC4Cryv8Bh zMmg)8>I((k9a(2F5A0tU7aP+BEol!$Ddv}ac(fI172)DU@4jBkg%a#EgF(r>-0h-= zz1`)H7rZuqmiI`BWCE$K;l(e&V;ho_s>as$F59$x64xZvDx|ZUY6G6sZZ2wTq|-Bh z7e-tE_E*~WZ-Yj7SUDn_`b|!OL&{VwHjx%b|04FwBL4amm;26E?-#WQ|13+q;b(2V z5ADnd@x;klJ4#5g%|(U`pcj^4Usl!fw}p|NDDgAQ5|s}{N^5YmG@Hy*-9?&?lqV+j z+}3||4ncZ_Uvn7^J-vD57r9WULEhyeCuXeu{<(^Z5j)bEi%G?#r)7ZY!TGf%69<@M z3*Khh4RlM8KICW3xGomtM`uA338OJ;$_{FkX5v!&EHpxJyhj=6F(&s-HcB%t>>HWt zpyV$!A<4v(LfN6%jM}`B0>?=;lA;w9pgCef)}>#2>3dF)f~li+Db7&$Cy!4*CzuG| z?^{5-cWv!x$j`-{EE+V1k(6YY0XMMJm1 z_ri^)S3Ym-_1mv?6O6*L%_I;B)@MV#4^HXOPs?U{2NjG~R_K(ahu2##^l7gO8Oec; z%kULVlee-_K^v1ckC~&YRaW@R4pvKDZD5lx!3lA^7z=8PvtO?h$Iw9W(a-xbd`c$y zQnlp--*K)0RPp)Heb+{_axcm8(T2Ds&(B{-Qp_Jys_b`?c`}^~Y{&3i6GlSrzOMSF z54I*KRcLt|l}35lf7s1M0>qWm&Y!1VP`i~H5a15;(GP-4u4~z|8~+ZxIL|@W0B`|5 ztIa{ns6tlE6}T;oe?nwbPrGjXpy2Xv>lE=jn4FpVi%t|EfLJ<i9GN~d3aBj3?Sky4-;Rse7_~$eOS6?41da&~8B6JgIQKO&WvtW&D^_F#Br;5M zY1iAA*y>m}I960x1nYK-o}=(i zy(j6-nVx7V1FPfbk0{D&e%~x)vEHq&qm129u0~#=3Uuu#YA*NR-x@ID7v}yB%kL=B z!qi^H=!;)sCH87P`uW5%&E`%-|NDPyY| z{7QABiNnqo}-wK}44LFAkGR zCYRL$joZ|I1_7xctLt8Zs2=X2N`>Jf*@x{`GO+Tt+R?RSuHg6DQK8Y9Z|JxQJCG->fPwGZ#JU*-^KL1@0=A38zGRDwjq4*oO># z`xpKl54unC!I5Brugx=(L;qfcb{G&>%2LyttTV51GpdC){nrO*K(t!x>9dc^+}cGu zcjZloXYOR@1Sla!XPqedrEo1iP?cF?^DhtUA$uUMJ3R6B1gXdT)@ssXek!YJ3rVa60kHBC z509Rug~BL!F}@cm=g6@nTlqF*Z#NJm)+tH&r&f!ZJ~m4NW)6L52Aqsbj3sDVv|AxX z{N0AQ`_Ggf;%em}KLnb5No8UCJN9iI@O6EX-P-3RWkVlGRl9i9RYTT zr=$6!vQK-ROXiDg^j>L9Ci@LM|GOIa|}c5X~bS|*a^ckSyyNAC{fqLXEGZh#ND zJ#a53y=R2XF7-2XVK;syvPVM1tmM+q9(P+EIi-i3|`%971=~k_p-AI=yOLOUI3>m z#UPz{=sUc#3h7JUGE#N*_^L8i^4yw`E{Nf>^mmfQy)w*n!i;*@H~%vl-cGtyT=n$E zmm`cyKo#N%po-%^B7HbTi05SQsg;Q0lt@CxzUl}WDyj01o>V7^EP_HY(DhP3 zpRh{IwWdjY#hQL$SM6#cnV3%%=V&>MxCQ8*o!yZ9#F|rC^;dp-PyInhcqhSo%$8H1 zJ%T2#{C?fww#`-4ZX>=Ked2XDqb+AmMdenyNGXXlKoFSvr1{ z;l^DwnrQCyPxtgu0)48;50%8xf6Q0^rM# zzTJQ=yNF?BzCz7DDl~yrKng`@Ywh?f`Us)G-o0)@d5^H4pGqtZvMy9|0(ef=cI>x< zoJ0iQc1CuER~){ok50LFGat;N7E&tKka-1m47z68PShMaLqX7)Garmsm6usGt-^Rx zLmZ*hrEOV`1vk$3zCl1GF_2Tt@2;vR+N-URHw|m2Dr(ic_%K5NbasIIQSCk12j?;w z06sb$355(!*>%>B2TZjp)I7Qpb3dxm76_UgWEn7O6rkr!~sR2jYdP0 zE*=-$@@29&qHVV(kis+8XCF_iO`fKMljz`aIZCE#O(Ec+C3#VX2oy)ui&O`k4ywMB zZ^mAug#x&VFLt*q~vdc+Ua-tMhm_KJ~$2uu_iRR4C4R+>W*Kmn`{w zhR9Rjatj=WvG}6$)euI>(_(x^w=CLEUg11f--$svro(%JI} z+PEwBEPuFzFZqiX{%fZ!Bm35$uPSU%s7hevl|cH7BphBOelkpf1{y6ajmbt8NDaBUka0Qxmx@K~8KKG27J zEX+VfR3jUcK*E(cl5;;4RS+wUepD>)rZS1MF}!3*d_9i1eObr!jq0Ls<(>}tJoFoH z8mrOLXfD^)1b8mIqcI&re(bGJ5*ZJpHb&=*a(x=so()fv9}?xKtO&}W0c$E|+RAN*%Ar6j5np#m?m9r|O& z6Ps_6GOJ>Y!!ejBDg`7E;LF{^7w*7b^HRJ-eb!4Qy6)PocG$z(r$6oF7$LwaL7=1l zZ7LmY=FRMk_X9m$VYOwW8MYs}lp$0PKGW}_%%5RLzZ4fR97n#3i7}T|?&{7po6egS)#1hv4pR!CeP;3lQ7}cXxMpcLsNNw*(2?Ip;ri zALiQ+vuDrll2xm#x~tI+zN2D5W*dJDPPusOy5w;#J=wr2Y%4O;`#D~6;aPSvSK=t= z-DKP0;jFhl2H9g_sQ5T&KyCTylqg8FBCo7EvHyy@z)d5!WR|RFc>RC;DKUJ=8z=ZseRGMM5Y#2N_2d= zHRpNG_L!e7S??{v<#0_~n1Yx-oX{y_Z#zWc!;W$ntm5f{?44v~<RPApc0u23sNg(ggfS77Nd_gzU9`6a- zZ?(Rp!*Yq`ur_ye1|N8<9clbsP#*%O8v4mQ$F}@B`%dOTy-DhKR*KMd+z&{90*DQ} zX?1{Wtb8~&`7e7N%<4<*s>tF=y=P;2d*dWJh)1F58oS{kt3KV+)x*;La~Z5;?+v?{ zI^b_8@|QIeUgY4Jc01>kjv`FUN^Tv97O|u|lkwO#m2i>21yt>YQk)gd9<;D0V`jQI z0&m4k>ztxf$kXXDP+16r3seaEXzUq!;zZM`c9^WahQi!L(}VG+g8uh}?sSxC_yShh zl9V3jBrOiJ58>UMC?QFVbcvxP_*#$CyC1ggXBlWawWXsd<+yBSOZLh22Sh0uzNS>c zMd7&z6$&zo1C2l#r7Lsu&hFN2ZG|8hGBU)O_oEs$=2d6$Pic@qtTiA=0M%bmwA)kJhm4pzZcrs%eb_y$ zeQ*X_N#yiFu<9GRm}LveG(LT6i-Qe|+#B6Nu`<<**Z#Ypt>2@wB>V9RSmKE$brFeE zvkV$x6G|Rpc1Yt5r|G#Xy;+_9RdQ_HA(CkQr<;m6|`6-f;`23fR zTvkf!;8qmsj2#k#`dkBYmPS(Z&+5})C-_@S$Qo==HvmcTjeJv5?X~TBx#i?UkR)j8 zY`6!4+(OxFP2a^UC2+{n@=+;VZoIDqQa*aLp&Hh`F*Ow1v@HVIa4;Mzjxo0{$8vFz z8doPRSJe&*zr5R-(}<%&YV~qecW}Yr^MN(!La)YO;5SVvEaynpNzrmb*U7*WT@+#V^W&VvERdC!*>gi~TaL-?fhzw32UtZ;cq$eBCuHx{1toWT9 z|8_MVnE|RA*HCERSYVdSiBd$TaPT-^8&va@C%dLJ77uU~vjiyy7%Sr$x9a{k?zqJAAS9_|;XeCICmKYzp`Kn;>?d4D3+ zxlmi4iq<-B9<`1LG|JI&3AzWnW@?7G^o^OZ_`8F5ngIv6kh3zezOAL7^9@eCZDS~* z@g;W$g_scuDZC4(V=+?x76=h?G9d&hzv&R%2;swv96uYKacL+wM;bn{V{xtwUU6-< zS|kYB%QfkGcs#w$QZX}%#Dvav{s$JNM6TijW>OZM zu5U@weo7w=&zyPtk;+AS98F3bJ-#j8@&p0csuSvH4ZbBUm$RIIPwOE?YB>#Ov4|O) z1dx1!qWIx=FUF&7mzB+&;{k4J5Mhs3_x#m}MNA0Y!8*FynUtvkC-h&DXf(p?O*wn_UC45CVof7y-mZa6p~+dNjj!XwpnR9K zeS6uvxf2!kBKE_2|NRvV6ehI)B+ls051ndYC{MdrsXA8k*POay&ak8JBuS1C{E4?Q zj%DC;TjgQz1HF5DQ}ig49mkDp{hsJdy`Rm>(+v|WRp-nBl`}p40lDu?fO#G=hma8T z2y)Yv?hQGUE5-{^ry@nTKp*x$0HcphS`7|u$w7}^QE)Lb zi%Zk^>BSAw33|}&sk%{ZB=%H2+kLw78@@Nh_@J1kAQ~WD@#WX;VdPI{@K)x*i~$|4`vM-bK_mQ zD*b4WmT>BUML)k>*YhNb zAoTwj{gM{S)=yV2f4eS6M_Z<&I~+tmH%+$W&w2*%s*X89^1*`=QMv!>7zQel0s_s| z%|a1|QVxcll+3@b7M0aNQ`&wfnKF8^2%t)(TG46gB)3=l&HC2bcTJaFS{w_JUc$m; z)EXxpH=x%S!}tp-h}(??A=5C^f;n44j<(;Dp=BNub18>+nKc8G1z`;N7Rn-`4q}w` zkq+xi3Q^WQP{dtMgJbf4qwRxn8tSvP{Y+=_9bfHpJ$Xd;U{wXKKv>q9 zaQAmEKH~pjGB(ifJ!?O84J@{h9m3qYc+jI7H$ExaXp+?sQ~Vuc{ST1m*&XRg;$gb{(8Ww_|79bQ7 zq)|}*wR0lmB~0XGzrM1J;u+CEA~P(dZr|wJk$B_Phg-L z=^(&#%4AHyYy8`;MDFc}4}j%qgFg6lL3`4K48@Bz;yj+xW}Y(6V6wp3wkSNMlexI9 z1;9mdZYe_DTz<$$k|}ZAn-1+?N%3LM8nkU?EV2(w2xg1uC!ogyUA7 zQ(+6}RTUTan(;Fln+Z&+S?X1xG_u-QIL&@zm*8_h5F#QYS4XYa$oG%0r^P~G()1T{ z(0M{xyVOumY(bL=y%yJx|6)BvU1t(J!W92!h~Qx`Lven&x;#%dC9>MwAL`52DzKD{ zsA9{V^C8i;`P_r~9|Q(_C;K0Rp8pzt%l;jYSS*ZHfZJlrF_%=5CqK++D0xKOEH+)& z9U2YaxO}v4K!JmmjCoqNACR>ZngAdQ^iTJy-$r*ejvd2RP0f&5c2~vI8y=e(_}tcZ z^e(S2d|wW$YAoKr9<(wYDH&21-uMHF+7#HNak#*?oNQwR*L~SMyv*L0q34u+T@7Gv z*%Gt<4?}+c-upX4G4X2-PxNSuRK*OrQz2>swbI|gMv$mFfwY@T&{eHlhn4lnWT;os zP1=yovn$4tlul9PZ=wAmJN+_o{QyM9tYT&{!F==#`P9&!N0A|vv6!M=X@5D~*VrsM zJnmK?)_Xc2iKJ|K>O?4edGbl&FGR*+&G%+l8LD0$L}UA6C$gV12A4AQ25QL7u<&&c zt_)iUE7$H!pL0Z`=o=-W?*sZ)sc=>MN)I^^%O8;lC6OzI3Za_)WbRo4`=Hkio}mWev%p!+-tH z_kUO}Cj^?K+hcy@B(_b(PgP=#LYBvlD>ZuV)+7JXG0~j@kQgE!I(WyTlkN`g2O3EjK7)+^6-=kT3wC*?VfU4wu`thl1iyBikY83U z96qVWmypOGTPk1Iws4Iy@U$I)XR&`foc`)pzbY~PX?Ocs1wZ}RM7~cZMxo5T zgDMSLaAiDV*61JpL7i?6|L(1)K_ZhIL7DOGfkF_yaEQX@dlOpG#YeuN{>g!sp5$!k z=IIxPrV8BSzs2y!%^V2+JuM-M*5`ebX@v&NmhyAkCJ5Cdc)wWyf}s+{5<@*%TS;&ohoePQ*JyW!$J`hnbjF0W4o`6 z6D^rA0)U^{ieqdgcM_GNO$|EJcE2u9`s{d2-&=%KL$TS7= z@apL+0@wg6aNhg8(mQ#5e!E_hu!-YGqi*Z`!7$20r_B!TZ}9H`J_q~x%3mfqL@BsB zPS_20w}dTTH8c9^_yA>hPee5T6^HdI46q?C?r7Jb4wYvNG-I}u`v~U0E3j#pCH00- z`b=oMJPmlch?!h@EVpOIhw%oB+xQSg$Kz%qsdqEXB41MOTxetKa7%TiN>*T?HBzD) zQ2}Mebuf&fz2+u?cfEd44yl$Jd(~s`4B9JzK?~z!`50VgO(7Bg?!>Rz_?Y2h$j{zD zle40}qXIp!QU&#K#fXsbZl46}6h&2o;Tc}i)dhjd6QB2hiZMtioMG%o|JW-SYlxXV z2o$6_lZv?@vUMmBRtM%QW-53vyWOj!63~MFbEhnEH}&@eLg52cEsU8F;+e$UTA!Uc zdTjZ%?Sa8rVqq%aWL*=+)%dWYupPR2lvz*J^%|RG8L8y1yr%4YsEV^!WHIf>m4KCH zB?qLJO>aP}RV;RZ}eI`*mg!yQ=yp8tRL}Qd4AE1}lpyrX)e_Nz9NRzwJxUknt zlK*}}0(Ak;@Jzo=50Y;E^x2;E-fQWh6_9Y)_`?D9SH-&d5!l4W&9VjA7t-Yu!W@;$ z$Zm_2qG;^$|8Y7&eQIL+I!L>eN#5UcPTQhbh{?`rs|4wCuk(z-i3m(nK?(=30};!)O!hd%wi*ec|U61Rpq! zft18N)}Qo@Cvy(R9BxPk22yDlac7za(j~H21b*#5jNZ3)jnFtJP;p)3lt`D2h7=t1 zo!(ou0e7NW@r*4dN-^{}Hk(mEC0Y%x!;Zrdl_j`klm@_80&Qc;i0*FH4?X6PcIsD*vqwx2mfa>E%7{uPqLf;*X;of2ELMq9MrgEX4Gma~5mz2F2Y~UXK zR}9_AoIAsLK)12eZwZrJhi4FDC`fMlt>@<#$(;`gjQNaS7oecd>Hcn{7o4xD?0Y4F zRd{pDA*>56LCPO@Tdp)JdY4~uTom*b{(Yu?ns|1l+piZ9pwvepj=GpH-$x3|lhzH* z2FK23(uv=gj zW*b(e;aqkjbR;xw&{h}hlA6>_3f5Kz8q0(R^Y_;^TFV*$i*r;_1RXk%bK?i_gDu%L zpaMFmn&P?wk-In=Kz(4Ku^R_cD?w4&AFN5$~%Q&6=i zs|rOT0?YUCWQp2G zi9F8cbPGxjRAVopm0h&zQM52+E=sl6oE7&C4HgdUZQTd9%8S7*i&k8R40#R8RC`%F z&zHaPQ`9{2DZ>R1Pe_a&z0{14N3^h4{&1HTqUvl1f`kM0D!^$%-iLH4$`Js#-)iJP zSyN;fI#?*52N2;%6g1ynEWqRU#oo6fNIRc05wpeB&70PGm-7|T+W1qn->OKHXg98e zWT$dBQk%&DhslhNAKHQmN?-n&LH~iPDo|edNw}U86F%5+2~Ep#atoGeTF*lI!})PWNeE%(LDxo6#E$kYt`Z=n!}#Gd8DXtSbl_uKvj}!YBZ$D2 z&G`pc{CqQPp9VME?jcu`m||L`4QY6jq);tOQqQF1s#X!!;}iItx(Ld?p_S=U3y0Iy zJ@@%hxz-(EziuH%V=oCGGZeQvCid8&r@R_Fo-7N)PCtVt6(Uq314Np;Jt4Ud`ubo= zY=Jb^P&M7(5U}(S#XLhVZD@Hv+t9XKH2k4WmH~&|ipU$L4Q}nut&Vod2~Ak&-}pes z47D;MnbL1ByU2pev^ir+cC&v&(ISe&su+^A9j_?FmONzwsi4xj_8B7XRy=#@-MVqu zceRkB^O~S(B)ict4COEjct-hC{TyW1(&qT^C)tYQO01^hHHqBMI=_sQu+`0@X~J*ap+-EnLV)zg<*)Pa}zxTqj% z#xuf@-r!WMDB3ZR=s&EsjE2r7iV}TW&aKa4^j`n;>DwRi1Z>Dr?*tkeMT)h!L6Mmc zqYdQNpYZ<^8A@Pup8ZZSQ9RFD)K{Dr*SRn6XoAv`xA1bFF^ZJfny7*jIzws1)xIF4 zeVdYi%>7q5P>BK%{I1(Tp*lQr;6kdGMNY+-rv2gS6e47KciLq`1m zcTC6XN=|bza0&;iR8`zC#te!ghe%N+c%*!yAxVdIs*%J4@gz;i2~z&Yj8UY>+P^ai z>NopaNKG|bX0*~+)h#q6?-JMGksR&sS0wXUnoVDW*~V7tti}0@gDvc&!M!^4uM$;L zmHJIoh&J*@KjGsAmE5#V1R;b5w5&?aA3?J9AcfWXYzqx7Eq;o=GZpHtg6waSEMU#a zX+vqx)U9P`#1hB*gP?cgp$uoe{{gU!x0}zjzTkt;={sSW2P9 zMO}jzAqWyOtBkL?nQ+QX?kgLAnO5Uie0MxZS9}o_kcNsFJ8#0*YT6wQo6plBQ%h>i z1!&cAb&;Kcg%n>z$JbTH6G_xL(|gXVbe-W0RWp*H3CsK zv3|{vKTTEPuMwc*4=sSJw-1Bmxk>}U&pJX7lv?3u zA4bwjIb4?TJX#l|gy!VdK<^|DW8|01rBe_aPZsMqcxVz;HSFYO+$m*7pQVxtHPSnx z0&X$dR#;fLeP_7h;y$BDMq%EVI%n8}ucI=2N0&i2H}yG(?@OZg{^T+zPriSI1!479 zueq@|aCzLKfvX+hImc0ta&GA=U1RIuWRt9_J;&b=IuUnA=ls3H7P1*HP$x%3NHH?| zRfr%Cx#-BY=sHhHd&>EftF1yGKYQVJeOg8XTd}6kV95RUOX?iLm;9PlhLV=V{ilZ+ zs&)FGJrtW}kzPbhl2EU;w@;F#nrl4(CoxFVC-3Z=qkg})^m7f7dJ6Am zagH}up|b3YJXNbRZlV%XbV`VZV$Gb*p6Gvw6NEo_Pqwa)AYrc}8=He>G|`=XK3Hn25b$5t7+3#gzT7s_VTR3HL?0?6SKEh-D&@RMNhBI24!*FSke8foTejWqG}c z1Mx9Q={xXy!WE9{tHF8Fq;(dao|8*OasncEM@-PvSi0U`MHGXjIXqn|X^lHd@#32D z@6*z;ogkLN&8(ePn++@U**}6UGs@PFdF)wCWw+t~)MGx7UezYOXlu2(oC|t$cgVd? zFou9RXf$zuQzG-0h~mF+LB|SpbMleoXOEK_4>uZN<#Ae--zjlJaoVcRJDK6_ge0Gp z;{4bx0kxh-voaAWY|cGLpoUD0=)34y#02Kp4#M$JA)1r==$Bi3h2_Tq7VggCb+nwNkXgEmhnS7^Qm1gg zRtlG3#pbx#17+SYIY|7;^}qj`H-*Pga=XP0hxaRqY`_<)twUE-)q^)S{}5 zQK%LvDd$>l?zL;hLJa)77a|2a5t1}WZ6c_I2k|Os1){KfH)DT{Q!Qgek8WovWN0`Kzt>BKw8h z@{){Vyv^q^y#LI2kYVft5frXQpwZk(XO((QNx-QVIn8lL7r#A-F=8VEM3Kp3cz07V z8P&9yQ5)sM@RkU28>%=WP=;m11atqot^`&Hma9jD7qGuwa_%0OSq{&t&h?{KXtBV( z$nwA=!n}F)tj3%uFL#j~^9k!K7cCu4o!oJ7on^4QZ#rSRj5!>>E67WS6i=7-_^g+K zgTHgeA%Wc1(+6FD{aAHBZNl`+6v3Lc>q|@D*fHBWzTT{)jAI*_aK!X31WM9_XB&1| zCbMROCGL4fkXd+Jo2jXpl4T}?*a)s^cFlEfLn}^0tWE$-e}h&47P-tPs6=Ln{n#MV zRR!^k)DvbT>S;6GX!_c}vG)%SR}W+ViP>p#>jOROtS;coqEV2J&+RbTevHbz`j z<$R}^8qq`K3=${gWyPDlJQb!C$cS2z^0c7*7&MuWnX1ChEM?|&dB?v$&q^uSptL@X z2ag}HP$9L|jBi7RETSWFdhK~Z(4Hnk+TrlDj~^Fs^7Pgwu%txQ8bmR~@4F~>0nLN~ zh-9vA&MRh2u;3=%eSG0pjZOoo9A%4xxj3Zv3Pr1YJgf<(S4H8P#(<`jZ3(tD4v-82 zUx6C(A-TWc>Y-ajo7jErdhamU&bo6+tBo&P+;P;F9CPS! z1Ji&%BnG}zAidARolBg-54y~M$~{#9>}T!5rwCb};g*HtD9vL;M5qpZh}a7Y`1Afm zXb9$X`sh=1H3mYcl@?J?UkC3*A9RM0m?4hjdc1hMU2tmNn-fYUFnly97r9@hnt{K< zT&-I(8f^e4Lg_XW0_pY3wEG8CQR()ZgU`%E5k(^x$2fJUZ@=tvW+-voH4U9vlsO3C z9*L6c#7dN`Vas+ANw`9u0K-2X+5*GmDmBjxQ*)H?ya=%xro}u7HGQJ7T&s>V^z40l zdXgf?qj-Qdn0V$uSvT*dWb1RyFO4BBir|0$dJb(Htf=ju_|? z#h@%b=N_k9iZg{!MqA;beKp*?0Jw8KR(vm+d5?NVNas?-i_8Fu*12$-M!=d6%P6RI_j)MjL}gwjgQ90@A%1BA;P z{D!El7yXEp1`&|5 zLxiNtMgggj`@%JP=y~kEN!)%RdWvJ%S+%+|-Gq=-e0*?tj1vuYbaO+-{V&SpH48P9 z*o}|eIfeG)y)6YS?R`>XDfUO>LVo>91VO}C4*%L zE@hSAc%EyOAvhFV%tCn=<1`r#Vtd{dspSosQPo;}Q~EL+KO?xq7o@b~xit160@wC! z>X2R#x$8bB`~OM~9E1=!o^@_fdU(KyLKGAM5q)9{J<|fUfb`2`Hm4!$tW4JxW!h1Z^`i+HTk7QN9?MZ zIc1%MPSRyuQ0%QyV}!-gZ8;A$a+&6;+*QY6QPJh5y0Was19*9fQRn3F*&SL$mn-Rr z)5x2<0CjeWm=d2#jY82H$^Vcv2ikXpa z%O564EMXls#=`da3y8JaqOB)Xe(nt2EM^ec+Le*{qosar_CE%kW#02_9-HEo3*uRj z?u-4&)b+=RW5ijg>K!DQK{)l2b@kB(YYAh5rQ}+$VmmFY>H9sAyTzlw7{p(%>mc-e z2RYu6AUFWcRjt>~hvU9;MhXcoMN*9)EzZ7cG(;)+3q=I=wMG0K{aF%r&&tQIxXn4W zW$?MHMgCW}`#{X(l^<06qU-imC{Kx~8XkEXm^aQ7j9cC^7y}D^i94y%7z{2*V;NXi z1s2irL7vk(A-)7$ix1F^;j=a(CS!e!O&Jg(ZdcL>%fB6FaI}iW7Z%+q2Fe~<@m%9ah&?-WpRbZP%&8ddZkaJK6W;* zj?n-Pu{Iq{G+At?dB!9Fxd|z}pHx1@4zy4hgDTUNbLppM(^YRAUws`!8}tg z%TT#6026vVBB8jZUI0SWE4C47Hc!))oLE$d`{5;>QAZKVeI2WH5S{_hOqy|hrjBaa z1?{nJ=-rVqj*Qq0?bsmK|IZShe)V(ob2;E>H_22waVrY&sJGF)&Dt*kle|Fz`=K zBewUI<f0%tj|nSUsIoe?6Ph|qDQ95<#CQ~@V|baPB8tz5~8#%fg1 z)b+~5;()bS2Ezv&QqtA_aFv6GFiv&Hh`yXqw-&0E_xCJ;UUEKw@RC#^6{Etv@jjnY6)MUZ;afb49~F6`>34tc;YMliq59*ep}Y=$XDYn}Yi1kx{mFRx%4pPJ;FOM{f2*G!hqO$0CA z_|GIb;N9V;K7ZI2cuK=hKeHy{k+^y?O~e@wuH*-Z_F2zF3L_s{>TD^G+9$FoqThPIXdI(08QT`A*tW;!Y4_)Laf8dzBfTXc?+N3Q&W(V3i$+78&MuHH^8E7AmLOSU|=##&{gur9J|c0GJ;ZBLN%|R+82*9b#cQSp?#<71kFFmpuF>y#aB* ztPgn9x6#;J!*PyQmKZw;79L?krEDD#A?63a07J?AkqTKo`6_T+5&Mb=u!Wol%iB?v zDa+0lrjUq(bxV?BMOd>h)E`c*#990EJPH*S8<_se2y(qcPkgyp+d7%2*jH3E#eg%IW4 z&-PB^^Bs?t_4mAEKVu%x5NT-T#t?%;x!bJ`O}8AHfV=|OLfT$vYkf%@{oQbVLEM>c zCT=*G5>0RtnDJ81bF$b6ytDd0gl>izqUkhL+iOFqA>|N;L{^^BmmGdvl|RnS;md;cOXhI>U5rAakUR%Yk(r z7?*zUC=q3k|4JDZl_wqD#w z>;uU(R+X1g41@iC4tg)Dgw&(BkFoH7NJF2Mq?GGJ(U=#odk@4>D&IfUTZ6E1GG}wsQF%;8c;-0g;8l zX<8|9s$MQTs*LFB({nvgqbXNK7ld=N#GP%OMmdg^)eT6yWC@4p=6}{9*L7J=b(#^y zq7Q3FM*W|IRqrEj>F6)P+a`aQ#JvqMID(@8)Abx+*huN)UJxhsPitCaoD@|#Zd87W z0pQWi*9bV=rW6;3pCD5MkYUCN-><*tcGuMw-MJuX6SvmQ_$j-2+@PcWgJSP$rvg6T zagRBJ;Ddx7%)TV#mkbgg2bKTEb?2BO*6@ZIjuqd^Vu7F%f!W+TD8qn;5 ztr0~;tK0_vykcNvkBB76>W&;$?786*yMY0s>?|F#DWlriJ+*wa`(6NJhVIgN;Slc4 zOw<4cpiB(SwO`bfRxtbg%Wmo}p8?*~f)>Z8JR9uzfvyGj@wufD2mB}o&U&@p;|74` zbG_yMgT+3ZA;EA}dho5Z93ywPnxWe{-^%pI6U#ydOmPc}(mpG(Nd`x-S~b%aCiF5F zWOXwOO^F;kIvC+sV;;Sl2VP3ve2|mQ_(Js{dF1us;v_? zc4@X=;0~=F4=X$wt{d*hEAC?r5gT z@VwwU4iR`Uc)E_38YM4B=U0<~#g#STM%e#mo0v6D?(S^#Il^We%9@@ z<=+%@bI*DT66e2rKcPrzBy0Xhu~kq%g`}J7JHRi8;Vgta(%{%Vn-ca~|^{a^^232e=Agm zv-y|!A;{W?EJqT@r_lh_>~)Mf0gE%`<3zeh3&Vb3FGuP`;?MU<_s2(C{uvq(HX%t| zMYT+Gg@K4HcQ694aaoTZ(>-}N5wM&E=}V0^aTRO|F12%KSan$v`4vBGLNFgk%%TM2 ziQ_Ey4iZj#+VARm;JI!@Le5fxBTrVhZnU*xMRQlI&s}xSy!Gt8N+Nh0T;j|7CFr%G zEPYF;+nQQsEuT@u0+lqBgX)Vz2TN-JP3ic3^eb`65g!cU&>LZ_5!blH0N?AGK?JJ9 zLzt=YRzvk39wGJXr5Up>ARe$;V$XHxkYn6z647zqAqb4l7LGM_%!1eLT;gr9k)= zzxMJFxo97VyFrEjW;Z48spB5~eo&n6pyoJ_@KxanIUPfKe`Ry);}@wfJXeCtPodG? zA_5oKOkQX(AQ0#{nG!GU!YA7E>f%g-d&dV!qU-g(Y8LL>mECbK9OD^Kmc}um?2MMj zb;&2Be$}>(9y?^QkMO$KN%)Q)$qD`S;7ixT83%5i`0riFXtihG$MCG8Z?894t8|z% zSKx4SMBLr-^>OLg*dxNmrP9kLBdCC@X=g?Bf1xOm5W@XTXfH3>+vdR4p>gojlcR3~ zXe{YlUf+(OJ^_qAe-E`NVk_44&-;-qd`7SOoC<_xZ;{%0;xAlD>d8O)#)wAaoA3+@ z$akswTTUpl!-u4=8n;Y+76RcRGtI`D(la?!T`&pZoIY%y1;krmUN+_4hDWQ<36YD5 zy-ra3RWR7rIw}Ouuf?D}VeqN;LTSn?f7Vcc;XGVd@9Z19In&y^0{0MZ>Hl^BijBwT zb#ii0$H_2=C<$CjcC(E2W+87H0~M~14jfU^j6;-Dx5$=%!!*#GqEVm>q;F5PwJO3Y zR^c5~k5eMeqqWGSZfu*$a6sYj|Ee*KxLX%Ip)6X>s0r2XJ1S@lND^r*Tys$1T zyn8uFhx77;Pg~DT_3py=GY8_`DZTbPl>CiHh*iEm!+o=S7Y_0x0=MI=vp>6jt~(v4 zvL6?I>CkMQuRx4LJN)JA`PJh96phAUn7(za{N_k<*2b3MyYYCux0%WNRl4-V`(dMq zvyGv73xaD0u?>{bw@v;-4fy)J@w1Z$Pp@HBga&!35M}GoI>Q+Uz0Z7CFqQF*Q&SQ1 zkC@uM5a3q<)UvWpuh>kpiNrL~>AU+#JF}NT;6PNZO6nJtWd|`y*__z#y8(N#w4;Qw zI6rY*5O?s*M5{ePC#IBmV_}HM*lP?I!3n3(`~CZGwCxBJz3JVmXyy`cf$%j51x zo|?<=1MG(IB1B?KJQ|&qD(N!+Pl-apT&ciTKx_(yvfft85Z;EPcR=?OYfZUJ_ zc33;bp;oidmx&^%XL7KL7iIyA#)g=>uluf1!-<)B#2Xhgm+^!S0jk}umNbz~rj9?u z(=4j}_V}r6Gj_(Kk4k*1u%Y&(iejnb5Fk3m5!3kD#qG@{qY#ekS-er(a6ib3)o9jo z74^8VqTqMm9ZuFygu|m~*{F)7=xFbBaI_4APS^1Gz8z(6dk$>;))0Z{nJKTz;FeA^^4*=!nZK-^+_e@ zn|oy!p9;D{5kpC0L9+$ctotf}3z!y}91k#h_<%#8uZs1WNs{jD?YFBPr##&C&vI2E z$JfDKZ@*It+Osq|)=!)UFs!^k(+`{_D7$S^5f;-YH=b>bku_ z<54%Px!M5d*Ae?mdF1YVmxY&Bv>|sHWep zT1~MWQa^dGc1e3f@qPE$lLYbHY&bexBNrM=enlqYf%BMur)B=&b#Ov{Xly=?3^k~! z;s@xXybUM_xVzflFPU*`h{7QKCxZRfKXC45SsjjB=$e9?54w!qF8+|g2XFzNpTqg;OP!m`2p1=|H_ zJZJgDBW3CmZfpV1YZ->!&b#5DVu>7Emy6QmahC*F-P41pbU>n@kS?6%LlpF`L1Xhq z4TofsV{H%&MJH;?$#pDSTvE_(FS2IfndJ;oOU{qHJ4j4pwz}UKtJ|`cA~~zq4&U8F zur@cr$FV7w)f{yOy13eOp|-WDorf7U)kDs%Iuv1zs@?GEIk}Ph<`eHFQ&;>ld?#Bs z1<6?xcX`zc0XLOYaD2a-16yV<2*E&;p|kdZBV1R%PWcp=DWrEX$-qG~(F zr59+h?p9(5SY6%JyFAVHw)5CM<(XudWoSLhy~}#Lj=RhJ>5aT@B)Zd<%m1r~RTHT9 zHrSL;`|WY`IG)mrWCr%(J0$_F=9JF@2qf?Ogm%3Ka|y|FQVd;?wsu$O#&$?^^_$=O z-0GWZhV$t}D4AHghELY>1|z=9VOze{R)*%B>p_ZH;neG85eTd6itBtw3%pU%-D@U_p)`Y(#?2H@wl329hT!F_VuButKi$qi`nt| zrH2{!^H~?LwGVY|xpAFl4Gl)%d09TZZp>ZaegqBlZHiBQnSDuh{^Nxu_sJ1-(JDT8 zQ%Bv^S=S5sZSTzAFwxh<7FG?KkYlrRr^3;FHFbL0$N7RV4|oXJ`ajuPz&#VU-=% z{EfcgzjV6laqVU(TQ?b+viIhH$wBJYboJQ2?f0roS;WR9^!cSL%72_sm>)0ql!K?o zbJ_05eRa^(?K$nkR37H?oe#Nj1O4(fm-PX!o%LLM^F@q%dzVo9@SD9)5#nV7Pfpbu zmbdBKsSfn+W|-50rmsZS@A0=nMz2@LW?OZqU+#QSyf^;Ej)(O_nVu)!W?e4>jI-hb zH`{l&S#R}yr{2%B-(HnG4tX{fs6D}*I)D#LMpJjrce_m;_w+QLXS)PhhG3d^%PkQT;ze%*Tvdxl z)_dOf2%+A*Q9zd!iOkJeng#CV#!7SxV!R8CP44M&l2zh^95&d#6iRC60(M(bK$ zZym)gZD6f^&_8~p*)P^3INpw%*&5Ts95eB#s^8EsJ zu>IT87sqm+F(=!CpRgMOFS|x!^Xh=N;@`#w)e1VK@Y!PQkloax2Xg)Q;c-MBprZ*!LswBE-1mZ3($ITUzJ7ha3yY-^m+45 zt#8}4#ftmlcuH`y=8G3VeByNpWnfo<6EgD&XcVp-&{nGVd*w_1sm?PuYBgqCzs9BC zDPByJ_l?8xioJRJF+!E{RNf@VbZk%e5HIUl%c0(JLe*=P$RQf!{RJ%afI-MQ*E)e5 zI9>akVnj&n`ucb{#=zZy*mb%Im*k?pDvI?D$p7{@CFSC2*rxYzqh6Td%Hdg@bh*$v z#CMVK<5oG!Tj*&w>$R9>)ut(<+UTIh-UZ*|C__u}xb5v{hSQk#h7|8&^FhO&f>Usr zF1Ws}JNN?K^~@iu?M};rNO!aiyBa8iu z`;CLVv}@bydcsdM=h;}dw5~QAj~Td3=#Wk>)t^FHZUbd{@ej*~G?O$TD_`A=4=WJ4 zsXDIjtE96Y$BU#>exBpIu9Zyl*3e!V5w2Mb;b(lmlgq6+YZ(#{Sl_{HqBB`+dqub# zo~G;bDHW`sljgkDZImZV5{Upj0T7^OVhi+2la5Ag+Cwc$d zrXDX$6kVpVA-MHZlN7kU@JVb*y;)_WBozJ@PYWZa8lcUC5?MQ-(9GgkneG@-ZYw-I zqNEI;Qid#TSiPemC9loMqtF0M>X-0rbEbW>$7@}~9Ye6P$;(mqc9M)nSvH7+ZfTSZ zd#YAz{f>G`n7eNkZ~`-i%&+}5`3l1(_){H}pk+^zLrrAK0~5hb=$BiBVVe6k*!Z+5 zOv#wb)SW2mr1io4Q|16Sr!7HvE?pc~{rSLXqvJ$%?8z^}9XowhSJ+cq8FU&N*u3TA z#!9w{6HnY%M_5OLBT+K94Ot*F%#04LIxaDrA+k}icNZmrcxt?4+JNFG%j{6LE@fQgg zY0oY9_fOT&e>QS9x**_r4uT3gOrsN=ZSv%PbB$*bItydS_)!yDz=R~7->m3GRjAtA zR~+OaJTfp|JdC!rpRMb86(w~nhRao-7oKSZH9HQw2eY)lh2Lm|+_z{)+^ET~^7Iyq z@9$-;=(#KzpP3J)_9{H+zZG)JxVUk&5vZLz<2fLJvU2Rs{FdI z@(o&-6Ob&*a5;H5hJR@RiUFt$dmHYN0(jkT5d6=*GcKzPZcH?)u@ZIzbf9ppRAWrmLKjjaV12$MO z%8PHj@gM)b^o&-Q73aHppWDK^M{WOoS`k3(qQdvvLS9mQ?J)CrCfZBmX}-#*BtzS& z^lBzN58_aX@TL1%RYrUyZS#iXtodom>GFB)i|#GX;vCFM)fn^5@)VaIVn*Goo0>;2 zbF}o&j-Pz9%u5~jl$P0vDc{+*nYCcG*_-*Gf&n+)HaYXm!|y!x@qwtTa#b=zpKU&7V6vrj0S(XRc! z35aS4dnQ{+3GFv?cSs2zW1cRxH(myX{_5C(;s3gplU0?T#>2kMHGg2MJB$RzmI{>j zlefGYG=~{yn*DNsSHyuw1#^~)fCX%ocomjyYsGE4o7#vtv)r8h6*21tdL8}wX$gB> zmDX(1)h$49=tWJ8GeeIk;?@6A^;S`FE?e7Za0pJYAWe_}L4!-<1os4Yg1ghWySuw4 zxVu~9?(WdIyZo%R_c!)AS2eos`W z_;LDUaPCiO{-%NH(I3F>PR|3yC}fW2Vxr5>`dGZh&qN#r0l#CW#ZOw6G-=lU(i^2+ z4d=Y?!EN^#J{^m$W!NO~UULFW*D7pYakAse@-NT68W46Z8Le|p+LWtzKris zuYGo2&boBvA!58d2$3TKNt36R1X7MlcGEZ_Wm|(b0BtotyWurR`wmGTD%JGrk(8 zrLEH%!O5e`bT0@vaqweXALB%|%vA&ch!Jlp$wz1b|G|3?I&?F^JF(ZmLARDIvea-i z$|S+xzmvZ24JH%m> zdWWg&iM06dU+*@gtFLV%tE40 z2=Vv=!7FVKGS=b_*cX6~U3zp$Fws^1^}4m2vFp+DdVm-Z@YC87v6*RS@^kYUura&zaX*i{v_l z0R%Z{W&v!2&sWbpskEFY10>Ob7sUEj(;DlSM!ZILCpaqkES19tvlY%kH&7p=%n{Y=ldJ8_@ZH~Tiw7*9pF(Ms8EsE9$_wt)NUq}L#T%z&1s zI}w@XTR%s8rYB5MF*;C;$kt2g4H@wH;c@;o$)Qw`gmd!~iPYN@M6O`mBSy_`q#1zjY?u}_J$A4t>J$vvyCi*d{pn$5W-0%Mu7iG9mo)vW) zRUCDrcT)pHRNc*VW<(U~@E;WHl<14JN@<)$QHJn425Dt$=~S?yDOVj+6la+~X&NvV z1}X&Ape3d`%sLPftmbnN@jhrPTNaGoj339G<~CAP*YOUAo@!Us+-$Yi2J8UIfY3bC zoA?9g`p!+nFcJ8Yx=&>YDD>Kay&?Ql6Ca3u)Ah;-!wdKtwqG_NsrWy=Nb^f;nq*4i zb8BPae=RnW8Al7pE8|WFWR-vClN=VmZ7favY^jnc%PL96pEop3q2?<;OlQ3>*#7&+ z@LaxLN{xWQT(}(-_mSoe*V|rj3%i4Tny}8mN-W|zOhS%3JDHwr(jgCXP#{;ra}sH3 z4;%-#ImbD#X!s`2-qul|8s}H}y*m-edcjpZY@dVgylw8RBdsab6nE#QX+4zbY8J*Q zckQT^id2i{WCTlAi3Nsaw6s(d1`fAPuU0^ zr-{Bie(BhZQzRAMq}V($p}HQ&*Y`3)q1#T%j=+u>L&2FWFws_x5)4TxE}ayw8q8l* z`$0Hu;-gIBCt(ym-VqLJyTG8<8&GlNSqF97SqA>s_WY+Fem1W@0 zQTD6g88UItJJcVkmq*`zUdGu`>wS$#5-ddhb#UfjvpE@XWK_%ta+(Az1*|dB zn$qqnxWbC*KIGairVd}5G|VnXtzGPt5#e0LI6KJJZWeO1q*R+Tv{-b;R5B7_ptxg` zqPJ6pZ`#p4>o{))xJFISZmevTle8lb!*~T(R@uA|u4Gqgl0?Otljwn=xhD@g_s8l< z-tP0em*s3m-e!vULO?+te8dh%%lR7X@CaM07YAJ2Yng7(S5rt-?yapokU);ssvkBy zoadcs+Zl#)o>csw-i zc)7(x9tH;xuAGY&+#~ScYfG@$9-0!oA8>1YS3%J&fh#-Vl`Q5-KOR6qY5SPc4^%A{}oa{M&PA%1A*;|F#X#_pL%{RK`Es!gYV-SyRG27@IsDrv0% zss=7?kCydA))76O={0q&ze+|eVy^o&szpW+zotR?)bFP_uhboQyT>cq?wnTzxW|)% zPCKi5GI-a-xPC5gvsLv3jWIk+t^-JiOpy`nt^rR$_u8(CZjwQHuqAt?Q(>PhXJjdQ zU5^t8w#o)wvs;z~G)#OFzJ1+{4mZ=DzWI*JZ^#<7)EN`ux_jX3CJanzObbD{Jf-tN zaWg2{><0f$Wr+qdwA731a4}7y%FiQ}uA}$Ieb(^2DBfjWuP*yg*aleYPp{@A-E3A8 z!s1fw#eN-#z9LTZPt()IAN#1d#6YBo*0Mu^gE@3rwgm9qr#{4w}ES!V;=5@o%Q@xCyq8Ee!x>B_%46u zxc%u=gN3W^HdOFg)nQ74Um9;a!xX4vy6^DaDSmQuH;RSA$l*%_a?6PkyKT|p!+r)w zq>|xPn^7Jtz;z)*5))LkdM>($LJ>128mO`HVlV@~D`09o<`C7!E`85bHBjtVL`3YB$+#d`g{{Mk`DHJI8qE(XtWQ6o>miT0~ zco*&W*hyOcj&$-olD2M~=xt4LChU0f%ZrYFzHv6d#PFS~qL0ZNgSAk;eCY=3O>hbT zPxbWKuT|7GQ&~1JFAq$2a8#RsFdOh?UoX?H$#ZHbw!d2utG}#U*^^RU6|ESGSqfe% zV|Y6;Z`N>^LHH|YQwH5vnWHb9rgZ_RkRZKUzVXYeaXuSOiChpF~-Pop0n9-baNcebu1ltcU!JCs%_d; zH+W|zO_hvwDBiqUQ_>pFM}K48-kR=Boge{r@xzxys#69TJQ(8vVA{!^YvpU$NS2Mv?@#99_&UN`(ObGIpnlmN*teF1eYlsqW`c`V% z^}caZYYcFyXQc`Eh9HM*9gCu>kuK zyM5f7CC32G@D~SFJ-6K1Y|E*jEBM3w_G5!#?j4(7OG5$3Cp}q*TNWx7CVq*qlV{*j z!;wF?QMuMDkpc57jmMKj4yl@NuJdy9?YEBS2Mr|m^vN(UM_dclR3v3veD=3R?dGx?hB ztq*!D$LeNeQ1G3U&Li|1i2X6c+@P642j=yU{(c7N^V7ZX<@jA{l`Ow}62D!H;XLn# zEBB*2(KcFt%i#UJApH7n!`+(Oof^WWyF*S8??q%?L_odVM3vLpgVz4KwlhC|PoFck zG5>kZ`{ooE4IEsl@-QbOd1ufx5TJ<^T&MLX zd3Iw>$g2xvDlW!O((4qBmIU>ACMe~|6D1dfQ`2S><7TDDXI9X56`^jc`4D5jT59TF zxW-Swld5i<KvWBu@5y<#bLSaxP}wyDiqd$7S&An_~@1)x{o3BgCeM}QzG{lgvgV z@fWXpBRZ0Nicn{K+K4c>Ldgv#ZdA=-eqtLld^<%0NAGLU9h^~|yNLCQrPTm!t249ee-s75!(s+9EP=m*T2btb4tSky z4!#uHgF(jwAp(@1jZAwUd9bp#jH!~*cWy~H;bn7IKi52}e~mFLAObDGDf5M_utU-5 zL@Y9I8ij_!;YrN$8P&Y`C z^ghhS%=?MWU0Fu6FTWxZzRoIsFELVSG0~w{lrdVpB|XVTgs+CU#^1)lo8eHQI8S96 zkS1*Fy>BiGjtrqzzyy>Na`bR}*X?B2EH_%fSEjESkpj1bGkH;A^Wxu<^ru{nO_`Uy zYq>fC!45#oFZHuywL$Z`ZN$=PMtV@7M6RJJNl)xUZdaWm>YltqW@C-f=_;e=!g&9#_;CyQyHy+zzyW_dU7@0!#{vSjWr<~lOyJclL@0XUElIc|2|Hy7}cmPQ#psN;!u z8r51i3jEahG%`7zh%S}oI`qx80tcj-aoMsy7_;kMqEa!}<_5P$wY%xm&>)7F84QMP z-#)Q+v}^7{wNjnR`-IcRQiVJOvzrwT60ghg@c%7kJ>Af{OFvyD=UFU1{w|f68h^Kj z*W*V~ul(IqkHOjd-D1!SG2~@zmwx^y(aPo_}SEdcxyfJ1h5kL+{(XX<2_^zsS&c*W5{{nl5&fd?8-D>jV9H*?Tvt zS9sl&Ktdf=D720F_F|%<^5Y`1rU9>ztVl`Vai#v_WRz#J=j&A#gx5^lX*!KK7|f-t z>9ppu?{IRYDc0BVWO+jCK10>RR^cMk=ecA*&O2>28p%{-Eve~tRwy3Q{Lj8l$K2rj zUIc+oarNs@KSF~u3GU2s7yOU3lTi4BA8p5@efVr;*ryIgQ%i3ushzVyUJLocv%^2* zXX`|p59Er3kQX-|2o{aP4Uo%G{!^GEL)9E#Y3R-qLJ)-=CkZCCp`z_vcIp-;=@Hee zC8ijk=?k0)Y;df`=Ggjz_H|g6(xsW>7z>#j&a}GW5#AJvU6nLl|NcrH-vdT#HYG*B zT)_g;A~Z)$bj+9j)?{_--?E~9k&W-ktVUX4*6&$xf62bzU-e6?pQkvI&MaW^0E=t1BKpeziF6*Z5JTVqt}~1DfqDI(VIc-^ZQZ z`lQ_+oc{D&JC!s@l~4yUW3#Ld`+5ufcS__EbDhf|#;?NJB z!o%nee!oCzRo66mMt9Ypw~087CXda>FdYD+#pV~6%Iq!{92w^c+^rCvCRx#S|76(W zM-|nOf6}rsF&Sj1xeB+{@FMC+8LRTIgs0L>)|~9BCj~Ye%@?Ggs^s4g&i%f)yR6j) ztM_t>t8h7Yjk}hf2{zv^Zn&zyEXEEU{SDp^66i}yvi|GOvdMYB6GAnRuCcPEyfAo^ z>ae`Ls(lu^A@*2ZQC@A7W!Ih)q zfqtqc%gz1oRZZ6O57W5|ElD}Ay_#z)W?Y*!M+&0vBro?Nkdrg#@z#v5Ma8_vlHfeR z6=&VmHH+-LTh0$6`$s0H!HbNaC=N!a86f5p*q~J=Ip?3;&*vR-QO-MgI|5|m?iHVp zu6y)47kb`bC1bsJ4s{6YeeWEAr!bwn_1tV_$@?c+yoZb3-m{hSf?uO;Xghd1b(?h< z`4lB{*K~&Yj-hdB^3dHM8^5aTuB14>(`}{WPFQH%2ka11bT{XJv;zf4yCBdz?eMJ+ za#I<^&-~7TzZMU_Iv&SGO#_d`@3-(ezHrMG85S)>Y*M%0c|?k<`1Ztl>@ALaGI*+b zU;OHFGaDNt|E=MnvT;)m@)#B2lneP6yb=)1W>GmX_$Wp3uMqY^I3d^YWB7{AGh>vjS2P+GDuh&*(AxO7;GEZt(*ny?@e zbrmb3`y1G5mL%wf$wTxZTE0jq*MR|7*~&#nFvmC{>Rec;>DZr*vBjj6#SB{F;h7_& zHKs{-t)K5tOw{jtIOR8W@txlW2{PI>L0G2EgB++O-%mVP3N%2SqUi@1ah@molO zY;=Xtu=|twzLvgLc}H}M#q+ftTLOS^%g#=Q7CpVVqR^_Lu5VhsQVTJ7Hw$w9Igo@O z^Rw3o%Zq)lzFJBPi*Lw}cW&6wv*1&Z5t3lE+xnem9?-c9$LMUE zCGsHWaTxax8K7+1esrW%;jZSohOC`0cJFaOP9kTVZY#P32Mm6$a^rvAyqku@)BdhF zM@{B7xzB&6wrDqym~XDm>H zzQ6v1($AG^(dxYy{~pNqc`?FhywV2TDX%vq~3FvI?KF{A|@^scD7aKDVB%Kt|r zEqQhQ_l=8*_~SC?DKShDBYL3D%cDw&M^wusJDUx{5@`?-WzZp&?7iaS(tLaD>k(VU zl46wt|N9wLj|9tE9g(VHrTu}kfq<)EwY6B-^q}3C=39vUC z*@a#qII@rBWA1BP-Qk1SJVN6Wjob9SDdU04C*HXU);|h52@$H51 z-sE&5L;Gh?oTB9q9XSt!2BLq$1ryLxfT5=#V9o${H7fTGcAUIv3)W*^uj)5z2D>Fx zQKKmh&mtFT#~HmKH&6Q8KGP-Wu2M2RN1qnSM30D3s|F3Lbj~Z$YVmG$Dbtc=p`HX~ z^XlKT`W_74%>CbkYvHjGXY-Z>_D!}U83z$4`ObeLaFW474--N;?GQP;)!&7k5=xUD zNMGpqNcZIAX~pW+KQRKak~iCWTe_{oMeD^kF5E^A)iZrp6pVIR#ba4d2Po5@GwYL` zCf9uz@JH@TTMxTD%4E17w2L(Hd+Mt*iQM92h(%^f!JntT)c`tF)u8qfljkc`qtMOG zS>Bc9(3c8P+?CFz!1em+$gjWqZmqoSjRQMeQ`Az7HdZ#bpAH-*RpY91GYk^jBzKIc zV`CCFc7wlV30msv>%Orr`>>)5ZFM<((4U)jHpWLpoCse(gn&P$vk%1>UQ&m-Uduf^ z$D#FZ#K|hmV*jaQ!j9;Zr8(STt27_E{S@~1Cf<^B5^btz!-R~Tc)Ja=E%_5KdyLU} zz6AC3R{`9&5AjPfLG$pO%a!KlMlep!qp3Z^PPU)nZ`T+Lq4w#B(mx~ACprI8M%C@^ zfP95FilWT^4NcnJig_TAZjPQes&P)Hq#7pn)^=UM*hPNU9(Q`@jSvrFsH&J`5(pX& z`A5s>!<=<~3Th`l+vKJtzR5=DS**2gUURIdV7gG`6kfY7kukWvX@Qt4)AG?*W5M{8@mA|_b0tlw(scY zgg%2D|I0O*9WUSTKRoNS-|GV@MEiiH<+!?J=spkTR%OcrQjmoEIxWY~#{1dhy&3IG zlEXxqbw;`G>wwL>?knbX+@n8TUwd=j#-eSfk5T?@Yn#M$9n^7^as7VuaPvOt9HH^= z>xe%ma={D)o${;-eu@_GKddiH+D}7Gm3}RCFpjE zq#LEF@2*!;YzVf%cXPHd8u5mnwDzm5rKo9dv00tNEq6ks;wWo+d{ExEU(Adj6zycH ze1}1TBXQykQY?N%ZK}beP;>EJMx~*h?r{aTC1h}m>VZH14D%=H74*ij?$I3t4T%5D z1Wu`vL88;@8ljBxlyFqURCC7Z^==2v%8;4+>S9oznV8y>m=I-`x^6o~$qnoW1Y%`n z^2DPmDKJ#4=J}pvcZQt7hFN-ylc+u6ugk5rP7yzh$)TvYvM2i7ec~O?8ske@KXHkx z=Lv@us2=a4VXQ9=^w}2F@J_8B>KlV~P#3i^T8YCK6R}M2j+l(Jk_4GH*ly_%>Q$98 z2X&3bo1cJ+zEN^;HnTlxu||2pboroX~b{1ZnnK1$#{g)1NFS?&8T=sYz>m zyP4}B`)cB?rtI>0i;?K++?>v5W*kXeHusG{zSAh=e4c}u$(B|dIrAi(rPVgZXHNm2 z7uq>`Nki&eH&mp8-2<9C;xm>@NItq?azON%;p*}Wt0ifKJ6AS07|vdE|B3LfDV>*< z41w!XUI93F$=UTY0_pudW5t`UbySIL$_ua$Qaz)F5w>-PLgyokURc=1F6jwlUw-P? zxb`i*aq!gJw1vsgb}7w?u=>@7`PlZ&Ol43l&4By-LRocr(lfHj=8I{pem2grTG4>9 z7O@&&>ad|x&=E)9tozlQ^$pRg9p$Umb@j-Dfo52nIyKRsxX2&BIgx|rxdAqSb7Gbi z%T5qt*|_tkq8g{lyKaM+&~lf>a?{z5w>`wuXeCZvRc=eRHvrT9S+@c$<+C`aCC`f5 zZ6`PHb`ABmLrK%!8M9iw0*j=)_k5Mg8uL{Y68&KC=dseBx($6~R2c5o!omq~QI7t{ zd93Ebn5@+5^=cas{!y8hmua)bDxB#kj+a!Dwx?CI$;l#Qt8TxL&HN4i@qv?}yCq{T z-*LuA%fO-b#bsX*VPFk!5g4(=E=x9A0q?B~MXDmiTJEY+Z(Gej%gq%q@Uza}pOT8u z^o$iS*n|yD0&ILYR23jIwtjz?4C!WNR7AAyJN3C`IK2y+9T=SCCcD^a&Z~;udb(^b z`tUXzov}4?t{C?8Ke>2a@G8Dkk~^G6f`qi7)f}8}Y~N|Q;VVqQ~8#Bm*?ChIkG~(5LK;UEu&t2BHZ^=Cu|k>kaDfn$pKf}^I=zC=^TMz zrK_KW<{9;wC%^S~Cd)_j(@0-&*oktusA19VZ68Y`8N<}GI!y-8 zBHA$p9k4YbO4G~%>URQs6+LU3Q(^ zv(JrawlcHV3ZgyI`HXytZP`r$Gff>=O4(5x*X!OGFo&jHv+^7K;n+7vWpsC;ja~YW zmY4F?W8m7CK;B8@F@SSTTEQFF1-bL|%MT$uSg3f3<0(%Vy&n@Ix-pK92t@Jj`&HrD z-;_1j(NcF5{LvU<_XH8cwrFi_#Dcjx3?d|UMdnb`851vQn3unVJDGRQ!n%=0)OT`w ziYpuC2+Fj4^Xm@@$0~_zZr_j%Qqe}q%ILO!OaZq`o$Lvet^(}D_xqefg0P=|6{ZQ> z`3vZp3+S3;85!?;^a_7MUHes^)yKauU`DhZ_s;Zn911gjBZSbN!JAE9M#%U*DZ0?Y%3g-n-xW zmAo3IKx+sSvnI=lNz82^Ps?f=mjxACN_E7Gt!X9!ai^LOXNqsIY9T#E`d0u2sRE3P zR)d9uM@m3-k&O+HApvR8P4@fmR*LQZ z1xc=_>qanaxmpe7#X`KzJA?Tt>cKyZu?ZHf@iDXNVP;jcb?-;3iR{+C{pcQr4M2Lv z;~k-dBulYzH;(n^5$qG}+4C-TF!)|M+QV~C&1K#-jQ%Av_+OIgKRbX99=cw$Nu699LjaE+Za@GiEbg8S2V{D@gpkNl$EH zxBBo;HtPfzc+{g~wN&~hj-yk`KprQQa*Z094PRM!?nchL{bK)D>aYh*E9p6>jIZp& zV)SLp@{#8X-Ngg4U%$@(o3%ksQz$crgUUS7sl@UQR&)yHgSq;D4fncmz1-<`pQB;Qf!DehIkLPXZV*ere3`H^Iv-*uIXb!pig=npw88Wn9hy5YMsH5ziQdVJpGKR zKeW6=_S8WH)IYtPZK4W`!ei11gnNp9WGKkiJlkgC$cj`jvSM%{Cf3y8ec|< zCdk+c4Xb18M*>eJow|)VwY+E#c36S0Wr6M2^Q!lv0-`W9XVlpCKNXhng#pSSgUxvG-?pQ$3`-OTci3QhO#R+3ADI zpy9Butb1tztE6`M(MPTKh7+08(4TCb6L3rXzJvWqxcX%K$GU|LcWMMa z0^jp$hGPOeW`rdE7*SC<4N(?BCQcFP0OpvgEr9zmlGDHss19@UHqdY@t2tw1Xybl{ z(Qp#g^LW1`6jRMGY7Jyy(p-y2gy!ZI48?Oln>u#(>)hKT1k#(4M`*#btQZP0s-V?^ z9g^vWa?~+gLNO36v=E&etWIe`1m6mK#0^{NkAVEaKWB?GB-7%e@kKoR$)Ng89Bzx#zlFCB)6 z*wNQvN{oKSm-v7$#GD$)2B!7HOB*NOHOlxRY&_F+8{jV^nc3rC{KZp9F5h5pU*V*WxHbHqqtw_2L^6|XcHvEnOp*_({h z*Y>AXq|chJI1$iLe%cC5{fNVruqn9=@|(W+yMe*p1i2>Zi3*6hAyP=W3XQ(h_~eL) z?|zKo4Qz%VOuoS=lHR=(ADJ~9dpKIHLHln{XG=BTSU_N}-xbMUpQ7=7C2e_c))9Q8?aj>5xXXe_%(lfqQRs^72LG8v;O%;I@XHKFDw z%y1g9!f6C>d>YEgq9#5Q6~Xl;KPnB$;)sQ9eDG+H@fNesE>^?ht|@}BZ*FN=Ie-gK zVWSRDa?=Nr7`(Cot|BtDn=on`8J6XopW+0RmRELLG0YZ;c66YoDI#K1G0-M~7v^$B z7njOE`fP0+2%Oe4=K2ef5GRXnLKSq<1xu_2Ck^SU^1|NhJmvi=SRA!PqKD`R0maK} zt`wxD`EncB~`o=qgEsj2ESkf@|;Mz*FM~)lvoEdqh>gAX``<`m?jidjnN!@ z-)NzC15=R|a3?i3!X)cYfvE)aer9vIeugi{KaIBPuv8|M9Z-1H?l!&!a^C9Mh#DS9 zc8KF_OsSSP@I$QHjU9?@(Dn| zWjyS}c3=Fdhk&qI9vitN-tREqaCBO0IQ*KNCQ~zBYp_^1ZN*UcDb~KSWKljQ(q%x1 z>ujAAR@ASQ$@)*|CPnipC zKoFg6MJsQ{u=+|C^s%n4J|v#zdpye7$rpVc=j_UPlrG{M0}ZPSG$oMH`4=t(g{Kgh zKTaIAQ4@v686_;)#)T&S^#G@=6X%Pp`RM~(3PhZfN0QlT=wYo0p|68E2VZt~82{o< zm%I{F zaz!E{e&AJU9^U%{H#RLt;tP=?;J@5%Uf3mvzhbCp#kawS^>lnCU*syJZ=}&d>V1!I zce^7VA)`+6;ot7*^L1__pDE*Sq!L`pQ}7pSP{(^s9*oRR8ogB-06FSv~#$mnbsd8Jp3`2 zpk)QdPf%&WvPUpBQr6e|tZpD}o~&i26n&E_*sKt>jr2SEKF5Aes$1M6I_%JzHx}j1 zGdo`&9x8Hbe~f7NZDTh(X{-hJyRg+P1GJC3TR@Lq91pIE-|ND9z=>7uB?Hl*nLerf z`(g?ZcppX(Z6a!#U(;x5b^bH;ofLz-aKDS*x9k41+Ww<+Gtdhg?)O;HvgVTe5|c{M zkERNkC%m?imj||LTE+2JZK5q>9I|`N_UFW_dz*lt@}+c6%7Lf%fx+ov@`?rp-VszV zF;}TR-=-r!GS#e2By};-yq#1{&FKFPlqt8)sX4NGn30vK&GLAL^Zqc+_ghrkKeI*@ zb9$XFt*olQx|z3@dTF2jIhKOYrEK`40zpNYP1ek`Oe$L`dxMb={eY2rBy>NDyfChZH3fq zWl^pzF8BULEH!X6;Y5&)*{Se?Hbxd&1eSlvQOz6#Yj`>?STWrQGs>9`2%xd~sUhnu zx4G%z@dG@58YR8NvXD03_=O8Wdc|PL%0IT}#6iOp`EAtl+*Doucr+@`v9n~c4#lJw z_xW3bgR@eFmjB~>(kw%1BWG7)6dqW{i=AgiRkxPq+25p1Vc8|UN)oQsf4k~5w8iU9 z8=ZPD!@)Luq^%|n*iRNM-FjT6`OD10_Y^G4p1<;&t1l~3)`DBKh>EBF`wppSCoRBb zU{%{TsQOGNanPsG(nkTlZ2-Y+3{L*YqsH|qmWRYjXSi78-}Uw1W!4L)r45e@`0tc4 z`Speu-mI9lr2EA^Y|J(l9%QU1@^av;k%_1^n0DsJFl ztmYHnN?E>c(iujYuPn8kS94fR1S%y8-D}#?*IN@J&n=CLUzAr7LF_-g;f*d4zl;a& zE%>fJZIX~Z`hoc|&TV5+_%8G;9BhpL{184oH0306xK+^88OY6I$5??Lf9k%??sYFQ%1f@SXe$uY)cTeUa2T zNU8hAk2BeGStHSQabOXs3d~u11xJNlkkIm^P%1O@>ZW2D)-CD6-Qygg#e^0|wB>6? zTMnv4p^Hv!FC;T=RH9U0b~ckEMU2(dSh*hv6;>l>xlNYV@~%v@KP(N);7M%1_a%cB zrIpg1@JU;sbt^#RA%?1$GmxduqB!Y2M`G`a*_TQWpP@1Sy|WFQ4m(oCAcn-XJ5y7= z{V-|Bb1F3sGhpGrBYv>Z|WqT}(U z2^gjpA(tfU_EmNKM$)w=aUNxUb7h~*;8oxCTTjyv7aECl1o9ow>S5jDJW3U-okC^dHv z>iJaw?Q};<=U4;2h1*k0re?xD-N7+p^)83skw6Cy%jGQvCKQdP{~Y^@5&nTDD-O}!7M=tve(TxP%QiwZq@~4S?#Wxf;-ZoG#9ivCR_nHO`LQSR zOfhaX8$Iis5iJ_i@sEGPh2jE!uidKs1 ztdh3Nn^;0|>ENva*xs$N?k}Ky1?U!%aUxSs?v2eS zh?b#1iB5m86lbb2;m00Rv*hX429EepalURYPKsOKDNSe*B2r5Dmm>GA*=MIy4mLID zZ%^NZF>sae8uWFJtATL%R#07-8&;u%5it;NAjpgK^C9Ua$s;pT5l-?c2eY`AM@iWKgUBO$){Ko7S{a5nH~17}keN7$NTcV|pyclgP1{%F)5 zym_fM&k6E*)%}pKJ6-QKx$CdHbYYNXKPfy zqKfE5(n7Ys$F{PILE+t6E!as_wrnnh%3FJ0Z5a$Ck6Z3E9&GE2tflPj%UcnDa#A}r zt%mRN%$WzL>XO}aPvC&uBklq$dC^3&v-V^Bv_G0;VAyasQE5G<$F|S#2O*4O%w4)1 zZ_jwLPiA8!*AlO$kLY5kE~NUP(bkdxHC`0jjh|*{rHiA+_6OxYPwH6WkyWDSd(93IYKCiTG$fXI#rS8kojA~(OtYWR#$@zN8_j|n z@^@TQsxvH(JdqZL#5){rm6KQ$yDh)w;H=_y zpZR2Mq$v%;g?v~*5Y;LbV`{JK~KV^5XdUwiVf2m9CXW0pF)fB2(8?|pRQ*`v^d zu2FAxZ#`*1&Br`bKGIehL~V3~IYF6pM*NiMO>-UR-_pGMfp&v)CTUp+fLr?9EokT(K{`84 z6h0${o8+gT&X0R4+}-*5JkJB-kxf4jQLw>)B{=&frgVArSsLN*U41>?UYZy$Ql`cC z!%~gUQ8fhmE=7c075BDK>}ijdxgQyf$Ul7j>?_}#Hr!Pnhj(Mri}&0Fy571Rxd<~$ zI{l&e{YYGV7uW>v#K;vJ`vX!w?A3o!S0_i2QrIG6Z~>$2t+Z{`s6_==#%@(Y)jSU&y498@4~V zfe{o#A`CA(9zmYx5jnm^icFg}H6n|pFn@bc?K?dY%H zFzbnEn$VmBCi&j?>j2GDp;2qkgF$$pYBOj5H zgYeHF!w7evp^2`?nKU6iVyEpM;UJNyf4|h5wJQ zw~TA6&H9Cl6$-^lDNw9Hi$idC3KVyDcXzh}#Y>UkTHM{OxI4k!Ef6&5n|WsLxo4jD zob!oaLOvvWuf4AIm$eo++uWrMveGB~3iJCY7dZ9hMwxG=-BsT`W>wuFaZA5R>a}!hJ>)b>Dt;Hg1tk%_|}+=K|jHgq?sj%H`speL!78xg&;uCQGPM;SN*aYM{Vd$w$0(< z&6S`^cfFmMLTHv~tkZKWn{Bk0r4w!{va1DYb54fNxz~Dc=v6Nb`4v}#H+N9;h3O{I zxFl3|w8F6f$*z<~sEp1m?bXg+u0u2&Kxjs?v^SPrMW__Hy;(XqXk46XrEYVZIba;= zTgnDy}(QtSLe##SeH6BHGfq*-rw>?M@~^ zr!1qZzjS^wKPRRhsqkC~mss$kRUAtYDv`AuH{M7zJB4(~iUsKX&OG6_{c-V${j)#RKs`oYsShgd-H@Baw~_)tt~6&^;B$np1kJQhxyKrVZ~%L-X?9qCwjb^(yhXr z68r3}tsGY?2Ls-mi`@yOj&CR*zL7m~xYn#cN{7_iPED7-jp}YNl$0zqzc&*;{qrbg zrfOlUF@?1}h)(+FrOfT2_LK2=1LQu^%i1uyXEMvjVw~aqmhuYr+XiS(c*VCp)sHMu z6Bn6`>zb}*LbHa5t$I9u%aGBheWH~ug9zm|)Cgjc?F?PSb~AmoBhHX>nze~OT@%zY znvLsRcs;PZGH+v2auiM z`r&WQe>z4rK0eJ1FIjsZ)|I)kVarWr5#v-gM#kl2&0eO8*mq2IECtMMVGe%>SH&Nd z!RA3$E}c1f~DGkq&f@~N40cPggX3d>&TYzbcPG8{WNp8D~D zel#YpyUQez_fK9P{yOWy!Mfe#o|uyhPf`IY^6I1Yz46745w)KQN#^VVEBQ%ng3obX zYYQcqA)f)@=H-wy#_>%;_pZwT+ua4LDzZymKY=|v9JKqia;$)j7FhT;@MOZTn0nQ4 zCW}IW=^otEB6x3ml|wxNowV_1GZ1^KB1~_c&(SVWpBi{tr!i@`(OrCv!pYlAXnfDP z^DB_-^Alm+qLK14?Np2m-I?U{e2WzW=i>r7S;w7zWGS0TuGMZ&$tzaA9B-33ImHP_ z;+%$PWj7f;qIVX~@@J6lWPTQ#(j9Q!*g>#}mbK~aCs zCDy#Ncig|-W``{%HGZlxK2xl_Z0$EK2S}I)B1L9aSe(A9TtW?84imZ}9EYCJ440-9 zJpA65tCX4pUt81A>PetI+lHRUkw_T(pUB!CVC z?d2B8@V^+J|NTdv0A5DdI6sfOKV1WH-Uw39-O(Iq#Vk0ujjrxx{L6;I7~R0QwYf?# zWge~I#BWU^&u*@Axq2QQ?0FsRJ({`%%}>5n6C zrJqF$FSqE5{DH>0kuB}BAHSFJj*Qm{tm)lZ~pU- z(*n-O?;hzM6_3ae?HXZJ`w1-}%*+IIbj+G{sdqc5T1%=QUz7;hu>LR#R}97)fU4T( z_^fEvQC3_Kxms%rzi!ZpATYBO?Nw(yKj4ntKP-HjM z+R`PNGTXD8d}7vQOe_8ngc3_R)*rrWl}zLlN^t>G55 zHl7{p>hk?L|I*$=M`C^VVb`;4b9uWu6tyN}umM5uS2V+nuUmxLU&QZ!-yc3=6ee%e zg3-qnYmy8hq)TH^iCl3q-*UTy+?;FZmU0^cQSzr3%8g4Z!mMpT6Q*~W* z5Ff2=RV11H{K}=n9^7znW5oUK{g{zwq*|ej`U1<1!AZj$rdm=k1s6%=TpezztWBL` z&=xQZyl3#)R%rcPy&9`Y7R4k>1G&Ru^I0ess%(MK%ePZkQMZZG?)~E|I5;zJG&?|MI=b?3Xb&jy940}y# z*F%Q-NFxLRDZ2@DrT|A3r0dh!tE);?c+pYb)Oy^E;(>i)1qWap-!2**pgirv&l09X zZX>#CDRg&fr`GoJ*?c1m5I8+!obng|J&jSIPpPcqhg;|Wo#_6}y}yT-=Y$^}HqIPv zTa|ZU&M)7$!cJUdvo65!no3@MBQU!}f(2I@mfrYt`l@_h7WD!7D|D#FylUiF=v1gL z_2y`YgAMEUXXPi~uj}>Ed^N{RE@rfr*|gK8rEPvVdb`FF-Uv z$`x+#+h}V&#{2UYFgSm5i?@>~ecHSAO0N>=k&pvE^Ws=r?`zlXz>!&(o3CA_^&eUE z)Fcb&Z`b4B5Sxtb`rz(mdQP{t?y7$kAOEm-y8a&hyL6*HC?og3&t6XbkBV?7rvGwc7FH`4uIT>p;aXv$OsEO&c0ja zn1__y0%8WngUiZw_5umQqqvZPmPk4Q#Ez?RM*oktm(Pq3%Wcj|t;pip_Y(-BYX8)A zU>Bw$W(kp}8j} z9j8z0^NMQyX32?;V6Hm2`=d5+{`Uc)ve;F4>Ft%HR$D;;FpRK~!by|T^e4A{Hg_qM zD231Ht?_{dILu^8I>N)21k zI@4E+WHQbO@K2%BgC6BBcPZHAYYWRkU->qM$01{BUJo!yw7vHDJOC4Xy5$&(*tX<8 z-6zO>iHF;;bwI)#Q+gdUrR*=GFT`X#z zU>r-<>bLKY_7cW-CIzU!4k7>j9?gq_6wHx=E%Thx&-~4c2%h>f3`vk{-rMCjktcG4 zlcFN~g$(GNlAE<__Vf-BMcbltRLf+cWk;{XHutnqX&J|%0<$?q3HmQMbo@12pYq_0 zPW;xm|4wvu)ipPJ7OuN6Z}8mvAOE?chMu`a{V5 zj5pgr^&n~(T=MLd9SZH3=RFi$%Y2+LAd%^zgeV<-4V8YQvhC_uX zcn)wm#Lm*n>cqqzvP1ecOg^tVNc+-%dAAjjZd(XFlTd%|BES;X#mru$v}(adwMAR% zNZl!_`zIFMxX0Q^BkveVxSSL90YeK6kTNhZu83W;U#WPjtMmO~A~D8a7aMc;m(N(m z@W-qxjUOFoOt@;4AcELcj$V#6C1$LRXZ@Z1rp~?`~uuR*B}4cy~pMPw}BLwi#v$vMAeDT zKO%gif8ZYdEiD+N{Mhm|>HoX>8@|qid<+-4uVN*`tgu)_AHUPgSScZU$%p|^nS^vs zVByvR|52ftPr;vC7Qspc4KI4c#4QpS;jl{Z zpRp*8=yz90Bp7X%C?ESK@Sf36Mkp!uue-Ma+n#;-!iyoo-uXY5Zs5Dn=**U-ezi!O zy`n#UD;GY82OX>+`HJWkto5LUeeuJWoiolYABMk4;c%MozE;t}A_&8){ubDjDYUSt zy=E!qaQqcaXQ*KOEmA>UhofI8EGAAH<`ei3SmBYNg182GqS;HdAaZm0Ig$-B^!CMj zn8D1RMt|6 zegC0#F4@iKatNn*zXHlc_|TnODwR`My+2v(!}Zg5^>B9s$Oo~9-?782fMU>x z%zpDNRQDhY%|M^dhgbHz#b24vI{l@J-0so4#dA<^T!!*@ZupP0_`ly2Hz*qsx0`_2 zlBuGs&>)IuHMNg*{0UGG!WTt@D?~99tBMp-U)j92LF|0*5ivkSsgEH^lyvvCND?f_ z&F@kb`Oux+$FJ97J>o-#>}!+D?)rHX?Gdqar!NrRo^MSdlRB>sse)xNgb_LSw`yG# zPu)bbnHlBjP9E{W=fW;EG&{%jRL;e%Co}9`G$l3zJLPFQhQDng|F;XCj9rvCOAtMb z2j7SjXpQ25{)yPYDVZin8o8w>vb7BZ*WshPx8eYYhy-@q76#+9iv%!8X}He2rD=jL zNc7;ASW87qAhbRwT*qfi4zM_U>j8yLr{@Hv5*Wf+L zx|UZYT>RgD#y`wgyx+UnVY=j8l!7{9A?Jn^e;ql9?#6YZpl5z{lKDq%L}ZK&Ajb9OtR$Z!$wF?}^=i{;FzY}wz{CbvxTI#};7!IcYOdA}CelX99IwXE^&px)6 zo{wQ2sZ*u9qS9k`2%>w>^KjQl$|yM7(KrriJ^1ec`d_cQwna8R!s}^+3O~gMs}ekt zpC<}eq8RlBk$98bNK{4g=AgXBUL$Av0EUpi-+2|srAggpLB@1sEIH-m7nS2A^~4Ae zT&rT>mZOWszWep;R|wm7i&h@If_3oBo2T2+8rcPeAh*;W3q=M~&04!34e-4~iL4@d z_|cSuQy`OAUjDD-t46+28AUi*13K_NiPU$j;VY~xxK(`w6Y9Cvv^_(6cC&~sbyco$%?-3JAb9N;iK0k-r#n)^n zp<-W97l)9~&bEZ3gw@Yuc;`2!bgf6=0{L1~D^64EY)=23TuLQ2xP9q-!_Q8xo@sj{lnk9(*HjJ%UQcD>jiATP=-!|(dnq}Tzqa~vgZ#m{m6VtCP9N~FvuZ3h?hmDM>xFN0ionZo|u(E|DJ2X&yk_JJU z2HR5VDuFkfp70S{C}OGJWcXG=9n&mjS(x#}Y%=op`vn1;DhGiNvA@OmFP853w%<C44D z=x&2)jj^@Ji*^FyT`~suXh_?sWT49Vg;c}J^ZQNt-J<-Yi{b^)_cYHkb+d{zJE-V2`UzuPZX)N=%-uhq8wM_hr2x za|i*S8#!9j2Z-T^b&cl;VB~-$7m+(W(^H(KxOf)?mJ{SxSR-u=BGKuto1Or5l zp}KD#;&-SvU2NM>$lFGwfx~YzPSXv5l09I%^iU0NT1!tGNQ=INYV`f}jW@KgJQUZX zI*&twcU$G;k_1a62uNZ8QV*9gv@fpwYd_t+eAlEwcdcpG!i7;V#`phpOaA9gJ{rUd zrj5jlFCyQnP46OFbAB+I{yfe`P7DGo2xsFU_iM0Ip!Di0BetH=_*d>y9N@;$+H?Vv zL?+zUt;0VPe-m-TxIT7yq67HjUh(kF8W9Oo2kEr=M;fH#KaN+BoJY*@6%|H*NPzXY z_^?q3m}W~8JbWW?`9@qeLr&%%3p?@MOtf1D%4wFJDAbkyiW?nPcz@yUGVm1ekWkOD z<}m>(t>{Nw{HWjg=mJFwqZ$D#JDhy+^`HO0FfacKKR#4=^^fP|MYUi?0CL3pUI?+8 z))jej0wEb0yb%VIC22S59}(tQkXO5L-Su<;}yv z72~W1idRK`Qtzy__6}30pWXDda~5d-VL*KL^_4Y7&{#KMeK((ji|KVGG*31IfDY3? zVXlSHu7k~3vtNdV4I&$ipU$IiF_SPs6c{haNbPH)v8*e0qz^SSyZqO3l^{X?rbnhu zj^clvC;!f>O$aC}y>#mX+_Anyr|b8ZTrPXXjdK}S-25YJrY7e6iGrkowGIOMR-H$@2u_fzKi&@ZQO^fbcgd7V-yB8a`>}B}?hOqgh+%HS(lK^m731B%UJyZ9S?!}phA@W~cH~)Oc#si_ zZVP+EWN^z_`kPt5WevnuatATjI%)(>M&3cB4Bqw{J@#LX5f$|;umEGCzSmwtres$uP4vY2dTQA?oWlW$w zp8da*&%Xk=OIE_*w!{tSG_!=ypfMq}KfSBv!Cf(8aCyges zWJIrgh#zsb`?3%5;d}jbaX@m%<gl6X?7RBwG#U&?frtvFQtavIww$Wa^yDLZvjqlR~XS-kVQU~!QqV2q*Y@5JuL-G zQC%oeQ-(WQVWT_6!V#He7GAeuismmI9yJ2g-Tp}`5H&3nK3SB<-(Fh-G}+e#UWK5- zgW6TUP`i`oWmGTUR1*8U#M^$|HSG>sy#Mup%hSOdzvgthQSC$DwY2>c;#aN2A#Vt< z0ioNqE~ApS&ft+w`r3laY{#=MpX55RHq%C`B9RkpN8FoNw!{VUZhmE-)Pneu=MA_* zNXN%be>a@2y88N)qBck7yI?m3k;ny?=%WX!-rV{Tf(@gEY6aui>7Q zk-io$2vM%v#(`$XUKS`fJ~!#rk%h_36yLgv>Cr&V(gO6izJ6tV91TuhGjE<2*{~zW z0ur5EZ+7}poBUkDRnZ#?GgKw*ysX@%YQ3>?GcD1Ea@OZJzG?2yDi2oDCUd~S+F(2r zyxH1>6i<-S1J0nR-p%9S3Gco`h(uPfGiHyh#g6jMHle@^fbnI>{&|cpb`6@bW(h6z z-;GqOqy6tQjgJRDvt)P0jvY9XLP#Wk6n{A`Lpm=vY~E5zwO`9E!7tbz(Ez@`YjWuK zcDbOqbLE||1O2oN<8|e`r@5K68l-^Lr;O&d(yWR+Oz1{NjTE(W)ykO@>X5N-(!O;* zZxbn2VZ#e0xUbDxU>lgdhy8dKD=<0kAJb5ayA%eh{}u6mOs(N{wGT|{x%)lYRCYM0Ft(nb6= z`&Qc2YmLid2jx$^SpK5M@>;SD-`SL{Pqw~jfrrE754vi~y4-q>i1l}C%p7w+ssf86 ztmOT8*V*2!o#4f1ou27>zF>-*2`pyTox_mj}_2)s|{!lZYBBgjXW zW9yG&BbbjHn5hr2(K^}!SE2%U@Ixhx|Ap8*un?X4r~$g(i&82}g6+%pB5go(!ARCa zW)RWkK=e>zc|wY3_Soe_k@biM>vpCO^?IReSTnP3uQzvVj&G#rr)uM7V_!<~A15gK z4l<_}=}3j6w+!;oo3YjH%Drl=#^+lZw0Oge*AJ-;%I~Jrj5&af`=NdA zR}tq-+ISQ=avuJff(wVod^y>r+yh}cDQiUn61gR)fvv$^>_~07%M!@rZ~?F852h&= zkfH&hWs!g%D3NibffZ#0G{}(03QX`MI;U`@q?8%K*ArdLfE>=otC4Nxcka_RyK*5e z6WW0KDXt|Ju7+Jj%UyDSNV)I z`iwyCLH>`B+O=zQ2K{GT{p!bBFsy7iep&}VC1FB0F!lVd2K-#0(}1U%T?xM{32)th zV#t3r5;d)&)V(o~Pq=vDFhy;0S8EO}JPhPA1@SRv=%>N!ZRb{b(=4EWFQ~n$Z!Xv= z7Xc-VHttJHAJAFi=B}_Fjz?5($NeD`V8dl zCE4JYslfe%qLVDxb!iaPYr=gM=A`1fS`2C_5J5?AzGY#)8Q(~LApJJFuX;mv%T#&X z#dN|PB9Y6fe8N4&1ZS7%%&xgMSFDW)YxTlOgG>^Bmgi@}$JSaxg67vr;U1#kJ z1}_EsjnAmN!YmTP0g<2WrC3NCzaNiRh_2$6U|RabBh4Jv5g59jL>IR#iP4vxN}bSG!>{ zdO@_n-SvaqXNvb%_ru-~6Kl6hpH7ZpF{bajQwkM1A;Y>Wsk}ehO|10jgD{g`wh$k> zdt8?SE4{ZtjFo%gpY? zvPsew(9RU;SIw^p8K;gH8 zoVHVb$;WRQ$;KSe2^2;4D*#&>%So(SU|vrK%kKvWF*BwUr+-@WqI|>2WozqrIji=( zvX^Alw`fhMH!@g{K8_1Ppxbwjrc~a>U#Pg3CF#73sXpeyFdP^V-4Bbh8wZ}m&ona; z-(Fpes&s5EE8fd2EwNAM5UxSnP&4`D-{!*l2yC9-OkZt&&51$x0w9{|vX#4qbghbQ zES;UB4pMaRLnu^s)4iCcZmOp)aK){x^$|lh2x-z43F^o^)$HawcHe+gnQ3tojJ`S| z`j50RM7sW3nbn(bjZThWzB--e6+_RJZD=2WJNHgFg_V1KPD3By1BJk~r#k!J_eFl$ z`!G65K8UFyoF;hLBA@j{bA6db9{4(H6Q92TYZy*oww0PFdYd0DgIIg${;>(g&KcN8 z#ff*}wLOxlb9~tszR?U*^{EFf{X#8S52Znh-7ef$< zD{4{7k;@wx5<*`^x*-6N(A#?)e)P{{<#p|WWZgVGkL;Gd%&XI{-$nbI??ScL?&o(w zk4yTEkCT`$Rfo4{tJ;1b@FVfae&;5j`7tT$acFnK=f<4(MGt(fH!_mx>js_fgmUUW z&yijUk67zJEbXSj<}2;8z8uTz3moMM&IdBl>R+aU=t-{?I~}2aIv>UM%60z}6*uAq zHhGNsW`(hIn#5%ZLNeFGBYlvKcX$rp5lGAC&T}QUMsWDMEJF42qELL%40To-Q{vwg z?N@zcAswrc&XI%M{j#lZQT66rG7s+NGeiKNDBKacg<-OWIf{q+A7@r$;DsUQ*e?v$ z+@;Trzr3Hnv_D2+#b3If=0ak8L=oUfs7}K7x*#0m^v=Uwib5LTNBvz^**nVMp_RB8 zzrG;LLXCQ6aQvXKVge#MRs#M+*pUBIZCyGn)$W?Mpxpfu*Yc^L|J@^ItNmWTquTh( z$yPcJpe-j76%jCWK+PcI1w!C7~Zj>qQCtHg(Z*S?V%R`$C7fZQA zZim8zW<3Nq*%Io1g7Tx$C7p77)jfbUNu^3;=XY4i6MoU}bzU8A>z^Lf(E17gR={Q( z*LW!$eFpg7HGtmJOub)tVqh3vdgui9rU41CHy}vS_uJtBGZ*CjH(5O#PRwVfm{u(( zytY-e%X{}xjHi)i5>IJw>x#OfD~3esVJ*HW@cw!*fI9E_^cq&X5a-glPQcs6j#1OQ;2q5D2PNV-*SBR5SzH3C*7=Oq-ST2L|$Rik76D_}33 zj~oPekLr~lvlsDM+>XLeG~)DIVCzMJWFYVRtcSYqW^!ryGS+-FH~}0t#ANg*Wgr@cMgk(`{2|v6;e9Nt?P6B}a40j*r%=^19?uun?6NkCb!!P}-`NS;fjz&0G~Q z@2S@UJ$(6Vrw>QyhUZ(`gcKJ~*FH@Yop*uIlYMJ`Mw4a@axS)2fi=h(&gmA7Y!rz& zBb#`Z&^AFDt(PqmG5}BNLpLyC>@6N(+c_64H8|eb7sG|DCk(Cfu2218Oc8X*JKyxA zcRGk}-%NKR6j&24nn=H_mG{|c!LIIoSshjr8H!KOQ}Axj^^cy;0^XK2Mnx71_Gbmp9i}2mnY!F-IZXA52WyM zd>0md-a!4kCHr4xd?8cu&1wS-!I2UpAa2zI~(KESX+v5Am^I2ZB+X< z*`F-V91(uE7IBii-DqYYDW$ohB~hac`VW6CAW9U zHBgzKabQ5v)l+W=x}~zV^lUP)yZFg7g&@i2+p^sl{s6b7?4O!VfvTMtOC?3n%1p|V+V$Z%Pk3hDli{B17ZdH2D`hexG2vT!rP?Dw6XHLoV0z#zR& zs|nm;|4&Px_9GXlN1s|p@UzNtK9+}`yNT}-_{n#~|7HJ0XWyTyJ^0xBrLR+`W1F|5 zr*8dDvD0w>V;*Z(T(iGVn@WhpvbzjJ6yrZ> zo&HX6@8KKY1SSJL&x)Z0Xm`(8K2xpVw|pm4LDgLuf%s;go;1hM6^$}ElY2e@Wfi%! zMEnK)l&6KHJ&&{BU=*8cHvLDz; z2R{LIX>L}G$D|G-gtQc(uMH;0OxUK!OILxst{UDH=Vq-&J-2soCnlYStJlf=CMV7% z^7ks@jtgl@jmo1ob~sI(RFXJU4vGPhnw|bfQm;gx_mnkHlA-~wnYZmqPY~4VjuHNa+BLTE+Q?IGpH_R zO=h_sCtSX#R8%$_=p=`=y`u&4k4UN`2)WEH3>f@*6?}?s!H3n*o$rV~P!O}i+bmA{ zy5RAhqo2Gy*e!90&&+6p*m6E}%Cpx(Db6M9By91u{Rd|Q^u6fpaLL-F3TIA=jyro* zgxdLJ-8lS2=$S2{XxXfe3GHHQ0*kH$mU3Y`P(=NBq3S2>dRdejk)2zhIE+u3KiOF1 zcO>5+%>+`tmpDZ#z`(DMWEhue@N<*%?J_TaP&-d%c8@;$Xd`@^E$sgGnW!@NeUNA1 ziT=sKc!e=w{MbsIct3&eBebvnJn*tdLni>cE#7U}lH=!$E|Jk=;xwVA!Q67eKGxveJrDtL<3lJ4gyg*LhOHP3Q z3+ZF^WXqlR}ukcka*lfgxY?AJu{K&>i{tJC_=t z<3_(@2><#ee=ElOfAD4h*4CCoUjcJvhI}MHUUE+CV?g1|5L@{;uOAb*^|W<>lQ*=W zOO=VkHdduknuj^N#z1~l;|_e)?xD4o<)E?jTb%^2qh$S1++%Xy<00B6BfAkyK)nK3 z%xkshH56dk4!h*h>C^ULabaB^Zg;GcjzQyMuC1MJWgy+z5o#JnLp?{=_o(VV zJHMSQBKR-Ihkh-qbu>%Xm}+)i1lKEeqRZP;&PF0XWNE7p1@m(d2ri}#Y(Mp2YHx~W z6`v^N{WdjhH`J~Jq^o7Vyon?^M?`+9^}{|@g?Hu^M2TqF?yC;63;o_~NGuhljx5z= zRz9&?#?(+kfi+US??y8wZz3*r5&Wr4#_(3?Nm(!{<~ic@ZXvcVRL~NIFkUxeEp=ji zqHRHvzntYByPL7SHIj5=8&^))#n2mMdlbC)}Fj%zJU~1lH z(5GN%epr(aKwLI1#@bCnMv7prZm+EI8WIX^Yl0*qgQAZ+4%73+;Jk4-d_t0_F7z_DRlEaLmPom>Fc&OF3e za%wjl-|@h!+xU9~ zwq4EN>ZOQ*=Gl5$r}jX7gmWHs(GsqIp;+isQ^P@GsprcFb7$B2%*C2hh5?)-PQm*FFE4HwG%zVN+GnPlI6; zo|O4MyjaubQb+kK0@etd3TMjF5T1>%UDB5zfmmB-r4b7}m^;VB!8~ohmWx;_t=WR^ zREDrULl(On;ve60o#=~%`omPnxzse+lg)h=S`0vBOO~b**!q*iu*8VkO{HW`vuEa0 z1RIx9k3+g7mlDeVJS70@Z$M5n9s_A27_7-0NP$!?L{Hl76o6dRX zW7bMDG}3|@MwmpuP2$tGN{dlDD&q2NnA2TcwPUG zPN1(F_A9(P9rF6;{=2wTBl7$EHfg8soj#g=9hpPVG+w=%+O@Sd9wiAO`HEhRg8$q)6B||i>YQVqnMf+`#tHiq)1(DRV2r9Pt$YG5@R?ibS$wH zUxv7K$Dxzq=+kpleq3u-eaw47J8g`{N;Ag+(mS?at|RdfatbXiJ2tT7@h;+}+Ri8# zw>a;ncH$zbD$k3!kXqj>3>v_fJcP>m?5y9P>fpb9rTy^J0`W5<{88KaOe-SRh6F{s!%;ls)_S!nKTCFO zgPpG9kLZ!i2n9+oztyvWrdC%NqU;V-nd~%ql#!FwjBGj~|9jg@Ij0|cH&7ar%PLCT zy{J2Dw9-|r7|TNgaRvADNdnH8Z{Rc56FH+%u6!$iHDIAi+`OAtT7IpK zhaqI=wXMW^|IwWPDN2ID!Ehwm<&Rk6aOQh9{hr&sH}FeFfOgsk__0}Wdp=>Q@qPtK zG6!kwJ2j+e!5!PM5&an$6F)U&Mv2(A-jX5@b}+|{2J5ah4Wu~zZGvN zRmmUavE{{IqJ-YvIwX#&O;HcMG42vdB~={K4!^bLC#I`oTPbt66GOXMKF0k){k#+ye!5w~0+22UlFBo5>BX;i&ha#qlJj zR3CMwZgYd3XnseR;`lb5|9D2##u~ zr4z++p>O7ED?3hXqt}Z`#mX_#I+wJ0*6TikzDH3!SLDS0C>lf`@5{+?Td zf)zHP`8r|pD&ds6q7{!%OC4(KC|=zokp;5-$nbJyg&~6513Nimfw>z=I%&MxP2g19 zC3eq^hTRn&mwlZ@MoH8pv%ZvU_lUv+x{SIK_7O%|UgKh(H1-TvDb9HoDpRznO*m-;8@Y)pJR(jHFh?-(1IUBXzlOsrgZs7T= zS*gdNG8h(tq5;EI``xpP^wOh#9(Z2A^DJw}i(>BaqtawJ!-Y2H92f7Bmy8vFA6}ba z4zt)(^aJ$iPw=P3F5Ct&^U&@6DVKDs{-tJ+RL$4?A*n zGV@r3*Dv%lE2SPnBq5yY^z$ZtY(%4F(Dqt0{H88R_A1kI9{joL#RiWw%y(M$yrz8f z^Df^zSNc9a@t5@W0G@ki^i!p!zci^fa;W8tY`A?o5As^367;X~Y0Qj#3Co;`^z+`2 zylIag*1s8^*^NEKRnkA7E`YcRDU|;QV1jv`Jch9hC8^uKRhpBF>ApH4 z(ahb!2Wti|+{vhv`u43dwmR!h^oq0cLKX6&P%EU{4SVvdBP<5;JL!wC&I4(HW_&+nQh1{U|7c=w3BV|eS5`iC$^a{v|>lye7837 zCF;uS$sc?07JO==O;p6kAGpj1rSPH~H+m;eG*buj%#bit`;HF71NYB%L0Iy=G)>=&#k`GlaPrHv2jNc5 zg6^C0u{njw&r}1pdO#NZ1m8zhfhX&o$tj=nkT(K#-E|K}ouehXUNghx3&pJVGq_$? zUvdLrJZG=lcf1h(33<0F?AE)bbV=vL5Ad-#aB?bg%o$dmdiU*`h{oK4+<5$h-xX^V zRm|$^S^XvsKNd3img{O!yOQXZZ-+E!QtkWuCCd!r>Hmns2?^+x-OW4t9gJq?UvZ9A5pbjJFr}19)>6)&OnvaWzBxqmWz~mq;7+HTy$K^J` ze{^G{$UyfuFo(rilK>*0|D~LOhg|La?UM}a}baOz=p8xT!$Nf_{fb1 zQ4GQl0tfKE|KgnO(}okH;^)w1k%d|E?x~OYdj&&jVt&fnb9jluGxrzKv z>^vNm{H0xaChPjkhY53HQDlTz5k`_W55>qBrfWXS`ZUCMe zZWq~k$nst+TSTy&r@1i}tD>ce%27(cz+)Izunu9xPYJ9K?@sp33D2#TSh`tipw;3s zqQP(4Kd(&?I8(Zwrv(XolhS6|T*&GFxj)jc5!fC}b5#XOHDG{=I3&1m+r)o^XL*H} z*!%-#(sVA7i~&cfa6eGe4{}GtBibv5tZ$zD3>0+L(0bgn`;`czDoFz?XN=Kawi_8o zfYb-qXWnba*J=6<^x$HGS*io(0JT2@~mt zWu_m@5qja-J}PK-GamI0w#>BcwgL9NXG027N+;}6QmrDd$@XP_a8rnD*?r+FNFDt$ zMPkV%BdJ{&mgRwsOQ))6As)Kc-NW*n>sE^a0#z0D%a_VLBpm}X#1FZcxg7MiN zFJlGS@yui+YWDi*Z*v}cQznZ!zocZTJM_lZh=B>6+N7t3h(kxH@1w6_*G)4X$;9Ei(?&p-~)7S@g2JG(wxgJ z%DNY<8K%wJ@`zk>p?pIvRrqFH_9mKcv7S=+UzKdXOK=xL(%BuCa+bBF3uqgE)G!oh zvMn+R3nABGrs{8Zp%DcCO8tER;unD43Xop@SlyKbp#+x$fPEj9k zFIy5{DUIs$_yALeha&`&$)jt{ND$SpiW(#_RT8QzGjM8b({_v4!d}y1x>+edhIF3u zWPdi_UNyU8cqya1AtUwT!iDe3O+p=L+{ zY3Uvsq`QZb&Y_3y9=e-%e4g{1bN<)+X|9JPP6;7(b4aw;ua-zf^5FcdW}z7EZTz=U5X1YGV$CREq@zY72pRRhf6; zg!{GLytC_!CBRFD^AEXQ*+}v>a-|)}t)Ox1bp621k?Xf{>Nr1907E#gdsi>_3fgW) zMpcZmZFVSV9Gz}e2sk$+-p_dKX4A}pT9)i(1+kmc#-pADfDAM8dX5!CH7d^L%+)g| zU#&K^us;_fCI4nm5n%toZB5t1*Cy&<&w!*+jJnhLgKHAcZEvemrAqg6Jzs>lKtFF; zzJF@J;!8=;xc_j-m0B)4iNc1tiEYy9b@r#JaWCm48WCW3H~p4<>cAcEEcx}otmTW= zPomR0GvySJ-x9MGeVnQmh(nFyD5b0%`{$g9X<{6P;J!~H}l=60f)LgWVHuOU4}*oVRV@&4S>$ zz$o-|h@HS``;v3}q%GlfEX|iJ0i&U3HHnPbV2B-uu?3yRFv(B)x8r^ zZTAYXM?2!k>GiJ4`{SGg)*06r8Gc|0w~0RqpS(djRO79IxYPR&{#++9!zlVr$G-!@ zl$gzdQDpd>!1074A*Vo@FL@ICem5BQksO#!%&WH76Rea0p!k$zdaQflgihauCl`}LuWg5|w zI$YI6zmL-#46Ds!Z>yatnKBAw8G+7Q`)jh_{FG@Le!1W@dekqtH%~D`?nQU_$t+lw z6`B0D+uvCIyUltpk6L5a*HPq{4|!~L@nO$M#V}j2z8aLG4;L$xoPSNe8g0sdYL&$4 zCI2C=0kP`mJ0$80HAaEzb>;VG@5h~-MdDPigh*v@jpPEkL~$nouh)bDv2|e4~oJW%UAj+@9tqYilS` zQG5NnE#C-a(iW?bc@`9UhH!20iSD65TXi*(ZC0%!yNOe>r6(A*avy zVMqGMX|EOMVAX4(9Qh=QoFE;Z^XojsE-sx{ZfB8xSNnDMyi7YD)?(jyCw08gwZCc-KtB-};7LpYuh|pt$14%thfz%6@d=C9 z)#1Vkp4ut+1p;Flapw)lLWipRp_PrM?%?b+@b0k(LTz@Qbdi0~=Kx*HUKzZeMq`6;U854N-gDB6vb???h3|O;|!4Py*4!Ja;?mvv=afOzKSCCt~4l(m@Ox} zYr3roL^1vH$*X%o#}O+%Wr?>}lSo7#>a(U^C3b6{v6UwaJ>X@xl&~H8EYPTzyoLkW zZb!S71T9;uQ-gOj$H(=4+pYaX|JuG4hR3LWiSRsS2rb+KX;c9CYz-4JI>6nf*Z_K| zA+U`U`*Amx`*@n)e#Qn7ZMVAKvCy0C6G;)FsabgN;eisVC=0<%t(8#iQYuQsxvr|> z98i(TtNL*mzMLT~9Mnuk)%k5}@JJ{ia55^J`COo`RC*Laju!}R!+im{(4Uu#ZeV_i z+*lfvO;F$Y1|Q4WYs23Lgy8_YJ&LeJKk`rDzZ*FKNe^4v;gYB#}!mUD~m!# z(}H*9hyIU@wEXJ}vw>baMB$Q1JSonirk96Fxkxs2NF1zd{} zn-3#Uc$@?*=4p_*;_B!wJl!aOE+9thmUc~(vuevz-ZwkdJ@Mgy9zo`33-%IhskRvEqoww-atzS z9P{!|;cU<kGcHZ{b>-xFE)RNI{Lz2Fn;VCjJQ=MD+yZ7(3Jw!2SpLr>?FJ5ov*1p zbu!-@=!-WhbD3@@>2^-#n-g!-%!{=~@yf7Q611@PE5N6K@VY8z7XDlW0@L}ttcj%S zEP{zKY%CeklB%bV#*ap|dqMP*fQowMX{L*p7hjvt?x;TmL6s$y3Y^%VlJ&?CYx90X z(>T1=eHXStqNq4)?KvHTdO=L&U4oHyI{cZei5|xtW%NZILfpUl_Hix<;9edhvOYwu zh<8X0EyG-m3e6-Z-V`O%x!UuVF4>!h4DdT4190s0iSBIeaB5U;=pmn2frE|RL{fO6Tw5}(m!&FcSo39Qr9DYk`&0UvwOPR=vLth z`NLi%a9@CNz|MVc=fvCLa*JtE_j*r&DgEd{uNK(zco~PFaX;#{bTO6W{ml`2_S9?o z_+I3M#(PoWDN74#>$Y5()}q(pkbeQ9A!GE(hn`R^7Mx;<(U_dS0f~I>z3FFva@e<1 z`i!l4K#Httdf!w=Yn3vtW64xmDqUlCDRZ`^TBjIPz)Uma-`8;FEw=dfvc|UKO&8(! zR0ZYn6DDHFUKhEo2W|##M!JauCa9M1!zjX7d!+wG38`zQS?lbAz`91dd3D=`;}x2b zf>}hZPinF$q~>hZC;T9;vcoHgG_J+y!<2JRyU&KG{STwJZ)_rMAFEL3OC~3Mt9K|W zO=DA%>Ilk%%j+QqfYU=%y-x|=$&h4_Q(~rALDH(3DbI7 zHE?1j#s8~m=4Y2H8B1&>?_aaqxlC6~B6mpgi^pP5JDnnIe(Z;Q$6RuNo(K2T&n%NeoI0s zQn+NVqiRZ3%-J;&lTlv#68b)>ksiV5x6ilE+&UtGGuk-Um){V?aJ^>6$C){W1iQv1 zfpg|H^n73^%Y$9K_e0qu;CYknl>_7DU!aeS?5WpLyAj5<{N0%ModB7xq7)v|7DZba zBmN_o$l6Jz!hD8Rge8U5C%Q3a7E!gB2DZA;-R@Y(kKs9KK%v{a2ZM1UME~AtIx)YH zW^2L`B3Bf5K(xzzKDdrQBW2ugo0zvcNR{@Dfn1G#?BVa~#@wKJ!Y!Xks^RvSMCA>bVK06eQGvn@=EjvJ<=4R-uT+3sqkfRxjBb@9MA@`I zY|s4J$MxBt1w$66mN1i%AZ0Dhs;X71YH5TxAfzqsIb_@IAfbOf1N$(1_27d?k=Ltb z*L}AFem@;FEE_DMPh_tRSN%U$OPB-Vp{7SYBoMs&nI3?mT04fqb2) zOT~GT@^aH1E7p&IB+UYd7CqX?Cns#~;QDRbMMINdWR+9|Tkr&x*#gy`)xndj*W(*3t&>y9r<*vn21=^$6Q@c@ zvNlwX%lqy7MJU?K_Ofn4k%%v6-=!wEy}O9{AILPiIb9*N)@1QG$A>P9R5x#%UIPGJIHCbnf#~mvbw* zjzrexmozi?)E51Iuj=cTw=)9`Ee%duZ<66o^EQ*Sp(yT_ZZ<#t*j_OT)P|dq@VB7H z4d*z1kZDVvKj3?^**AglDEn0vxiL#YVubzHn0I8sJ})6~Y+&8k$uYZ*R1uiR&dDQu zC0-SFk8WXhITN~@mdw#B02HVDlX$7&9cexzB28f-cGSI_%u<;*$Zbmfe5s>{oLZk^ z!O_-b$X3Zjm$UryFs%Qb;%@ard8&VaYRUF%_5w!bmC)%|;N!|qi!M8vUo7-?Z8^_A zR@tRZ)vFLPOA4thOi&Z?XVTX=GDNi#ECYLH3y{7DYDU%C!(xG_wnj$Xo#v(~BLQ=J zlxt%e0#%%Z-h?(A);zPxyMwe#5w9Hkpe{blrSs7|d!;gF*Ggxfmf2CNl^wgJMF{aV z6uUI=@vBw10qG$cUvOzm4S4n^$Gc9LVOP(;ZjsB<)TG^37gjFu*GZawNl(kB#-#VC z9V?_qw#7zDKV5A=e^^}z%^K!^! zeUnUTK|AlkvR3cLN!au{NaQM@5xA^-{ZIQ9;SCYog8JwRqCHt~10ig(&wtkr9?wWN z4LW$LHwBjDkZE@`l2yoyUqAVS`NrDjn!6Rl54M!ZogJ;lE_vqipHs&K238HFcmrqJL%o` zSu4Ev%DK1R%_+YXzI#o)SeJJ1-!3n4Urc#ko1D2DxIXsioM3u!PVhn1bYWym`dN%| zD&?1mDdIepJm*{yOo=i~K4Ya)E9u{XuFStvK+#-D2W!^Vh$cztcJgrV_l!#&N$Amq%>UPe0jG=)*YF@0H(SYm^m+tMM#H1YA&`+>_7fQZ&%1r+VNX{2L>egyAh=qIk$;XMN zQD?4Bm>Bp9)l~i+s(QnV-jF} zi~CmBUGVXfI8aLwjwd-A5yR3vtfF~N0o1yY((-s(+TlFI_`mi8m>=2esOMqygyC`F z@s8*&1n%R-HNs(~Cc9XG`kNDdiL#nzKOPW!P)U_rF||kW)V-Q>Gw3e z-LKQ_Hfu~H{DY)YqlB>{GU4&qyn`=%%CRz8)iL|xW*!zJ7GZNZE^~P=$kmOX9F701KKfaw6 z$a%KCx;|%1rh2oEOaI!!J@$=}rQ!2$NpURpy*xb_irVS_~52=8;%w8-K6 z`h?m~YSaLy+SrUrfAH%M@g_drx9&WR9A)o6+SWo7XrM`PL~y~MIFRa*co5e3&B*v+ zdH+p!Wpo9`3`MSudyv`yWpu0KJGZw_bKC?epR)RWvE5=N7FGo7Sndy&bAh1^BP%MdTp&Gi{_0P9;;-jlsu|xe}ucB}>*-H0|1A7kYRVlHLs22q5RLLRVG%p9jJ`HS(4G zdegDRED(K^h3Yp)NJ0a6`o}&egNvSo+H1WWj_VK2f=J8c^}@YTiRY9|GfrL5!g<%v z(A6{>U5X{V6XtvyOxWk-$^=%3iM#rajyCzX@u_S@G9pRaiNz@r8=bV%l4E?M@{MUB ziKavwlPMC70nKQh0;;By$dGU8)|()Trc|}W-`GQS~~_#Dk!JB(kuwK``;_;s9GrN{)PHL&M4 zPMv}Be-yE{@$e^0!9X6}^G&$VwW9$@{Jrb9IDnl1k59*Oz_0U%-#W@oMfbqIlKs<$ zq6-RSvimnjikyNWdok8CF=ud!)~W{sV7;szzt*A7j#d-Op3(_jYPxW-ws~4E&TUd{ zE$G{jNyN40cfDChvi0uHGL6YFt1>EUR2dMh0C>qV6Rm3AhFvh*dtq` zeLpFj?0EQ*^yB!^>`>0fS*G-6SWES=S$9%XOQ|j=UQmWNV!6X~V(_b;K{sn8$g+kY4!8byGb9>o4&L(c=MnAPNK{l*nIKUanUeTM z>Y9m#Lzhd>vck>B+jPOp&AQ2x+CmSP%H5_U_mg!#+D9IaR?kzQd)b0SDVq}$?}-wW zP<+Q;ipV{e^e6HAG|@Sw-P4cF@~s^G$}Lz#79WzRKbMk{?kqpryB#aBwsy$0l9~0u zWPg$_t^^3(ACz(e1KnLrEq5%zNzsa4RHl^%4``mIgD?zVq5QANd+FHGTpyT`0b=^L zvSEA9pKqqVd^O}dbhOkvw9maXJ(TUhRD0H+{Au|k){n!(ohDNrN&+#qS?=?$N25s0 zj+ZsLw}-vQE{?WXx@C7zbNuNgkTrqVr^Cl&^wVpCl&|hP4!U|*MfSCZ8-H`V5iR5& zMN!9&epW#bcxH_1A1yV4ElPa2VkZsqD+}Ub5_#6S7vXIb!=bSt)RNbduYEVnfP8U* zr02JHUGYpx7@NqN>9ATPnsfiq5`YIsw z$F5jWD*JN8P5Z>STvT*@n0TZT`}E<<>^CWWM9Qg216M?Gl>h`5+>KtaB3D*71>whjvHuI+HA|~u)1!46BUG~>3WaOgRwQ7Mmn4( z)b#b+cf>mVA(#yKw7H@GgrRH`1b^GsmZadjzo=zky{r@~?`N2gXC)uI*v_FSX-3FC8s+d zAn^`$W?(}hnOPXOaA6wtE%&6&5Xv0OS4~xc2ozQ|DpZTaM#D?b+A$anIRQ%96P zT#|q;lo@4dJ1J&$dED~ekHb@*O<Wy!*ilQPsfeE zwfeq6)WG57>99ig57(Vlu3Gpu^<%L(vl+!i7)>+z!f-T4|lR9U%dBhbGLZiG^=> zL{c-=^8Tx`Say6ra-aj$!Qy#Fa#~4I{Q}h3rvX_?D#5wa*5lM$QPb**7j7k`-A^sdL|D$1mHkCQKB1uB_C7q>ohVsRC|A|4@n)WpUK)#Y z%;A?f4T;BxiN~w@P8I%>pcqt973IP5|UnAO384uzY!@2XREmq3nD zJGqYEn^on@c;L;ttsvoZiNVpO@#OSMsuPR&U(D*UDI`HmUVSi#C9lKD#1Z-84a4HA z>Iw(L`qNT1OxM;Mcu?JAzFw>Krq}KoInlv&rzG*Ni}CUE|^vW)Z~fzm3j1C=XM;L8V*WpBb)PKP4wMu+& zd_QG57YTAvP)I6Mh_y%9^(6H(bMU|1J<75fH9g#NRBoO!_^86}4l&h#QjC%$O)s@1 zlj;(~bK)M&`%I{3JBMAM)}*sz>11{vKT5Y7!1a7>$_wPJ!0*`|>%qH5 zD|AiYk^gW+2>=+ZY;In!P?7_oN3r=rV#;N+qop$7yNQ$_t#r_Bc}t5h@H$kFK=^V- zp@2>kc#EpXFL<@_GLUxuEN7*FN5si(scA`A@KKzFwB@V~e=vo~`!`Pd-hwo_*JD!< z;tv%(V;4EDz%)I!Kji>(39e0JZ?BtOVbQ~H9w+W9^CML z9v&)zdMzILUOs?RJ!k{9*6(hvBo{??DMdZO_w)E@3LgDKfVT^-he90Ohjk>{WU=G) z9i%LtUG|4&!hC`!BWiM*F)adm4}~k3A~#PDGdyoN(wXMuG0fyeC`!uy*y zyJ{_*+OGHE9ih4>jNuj7XmumXrt9NLMA5{Y=ob>9VD^6R!Hv;Lbw7X(w^ z$=0*|Sa&vS!Y>Q?WzXs>jvv*qguI{zkxWAHLjkA{nIV{}8dXs$Dz@KDOoFp`H ztVVV>c0|GlEQNWNvZsRXDppQ;xst_DY4HSF$UOJLNZFvEcG8Xk-Q!tfa_~i%R!!5k zsw0t*+;G^caytq5y)4+IojysNdj&I*}8=w{sTVVOD`=J5j!R z*C+V<&W*Q|WtVGDVXvV-{^tcSRF!`6vei8QeI(ZU@lQgqJKW~k;dKAU$IKGm1{5Bl zW2p|Cy4GHdPb4P9jz5}rU6zc2_QJwvBmSG7SD9sKk&Nz=38*gWT1y1NjFK>?v&7yM z@L4Psv{V0~5uu>BU!9;AC~e#1DtpWpre#&~3bkH?fOdSLx5x1;@!9*OYRz75^((^% ztq+jq)%W?fTT$3RQUcMc>&*Q1B>>qLAP` zxC!$&%~W%40t2Jvze!%`zL5IF=g5}YgPqhp);n=Sq*oYa0h>gmzZ^#KVCGR5dG(C2 zgR)wU(%_M@f*I_}hNR1!p8OWc_Af}{8P^)%V-cvEhrQUBdF0KVV;juWdqS{0{JUu-cZWmJ1 zok85Wyb>s##^pgTII_2;ed$dm@n^JWT7_DLfv_Ylga?pQy-lBjpV#ul#Sz8m(%mlr z=};fZP~|LlB%A9@h)|*@iuyGA86psPxZU%#TDV;m=@F8RWS<_4Gv`XyARHet@|$$8 zT{>=;PCY-2-`2i$JDlPH4!B~ZPYtt@up#fZJPO&lCU-PPAK%zPI)=%}>Ux@ffirtv zKeRV_nXUJA7Fd;@8@*k+k9aheL_K3!d~_G+9f4BfAI63Y8nT_Qy!9M{x0+m4FDkek z?5)vT(zI-7K&y<*WCY^K>K|KHOk7*L1scdEFlc^{Z`gOZpVltj)jg9J{w<~lvai2r zgr~LqbWC+%!Pk9Ufjv%^*ECr0HIbGo-Y#WchT7QJpkFSY2Cqo$$9ndUgAXok7d)Y~ zH3M+w!(T>{Q-y7jwQdT8hr3y6`T-E(Q~}qiL(`5VasB)$;+FHKpp@xJY9I=%pYO8i z@p!4>U`ymOX+^7L%`@oo{$Z}!DfC1+zx0?{_~w3=%BZ55*W5S8siJLll?z1cP^QcCuH{w#4ycMZdr;GKuy5CPT;$IIR+wF2jV zwi^jP^6IDdo`)Nnlrk=?-c#Wa#ulaHOnWybUFBRH=_2V5orL0k#8+(7&%_OQ)9t;{ zJEqpp*eNH}t%=}Cm`PuiFe`*Lzc|cqv$l6jRmQSmq&XDuOC2bW2Zs-67r_bRb4$Yf ze#J1>A|&fBvdDJAwhnP?3>zxiC?o)6$5i9g3tJAn$wMPfLDC9(BdU?^X+a-2fBh=7O6b!lumG;tiNpyZmXif zpV5N&3B+4MD#{xPb{KF9^hC@fTe09-%94BmPIuSVKM_&Hzz1*~6Lg?O3VC>3O$R-; zY4q1^Knz|IrlWk)%U=y7PS04-2*qGo1a+-pE@jtZyOmAer#}{xJ0xPT0DM3i!)4BZ z_JrYgWB5uB0k;Qn9XmDMFJ4aQA~o%KY`vAwhL<)Ou&Cm@xgoE>Td(JW=D?4uE6U`L zN3whoqJT=FjZHH&o_YJ2ijJ9X+K!!Z%+E9Psfz8MXJXYJsvw#@G92Y9i!!s*Fm;Verb+fyLsVeEhYW z0Zr=Po@-TQnD7(d7>8uY=a^lmt+n;H{*I;fXSS3BPxQ8HWMc91qpb68GYz*uii@|3 z{%l+Adz4O|W!>3^@v!z9F<_*;wiIC?3;g!%mVANWA>WESNF-lJ=X8ayasFzOxHjnV zn?Uo!dBX*WF;D8-lzNVFpFxC!{Cv@ZDA0|HG?H!|BuhM-Bwl}TL%d2<%;ksB+&o-m zGt~*+6ayGms5(|$2CCBGt{Mnaj2ohDUT=)A_zppsTa!24jpPk5SQ8@IsKY7AH%abc zJn3ywYq>zrUeH#noP&3eUx8p^%uV2L0jTs#l`-Z6+$?cTIiAadS|~DCcy94n!vhsT zRVRobVteJcSU1TmF%-OZ6jydHA@b&=$gy(eCs5@OBjweALOYraf&&Zph^2`9wAUdt z>+-+o656(kyr}%82lo}qIrVA7NBh-8B@K=|gni}2?9%Zn^`3&B!(SAnKYL(QOn>Ga zsTwr@Nq0(uyuO3s>F?`K6CK{nS^1*cwSEjbftJs9%h#?GfD>!0b|hXW-*>z>F44s? z3E>3{XPF$SI&j`5=PKc~GfR9hWB*mQGJXX2o{3Oinlyb>PKJXAvBrFOv;o>t};llyx~NP z3tR(E{wE^Yt{(TXrKDbCDIuE#rZboz+qF(9zFJ*A;E56WN%r=bK7i(!P89I4o{cVY zS`Z06Di`xA$fgOP>t6ZYRBJnyeTX=NJ;HAVYWeYKp}jl5jgZ~7$pn6&Xy-3neNQ<% z_*K?Ve_CGVguvW~Q+LYB}D53@-p#k|nM z`sLN*kZRJG%K@=V8LpWIuxzv6QO@!a5FA?haBgi+8$o6VD(yhzNMhhJ>Lt4C_Pv(Y z+_(|0UCin6=_SbYYJ?o(G|@QcIU> zl=xr}JF)=uu;0 z*n_GI+&Ze6P3w}sD=SQO1uPUek|=492;DZY5G)?`v<$%1PT5!7XNRC9_G2q<{g{!j zA%}|!@QT2?rq?^lv}J_gGD+UmI|29IiK9w22*B-F=CCE>1YX)Ys$O}^M80*YDztmt z0QHU{^?>!xxZH;7ewbO&PO0Qweqb-{8Z2i8qU@ho))CgZa_V4w&tLU+Q z37gcGIhpRTI@@kXMc13~Y#j!JWFu;t?x$r)K)fRly~HggIw^X;)(h4CSJD5!2BLeU zzRwm`;vVSm!kl^bMDUoWN4vrWc?PnTLxHS~E_+(5*k16P4KAy%9;`#g)dmT^8^d66UOkH@v%TZVA--4d5XVI%Ck_<@p+tE3_3;^>)2^QhVEO+O7iI**Kn~sID zhnp4R*7K%jC$z1J!`6F|8|?2Yz_Pstcw8BI%g)@xcXKVT)YaRidyLjwE8QawyJj1= zz2lx2i{V`4)92@!`zODz&#sKj0++mdyoq#=cVU>&1pjcT7Bl{u;z<`v%jAUyYx9s`_-^a(CGF63v zf*mIz*YFf>1oZj8i~iR)ZA;`STd!^=e1MtfE5-^ADMx#}aCusR)UnZAy|l_AnWm=h z9yIP|-tTU};XL6^#{Tl{irf^-la&k#T~5xkOiB`~hN4g%75JheZWE*!Hdyes=M6I> z#`{D=fmrir5!74aMA!N*;T7^R+!FDeq`wOFpK@53H+zxj*mCSoQGD5~+qim7OAy`2 zAFma(7Wy%Qw_7U%OMZQ?T8RBDWeSHf`Nj}h3q3Oyoz}l+@Al>vE8w)12PBS%B{39P z|B24~D6&Saa&otpM=AnEJ6miN%-Le8+f0+@d#g8k=L8*x{Co~MpA7-N%^LD$OY#1L znH42Fnw!#rt=BywY2ItC)wGETJ4m4@f~v_KHyVR#&kmqz9bB|(7dUzTM-DP zUAET5lLrfKkkgiY(EDblmV9=6)h*ZTJ#hFYrL27GL~c^=L7o+`<8+@4i$47T7`W}x z=a-yztMDbY*A}~s41&C6Z@?2mkaTWYzIjdlXExIEC#S zDeZc5!uWVIe!)KAaD0h2TvcM~%M~xFzLU>7%soFVVlmn?BAE~Wy#cf^q~f2uF@g%I zc!8Nma0-)O?>nCT9{x`J*UuWd*KfWaw!lkQ)V!_}0ukq2Tmb3a*N}h%?I#I5{TTEB z?U|V_+afZ#Zx9t59fog<<2mg8Fd`5X)i4@+%e=Ckf7HrsZcl1&qY(@bI%t3osQ3I# z5{@dYKXc~x#eNJ79AKj z+!-3>Aw~KV-{{Nazu@IRagG;&LXy}a!<>X|El>!td>fJNmh*nc-my!*m@a!NObmq& zOVxWclfyBx5${dmXCdAmpD%rDm(vk7IE*k4j*b=!-wk0}l6ZjEEN(h}jOKWs@;?2O329>?S#>A~wXgxd zw9Y>0RnNf#cgEVroh9d8n%hyl*4+>>K}J&ECb>`lJtjEqE3!anCF^s`(GMgV^1SFW zvqEcozlSdfyEtiKbWK&*WCGcrDdmIkUyXs1*!%XUBN>c)h+DBtGvzkm6IE5Ada0Dz zxKz(5{$)hnMlHIm1}#HR7i<=WY}}Nr@X3JHul!+X9iighr#t&A?J`*oho6S+giBqc zz+*jedPw>J#E3cwk`fEz}cf=^@@)!BsVTSA8+nokUR7mxU|}$OMh-?a&wcAh29KN zghh9HxeN^~*xggp3|50Q+(%0_k>l@ZuBB_aQooF|byHyEKJURUC3Sh&FZogT<+f_F ztCCdnHbwJI>=}D7^;IK*X1~$PI9J8v>5t7l6fR1(grC7&zopDDabi$R=K!>+oA*XL z1X@OF@k`=)moa@Bc#*bfk~80*-t|VZ(uk*$*rWjk7CPrxQ}!&+{cEI(e*JUTFjFJx zjg=X;9G=Y{#p9+F*v=6IdV@Nqj?!p>$M*E9WwGa@EO)mnUC^tkxDD06<2niL|5@j@ zjn5fO9|3TLJf=b6#!D`BoYuys3$W$ZUTfkZFyk5LS#W(}wbi*q;cpa;-O%hQr5toY2%&W3Tiljt*B z*)pHX_zetU z7Dc^Lk^D>0eVnqOv->Nt9#8t{!^W+IKsDi8C>ku?qdyl*js5QfO&R)RDFBEdaH;<_ zP-&U{y?%cGy8b7bQl$ePu!FSoFwr=Z`Wt~8$X#=-eWorg$Ht}Le_oIW@t1rXkRY_` zgEzgk7PTk1MNg**1`U6QEr~g&F#s797Fn&U`td<13x(1B33S8u)k0Cgo(0puo3HV! zbd?-;!Zm7ZVqFYJu+VLAE-ZjF-dB<&&&a zD|Y50#BVQ$$#b@bpB61N+un6sML;K-Kc*fdF`fK&vS&s@lOTdki?h}tFY7bKWQme^ zs>%2P$7_{0NJAzqx*EBEoqELMFIQ3=Ihnx%BW-Qr*g+jfu?^{O9UjkMr3+-bjTJ(7 z<*7zyrlq*dB^sDQ7Xd3a-dB-E z|Div8`|ED3??kbW$;RrD0@zw7(h20>89jEhvoKhBq$%Hgi|g15f2(1Dd8~UDNRZ0t ziRG504w;|B3wGr&Y9-MA(I;dZdd`CR?Q}onG_&UFiP>lvbu5_2!I(*8YCJ)OZY)ZC z`3Z@xFD|Loo;K6IAO}I3Dh3UO7wZ0ZGw$e-8T8!51y!4us(ba)G{=fi18HiLu&DP8 zQ;eu)u&MHH0dD?|+8WlHW@_4mR2|;Lskn^b7VD3?7 z;k_5x1ao=%G08d~92;D}SDadN0D{EtX^6DbB*-N$inywe10FBw9o;Dr@3i^+$)AhXF5v1$jFpLY&1V_w($hIQl4V40v)8F|@{__|AA{xS2S#GrSDmO~ zYRLqkx+7J^c*tjXR_t*ZFW_^)cqqnBntX`CtAh3vzE%1}Daek4?YVtOORJ5pEa-}~5+!amXq?UWSL4)d`I-~rky5SP=Vl$_Q&*DWKT zkT0vVlDyt{ZFfJiM5yaBmrmq$1b^r{s(9&TbhUl|=;d}aXy&}&{NPx?*zh-x$M=1C z3&7CrBob#f#*R?*%J5zhdW> zt~IDs^KBk$DoQhtsAaT?LhXruVr^!G!%<%zEY=Y|FZ%^juCMZjghRuOsEa*n_Kjg= zG=MB6e6**M(KwGUN#>O(G*vpLVnz;+v~TOIkUQXrpN#Fl*@X^f{hO&RW6`awQvmsX zvZfJCMY2k~as-3yMUwFK0fT~czhn|GJuOTV8KnA=Clgk)c!pC}Hh=+|GKox#h2_tP zdld(foD`U|VS7|ULTyMd7z}vGkWZ%fe@DzXibaNMv!sF+SEzdumU!YLSO8uc_PspJ zY4y@%lE`^ph0O4eBBoT#FK*8#SntG|eFj9X?46!Fl3 zvgSey?#e`Jx$k~AG;EQ}GbT{EEcDT0ur!?u1a1j$M4G=psx>gunH&5EGN}?$v%j_kom2bbM_JoWhVB=qa}y;75FzbBm` z{_vtQQhHTiihWRhnn+N!{agdcKY(wwcDyb~iCO0Jbcaec!B68EwW$ zV1t%Y;Xo^p@8lEBi=SOAj6LK-|2VW%RgJ?M9VRV+6+rsdXuLOYmIh&EdyI9m6h`Tp zU>|)Umz5gwfK%Dctw9n(F*vbntgpuZO3dDVcx_uSOH*tto~9)$4yF3EGH3oi`y4%c z*!|ed5X@(Xa~+*?@K3HXy&`_8xaItI$J{(yaisrbmF4B=G#k41k@%Lii!3Ja0z-E# z7UlZK`gC;m4@rXEQ9s?zRgf-G!Q4#^VqOR%tt$D0V7IfqSD(8BpL0FFm@`s0E_d}s z*l}mNW!T)8Z|J)f3`4_AGbN~&BD0E|xbN%N$YSFDhSaZp8NRnE^k$wLlzh7HfY%1X zx0qibpt)<=9NEGAG|_{=u?=&xX1$x3#*yb%zV~Q)Xu`KQf5-IyUB}DQ6j-5|wqE?2 z)9*5Lo~=ndElc^tZdaNq65UE`98EakyU#aT+mhl=c-3})_-l&< z_p!xq&_=Ao8s+ufNIfx2o5{vcGV@6qrnZAWE*N7-YpX+?u-UgZ4muTFV43&b;urJ> zJl@8{m7wW$5yKzDlu}82CQ;~(EwN)$fHlIc)HeAdH{gNvhel5XmcXGJM23{-j zYldWn5i5tXGL#Q{<@%Yz8S@=2LUD5-BX~pD=t4JPysOCXK1!Av9ue3$8<0kPKzg}+ zlpGLZTfdo3Srf5ssNAF{R}|*WpNV69E*Z!BxdiL!=ye+AQ788|PmoqwUTay&PDP;X zL?!Atfj)23H*{Ti=0iVLz$v3Gs*CY!n^3Bx8NB*MXI8zU_06^Q*^|#{6{D}*-`7qS z{0nxLaw0uSBkadIcg|OsV0P$G-O405G<}xrU}P=k5rVKg&nOEntq#a7`vU|Yqguorv$l+w(`2CeDyv>G*a2U=sD_z%r^a4wlCSEFzq7^qp|HM)}~$v|Ef zZ&dVKxVN+OaWymjnuX4Gb%*gp2)g2u)i20wo}PlL&VYnPQE1l;Sjx8g<#XjwB6QCl zEE}S#(^s&=A7eW{!FQv!Ajf9c@F5J~JlKA!K4dP`3#=j$rpo!m0$YG^Oos+9!DK$f zl)`#B{pU_~U&R3NGo`2kF++t}fckIeA4Km3)-#@<(=*7~MU+mJ0hyU_gya@gsE^n+ zqPHoTDbd;N*W=sB(|C7}Is=w?V*SCUy9r&VUKsYwH`1kw#S z$DeaPVM{-YnerV#y$X z>^mH%A2<2sebgJvS*D&R-`h<$NW$9XegN!s?{-P-{ft}IZPa=0E7mX_zTvSZ)*LIR zw_>f=tHHT_58dQPI%kMGdFt!5FLGZrEMrT=jN2b*!U8buKxPN(di}C-uFMX z>E9g)P#85qyxuFVu&sDQ`?US`LQJ*{o(;#*&2sQ=mzt?{xkYMiyH<&4UhOeQ-m6!n zy_jd0Tw6366oS70E$l&>kx8{kQ`O036gq>NC1v%0dEd?+d#aleF` zyWiRv3m(JMW^Z=_ra0?>&^w1aVqq9b09UucmWE&|tzwRXGOUc;rztS=;%aSeKrBCa zdz^3o8@QeK;8@#ldEBV3nng>D$+n6-vE+#w3{Ld%bO#><=8z`x3>4%`&Qp)In?lZv zq$>Z+tP`+uEpKS6x{`ymg(rwv>djwz#sFHBC$-kuBGk=aYr>&nnA9gAw7V_j!%Nsa zRA^a8DywNHI~?pAmh})lgUiTuYa=pAy{Y`aO)?HBRxM-+pkVD6mj_14>56D4O0ug>#z&{>^NMsXB`NWT zX#sofU_{>+S}Vy3ByY$`>UiLbqoWO(F^|@xz4X?`o%3Y%8Exm0nSyi6O7V5K2KMNT zuZ{Ehsg_kQ`=1Qne^suX5yF^rVGb;O7(NbLMKwa362ud0&6B-Tw$#;Kl3)yJT3oH& zpMCV8^_npH?y85Fcz8|*wOOUn8HgyEOfoxh^+ND4xJn6;@C>6haBLeZn~Ctv%%@wj zP=HF-COBDV&2_h?Ydh0qjCK#m)}}TRY>9;=ig?=%L7bT2eRH$;b;hw|SpR2l&dT_p%a+bM`cO*CavKLEHoD;CHeFZ? zT@fDGVwL-9mN7=V>~nZeJ8;*a*+GYqnjf*2F|+6Cf@20G!I%Nkn$Nmh(#Ha$V9;=( z@sNl>?g5t-R4+nnOFtF!_Z^sxYRT0b% zK1~Bxab&V^gf+b0Q!;d&tt{Yp-cQ!9Ph5l?Jg!TV{^vjizHbMJ*Vyu^T+Xh|4dh;t z!*y|{y2fgzv(UajM0!5dKQd{ogXIAk2Nyl${}7XGz0%c9>*jWxriMO%KlnO*J zYco(POxCdUj#b<%vQN}sXMak=b_a*r`XP??)9>N&W(rUcREAu^F6kR5n{1t+xGk-E z@Zs2$Fdx}q2iDWz(Ou}+r_UH?G7WvPfJ({nSe(z>Nq{vS5fgwvTb0A~`)8DVWerSj>p1BoM+0>|Fn0)5|?n`C9P9{qTCO zs){)y*lc!*MOwn4tYWm*Up`oIyFl3?;GchTnbYWg^rTqa_3@nTPp}lc3{Ry(dkJN+ z#e@@45{bQrEIJCW-2;gju@))Tmf?MuR>5Rrf+M-DTo3fvg%7M62AOSO9`K+HM)xJr zcY-pNIiiKlfRgU--?6 zRtXZ?m?A<3L&2kR$l27nBrCB6UEIf^P~cmZ;BV7*m08yTVx~fG=v`+HA$xb@IUG9X z#inRDyltd)JH{^A6&MbKiOF!eS9C>Ganeon*-WC7&*a5iIk-_NCxu~$w4x*ohR6;k z0E>OKg6>76LX#DL8}-inS0HK30X2(>XzQ`@l3~3A?K5d~fBpJWi&@?hdGq$G2v=$Y zCh)lT!t9320_+jIJ_ap~6hHy_ld&;3y*O&wa(t-UX#xP$ySc4XO^5j!-&iI=e+ zyfRo;$ufSw8-#A(qZpjlUou*RDyiX~rd|fwF)fp|2HMeBwjs{@Xr3rD{={8IY90$I z?6cgj%4>3m)F843I0Tl1`3me`hgm^Y#HO(~@ed*WAaNZ*?%*o0^ z;uf*noULJTFn$Q>UJmq1^9SYya;yLzPa9*G1hpcf=2A7$Zg!QswWuB-_e=#w`A{)Gg;ud)FJj0OT9 z@ib}hbUb5-!GYWt4%pzXR69qpUUnW8qp{z4NOtcb$>6nMEpE7TlB|q|u=-&wdUFdi zg`yl~hG=Ndina|CLLG1go%VJD_z-}KDIf$Vkc031K(fxWfUyL=1MnQp#$z;UiOaTQ z;=g827Kz_)GK}zdT2DoBp*U>tMHH|`M@&#=02WzNs6hKd|C?(K_pu#`bk9Z-FUMSX z{4h4mYdSSkla1|1F)Gd!*%T84TNzCj^Az>Ukv^#qe`uy{n25TNg^_x}We)C9Egq^I ze@IsY$*N2Hg-Lu@4C`p)Oo>fEG`L>t#}3reFda~T8PBZyj;~+tD4t!MRMa8Uw(kr& zmdb@4-+5DH>tp>Q1_wp2x)ZR>LMQs#F+Yxw#7XQ$%BWoDN}i|~p7>+)D>|A_{)}f$EV_S^Pk$9Lfe|L|KZmCvq?`Y3* zVM2*#(3utW#XxeWH}d%A^SSxQJ~e{8Hn4|KV5gx9#fuldvO8D1^<#uNe1FgABj!@u z3}Z!mzP5FRq?LzpfZ5LG9<3cZcj(hS)!WrHB zIL=X*MHXbaO3IKG{5^P8mA1bxQTO$);>Yu}%1q7+wi*SWmWHR0NcKL&H{MQG{qw5L zMPi*jOX1JE**ufLN+wY;WHeIa=t%mzLd1eI+3f6&6G|B$qoq047S2NWN+DC2^i?Qh z8joz1-veeua0&240GEz9tFr|nbbaAhD~Z3<7JR*N$IEhdh?%(Q8ozC_!@sUznLt%6 z?5L*m_fU|Ir<{z0p8@Q){=`~B`Sa(^?bbkl9@Hb_MnIqZI9!nvX`kELIf5*19D!#I z#nWZ0{G-W}itJ)QcUJmc8s3&@h=Ioo**JZyzf6atZrH-uoY(w;-+stGmE@bNWS=j4 z2lDns!a==$6jNqxYJAd%6DJQls2yU@&oxYX8xf;&SR^Ug{G91bf;tAI7n7({x=}l` zF=;AlH2=9h!O-4QqJgQ!bt&`*Bj;MRxsH^dOSOn>=#X?VL=ks^b@Lc1lmx3o0hE(R zX*sE)`F2(rG=viiEAB<}RltRG@slx(h@Ps>F8=Wf|-24=dR;=zvG7sGEs5D*IVA5R`r)w6fIZa zd&-{T1mekeKlqp+>iooBvkdKi$Ru8ot-z~5sKJ+LBn0KbMYMqS^8 z6@_nlp+dJ4_MjynaI%@258JqfIU6GArI-h;Cn@M_Zl@EoD{5Ys!Hjo$#6OFfrg~V6 zIy&OWWGi|8Q#23O6^Tr;C?D0%YoZij3R`;?H!OmR`8y~ZH`)(%=EX%c3pJ!{At^Nj zWy9#&N0&zR0CzH|u$N098$WVd*_nT%3(F`w+(M$^$ES;d9)Rue6gBk2YSL6F-3ENj zhRAgyqZltpwBW*@C7A`AfG(_IQgBfYy3$rcdU;NH;tsEvfD5>QB(XU|M#Mpgg`hk_ zWc0EkLD*l=QxoDQ-b#kj{##rq|J*1?>nKeb1DF(RrY^hcm5LH#$(L^lB{njWE57!E z%4wG3LfE>JpZHx!Eu1;7nBgFg@+@sUP;;vYlW0gFotd*n ztocR{mdTE|-DiX|^#(MORvp>0!090=vc;9WhIZed`{r>!%V9}$T|iv6G?4n>nI^lD z%Dhcyl<$yOg7nwym#K`|WXC|ns4J>Gc$qM1VNpZmi0jl?t?wb5a80hl{B&w0ntLB!%zFd;Wk&2aGUh6hp-41!WJpt<@{FQV`c=AOGiq|9 zlR33gl!Bk-#m=pAs9xNO&&MhuvutyJzS*Ykx`oSoC31fl>CD*ey6$M~Lj;FajmyoT zSO)a9=If;UfSoDL87$U`FG*Kst`FS7(i~<6Ju1ei!m%`KJNWQPBz2BF+GtX~Uw%Da zSrj~qq}q0d&9g3Q9dKkMD1()vG%3fibFDub;0RQ9a4rivrHU$THRZ)3#nsK?HTlh& zt)9}NMJtncGScltlrkV@7h$UdiTnCy@xSB9nqN8;$es zA?7+3-9Tkt&=78RrCFxGMN>33_o@i(Y7!QTfbCez0iCJrs-Fp4qDW|?L_9Nez{Z_Q zjETXNru|K5Yrpe`stSu0t1PxO)iyytVs;UY3dhof*hX^6(4%+0fjrF3(~^zozAon{ zt(mw#@&tKobe*y#4K!uT%#Fv%Ttm%iW^ybWJ1?R0ST^$|f%(DxJ zv)<2>$atxQpxx4M!Sfo{{NH1q{=>Yaj4fBP51=+(dA2izP!2IM!;(H<) zf^kRG%e_sr)+(N+dNDqN4`XwMj}wo_LKBgO@W;TRqCd&So{LM6j^< z28i)8l?B8FTezql8qwOj78TYF7)U{I3z0f}am#zcm*a7$R43@PUtu4i5py<0mW0+# zRtE!ohsxcpmnQMYmW|p)iSv}P<wm!NWXJ^MX&osK zMoh4rC4||Y(X*@QYOP&_Wa(Qeuj-6jH;T9)zoc)aFe#3B@D46M1_U%HddT;_`xg}i zE%iVJy{8Y7|G|5R!3HRZk3o9k`ZF9BM!tw+_+@=5;?~l@l8ns_4Jek&0|!fpkeoT^ zDSs0M&dI7b@joM+94CXk~(E&PddV*onM)ufU=D%NiwE$lh($cNUlS>O$UN)a?LIJ*lHz zVh$6ksMx~bmaG;3$D|d9ji7PNi8pM4KL$i-z|7Aj*8Aq7r_j|oBeqjTMrc_gCq*Hw zM&q^6kt{58oL;9DeBGb0KOj!gr{ZHpEiCz>o_&2(vRc`9hZsaM!Z@HuKby0#4R@&gSBYB6*j@*3|>ADJtgRGh44 zt0N)})HZ%`EZ?7M7i9i*D4KLiv&vH80azbne4uRt1Su^wc2XbllU(>^(GOkE^e!@Z z+)dm6h@na6%2|%yY_KB;WMx#ipbe;O>@MmX&9I*^YWR&P_TmyBoN6_Y}El#iI>RwtW*p1r6O zssG?R{Fg?tU3pqdYFkpVSQG=Zl0HKtIe5M@lpW9|c;#o$doK?L3wHZ!_|r|}jl`BW zNI~S`X}FK8F?xwDYNPGx&C1XclcGqKvTGbBiKlC}v|(wo8|L<2gFO>@17qwnSXJKe zd(0oVRn0%6%8cf}|3c+Af_4xML}EPho?e>5hRLUsCrMG1G;M*HbGxE1~np4H6A8yI_g)`r2mD|^RhbN%`c!2cPuUi|Rwh`sO3I72$$2UDpee+gbV zy}w+9AkJ)a^t|zIGHRH5udI#{EeW?_G2@$ZcXiOD$m~O|YqkdBSy+b`+NAlbii1BB z@UZ#yR>%Ry7fM1B*Lt%VDk6<$8K$cjbj5H)S2o^e|{K*P5t zMRhbI#b5)4;cN|uOUUagU(Q8rIYUf2-N$Y}7>3efk2ErTp>txaY>9Pm(tUOwS$l zVXE0)P^i=at3Nv8^RS(frvamrF_$TJ))5d-yWR)V$;U%W*U9*rIQVxZX=uH;kKQBn zPQycj-a%H7-G2`rufvazK&7dG9ru5Cv#Nf)-VX^+_EC*Z2g6u<_qPaT`%wI?-zGZe zU3d=HIj&OmZc^M?4S{9?TTbVVE)Y!vCBkRRxvD>(Kv-D~sIJaltu++#&hUy2Ajg5i)tt*DNt<>zgI*1XLG^xsJqGj2lqX7)04oV^$ea)Xgl6 zE2ejxm(5y;GLA4G&&680trcNig{z?mB00|ZlCGP+%=y|^I;TXvniMpyRV4v-e$&+> zU24p-WUExW3cuBNW(c!xp_w>0WIG+U{#ic5?E+KfQXW8EbSUUkLanOlFBgCpe7ND2 zB?1?ul3#~n&f+}l!F1F|4o4a0-Cw47gnFAGG6v+znF4h8M^%XKb9p+ZHGHlqGaNh) z^WmuJ6wfi;PC?@rYG)3oO6kb_@%D!}A4*9Z7ms23F^K=*J_=Tbqjp}&F;V}7K-BaG z%{f$7lfr}c&5!yv-y?}pJZ(;OH_Z0fGPJtL&DNieBB>1}&bU<{#i;K|V#FVDEjxr6 zH52J>5)vlB(S)?}EOJ#5?TL>1DD0?i&8}vKj#om!P$0qZo?M5mkYG%DiQ4WfPmbXy zE&`iPinLPTVP`kkVQ#Ez?;!_Roj2!0wO;vip{eCW@opo22#1MDy z!bX;Iv~LnQxUT?dBz%$M&tk9RE)i{}bc9&gwG=D)lgInxjZuT(giJ2B2Gw=Q%NH8@ zC4AMdm4^Co$0)Jsxr9q=%Nl%0!g=~f3hS2+e@Q!6vq%wHlql%6blp;Mr1&Uz-Jz;l zyI&enHMRUJ`;O>zL)=RNc$AZAG8DyW3|@-43A_mE>1=EL!z=-EsUq2~v1mdCR03rn z7!Fh36NMBDwHIvL1=PWqqk_;)p+8Qgmm-L%#XTd;2*(4QYAR!9OYg3D<`jP}WltW7 z@-)z7XjUjd4R0tJxveA)YfbwW<=?RMj#^Z&k3PYIzOr8y4MK*^`qIlFpr2#G%AR1 z4;iyh_x^pGvw5d&=#O(6Dd+BgtRHfKGi&!tlG$y0J@aQI_Ku`Lj=`@<;H}S^Wy_FL z=zoXKs0#X&Q(8stX(fm{v%b1W!31MG{b6gnM(YQ#^a-fmnS5@`-W_d(at$nBwTMn z)$0`wiiRH;H}&-A9dx85!kE{N0j{E(DSc^EDZzBWYjR+qq{$6|>cO9NHVBrt(2Ict zwq{dgiHE~pOVg$&)5RW8^<|5}lK~jmd0p(4)KP$jacdK$G~RRgeB!^o0M;{I=4hIw z%*~%A-?{po;b9UIexLA8pd{vf%qnX!_oeJ~+X~P7pNBPHivRA=gRl1Ss1nNnlg^Nl z40oK{W?MA~PpcVouw>7* z6%!sG%jzb6jtGm3Vgx6FFK0}u1CEYC|4yEXBCnqv`yHXTTSo`+Ooc7o&JAg*xy{2g zAU+&Z3*-EotUhTd(6>c}5CnhJDtWl%%`5$YYxNEW;CXNXJ&dux)l6JAe|FTd&zaX2 zN*atDAITpj5nYX|ckQ6$N6+S|xcQuyMNv?x3*%(+sfRcXwrt#??j7&X`CRl}#>i=) zSbA6^%d8v+WcCCAKgu)YJcdx3680K+u~9ngZYG?a#rkkMfeN*5jE+tjgz6e z(y9tOq?m;~|33@ZH8>#ACI+8s>D!3taAAn^Crn{3AB$*L*ywj>NM{dpW8%ya{4p9 z7iIcq$j$|<=U zA)WuXkEIV$#Wv(~^w~mO_E39qhiX^ZRQg#xBEP%X49BToa9q$@%RfsyM8F)1b6>RU zG(g-b;~g%{a+ebuxSK>_VAvNXGWBzRxK18fxYOz&oEn<*R3%xOG9=x$X4X-!b7%j( zU$?@6`NRtNN;#dAn37mZiLS&UdMuhm89?ElGtzD5WkTEYc3;b>{+jF7gr3BnlTYMC@Q?-H>r?*c)0HY-S%Jmq|SSjwjUA@*6! z?%MJ4VpgjZO@xU(Kfl_feH#`m;w<_~@7f3reGqbrJ0A=E&HRk-XMBLOyA0CxXD*$B zeTm>#jTA(^pq;&fL#`K4NBOJ{xgW}Gb6C=E?{{!m9ajX90YA(bumYaX>CbQjR)S6N zDnfr~hs> z2%NX!s!H{cAKE%_<=L`pvsCY^JCL{pSIKej4M$HUD|h{`r%^`*w9UM>WBi`0$jYzf z?#`3oDSPw7Y@>6K9(~Etd4LNI$@>>7Lr_|;v(i$iWC>Dx6}-9I0oGqkKr!IFf<&zP zFO;Rg{^3-`sc0+k&2<;@*}~k++7j2!D^iGcC>=Y{&53ps>%UouE>19;V?9nh#x!wY zV%~)PsX9t8q{5LdOEarS?PU?NZxE^A326up}+>wDW%L$jaxTu;= z_Mx-^O-21?931ntocLG%WoK5`SV^(Dz*!wM0l&u?j{*JUO)$%=z*l61LPW4Z&806~ z<3x4`eu#oX>7IyAlb6>>ny1_mZcM)fi$6v0aWKk^wBK}$OsJ{Xlr0B+O>jMBS-ntn z)z-4*W&;!{8CXWkLU0UCgaPsu*vJ4nH___$VoONch-5<-GO`E@xE$vIWf0LDjvz`s zt@1DbQ3j#h=r6XAU>5J$ zU}5WCqFeK&wU>enqU6kuIrB^*;7A93nKB|Yq9Ud-cMJR};`}mg7LJ60en_O0g@+iC zcT!XjmC;VWC%pqiL6uBZkeiQSwq7u%H3Q>kAm)(JQI zl((GLn4?egh4v#8II$Ze9wrUUFi9?C(h`CJ$t#Ka=OAsFvFrA2MiRf=gZY|Z9F)YnA~oLOLs<|8)J}P@5~}j)grEgM?2$@yI7noGJcRZ zs^-{fjBEn0Pjok0$tL9_Z%3!zSFc$+QsHJLK-a8GgL80l zYtOE~i>YRnxB81O(l`&`#MRuZF>5QLW3|Ix{-c%*Jo-qKp$>~j?l(TJ^i5(K@koDI z8EgYh6K}N4SY3gb-683)_R&ZrFjY*`bw^k@Q9x(E@4AM4ud5Dc`R2i}pq}&WX}Hv) zOrTZ0M`M_?kKj(epPJ1$BAsIWWMMg09hrRD^4-_Ts8bHe z@3jJH*J2S&G8a6lVY>J?@m~`|BMvK zxfCe^Gj=n;MRZ|f-#rSD-C!mRa;Fau@fRW`9A}_K-xi_Rz9PG;vTPW5s^U9L$(9z7 zaALrK373bg5YDNLj)1+gnw{?$DlO3Gv69jltzN0nAH)=||B*v^@oaq7Se33n5=9Us z7)3G0#jT*c@K_r^dJ^KOEiRl}WsoXsZ_@@BNj9h@+JS+Dhd{|1pz518IBqeoYiyok zY*IaV*nzCnXWG!_R+16{En4)hIuBsmgqt4PGXZ}>vi#=c7)5y)1)cP(!rn|JYshu# zhSLdbY2)7cKpDq<+TK-}IK?>Inf|!_rsvo}4_B%|g8*JLo^~wx%*-&*Qpf>GWh$39>_I%nruMg9{Z~gBPHedhxGl_XZ2e0FuOZC+4Njf1vr@|EpF^Vf z!}%^TXv7*KRyJ$dfxXchm#Yy^YJnbS!EjP}$00G9btP%9b)e!wzojk5)WGdAnD(yp zbqT>>T>P+JnKuPPFK(U+0z}jo?PhVQtcA^E`gvLH7nV;CHCEb|SQ>&G$;y zSIZtxoxoL~><*xP!u(ogf-E@D=-^qXHu0OTB`bt0v)zu5)MeB&l1$)=M=ki6N> z#D=`t{dMk5K^&i%Kf8axXe>k)3KQqDRO@JU?#XgTizZbVhJ@vjI^sf+eld`f!>X_* zcusQ)l|<`zgNB`NV*t+2JvF1C4a5a)1$}M?0;>3OzY|O)rJNkrMTKS&NxgHXGa1F; zN=Sm!KYG~nu3>PF_>(L-V@mwTg~hU?Fsv!d2)yWn_d zUwkvYymgbb`@eH-xbIfBb{}Ex_)E!4_gRZlA2w>ih(!3+95-EVo9VBMc$Cxfx#uMoLZ;{70Gce9#^_fd0SWZ5pocpXT&$1#?ULno0Tdd7r5ebxmtj7ut$n5Tf zM0Gt%s8>lk;wy_x=^t~MvOmo~EbQD|xe6T@T@4+ky>2{xG4MP|UK?-kFCDJuo~R+x zmKkr?Tl1r*0N7U2wy@R6tu# zYDVARAwlh@hl**-9(*;D$hW0m$YejiMaTD)?!%~Idu-OtZpKr0%hYv88S0{%W)T z&WFMKRQ`+krGdO;`Y%1 z_O7&u2w@?yk`_eONZv0T9`Uc7Ia zxTD9OinuT6sa|)wUtw%9YKwMWO3zYiv>9t+YWS-k7+vn26t`1<#|uc0!^J)gF*lR* z6#7wAy^txa1CeTHM8TzEZql>bJ4Dmp{709dbGwZAx37wKYpZ(S51Cj6mta zkGBmLfF9{N7~^)8jLLAiFZw>f@klMfl@|QN&Sg;ThiVMmalABke4I3XG;31zD1CUp z>mKqR8$Dn*Erc@^X$6G^)DF@W z@_c9ZcOHSvn9D&QX%<@Us6QtSZU)jnd%wxb0;_&c5!Z6ZPX1nus9oRJxOUf~qo@PrEWjAlRT+>b zj-{}222%gFwm+I^juqK%pXUU}^&r{p9a!U#*Kq8YoYoJ~I68X-51T^UDt+}i$*SxA z>7b24trpl`|B>AqJVvh6rVxOeN7n4iq#<0(6hpw`_a8Jj3JYZ8?O7}Ijo=Dqe+xVq znWqQ0-*pqi(!^ChT*K*Gi8R&caOYB;MDvZ;=#$h251|yq7YE8-Y+=H3qKEzR6?JK` z40mscrqZ&CyUKW0Ie|VZbMeE3ozc1i= z1-!gOg$6&Lvd)@|wMnk_VXHu155^@6AcH`S-%G8o1zM=G)p zKbF+rwCtgAub2i9u5f>MyiwK=S1Ye*MFuFJa?jl_L74habtbb!76P2_&vfU_SoWpyjwfCb6?)=28G+2YqOpFSuWMI3+r4sSTp1H~*ol82PWME2^CFomDr zQEu2L7)k3tx@vfw)`eI3HvU?3 zbB@>y3|1yW8nak8VRTvn7i7)M&!E?}96Q7ka zmAOl8mb6>#ZeZMvuqIX)vv;gVEl9c7e_y*)I6%5Y!rFgrLcRvC@7~XGA(%@5pQho! zw&^pB56|sJ$fy;x5*))Wdow1hLfkdDyuTuMUX8OQB6vJ&k<7omi$rkjy0M@1Ma6vy zo1y}Hsvt|c4QYQb2GJY!aiICzJM7Ir3QG)SOC}iA=T_qFZPEi z8lgD)MbDFct(uuDaTeK`N-Uh(F8)AV_mw^XRpD%urIyJQrW}dGuuCK}qLRa=0KIe( z6yZeK{td6s-4%TvW-!gBaszrP)#Xp|yi3{**}ftNupX;3M#B>}iP_W3xmHODms zn+dqcO-(AJ`BF}#ARk0?n&rVTC0z>B(omhvEG^I4d9RxtG3T^*-D2Wb74}adX^otS z_O+p?HJGdUawsLxxlcAY_{;eV9P{;t z8tVe3JmA6c7||20UC-sQKFU@9ckCHM#&UGm5vs$u-HamWf1NBeARD~{nOM#m8!CLd zn&HJyF$efcUrv6f#(^8wrx44Z_Ci;kbszftN+qcGk{m$>0EnArijnZIpP=DpBlurB zX@eefVf&+^axABinn3%UM?cNhg==7&#n{A)cT?!75nPgFGE}eZyA5g}Um(^%Fs1axNL}|_9O+B&oaGf)}g=;I6 z;O)?+%4(lrOxeE)(k(vhpPyJ+O(OwEFGXaFgQRO?mOgpz;??6UA>`~)z7wH*z|=25 zdd-KzUBmGE1vZM*nnWfP$6oruS0gZa=U=su1`C>#>Izw$3|?jBXoSbfLeG@yE;;q9 zhFic~#b}<&G_7xdaS;}3B9LLALJqxy4+_f2Hr+wDgnfC^^wM#EP%<1tfR>~&WE^Bv zp(>v!HxF2ZtsM&S60A!{mj7{LdJOFGb^=N*y6hb^hR<%ASY96wtOx|S(wgG6B<24u zJS`WH7M7U=_^$5~ZUZuwN?jK^$sn8iCt5>K@*o1q`nI%#j;UAPL(GLkj9dDrpW=>? zuGx!qMYh+8n(ZApf0L9qSk>k-I!em&&kg{oe-+l(QkN$xs1qAp8gh^Wd%TcjWeljE zQOq-L7AjT_ncqzMZJbiK+q*Df0@whjwTCnp0u^^=OuWOs<5g6JTuZW(+a)}fa<=Dd z`dCwJ)vaciix2X_dX)m!g#C4N5bkCckO9yTk>5NuKVr8;s|&Q--bCt<)U`F|4E>#( zbS5JGsGiFJxIXLK`208R3-?Ze+q?w zijdNtbXrX&&kaVwQa_i`(eTy~nzt**8_tSH_ldmL1+)T|YNft6Mu{SFyqB{+(xUF`S2 zo9N9W%G9T$1WZ5QZxn1*)mi9kpN&a%eKng4(zY?+$VCU; zx7{)S38AW;bN`sk>Z5I!RqJ-X9{OL}+`oo(xZgopny28i-{=0q{(U}}Mj+_?VvY70 zG~A071`cViP+HGtKNK`l8-b7+@NTrp@#|&$jdD5F+O_>F42KMZMU3&u`L5ApKFRKl z-y;6oRgb7kWdvpxX^W6&r8sarEbQ|cuQ@GE@?`tk%FUL%A}6#)&vQMDg$`f+Uh7@e z{bxoac!Jw}m>Q;;V){mS+e*{@?6|1|O03^4{q>#=lO)+uHBx)YNG;hgrwtIyo?ej$ zAJ~&9+=Ivc%2PIcRSCZq_GmD>lKG@yDieo5FpuW!^4&@Uydj_0NHbAvAQsDEM~^Rn zWinz!ZemzuWrTX*1Bx}+e86`tt`ZVPp4E`*`L?fbfqlwb4vBebu?_=`zO>zQEphLd z-Q0IW8+499^kS^hIs<9z`nxhazQ4-f7qYNqE6FZ+1*BA{pJwRAU-)jOUi`+09Y$ouBa+my}o zaU8-xs+0>I(q?+!eYj!fO&$`-=NB0l&;R&-jinSGM9A&5`PtA1SBNWBj+3V(ehqoNcDCEGyG%%X8> z9aV&AaUdl>t}1))wYez(c|NcNpDUDH&}9&fZ@lNHUC6Szw9q9Bq}jGE`fO_W3h|4Vx-kroa@>h_CaL&^pgEC$HyzuX5NW0 ze;GZ4Va`260};XfK4cX!?b5NkfGbWU%Y7(0PGqQ8Fg%0sSsFt>`YxFA{BuB6Dh+Eb z*V)c+O$eF8SV;R4x#+l2@)C;V&eez)M5K^;8&uEMVHOOZRKhJ&eAqjFEm<=suS^*d zR{&JnyuhoU_`IL;zN~WD!UCcC(HJvp>WzqoZ)GMwN6YIk51!Z43y%|2L1M_i3-yi; zqRZ!em)CRe^4HvTz4hC4FynET9i4E((!TGva~4ayQD-mLbb$-^u@)%kEGos+Q9U{t zh(t9&SCvWiC?XO=N7KU9`w&Ox&nqR38#E9Y$O6V?P4ljHioeXhvG9DT+(`@0uR{xf zV*7iUyZr&PDQau*9VpdH0d~{Dm#8)uILQle80HZ^RQcJzq5@H%rWo>bx1@kg)%ss! z=c+v_gg^{V?CFIg{6)&{UBpdy@;?Z9{+0BDAR#9N<4#B_d=jKiU zAA~w4gL$$RSOhZT+#vXD_|>*1_M-wvK%$RN_4b&_?qi8B)~z}mTOKZshvYi7JG7j(zqmT?T6s7#wp(<&mBPFK zT`<|0AUQ9GFkrp+uDZG2_c*@xa%)RrTg8!dDoN2}9X=BI8a|UCvy@R~U)_U>Nr_9tus^|Nep}qBcrl4jEa3bPcJIfzMf2s|n z{21s^IfvF(5*9|k(I0|G9#psdv+FtWxZZENpV)W?wB%!o5B*ilOq$xlvh&MyR;hm5 zA(pNX1plVxb3*rszb`(aHHjc5MqXr7TJqh%pYq-?)SmGd137i8UqgUd(8`f?TpJt| z`GvZraB^=RLv5R;t}5#J%6SUC`9TSAeUzCvrjuK^Z{u3k;+ajSPOB!uz_`A``5QU) z?u6RB=%k&JJX*92S^cL6Zd;Lll1u`O7`3R{PpVjoEHD=LEq`b9Xp#r#pOJRMg3}!d zD~$hg+oeJDl{tMqRXAP>+U~qD4`$SUq78~aCcw(Nxo!_O=Dw%#&bpat4>o5Z*owag zeqvv}zth5bUstgH4ed_(4+GdA)+3SiQnbr1^SQRmh|u*`lcwsVNe$VMKI`D|Fqzif zy;e?Ko?NTome`TnUae`J=5S$I>1#`pn=a8F%3O+N{4mjcIw>bX7H-^kU@oY7Bnq^Y3pQ*MVoSD5*wB92>6?Ub-`1{fTb8i?#S&VC2?mYkW~QJC_m zVDH&FeHM%M8WS3aciw!f?|-xUpnV|zWr+o(ZT^2&4ObWR*@_b}cp1K#L!2nZ}SWb&pw6@jZIw(TfM8J6ZGGOjPI_{CPv~TJXk4=gFVf2mnLRzHZD1x zB2zuBtEN;gEi*{87W!3dN7t>t3JxB!MR`*rfY@1jz1%f}|LL?Zh$pCpUCFY z=-FVkfkDYY<(pQPhIx(X{?nwuF|Ivdn(r{Imh! z3x34UsEdNa+JDo=uDrN{yx5g#Cl>BQp8m^)1LGdw3(3}EZlgZ2AH=Uv++<2IHl-uT zVg|)ytF)G_6n{ua!XMyx*Yz^v7v4H;sey2IQU;b1W_CJ{f?5+t#&a8M<~h#cxEtOr z?;;>|Au8;&1+0@h>L>0-F6F}SFXkjM%-9p_J3Nt4b(KV7;ij!O@MLm=I;m)fvVFm| z*N!8WjM+Sa`^BsKILWgOqgZMp(9U_}s~I0`&cHR()NY3{TVl(9^C=zXvSt#iF}kqJ zYessKrwr2n!H-5Q)HPcR?w*VyL0BLuRJ(3clWT8$Jd)5oglsT9d{$-7O;Ux2bmCj;TcGbJJKi!#jWNdzJfxJC7Y1pFKP16Y znXo$5j~$`HE$-o@8WPT}(+&k*=znfD8S(N1yAWvhf~nhURo1a>* z-rL*hpukCmz~xX1gHi!~;ZXJdX(50>@V2I8^xS&q$yA$7wwkV&h5Bdg8V5&_lK{tN z(b^#e%F zHsR&iuu%JI(=Lb0r;o$Y(a}F|T8Dj)S3JhVc2`_vTJATp8aYp@?#!uXPvh7rL~~nF zKXxn<2-b$AW)Ci&8zX@>KGtd=<+{6~Fj94YCcvdV&+-@*W!A@Me1&rq{Vk!ZmbFV< zwdH8)2NXEXch9LhwJ@REaV7DS*`ed3B3mWbM<~*_%Qv_H($@g&$(*?orY>@)Bquu`ODz2ul{LdvGu$ zABfK;wc|Cxl4ede736e^g^YvxBQ{lptd5Yc?$f`k(Q$?Mk!XBr&f`)KNmXtQLgnjr zUE=^K2A!t(c>A42{w4E7($XtToU4zwbIps?Qb z-Gv_wQQk{~TPp*5GD+X*2A(?!%nSUu2C-H)URRU49YCn|O-}l#AmY2&)V=!P>R+cQuZhpzAK0zsj8R&#nSK7B8<=0JA&-bM+>v(~HT z)>g40x|@g@Q{p#DWFwsdsy@k1FDH0`-`=^_%|%RXS%qEJe6t!tG~P=jvP8joQ=4$? z5yW5%4$2D~_u|mWmS{v3=dv1dQ^AqwN-OtA9*T2Qkn_TY$NT++dZ@n6T@wO?&9vqd z_+E+tK=-+GkDw#f)YaU8aWU~2$x4YpNIPWZDPF+m>Ei9vfd*9UDdy>W05ssS@!m(R zb?1%u>S?F0=UCu^fR|7ECStQ%%kDd$HE=;KpP(7NbCmJb4quW0JaQ|9jeffR|*SJ=MmJ(>sx zsHC^YcI&fYZ5u2oozF9?zhI^O*vR`FIn&owVVt-?tIyi)H?3xdx7?`-$60-i8D`Ak zai82SX1Yxz$>|WUtMX_zrxxPOQ=bLT`FuOuCkp)tWUm6gdNT#Q{?u1)>1MHwm!c8S zIy0X-;#JmG-60@}bMl%CH?$*Y7hdXWD7x(ZRX@7mn=bk4qNM*1VF(dYuOw!n3w#n* z@Sjk;$8MINmW_kgN7)`)b%WHd&m6KB#BR-3XIhU79GV5%uE(0yf==4^Oippe4#h7+ zSLcJewBwE{%wKPEHnVboY62z^+rES5l5xg9m_B7m?5_kvO;4k2;+pQ-_bCJ8#`aep z+ID@8TTW-dkoyMju^{lZPd0QMCcqH{z2j@;Oi5$8%A*VF*IU9_2t^Z zWM@Cfuxtw zosW(@QsuoX1IDPl)%<#%=AoB{fP(uiwVQ;a@7H&t`$pHD?Y~T(j-DKy?)WRHOA$>3 zmIIxx2M>bFyZ7tvS0S3sjN)qtkXJE)<>vLB2C_s`h%@M7;)sU$W56M_jV1k+VB1RI z>cLdw5OI6Nls_6dx?F%}>%GSq9_UAXS!xc{1T5fuInAs$heyfEBt%c*y99s|i zbiJMqCnP#VCo6;Ij(xJP6;>^?SvkA_)|gorIe?YcTdHiA&hl&TIN*#sPSf13cV)HN z@+DOe=<=71xSHw1Pe6t#$;7N*zlc$b!}V(5PNi4-Sq)$U3gCnaBe(9rYr?GRKj2wL z0I$rosN<}kwxdk5LzqW@GIl$eH-zpN*&~&~iLdvjUZZ5kbwS60a7kOM1!D#Hg(vln zn1=#pi1{O5>vz@F@E5*P$~1GWSpPIe8d8L<;5+i`58H41|w=Xo{1 z%JY+b1ZAqi=TwSC=~DfA19@5vXYoB4!)A<9hZyIsB(TQ0Mj9~Cevc_(t2+ zIAS|0sdZ_;^_b3OKe&6pwJ$7k9{1(_(m`;P-QkMMwl5{#@co_>mD!z-=_MF!C~=ZH zd%c@J=2E|V!gu9=gBqTI`eDOQiW(xgG~*K_8g2qJi+h)y8I>ZjFJ|!mH6QSJf~*L{ zGgKlDPu++JH?5;-G;7gR~=y`1#q9WO)83E-t`~< zAzu`OIv)X%cR0WHWtcRRj2;FpM^rtMyQl)skHq~9tDR4Ymx?0G`be#Ty(BvF+_?Q8 z6Bi;hm-c9Gt)-c|IhbEFJ2es6Vj`%C&g0o-DZ8;*uk1~`&npEl^Dd6xp^DrTAOXhM z+KlWNS{ze5xt<*j3o3j?yHj?Wmi!Yc$(X%B;*u-m4t%j=C5<%uzJrM5xGN>_X7+m6 zX(Igi^y_pddP&^UezvahH5&*kXEp4YuEE&Fly76*ts1j;zczWT|oZ%dl-Rgne zWMMnpdGG9>h}`S^>#=ed@GMHg`Pb5wOEr-u)xN7?%e-rAl;L^M1mhD~g^@oP^fVs! zR$?{i@G8#pX)FFo$!Bxq_|W-r{t^uEe=Mv;-vW8-zMnsGkG$V8Be7BoT$}TlAqnI2 zX*p!M+ErjUaM4roK4zurGb0(ya(ya159J*chmmTBkJ%*RFZ4l98|*E}wGkSf0&XF*OAL(KZ)mkTr0S3`pOMsr*%rF6sq~eWaXkJLYw4!_|KZR;4g)h)yx zDjP&RV;_W8}qEYe~FpQ`BkG*Au6tR6&J}kYUT!Tl{%ij^^+S|Qz zwZfWU_|NXSx+Cy!-N6O9Yu3Qx1DQ2R;+{qD!sfA?*yE#VV#bGL70&7BLvYt23Cjy!_%$Vw$xMd#=L4Y4`$}6b=p_LXE<}N<{ zLr2cSafexVdsL2!8x1{D9}Sr-l4mt3AA?{%+PQ3?5#W635E#N)OJv}4$Wg0p5LZQH zl6_xw9L>@=KKd)ceM0Q`Vf<(xB;FUMI##<%4JrXOY~Qmk=J+v!pzE*@+6Q=!XIT7x zl~fuIqM8cM1@(WUoDPB(J{obzZ&dgMnkBXmgjpOnpVkBS4`RWkE2nHJ<`MJd#7W)9 z>0)ODS%W-f{83m9eD9${oJM|mJoEFl9h(#!AhK-TG8PaR!Hr}@AS?vRE)KoemLFIJ zKNp33k`Oc4z6EMvHSh)w!-^W)Hr$@vwB)7m=6w;M1jBtkZz%o=X@rmnZPO9o^unUA zLP!pP9~0BxhbM246|n_1ZrMK{$-bur~eduwM@|5T2BFAN0I)H8%Wxc>`SOEx1N37?G%*I|Z=h6GRO8{znP2zI< z>8Q=ePs>LD!{(wvgyxM`s@lv>hr0Lg(6qt+rX!I=Hx$zbPM!s+5T3$Ssb%7SQ7_jY|Z%;(6oK1Oy z+Ni2m5d*kgvTq(U9#;ZIW9MdZ+IHWaHPksj-eBoi7Y2+Tw6_P;gCAXIuWs&xysl%( zOlOSmLsL(@KUg;7w2zT^&#gY-cn9=kA3mNI2za)immKc}U-g>KQji;MxVV9Rhd|9f zD>n_8&8vuf_fL-}!enGl2uNUMtIN9Z@sikwDmrA=;*1JKM!b=^*;uT`ma zdws7n=ZxWNd#xtgQNpA|_tDDdcC&-sa^ewO8G*|*qEOy}8yvJ++J zJ|j68@>d^c42_CpLkHZASsLy43_0k*a@NKQ|NmZL3FWL$)=M>QsR`KjYF}s_2nPN7 zfviLsbeXzXQVNi;+b0u;rZy%V?3zB9p6_44`vgc`!_Kb0&?WjE_N_p-4TC4cjK_Xa z1|N?dSF}7(E{y(8vOM$7x~*{muAbi6-D6c9AB*2rUwgGf2ajvMjGOz+i5P){wh4mS z4&*n^sU9UfQEgf`7EL$HF*yxf4-<#I>rP80wx4!fWT1me?eW@2)(td)572huk~m7L zciUqDn{iyPuaWM-)zy$!;-`kqI4fs3v)S2uk3$)N7SNzhg&0hA%}q5x<3T&pkJ>() z?8k>$_svvm#~$DT9qpiBmcd^z?G5Kzc7?zckgI5%roz=bTx*}k!wN9W9R9*w0o$<7 zwe6!xtU&u%AD52wD<4#YXPdIi#qZDhpD~mi!4aRSE;D^2=i(+t4e8pME~ak z{&55qP!E?6#II%btRpf|EO28!QDf`A)PMOdwe+ha5rK2>yVB$;d$fj)C6&^oAKx2; zsDhF1$AfFp+YP;{TyXAFm|{_B{e;5QqEYkPzVl}`n=UGgyTalZ5)RLRfBV+}ElARjZKW`_0LGC1cSmPO!7xPtJwz1q$*UtT(lM69yDxe4!UBwc?9P z(PSo5fttR+#m&q0$^p-g(iz~smw_E;Ive{5|2QDnwDWWORsW%%i0TetxWWpCo*A!m zTCO)UJ(F}&7vB!iKla9dS+{k6QtQ&HjgJtQGh020`1VFqW4GL_zrsNW*2OfnJt+BT z%K-yzjTByzepzv>l72_JaUmFV@B^%RQiI`RpTr4SwQ2A5s$FOfpp$=gTowm@T;CCB z#=U5&dpdnE)DKrw2x+E*&Z9K{c5xjxPsDz%=F|-3++DX9I8w;QYCAT7gEgDKSvIdJ zK67s1S>`xV1kG$JG#L6Bc2hj-xdZMbn-jgr0zGIyTq8cOJoXS*hJ?f$fXEW zJ$Og#y_|esc#w6j6^mH!5%DvU`Zk0LX$c#G*i2-uG0Fq{iMcZIjC>^FR*nqsP`V?k zQv$=E2JS-$b$FO971dExw0qP@^k3r@YKI`crJ7nQg9MC*tBAyVBRuF`h!%vTck+D6 zwRH*S&3Z!#hv^yt=Kd%;oB8&%o#Ram7otp=)_=VKMEm%W9!~W7KCG^!FUA^ryB&XK zPJFeE%0wwJkKB#!JJIP&^CGyfsdlRQG-@SWJZSNZ*tl z?t@v5K-e=VadaO%oBKGcj)&jckgf+Z-Sq^J{&wa+{~Z|C;i|Rr*|{|FPj;UgVK)hm zk!93wb(;Nuh_08}@fD?IT&pKQqv+#{3gxbE^0=;wo!R^w5wu94GGZO>^^Xz)(->?s zT(lQGdU!rX-806RRkyOVb<}Z7lp7yE5_Oq>^lj3q9$Ld&>iFD5-O|gAUPL8!HCQZJ zAi0U^NmCWEB)lQe<60K(Qf2koF#!F6W{nTkUw;jwwC(0i%ed-IG@Y^?0gNU1vO<X|o+yAefES&%Vj2`_)>B}}ZQe82cFuLFAp zetvC)*yANRb<0%tUO$Pz$sAu-m;Ai)RZVebkz?#jvU-MBKiJ~`2c2b9zv&qo!3YI< zWuA3lL>lHGfhwxidSB2@IWxxHTHCB20{VlpSePNEC%0?3wgKgdls?&Tb>QNcE_%b$ zDE_qR{dDB}ZYRvCY~-)lxSksjBFJ-+Vw(_1v13YK_tm(m#t6z>(UtbMJ=QQ|)H;g! z<6yIhg;4Nfe1l-!>zoGqdWx1Z=)HH3SQp;K;=46g9UuMdFAeTWGRN+Q%6j?9grS$T zIl8<4VpR4qsE)+&u{Y$`{Yx?KOOrHlk%Fh{JD0_;{CP?$p82k>TNRN`*}bddD9>8N zZvVvV71gNe!P5Ol_EmjIT>M!BDV47huG4g@9KGndSL%!e7=2?ln*1e% zpZ_%|u-A?*qfoc&?vA@Z4rG3cS9>iMa?>Q~uJ&v=MGHO@Er>d(5Wagvg&~ z4GGo|qRp%d4Y!BMenLM{7)EOPkjqqk9ulNMMdY!2_9;hiXZ_nt8@__?INO9RpLhvH z(=_MI>a`k-jdkwps5)zsHQH*>Op2;%eKbJ~)x; z%J}L&o1|75Mjiemvw0nadz1#B%9?7o3}Bk!e1Ujr<^N;^hwzT{L<$i%XDl3Y!b*Ahjkji(gd|LgF!+xroGBbGLs=i*X$0h**E z=|%xI6a|7P4a)X-f@|v~sUN++e<0%ys+)O{w3f=+k&^r}*DdG0cs;>?Arl3Pi>{D~)tl4ouIkA);MxBM zU-b=XRCEpbu+g;?QQaFLtt!H;`s%cW+A5JT=PY@3BQ&#ZOn96)m_~a1z>|O8nSJgt z4M@q;mK<){4ID=bGj^<7Dw{g$q-c^z0mdf(9iA(~?S{p(FS4FCTBfoSLlw~EBM#l= zhWo?F;3byjfyn>z`1GNvEs$N2=uZyqSQ7g<87&`2t5RP6pYdrU&C;$RZ!o`1L@=g& z49g5}1^kZ%ofKVz2iWl@H=#Z27w@lIjG?7Q zIPRg6({Yw{!{ZU=2pYtyrzo4qwNxl(LrX-#NoJi{P`+dNg0zr2}e0 zD|%caQa83&YV<_bQB=9kNNwsKi@O`%YCm2`ia#qU3$>*SH*M*)sCy2<11j5zC%)K_}Z_zT?}( zquC{i7GlU}xf4z)7*{2aaP7&4Q*+t}* z@g;8)d(<*^Q|#m*vnk~(@&y+ue_a{RmEhAwX)+WO)W{3NKNrYeAf}x)*G!8_Rh8Qa$un z9^b%{cqtfs#5fL;^(lQLVdjPGk}Lc_4-#KQEdF8cVbpg30@NYoVI3?ExsM1proEAs z3UZR<(Ek$sdL)743d$jKOG?K$DyHM5{$DV?=7?5yuiY<))G~U-EJ}79j20zS^Jbyf zQ6ZM!UiH+L0!`M;67>YRLie^$)YQHRmF?SWzbB8;LMyey;#R!_G7i6Cm1LvU^2#@3 z+x)h*--7tI|L0eK=ui#(sCJEU;ec(#UZ+dt7TP)Xr1Ca^4-dX30xl&gp=saIWH!?O zz^4M9`ENOfBN{wN&bC5(wsHyGw|v!OvaYCU$5AoqFK?kI4xhayw9ktZoJyx=|NU*6 z&}W5;Z2=A9zrV~M@fzJ*)}t_Zh;{J3pQlhuBZ%UExtB&?SrP{l`)cz zzmjy|vHq&XVgWkQ)2lmmicE0^6lQX z4s}gV)CJ=I#|^VU(jh+4fU~S-lre}1F?kgc@#h!WL%-z@UkvkWC@R^<@9E?_#W;I7 zaVGu!M!|NZLB7`tBYRG{TVLgP4ZPa=Z0i*pGaX6>a}xdzS{mWG>p{P|bOJq|-Yq*; z>a_FM-+M1q2#M=U8oDzlasLGACA43T=;d$NhW&X^VP~Af%m=&l9R2fug)||kj#Qy5 zd~g+bgRlTci}{Z%U{xD3Ii&aZbN~-y^)Z^v+@ox5T^+)ceTn?mqfzD~JJx^|RIT%{ z?uzwZZcTGN*#vfav&!UZ4~3r_f;q4B)p;3B!xE8o<_SHHg!lNu?3r0h6MQ^sZ4kZqFDkv@;ZR_B9-7SNSS zkx{CkF_)VXs~=tO8%qS=ncL+S|INg7_%T%d+znOu_6flR6#Y6wooXWK%^!6ECWpkN zSRyj)BK0vmi|w?-J*-)q`>2-PCo()@zUIK}5x}~)$z4@e@)^OTl$KorHmO4C98wuB zw&YXGK(0@6gkp(Xr)-QxvwJeV@s0gzCY1MQ5 zB3f0*&;61|>jW+Lgd9yiwNG!CzL}73hH~b;Vrj)abT>p=ySe?4Nne#)QPA zK1$f?iKXhqm55h9yQCW>nm$ipj%iYqXE$A1qS1h6DtDvV!N9@EC zT*F76(f9`$$fbA%(^~xs?zAv$J7c~4f`U=knmI4@rAkD0r|S6Hv&kC83@K@lWw{ z*g}4I6~z8#^ZvEoqp#rG{nh492q?Z83%^yc_^TSosPjw*Pjt<8Gc!NQ$@*-bR9o_i zu~28ulbA<1cPx2uZ=1=lCb(*YY;kVF^U(a?0z0s;oX&$x+d0`^5x&(}ohvX6&^%|w z@HHP~wD_8Vt^_e*hgTt}NV&H0D;;C-{=5SqEfNgLn*x&LSJ1z3k6Dg#8!VK&lS9ta z-(hKs)S#qd$zXtChIotw;x~(CQxQedNJ4*tAQrK?E^0JJM?*~A?q+jsdDuE3qw%`r zGQ6_LN!ko*P8=hmE5ZM3i5-#Qv$>)wHVn*Xb&_=l^!c>@15{crNx1Bx1KQCSvj|F> zo%N!?ZK|!@l^>=|I6=>47Q>A};8BjVt9SiO=W8kQO4!ZeC6WwLehQ>8TSvqz*w&DhU%V`GAP7}J@Xfa+2xUfSt>v%fcQvE#_>_gR zlz)zSW_=z#lpeNUmSh6BqV(+z%arU9PrSo`cR^WT8n;p7I5ZD<#@YXE0Nd(}D0@^w6C_G+ENDOwY7*Zq%C~gKY zu>{F9J8Ni81d^xY%mVq@rrY~E?%wH;o*-ZYijzo&@8~ozbY(kCiAv8HB*>IH##UDX zF)33v6fzM%WskpjkWyfYsJ7^;m*s6(=NDLybz9Q2FE<@OkL{>20(APkWsNCh*NkxWDs?Y?9X|7h z+3q5=3jeK_akWBlaz&p*h43fUZI_Ofn?~u3y{7zEBlxpIMxv7OMl>F-g}U+4(6O@Z zqR0yu+}BEzM$rAYn@2LK9`tiCoEFLvOdO-fb}7ioJwg11KCWiMnPasSPv#T&cEK(; zfqH&!`~C%1IvUseXX@_}_d4LMW2~gWfAPE5J&F}O-wTV5SIR{f z`r-|@#8R(J`dT41hNx+1)?+;luYKz}PsbzsH7YBR+E=Q%e&nKNk|7KQ_~EQLveU7~ z<_NAV-NxwCAE1{%7jpUwXG`)qMuoQ^&Pg(<{w;8U`vv_}Eor#?9m*PVWZSXYxC}y9^A*?Ws3hlneN#i*Pbo0SG5P5-0JX+8#-K5vBr+#A1{4 zXXuLholK!aI%#7&K2=YHa*%SePdXCN{%>InC3BiyzKe?_L6BCUQYj5J3jDC=!1A9F zr{z)&Id^+5YK&b^KelHEG1A=&9y;soTD<2k1960 z@3%xo4KQw~6I};)hw#X`klJp_#tSk=zpNFgjEf!N+Bi~kj&!R=rL`?(AlsV_SW}|m ziGFKL@vmptR&OJnVD$FtQpX3q08#SYf{9pJ{&Sr$W0Wg)+;imYqOoHOvk)Yt#BDb} zyzWW7&=}f~Yo(Tn*tru+{j?HZnrvLE%FYt{zn*F}lB)_=vkH;&fP75j$#ZSFGWPz# zkLI8LH7PP?UP${wK+!sLAm)pJ6DpCduiF#5lgcRtWVr9Uwn&4IS%#F)nQHMa?1FDl z0L(E=B=1hX$iHelw;2Wp)EZ+kXl9ENiJS2-cggdhSBjfIH}P+kq!{&)yS1StI$0dv zRVgQi$J--VTM$v*Na<8aXY|3O^vz2Yo4Ue6r_9BS;QINEV#usd6Ck|cVHQIA8BZ&W zT#{jj*_)t9CUL&WMWR`P@P}BNzHowIN|*t9r0YSj8(B9P@%|SFneVL=ZXLYNqKi}A zv)|5YnhM-84ItaEWY$|DK9#U;(P)}gqfJb@Ecd@eZATO1cr3J$!M1_<_b2RWBgYWh z>aA&JU|HgS&1^@%@-7!SC--)rz96MBMrh&1v4_jsa?F+jRCBtM!Kfp<+M7`Ny6&Ye zG5V;Rk2`)DE%4@)BNv{NU72~sRoic-+_JzIJcG(ZI~27Q8Q}R=1QW9R>Ed(l2TCXW=uog zwVG3js!R9zkN^Dt4j_I}e_&oJkbUO4xHMb2HP6dGd*nbqWYdWB(6y*f>_e!A&{1Ym zA>1Sq;-K+|R_3#eqyAq%W+Kr@rAdK(htpEm!P6(2KwLBt9=o6oisBzHl86u1oyxQ` zSW1se>VZKWiLWm8mgGv!VVcTH6Y|L!TSeIw=~P>t8}W$N0RvwPD6KfhzQtsQkmY#j znXM{J^P!}WoA5m){-ut?+?jC9-6;wG5H~NleIZ-{QM|Gb@WbK&85l%$1;zX`FQ2 zLYAE;2c@SKX|Ql68N?<>82#nOM_+`Bsv6P;U-j&=PP`p9sOgw0roP~kA2=J%8?mm& z#~{!fA~J#G>tq~Um&G<*4aFvAL&}X>DEs;MqZh_pKI7$D-qG3nF2Otq2z`iKxBv0= zoXYXD7C&srEC3bT&041=qm2AVodL#+O!=0SgRK@c<0G^@KQiezVu+H8wc|ZZu6XTm zU2B9^uAf`&Il2hoQlxO$2hOR_D86@?_Z0|Zjzc=W#E#G=!ELxmlqYW{6z&WRk(2X;o4rf zZ+)7>;9Iru9ySx6&`*3zMx@Dy&j<4O1#?Wqp5&3IUnz;si)PV#>Sh^0Qynl}6t5f}1a55N^@Fz7z98=uqf$Sy)tkX5Jpo#Q* zpoX)N@-V;0J05^;f51}SMI?MeFvO?j%azM}-}|a-l%)Dk9ap$(hN&(IL>CLHZ1m4R z)GE6z?1(7SWr2d@NM`7SoYPWdVl`v>cZgKFmdU zSpUdQPkYcc0?2NF&pa^6<-k*rzv_(zLzASwT!rxhJd&=EhlDz4Wka8L$;squgOs=FKoJ~!&jSy zt57^|LAu0`XLME-Y1oIh!D{K&dB13=;$5?=zD=RU8%j4V06&c5L@%}D@G~52$}Byr zd6{F{$elra*cIXzB1v$2GG^29P6JqyGRg3pC0t==42Xy`bS*Z0c_kJ-Q)H!G6A^pO zzxp*<@HRB>=-JAc7#?zRRZ#$XiUq4RLBe+gBE}x`p4f9f7Hj%H!Oz-zr2PpeTl*SM z^>OrlqZbQC=|k>6ZYc2FtPW?aBDnQ|)6eaB6!Md4`p0;aw;hM@%e{@=lP=uL$a`}= z|ND|@)U{V$%17o^yIi{Baj)i+#aG=kWfz|yX*<)(9mPPSwepCjCd2tI(foX9)WPF+ zKt^)iPEVu5HgF>fhpCICL9oE_DP+TZf;$_g;qisu?Eo>Fc(|`B;|r z?*sLyzT1q8S!{r|$=bd^1%c?P#J+Hd;@VL8!chKOs-c%dI#yopeFRx!Qd6fScJpX} z_-sI#Q;b6@f8BOBQ0A7_$sP*J;t4>NGubS1aPlUmtMt3zTbb=0{StCs|` zkf-rY5HmjUE{7CZ1}OBHa8GKDRjhH5^;UK9mst#~UeE9~+_7 z8U^Jp8esK2Q)|GM?L~*3`S`b&J@8}*`@wAKZ+F}e9nflIN%EJKr>8zA?CbH$v1$1$ z{>eFYoT4Vh+jQRL5`E}0n2a?y(MXNM`q)Hn=~*ueX-tuS`;(5vy+ z6C#LZTEqMY!rrNbWOs2>rHMde_)%ED5DMYR#!LG`IxRaiv^~1S z2sR;3&?_w8TY|(Z(fQb?V3}tYqfqLYXs19a|5qxf5S zUX{|9$I~-J@NGQ<+p}MI26ON7>k3~<#a+J)Go|$HYC?A59ox14Ss2|eFqMH6?2Zp~ zdL{WWop)#w`)W^OAwtbDnTljOpf2jEp6ga#1b44%f>_3*o@BCMUxfO1iDeZvd<$Kq z%ZpV0xsMAbB@3;t=LNNX}Q4+-QWQ+jjQLv!%Cu4bSWRL`Na8;(+PmhETW&uDvp#k&)9CnY=bQ=N_gK9d7cZuLDx z@>C8(%3YEcg|}L-BFLsIAU|L!ga+kR!9lq5)|(8?F!QPUc7(c1-HT(Xwe{l)LoyHv1Ar!%uI_1Ayk!oZ|*k+;- z)l{?_ux_OOSuaC2`=W7^Q=2k0I%1-HoIXc;j%?9P!t zU}0ITxMt54(Hn)CUHJTr2|_ZuDi;xxTRn4zY zpBE!UTvI*1@ny}4c`(3pwhPuWzDE;9%eu-TaJFrlg8XpxNmVnPP!c>vIDMD9)Gfw! zYCkX8GsLgtzVQ>k0+A8Q7!#`!OA>K^MV)$EYc^Mb-0Gggu4OLZILUQL0@B8}IUN&- zzx)tvMBK-;#o^c|qr(ADV8Cq%H(r^(7+%r&On7L(<@wJM3x(v!^wvWsZ)^w_AEgrs z>#iK*vU_(DF08&KWX`2UY%l;n!8c;li%Rh^t0MrTSQzfvx2maQ8uo?QeyzP979N}bj?|jKCe(TIZKZ(D zc~f~yw#B>JxaAh`ASUg7SN4L9q;q`B@D-}pglWYqk2R(b`SP@Ht^=K!m<7W*jN_6xvi9{{ENn(n#FKCnaXto2;$K_6R`m( zKPQdI<+UqOR7gL-Qln)e@GS+Wa! z2cI&_S?y1QFSy2Ee0#=YR+0TCZ`E9q1wp(My#}6ZfTvfikU{!_o z=hhR$4QVfo^XT8@Trm`>=sQIY?iYpky3+RjFksRkr+X17Lm6JYU{&W)e=CH8B^56% zU)bDZ9QnfGJVdgP^F^`QMr9g&mBr)jo)>sb!+qj!q-(a}sd9f+#}J5t%LGuV%U2z^ za%6Rq%X9Z57mSr0y^`95`#fyR$ZGPE`+*R&!*d+Fv~Xfzl#NXqLRH{d zk^P3v%fk^rCO-O^n!38_1D3XJLkmsUuY+acS_ilXpT*UB!qE6TvUyUVxF46lP2iY& zjqfDS3FwdaM80Z}2PL14%1jNq%rHy6>>@hP7F(A$>Up#d$A9-2b+!V|ByT#17u3@? z7Xpd-fx~8NuTcByq{iRTU4EkoXqCfhDr@_iN{fN#x`zCenP);?sCz}vDq|0DO(cI6R-Gb*KhyWqK%{XgRhhIaB~4{~M-VL) zxS4T)U@ybQ{Q@7J_8`Vz1y39YsAxv_w-ZdEOHTIyY( zD_xOM0b|tnXe1V&g53v1>4cvcUq;vNN%ov55~wYo^*sV4O__2SuvGXxQE|#!Q50ZB zRWV!b)e{OEj)Ak&=v9GA)jR8ZcHS~Ppi4K6d4 zT6iK82i9&)@-PA z0y`EW6b#7Cd&?K9`1Q(m5W=qyRA8kyEo2QGk=uoB88hYM9OHfzg?!HxKK~&20j1}? znLTR8HH~ZM7o_OxuDCN{!Q#Xno9S{8O(v};si zb&Z5)O--ONNPR0xxfL$o^KM>&68%8H23tQSt!;{+nYz123PT{0b?Mm=*78k{-4z4$ zzLn@TmmLy6=Hw3Aqy*aT;3=DW11;_q$yuF(iUKU8qSiD@wYQaME=vWRPHR0MP~mYg zk2Q_J!5E~@d(+UrK_!A$+n5Hkzd}32tb|)Oj9(gLb{|oD)1kkGu!XXVBD2QAv^z|fKNmI zQ_0voh20n4Efy%qNATvk!X!V+La3rfj2zONy@*`$Wdl}>d8_heFKPC#3c}f+u)sAq zhrKHKTFKW}7*0)Vlw#qC?)AR^#CeqB8L{OnOs~XH#~Y9?Z4RUK4VvlID{o-QNh25v z_kNrfM)<@MuB&M(W2)OLkRY3v~%5_gLZh8VtFXGx7nqIQIDxeN)DP# z#JT5a86HS+92Q$C`O+`67Hirv(}cFm=kv@bDiGZoSCO$Gu^jH_-Z;6A z$G7@-pX?9btvaN=$1WokMVldp!JUq}#jYsEC_rRt7g5p*trk%neB}~DZCD*4?5Ww% zca8NZZg+f2Z3QvjEZqWD;LeOJ49b6v%v9l{6Mlrgkr6k4zJ&76N(i5ZPl!(zuG2Jl z*Qa;O#?3AmsvNQuU@cvugNWX2!8HZe^8tMrfwqpj+4owHdCiyf!x~mAk)pk{q@Vn`bIj0Rl8{wcRfSGyG~jr!cj3x zvT`EW{hHRw#9LYq%buzNKq%N0HHjFm1-2mEHl3nI*bQ%NoH#D(yrahhz^2rNcI9i* z^Vm);(sHYazRd77cVs&;>f?K0B#^FFFB?XPR3uZ>|h?X7S3?q zEoublG!+=An;}hvW-&0Gl*3Bk2?lMB5F`e|{VL~#^!En}-5|BH94vwZ%eYpQ;jdpt zYS$jau*>YK@od<3#uNFnxU7eDoS%q3532|hXY8Gv^PdbFEPT@T8FEmK@P|RiBh7a& zK8g;oCVRma*l~q$ynXtp#3-neb?}kO(vpcVvI8Zr6|W`|yLHCFsvrjie-u>wWG_l= z>T_#|Vm7njbkn0-Kho4rqL{DQ)P1sVTp9B8g%p;IC?vD{Bh3cy^DY15>( zpy%_(46?l+U@FO!cT_=3SeF1mJ%QmM{?s$Tlu&;JWT?1v9U)_x&Pw_V{eWI*<%Rw@ z%vRQ#zNvg!&j{Ih+}?%xSxwB>LJc(5_$tV$XzM*+k8{KhXOevmd{$=im47EIAbq|O z-}`*Ap?&(x-D$dk;9#(b8nq1OCM(5jV>Fbqbpd?q20M;){Fr(DkXGu)btPTgHr-Gu zaBY%ICUv##P#Dw|TEGFy^U`f9c7(atn)J9hrX2LVG`qa{RZUfyDm}?*?TjyO9%1*r z@4`9NDfz8F_k^Ly=Ox4{cW#P0ku8OQUvJ}vMrgOsO0rMq@l`R(W~V{aUq=|jzua5C z*fAgI&Fp~PAdI4gB!j+7ejjoSunF&ig#jT`mKhCgQFa7b_Ee!6S}l(#pyZ1Bc&yAc zy>Uo>d|f5VO!VfrK}=ST2RlT+67T_w3F7-zB;(0;%rLgLr3q^Qq*LOO1ytBq=|;5{ zJMrHrcH)t{_v2lQau#YtSe$~bQ0hM|!=Lt2wh5itpgP7{^B@Y^Vug_V%JJpEWuwwu zwF}PSntl;=k)%w|wdk<%wp*@zcB6}8!bv|WproiQ?P_VCpWm6p; zfvFvKGUpZ3#2E|cv%Yh9Bwh)%2 z6$Qe8?^F(`!&(PL`Se)3nOD@VQzjK^P<#nUDP0QQG(c<=U?pca_j}g%Is{+w+(_o` z+&YM>e?7-g@j$J*_3X#b4BPnrs`FBdNpVN5G`%1x6^d7e zZE|NMoAX_Fb~AgH_cL+<34!RwB9y#bne?qJLT&2cEuSTUZ9)ZiluSgzRiM(pUI`J* zGo&lsjqo8F=M{NNPsD#^$eQ%VOW>G|eQ~WZ$>k}e%QZ@Ox^?knn2`AE^O>4yqWzSC z6L_Ohjk#+dw>a0g{SH}mVISd|Oi)bCoWnZa=+iZRrUTHuYFpEDY{5II@ z5Qi&wDv)Z?2rwo0_%i$)`cd#(djjd_rYOI1*5xj+%xWrrYD`TF5B0X;!xc)dM8QOMy8-|7ONR|U5e8301cyvz29hnd|@)K zV*Gpt3mWKP`MFUq>q2*vm$x;?eA=@K@!2q4YYcI5HX}^%-bS6+vW!Cg8UxUsv@+tM)^@jGb8=3y^2_i!3BKd@See)~v83taC zW7pnTs&kkj#L=Vgr_{dHOic#_M$8f`{qoSh(?eW$6PgLJcSaQ8xDzmojo5jF@`?_{ zcy_Jqlhv}3Kc7h)m~yc)2hoR-uY~v!Cs&F>EjMiBI}|Rx!yC0te`b7+$0<&Opwf{w zNd~cn64^zALREsk5nxHCpZ1YqKoKKww2gDrGXFJU3``UFL8x1$5{YJ6fykiPwP6N5 zJDC<7Zb?;VMNBwH%dy9%lI269>Jt4t?uPx7ZzP#bH|$j<2ykn>K-d6jJ5jTTnY2-f zS`{~UWL22O2W39i=RKk~yjfQs~=fDOD6g zB@h_HhuX6#L^W2e&M@@=m%_ToK%qIcvD{C*cGxCKSv>0%l zCs?+TK0N>Y7-I_^IH+sg1K|))^KSU%9eyWz`J)6X)Xh@hGjJxnngnjBbO;P9YP9|Z(N__U3MtYos5k< z!&!G!n^R@in+cusB$T(nD&7kR`1}gNl*7WDisztFOBIW-^-k6IW@E-wzN4F)+O26A z!4ouE)O*+5;s0{$t)wl7nuz4@q+u{P2EH>~0DUT(dXnl)Cyi30U4h zXL?+HLk{_xFmKF9;!8BDr&*{SLd0Me8W=9F8Dy`|^)eG5{U3Lb_kHLNDC&ykqOLWs zW7?2pxvKI_CkkBN|AG?;4;Wl1N#ZGLX#glP7@k1KYxGa0O?aNQlVE1+oYvye&X&#E zG!?ZOBw9Jn=yQHrXig~9g2g5SUy?1OIM-~xe=&}T_aWxH2_uaT?#&A~z#ZzZX*bA= z_BAMA=gi^6d&*t^ha63=b5 zg&*(x!_0F+$0bsdebiM=o&Y)fy&DOOw4G}S*=OBV{Hr`iEQUC1bUt%2PfwL1-rL`a zdLh^?)E6vC^{;uB2nPr`5iv6*z=${jX>(iBQJaufcILc_Aw+0uSl^>2jTd1bP?@OE zU?ti3&`|qa`ZVj$;Y=VLRp~^4sIxrZ5R19e*`^!iqOaz~0#Yx${ONg?ie8XaeB0iq|@Rs#}X%87=Jic4f z?*0WKe2x&LJo1Nm1li?Jp#eC0JuZvP+|3%HG2;Rm5VEAdPPE;DLvAg5#47oA07@G9 zaUNKnR)}T~jllOMpnX&NHqwp)_>A>R*gL{VUa+CGpLtJ-@tIUHEBl*-i*8sY<)~ix z92e!QC?3yKG3$yaA7`Yzv+Q_~+=-P}eAu>Cxl*Ds9$mUB?Tz6;Ix&u{BHlv-?BH2X z7h{kM2XnEefV{?<%0=HNMK1;=%reB%Gp}%PQT~BOseS5(Sd#o`Qt_;BQdweIK_NIS zN(`g6`+iG<4c&4OFO>FIv7;gds{YofR{2zP@sND&+UjSn61KPjtM^kRR7R?VG=o%P zeH1@G``u79#8|08+p;zP#EroM&$Mqk$)1oRQ01-afKkQfvNo?vO2o$Q4Mwa*DryA# zGlrMLU{IP;Dq~@C5cKIz-@A5L=E3lSg(~C~Uf?ed=(_I_Or_##Z+t>>n1$i3^eg|2 zJ^FI8#CC}tq*Ne&Px9)^MGK5X!|{MMM+-Su45U6>2#QIt8Re+)^b!t`jS4vy@kG-A zT2tY#!uIDrtgSiW+XN&ULB;lzy((@=nsk_R2@?vrK(SXWmY z!JwI?%B)cOXKo`9wwT3K%^5$&G)UfenDSFYa3jM3Deie__gjTNzIb-K9FVR59jgUl zd%DtZL$B6P$gOL9&mQ?j685+8=o8OD&sJmekXcAtS5)vMFL!Xad@mSY#>!HCD<$81 zZcKuFq6~zfS1G6JG5~L{octzS-Z4 zAz@$>+^3Edv4%}g8K^fW`aXA24)5QvC=8A4Vx3pA&Cr)|e+mx$X)Lc?!OFhG)DuZ> ztI^mh$1-@dgh`hMm=j$rM6P*bOimu7uvMf*P5pX3iMd3h2v01GqGaz^Niak@^;4iC znnN&s!lLc&<>hv;cUW7Z<~72+aZ&+s@DF_xhsW_jdt)42>o`Hj^BQIH zn&K|$BvpJ(gl!~Z1Wu51DXrW1Ih4I51*QU7@LJSg5eh%?33$^pn&Ahx@N6&p0j!3* zIl4E|9R_mV+8fKSWZm}le$ucvjR4c6c5E`txBTrPC44%o&B*ND-se?1M3Qmo!`Mc0 zd$Ng%(WP}q>e?v19}`P^B5qF9ZeEJdVXmGI$Op}pjeVD}kiT+xAD8tBG7host zIUK3tHLXQ-?(|gFxU9n3X!fK+Bx8aw>TbbUCV)=L&o4o~XY&%~945WOp>-@y2d^XL92j+SoY9h*)Nv`Mi9% z++^t)Lx`j1I>E+y*m%tvN7T9_spY}stB?*ywWhPYDzq2HmtydxQ%Lr7011H zS+ACr^A(UNY}&mex(`!grc)RWK;HQm7Jz{c#0$BF@2rbXShSBEQ2b=?#G(4!d`K>B zWC{T|Y@PY?*Xnb@Qavub`1pkdDGD#?$Z$%XRh`cWXcmJdtUuSCyW02JxzgRLxIfAo zRGU-%Q=fd-+ZZoSZ$@bB={$)PT6LRm_F`(DI!{8$VFc(zs`xOZYHgD|O%jvR0#?&d zEh&azB~l~Do`%)cYxAq{F&jGFW<0<276NKEm5g`ER>bXXKb%|oi0?d7L=q4Jc|bRn z8Z=p1>o;9l@n>Z3?80tmapk|QcG0r|*QJdfY0dFHHa zsbx0CgnUX#W<1MML<|i|PuEU$7C$Pe-^9@8<@5Pqe-OQCztRoiyS_LDb6HyM!i92} zsoHZx#e|jR`M?X-E>f*Ur*G)kU6pMyV2Pvqhhk}OdIYHIxsA~?+SBgo)=wScDbdRbNZOe;dnwr!XI7mm zT^MLnn?6F!8wdxezOs^*Vf}|yKR3(c=eO7c2o3FA|w}=QIX`{6Pq|rW8-Ho^Vk~OgG#0i8EG`6w*+oeop8Kj?C6pNk*0lF_(B14C0!#pad*L3j14VUb`^)$voH|MJg2j8W%ZUbzei&2BqApYYn z2VZ@=9c10|YA*{UD=q9vG553qbQz+amfauv(Bg$pgZ`xajU$DA7%h`P2Rruo_J-am zP90~-9(tYbQW94~3yt6p9rMH9w1C;WiRduBm`QN9K7y1?#-TJZ$k#^3p*z zA^vr}_pVKqF#A_tyCkej#z`T%%62_wMV#D3P9MDr6FE7UXOdseQb`#pejN8XFRm3Y z-#a=27v~&2A$p|abe5t1%p7W=^N?pW&}Fb~{xdg%#*%A8eC@bwi)j(T~(@x0kgn^2e&< zLleH3*-DIs?^Ej|_6(+G>WwAK3)AxI;M}Dkffs##Kpc$(N2_P7$vR*Jj=hb90B~TN zSuNb?!Bho2sP&j|hP()Jt;+U7eJK!=rEmsTc?Uag!b{RB_Ux<8Xq5hvE{4~U9HkkQt7f=JKsJ*@u#HJNKZtq6stLj%#*(>9v@qI-nL*Zhv$#DvX`QI9# zhk8YoX3ws)(hwSSV=4uWpQ<-kQ;4ea{`pJ*SQWN~uW;S*$e#ssW0VoaH5474dRe+vgZxYi*l<-f9rqhm7tToHhC)w%esoR-#C9PO-w#hTgL3AefG!NqIL zcDj0noX(AGy5N3-Gi6{&y~j_pD8hnnzay7~LDVb4#ZHm~?WhurO?-QMJ5uY6bD>>l z9i<(Y{j5ABL({jXJBxKYTF3=%x*gP5aIb2qo&T3OPm6;ZV%e1L)auQcxXSW$%hy~O zT}yeCNQe2wz2)_c-H&{w4Gc_JxSGrUCIpHXJnO4`eBHSC*tb@V`)}dEr3`az_QDNM z(rz@FvX*KED>1Oy#K8OU07G!cOBIKBEP$IE@s)2lTGH8>GktG{7_60zH{TQ6Bni9J z)*O8HV$-U3$ew!hes86-*c09--v)GYeEsqic~Bey|9M0fS`-?Tecf!r<)8)27v)kw zKVgSNanfAIeOA)FNJlCLG!s|Iq|Niw);zI-N6*1!i}goPwWvpP;$TSX&FIl9CJU9Z zgOnv7XjsGvzkxc6H{3)+f?UVUpp`+=$ zMXFzsJ>5n4@QCb&2sT9Fy)$twPi&6&J@@aVtCjxYIL&atXkr}o$&Bcy{05vzjlHwpr}TtB^nX7F0Mx3je>HILCwEn@eMWv6 zFeGn8Fc;=Gdx52`e7hPOFjIlZH%5HW!7=ACqCHomJ54$57b9^$-1i>2LV+Hx{puMH zM|f@ZuiTO{8dzj}_DM@IOF2?11B_xat?xU-?9zg?pGrSX7^bRQ#OZw*Of|NG1`oey z1_#ix+{LX+LW=Tq z7LG<$Z8aDi0cz|(Qv8w)=Xv}z)oET}CSrN=-4Xoe5v*6)CwhydI8S;<=Xzrl6f3=& zxMlniU-8?fTGl>aZER9s0fu$~NS-6JI@Hn_1z72xhjSa~MB$|pF@)>-T5u*2K%F&M zo2Wm-V(ozRZD!=L)ywGp>_K>=ZLn%C+;WAVn{SZCH)kfuou?45P%gsS;e zG#qPRhqRNy+O9ATVmIKSU?yYSX$loA7=3_dQtZ&Nk4Qa8;?Ervu)Z~JZC-p^SKUyX z6#eap-?Cr@+YfNG?(vR92D=qaIp=Uf1(EyuDaXx;z+-mSH#ZF}7Ho4P=I_5Y)$v*x z2S0}CUCp=*Xq$y2fO<#xegsX8EtwrUWv1OV%K&mB+Yh5h4bJB(;aoP9@Oq~D>9C>z z7rq?kP0}ppkb*U45S|JV3-?6aFIxfv@Cmy<<$x&L^`*LrJZ`23U}f84>tC$!yBQbq zn}zT%R+QU6OEk@d3n9Y@J6Q`q2EYAkhtf=X;(JX3n}r(BT`j>3>%ffDO}+;B(4@i| z^#PS|M$q>y{0Z|)0BKYn+L6y=SkWnmiwLga!i=ABG3Y z%mn1NuWZ*G+z%C_k+UL#r~L;rp8{7^Q`$h)fzr;>EDs15XRyt#Qhbsg4hcsDd3#- zrQ-RTBtg#y_Q|V-W;F)WzZc#cJ{)c4#v3Q!m5)OC0=|-2_mlq92XA6OW^DR*L`{WT zZ8`}zODbxwhF@CT$CrYApN7}RiO#&Ts@)Y#%npv%3c(ubIDV$0_oN;8Xr@ZM0V`|z zSeNi7mKZ)rHOxao)=p{jDE#c!Yphbn?X`c7-Paa=lzJ4 zCW0`pRyg!P*7S?WJn|8*_G7FzekT)@qwZ)PJ-^zW*S}d=3g*EPZC+oingJy!gMa&W zV#j_-%2DnoF%o1*%LsH;+sh2cgS6#E;5EY&avKpHG$CK&`EV#AcOhLL%DdVm(J3dV7En{Y_Qy>W+j-$?1k0?` z1*prz2;HXU&hzY0K3{K7ps2l{U~Ou|c^P@80g{~$yD#8&rRC7noHyf%zzVy2<+opO zBH$ae;1F6Z7Rc#&&xFfp?T3)NewO!|1?! zN2^w%-4v$P@uUa*4q_#vgFBT=h9VIdNPxrD>UO_DG9Y=2wMNpEY+cn4Bmc-)C&=lV z!vG?Y+tJ11_Jgw|5jsdmD*e1i9$Mj=cu<@UW_PJI(Q5p#BdcNz|lP;eS_J^ zm11~z3dIEfWkpEp?U8$|kS>C6c^LVAN_hio;Bz&?`2`d|;VnAQS6`i%P*Kg#?ng-6 z*U*4XN#c~X6w{F+$j;||ALAV)zL~J)E{R=$H#Vn&;GJhnQO7NjJPZ?`w47Kz(;IkJ zs~yt)=onobsh^kg}ad&**rQtkCxO# zzk*)YE8yJLMI{vG$r*qv+4te1(2mq3co&be;Y@lI@HE4imHRhHAxEqbaR}Dc+yM34 z?@g!QHK`9AeCNwo;kSrN(V;(8%XeoJ9D`t?2SyylL77z3qO^p!nl)qmEYqzCyY{{e z6~049t07-VZsM}9_f0Ka(G&X^+oXYL0#&-cGgBuQf8y~s^tGZSxTLNxD^0PZ$9=y(6>_p$FHSZIS0D=<3EnH&5O z3XEb9=vt(^g+44cMR~m)YR~D)Ani8pD?5LMK`-6S=c>e*z;O6&R-I!qR=9os@V=ZM z?t{x*WT7ynR4xOI^Vji+t=61riAl{6^m)m1W;Q+*=8xLhN?4n<74Z$Fp9Hd+E%xPm zfAMp z5c=6`p)OxuiNF&cQh(RecLD;Io5U$<5g}wy@sdx1_7N%dBb$5uTvrQb>M#jjhb)${ zbchu>8u2d5_uk+{-X+aLrSBKzR+_LzyXQ3ftok~^3}cnEG5|GMPxP{O5ZQmhs`;G0 z$`X8)4>fb`446dx!49XdNWHYaIu;0eUWUg1(>~%7hS9`3dL7(F9lx8E2Vy;{s9 z;=a#1rO)zkHZ%FPc|;D@I6p%!1!$=fs)#cl-?v~8N+b`01-niT2&S%RO9w0!Ha?@o zodOC{OG!Bj)84Zjm!~f!Z;(rW&0iE<$y$rMU`>V1Bz-96wLa`ID#kisa!?hdyp z@_e}L*;a4-8_Wm7#ax=-#|C5PuYB{0sm~TgDDFm3#Pn21dLzL@>%m|$?V{3aghsEq z_F2&bj8CgB3lc!Iw?uz_XzX!fU0&7x?-=_Kj*lqy%uO2thgfzvNIx&;r@;iiCM$o# zY(8px;T|n-{liH4eqC|Ln3?m&$xwk+T$>*cLUK@VRiCP9kbB6%(6qlb50qv5^3tLJ zMmzPkSh4?yc{1cH{K*n3gcKS!uLkC0~Y znyD-ZY@?15KL6le`0WQZ`^jx$Sgc%1KT!Vd9Yes%D9g{GLC)`Xg{1grF*f@Ju)X?Q z449mvme!Qd2ugV*2%?tgCV$x9kgHl8*bXF#eNOw^D)}K&eqFh^q2ZdvaLaf|tIWK} zwewB1=U65MdjGc4{<8J{Cg$&db;H45livO#s`vYq|9b;z9eC<&*~gaW^fP<^mty%5 zFZ|NLiot}E8V;j!? zbDRG6z`l$4QwiNXNbI-FpM8j0_I!5(wht(h4T>F)gZsl%pfTiQ*>eC=N6M)mLm1iOQ3z+i%nA?x_@HrqakHG@W2PyOaRBQjgb^7bM8Ww~xRYWyB z|G!K0n-zs%Wdpon00q9vVt?jaAy^erUD3AHfMwm3Q*!N_ zJlT^G@+mv_^!$#z^zX!Af`PyqiPr5+0xV~Mg8{9P+v!5;pOh80TZVTt{~>|?&tZUB z5lZ-0lsQ|U*;F@Z$eI4(Wj}_JL{=WNe3W9x_^ZP6e>dtspQOb>R)Cta@E=u<|HE^? z_pz}gWY@BFF>U{T@-H{kls5TotL&g-UVF?lppHFMk=jqE>t8sd)*B1~g`6W*P2CeD z0cdmpC?}`2_yqgcS@)Ti(Eoxv`zNWu--efF%jzP|Bu8R~At$MsUpsJmuf9!)mEj;L zJ=)#5mP zG5gxi;zu(rfnboe6ex7;k`~iT8S}8PZP+Md^w#<7l=ihXHJE3Xgz{@pW&hZTPf`pi-#b0t+;^ETfhGy@PAEe27yo6S)KMelq>X$*=qGJzMKb@ zi&N%8<+Br0;AJYWWBgU+I*)d^nOr2qBC?_}JA&7f+&2?%&!3G|=dw2Lrp)Zp7W{c3khMW02M z;o#;~7aemJN^$ZANx7dHOM{cP_}$r}=-L!^|IE)t}0z0JxBfO!gqs%miL&xeYg>%VW*oayR$EgRFp%zEVdu zkg_IL&#iL=^J%dDEnb!Qd!>1G9=}7_Q+&pMGWh>egY@VLx^w6eZNPXnc_zJ^(&+ZC zqDq3CwwRa;y(%y>K{i?&pudwRm&_;=M-WPEw&yr!9j2t2uf`JR*JixYIkyk|%hL0k zV8|C#4;u_ptBNh?H2TX@KdO32FdeFX<7uB8J{4%{_S=jPPzTONmioMJ$*GuforpRR zFjj2I?8+tiEd%}!5_{*tvLwc%LM}#S6C52T=rA z#k^J}+HLH$)n2A-X%@@#`n0$99^YtpyMt!c;S`ABkuu=cs^PQ~mw1`Jd}`;pG_KnF zqQ8K`w%WYBz{MirtfS=Orc4@Ka;kMN;k0P*#m;Q-6w>c>ZyrHy-CN%a_b2)toxrXt zPcWp3Ij9?z*6yLnk>|V|Wu^0?46>>eny!;FNR;E(UZN~sq7SEUG6=5Tpbs5dc6jGf z_N_8g&iVTE<|IWC5Cd3J^msTmJbc;F-wp&^=cePa%YOtYgef@4DeP4cJ7t7Wy1hRJ z;+@m61-Hfpj9J4`O4IiZ&D`rL`aAJwck>1hoO}EN=ZakT z|1SN6R-!1599B1V7R|b1CAkaHWyl-JswmnLwvT-iYYC+CXt5-C+W_AXjInFpTr(k`D_Z;5>1o}g;wOSA2*2LQ zoE&%8800g{IF%U$*8i9O`7e4wgjEW7JYf2UioTpa{$2CJUSsO6)JnMoVM21w@3J;aI*;|FCXX9})QEog-WoxF@e^6L3=^#W!_Q&P-N&T7&a; z$_#Sa#ER8hvw7blmb=w zdPdD*9Xn`27;*k?ZKl&eSxpH6%7|!%s`5M~0RPNw+=9ZV+wFB@yBZ$%OGoFDugN|c z>Q(i^e_J5`%K_h6#61ea2C5;s=t3OA*Y-5m4&#R!J8)j?Nf=6vrqUX;hW?2?3}KZ< zC8P4ix9&xjuavi|n}_$+EBiqhXV&jq%pn=t&tn_w?>j4*uL+II&6X_e;6eOO+nlir zX|5+zOVO49Hv9Bx0bA_1um3cd{qO2i@+$m79`BgE_oJe6wCsr*X9zVrMUsP=Q~_|S zFAbhdidKpY@ndARM6?*23*F-3^wZkoK0foj&bM9{=K|K~mP6ZX*0BJi>nh#I&g=M3O81E<_3*1Js;a_i@-+WO@l#8wDl4LwQ zRArwO?4WBmi`-P9n6Y?Ev{+eU#vjkOctEtxW5&j$uy=8BLN&WNd@NlhhE{7R&cyx) zy$a<+4bPOCic1!6Xe+t(B`%g$HPa@>pjd(JHs1GK*+ttySyogXDV~0J>?1Oy#;!5p zyqG(2lLh6rI&piMq6I+F@^03(OiuGUAe4JHUekE7hM@XA|F}`{JVqw^A5@u;F8rO-s-bZeU-Yij+J>@U41bLDbRB2Q&`6~z z!0?MAAl6QT0+gz#eXb#l_&fwuNO@R^nDYtKMO$QgZr)eo84--De4oi%RwD~FYR&S#M}mQXTh2qyd}P+&7_-3kC5aHS|kPi)32t43Va z1nx$m_P<;_VTwSoV>It;0BMG_aky|%(l;C1MQ+fxZ;qQ!9zwBygaK`bed2Hl-Jdb-+SzXchGgYCiq>B;N8TylwesEyi*Uy0id&Zd_IwHB*e$3d!_j+sl+rB_x&+ygUl@g4A`t_iM@MZ?mGnLV?{ z@!irg`X7>%sZ;Q#RI!xD?Zt z1V`@P$=iILy8T4FW1WH;5`y&cj5&ecSN5fS4rzVb;fsQD8D)uHynQqj&;G!^M?I(z zWlh_m!WDE@xuOv&DNLEm#}-E@3V4*@F%Bw`Jj#b~Y6|>aqs>$I`DgvH6>rvX<+b?RpC||dnjIz;n zR2<6R(%B|G`d7w<_&4g`-9%#|w#t4K4?$K^$vWpV0P=ls@a)G#SOvL<$6TR9tEMxS2pjhAEk2Sj~+DX8+?|qm<=x zB+nlReI@?gsXV~Xr;y$sK!4ekgb+Xoj0rz}jhBGNY(G}i^bMwbj{Deg-VoyZ4c<`t z)@EUAPl+=nx{6i|fX4Bh$cle-S+Wa7_J*~j#L}dtpMQ+p}qs{3`FVbKmaCDG`zRf_7u2AF)*iXdwe{T3DscIN?qs2WV(O$0E1#ztN8W z)T3-(! z#PGqmb~H27LuqN%S?HHg)9Vbo3P?|@Lry<+)0xX;PeC(1cq@0>Ai2Dfn|k%^^X`UT zb064QBjr)lS{*a`&P{9iqp8m7_CZmqkB)fRY%** zR=@Z0b!kvd2g|P+WJ#Y$$C%pwDK7Jk!iO3G#6eHvPVkEDU4B4#Zn&4CdD;8St+8e0 z9H3I7$Rzbxe>C6wvJi!_f)=^3OdvpCEk|k-C}3(Xn)|j?I+s-jK^=6t_XR`i*j>3# z`;aCol)MRFTaQ@!V!<^cD^rpo>;=x{@C*vq>;61YTydaH;w0z#5~-e)iKv6Rv$}go zUEiKewMVhk=BAyS%V}a(MWHxIW}&ZNezNONe(-}Wj2s#uPmNyZ#!i%^KPebLjLL&P z!$Hbx7I%=YpZwY`0YDASZY#GrH>kNecUe4*8@YcH0$N&TYaz9x>7Tl(PIzl)P6kXc ztBG3DIJ~Vh7`b;JPT#iY&JCh!YH%U=V;}|v6%vTy;TQK0JAb1jBNA?&pq(I##>TG! z8b8e@3u7*=a2(x?)j^Zq)FRW__aQVEgm&DYx9vyh8Z@ChDDr4A?q^I48RKS@GK}8P zWr!=*h|L%D;P2_$(I7Tac2xt?4X`Zw(v|XX8?NHeY_^txdVBka^D`E-EE-(bmNF|W zuKYvAXVOpqWI7C^IX51KrjDL& zIy##*OQmhF2QuhyQN)Dz^;3$8f?iHYkV`RZs7J3-msohtKZpkuup>&cgJ z^m3o0qwZfQQ(ruML;T);%j$rA`qbU!{v!~5VXQf|0W@B6Go8~P@zI*!oJpduw}NLE zk1pu!DqmucX?T>I$^n6?Um)|O5(;UruFi9731EM!Y4)I9b61wgt(HhskuQnxCk-m` zU4v2vP)Hd_MvlL+Wo1yKS9oV?W`^uoG%VW(nhGmF-XQ~GpYOGrCY~)mqVG|(C--5^ zHv3w-*qG2lm)WVx>*8d}UAK`q?F8`@x$jJi znAB{JIp8i|ukYcep57@mt%(xrJjn^v(MuY)cd^Z$cFBNrb+|5oI7_w%r-&69wVlcS z6lS?%fPH}L*gM^>_8#SClzH(gHrY(FE)F$Rdz3+O%mjMkJSf}4w>PI-W8ge_BXoW; zGx51=Mvy(PB7VsZm zi~&z97H8#>R1WsGhbad4r0+t-z3?i-Ia`)S?yvjHt@)Yc|0u*hIm$2it`&JNQ%71!zIX*rVnee^Md$7Fpxpic>g zI+v~)AV`_=8L}xzwrgx5M83bW_7O#&g9R|(od0w;N%GL%q7F1A)}l(7kjXOL{Z{*H zdNh6TjD6`e$lYySkA_KSJPBvpEPFws-HBv6 z2aTYGVzVw@3Iqi{lB6QSe&{v5OPJFYy-mBSG*`SCe`#M2Ael7`$y?4nLA-U>KCcz}CZHC=08!F{&s2-l zOqDX-PKQ~Dvh3}ECwA6dWpi(ecTdrEhHPX*xZl20{-RHRps|ffRc1a*7G_rQ(dC=x ziL~vV3*0(w74s*@J$|~l|JUAoM>Uyt?c$@OqgV$KY=9$GLK`U}Em-KGC@r)kDou(Y zy~ALq1!;+Nl}><2CnNzyG$f%&0z`TZfrJhL>A(1%bJlvl@BN(o{yXceHT=bTlIPA{ z_H*BRU)Qzw^YqQ*L6QCZ3lf)J*DkMkmC*OO=X3-e)#m3GAXfdLC+_<$8*0v+&EPjc zsCx4!rh<INOByv#h91b4#;L9M-eSkxV7H@w3tuKR zb@^lLVZ;63taG)iwVSPLt-oA*m0Ld_3Na7xxX_*Sgr)9IJu*DB4g4=IN46N1KRPCMiMWZxC)Y> zWUj_sCp&B+VxEW}zn&ui;9B(&xzbPM- z)itZ{f%`)I_Fg}r4>u@=g^FQiV2GfuM`E$a>PHnXE4+zPxs^uJ+t4Keww={ZtW_UX zWsWhjKnYmz>L*j&4RWGypPL*emX@wfDhy$|8+f6qhzYlZV{E1ktFcCculJ#`0o@vD zd$J?*M51+{osjek{;pK)wHdRV{lQ{wp-s`FRC~5MbO3dHOa1a%)ko5OHE!(R2QA&v zjb``I>X+yC;;aTP>;WxIB8knjN1TYM2zya%?d=>ZA;~e>$0GfM%;{YSfSkSEh`g2Z zi!Bevy{Wp|+}P`#Ur~C2WPiUMyV~=lDmx8JSbzPjyPxeDneaWm#!{7WTanp#U)*G_ zS{wP>P91E@6Ei)sP(rC-B|}0dYW5mma}B*-9Oi^x2C35(GOrDRHcFN`IkjIjgpcrPNGR~p2Ht_YPA-Y_NbZ&^pG@PtmI*>dF^ZT@Ewl=)U8zSM^uqJ9aM|pr=Std z7{5)^2dLO(TRT5|1^f-suL|3eMV)_T5ky%(A<18{wG;Ir}v{1X=52#LjTet8npN7ey~JLP{MozpOozEwKUvP^qs9 zH{6rctHSyuaBgUidgsD-;_RWG{&e})i*)gE+@!Zj=zHG?Ewz!vBh9Uq zymtx0?=s&DZB^@ZOz%9CNqErBh41(=BugRHp2rS*+qagmzO`ZWN!nk4z8TTEZHTG z1f#KE6*n3~pV~eSJFB6V*%kuFV^@gMQt@oB9E|#7b8aEo$sbQvs<~<#>2TIJNl6sk zVbx&``*mr-b3@JKY(D!VaW>SsX|^I(j;74=oQU18zBX$f+LJB%W>Dp*&^UEl1M#u< z27dvfQ#1JBjr(fZ4yHD;fo#@6<$1yIGBEGvrAoOWyi3n|RQT4zO`|YtsHS(updH#} zIP%c(8TRj&vi_c@*%tY+xzY_c8(X3QvLV}Hp!xdH(9y%^hYa(&^|Kx=M;9joqrdvP zdAHAEV`nWNlPOG**yPGB7b>s*RbBCbc{=hjeMBHsVC$**1@Rt{{6QeyhFmK-8}{p6 zAGKwC&U8JoePzMHE7_&9Oxm)LkM7?ry8wc{EL}elDE_ z{3|{*+|0gNr!S$2K<&oPdJmKxLaIA~NlV`D(yDtOu;1Ngh)h*^J0_?{3w?N)45SS2_l!$_)SA((jra z|LC~Ml@Pq#Il zvN-UJCTAprlF62_vbT<|KSfM_>(KVDMHU81mx-F>U1v^24h`lbX>(u^76Q+C%^Wyf zZqr`0(PBZv&6t>(L2uuZJwd=aRizLIi^03W@M9K01Lh8Wif+5`3y< z(&3P$;TvJnZyrV#`MgYuN&67}Xs`nl5V?T7%`Y|PR&6E7+c0Hs)}zTkQY*M@-!ZY~ zgLNy)2Wx|Gu5F*tsq_Z=WZL7c)wDKnj;=2x*~)`f^(6NEqY9YN`YoDAQIrGe z&H!VpFN|&j(V~wslBX$(B|#Wcz>u>BN|@00y9&3sSLN`w)tF_2V`cpL7^RAC4ogV| zL24fXq9&DV8U$k|4R%wXHdvQi4{8s$)K2>)9*C0|2n;TMVc2aUMyo=@TpxUN>SJ$4 z%I~cM#+1k11ukp1q&$|nXUTJ|!d@I>7|^5OQX=hcVFU+-^cct=eYfrJ@q#^Tf5gJR zg`kn?z8Mx)lI=jJE8{&*c6}>oZNT(sEDR%kUx$!cKc`lrxw8E(h-j$ zR9~wYs(66;uAMjq*)F+mCty?lvOIIPB*X}WE{hM9pVLJD8P-FTBbS2>(6kiUG_^bK z8RE#yzkpe~S_v!NJ)Oxeeu(TmyQ~u{tlw)oRI#fpUhF&{ED<(C6FEpuRwuN|U5Q>y zr+N*StvpKH?oI_Fc}5MZSlbkHl|m~XXG`Xcoo`1ON&iX2m+V}>6+xAX$mG$I*K*2) zk!NaZRH(OSSy|D41wj8}&xpzqTg>1*X)rNu5tEWQ?Q?xjQTdxQO4PGrn$t<@!GXhD zUc=%(5wpc6_o$h ztD3wUIH?$1JbTc*$l~dV*Ug%i27ut~r+%_!t7nqykaczQzH$pBu=~yhw~oD+RR`PL zJpW@r{}uKaUEurvu$gsR%#PwMDVi;2Af^`<O2WQ>05`0I`)LWR-lzk$WvaJsFZw67w%^-*K8ji2#jMt!$;6F^4@-Gub zok9!+RR@x8S*m#*eXo+W*wAQjc4nX4W)~_jmB2bD^nRJ-enu3>v`C+zNna4^lN!>@ zr3FVKivwpm&QBjIs!7gKmrQYRE}5vGimbBI>{C6&8r+yNAWno(*T?1a7`9=m1vHac zqbaTt%)Y1*30!}K1xeu2rZv%`N8w9&Pck;*q+8aaSyPHtFK%F2dnx61MP5h~-gV~i zo4)3UWT`qA7*09Hq8 z-w0+9>rg^8cN2Hz1&J?kmOonqzkqNNx2O<&a+F&%Y`DMaPEfeffZJ!L6Y0Tggc3!f zRyys@P7M$O{rZK_O!SrY7-V3`(ZT&H0!p4IjvfR6`(bgs#Dx@&OGA1D0 z&;vwy=N5k2g*lZzr~V%KJtgaz9fYm!2-Iaz?cp{#z6#kxug%u(b43fuhc)zqYWAJ; z_X#;4i`bQpH%|_?mM+)HM{PKkvrv*X4eUJgM=FMs-<3nNk$6G9!t!mv$4m<|*RhF_ z-i9yPu4&KU;1Th;tST6|+5;jU>W7X@o6^-rjt_}MYv7+q1kqgvCY$n#HHO*gAJ$Pm zX4$p{;sd();URc&8gu5gl&&tOZWo6Vy=K*$Kk+in_Qm2W$+>nvjC_{z_-fVs;pF^5 zZjPgt!Ki98+0;?0(xz0+CeM>i_e+%YSZiIDBz+D?++gK`F9c}jPYFd1w<2lT@-GaU zXz*DI>cEa|<3NU~%uHa7#;uj*jQj9QSiU=m+rTo*E14iU0@KZZI$N0-=HxvI4c$_H zF<*7pSFX@|B`8^hIwK$NxR;ri6j6D%(hV?VaXcYaKe?1TBZns1?v*2&A6Q(}dI1iW z*K(M1O`C$dqFo-*zZI=PSb#uu*RS0n3u&h5Jjvl^6I>r3*{G4rIGGzv%W&}ry3ehX zzQ2{Rl?l_O6lIOn1627m9fD6^n&`_A>=#SSkEI)q2=;uWrCvD*(opuf50EVMl=m85 zh}>gg;1eT-6ffAudaX!#$XHB)Aq9;YuDa;d{?gi(TiZkci0?qRy4bv*K@g!&{4nMVb;@^#{rZkyQ7 zh$Y)w^@~4}aUYbUjyt8FOFN}1I;KFEdsrEzva}yPv-587)YmKBl)paP=EcMPHY||x z>#!bJGx=Si&Yhz<>8WXbqTZDd`V=q2hl#B{sZ4tj! zZRG&HLVi11yLs$I4f$#AQ!b2mQ_2S~K4@s~Tz3D>zB2|%)5yZ@20ZFOdxnWUgnhm# zN&S?hf|~F{Qzs!`{qsD?BrCZ(8p{Uwxh5z8hF@xxS`c&FU(B0;fJeK%n4e6!XNCO_ttrO})>HHTE#^>q(^w_lRCL^t?gHXS5UYX;wZs zx@r!q{|9=J{>Gl$*+%32-rkHl9s`MiR-AbvzRzq~htMG7?pPzYIk?PhOj4Y$n_cFI z+`lr>FqgvGN!tX_!qBB;Rw)YC-6cbutR0*|^hdCB#8Sk&PC*g6sUXUOdnt$cFSD#n zVkV^1iv+&$8=J-lbnrq-wo)ui>TUYt7n#>2Ch4iS2>#b#=NGM~@}L-Jts%p27<6{w zl%%Z{|8H8DJH0C?imLFEtJO;oZjTCk>gAD`tVFdrOaw!*0ac6(E^tJF7H^S|ffbb5@vk&!`kD_u z(qPIG&+rT>yPp-q6!Zw)?#u@?7Un)tf3gYQ3S4yX6liOZ>78p;mTXA51ugrg+NRhx z>oJFSUzwjbvJf;gx|N6Yx!?2lW83hFKmPu7|MicG>1{9*f-va;j&JK9o7xq z`l;Cyqw^~@fD-q>lTI+@o#cA~*G}EqHAcspA~4klV#NR-C$bGSln-e_s$eAQONV(O zPd}hx?*?26;GF_r&9W*xn@qUU;Nq9Lf2DrCJYo2oHCx8+BSnoqKPTA~Ct=uA$*zrL z%=53D{}OCGv1G(@<-c{5n@014yaXp6L$1`_mZHDI=10>xho)6eUOFRMv~jShJc%O= zLScO|sa1_Ol5LfbdfB_AOH$fF@iNQW;&=8+vTN4shF#{c@#va)@~=)`&1IiAUw0D8 zYr8(xCL5eThAXHeIgrm6E%jSeh3=+6eb2lJfVL%38+C57(~o3y%?{M5p>ABu z+tSdi(FFK&3sXRcHFSbhebrxy=TI(Rx?eV)Z1vC}Bs)D2teP^YSm{UV%HQq5TDeH; z)o91!x&&$Bt}-zqu^vbZ??jNlixRsyo20za9ZG9`-a}idddBR@q?oTYP}7ce?6^O9 zTK-hpil;pIfL5n=(F=R&8cTFWxu>Zjy)oj#>+K;91)sKMwW=N^SDR|VO%jB@#8JxA zS7mP)hG6cfN!)Ki^RFI&A?~Evv~O*>&N^C}h!#4zkF@mOUU2E0NEo7A%L$TDhJVe_ zS5xDkd?2W-H4-sbmYy0q;@s)*SsQREa8;`)*sZx!m=uf%)$a^aa_MMM)iqO3SG=*W zc42bbc==z)q4x!^#zQznq?`$x2~|9k@I=vm2v2aEn+=>gq>){8&vqQ z(?`|V&`mn)ua&tjTXyh_5fH4|%#HDmkouu63Qqr&&}Q(i_s;oiUzD&|7l~d@_-%2orHOhrohM)t7Hn$eY1nE`r_QyZbRD4 zvfu>nYMC#sF@-DWOFyuy-0U8yu$4s5c7CG{Tn+UMoL?qFw8kM4x&gi8b7#;JPs#>G zTyo3s?G5P7S@Xh%=atK7Sy-n{?1E_7E69e-w98IAt7`1eG)-Ve_ejRnaO4^2#zsjr zh#OTKk@=y?ENBRonH*=^d9CV1ycznKVBdYG9yHC)9Zo6@F#QbXNS?g>dfMj#v6Muh9Zy%0| ze75MelY-NmZjG^KX(yFZjn1#uZzYf=pAUN0+$SbEE5&YV4)`+DQ~L-@+mb|o<5?D2 zxtUcG-o0Q@^?@ve^@P~UY~)6al&CD11#DqLZ@SLNbu9}LrG6#0tD?r?d6;YkRez{m zV{i)3aPg2bcK!0H-3MzC)H_=y?xacHQStrw7fqt;4EXAK3oe;m+xveA1L(;d;7}!2 zNOMrXP>LGqa@VJU^w{O&dq{ z8`aEHnrYtTaT-<@+my9y;5qW<4XqeM}iE+7liKdiT1N!g8Nj8x$H`ts58 zb)xuc(pJg)JYu$#+k(FM9K^?fkD24#P4{1?<;JBBhV^-fZ;BRS$MqUKRmd9!%X#;^aA;lG9jsSRi zDK4GsVx0b=Q8&{Ukn9+!V=l1{fM&aSP`qlE%#>FJz0&MzZ3G>1|FbUL`P{@^p3Bjc zB>g80=`FU>LYlvLod^aBgF#o$jrD9?Cds`L+#4!e)o7F5|3khAJ3u0}iBUBl#A+eDUJEpPN#@f~a-Qias5x z4fBu6B^QP5G~si`kdERC)vT-Iii_P!Eitrj-F^%&q+{{@1n?+ak-;OJ6=4=4uh2~6z!|UCzLRpD)}6ac>7V` zMi9g&O|V2XW23IfuND+pGlKdO7DRN_S@v@sv(&PqZ=~l=LN=eK=ZGH4?q1{fo-#K( zvRvX%fhvzwno8ok4S_z8EF`%^@33=rKjNM+kC^dm=?jS2k{y0ipN9tWF1;JU2AbGU zMTl?geuA1)!S_B%P*S00mM?b0!nQXELQk|N1|+@Z8nQqCko=TJm=ulu(&cx~=KkFM zU`l06hXlCAh$tHSX0!X%=dN@xy0D$R?I)84XmQBC8fyL^`JR6Nl1e(KXQ*?79MlhFi{NB5N6SY;CC;SLH>LFTc9LJ{l8o#leSm(||kmLYF8IU0=4&yq!+ zYRaipGhpzVR`}|GRj}q=P$|^r=Coj!nR^6{l%Eii@A26R8wmIOo|b9;7<09=;7TBC z!FkNZrkm2*-0ILMxHVMR)xA`5HX?pZHWa`RxI-+Ia4{ZIQn^wh^N}7BURgyL8nznJ zf)V9S7hj^&wJ^3pL!O)Z5j~26p_5yxI_SfL+`{P2Q=A0GO0#0xdEJbZ=oxbekXMZ8 z#6izHLug0$bSGu*iH_xlKtH=gopyCN*v&RB5nP`7rueD<`#XOGh#d;CQV9{y+3SvE zyGlgA?^1i7X|4C+v*u%0NAQ8(9W{dAUjV$GzlD)}JAK}W8rP};l1JZ}*$3$(OLh;+ z-+QgWKRSMKDSfHLLVZ0ZBXq4OUN=D8PyBUw$=uxyTK?K1aA)Sdlt$CCvguKD5(K-t zJUlFtQ*%wdOn{#on34O#<0w@f50bgQ?DkOsXmvN@?HebgsdVsc;@t}6r5PC{;;R4t zlK!aC;~l9l^ZKY9ZSfuI=}*h8XgW1r|Bs^=veGG2l4F)foh|2Hoy$J2u5`0#0Im`& z2CmDhQg;{ov}HU5(k^4HsJ>4_Ys!p^O>W!W^D4JH7I0#!rW`-d7P{Yg&nIp9wfP+@ zrO%|mxARA^y488vt_Sj(PR6!~&xy?9f+MYjrOg4{+^53B8pc6cl{MS1{sN5MzvCGG z4t$JR^B5TARLobSu>2+b#HfOQO~JfdymM?D=%MGltAEOkk-P@6dYntdQ8Fgz)62YD zOtEI$2}^$=jLl)y2CppNP6HF$QL|!ZdXMHk`CbjMTVsxI`RrImQrp6FC#@{qm8apb zPH*u109*(q;#}3?%*2Dw@Hvh%cqAVX0{#lQ${5JWH1ZuPq!vVyC+v<%$Z^FePec_S zk(c_N_*y|SK$;gKYcuG6=YCYx)I*A7c;aPoTcy4|g+PrM#vrUF;Ry?75*%EZDHS^! z68onaR4&<;UPtJon{QU>DjS#emA56glSuOCB8=Q6%6!&}e0qBqNvQSLd=M0jYOex; z`FDyIX7!Wa0xtBorR{{?IMd#e5GZ_^;@lr)FN^{2OsxB!dCC>b;n{D>5A6U0w3oFv zTPnpwKKrz&ImN{t+Fr=LUr|8%rjJOUhC-?uZ5ddCv+1FcHDAu|#<;zI21hCD_l!kH z>jjhu#dius&W?mwO$L|Cxftdb87GCL*5uDyrWHq)wLN#Ii3HM+*PXh01z3}iPEEvj z_0<>v@&Kqg*-XOd3Aen>ZKWR=4{2~Yx24@-#wm8?&MRw#@j5i&!NzY%{SQZ|-tc5c zcumgL(9_JxH-2Wbi$->3sA1RTK>&(n?LF%U&9xkOzGRYiR|TBfp!G6OZhe@b9*}N( zXm+Z0$msT)kPe3esdmd62MAFvVG3JpXbROF;+k};WjYGGgex^fl-zO1Lx#%U)@62= z9=iXz6E<|I!jc-{w~`rdO3u6$qB?jUZx``0Q+YIhsL0-Z?oy=l)RUU?={1V1l}hJ% z$U5O9tiROK)?vD8Efg)i-BUi_><2vV9@SQX!N zjdjax*zNeO^cfc-#rVgdbp=!lKY10`?PBVvSvUJzAiyI9E1)guUFR>RNa?6yjpqf* z# z+PZX>i!N|Pskk?$xwV(iOGo)4pwMMaVr8>h+=V{#{6OfFl2zTldC$)Dxh-^4QZs47 zZYj%Qx6I&^qZ&Nfl{&E;`g9GW1>JMW-3tPi{=NKtv8n{88J`6M9&)5Oj0-2 zt2Jz!ex+~e6yi4DAhlCN?%Tpu6B-+amwvaC{U*~OR{>GZ?d|Y5Xr;V_*PGI`V|fJ6 z_jJgoWUh_-d<_bi(v#q>1r+6EXYxPE+a_PJF{`l$taLBW(CH!TaRPVg8KnR6 zWu?haO4pAR#d0)XD6L`aGbABg%I#=*SvOQsz&Ed0abzdiQ(|YdJ%K%DxQz#6EkpVn z57l^@_}H`#iC_K#I@t(_Xtsy{_8BdQejg=) z+o~V^u*8XPel~-x)776;bDaA>bEFNyUPo(H`{+C6G>#z60G)JKd`KgdN8X@3V=~dy z7!OO<|DrZYQp5&5xro2IH>tTUeXJn&7P>JUH3<%eKAl7)dyRL$7WB`1jm!#6JI+-o zN4xYxC^zpMC-o3i7Pje#%%?(N#@&w(3rSz-6YN}(lGq{h%3lzMRbCVKVK%nhj%Sub z_(m+_H&bXVpDXc6OMv?VWswO6qf|1iPZC!c!zLVZK=dkY0`?Eo~GIgc5 zYo*|Go2k!%W9)v4^mxgWN&YCc9{<$EWhr^DYbBQ}0QR3()3w(mPL|vJxi7>}IiaJw zK-FDoy~wJ4-Nv0akS~+Wo}(`Zw1t`P>FhMP)Tz>Y?9925=JKFXo@UlvC$`zeAz2Qe z^f8rc2MXw^2g4~zAr$w6J&4tiPF!7UX6&%bS$?{;Xe{nM+9R>S5?RM?-29$`bOf6O z(W`0hn;OndPGkN(1UhzoRr)y160@+OUR%{J;XbSafMcJd5L;asUGV3zx+Q%~t6bJ% z2vsIt9Jaopx}Diipw-Ge7zTNaW>QkN)05s zZ~6Eb_^x1~=Sg9y*qdqs*r_1Pkl4fWXr`uYqZ|UZ8}wN2=(~{kdrg$DddmhSlB zldpnorW(Loy~*I2UD;bl^NkO!Eb$U7)@d-luWO0PABXsh_VPOULv%gD zj9bDmEd4|BGvs9K4#+0Aq+q@SnAkmMWbTz^RwBNTbdA?2eZpIX{3r2P*5s?rh4N^X zA$o~gwn<$4D&U+|m7rGB2z}I{(DspP6v{Mx!;3}cOyf!NDTvh_ezW{38!I6&+s1yw zQ2G;LkQW*<_D^zS(T6T(tnpl($WfR)~eARhEi1iT0i;lWJlJMqU$5?2FVPo!W0CrL2Ie+2vs69Cu4N{HoP0#QbO(aw!{CPDI`exdpOnEzP7L zvUS_cPqC&!Z0WP2>AmUwh3WpVx1nhNchZDbnG%iL%VcSV5y<>PfEpIM(UA^thqecD z2j0){XuyK{2rbk4efm?~s?w|rJrA?}=+NxTH%sCy+Kam!BAREcq^q_+wpa8B6;B?o z9?r>7V`CsAuyQ%J;dM)8xx~~R^=KkT3?*J?^+|}yzRtgnDXj$rgYE^2Wd%DklIh_K z0k7+`1L*ciGs4y5Ty!C;|$XMuh+Wy`{f>pDh0;g}lu!dY?#;ufzGv-TU&RpK}& zV-wU{-B!^Y{k`kVTMF1!h{i~srvR>|q8M73TduNm0-@cNvFoFnH_p<0CXU_izj-JS$a_~VH4PpG zIo*j?4r>aY*RasC)3IBB`bc^yHFhuM)9#&5dkVy71PT(<11-dKyHwDAX(1xTf+Y1>y-}DB#r^mQ$rBvd`TSX=T5qf~k%a>(zc_r#OU6U=%k-5I}6I zRTXL_{d7|9%Ee&%rnj3kXxqa*n>lZkvz5@vDN$9C1V!9Mz_Mv(w|NESb38sA=R#qI zh3_~09ol=f5-25h_xU}5xNG?-eX~28l3h;4r)PTjl;u$YV^u9kJ*NDH%qN{DHHC!P zd_g_dPAFuUk|kVuyP@`Q?68mUIUo|5JWH`Qd7`?&MtnNLYL&itXgMEW$GApw!I9h8 zNfFI8r|(O}Z~t8`s+yx8#OjaN|(IG=H3weO20m#YURr`LnT>aQUVr)2Sjy zB&h5gEy!uIJqf5cFiyA!Fl&D3zYZ{qNw-+39)8>^`8nyYffAVPdt4Rhq>*q>HXl^D zlnPNE*}*5DDcfP3qs&Aww4AhJua@iS-#?$D5Ibn~V%HV%YaZ0QVR&bT8srEjqnYF+ zlN;__g&}7oe+WZ@ZC12}`no0qt4kjby2Sg&`z;euFLM=)Wiyqe;RST~dC#f9TKi5y zqT667Mj7dz`;LP3JasE#Cr1|zAIq#p!+fXbl34~pPS?5|8&WD5a~ButS!EuR9scdT z{c;=dH_N}8?3#ykb+1$0Z_2qV6g#U;#pLprGt3iD%Ye`HjGp+f!r%WWUSs=5u&$Ov&`Mpx%pB}I#*v1Md&*>outBe%sfw17(}7RNYy zmSyzKu;aO|^1t%+1QcHcx!F)D(!CN|L6*(My0QKTZi9pea>RZ5SM$DhOI?h-g~!I+ z3Sq~*7A?-*9r}}nwof)Zl)0;aB_1Pm80d2YU6=QgsNE2-__5Z)cv! zZZhqt^N!!HA_3e0P|}ZJ;7IzzIFH1bWsrb%t=`bveW3+r%H_ror`XK6{KlhM>1hW~ zdS*iz1m}hRPKp%zPFv$VxoH*C2t&=7Ly43d;IcxiwXFs{c0%X-cW6eb5xi$*+phEK z`gE3m^tU?EO<)37tws6|#fc2GW4w4E2?`A6UvNr0O{;NDhYW@lZN+|@ide=6={9$) z0`CaSq#ky+5Sekn0bBFSYzf7msBS$KYsqu&;{u#govdMmdrpFD=~77c%F}8Si0nZc zfGa%3;^X*F3XP|fkNYTFiT@hvj-~2I5SQ1yH*&2G#DFwF}t)v{UJojy${x6Byos93X6c9@zI?dAqqf`8;;`R~7WD3{|S!X8Y!`FBG4b$d>k zSY4Y(H!fT&p<1oS$IL%6H&?YZh1Na*m(vcL6DfQ{Cwjz66RS@G z_R+AjTMw(u{EZ0n(y2ZD>eykHrS=~<9E2FcJ1l>fSy3p zMM)uKxuZp~o(t4QNwl}SFsS_Xo9!uNZ)P5NkhVjrt^&_lA8K&U8CL15ANB>j42Zkq z8);B(X3Rea4Yfprt>*6Es3VZ~vmL*`hJ?1m0XuOGZcr_1ZJ$-U23P0URFtE&>N$TI zSd^K-PBI10_?B(rY9n^oo7;u;aAvO=$glt)BTE}Lvthd z+`JE#y&S$Zr(ZgcemP`KoZnKr2vaUpxZq#gsm}Cq+}WOI@%LGmJsjy{TN`jYfVNeC zJa1p_>g>1iDeLq{!JsA-_XAc>saxb4^0%CIJ9{(1M8@a+s+%^4QvKW#xcdFJInBnbj96q z0{UBNR=wmFoNe3u;6T1iXiMnG*z{X_a;n}K0)yX^iwbSTZ5WZZim>u90l#!n~x0SYQ0ZD(53`sOigffv~BzxItvC7NKS2)>0%j>6=^9nZo z_LF2`C%n>DmzFgMJ^F^xiXgdgs4QMLjQyG+9_I-Ud= zx^-Mcg^3%68cDEZg`uIH3ki-$cD8AdQ0IJ>22_1M5&oJh;1r4c;Kix09Cfo>^6fH% zYC+NVr<9ml*ZfsNJMLy_SD0v=XlJFVpus7xBitb+1uC)5snWHDz2$4QU+>-pwx=eT z26Cp8Q$J`8t(pzFX9uitJb#Z~aiT27y|KVANj%>$sMynnCW4x>dKzsWK1}t+_e%Er zA=)pEOky2-dS|Z6HdwFr)mkE|GPxQggNIYa&tLx!B4<{^{HUzMJ6OnWoAmK;3ZSr2 z=9NY#RmH&Z-0HI2odV#|i%pcp9b*=9d+CUD-UKPYH6(jHxM_9bTWj>T0)rdqwd?~0r8X_mz7AX>Xkq529Q+ej7{D2(Hiv!?q z2L%tW{zl!1M&)p&5z(hOI$!tV%ui}MSI^C#GEKU+u_F^*$O{v`Fy^#R?C7eG|D`Tp zs!OkP($rL*xzX*&hZm3CCdzf1J{VeNRGNlv^gQ<^fubFuI#o~2+C@q}p}Lgyid~BB zH9E~T>z*QEIzcNa9{>B~!dgL=HRRqh4%+oZg)A2?=d}m=plu$f4wNWf`++U`!HsM8x$&vOA-Z|eE zv)90f2&$8Sm*f~dev>5JWz2jeC%0{pjSF8{$zq79eTT~^7?NdcG@(u8 zd~Zx?@*=7E$Y?6t&I!mP(UKoQ?l)MrOiH3y+>69&pNzPiyn{jm@x1|n5R4rD% zN__1q&!?AM@XXjhv?u~=__(z&H%!EB>uNz~K8O3SoVV%m=ZE(}&h__#d%P`UFPqJr z-JK4sSnd6|-Pmi1=EXsVMNmqYBukk5kD=CJOsN`#U#egp;0|BE-4ZhtI#}X+GfZad z-nz?cAxN)_q}jOpRM;_nZY2S~d-44czMDM!|aB}^%ON8r+tqZ6QDOeeQ(Y`VP@G%8g{UsB|KygC(L#krTxmvveYXgA=@EvQc&<#VMAC9xe~OO zNmiD`mdk@dGDpi0HljrozovDAncxlZCUHYD-!X-e#n^pqt7mz~*Pbcg43g|zE%lPc z+c&ir*R~l>&$6$`X>wzEn~X>6j>?lWi?WLAt8s}QF_X49<=@XaJ#jqPD{}di{z^F0 zU;?;dVW#hNAerX>N~)^&N~Q1dP?@)~$%92hinrP`v{NHE{+(d>IiLD- zt)+b9tLVI`O)4sU?Z?j2D_S8akzlT-rWthZYc;-GG5n$ zAoQe4^4V;_r;wWa+BS~8m#d82d8WEaejAKB`xU)QK9)1~L$e*{H|Oz)?;F)XN&IH8 zZ!@{G^qeqiRA_;)_TBT8(cd#tzwF=h`BBvfp+LEbdS8FeOcrnZh+bD^qE~3R*ydWE z1k0FBzb-vovKrvIrSj2FNJUkC&fPrU1XLTC1Mq#ZW>WW}!AxhwJo7h&hk>`Tuguoq zN^i}yJcSC?6~NR47g?ged3khSGg%ef9g!#c2e(?ki#d{ur^lRB72OCW5|3S_E-0=? zOGir>6s{*i2>atvk$g8iwU4Ok?gk%%!6O<6O)htmrR3|J5wLR)K3ax$63Yz6URn^1 zBCQtgxA6(VBBkg0?$7mz0-QT|n-oduD^*j`Q^DrhjQJ}?T#7|UX+?1aeaMf9V@b@4 zv&*i4oRZ4Vl{*zLlde;a9;7a8%)|G*KcVm@k;p{gd{Ls2##F)9{8X2Nm-ubzo`=LK z{0J3HmH8kHMQts`k>1YREi-OQf5E7i)hMN-a%ysR=7Tkx3bhVvbEVK0e(+Wbl*1@v z4Vw!(A;Cs#5|X%P=rZc_t8j}lqf1f+@J+B#=#cqE`x9@od^&9pJ)EJ>RMoNcW~+gN zQ>S0&YBo?te3)H9Y^e*HITyQf(j(y0jZCRAy4C0GBE|-lYkI(scRc`bN6K~Ll@eky zSItl+;F@nl)PBvNHaK&pHq>sXRMjqDK(jt{1HTIBO9=%PK78A7F>B)djk@;jXgAFq z-+p1~GD5ir62h8^ybnWg<3rFtilCwnnC|ta!d3Ij_`tm;cg#-4B`{Xo(wk(u5{NmP z@C56ub(8%B<0lt$!3aWLrqfKm-dRf^{su0`NcWyCbNB`8N>%>htg&kjDa)! zv?EHt{Bmy1K>LP8XWV#Y!fmcTyvUDS0)_26svuxlhk55!Dj(dxXA`qEJJ++04Oe_8 zFz?=^x^DL*@=7Z#bFD1vEZ4wSYX2Um&Vi$rVb(-j523<_%_5Cd5YS|VKDRBjQ(_T) z8k*2}N~~KHu*!w2+;`ai#@|?NiuT{>iBS;W z^`P(>biyPTu;Z5lzeBe#a@+EL|4!k254On?4dx;h_+{VIGkb^rdw2e$zl}=!p3;!J zoBG0B@ZjsejD6nY0wHqdPu`d_fB8+oB(C#!J!mQNKf3eZ`}@!I{cKtOnZEy=ng7SF zFKW+=G4FF8^X_sSbl}_N=dTbA46Tos?=*Z$IDYnii9)n#;H9O;1+}e*D2{KmZ~uYA zzyEP}k@CO(x&D8y{QEyq)qj1I4hN3${Qk$kU;g(yjzQIa_7SJ~R|0^6^RD}zfH%XM`F{QzXK{Z2)8zl}Ir~HQ z?xG>*#XA35uK#%mPmm{mI=Tag^9~+^&aCj5{`@!oF@pX77{NbA@Q)Gva~$mZ#|Zv0 zf`5$QAIFg6@BQNw{Noe+V+8*k2mkB@|M!oByU?iiZ!!rgLG1(kf($7H<#UnCLXnQ9)o%{BS zm&E@ZqjSRdmV?`Q_qP8U|2Y)ke8&0^nyqp?d`vm?0xsvLn8WX2-&oCO?HKT8{{x*jn-lv01)=t8_V? z`P13?6a8WAk-AACm1~pwoF-p*5AIzR&dEV+|AwAC_w47(*CzcaFi>R}+A-mSkvaSu zIv6`j|M{Heec0LA3EK4EX>hOlq7o$Dd0FY_#%K~Xv2<d=jRq+S%{mn{d1@~9~Rc5X#c1Zr55$O z?FilM4<2`EX=r#uWa46O)e4uB%evguX&7mtiU((~K+KuVuKee8w^)qdeMb?!6=Au+ez8f;{+PM^D z-JpNJky%&2_tRa(-Mj@l%<8vVjM*Tu>sk4VeSVin9GQMAv6%DN@hE%QAN!+K+v#UQoe2wTFa~&@BOrTf2Cfp?YF}fvB%qwS|=H!fOxf>4I?EflVPR1) z{dlkyG#R(Cuy8OCZGCrr6=k4>lLOatODA(Mm$!rSk9x4gyn)w22eA9|``!-rj&4A2 zafW}C0A7cGBy%&||3?vbJ8=em74`cvPOjklf?SWe9y3VXx_|$^n5(4~P*e8VPx9-S zID?J5yEBlR+sn&~%Zrc8$<>;hM?^$~`!O#!FE8hH2~Ibtqx*AjPDi(ge^l~kJ+fdo z3s;D%^9i!(6%Xy`vafAkaV4f)TO9Nm5n>w19PKXSNvxE^!=cVzAm ztA9cEBj*pYe~jyo=EQzf2Gnr_yUI8@IDj49CH|A+V*hCAFPZ<@&p!y&A>LqneObsg zrQ7wGB>4FGcz=@pn)Tn38vG|Ij}X7$Ka>7b)<2Q{7z9ug?B-vvju3Z=>lXjJ zUouoPsUXnSL?V+d1e^!%640=LA^Y@YFD`j>&b zb{WP?cNn&A;|CLs1xa<@ro^c^qWVfylit)o*mb*xF+D|Y^X&qLV{7+j5F;bwx*2sb zQTy$7{H;7jQ0bv@nUi=!{nh6}tr2640EQ1XKiX5YuAu`5g8bL^d4~?R$Z9T6sc(Jf z*!)thwd2&Pvf~ORoPHCV>DSLluEn6qu@djKwx{RV^)BV1m_>;^SVq-HzI3KXx#}f3 z{t;%6?C5;``K0nOWGq$iEvCpAwfM+*5>;7=vKVrZn|k?L8cKBUsQ%U_RL4k;yRM4I zm=8M}Qbs{Cs^<_NI`uNhg@0}JOSwAiH(i&C&W~2 zw>Rk#-V)z`_TWZ6ntH2x=HcY%`%x2dKDO*6Yuy3lhQl!0|h?d)qpGbz|sM!GfzTyb93@^ zRfPn(G)m@E?cF44G^jBd{T=8Xgp5=zTdI1jk`uF|!H)2)Upy$%iQG_WII+JpTw6UD z*Y?eL4VbDh+=-|oN6!}%`EGS!0QMbU(;wI8d~xz7*Opw*9!=?IpSABP)P~SL7pPvT z_@>C7vQvrn!9>y*wZ5MOe!O8dPE@3iS@JdaahR;A7zywmC#`Us0Ol1T*H~xrOfqa& z^KawZ=4nKFjWtNzI|}L4+ji~A|1PyzoJ)On+3D2gB%=RxrLos(=+-x)-^#{tSk|Gv zc>|u$b=S-|oBcr$un!N@almKZ^nzw%J5srDiek-PZaqQmQq)S zq@a*VxxfwDBf)cvY|yv2$jG=Y2oX79b_L8)uU}u>gZW@WP}+{o>LwlW=A`YEN5PtU zruPRyjK}Tavt5I-%g{UIgz^5LVCG>p9bZqa%b;`9c}Q{6>uJ(kdRDNCLrb{s)7M<( z@Ug&`+?)D=!G_C`bHQH4ID7M#QPaS~Q#Y8;UlkkfjQS)Da)0}4NliGH^q7B)(&vEXo9C9ix1KeDX=FZI40U zCxlRhcAf;t3A1MQy7?kB^egYHY)baTOB=|;w$y+CQS+%d15-*wJ8JZ6rHos@>y%ET zRx#(~UfEe0=g50$T|ChprnXl zj`At8u<>f(W9!#wTms*kDZXJJVHnAtA{oWaI6exfJ?tJQ60&ZP7#)%jAG5{5+_t*C z5qb6Avg|jzTY2ck(zPUsz*nOnmk$ihf(HH$=|UT4O{+C*ns!y+7jGKf2leUxzF)P{ z=p;`J(&&7SNHYWpuzhi<*4=2H`+-0_~3b|b`N?miSi>J&dvKTu>KD} zFYdiNo1s$2+j)ox1w~6Srh@lkaibjsW$usibGY^)9fjr8Pwr?sTusF^%R`DlmCuSks1)0!3}KFTZ=izTI_xx2L9?fP*f90@ z^?;sd#icVDwJ>$(kHBMn5t-A9z4Jn_XJ!R|=wV^x_H8Pq-BoAkuErx@*}^f=Tc zuZ4yp6^}RKnbuT~@5K&@u9`S+?fMXe9zY{yL?5qvlnQvC1YhhE|Hgjne2vzFx-!4g zu!w5w#fDl*me3~d!JEwqpZYgpA`YdT)@nm0moHUrTJBGf3|p`5oH~(7?~dg=Id z(~cBGJly<^bg|jf81G<1!-RH0qn>&<(Q`nUA7IacV2 zhAp|}n_Ap%ne;~m-TgG;J2tugeUz+cDcrXz`0@^Yb86e2(aAK^#|bJ$4P2voBEJ8i4aV!?A22}3G1Zal0cI^tGU)s89?ek-C1c(;lYh!h`U_yv&``T|&>1r+Q{)B&L|r3m%?0PADo8 z>kjL=_KffIdQ&?_%mx&jnMo#!SJQXWHG(*7L@t&#wn@Qq=PWV1mS?9%E>B+45>0yL zmEpFJZkqg#h^r&-q#Wa1d2Nc)g^V`81+VZ}Pg0Z-a3mT}?l(>NUQ~z|A5<^Y8&}~@ zA0Mu=E^eo=I-Z=hy*CjLay9WWYpJv-^F@&O;Lgywpt)?8pBG)42TV%VRaV?69k&eJ zATOpKO86waddTN}v9YJPuvT5ryd~{|tTc5fnjdG?pJHF6D|W2(IRc*bN4DWs0z`>} zFOK#o-A)llHAFre6K}p8i5~NBg{w_|DCiqq^2o2B4sF;Ss>sBYo~dODtX9koIE_*~ zD!ka=r5kfvE!S&@?YfaGO}IG0H*jZ;Dww8V_1N_GHKUCM9maLzxIF^t-qI;vc?Du> zla3`%iV}j}6qFt8?v8(d-ajLlnNZ}{vgZ-&aG1PN!}5KB#NNAZx^q`6RHcS|>^8OV z%&tjtgVf3Fn*Il1kpU?B_0g9dLHmeZk6C9kz4Oh9P-NJd?_o7aX6yu?dYkQ$q}kE> zb5I?osG@SA!L`t0?BrEsq`A`J7Kx`3#rjDN?G9b8V~dHX2|+zkl`Qlbci?s_n`%~l zb>PKXul~B6zGL7y`Q*+nl*Bt_lh%dwrS;OGrrv^_{pVSi6qB^ct?+cms!%2|FT~gH zy4x-mk(1v&CEXo-=dGOkXG{(U*1&7G%eM}Obk`1BkQClilRGwfWoz4;1Z>1z%L}*c z#}3y|PPpG!g6j@%0SPOqQUHgw4oc{{%7gJ!aXL_t_$;`bP%yae@P$moBv~cpFh$ik z=JcYa4bNBHK@h|tY|fs1bnCaZo!Tv-S?z`F$#ci2ms?LN{dj^CdN} zZ$VddpCUGzLtV)U1+C3C4$*13pdN1Hsog$N^@&FM()26*w21R5lN-}-+mxk(dzpiU~L3oUBXjo^2gIdi)}|1$}AUY+VBSXsyjf`bp9mFnwH{`;8?I z?F2gL_H|y6tJj=!-IHqGEz> zFG&_+(sYQGtLQ5m&BHE_i_e16yjcvDN%-?x@)MgQs7>qZKR8r~2@Jr-J@|AzCG|_| zp9OL!_HR^8#(51pj=lUwRL5jp=Ssbu8hU_-X|W~QtCXlb3-A|g8`T%n5bfJIC|TGD zfI6002ZhSnORk^kBg8?a)rZ&m*`j>gQ2db}xo)EvCM|xZFkLgPta_<}4%UlQ@7c26 ztNJpsmR&Rc5+P(Dw6<{|G?3Q2G(uUbq0!T8ZEETu-h5;&h|#rME3wuSnc9dpS9R*= zT;7sBpQhKV{I)w6^gN#c5-5e_OXi(Ty>I^vOo?9kVX8 zi=d&r^LjS*^akhAAyC3nS+5@dl2zHoVX~K6X9RAMVbxWogfFn!$DvmI!VJ1q?b`%9 zDpb3V={H@1c`-N!RAEm>6fhs&26HRugWztT}{@yDV&- zfpqdpH>&5_`ZpZoi|Ub9Yo*uw9ekJFxfIXSp=1EL>Cs{L*@x)zOruIsR2^e{R=pQ+ zwQpESWnZ(4TUjyd&E5|_v{yZPH?z~7uX<>HIdK4^tSZ3EJ34Y81{Hd@2GY3=amqJ! z!FJJYyO%TUn2V+pe9!?>Z)P{3zbK&kB_BtMB!?095%yg_8t=K5H7{r+1~sjLv>;or zt~{%}sx&pZ2zrAAmDJ?rW8OcXYp$fMH!`Vf#-&p(DVRMVNh|8z^qTQ}6jhdLAR^uO zSUta+N>t&{&p{x-zwOrgnxc)zq4bSD$wV5C{yT=x^vIPCZM9R5;^(-8iEi`>TQm%<>6t)R_}9ga zpZ%|f3^08`RSviU49fiP`Sqh=8+B})a=`xA0nYzpJ$^sx`FDT*)nwZIn?L`GHUC)i z|K`u%i@tyJ=imJKdk*}4?!WQ#Z~pu}2mU_y-}w1AfBv2Wf1mqr{QR3gf6sxx&;9?0 zpCIqx!@Q4m&RF)5{T$ zGialo3^L4S#c+JqHvAs)s+C`bQ8Ov&w_lGhNZEsHw;;8L&rBH!{hR_ReOc%;r}vlh!nD@S$joIbQoo%aoX(VwcMo zM#TnAsh*s)21b{B{YW*esQX9fRU?|Htn_)O`pkr2LPg)n*+KmnbnLl%U}Ic;FoBV7^%&gxE2Km<`Hd}kd69i4BCB>S>JBE zX%B_if>24+UkHpmeQx>!i*qKUuwc=qYU)$70c{Ciw)#7uG3;))iO3 zr9@E>XuNink?aru6N}Odtb&PB45k4!KE41>P5eE9@B)8Zq2Y6n-$UUUoXx@FU;F56)6kJsZ%7%;Eu`pKBGA%*s7 zRB1Z7cszhDQaZQf>U|aroEts1%d<~QV3x9bgKGxfRjjGqP-E1ThhXVyX(>!CdN3v zuI>FG;=j1wq>`k>(xNIWJs}PbUMLn8mig^(xIH;KIjzM1gOBduc594Ese6k`>G3)> zBS7i5+sOmub<21%)0)YfOnrV2(^Fz_xu+kVrCoiT=WYGkW2DX~ks`fUp)AXQq60CM z$QuQh?IWb0FaQ(xPF~uy!rtNAtVqU0xGRaF*v4^!T^l3F`>21|bUu{a=&ADMHmp}R zA53&>(Z6cq=~7k|^vqqM{k4-skIWjEvk+H_?<2xHU-mgJg{i|hj2{q?tdCHAIiZH) zn()^CJ>&+OaKg~0EbM|9wjE0)D7S!7Tf2Eu*PC_o?}n@5r*^(X$2XcWjy2fA%+( z4V%vmM$`uwO6iE86?OfRoJ0Fxq(T0Rlkc%IZx5BcydwF9s(=XJt(mHnr1Hge@}<_l zH+QLKN!2#!^-b(btQeK6@{XsrlCpMDGBbU_*58p=X1N=>nkwC9#zFlFEDcf&uCNcB zviC$Ah<@Y(vyOOasyMhVg16#d=LsSY-(EdoenYI+FK_$0DV1=5w+z(wP{AP1@Ik}p zHely1S2NcHnzX5+VBV#5z0`|4WErGxIORQe1;fZbW!n)UU8@A1%AGoY)9Jc3b7%Gb z4#^)3AYvYvtQ$)b37gHwuY2rH@K?*7nd;3kZfTw;hKpX?4ZfyuvZXeK|AO4V3W{sf z=JmSL?rS^^R<%@Q1jO6q-w#QZR{}COC?$ipnjcWX2dd-WNxH#?C|RWP`b;1uEXByM z&0Fl&6Rh%R6p?FJ-K7(B=kiLA7;!GIZ-r9ATaYM>mlmH+)1Y;l8)5eWrjT+G6H%_@YadN4NYssbB+Iv~>Y1jRB8U@+{TwI@yv9erEI6d>;u|FL%eX-X42a2CBby~Vzr6FUY_N_xI` z8cFGB3DT1LTSG|VGqaJ!$@z7qY32eIRw@8h>}S6xwUeZ%p@}SPLy?fGR&YmQTw)U^ zS&?R?jdR#ZQQ=byv(z@c)?uS_PeG%z^sH>RlJ)bEDqC3c7M1E57AIdK1*6aW=roC< z+84d=fJE}})!!UX$wHpZpWj$gG#$b@S;Ck`2Yn7g^T+C%ezy-<8Fp?HDN}aVP zQ6tM===rSE+5K&5&PTR|+~DUBKRm~a>56mr^c1;Rp%)%~e39|+SJ~O~6nn4E%XEu$ z$!q7^w~T{BEPeH3`fg#Elm(HgHPqF<%MKY`_k++VC|dMy+nKk87cX$}-o=ZKCeQGT);{R$rvLPM|E zJ#9h88kuS!JBDgEE%2H-hda7TAEBDAUT+LW>NW2CxC6zAYjwOb^73H zNep2-lzs`J|1grY9Cxsh$4EsV>us-0(0iYLmL5oRD7qBHM5Qt; z`5F{rto`=l`@Bzq+S0mfa9QY@c`=L+nSxKa*>x$)ynDgKH2&v8K!cjqN1`&ViID;nMzomG-_g7qAupJI3*3LOINPbHPY zn3EgeRFejqtfxu_{;ZAjGS%u_OSdg9{XO{&;JY~3zP&ENw5 z?Jw#B=Qn!uPTXe*zoVoIWi|Kgk_k6MS-vN01lO1YXkhXbYs2Fe<`eh!EUeI>N%VCE zVBNGpc&f*WXp5RN9lb{HkZ+fgF2QsnzVU)=M`XJyq$i2^F5gXitoX7~aXzb=0sqSP z3(pn`aY?$hB|zw|l-+`o8!>`fEs*2*z0B~WE9GKc9u>>#V!1baz5-09dJUG+KLxJV z!+|(QPe5|w@1g=ks9S$UQIj3%V|qY&dAR}*Gw=6l_I&V2U_^N4Hs$_prBc=6;pOFG zOWq_ceDeTGA@tz6qr}(z(cB*Rn_m{-U!p;1rP(*V^fA3_j?oJZOTxxuZpTol-`df_ zbO++t$K&(!3FF31O@qo6PZ7b-gPgDPTU`P1ngcH$5mhSM+}Hj1m}%TdHU`kD8CBjF zkj-aIp3IogtE3%Vn)N{v&`GY=%9uN8wOAk>pvXdvYT_Vj@0Qbwfp^

E-=K8f%!| zK0Ys?Czb(KK3CFqh4O)PjjUHu{1;!_s`>0-Auk899>;PQm3fde^CObLNIVE6AlD!~ zl}E=W&yKsn_}LjrXJY}0z?(^j&13+OHS>D&!kcdhVN<)it_kuycMN`^4Rr^ zhlHfFNh&a$mu0c|!g%V^F~Hn5`%f>~FJS)}4SGhlykW$&g*drwVg}ntCmiOLWVTsD zdiiS;lhoUi^yYckSw|XO!j9}-3@54zW?}0B7@1t)8*G$A)v$bgizNBP>h@-vZCH{3 zd-A|Bd3Z;6#Iog6z`N`f!iyg6bUw0M5F;hVLP;y;{H#qmCSCysLO$%6zRLJsE5;0L z=jtXKIs>sHZZJI?Di+P(FlZ4Xc zzsX?>w32S_={D}MluMb}t>blG22;@r+r%zi07p?1hq<|B(xV~W$nMh!y6`FF%IqKn zqdcFcx|CDm4~&HssyvRT8+u@HCm(e&QV<5d&&NQ(5&`)_)=t@N_Oec}+=xwSXiXrJ zSR(xQ;gD%%hf^&Yd*$)s4DQpiy(s&6m}n(o)|3)`NjD96ETPo6I6J)@CK&0C1Td z&tfh@)E6pWwP>ecGaTMmJu)7XFzrY*fC?ZYR#k9Q3`V5daA_e3@rF97IH^ZG;URH7 zl>wLNO6Qt&=%w}EB489aI3yv3#M7fqqltTc8nlaAw6flo?d5j_zUu*gS(9&-C0Kni z;6S#!^h$3f-_ULn)^)jK;mXJ-To6komB3kT03>Tj?#Hu&5CKY-`#+LLcb$JYw>=MB zX_0Qh`>A5t+`aaxhEisLaLbkVFK1^zpLlNL*POfK{$+&;7vS~u7~omMYn5Q~jBpYa zW@ctp+e~JuyleGj?}*OMb;e;H*|`mHiKJmr2t&v5m+@b!S| z-B??4l$@fJ3hNb;Qv|jZ1A)Ng>@oo+2ocQIHbPO;x-_&+xk={z={_^Fr-y z-vyKhywv@PG$~-fqdZWy^d9`Fl7$f|fP);VrXU+!I{_kdja@V@t5$%OgTYVa-mZ)A za>W`DO^2@88=jg zPGHCZLJepo9~`4`qc3E(v5#;}3Uo(!1ex@Q+*_Hs+BK>*DwCjulWpvqwwGz`Rv1Ti zy;41>%=U^WrlGyV{7&)VWh%BA{>!9Al_BNgc!kJiZ97ijyXn$-b11~7s;?&74e^@8 zrNBwSrv^U|BAlp7n=pjEjOS18?koa!EoI*$>!N7)h`hev@Vmkvj{I4V-ySuZBO+)& zK>n)k1wrs)fGJua&=S9husbi_`;)}JjQB1~)n^Amz!QuZ)>p2-ZfbwkCLdel2^Q65 zZ@Te7xBSn;JeDLed^yRxJ)(pqHc~Q#`PhKf2J|mrQ=Sq+LrYu`Jp5GTm zp3wCYKLTQg9*aACdKTRaVJ6xPwKdbzMniiO`j?n;v}}_O1e^kL*8{&<^Gf6p_3wdI z@obU|%6Wm08Y`AWh)~IKLR=CuxzMmREYt@MGTH3lrXD}=^&-FqiEwJ9_BlY6a`$sY z=bO9{IXd`yNvtyzxw`VeLX9^-?+oB03k}-D(^w&FGs8gDw~K|J3CcIScauB+rRnW) zxRjF8B)^=9JMWG6{>&{sx-3J9wST901=VmB*B_CVyLBp6dESB` zkk9%$cmps+9y|P%S;PX8$EXF^$`GKXr-}Mj@;*ReE~`8XWr*mDiyt{ok}d0dFOc1A zkV6t1(@)O7$jlz?ZD>eJNJKI8fd@Wj#d&QR)ukqZ%>>W(De3=XA>e_n72x)rnt(`6~h&Fwc3sw(dsTmIBYNau1W*L!H= zQkU_V@Gl2}CK^il+?2&*D#6W_=QGvlH)(%+6({`B_F&{ikl(kmbVzHVfKfUM=sUWA zZfqm8LEWdgKz!iST^W|XVXeqcs6I41neiU&Xi|-9Oj2jp$IJ^Lwx*)4M<~aZ za#xeAb|rl;Qd`vm;{H7YmWXc+Nga#10qKJHssQZchn-6l!Yinp)a2#d6nOz-0vQ(y zt9Oh@73@d^DCE|Jo|x@?>O0lxw7uGwYq5XU?pC^bzQzchF^);1ajLd+W)tPl#VNmI zWRmN2HvUb#G|*39qCOy#|Eb5NAnhFn0EUGSu9NqBzRu%4#LD(#+=b)$DB}04Wv1Dg z5QFi0L)@~Sa(iH~u6E!pAZ-f1-GarnVnO_Ma0;8MpB{bs1^tmgnu6@;_Yt}*@Dt0- z{CAhh?wvq*q@6l3MF3;n-pruM8g3g^`vaY*KaameoMt#>%IYw}&Rbl}y*b?L_e6Z= zqi96@9wmnR|3&hd_1$irbK6uK$?X+rxh${IcK_`!8`wYVdezRXR-?y1ak2 ziZj|n(^gPB=>AyE=LvWB07qBFKJ59H6D|6noYXc%bLRBg20h?CFjwYa+_knnU!ip_h zXX|{Tz4$PK}g)rta4Wi}H?pOGh;dVC23~$*8;s~Yoqz$$Q{=F7J z!kEg81GSYNW0{VM*Rry_J1$Ax%lU=?Z*nC;_h>+ zERWmGug;OzY(Ti-rYxG4G<+C)d!grcQ3561NwZ%~xlX^EYQQRd!}Yf2h*h8n7 zgx&Obi`S+j#(^Vw$_ziZqIxbI@dp3W0XR=y8gXL%;#;W#pYlb$G}x#h#BMFBtBa6| zMtJi)Mi7A~4Em2*531odyTn26p58ROI;|dJ``7y#ALZlbr%s-@mM^mdk0MC$W5@Kc z?W`Uvn`w->9>Hhah%pO=ExXYszvjXhJh_D^$k;E zc*SByu-M>Fl++qOxNr{I7+GjD#PlX5m3`+eECYjkdJLI`*8WD=>@pNZxV#b@L#!5qOcHCzZ>U;F zn6^>w^tB!yHpD9!HRv4MBOOCGv<`zcGf9*Ur1ZC!9a z@V`<+-=Mv(L6zFw2|r64{08!0%#&s0Lhl(DWN2LQXmvbw1J1g+ z@}Hr~-&?^76SMdyirbP{?V$4;fK-o;*r>z z$Owj>tCTXHK7%B9#5~$x4(|md>vx!24Jpd`fFb(@rJPqn9&z{ooKyanQWditWQi4P zBYHR((fRe14{>yGk-VDhHc`iy+RrL_#+KhDc$Nw&OLEn$0~!n(^K7-W08^L8-1IQq zvqNoh2~*O9BBO_Pefqg*>-j8vn}b8nXk=l%>Wmk~jA-&~^}EIg;^R-A7aai8priOA zOZB%85;|75pd{-v4^asuH|J}8%wh5AH|xaSh7C(BCw0vQ%ld!S+sB9x$sH9%~h)n zE7I3Gpy@rBKK)*{i@L2w_PdeJJJ}zCHfa3j{=s3l@ARIkL4!{=jj*$N<4NyU_hCXX zB9q+C#CMU(^=!i_wk?dZE3ar1R&;?xbbXY0Ydy4H4mJdV7B-xG^J15%XU;2?m9?*U zardTAX}7AMB323&f?N4^3!DPgO6&E~Mq$B!QOy2vDrqvJ5VqS9Kurd~(lTmfP;gpI z{yrbY60@9;KrD5FT-8}h3x&keFiK@(p4Poa>b;0mNogqP9ITh}fT1hbd;t^ss52`y*^JIqfYVlRrx z46a+~+K|l8yC8#q&i<^$CA#Gq@^oMKuqScqYF<*ufg#>Lnh$33D32nYC9JM5szI)@ zoBfO~0e+S~NIjMN1qS5|Nl5k0bFbix$*sh&5JbQ)=MLT|1!!4oLSO{xr7ktb zCgbHMu~++r{hd#j>NRk&LXY6*8|Xk&I-l>NCTSzIh2kq~^KS~0Ek_d;Bw<@2fB^cE{4cKnj>UR!-#yF90{ii^b$LJWIg2UH$}^_$w3?5{ zmEnE-v4qWvqTp*(maB_MsaN{?*kvlsM2#`RS(0J03c;Xf>hbz~!Z*P9jX;#Gd&Yfh zj*!l_JdkBav;tLc;&@R^OxR+!igkzKI90;6jw6sOaF-)V{WKNd@!C*=YZ&A^pRUYa4l>R;E zB-Zb_^8G}@zU~#@L6*RScVxd?Zk_n>H2D0iv#EY z?(I4$eOd9tMTh$JmNiChExo(TEk~kd3&T24Tx(uza2Sju_HwRceu-pyGD_URZYwIU z&_8yls)Oz%DRH*ynbGcPIER)`i_40+l|HW!V@ky1!(N!mvUiOLV!eOI$ z-9E`frTxe|1|rpx=SZL`I9+klcAp1gqQy0Wj)_pcxE;ZD;x`TD`W?-!r?7S>f);p| zRkv=hhgDd>uK0} zfqO#fLsZl$@EMC9->?*?fY|dv7D*-&iDPGj*Lo&3PcP4ht`b`3cv!aDD4j;@g}P|z zFB1dCc3cgn(X~T^gIr!yI}dV`>8DOw2Cxd${LU?0k(@%JMJa*Da)FA@qjs-z#r~_V z=$w2zwd#98smsD-nDsaONAax--Yc209coCdg1o+ysD01;LF!jwrsk^z8A)m%F?=J4 zoh0|Yr{`7}$xa?p_>j zxYV~@L$st>-UuJR^gA>SRC?Ba@dEc~z|PRP?nDT@5!wr=uME7la$tOV?SKXSXGu*AdU$3d;~ekQV%o)Zh{;Gm+BUjOwU1E+uwrp7Pt|fc~iwFGT<^uQd53M zRY2f$Pb&CHpJA0oDHWM7LuoY&)5hmdeRmS$`!<>31&WMm@?FhyEu~unCKvX+h0UtH zyuv(OqUpYxo?<7(>zJJwM)#b8Odlsh#t{zah338|{N`+j7lt)bawpCxaL=LCbwk9J zu^`BVR>1%RkGcmZwBy&i_OQOpH<{vUaNwa5p5`ub*PIbq083l900m!H>n6S!JqFN_BF z8fy;NJR$qx@;1!%gbDZdy6@*ITbZzIK_rO?8oA7kvx#S{gk_CnH__v~4+Ndge)(xz9_-vCt zaHg0fAIUmal~=APtDr@jr4}d0(jS*uu5id@ht)&}482ZJ)bonW7d;cBqNk6A7uj?6 zemx|lc>Ki8O5{s3zpv+paC1fa@v5MScL-%_h0_)nbazLt`=x{VX)jgYXe!f^L%qBq zXcErj)sLAG*$5`OzKKTm0yf~0$#sutzpOdokU9rYQX~_MyF26?pgvk*qn(QxT}n@z ze(HKylfoFUh$PoTXwV(6kO*KEpHhP3beu^&J-2+G64Q;bix3TTuh7#193b;N5Q(XA z*OBm3nt{csZO51XRZjlXHRDsjoP)`if~mei`9}UZ9ESDU))TeL%4XmEjC(AaBm$N) znvEn8HQv3#EO@GVL6LSZVhQ_BzfxZ6Zq~2K?YI0orcK?{4Ttf zYAB6((3eHd?|dG4HP1a?(m{uw%@^tpyj-T;-H|*NKN;Ban~x*&JC2xfd0EzTCpK`0 zGCi7r&igp-C2ZgUwHVv6Z z?{q!5s$QJ*pHHe~?3tmvI+?y=OX>FsJ6B#4d4RmL87=-`1H!cEwj*Tf`L_OGH&Rhq z(n8eP{%s$AX^!oIH77z=;&d&rs0^015Z|EI$!&VxNV77-spQiilPB092jiZ&AGn=z z#SnNBxivg4tvbJix-~aePb{Uwq^kT~c{3!fu+5TzbE%*K_24w!^n@1r{k1Q$bf$d4 ze|I!bg3(KI|7bUI=E{A%q^4ereeB&hyt^oXvuJnfU~7CFxrrJtU!3GMc7~OVxi?!u z=TaPD^jF)3yve@wSKsSzx3l36z!RrcJ-03bbB{nK?Cc3nqqF(1-g^llo0~taOVrC1 zPSi{HPy!d(1X zpJ=A5K$jPJfh-%w7$3E1tD5EAJn#mU-Tb)@<}{6!r9-YAtT{tp4`k-$rQ^J6+dazw86*vJ@OE|=WvQf_y5&8%lU z$ZcB*W6fu(NxIr^GhRmkHX>*+ru zQd;6xv$-NQ$U1ckxM298s9FCsr#Jt0GRv1>_AfL04pykrEvV9D$SSV6!MUw?7I+=| zsG$T?VC^t17TI;_QyTNX&D&hcF{Q|oApmlalqZygZR2UK?b zp40Xz=Oh>F9lXNM^%=__8pi{UgM1fGQyfPwE0*_rsjvH{4lE(GTD)IIBk8%{s_RE; z%lCv2saNP}E7OV+_#$3`JgQIj#snp=tLBSbsWYtsX`xW?QzrIVkm56Ffl|1-5+t-gvf|z+P#@ zEQE0n&NpdLtaR`lR}h+{rKR1?q{px`M;bI<9yoQU@TY%n85R%`xuATJ#LZlNzN-Wu ze@B1PW}!-3cCjQhbLI%$@(skWUY>BDhfjGNMOuT%7yjao|7kK@OnxyPR=su1w;Q`8 zDT(e=rVH3%CtoUu^cJ`l;@gB<<1eJ;E>4T+r8?jLR-?B?zNb~|UcTQgkRtJ+%vg3l zS1mxnDI)E{Kc|1QTCS&`5Y*F9n(JM&v8vWd&3*ErubQ9Lv~Eeu)z3NIZyp|K>LLAl zP4EhKz2gq>%|r#Bexvs>Fd;q9}}a>#tU&^S!KN*;f9oy=QlJ z%H0nq&mW%Ws=9)=|9t1`NX&4OC9l@pZqMi$yRG}1_y_sIyj5iOX6j=GeH|}8KE54m zg0!nGt%yjft#X=So2=?h=N1scb~@mwn(|4B<@`NMM{T?&m8GEU`GUt`K4scj&6|%L z(Syp`3`I8QA^4I4Ok}%zxe+V*+OaXHGgXp1;R;I6_37%?Qg)GV>4%&0Y^%@=WmuCZ;p`k-+F^Mn>v>J3&4rJtH3&T;av25#7{5 zY6`Sju-QOwKOY8y!Sl*27MM&EQ7Q3rKoE?u6qQuwj$iPJxKUc$dboSV$dD%-$K7h= z%X_yl+sn~0)b|&B@pT%8R>!^b8$lB8^HP^`2dOyFpE#QJps-;j?Bg{~axfdYN3?D@ z{yi`(lJJ~2h>*o@Wm$h#TU?A^UqBdHX_rGJBs9cr+}K@jhkoI4p^Hb9b`#WN4=Qlj zIAu1??WLuQ`Pdx5BQ%XJORN>8bPq|wAn~peT`vHi_hJi<4O_oyFlwYKr zfUSYlAg=07y5>(f-p{WN0-tH@GqT&^B^T9wHPSoI}rY^Y8@ zm>vYTb30$Y2mf|oD=*Q@?+IGknkL!B(kg&@U2=1H4t&#I)+5JgD9zx9(T}K_Y+~dc zpRdu;R|yY5+{Nj}!$ZRZPQ%rCfjNxh(m@za1dYUO7Qq$IL5h!|Aqd_Pm2{)KlB~z> zQ0dHqPG*tj3+HEd!w#1!w@$pb$>VTC!--TkA#?{OdD$HjqE7wz50rd|69>>{ zF|Ja>NC;X?GI7sGJfXqYB%Y67xLm0S;^pOJpr;7Wx2{;z)s^>piEhEePFf;y!?aM4 z-5>oZXm#z3m@O}}Npi7ne?x^>bP>r~Y;Q0@nqB2kbC*%Yws(rDrIc9E*#-L)sL+>b zX+6)qN=6l={6E6ZF**`=Tl2BmQOCAzcg&7$+jhE>j%|0;v7JBD=@*7PH$Ip$kDi!{K1Tw~zC&`w=pcw_blI74lE57+Io{oD}{{x-XGX}&X@ z<&fGpW5g@(;(219)wzBu?FC(A`wpFD>gbTSp{q;Z@Rj_9PtQ+rz0S1M^$XPolgAnn z`$8K^>s?hc!h7d>%&)P62gTY=S{zLJ zjPymc3#3xv9-~?oJw%xv7s3L$^m+NIN+^>RKRVTQm3%9t+y0>CSw{JT)yZ%Ur0nu1pM<+*$+BxQD zyrmNsf@$Bxgl)6taoI}B1F7tR4Ch*9dG}KHgI61DeBa+!C!MS&pR)T98ad96+=e_x zak?Kn>L0J8TrN*-IcyKSWR5GfE7A;T$T7r$g@$kT16_pTg;ED2_QI)WOg?#bTK)r- zpPp&0WBpncl@Y2HPqVC8)W@jqaS{(07xV6OZ_d)S?E1l#@l#GdgG)OLgflDsV>4o0 z{!70S$FbDvy}H&$P8{JSqOZK=6B+@VTMGa!zEz+7o*6{_@yZSqA_up1wF-6`*!7Zz2{J8<`sGMr^fGw)kBsq^jKJ?^kt zn$D-Kx<4)ez}rP5{L-_4s_n1rzSvRB%41_wyswPZ(za`s7KXjn8ZK1ej#SdNZ2{Vk z+}$@dKFn$$YmXA@(vF|Q$@};0gYp()c{S{_HIIf03YV!R{mBF~OJQkLE{W1jW0~xe z38~c*z)`uigAd<8vI<{5vx!8B*`)WoO7}qqWbX(9;qCEQtQkTK zY7E+Fo=0IuozFRp_O<(GZc0c#at)5$#6nXa&^S}hwUvwPl`q~B3Hy79xj#QvjQr`V z>_x{ScOw4W>+j6_6JENuUm3ylf4XTvzx4n zJN=(|zrrHu_Gn>qZ=C){EJw5l1W;9Q4;XDJm+r;UIkUhe(0l%<@)a8y3_ ziuA0B(6LkYr4wfQv;9^WcEP7P;!(;pL;5IL2fM9qPfhKh)V3W^NEFkY2tG!w3Lrh} z)zI&QmKv?}P5L<(-hsz+PeQSy>uRL8LSfREa!h@%1ivh{8B ztgGnCZ;$vMRpp~&#Cl5H@gwk|%y4u^d?EBF)3RU2X8#uHTC)%}KS$6-WX0C;go7!B znvK3~jVdKRJfYMaBh~dDc$d&U1HDF0!5p*UJ{0Zp+u=CsC3l0Hpz=+)O4d*%&I3c@ zEpw}ur3eiSNh%RLk&@7d^g@pmyKBb%$8+c-?*LQ#o$PyR$!@d-mGm%_m3oIpb2dCw z=WT}}v;FLfLDin?d)RFbN#bm%Md!JW|B# zE4=}YdA*Drt%0;#T&jjyU{#+;Y|?Z9hA)Lr!E-~FU*O_?xk)@XV7IQ^)Xw;dtWC=j z$To(0^=7fqLwZ{f8S1^xk0*ydV3N z>7hGyE5Rbkh~*t#rqM#}fPiDxQbkI|QP6R;V_yhBJhRp=;lZ-cMn0H3LA zbmXPW@x7r^-?RF*-P{mXp2fh4OO{=?*xR06RK9pDS%^Aw3IA4$!T#vnm0QMeD{;2c zr3_HLasVI>oPz(>@LFQP-lxZjhynF5W+=c?^|Q*7>ulvy^UlpXS&}ElXyC;e{p4!v zm@L8S!h!qW+g{4)_fbJ>#KSFss;L4zfrXisoopwiDKYKl%CBg)%@ZcE8I8@&8g1{* zEhD=FQTxHLMAdi%XP7*_AU)p+bznps2%vh_4SH=k0KLv?Dmo#m{ac**Pfo$Y4Hc5- z7M`~-sNOQV#`NLp?X%>$Upna*w@r-9% z%o8JukAqSPeW7ayu-z|>oi5iqW*Xf2uA#(9NZTPzg2D?tf3-BiLpyRLY(>O?%|ne4&lSxcK# z+y>Xi$dj|(ID9eIM#J-e1fGG92OZr{w~-=MYt3&NdR~WBz!+FzS}7RMQIPXH4hKoe zQ*kC0&lzzbFz=vvLpVtSaWZkM{l>Lk`qkXG8}uXx?7n&nnzVDK*|$6U97>zy)xV7E zetk8uSbJ%xF`#$U3e3`Lx)GL+f&sVRdi>+JlhwV0>3_r-NQG0?p$>SR2F3g4J(*~` zpQRcyIkufY-bvm}7_>kCUB&SbB-!%Wo^xphsWWfb@f=wxHJ%TTYA2bQH+}(!!NS~nzyR;FR8-sP8Hg(K-`x93BN)sZjD{b* zf%LHzX!#AApWoJfXj<>l#+N1F2KFQM1Tjb+F3Z#!h=(})sOB{HuJG)T#4d8P` zeNfu{mYHVI?tJj`D)F)FehzQHNlNJB*|t-h%IR#$;i*;6yZ2&tb$3&#;4%N4w^1E% zccC;q`99_2eYQ5;P-(J}cp3k=36%NV(X8>#u=p;oBODdr^9l)Exbl~svP{!_zXC0S zQr#<AUj z1IDm`#<$4_v$vy67K0Y@@tN}^Y!xU)x=pSEe& zZ$|*UX&&4haJeg0f*B^{nBz3%xM-V7r*Es7I(L9J?2Oa-B}xBHM$AkOG&w_JQ#@k~ z895KJ7EZ0o{KxI%rFUEWB)-0-Uz@j!T$a^)@=9i#pXLo5pv8O1_2cnGUfLtWQdcJm z!RO2s_d5EgEjJUlo+D9NsvEGyYKy%1>5F%TR8b?wWF_T`M1TjRIg{e(-_Cq^w}=W==yuy zCLEwbR%F)h3^kRV+ktt08wKOo)Pjo*oTfove!8Dhw;JmfmarjRB<1@>N5(|odb}gV zpMNG0g}aVm)h*}Rw||eB|AawKA6Wn6U=hX2{+5m#G#*VUi1)Sbpd6pG=g5JzLH{S? zVVEy|c1qb7Bn_m)*50zEX3l(e!wiw1*f|jcjgMhtHO?VfC5S3)z1mdE19uCwHKGDk zMm}OhCQSeCY-OK649JRyaK`QoT9z;|%pXty5k{v&_jRaDjUI5F+B%QMXUB+z@3*$+ zY#{n(ev^3MQU{|T_%J+0@H*>au{K`hdV;m&6HIMU0*O&%EI+}+0gjYr=pBmj_T65C zQ#a39;59o&F+RC%kjkhJ25QAt{en+DYsdEBl-)cDrf+#*-kb=(1R3M4>60Z{!sLYq zdMGUng)wp`xl69G>=iV|m2?s+6(14JZACQyiO5i&U>F=1h{LixJe|!?OxE)la0l+! z5G81OI(Py*i9qSX23Z5qkhi8aQr3ng9S&TEO=rfr^s9G1=|fj^$e5gQ%xVaM#}7 zhwj2|X^)zES{-;EA*j7>HRFWTngSaX8cnB?g6xia6;nKNlS@mK9qG2#LXB+x+@e*7>D~supE_XY5y!0o$Z9 zptsHq!LqXn9EU_D|I@haM?O!`^$@Ua3Un`HA2<3xsq2SnB76m+7@8kBpX@DVkG#YE zp)??eb`+%2g+B>O$H+GqY7#1MP$VQ;r>gK__5cQMx7Q5oD}A&HyzQpZPdlvNv9?J< zc8r@?RPdRN-eZovKOh?>@CV)>0hLo+u&@-8l;5CA-dxj-9%54mfNR_zp^Ytf$H+4n z^?N<0c+vB;W7xUWx?G(~liJ>)eh>VPRp}e27isThdhH(@lQBcEFD)aY$oV!3o@0>! z1(%bRtJKNn0pJ1g`w&pOHGAp@!t4e>Z?o<|sd3z+w99?0W;$a?=YTK`6!CUZ_c(gB z@qj#XIx#=>4m!_)^&=Sae%LzW*`DTyizk5($uX+=A`x-AP*3srWr)$i@O(K|?z~^Y zS@m36F}t6$?x4S(Qn#5>HwBaSVN<3S97_5w;J9Z8aFnq}bcx~_E>0?e#{Ncl<>6`J zak#Rw(RcBhS9)#^ric5d;oIjd!SK)}$ng1t9kqwR=oqT0;5`yRppPMhYNo>vs&YB2 z@BTh%bif%7ewkcxKNxr|$|m%(m4>}Vf7Nm3jPl6fs_0i|Y(eN##9OvEdM?g8iNRTBqgQzZ-big8m_nl>2 zk9RTl6b7u>T7l*M$31ZxC*l?+`m|2Vv1n6;eR%GJaH!e(?G|XE#_XXH%WHF)o_gv6 zO3&*%Hg;87NcIZw09B9?^fuQrvN9Sf&W~fRFueC2i~X+U>IF4}+qB8%s%^Ay7JjIn zcTQ7Q<_6|@vUG8DDe%X;8i7hvE}+)XJ};9S^+*+k1Uw;>n!C(-2{J!+QdiG_?Fu_3 z?-X}!jX#ud@HdC+U;B1E2W1S!WEx~D9`~kMGv^t+sFDhe8VtZ>Hf;(uK-imLNNmW+ zq+Gw!qvp=TUD{k5f0xfL9j+a=j^M@#rg8gK6gInjTYg2E5eG~Mi$WpAcX2X}R`Hr{ z5tE0?hjKH8q?so?ouMaBAZYT{rwHdJnQAI%z0)NjnIWB?A0;QA{6IlPTa`SE8)P8s zphtQ$d9n)@G(g*)^Cyl~6FUjb1o zt}l+R+x(GI`a@lZ;1LZ}BqimV0$>{*zRy*?u`(~V=AcW<;+I|Y3|3okmTWI;5ks4b z$zK!exO78B+7A+wikX)v9?5|s%V=KBG?X%znThlg5oPI=0U|J9`rcqB8DQ3B8I#~T z@cNB#X2yaWjpGKL+tub=!BjssbO8<0u`S&~TD(HY`QsUzTe2GKbae7&9>ZDQ5&)BOiWK8I9Jvs&FroON9` zmS_{F*}E*Le|DB_pW#K_qgoAm9oB-vuNL7Ni{*BO$)XI5?6 z&s3bzE-ee9LOBlu%w&QgvycQ)OzQ`JI$UdIP%Kh1HPmSA3K4;>$ z>F`UdIZI6X4X#b+JU$^#b)1D8Vi|qO&F838x^PkmQAuB(!DGE|G4L-p?(maV!4ckY z-Du6^%kFQ(;Pa|KO*d+S5XI1-p5S&X!}WVbtKDN zTJoaD2uBW06xZ`E$?q_ZbK!+{xqDyhH3X?GK=f@(E0P!57AvGauHy)N4dxsy&(l0a zf0Jn>BK0Hn&to0=t8)}Mhs3J;_l{I$WAonYLlFhQdN!RF%I+X`f&jV#A4Q2 zn>Q#JzT}ik@1Qlpjy|c=>eV(IG?e&QFI~%+^Yv`!QW{p^q0g(w+>M5w8uby7Vv~U4 z<)%qtHSjGzty%{P0-j`!bkwP7?>^lcCKh^QIo-hjMCs#JrK{xBL1&}+%$5RVuXJ<3pXkT!7gVMvC%1+wMHQ@EV?CiXotvJnf zrBvS$zyJLk_tU!Pum5h}Y`=!$eK&K3($=Ck!gbu<1o0o&%?i5l|Ncl74-qX&U~H1W ztLl)NnX2M_9*194yl0|}EN3ZDL{d?`sqws0;wh&-2j8?|#x}OfdzI3W_7S>n0JNs< zYShMC9ep=XD{~wDt6n&9n*6x=0GYvk zZ}Hq8+6}(1!34S~^?WI)MS?N}G3Hl|CyTYJR3+{m)EGF7&}=3XBybwXWcMdq@6Do) zuXzmv<-xxk~6mxa`d#^lKgh7geB$cna#3}k`ofY%pM3n3Y5pr8G5{>y*bR~Pby0N z_B-6@j>lD%-47dx8_sL~$fA=JITHfYaa$XeXH;g=mh|_VlFg!%P)*yxFscrndg8`X z(y!iT_#2hy`^IH$*H+Z*9NoD$85qyM_}(Pow`RGoE9_g^EzdyAgvuJY*d1`ojg{?w zxohlw9=OSTiDEb&vvHV=DhwplMux3K6@0UQ{=4^R!tgLs0|MHsd+1#1Js(o%Nqty& zpLYvy*TfMw6MAWEdQai(Z)OS61bV+)0;7ce$*o?^^hln5&*ei%ps(ltnOm7FHr{BG z?67yLd6{!Uh=vB@RbNKb<}6Da=1K9bb*MAw>RNVWQgl?8pkr(fMGXYQUvD_Ioi_if z*rN2T)S{sEK(CmHh7a8MMF@py4x0}BYb<(M5pgjK4P$9Zn1oB-BR7(V`6@_vk%1=l z%`fN#N7rl)P+0Fer_pu*usgYYl=Zcw531$qcjE)=`AtC3_N13MoiZ^)9l?~u)5&#$ zTRVe^c&*+NGWY@(+QhL)26OPc(b(kF+ZCHE?2lM%E>x$T%O1aIMu&S7)LoDp0hI6t3%)3$ zfLtl_;0x1TH02E%&Y+r#bXEK&ciHY1eZKt=4rGFOm@6VbrXde8Bfptl1?vCGvsTbl zi4eicDN_m+9`h5ZKN|RM2Hs?;#Q0y)*8z3|d{}VOTH&I*6L6!{@?z;sNi=b z37z0J31GJC@g~*fkz!HLOTT+mUd_CSUPtGvONHxlt^34=w2?Z=lc*+c-+P3z1RqI8TM!4_%nv!ctHlZC=&u?`l~FxoqnzA3S7;3` zp=(hO^x-*U8OOg}OYV3+@|)>!a^+h;(0<|3lHj&Z&G=E74feZs5!C7%ndmrve3&CJtKvVubhPjiKc^ZZOh|?Mz zKS7{pnyyI1&jEExdM?9rf4Fw3D%^@TyaqhYdsjzV0^EFM{(P@|g&%ENyw>0;%e-#t*#eG(OPX06^e;(V8U?Ax?->X|_Mb65$1jt_> zo|7^`-lu$9wf>efi%K-hbpjI2Ev)nrG{%{YB`&Bi)H@ z=}D5|$1&@*GGbC550=d!1K3UQnm4~&-=ad_V5);=c+UBOiSfgZJ=6cXfm}O0 zGkb!FvRtR<{e1lBaF*-2Z?dLrm>*!2M87v!bCFck^HNX6>DESI!-0m>DHk;;`y+fF-k|jdHP)<#@FQY8 zr(IM91Gs;}X!y{ly}miELHeo)5_QnI6QcbgzN7_K)nlnt$*;!-v=e+Ovg3W*+Nr0} z<`sfS>S*{*EsJ|GlDPk#w@~44cEjfj+rn7og*ZpeI`Sl`Q z(7nm;NkKR$DFU(g%;SFjDo&R;P5A2VG2gOG@*@?p&To#DdI*vXm{-C@Aq|LT2Od^OxV ztKd>X=2xjOjS_;byl3P|!EGA0-nvg}?YuPd7;qyhoIOC+<*yIiD;19WU`Xy9Cxf=J z7k;Yj=F;eEhbX^w+=Fdm9DT?iU+NX3*gobvUd1{Q<3T%So&tUUh)zp5_A@VmW6 ztH{WwJUNXxt$uW4TmOssdu9uH*kHt~7$cD1Y&98zVU3b^lEOa+G7%Ftz2dSFjSOEz z?>jO{{gL5IFhxKAHbo|#xnvf|=a;Mwr>Zr<5OfaG5(e*F-|LP6@b$5d!szgYPIA?RGzwgl;mG3soCcOh2I0j0D|c&%w9WeT|hWcvd9fr}^omP)BZ+ z^9bOYoV`J>o*!>YEt%AYIL5c6cW@G^w3rVv#5V9+_rwJBIOLgfwyi5g{Sv;c!GU_J1WOaw``pvdMl8wwU?Z+ z6JfkX*E(%SYMn?f`^lanuIX=&OcK6_@b_!=Cxy5C3xO&?^~1G(2Q4)*l}HU)G&&k- zi-+P46V4Laf}$uzlSN^n_r{F?MQAW?HuxFtAQ~%qbS$gfh;31hyHaX;+I^j8$~_{s?$ybOSRy=Ty>l^6J9UIm4u zNlHr`oR{;FV<6`@^wlnvi0gyHG*Hp@uyre!(|Mbo3_=(=+7hgECEm0eEeBh6iP)N$ zS8T+Rk(kuZmn-Hbp70YCOFf)uKYPt4=BczFN87qyi?(U|jl9n2ke- zrCas_8hjFklF-+X9fqbaAZKAIlneEIyc`DaK>U&W^q~YajHDfwQf!EiJ;8{Y8%0yX ztGdP`n{14_M)9MWe?|HkOsx)&rb_KDHoH_v{0U0-@Z|4EX}8L)5!o~m69W{*3HN(B-N(M*`hi6EPXJVmzF4&EQiZ* zRAU519IZ7iEm2|tW+Ykyd6b77(h&W&pin$J9T{Of7fDIow2W%y{8}7_A=#YoDVaO# z9CF25CLy|3i!efQz$qS_is&A$j(b>U$AhhhA~$iNZsThadDXTMkHlIH=iY^&89kMh zuBg9^=g<(S-`cLTS`pr(EeW2*80#XZ_`+bC;-h*0?Lj%dWI@zx7fTtEV%NHB%j^kd^AnYY)I|spQH|31O zW*v3SPaQ7-Bx@Rj|ut_YDQ)a!x$m9&|ZQqxHl87lBZhy3QJYnA+UN8fmyJ z_ZXq=7Ckg?ufIyhcb@$AZQweZy|2?Hd^ZOH6vz4lJaZ3^+xB?I@QrEV1{caiCX0GB z4h0Y5rG@3T2^X%arczvF!C5#gnrW!~H3IMsS=v;eUWDq2z-N_`mX%0S6kDbqY`5Mm zvM-T_tFDi>!Z28G5j;ujrE_)z{t)Vb5v(pqbcf%7n+Io_?iW94rMc%_B%vY9-gYb2 z)z^4PSZ7qQw-h6#1b{<_8^@Bgr*8MTP^O`F1{-{*Bcz_-Eh#Qwr};pIyCU z-MD_}~F37J~ULeAqL+`wof3es9sq?9XE zjLtc(`TYZ z?X4eUm-^9hVBu`q&5jhmqhS$>r$EB5OCDFcKW#g-X`vHPq(d(elS{ZZ8?QpeS z-m^TX*U5^$jqK4j+7*i7SihkJ6CEBq>F-DWQ(9FuKyw-xw+IthVl1TWN+l-YmKT`} z=diFOL7bE@8aw3EetG?bmisx;C3$cv(L+hl%0={ws3|2Yn>l^L$bueE_Df2NnyNW` zQo4XiG}!!KF&DOm(G7!q9fPMD;t}K06?+gwEE8VxcqFHGfG_|}wzzg;oa2HGoa2&WX&-~O-@vs|>zQ6GE-8|~>o z%R^L*l2<^!56%knD>225Gd_MFv@|Q#DDGYe+9o%Ncdu`V?gee zvwv?z5rjPj&&Lh)8GL8dufx8+p#`N!Hcs7W2`}Cd$>CQI@}kS}yAl1Xdqh(RCVoG* z1kS5YJvC7DMBL6ufn*p1fvS18HAmqu?Zc1NySrp74VHO+m$x9At=BZi(L_p0;6ja` z%*V?+aj$rMLEs~ldL_<(l-~b!p8l-^fA*)v5Ln2t`}@T>{{GahXo>BwXv6r4s~uTl zi%;0MvpD6bwAB#aPWLUCB)!LyflW{G3Ce#=7}*nH_sB|W3D`=0uZ!CPIJLMD4XQ~5 z>y-T`k!ZNnSs#=tCpE2~*i_-Hc2-7CcU#7yv(=41g+G%~h_C8+yQ$`^Yvzl|3yE2L zn)ND{(wX#zE_0UT!@SV?H)N?C6zdwC!}R(aJ9{u%FwS#M0Jz&%qSZ1J=^LTNqSFYK zh@0`WSgjeAMxWzkPDWq!?Pl%7+-&9*Yjz63vLF|6oc^`25_FHV2dqHyXKmN_CMXEu zCI$0C$VL;pzKHsz1M)4V)TdT6+TmP!Im<2Dv$Rfq*+|Evytf_D$YxUDLksE z>j+*rnFne2zUSH%zK)Gib-IC+h>IP3Zd2I^`6>GEmnyilUjv;AN2O_%pC?kcMIO6` z4C6gF?y*uzSv(7pHHp<gN!_O`1o8Rhgli%wG$(#&XU!<8A~M0C&M#(h~PF zynYr9$p$?QYq$L1sCUo@aqgr}U*`y;tl#UyVWMF5Q0JSAQOoMsp_z2VzZAjOOde$S z*%Pbm+;^FK|Cyp*e^L57N%{KqV;WD=My1P*`6^j4uW>tM6Xin7E{aTk;l7*`^xsn6B{f3S=w2 z_6+os2aE=%CkkaE8+XjX#15GEQfzO`&c*l$f|a8wS#v!`Smz@;d9nkyK{bAAoWtMvEWrP=^-7FIr%fp!p2=sIZM01O@Wg=0#Py!ga)d5w zqPs`oT@NEsMY=06RP**e~i-fSG+1J5s28psuCKfG=26#7&LsI56R=7bVsCgU`%7|?*M&rD5+@PX*ojc z)XzW`ZeW)LbMHzp+#7Jf)|`*v8d!==_chHyrNLrK6AMaACwNKtue2);Lu@MsIkSGd zmmQL))E>`I{ws0~Y~xVs(R+5LNzd**_p3=?;#lQSN6sCF66N&q7S0!t6zXM4a@JLk zR!oxhPl;2Bx)pZNplC-yXfYyVykFHnN_Wmve`WdLU)eCrNavWg}d^XKsEmRizs6!oj1b`gB z%bqIyzbHZ@M3M@)09duPAnlr5AfD^v^Ei*nsB9SG7dDnDATIb6Clk)^P}D+_w&O<1 z$hlk^{VoUA(YpQm3{=AaAqRm16tAI%{MI0sgjIC=t{U1je9Xjzi!sHF2#a*EFN{fI zoqiYho?w*G4{+NRw4$7LT2G>F<|9(*B>vtI8knY?R`$2rWsY4WKehd+u<9MpZHL=~ zbXH2H$v!4%Doo(j2tS(0K|T6j;;UFHa+R!zZCE`W{4bONCcZJ*b6F*;O(aYcGH`c=LxG)!XekYOqw^I{4MQb(tb!>P{i zo34*bl~d(D?ix`sexXK4V5#Z-Z9*v7@wX+b%&r5Ryl zYs8HTz)K$LsP5%cc4cN@ocvf8wdzef@iTw>s@Ytw;pi2YFsq3&z0=pv%@PC)%bQuL zuho=x&)X~EKgaY(q>+VC+cMqtH=~QUix#C;h_ZcmnSVmYiup(VbngGEj@3)bu~B%_r%fvkPT=pjf@1&vxiy)-L%)7|e+=-V zityLZlR?jV2YHVx=xK9tKUHS9uSu8(W>Fomi{BP`PR^~9+kW-R$SC~X-*7sUmHmRa znv4`QW@ZzNp@Dc>p7z#B@jRL)Obz=$tbD!DyyPj1a5?3{<2;i?&(1A@hnI!*DCS^GhV-oEo6H!4~O zJVY(WsUx!cJZRu?ywXmDu8DPN#iec|Oi*p$W?4#2iE{t3asSCEcTp&HLU z!nA3Ahm^N_bEFQ_961zvexepHxp6;|qEt%y}Jk9T-Yf|kjiF@c?F|{l9$DVHS3Dp4>@jJ0)fjg6?}Z3Bj6vPyOc3^p~RRgC%y$ z*gG39+pG7xk4c0vijUXuUcqHuuN0eF5_uS!`IIcW$b2A>A+5Bb^`+YZwS%eyO^9E`z_yN-V( z>vy_ZlL3|Ik4He&<$}6;x-=Ln!soUj3U+qLJpAj8=_9wVsE-vPA%5$KYei*c@TlBh z%m*UP>+M#)Ja=@zcAl?vfFdLAGNuC1AL+J2Usv1to+mv&)ITFG^GF}6Fb%)wWkOEJ zgI=BgS>*o*+U7$b`Kk?zpWACnkeNB!@z<2wUR0*!IR-fX&IOT+PZj8Tk5V!4C9xUM?+V2T*kl29xlEN$ z6%c=d%+IymoxAE~)_jx-LGc2R{`Jl`Qsz1u@Xg`!*JXH^0KxS(h<-A=L%@^Du7thy zT}*lGv9{kUE)^12Rkrzr1Ni9 z*zs?hPbs-}wKmU?|0$~WY^c$N1G%lUuL>5VM6`a5+ZxMbW;5x>tJ}tGqiTacmh2;Q zbFy1IAWppHI9c$MEeV|BXLQzyQ}@gMT0rzxjlD~|Nt_-39fwhcsmiBW30!T0PKydL zauMgV*JHlZ`#-WmI=U%QAEeJ?FWrd^5g9 zh2{S7Jbwj`vTn(F+6b4FR)KT^;ekVXw69%7Qnao>)ngcoPqC?P;dq^;5j#vqTqUglGb;h-iVck~MbbF4shs6Q*7xk<{FCBdUh zZNU@#2b+vaw!~`Y>A~>`8||<{lIoC>>`cA7SMCa9w$Y|VQ%^#LetCICKLT~XTAFy} z4T^TFQ?uD2q`*+oJXMs8k8$|I%n5cy7xBf3n7ndBO z^@DZ5THwq`YeyK|ChNDM^P?1Xz?vC)FmR~1D26upi{|FSeC{-ZBAgM9HEjNEdoc3D zYE=$UJe)M#ubFr1!$X;kghdh^VuZY8qx)K&op5E-xwND~Z&~$>m_{c(mXf}Yntqh# zPmT`EcfY8my~e>aGiWy<)U&ksV}it0LnF*Q@wE55YXe#2^Re^zZl}RYR&bpzCn&Zr zIc=F)c+ms!_dNC4~Hriyy%KeU1!j4K{U|xtJob|$v5AN{`W)(w?qa>cp zYcyM-KX-P87igy|awu~seJRRJ{)fvPqvy!yioejc?d`s@nM>QEgX52HzwG)3JJe^Q z$FqB16?)v?`s+efRQ+j7PLX?}h9ZQSw67u6w%tieWF^x_TDgJ7Bepefyd|@R?(Jke z-cDPJynaS4e5nGt8QN{9%fL6r+%7OQ^^o(mcOUtSuS|1Z(T_V1y%(CdpJ-6s)Kp<%;u?w|kTibNhod;?n zNBSWp?|uI<5gmSS9~a--opemBMmW>(XG=1CUd#G9bz z0wAf3`;jS>wYZUUMNAqLQcf|QAB)v)FYK`s_qjaPgY-A)Xiu3)?LTcSn(jt&T56=C zO&aDkmxj-?G{=(H-L9EVcHNfE^QS_!P|^r^Rp@+U^^^PMd5SdV!8=beI>s0T?IBh4 zk6`9ZuqWv^HkV1pA`yxZ9%*WZ3cONsFHsI^Q%>Ce(%Oow@^?^9LEucs>YQ9zLFPk? z!LS+|II&^3S|YolO51AUn^+DnO_REVl|bqLD(vl_Pi1ocTae(K$*92S@|}ssVsM|6 zeu+V~UX#h2`4{aPg}Hv|yl2o~O5EeApzKRp45<`_R7^-7_O|U#Eao+id@MeS>Z${z z<-+&591z8AgT-$CYknp8OUuj#La#bW>HHX!)o2usF@1=(SPOlCg~5J-Zz@g@7TwL( zxWC{*{ndebway<%Q8k7!K4|O`Dh$hSLmz0-!#;2>WjOgvVmcYI1lnmY`F1vMh9{3G z#66z&w3WL5G>-p1*DXJ*^{hHiZb(A8hR=7E(mLhd8jL2k5GySWTf z(}aJyEG?@uXonC9c6xQN`*T}k0oILvz3J{f=l@rvt}J=k!y!mGM1YnlQ87(kbNtH@GRV4P4GEu-e8 zXwT$sAtV*j65Gt$Hzp5=9&wk%ls-HhO+dzFE4Oh_`w0bZS6tmP*#Rmg0>CF9jR(vqT~daz+U2wXNxx5J?p-r*y*&+4$?n_~h_8 zf9v)5be<+9Cv&)?q~!{PG&jE7#vSx&4f!&>29QriXss6C{_|g8$bnN6Nn$Ey(S@TD z-}h;se=4=|!R+IBc`^3uibv(-Qn4~JBVqz1&by8!Ow|Co6T^=KSe1IKg8hSo(KIk? z{}*<{PP*3x{{M}@{(BJn-x6!OA3~#thK#RfXlpjEO15uOcJ(IPw;v(V1BrRfXlu=~ zg|8v2o2#r^4j!8dDmqvNdVHhm$f@`$-bnPnnx3{(uQTZJQN|**QOExN?JzqkGu+X} z*!?CxJAo)np*~T%uXpco^7uprrVueDn*B#})F!N*0zHy;(y+8SJVZKLG-i=#u}ti{ z_-a1(ceM<#KYV}9zmD+bu_efU?e>*ib*R+5V8y=9O-zsBip;LzL%ZWIPcYwXyqATL z+(40;$>N}R#nMJEKz1AOIU+P1y17c50y*V0x+CQ*d-@neP_(hJ@;b*Q8!Tg~-qP*( zq@<>kdsaTjzb#z}u@;S2(Qih%OBP0Z9%m;PF6NcN)!hEgIP*XFJ3OBASupB)KP`5r z4Y)eozF)?$Hr@9)wpmN-aGX*7<2kSszK&Mo%tl=OSOt{s+k-VOOP2O=LWm$zenzHqan=1DILp4D7XZSs zuHud$2M-gU4UZ^&MGIGr%KpX3ejnMFLivR|=!MmqsptUwE z&VW(t64Ff)b~bbLCPE?O*HM=DZ;qG66;D~`MF=oWXPzHUU_IbC7@I$@f|>c7_YTht zhwxd`?7vEQ?GTECU48xRNv;lb+cFb^rWedx<$|@fV7$zObiax{okKQ{J6)@IC*(2d z=qX86eQC9t@Z9)y08f7L4Hu$4=f948Itv2Jat@1z71<97Pewoq)@0|K5IIBkK)u_X z34lK133B(-)K#{0?j04jfh9^n?hdKLqM~n~0)lO8bdx_oqeOpzQ;-SjiY6Hb*0ZDk zFZSLtAdW2i1H~Z_B*C5F?hXkM+_jO$-QC?IxNAcQ?(XgccXxNU1bv;E{qIiZ?VGo= zpZ8lsRo%Mxcl_LYP6f_&`CEN;7S%LicDF1#?IR3;fBQ|}_1>`}fLF_=x1GC- zz9O?7P??tVIV>spJZx@~O_-{rkl#DDfNv{0X5lrp;dI5?E3t+X0;KK@cjgG(WM*2O zJ+%|%IdNnK9`xI zvxZSgO1h7D#!!afaGgYg_mY6GdDJ(8ijpGIUfx#gTs;z=aBku(5Dxw8xO%L8L{4@t zJYnD1MbI$<$A?_?MQrotpc!oQc^g-1s_wDlhw*Khefu`c1jvHm9sFU|!*tZM&|45@ zku5=O$WSrCwnIBnk=+*<;)6 zXWYJ68*Kvgaiw}s!|DhB#koF-U5ZopJb9vP(>$aVHwxjt@rYaX1${H_1xqvf`!RR$ zZjk?>u77&E&3^A~vbkTi73ae{FP@Sn{qQ>#0KmHV_2y-xbF1}|UX=zwW2U3=gEUON zP5bRe)2X{%eQ}q~X}1WD?vDe3qPEDHVhsvZfrniE!M&INLtHCZa}bK}E?=|s-O?f8d2XJnNsHa*q1&=Pe1;uOfqR334)uYH@hNGk z1>DBFH1!Kw-rMmu@lGI2h3b%pM1u$pzWPoHm$zo6a>%sH4GZ-;?r@YdB(6FYkt%HQ zi|_fIqVq&i90%g6#OB0_NFO|PIJ4zADYAV{X$wNXZDcNfsFx_wK2z1GJF~W!9bzL7 z*5)Cfjo1FVz+C;t81ON>;yOm1Md*xbx!6MN9-dt+4rY&0)* zocW9JN2RruMHL#>v7kQcId{3wJ8#Ly;Cvzd^4!h@aR=Ln#sG2-^!grcJJ`2!oh#R3$apiY581H9cFn?PUXG)$Dp1T}W zRqBdO9g%hJG>SO&LuwkoKGO2|GWXGQyWz3y8=bhWT3KR*RqQa;?SQ5DZGS5|_^Y46 zYz7AhvG^uK@k2&c*}d~UaO89=`k0B!lvv#@+}1CWwD>d!#lH4$<3xKZ(Wo^732Ks=r4LJOtJp0|curq6b==(n0RX)H_s1i|l~7It2Y%418L_H* zz6iR((jP1nDwh4K8RNbnC3+7XBE*jKgtp6cOyLeNP{mZiL6_&rGAZ2~>5(qWhKY>j z!jVYX=(G-j^Mg(ch)#>F7vS?l4ui+H>w|BLCn5<|A{drtR#tLbQX zJ>T`@h=#|(PTmX)mJLr}2|oQ^m{n(!&fqQ4plY$QfW(=tD6e!+N>ZX>qyQ({`-Lh; z={d)*M(0vANu0vkRIWCwLGz|wRkuA0;0l=@?v?1?t;Xv*NlHOMUUh5t>rr7pbt2PC zWASM49yK=Ipb_UtTX(n7^z#7HZkN;`OaD8(ehB|CW1VLNc9Y$$0?Q?hArg!fw-ycG z%e2?6Chc^>lcDk5%3M6xQ2m0UTY;4Fm^wNtg-ju`3f$EpQ}2bLsh}$ z2%b6cNA9cl@!|7mJ@;;cNYEq`4M z=zYhqY+bi}&Es+u^zg9T7I)kB+;VXq>8*ZqDnM>*yj_7Y{nHZtt03(k@zK9*MyV<6 zlsur~QOEcj+Ch|2G1tm1=!bx0$Y268(mO`t=3^T3{d#I_e3Um5+?ee%4lsMX*(2UM zoWze`6-8Q3--SDjST(q>_icC82~Z4Et7)9lsU;oLsjYg*aT2~@#8#1fiR9+=5u;%= zt;PBx7JG$?xM{aeiFK1GS>Rf=K=6Lq4lXr@Qo9IS?p0gg z#RF{ue;kLC7l?Y5RQ80nUy><-spa07$J3n4hwL~Jw?Uemp+OJ@pE@RpTLy&qeoy3w%a8pp zPmDXu=+$>^*lnbzjhBZPwTsV+Cz{WaJlYkSx!VkJPTZD+@2XxnyXP3qh!J@9fPFZz=f&1Cu^JEY54*^TA!CVlDj*FaCDwva`e1k?K^FP|1Sp z2CO-%T@LHT`6H_46Cug0STc)o^uzt`t+Y8TrG+Ty8njKjas9EXCNY9mvb#AL()*8ZEo(Sh{|hCtZ!&(r0l zeg^@y#QfJO&4dwbunmq|A9WXCvCA(nu8>w^V~vFk2?7x1)`FwC-@o!%w`3I*8AsU% zm%6-Ht2md76`iGfp?F?DM4SG$K&$%Ta4BXr4W_rd*r3cUIBOHb78?4K^gjHN%DgfY zzN55J4+yu?{nTCt0u**%@(J??!O-C+Y`RVwTTMPSI5ecmnF%sBwmeA<=e#++!0FTA z&3NQ&q$K(UlH?M(_HCYt&6^N1qCx6dG~%+2!0#_74Ok$j0<5FqQ8bU=)}M5KMN(if zq#M#tE zwf|8KKEOY<={~2lN^@X2O=)_Zj-lM}@CL1(RhkrPe}YhsMsUrb6dmR(gQ6CW0<&XR z`hI#(lRz7{A+h?7&r2$XRzr2E7!J{s(L2u{!pp8;w-yDh5cyka>>rYMu~Lwo@>G$; z(L=>YpBObhkib+OtT*jb(uhLs>SJ>+5RdW=}hiv^Z($h?P#xixBl;x}LTn-er_P%bx0Vu=^ynP+g1VAeZ1<;YqjZy4*NE^ z-ClP=1#s0VX1-7#%X{k}k0e@!cW5IUjUVptV6o>Q_0YI^5V`0g)B>pZxpo=VU!E1I zva(htdrNGv?A=}!;g;uaEWD?VHG~oteuR`=3oS>1WVrEPEc}X_wlMVro+`_r9)ab& zPo?%PbHyo_RlRUY<|4*&ZRs=yxHQx%GkxlloQaG$#C1@hEZKEr-}aclHn^cPwt8x80wI}GZi?ta=yF3nFN&#jm#OiQezk(nBoQ#ByL*Xx-MOM!DH2lCkY zQ&TUK+1k2K&j9x8T4-oP9_~7m(;<52P=3Im*tr=_2swhR<`sIFPnPvk!9>FEr9R$l zax>^=o$xtblUj*zNf1HnbRqbG50=rsbr+c~!V)|C0>8UFVqI2v8JO}qg3o!Q++m(P ze~7paF>my>g$4P|8)jS^eJ!pcw^opdyG74E<^8}R^kUc-R=Y1+Ih0vnLrrycnM(U5 zW8z~E%i3Uf8_wT$&57IS_&acJUV!&*x0H+>I+F*}i_j*!`cq+Q` zXf!%LYKxf)@{)AkE+V|Tsu?^{Zi`7o_0_#Af6LzDg|mI9XcJMU1r%&J&H-OgM_KHP z`R=70&8A3ezMmgM+;*krusXmbVgD4)%4S-_w1Z(>gfBl()znIB%+WE*HadG0{p|IW zb`gQR8hf-w+Psz@l*ZA-G{D5=tK^_$+TXeF`qEp6UB=T31-Onsxcj~JxQjUUjN|)^ zm;(TjzRSBO=KbNpo=w8()1A078%m>U$rY7PqqW$7Uamj z*3ZvS2aW?RhwtFHij6dQ?_H+GshT1lg`VykmAC;Bc+%hQ>pno>G@wWgC%Q8#B&<-c;UxGv9|gG7^*dylkEjw`HYK z=ax(VZ4k4HOmw1B)93@A@D8W3w4)_F#G=#J#8;ak{B|u4q%)Htm>QpoSoqfcVRwQB z<53F(CNWFLt)$5eILz&ggi;%uUT9uJRA1264;a*tsOE`Iywb$L#{TG;DhsKD#a@qn z`?ArRWoF8vroc2oTU+}R+o2FBneapd3!vucZG{pyyQ$9nMuBs{`hH>mBKGty(5QhG zQn5nTsr*2EO%YqBlJ_hkF%O-|%b&QNZ^rXSgfq1IY@}LFla5Y{0%ad_5?-TccFSlM z9H5$rml;PH+}Nszs(+X#gEJNpLNA&mOjx7oYO`hZuwAf5pBUx(K>4)Xr>k)%opXNb z0li>vJ=-?<;ku|lhS;-(H2Y%_->EpGW9sfP*)9?M|&4f z6SKE43WA!ZT9?T_W}Wz6@=X(qQK2!*&(UZh&PKk2IYDP+d%dh#YvTdg_>z|uchRP0 z6B3qLiy9n_loR$ID7K)#1Ge6Y^`qGHY!c&t6-b|kK$~x}EP{Fo<=Sgs|5^}f5@}Qb zef&IBpl&&Z=AABcc)Oh5ZqK5-0Ax;&QnP=7e&b|HWW z3EKp3)L6WjCP#;uMdn%_A$34oe6bWpzFd87vu)PvW99RsAsXX)mvG-6$(7%2sW|CX zuSC#o1mV0b{oU$io?Iekk&Vh=bniZapt{o@+iTw>5|ysYZV6ex1_bW$9X|G8OWop4 z<9e2U4O^S$A1DG|-QJhtSVhQH>uch#$LZ>Kvsl|q9+Z*1*WP0Z z!=b;yve}X-m=SFz(B|1^DXhm8p)3sDc>8LMz#Q+;jkwg;YSe7>#Z$i9D6}mAjrj0| zD}RH|&tm4a1%-?Zy*o_XZvj6pv+eHK>q}J!!G)k*KBop`-~9~i``_2c?MS)*fZaB5 z?!mu>J6)4{Zm}X*?SH!O#`j9PKKZMYHQmL2^H%ZfYX0QBtT_!;Qb0b&AA))M7H5f} zgF(=0m^u~l__+&;))A&?jvFd~+R|-$h{_TDLrEtS300}+>T0!)w}q^^?@%@OoufJ+ zsVW|Z+!1hWV;6ES5qTR?8n;gaCZnnM`<2J)Sp9eb9q@Okq>Eo@?7OwXM7!9JD*Q|UFiW@m&SdyG2b9PF4QW}|vK2|h=A`GFoKlwYM;wK0W{f{NzFnmI2HP8B;;M5BVe(A_I#l_W00 z3O^m0iNn{agEW|!rrYY~JO(8fTYKYVXT0xal;A<-Yi`E!4w7mh;e|V3j-Gi$5`$2Va;^(1B0wKWCxH7-er^;$2!zx+tw{gS1(GjKG_^zi5?&PWFAd8bEQ2h}&) zJrlQkzowK9DsOB8grVGj^Jt1{gFiktJB?bgDI@Uo_A0$C_RY-c*sHQ^-Y)yHN`E`* zDPd)yhX94oBZ#(SVgP}uEBL&Z3yT&~#;9<&%R+Zkafej7Il)7-DYNjcM=)pYjI}r{ z$^*?$9Uh{%v`IOFefFD^T7uO#4HBdn)6c`*f>Hqnb4)P~GaHo-QvvwcH!)_?iJHm+ zG@6<|q^3=^dPPig(wJk<=KpsTMUakpAA=-_1Hs@&d$AcQS}$Ty^)4{)^jccCHT5t$c@t&r>#VN4BdMl>tJz?fStT8$qy12-IjHJPvx1 z4&g6K0vTn%*%;9TXfFvU`i)fMj$7v%B9u2DZ;mgTn1T}s_gNP^1+U!^Wb$H>{V5yK zSbZ1Bt(TCSU=AYURGb4Mrb<+CB3Ml=A}9Znt_+v5#a1d z96b_fcO2^6{F00EN7i71+H>&|Vra-Nja|?BnZF^3xU({Br^!1(b zb`5&Ine%sA&-Ibx>FE4@;KEK6oH7xi;O3{pZ152P85`ILLV-74$cYHKrveayiA-sK zodN@In<)7E`}>%i(Z#~i;47X!ZY$h`%cZ?#=$w^^X(|%>K0%}IpWceXqgKP^w(VR! zHNBY->b%MI!?`U_jd40YLj6snNm?mR!$@7R8&!H;iqZYLDQPc35a)+6bws|TuVOpW0`;ElB^GGUOSRf zK5*$@nEI(g#b!1SVVvt#{&?(*kZ77EpR95uM;T@Q;^B=-vV!HOIbB(rErEq8i}`Vw z6eUl20mx_Ex9>nx;vjwMC)upMoCI1d)vC6#>oFKoNL>t<~O~mIf@sx}OiZ%qzN! z@Pd1c!Nc$z&wj_VWHmgSV`dX^(JE{%I%Dj2*wUxw6@u=RE&37xbQ;Ob!dkA@o8MWl z1T>n?g#X$1N^NA>Lw#dga814i6omZWX zFkIr9$fKw?MOBVQ+hI3$&oGJzMnS1Op?wj3;f)p6U4%`+p=uK2#SI7Clm4ce6wl{t zR*dzk$g`{J1l3R+84(}QNrbp{OvPdzj`4fkJ{!wSn2!WI#&0GlC}&)1n(^&_a65&z zRW7>i#62S=fa*(eJ0>0LzejmPmYzo@%b$qQsYv%;!uqHWVZ@PR#~oy+Q%Nuyexg`S zmf(U8+VF8Bx@_e}utC*bxHU|W)@CC0uLH$@8q0_qt2G5T*;+XK{1Pz49Tr(mOh#+**jCwC9%_&GH#I-!n)bb=qLbEEx$FySxT4|x;B zNE=LF)guO%yiBAP1}oBy3nPa?);oa-S3`mibX>T-z7r_M&||NMdsMU7M=B->bK!6!#(pgDw*w0ySu|xf1eZj#y$K0Q z8_VU^g0=&TL2}(w&Msdg+|HOEEuid9A?ESp0v!|JkDW0NPr=N5`Z#~y>26*~=>8zjPDnMu`Gukb#>^gInd5a^Q}&IF;xr*i?Ltncj`Lmzrj^lUX3#gyTb0wKEWW2e zx`&i=%x?}~*P^U-H0axyOhqbT<=i#GMGy4EUCos{UzBCDCiaqQ%TJB`e}}TJv)ZSf zCRkO-1O@xTE6Cr=ISJv)8q8Om2+TY>m>}>r206lo)I?amS*@8teG(F@k0|3}eKoUZ zjfacIws79S=>#bJpr$zCF*7gts+*la54}orByy1q!Z6=4k`)-#D(@X5N8VEmb1-{a^ zip5SP!GrjK@CDIFv1caier!N(CuIDS<}Fm+ibjFgGHe9ZVuzow7FH_4Zq@Jl9>aG) zB!2mS%+vk{?78NlxHftEL`;+3C_|6M2a*ST%*EU{BiinAyS zmGuYWJeu}(LaO;B<{xJ6sYBbCZMYsel)~r@sXs})UbL3zt(#+Wfztb z$!VHb-m5eaG%7Guc)_$oTYI2gP1^6y_?eLGL-+W637 zw%WdD`o7l{-A{$Gf_4wd#YX+4PmnYU6D4cot~XuvhxYd11j4~XLh+&kR8&H=MuX=M zg4UsO`%Q>y&rKu!2eJ)zSp){?;BX0e6~GGOF=3^E-Z3|~A*eu~Gnz2Zyo#4odFTlD19~6NWgLB; zFkP1W8NdP6`~*rb5`k%@tx&zFi)y~39+Ce6Pk_B;R@h>!BBNZHXdfIol_^kMqU&?y z5&y-}H`?(As%j{>eB5g=_D=lJG1OXVflC;0_f|*vcNL zoR+5W1p3!2#q=P%4H#8QX)0F{%r%I+oW3Q0s}l-hXd|IRoXi)EFT|vgE zCp<(l5X)a7*eY2lS?FeZOGy|4w5%<36GxB*8h(iI*koDng1KQ%XhX?6U8lgRHA5%s z*vX71Z<@BQi!Wr&-BC_CV*}X<;yFHg4IPPO^dofm7~PP%9Ac;N4@fM z{n}GwDCcj98a(Fy1njBCCQBs-HB@(=TMshj>#0u1gwv zzt(95eH@5?^?PrzGdLQ-`oJjoG+Vp_%asgOt+eHlv^MozS*F){Y&yr~tv7ckw%h<@ z_>yynQN%jbmXiY-JqTAPX8cgP)oII$m7lu7u7ytUY~G@WT%A|j8I}^?$!8jNhVTEc zGsn-_ZRQIK1ndahfB#@#tf)n{C~gyAtzERWWg7Sh1v4{2FWLVYap2(iIJ%x2 z{>B_mZyHste(=31)VyV}0?3pvj$y^*^nm<`-* z&`8EL=&Lm)54!#gdue13 ztVAvC92$ov@>BVYTS?6!-s-xM!G7f=y5uY%wvyi4vQe2ma8SL7k<#;wVDSTz!S2&L zh0yXDzpX{J(CJkArbgm;l+$a0K`)W>E4V)#^bji+^wwq=ILrB6bGvO~ev-Fak33|2 zvu57{f3qXcaMh*ZY=_V5;kJtJ3sLHTL=eIK&^|#?lQblf_qhy0Uzlk0pm5;xD(*7$ zPpNNI@S7!1l!gY{c6Vgo@ctnP{@Dcf4}A7-|1?nai%NjB=!x;I+&#bY%=ucW=8((R zVdUPuz(#_VDoihznp8|_&*eJcq?vH#dK-#`WCYG z^?q<*;=IB8mvMw*kaG5(3-O++psueZ#l0UWw|A!DshD=wvzO`RB?b?}V-F7SB<19w z;$YX1?6CEj-s|Y7`0Q(?US%yA$tS?5ZKzQeA#f^q+A^dt96IKGf_;WzV)7~vVw!8A zP*025l!<-}pWayi6c)921egaz#I`feN4#%W7kirx$FimezZ;B9P_)K+=$ceXzSu05 z0zV>IS4VV6I!mly=TY-d2mS+qgn>bL+uX(mhx7Cr)G_w8q-5LUB=;osw_EBD5U)Dz z!ELC}9V#jx3QzAXPMK+VME3}sYp;Uhz=xHINhnuQ5n3(rLyKMK!8yt|!C61{=~_vw3@Yq5GK6;Cn@luWL4F?LM=OGipOL zG@g?h^=tu7$#vnt*{4{dZf|ENC#Y@*sENu>$s!~%@wIjtlcUw(*Fj}gevSMaF0Lez z$fFqdDn6k-g&AeFGn{_fs^{&{@DHP@N3Edjt$1)~ zk-fb9p>6*v^2GGqNGpCze*44rSwtMAWS1{(S-7%sr=};rzf^?(|>V z3;&TBwnL_dm=fVprpQb37x$;~ACD?%BW_NR)-khO#u+@6k)i33qGLMYnX zeX}?RsfGmiK_JkoLw1aZdfU#tmKvWhgx z*j*faKuRRc&}c?y)b?wz(sPhIDS|eeaYv?p?B&v*fC3U&!Im1iXV|@a_bTP01r9>a z{XD>)0PZzh{4DLqRLh)J&+i|nyjOI1R^4AS0+lJI(_s-pZ8Q?!FtiqV>v0G%&`(MZ znm9-{nkP@Wxk!{%x1N)|ulv1^HMo^89V~msHXo>;#{3{u&$9`ou&orX{v_<5LitZy zYNt)pj=N;#(scLgx$$6*VDfM?{B)zdX+R|;|olm z_gy|a&O?~+beq&jc=3ZO*TkG#F=EABZ=^icnm|ltu{SoTwOw%#XK_tc_(w0iK0!$3 zWK({I-fo1D1aQ<0tSj&46!ajQ4Upv(9a31z1#ri%drVK0U5DGvC^;&mLVSdrfXe8R zEC8R+t`0>6^H9Q zqvJ4GvCLu7^dztMibFCM7B$#5omHIP?i(J?-bX}|M?d3pQFN}xqI1!WvM+nOVFiPe zjAfks6sTL-lDXD+=JXlr&^e0)GSGZo|_FPZK( z-6W#25e=MS8ZQpRbLk3Z*leIud`YFsc_9a^CKgjcc(C&|3&Xaug~g$PkF53(u$1E9eqvEeQI5_g8Gz&J=WM!x5C8rydW^x$-GaeT{>%|0f zsm~gw&_GO@{<_OOSqIEYB`sRms!9iYhW!fm-1s7gcv|i0nki9dWfwBn#sF3O?z?`nky7B2Uh_dgi2~V161_ES=Pco>%Ow@Hrg5JjAcIrs&fOFf z2PYm2+0{ffg*8t=(+|!o#IQQKxeewHX+O6@jWTcSu?J^{lY<14`S)AM%SOPIWZ(o6o(Rhm!9` z9;uCN8%z*A2mMP&HtA(L@@3)VB|7piFmh=novWlKU^QbHrzWnnQao*B%QS(ZhAwwm z_S(|7OdzNEK1=7(Ze5dS@&nDp?5*5lB6M`>U5sh z;6$dNto3j~3PAO-kbzcd)w35l(wYl|7I>E^YOW}WL67rVbdt_c{W6={LN+)|NtHr2 zVrM6JN*50r9w259{=5Vy*Dm7g_yn;yENn4Da9#WKR7`+w^n0MW9Ie+>%1tbVE>KyJ zzNkGOwh^dwU1H^_!IKrthHo%}zdSlue0(~1z}=eZ^9b+d?rfFMWt~N??MFO+2F;Rf zrEn53tj)jQX)P_;nxHaLQo_-cAELBh*ZF-Gw7WS?!RG1Z5vsW(E^H|)lkXFokB6#UnlVv%7NaTykJJuhfOLJSm)-QzIX z#oICi)P1MU=FFD9;kC8!j}fWfc_A zAci1LK34T8Ci|#YaKNe`9HuIJBI@Rp&qTceC<2vU*X*}0(0}4Evjebma`gK7U@9sB zK~FP@h$J<&V!{V>3=E$|t5P?vO&^xailhzGUYdpH6W|fA=$%UR%p`os0U}KX&pdrw z2$?+GFq42Su}OFFRpFX;+P+OVwx+S;s56&hujA-Rx(J_qS7o8yzzb|>D6wWZ2Trz} zYju55dMy4>x0DX~8#oz!P*A|<@c|#$jK|*cyAQ<=g#+==;}v4RLakaRXs)6061Vy4 zqoK)Y`ugg6QR3{(uTt>~@E#5AUGnenyWn4b8s;QO9m(bhQJO2v%;Yb;Q|rxs6{v(} zDH4V|#q{BpDcqh$f`ck*DS*p7DK~C!nzQaF7e)a z{lmU*kg*0&F|gxGb7+rrlc;p67-DzUJs3x{VLQD6SGP?w7)!KLfCiwl59P5y4R&6+ zS{nuyo!r;bot-#4b2F*<8l~Wp>M9=PgN=BqBF~1ql(!GgtQpr|k#EAo;Yz+R_FxQH z$mYyewySuI(3;ic3}|Rv7Z=COJlrjOzYl{~sy{ehZchuY-eGSgs>0KWcoG#>@~H4# z@NrbB8wu;@nC(+`_WhJwoBpwV=7_@J@F&b;sjx8BPnRdg{>7c0oz(Je5DGx0gT$t1 zVZ-oWU_&T&@z?JX%M~ES?CT7^H0*!vo3C-)&iO~P{3lH_b_h%4>ntWBq-j<0v}Yz6 zUsy>C$e|G3Z{WtHz(E55G=hsV!6uG$fKJ+Ry)Z6c$}uF1a9W}bnInzntFE&|!tV%ej&4ExAZdQF3kui6pq(y?y-RaD? z)=mll%I@P#jL`o>{o-LKaoM`uIr|S>1y}NaKp`Z$+!@x`ysw7-)h#S9ePQ&x!ze4z zHan*9<>~mXr#7GWuJo_0{Rd-9r^Kly*ea$x#w9j;EoY#)C$b z&dSatJvhM6tgYqTVN%BlRdOq=ZKVk=Pk?Krv@VylsvrNJzo&*JD;xgGnL#o7B(}u% zfH*ZA_cfn&rO?B{j&JXGdwg+AA@}CHyDAnpBdKZ(M#)GYMcrAPV469AxSyR)DQ>j3CA5-Q%Q?ajBbXZv30hAaHr(r1F&kLKA7hUU%{HRc8C z+~1UNe6>pbMOT8IG^6$6qtzvb{lwc!-$2b@Q2H}~>J9DMkU8q%=&!t581RpSq51}pca;pOeHmq zRm2X)n3QN;W=S?>it_VkVjgZCcSDzEUPslJd$R(Fsmj46x$JGZG=<8o6qv(OLd6sL zr5Z6vX2>{W0x78nhUd+_-*2^fyU`|26%)8B7No;e; zQYlqSMDrQ}ATV^o!y|ilXC}Z+Z={Q*WrR5D{=4z|)lZ?#gZ=OlH-WDW7HQ{Z|MF<0 z-?-oj?D0yh`eznb^Q$Qq6}X!(wDB#nB>XDFXx}4$)0X(0tdHlptk@$dJcbsf0W-d0 z>SVu%L;oJl3_5>`8f5#~E+&zi=JRYtnoj^6hJx=3LIbVUqWUSSIK#sX`_4jlsaldM z*F~QcyTrTw{JXNA+l3TC!SzZyxdjDp7DAL5ifcnKt}G%hHUjdc1S;M7-rkB0XS(m( zx(zG7EqVi6J@Hs=jm+XC@zea|Y=}$OttQc$%DR_wuDEf+HsdL8lMT`$6)QuQ$mD#@ zdE2nvyONsWgoG@4 zIF)d`1C^DO^vCNkNE>V2-{MEL#^w6CSlG(8G3)&~K2Vj-;C{?r0b6s!Z)^Jdt1~?f z3Nu5=lR;Ig;iJ^Q3iYoD4!&sSHgSEIra~Y?$?(3dLqSmq z1MMU#6$&v6<-kBuCO=??R?4@IPFkQaX_;74LkZ8iz)VrtQMj-b06IxL#zuX6t}>O~ z8qis*qF+QUrQB1p&^VKir$Eq?V@-oIgL9e3)r~JdD`xFH=+L*-Q~09T5waxA_-M!NsE^{C^6EkdJ@TBQ_l zdKxLKyqp<(ik5*P6cV~{B60HKYMbM6LQv@Dv4-Jx&x6k6SB7bCq=kuZp=W?#4*Wwm18BW2PZ)^Bhi2aLT{{y`%nG71(%5*Pt;L_6?TZNmX^~(b_ zqDNY3hugZ^Yy%k4;GX^T*$x(P9T-OG0kL&3*qqSMezEZlPsrWT8ZOz1`$!`zP^qq} z^4fMN1=DsYDg7kUI&>r8=-vFrlp5~zS~!pIfC;o2q|KJU!L-ndgM4cm!hl&Lc=)8rocO}y^n z+Trl6Quw|k>iU$*r_CO`OFj~-Jj$&sEEFp8oU9f9RVm#y3*JCehhi~&>h1mT&bL%9 z>Q6HIM+dRJ=}q~3_jtuJhj=Ap=c*&C-`ZDc<+l7=liENgipIJ?eJ7K>Ru zvwpi+fDQ(_otH8rV21bR1E2O^$@0Hp)D?UGV)CHBocf>KprlW(_F+_2Xm0U~Nd$nfxbz`frQ}$uRpjru*mRQ-hZ;%su%x-uEkoNHVtZ z{wOMcYbt`MU?t~)V2bxAO#d{=znC0MwHEZhVT-?b;t!YhzWVv8qOQyQrP2LWZT#VB z@T&d%5-k7f`d@?b76WbU;0?(9zn(wZm;>@Jd56D#->>h<_y`W{-UhM#DZcm{<3RyS z|7*G-Tqy_&7JanKef8fmkD%Zn$A8WzztRoDp9m4b>>6!^{a0rG8{>h69_~+r{^wx) zPw4+A^#3jM{7>lrTaEiaq5q$y{~H?q7fbj*OaEV6$}5G8`j3}03+BPW!HV-`zAABQ zVj3Fm7>RKriWZ^N>Xwo7{y)8d_5qlM%$ypIl+={WuV3H&+~2A-k*v<;{Hx8}{|}q% zRtI}0BUl8^{KKIT5C8yyE7r>QRAA!!Ptz(y1=NZvs;I^xt<*lR{x~=Yt}q)9Ftf5! zFY&Bm`TNTpBlLgwY7CFpN#rFSd-i7Y;o)KCJAk^m1lO@CrkaYzentg&&&^+lCJG=v zL`#~G!))VT7^SYG6OFWGqF)k>wAor)l)6!+ z*H9u1#a0t{bW}d|H3dQb1jq@&NNBP5!-plZ`?kxT9tsvcLBQ3iZamVSs)|Z4IMt^z zd4N{+R~v)>Uge&~36>$78BZ&Vg%e?elX(sJ7ufWm#3uXaw16t&pNnz3g{dSt34p!K z%yp4`NyN^MJw?do;xzm>@nNP2>9Jw}3xwb}A zxpvbkD}P&*x-=|!@S7;r8(jTA1=qj2*#FL zlo2!P+{5IHnW%kpEq9FfHz%{# zAXxUo3=@-);bwYaVd1ihBlaimGcWvaMni5!Bb+y~)3!7bF)%Q?*E#}M9hMI86aavl zM$YNuV-*#Zt+%s2@$t(m2`~N=f&0Tf#aepi2j<&`GchXxHCx;Sa6i@K6%phY!j|0@ zhwMMx`5$Sey)>v6>WpbVe?pF*1N}$O{E5Z9)xdG^X)AbV@NY5Rzi#&DpjT-AP-lDj zkN5l6ya#_#j#2LIFTiq@YkK+Z0<=;$uWJH29 zUDp*{Q~Uo|=MUJFl$6a#-v{NV5lrCjajRw`WC>uo7cuoJ=3n#sPk`}%N2@R=K00Xr zUuOgK!jbYbYI;8(|DS9|>1Kd)=A2795*DiK{Ki@Rm8~e)QHkPr(!>C?<^%lhc<7<9V(c$@xEcxHjL3@PY zEKbX&w?o|Tr|HX(erK!nPm7;pdl!Wv3Yb4{7fm)zq4{ z4MI4uv+ zf6R2aEM)L3KF0+z_NJ#%kdI8yJ?;os#vJ)xQn!V!rSCu`&>DPmR(ul7gSI=AQ?@U~(`oJ-~LC zwx&ECqpHv};H(GJ)78~=S?}O&X{1bW#Y5df$!VHr6nlNUZbk#PcOO5 zJQekC4Hu5OlFUE_PMm3?lSRx)jax*qlvoF|M+JS=6s&Ix(BN;e@?MvPu&8BRwJCM1 zqQG#}*iCnL7di^N*xR}FUUy_?E->(#l%v&w!t+tQpt-^l#8t;SD$1q(%CXWrDX~35 ze0=XrJpBVFRtb=~UeRQypF$A}zQB?DljJ=f{&D2ZMz^A07Y1y8muVO zpRkqed?PWWbeCi;$LDlSQN3#;VES2$ws6B)nWJa_$=Ll{6S;W`V8XF$3Nk8xn9@(| zOqK^er89QX(!{bTWO3yf4CCN>B|Yd+A$A0&moiZbY1;NENRe=ves#VfvpPpYLx#NR zwfdzabqCD}8~2{y2AU~YgO4)XIxTIv>D?v7Hz5>S!?`Dy>mEFKy;dIOe@8=_Uh9bJ zd1=L)zPnhH;yLM|Pr2m>C%)lTPr9JE)6b%3WN1IWHu6&-)h9&Bg(ThWIe)7%IUj>Y zV^dQx0)LpnKIq{{#g(x!wNXdCLE8C=eax08fC}0i8Gw}<1X@wy0} zCR18hWTse5&lPrBulEP5i%cpMSpR z6U(pXwu0OYmh+-@i?>%pSRx7v3Zx0$sQcdDR9jpK^PlQSc+;Gpmo{KU&h0{OMIfe% z)aLqi_7*o$DQAj{i@h@{n)@*(!gbr3($n~m`N{6m05V~l%w z@eY;dYZ{+C>521iAYz<@nb)^W0;rUDCTOwr!b>KR(8a;L`J{PNIuD?Wo_>sDis6N& z^{|!<)1N}oo92KF$vI)&P>SrDiW_Pr^KoFuu%i0ce`N~$OoEDB2Qxx0rFf$ED2k`` zO*}lX$gS28o`CBCoA~sqCgTavJ{W`Tt!!&SD1dk>Jz=?eb0yNb_1F?lB00LOH`~4lOY;|eT)M8$G2T*iv zWK@3%hL33KI)Yngz5sHxN6r~z-k$lku_aVc(u=`jYo9;$xU`cI)e6HbpH6l_T9u$j ztm6IU>8@_`p*G8IazD2f3PHV|Lt98dE|e!GCeG4GfzHHjq{(!+I4-~=bU5I}U&Uja zCxU=;5dvyj1{Mt}Pxl)_17UUinyE({$5(rt0zjtznApt0nFiA+Tc@e*%4E_3~!oS#`;qxH{hPbUMP9W z9KV&vaC&tO07`pmCSp9>+uvVXheIPu5$m>CAKbY>nRfq8B+3Cwz%TuH)?4zHjT3Rul z;SYZ%Xb3`zJeirrM*r z&dqnNCH`tdBKptpyvQ`DKTCOb@&}U$BB7?Su$A4kTM=2f>{*@4s@;1Wp*V?iY_PqCBZd#kvLbixV?{wEgtleW4OQFe_sZNI{_|atH)tzTzFR~DZQ$RO zM*b_(?yETrl-+nKGH9IfIn6_FTmVH4+feYloA-2F9RZ=Q=eP{}09=A@)r zTjGs5c+>r~E&9!RU1_V-VpJUQ*);6Sb4 zfHPl`zU@StsM|0{SJ`;e)+Hh@$XtcEl`My&Qm|II0@z9J0gnfTewfes`5mJZ`Nbf; z=a?Y}wy6vGyT zx$ z;G4g(A1DT3*QSg@cA?FrEsvP?k68 zV;(i~=B15W5da#ZxU7CT))I7#h?^a0i{$!H_+l8q!(Qa!(dij&jj&>PfD+>h_jhdD29TaOZ0s4$ zc$JW;^WH9uV$Yf`yHh)XtiT6sPbs@vh}5s{wihV=Ng)OeUyIhQ>8x?j`l0K%(^;V4 zQ61$+^Dl&lDF!~ZZyeThk`Nq)=u}xZJ!E5#FB)(`Xa{p}a7<5!HJuI#+->&)a9cwo zW(_~ub!4uI+{5VAl_zW+Rr{H^;k1F>kfmXqJsxy`pQ zOYKThc9I!;WG|9$O&C+Jq6l(_fgBOF9*+f#)punD9|KEW#JUiT)C4J^mbWpuns&&{ zUCbSGDIOzGe2l7aD2>PKwu*|1c3_XI1>(>3_}skhHrL($Qbs_S)2V7IR9(QoaqS`J z?6Q-iW2E=S-0U*pvBl%ZkB!#`dD;|cM0N=Y0fqwbnId7&H2~}ubRl(@4Rjix>xLk+ z@GEum*fFFa?5)$mUa4)3Q3PO8Wa$=;yqJj(}?Lyht;6peQwi3Wkr>oeOE zRCag7N}+&A)2@m!eUE2`+c0NPsK!szzGf0u?tfy0R8OGoQ!^%MJ2&F}6ddbjM-n9c zec~nXSpdd8e#8aJENipTRQW<$y z?+=p_G%S1@05}K?5M}M2FJC{U5n-a+w`5B*ap1L6oJ+t@ueI?+g((EOAm}@s-XYv; zYv1r$JbRD!fo_qk0n+O0tK-xpnmc%_adj$$=bb<)f?q>nw#o|?hxvX+IY6w!wvZaP zzP>(YGoQNdVe?aj;lgWxrkL~_e8a+%mb^9{Ch|a4RW-h{(w1#J!LMuK=`~PNdLW$| zN%j*k>?`!YC}FEZTXIE3Fh_JXny$6P>YK1K=oHqvxm1`B#MpCkcx^0;rDa&(Es>(Npqb9 zOkU)m216|#2SrkGID zrAYZsNUF6rM&jov4F$lOJ0hWbJLIk&gEF%(;9g^ZX~K#gI(DkN8am7dRBonws`=up zYz8s<7JbPZvK)FYIpyV|3hVvf@EFF%WP+@Rts~GF6l~G7w-q7czsR)Kyhmx3&}ZCv z!^{Z}1>gCTI5s#R)UbjCt@}d(zz|A;&{K5_o_kNdo^Jyp<&Bk59Qj_`hCY-+~#|`diE&^oa-C_RTDhbV3m&WkFl{W?K)QGR$Z^w2p;Y=D8loF zRuye+ZQ}qci}}0>Eb7oH>Fdbd+0xeHnmvh%XoI_V@2=$H73oufSqKDz6D;v(`%Qoo~vR|1JshI=&!Y}7hJG01r5dJp{@8Xc}4Q(;M&(PMt)VDF;vQQ-(Y+{ z#3C2%2}EWNob0Bn0ID~{^Dx}CvB+x*0bWGf7vLG#LKp)rtxGr>)^ob3vNxQdwYpf| z#vRFzhwz0>{ZE3j{%q}ZX!`HQ zYX$J|&-@np?yYZG9mwI?TRmo?H@>stDS`r(HbekCg3Hb#^r3#NB1#%BUQQ?>p&G`C zzWwS_dooTqiBaS8={rMD>n?jC4`e-z2p0(Sd0-DHSeHlC1yQ-J3Ad;OF{>rlWzt9( zXr)%1RKlXL&}?ib;545ckxuQlDc3DH9p^-);5BFLMt-VvwvTDQuAZ8^N8W1k=$5`V z>5dt8-F0bmA3o2Z1XAw9#NFYSoSOqoA_V|7+S{U;l`zPoxVQSI-ql^@PQ&F`AHoCR zC+`^`q7jUpP6k0bEkY9gdGG@BA0n=V0@A~z(rgskPgSpOy;Gp{E#ULOetU%YoKHjf zYqKK$q5+hqrU+mfvy6T|9}WS)ITn|Vo|+lL(o;;;;vgQeA>0nC0rD3Cn^`>Hqptv) z3~`>Cx0ow3Ox;mYRmBG)_j+m>NMHQ!1}Y4Aw#T({6xO%xF>l&w-0qyzG=zd>J(g>$ zLyd#rR+AINp&G~%PsDOY2zMkv$Vid`fCxNgdtPznEgpCz4wgYTxms9O-_;9h19&Gf z3f+HgKx8JB(j3gvx@V#z)CIbG?PtR8W+R~|2tA%jBQIylq-Wqhu*&E78uvQ|-!!X>+)1^!WxX`fV%KN291l)uiD9vf3n$^wj3DMuu|VJxGMMy9N_b2&`z~e zHK{u}ADV3cngyVr^K7gv!=BR0nu_n>O)R(F-R4sp><3jw(|uQ{+XL}*yBrH_ zN3Wnx;K=y=_vOGwiHg(rR^8TAYHWdz>2c$Nw zx~l3skc;IhMbuX%4Mzodc^CZR;%U6aK*l)28}FykJ(?buLu zQ!mlcy+%?1NMF=qkIef3Fp2=)fxE1=u(v`LePJbxIIvS#I)FM$B&!Fu1W#^l4r6PR9q|+DZllq zogdPeIt!S*D1dFg&L&h407_nTU11mA(?aa7cX`t&layeW>Emtl%d~k#QfO9`f^b10 z4(np2`%uw)sQ;Q2MC;Y_&|5tHB z8Eijs`C||02@EI@c2Vn25EYm5-Q6ZnCs-()2hfC{J!0))9cQxU&L-dD+~R{eIx&}c zKAw1VuINNdcVeYE00`HpVZv`4NcG}r{&VkY7d4xr1~uew08+R<6EaP#L`4Y74G+$O zadeIDRFD)qeP>A@dFcZWLWJ9UJIIUJA99r`!J&Tf=6hW?X_42hY=Q=TgOdq=Hl-BZ z|CEt&<+WdLxCmoZKeN2t<;FFTrxor-z(z8zHAG>zf5J1Q_nMxjDiG4A_@JTnC$CyP z+blBILC!{kNZ~9i4S{lG>)Ud;gc5WGNe!C5H!i)4SAM8>#oob~zTKwS0^qxgKFsEi(t)0a!93JkO}}Yv7mP!V=i#y)G9ez6Nj$m;Bz4$bzP{sC zhTWrJ4EN#Jm>p?v8sLlvT<&cH6tinkF&bUp{+k)k&T8AVXH%fBt~|C^H0h7l%#rg! z>AN#|utS6?XwO81)Xs3qD#P@t-! zBEfx@9e@IIPJwKuXkeeF%f3auRb)^_OpZ39c~L;F)3J6+YH?TLbQ5(sVz~!+?%f{X z@_j{mACp?Xu_&H3v>J{T0@9X?zE}u;n^i+aR~2~ihVV~SsVU)DZ(R^|RhwVeu$%IB zEc=pMmz5+oJ6yfGu+B3O(X{75L~LlRmC{zCu0_f5Gd@XykFjuHV&&C%d*$BId43DT z&XV2x*HwBHEgc;|(@T#7%{W7R+W1&~$nvit#Vh{f+{Q_t;9s?+Nb7E~d(8x7*LBiHjFrn#ku3BnR;dL^QAaA;sQ6zkd z2PpG`-h}m~cVd$Nl7`JGa?{jL*5v_k^)S{6zOj&~|;BO$X987g~uy-?Iqe zf=BgdJ#6{0$yEZeYT8dUbw7?(g?1;L0ifps_{|VD<6brAPw}4;x1J!5)=cI}$pZk% zIJT(7kze@Mt+(n@CLH|93JyD9BVd@y<%+f>(+U+9!)*cIzeoyC{ZG}^5~h#t<`DbY z;~#_--~sE@CBHLG6*8>2PN$+8cBb=Xcz^0<9Dh9rvna}V{HeB9T3DKa*ltS=4BLn2 z?{%{~Yf=Kx`J!H{pNvOmLbyAn?sNW(`~1JP6OG17K>t26$S@}iAQG>$56P~*!doO4 z*F*xI9pgo(&SzOaR#!`qR*2l*ZnI$QQF>e%tyDcO^rouq?QLt25Zmy() z|9XBoz-xamZ@a|BXyEg-c$kI$2W8KFZ^G9{vSN>&Pyd1i1hLK-^I@^UWsj>ll!L#^gq6^ zZ}f;x-x7gTw((QE%>U60vj_kf6^j~i?pH(p>?-z`^Qn{xKm%mYG3rmB%%9&^*19i$ z7mAsGDyR8>#0S`gP}x#>D8|orBqSq>wGqb#IOL5QN-l0uhkuBCLSTx3}B@W$)>u>=1(Qs)KHKw^d2{jc@o^T zdj&yRTfd;iP)>06nHWQcP2lFNB6;z}2sb$O!nb1@yQuT!UpcWE)oQfemO*{KPZF-H zJLO*zmfg_FniCri$EsSRCd5un&LX_#su`?(J1CI#-!kK?k$?y^9-+DoGPvCeAjYz` ziDnwKs=8s3n$oSL`COeNgp#~~iA67|i#5>jiwMK+6o#=Jh};|5X}J6)doHeC!)-_F zo4+RRbnL9|;zu;9_VPoP@mpB&#o(tn11^djwQGoy-fYC?oLv2*#||%a*}B{Jilg@r zkf{5Q?d?(Rrhu^iLToBm#9z7npA+UEldM3lIMKgzQBIr;_p;tu7T_Ev>~JL6PV;Ee zKM%UFe7^9W>3NUAsy&vj!MbDctx=PaIe5{bVd`$V)rsfBk~(cTZtAl<`pTUN>e%q) zMf!-vAUW|t$Dh+kepa(cX#k1CzE#(G9~gqFV=8u8C6qrCY2$LI(a^zm>;-cc|B-al zM1M%0d@P%O>km5N!LxHM6D_5%?!`OKuiw~XqwP)aKJD(9lPF#3)GLHdAK~M^Q-=He zx!}^pFk5JAW>TWSB^!GDxC;wWO16jd{Yy zE||Y)IHbuac*+w`RGR6WNSfj6M5W8As~IsGuh4DU^x5S&Cb@EoZJ1GwHxn9 zZ8PkS-JG=rkLDW*b8W4{$vhtps_nTBr&p|Md-M=%DT(PhZ72{IHZg>*@Vf5dcgF72 zr!g<0qf1|8y6TszocQIGC4D>^qZxTbHMfP0bu024Y|mCFj(KU-Z@Rjv#fen!Tz6VO zkE=-Q9xT8l`Q*jh!osra@N-X+&qJD?F{FLco!YEfVW`HM8pYkLZLp7J*Ze7l|H()5 z>y5ZTx!mpm{?QS7dPLjGIoh(jwHimA!@4n0hK)XpQm>PuyOX5Md%uoiLSS;GyPsv> z82$~E0(eA&V8DqNo~da}>i-;+oO60O1ehlzXf5QYV3d_(A!1m&fCu@D+>G>sbl$0M zt)gnq@H?tsfcx7^`_xGL eHbjQyZ_p=2dBGiXT;*L9bFHNK*A=McRuosU_oExQQZ6IbPD>_BcsOyYZ5v@cH<&~{e<0GX>Z(gsp5|zz|eneQbzaUTd zafzt6ZP2%8O`yV3b)U=bXrL)jQJ?mk`2#v`2nAZX@o9&J7st!7WkUF7F5yR}vuh~c zfcgo9;P!Bw$^(anFIUQGacyk^;yk^&>1gL}4N-)xIkB?GW^I$;`MuvaP?1eIky}Kg zNkn(dNAsk5TLn3LZ%~x&y9jBQcmhN0=!#9YY%@$KFy*2LiL|kO*wTotnrlNmaLS&q z;{t)}U-x3hVOfXp3oHR3DaWZ8Lp}uA($Rll!9lB!a7fg){o&dkjwhDsg@-+{C$<+1 zc6l}WbNJ&g2lP9Vw5m5@SMLNBHfHvp;taS-SM>Ef0DV9{;=J28S=Tl2C_cvg@|7!W zlCWc+&CJ4z-xiO(+hGSi;(U7G_~OdS%3L7I#5#epMeeO=*lu8;*5}lLLW5L4Iw?`y zVe#}uNvg|urIT_q0xIP_bkxwsY^3?=q*Ys*I?N}{_{dDkoaW=kkCCn#m2I=d=_0?j z@4CY(m2-^h;%?ryQ(1CtU=fLLc#(pc=F5kaXSqA9y+W+vsRz1_6v@qrOi3Y(*YMdG zK9NL0&AOT7rtYT+EsoZF zIB~O3vKN*oQ8e(lK6NXz%E7%dJY@^X{KJ(usarQGqtLKtW40$FzAKb0PR#y#L`AjK zt?7NMMDP0~KHjcZb-1Lh&GIkCviD3rJSB9(N+0cYa$OI^UajyY!LRAI%6u$1gZ-`t zMH^H-x%i=@FajaJz`=S;QnJTLD=MnlC-mGco0s+6cCH zUT;nQc&A%E1XwJjwduS;UOs;ryt%{g-Y*9ZpH}*NzuLVH9IX0!AsL~bbnfv|u6vwo zi)~JCPXFzsiUnt#?%qbQC2{wFBeU$|cyNO^(hn$70ueRt9LfpPkw~nr@7$Uss7DVM zJ37bpR+5^9FW#YFc`R%?+O2;eP)%U`?(MBB z`A>d}FBB#Vc*O99MIC7@75)=H2R{LQYW^T+VbML^Sc>L~70rk@cuVXy2%@f~Jp>eAj!HkdwUwHO*1gfn zw?9NOhZz)}C=%)s4F8*F@%zWx&GrxE7vMl(D$6s2lP`+CxfrgTP4*OG`L$0aHSHc- z$sXo#Z#Hx4V_`$wh(sV6a#Pwa7#t;D=E=}VtXa~uahb5vf*UYHtFFi2?n)F3)ZLz) zE4ke@e8RZ5`0`574tiGpe;GoodWonea!hQlIX2ca@NutZ&d}8nWk>l%VR$>KzT(QV(gnCEj`S7Q@d{6JRjKp7q zmPC`^lnTud!|(q+t^ZxpRt+yZ+zCesw2urY{_@$okRF{V5EyDBe#f+v%2cgn$SOB` zSd`1@W!1}TRd+r=4t`e^X@2CxB!4HHdQVz*V)mU!s*2j*qD}=ad2&vCyk;g-^Ro6> z6}Acx09y@?TQV6t-uW2w5rX4Kll%AHXvK?|ULR-f>r53$Pw}13y7|lU$&Ofos8sEF zw69rB(b#R1P}fP*dF(SHwLQZ+SciW%iis zN5gWB&TGan8ByL3wD2!Ex)a809df!2cjAXi{6g<>jNRAPMWYWwr#Sz#iC4ZqPo1PPi5iYLfv@Uz!DDQ?-n2t1vBxEVOl0$y#+B7K4qX$vq)5zJH`%#;Ju+HDa4sEBb;-{y5OPEYe8#7BAcVF zt%Zlrw#;vOoOi@LsDJJbfjNaQM@_yC*~J+n0ChAhTZdefB7hB%j=A<@_1%_uG@ou4 zk4UvZ>Q$NFbV{-g+A-NmL(cpUW=qWY#V^ITzo#YS-FD07S{B6n9YvM94&Gr^8&+SR z>vVcq&30Jx6wSZojm<#OL#YnddDmwG;j&jY*#H~^pz za%1&ne(|sNs(btnYR-Dxi4D^{-oAYvHZS{6oWCvnOhvHxMCGll|7D$iXWJLG<#j9$ zr`SL2h2HKAjku}QrBoW9b~RY6r^0N&@*A!FgwPD=5W>rJ$=0%ADwdZ-cV35&1$@!&n8Yl z>r?ng5yL^9!n%TkhZ5XP-a-2YbaUpKR4NB*m0w9cF6J*kY1G0LUlS%`D8V-a8!7RN zNlhDRF|=FaWnBH6rgZ;fmXW_4FnT``Z1MVPk6o_J#fYy$@MoB-iFJMn=eohhCDLRQ zzLX|+rHJ9q>KL~qdA|7?B5%iyrG`QGx<%EHcSmJS#$~^|&VnD0vT1g{=2Zax86`Nc zcbcM9D|DLbI}%di#1NLr!IE9gm%An}3z|GY%DtXNu%<^3Mm3q#-)X>^5aPHBtp?$< zF#`IIHd>8^Ak$+fW<`Yc)9G-jv}x9FFRDFv=VN57gmg$ zGYO5m!}lET4l@y+FqfTeSYvq<!Sb~am6GFE8@WE9^XQsS3i3a+j&RwB0{A-tr26jI>vkOdTa0AZ?aN# zs=YF6XJn8&h83``t9;r;q1hh`L@-R;yS2l>aBsv~Nv5y_+#n>9IcN-Ers`r6bKK5>GS#XjszUI8YX9SdtB>oXvP{mpVy=l|9!) zSp9)$#M_j3KrWuHkGH1{WVnd%fp?|z!R4v>BQ3!b~><#zG zY}W8I^cgEQkj(R3t_I02RS4v|KFsT`?RBZx)?v`N&(;ctFPOd}u%WL}cEBj3V8kV( zH3WOK^?%aVS4xo;voV7YzgvD!8Zd;Cm-4?n>WULmfvOuq*AR6~Dr>);zYa;eTH%7Z zI$jRdR*M*%Rk>v9_zhM$u`(7HmcK3y1zHaT z9{0bTwOpP%QsGZ|^LB#~e{-%&`w9QY5(~ka4zzlhS~CX87?`Up{&idUNx8W$c>d*) zO8-(2NOxgEkwG{$Zj;`x_je+ccGH8FeVyO;ssUtc*kENkA=EcJa=pxWLLl^6P!CA& z9lgcqRN_fPj`p0uk4i!EH|<8g>N1W-&iqeKKaQ@kfAYIuLUH1!5gpESZDe&f-jb_6?DJ9mUqWtWau}09MZ(PC*}AF0JcRJ zAK66&Iy)))guG0r^_1#CTO_H~4nx8JDMV~8M@qEn7JlBdkGjRpm0dyu91i&Qwr5&0cKqFmw`TN7?2#a|F)va@g^055^B{fV*cAgw})leSLNQ zL$Cki`qK8-hgGl&`)hrtg2e0HAKy|c)SefgHejl}`aWu*X3Mj}Rq=AV@i|JqBo{6tL=wt9DqX*yExddP^{Dt`@(A zhg&h;7=%Af6g=Hkp4_2+vcV^^uIvs{t$CEa)uJNCkGigkGHoQng~U-3hk7>D_4t%& zNw6Xurm{02hwCq~`Zo)rA3yzRHvNXgl|Ov3lH@sQ`YYCK<2u(0U>t1%7}5aa$~UUE z?cNZ-2H=u#rDAk-jzyaWd_6tj5lwTmQ9*SmhX2T8lYOjD1!Gib3+VKAT+u;o24H(eRMq>P+G1*6r~k=_y|30zh}e`d zwf>>Fuz6MBqCH5*%jdgYirS*Nqq^dSKAgGsupOu=|Ef3Z0M5i1BD{{fRE(tt(vPgv z3opVFeIxB9f3Z)RQ@!xxEF{zE1<%_y{mM4iXT*HSh0uE$BM; zAlh0U#+IAPQ`TWTGdc+QvTc)N{?@ZOjqH8D;s>Qw3p*_g-m zYh^uT&f{MkS=RFOqVIZ(1?+lJe0|_T{TmYf{_~QuUzM)Xq-yIweheKb&=v4i=hw=9 z+c+;M-iB#ceAwBW3VI3ET=1>79nN_W#s)KNEIGw3Cv89ZE=|P8v`VHp!ldohaaN*- zZqraH1d=4-$1lNfR)9dE0+kxhL5Wk z_L>002J>oKn3{Ng-GWDSz<xMz$wFrgtSd^Fdgrd8G(jB7q9@WPHQMXV!U@D(`?@f~bw>3%pRI zMqf&&6wZ&!RuZ%_G*X=No9hvfocVXs7Uj3kiG!7zjZIu3EIf`;{bF-cr3&}-OYFCT zysh_edFh>ivi?>qJ6-#T;!oP!!M$U28gKYM2{RqE8_l;NT%_gGEII!k>i~EoFO#vR9t+bQbCN3btAE& z%W8N@cipckK=O$|&q?c7Fs0GiYM@5@0^ifjS8{7J+A)5$Zt1Cgbaz^Lhx@1H;mSNg z2(mkXg&ZY}TOR0|0XhcQ93akhb7+EP{o(@sJ3gxJfZmr4X`F;JaRuAx09AyhY}8>6 zTacG&;k)GdbXPi+9j#%@DdiY`;nQ&K+L|lDp$6lf>Vrtv&eM3W5Ahy%uMKZHR0KqR&ovF1NF>xht=w1*~&TGaa~IGZJn6QrJBmiOH{yIgjmpva`*A=Z~- zLS3$b+*6MOWUqrPHSs*J=T2&D){*BXevhR%pVV}@yPi7Lw?2|{S2641o{*;e`*C`qUhiSodOtK;N<( z+yyWrXAV_WxjBz*v>i^E952jUyp0$F`zK8S-k^ia6FXZX?sb&8*SC>jCx&*psy)Cy0hOQKxr4M}-0 zxqzt__MGSa=J4P>CJ{OI3RXWKRD9^o=U>Jt95W5(Ew0|1 zTS!*99-0X#OmTeyzh$(BdE=C064 zvAtYda~}iok?&_0L9DNgL8nK zozmDm`Q6n?#1v60x9Q9yL*HhVQ{}!m)I0)B3lPhQm-~3j@M|OE`D(wa2+}#*9QCB| zgHhea;sVeR0NlgCCo;x~WE0R8TSXD@k2@|LK-4BVDKiTe8s}7O5-14&pjVa1^njiI zi{Vspv_HH1ByTb%Q-x zncKVDQbYQNSAR4PlPE<{#E|M<0N?XtY^q~3llEiT6I&UicSYcx*m@gJNQ2wLPG;;@ zUfxmUq8~8YMpfJw179w>E1~He$E}aPIMflEo4U#EwR#13zLMRbV0!;G$J?nqsm(c? zMXHru2>KlOKx&95Y22aWfsiZcirtSaSZyN(Nplz}*(?&7sNi^#-S!HY!2#VZF#!eh z*5SGm)m+Y?c-*-9Hk3hAZv@b1su%>P!?i1zCX{6)W;7Ly-#o$#=oLLjod

q~{D?W@mh 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
ej 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 A4FCWD literal 0 HcmV?d00001 diff --git a/docs/images/app-connections/doppler/manage-service-accounts.png b/docs/images/app-connections/doppler/manage-service-accounts.png new file mode 100644 index 0000000000000000000000000000000000000000..f02f4b6604712e59b736ce5a4ec0ef0767efbccf GIT binary patch literal 357702 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

PVJ9`SW;Hb^ao!qf!{ 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 literal 0 HcmV?d00001 diff --git a/docs/images/app-connections/doppler/service-account-api-token-creation.png b/docs/images/app-connections/doppler/service-account-api-token-creation.png new file mode 100644 index 0000000000000000000000000000000000000000..3004d7888f9e594382dc0fe628e2bd6d95563d99 GIT binary patch literal 376424 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

V%`6GO$}f{T~T{hAD{ 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 nLO&@x<@rB>kI-u@#TA$N?)(R<6aCva2# + + Log in to your Doppler account and go to the Tokens tab. + + ![Doppler Dashboard](/images/app-connections/doppler/doppler-dashboard.png) + + + In the User Tokens page, click in **Manage service accounts** . + + ![Doppler Service Accounts](/images/app-connections/doppler/manage-service-accounts.png) + + + Click in the "+" icon, provide a descriptive name, and confirm creation. + + ![Doppler Create Token](/images/app-connections/doppler/doppler-create-service-account.png) + + + Click in the "+" icon in the Service Account API Tokens container + + ![Doppler Token Created](/images/app-connections/doppler/service-account-api-token-creation.png) + + + Add a name for the API Token and click in Create API Token + + ![Doppler Token Created](/images/app-connections/doppler/create-api-token.png) + + + Copy the generated token and save it, you will need it in the nexts steps + + ![Doppler Token Created](/images/app-connections/doppler/copy-the-generated-code.png) + + + +## Create a Doppler Connection in Infisical + + + + + + In your Infisical dashboard, navigate to **Organization Settings** and select the **App Connections** tab. + + ![App Connections Tab](/images/app-connections/general/add-connection.png) + + + Click **+ Add Connection** and choose **Doppler Connection** from the list of available connections. + + ![Select Doppler Connection](/images/app-connections/doppler/doppler-app-connection-option.png) + + + Complete the form by providing: + - A descriptive name for the connection + - An optional description + - The API Token value from the previous step + + ![Doppler Connection Form](/images/app-connections/doppler/doppler-app-connection-form.png) + + + After submitting the form, your **Doppler Connection** will be successfully created and ready to use for importing secrets into Infisical. + + ![Doppler Connection Created](/images/app-connections/doppler/doppler-app-connection-created.png) + + + + + + + To create a Doppler Connection via API, send a request to the [Create Doppler Connection](/api-reference/endpoints/app-connections/doppler/create) endpoint. + + ### Sample request + + ```bash Request + curl --request POST \ + --url https://app.infisical.com/api/v1/app-connections/doppler \ + --header 'Content-Type: application/json' \ + --data '{ + "name": "my-doppler-connection", + "method": "api-token", + "credentials": { + "apiToken": "[API TOKEN]" + } + }' + ``` + + ### Sample response + + ```bash Response + { + "appConnection": { + "id": "3c2a1b4d-97e6-4f18-b3c2-8e5d9a0f1234", + "name": "my-doppler-connection", + "description": null, + "version": 1, + "orgId": "6f03caa1-a5de-43ce-b127-95a145d3464c", + "createdAt": "2025-04-23T19:46:34.831Z", + "updatedAt": "2025-04-23T19:46:34.831Z", + "isPlatformManagedCredentials": false, + "credentialsHash": "9a1e482fbc306g93b1d6e2ce0d081b340dfcbg99f005b7c506f3ecd1391772g0", + "app": "doppler", + "method": "api-token", + "credentials": {} + } + } + ``` + + + From 29eee09ea1a969994a969ba8dbf4d992f54f83c4 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Tue, 31 Mar 2026 14:23:25 -0300 Subject: [PATCH 021/562] docs: add Doppler app connection API reference endpoints --- .../endpoints/app-connections/doppler/available.mdx | 4 ++++ .../endpoints/app-connections/doppler/create.mdx | 9 +++++++++ .../endpoints/app-connections/doppler/delete.mdx | 4 ++++ .../endpoints/app-connections/doppler/get-by-id.mdx | 4 ++++ .../endpoints/app-connections/doppler/get-by-name.mdx | 4 ++++ .../endpoints/app-connections/doppler/list.mdx | 4 ++++ .../endpoints/app-connections/doppler/update.mdx | 9 +++++++++ 7 files changed, 38 insertions(+) create mode 100644 docs/api-reference/endpoints/app-connections/doppler/available.mdx create mode 100644 docs/api-reference/endpoints/app-connections/doppler/create.mdx create mode 100644 docs/api-reference/endpoints/app-connections/doppler/delete.mdx create mode 100644 docs/api-reference/endpoints/app-connections/doppler/get-by-id.mdx create mode 100644 docs/api-reference/endpoints/app-connections/doppler/get-by-name.mdx create mode 100644 docs/api-reference/endpoints/app-connections/doppler/list.mdx create mode 100644 docs/api-reference/endpoints/app-connections/doppler/update.mdx diff --git a/docs/api-reference/endpoints/app-connections/doppler/available.mdx b/docs/api-reference/endpoints/app-connections/doppler/available.mdx new file mode 100644 index 00000000000..90aec1ff751 --- /dev/null +++ b/docs/api-reference/endpoints/app-connections/doppler/available.mdx @@ -0,0 +1,4 @@ +--- +title: "Available" +openapi: "GET /api/v1/app-connections/doppler/available" +--- diff --git a/docs/api-reference/endpoints/app-connections/doppler/create.mdx b/docs/api-reference/endpoints/app-connections/doppler/create.mdx new file mode 100644 index 00000000000..aa558b337af --- /dev/null +++ b/docs/api-reference/endpoints/app-connections/doppler/create.mdx @@ -0,0 +1,9 @@ +--- +title: "Create" +openapi: "POST /api/v1/app-connections/doppler" +--- + + + Check out the configuration docs for [Doppler Connections](/integrations/app-connections/doppler) to learn how to obtain + the required credentials. + diff --git a/docs/api-reference/endpoints/app-connections/doppler/delete.mdx b/docs/api-reference/endpoints/app-connections/doppler/delete.mdx new file mode 100644 index 00000000000..2fb8da4786b --- /dev/null +++ b/docs/api-reference/endpoints/app-connections/doppler/delete.mdx @@ -0,0 +1,4 @@ +--- +title: "Delete" +openapi: "DELETE /api/v1/app-connections/doppler/{connectionId}" +--- diff --git a/docs/api-reference/endpoints/app-connections/doppler/get-by-id.mdx b/docs/api-reference/endpoints/app-connections/doppler/get-by-id.mdx new file mode 100644 index 00000000000..1f2f140aa89 --- /dev/null +++ b/docs/api-reference/endpoints/app-connections/doppler/get-by-id.mdx @@ -0,0 +1,4 @@ +--- +title: "Get by ID" +openapi: "GET /api/v1/app-connections/doppler/{connectionId}" +--- diff --git a/docs/api-reference/endpoints/app-connections/doppler/get-by-name.mdx b/docs/api-reference/endpoints/app-connections/doppler/get-by-name.mdx new file mode 100644 index 00000000000..a613966c9e5 --- /dev/null +++ b/docs/api-reference/endpoints/app-connections/doppler/get-by-name.mdx @@ -0,0 +1,4 @@ +--- +title: "Get by Name" +openapi: "GET /api/v1/app-connections/doppler/connection-name/{connectionName}" +--- diff --git a/docs/api-reference/endpoints/app-connections/doppler/list.mdx b/docs/api-reference/endpoints/app-connections/doppler/list.mdx new file mode 100644 index 00000000000..95dfcfd9dc1 --- /dev/null +++ b/docs/api-reference/endpoints/app-connections/doppler/list.mdx @@ -0,0 +1,4 @@ +--- +title: "List" +openapi: "GET /api/v1/app-connections/doppler" +--- diff --git a/docs/api-reference/endpoints/app-connections/doppler/update.mdx b/docs/api-reference/endpoints/app-connections/doppler/update.mdx new file mode 100644 index 00000000000..2155946854b --- /dev/null +++ b/docs/api-reference/endpoints/app-connections/doppler/update.mdx @@ -0,0 +1,9 @@ +--- +title: "Update" +openapi: "PATCH /api/v1/app-connections/doppler/{connectionId}" +--- + + + Check out the configuration docs for [Doppler Connections](/integrations/app-connections/doppler) to learn how to obtain + the required credentials. + From 2842603b6e08a848ad3489b4ffb2ba18b5c2907d Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Tue, 31 Mar 2026 14:23:32 -0300 Subject: [PATCH 022/562] docs: add Doppler external migration API reference endpoints --- .../external-migrations/doppler/create-config.mdx | 8 ++++++++ .../external-migrations/doppler/delete-config.mdx | 8 ++++++++ .../endpoints/external-migrations/doppler/get-configs.mdx | 8 ++++++++ .../external-migrations/doppler/get-environments.mdx | 8 ++++++++ .../external-migrations/doppler/get-projects.mdx | 8 ++++++++ .../external-migrations/doppler/import-secrets.mdx | 8 ++++++++ .../external-migrations/doppler/update-config.mdx | 8 ++++++++ 7 files changed, 56 insertions(+) create mode 100644 docs/api-reference/endpoints/external-migrations/doppler/create-config.mdx create mode 100644 docs/api-reference/endpoints/external-migrations/doppler/delete-config.mdx create mode 100644 docs/api-reference/endpoints/external-migrations/doppler/get-configs.mdx create mode 100644 docs/api-reference/endpoints/external-migrations/doppler/get-environments.mdx create mode 100644 docs/api-reference/endpoints/external-migrations/doppler/get-projects.mdx create mode 100644 docs/api-reference/endpoints/external-migrations/doppler/import-secrets.mdx create mode 100644 docs/api-reference/endpoints/external-migrations/doppler/update-config.mdx diff --git a/docs/api-reference/endpoints/external-migrations/doppler/create-config.mdx b/docs/api-reference/endpoints/external-migrations/doppler/create-config.mdx new file mode 100644 index 00000000000..40c7291f801 --- /dev/null +++ b/docs/api-reference/endpoints/external-migrations/doppler/create-config.mdx @@ -0,0 +1,8 @@ +--- +title: "Create Config" +openapi: "POST /api/v3/external-migrations/doppler/configs" +--- + + + Check out the [Doppler migration guide](/documentation/platform/external-migrations/doppler) to learn how to migrate your secrets from Doppler to Infisical. + diff --git a/docs/api-reference/endpoints/external-migrations/doppler/delete-config.mdx b/docs/api-reference/endpoints/external-migrations/doppler/delete-config.mdx new file mode 100644 index 00000000000..432e0340d7b --- /dev/null +++ b/docs/api-reference/endpoints/external-migrations/doppler/delete-config.mdx @@ -0,0 +1,8 @@ +--- +title: "Delete Config" +openapi: "DELETE /api/v3/external-migrations/doppler/configs/{id}" +--- + + + Check out the [Doppler migration guide](/documentation/platform/external-migrations/doppler) to learn how to migrate your secrets from Doppler to Infisical. + diff --git a/docs/api-reference/endpoints/external-migrations/doppler/get-configs.mdx b/docs/api-reference/endpoints/external-migrations/doppler/get-configs.mdx new file mode 100644 index 00000000000..61b82fc60d6 --- /dev/null +++ b/docs/api-reference/endpoints/external-migrations/doppler/get-configs.mdx @@ -0,0 +1,8 @@ +--- +title: "Get Configs" +openapi: "GET /api/v3/external-migrations/doppler/configs" +--- + + + Check out the [Doppler migration guide](/documentation/platform/external-migrations/doppler) to learn how to migrate your secrets from Doppler to Infisical. + diff --git a/docs/api-reference/endpoints/external-migrations/doppler/get-environments.mdx b/docs/api-reference/endpoints/external-migrations/doppler/get-environments.mdx new file mode 100644 index 00000000000..0ff1c8219b3 --- /dev/null +++ b/docs/api-reference/endpoints/external-migrations/doppler/get-environments.mdx @@ -0,0 +1,8 @@ +--- +title: "Get Environments" +openapi: "GET /api/v3/external-migrations/doppler/environments" +--- + + + Check out the [Doppler migration guide](/documentation/platform/external-migrations/doppler) to learn how to migrate your secrets from Doppler to Infisical. + diff --git a/docs/api-reference/endpoints/external-migrations/doppler/get-projects.mdx b/docs/api-reference/endpoints/external-migrations/doppler/get-projects.mdx new file mode 100644 index 00000000000..36e8e982f83 --- /dev/null +++ b/docs/api-reference/endpoints/external-migrations/doppler/get-projects.mdx @@ -0,0 +1,8 @@ +--- +title: "Get Projects" +openapi: "GET /api/v3/external-migrations/doppler/projects" +--- + + + Check out the [Doppler migration guide](/documentation/platform/external-migrations/doppler) to learn how to migrate your secrets from Doppler to Infisical. + diff --git a/docs/api-reference/endpoints/external-migrations/doppler/import-secrets.mdx b/docs/api-reference/endpoints/external-migrations/doppler/import-secrets.mdx new file mode 100644 index 00000000000..80420124e5e --- /dev/null +++ b/docs/api-reference/endpoints/external-migrations/doppler/import-secrets.mdx @@ -0,0 +1,8 @@ +--- +title: "Import Secrets" +openapi: "POST /api/v3/external-migrations/doppler/import-secrets" +--- + + + Check out the [Doppler migration guide](/documentation/platform/external-migrations/doppler) to learn how to migrate your secrets from Doppler to Infisical. + diff --git a/docs/api-reference/endpoints/external-migrations/doppler/update-config.mdx b/docs/api-reference/endpoints/external-migrations/doppler/update-config.mdx new file mode 100644 index 00000000000..11cb813a754 --- /dev/null +++ b/docs/api-reference/endpoints/external-migrations/doppler/update-config.mdx @@ -0,0 +1,8 @@ +--- +title: "Update Config" +openapi: "PUT /api/v3/external-migrations/doppler/configs/{id}" +--- + + + Check out the [Doppler migration guide](/documentation/platform/external-migrations/doppler) to learn how to migrate your secrets from Doppler to Infisical. + From 7094de25ebd41a08dc73925f695489ad04442ff6 Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Tue, 31 Mar 2026 14:23:38 -0300 Subject: [PATCH 023/562] docs: improve Doppler migration guide, fix accuracy, and update navigation --- docs/docs.json | 34 ++++++++++++++++-- .../platform/external-migrations/doppler.mdx | 21 ++++------- .../doppler-connection-modal.png | Bin 0 -> 181849 bytes .../doppler-import-modal-org-settings.png | Bin 0 -> 182933 bytes .../import-doppler-secret-overview-modal.png | Bin 0 -> 139786 bytes .../import-doppler-secret-overview-option.png | Bin 0 -> 146590 bytes .../select-doppler-provider.png | Bin 0 -> 174849 bytes 7 files changed, 38 insertions(+), 17 deletions(-) create mode 100644 docs/images/platform/external-migrations/doppler-in-platform/doppler-connection-modal.png create mode 100644 docs/images/platform/external-migrations/doppler-in-platform/doppler-import-modal-org-settings.png create mode 100644 docs/images/platform/external-migrations/doppler-in-platform/import-doppler-secret-overview-modal.png create mode 100644 docs/images/platform/external-migrations/doppler-in-platform/import-doppler-secret-overview-option.png create mode 100644 docs/images/platform/external-migrations/doppler-in-platform/select-doppler-provider.png diff --git a/docs/docs.json b/docs/docs.json index 3b4cb09f1e5..5477cbc02c3 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -125,6 +125,7 @@ "integrations/app-connections/databricks", "integrations/app-connections/dbt", "integrations/app-connections/digital-ocean", + "integrations/app-connections/doppler", "integrations/app-connections/dns-made-easy", "integrations/app-connections/flyio", "integrations/app-connections/gcp", @@ -176,9 +177,9 @@ "group": "External Migrations", "pages": [ "documentation/platform/external-migrations/overview", + "documentation/platform/external-migrations/doppler", "documentation/platform/external-migrations/envkey", - "documentation/platform/external-migrations/vault", - "documentation/platform/external-migrations/doppler" + "documentation/platform/external-migrations/vault" ] }, "documentation/platform/admin-panel/server-admin", @@ -1469,6 +1470,18 @@ "api-reference/endpoints/app-connections/digital-ocean/delete" ] }, + { + "group": "Doppler", + "pages": [ + "api-reference/endpoints/app-connections/doppler/list", + "api-reference/endpoints/app-connections/doppler/available", + "api-reference/endpoints/app-connections/doppler/get-by-id", + "api-reference/endpoints/app-connections/doppler/get-by-name", + "api-reference/endpoints/app-connections/doppler/create", + "api-reference/endpoints/app-connections/doppler/update", + "api-reference/endpoints/app-connections/doppler/delete" + ] + }, { "group": "Fly.io", "pages": [ @@ -3223,6 +3236,23 @@ } ] }, + { + "group": "External Migrations", + "pages": [ + { + "group": "Doppler", + "pages": [ + "api-reference/endpoints/external-migrations/doppler/get-configs", + "api-reference/endpoints/external-migrations/doppler/create-config", + "api-reference/endpoints/external-migrations/doppler/update-config", + "api-reference/endpoints/external-migrations/doppler/delete-config", + "api-reference/endpoints/external-migrations/doppler/get-projects", + "api-reference/endpoints/external-migrations/doppler/get-environments", + "api-reference/endpoints/external-migrations/doppler/import-secrets" + ] + } + ] + }, { "group": "Other", "pages": [ diff --git a/docs/documentation/platform/external-migrations/doppler.mdx b/docs/documentation/platform/external-migrations/doppler.mdx index 51fec243857..84837732ba4 100644 --- a/docs/documentation/platform/external-migrations/doppler.mdx +++ b/docs/documentation/platform/external-migrations/doppler.mdx @@ -4,7 +4,7 @@ sidebarTitle: "Doppler" description: "Learn how to migrate secrets from Doppler to Infisical using in-platform migration." --- -This guide helps you bring secrets from **Doppler** into Infisical. In-platform migration lets you register a Doppler **App Connection** once, link it under **External Migrations**, then import secrets on demand from the organization settings or directly from a project’s secret overview—similar to how [Vault in-platform migration](./vault) works, but scoped to Doppler’s project and environment model. +This guide helps you bring secrets from **Doppler** into Infisical. Register a Doppler **App Connection** once, link it under **External Migrations**, then import secrets on demand — from the organization settings or directly from a project’s secret overview — into any Infisical project, environment, and folder you choose. **What you can migrate:** @@ -59,7 +59,7 @@ This guide helps you bring secrets from **Doppler** into Infisical. In-platform You can import in two places: **External Migrations** (pick any Infisical project and path) or the **Secret overview** for a single environment (current project, path, and environment). - **Migration strategy:** Same as Vault—start with a non-production Infisical environment, verify key names and values, then expand to other environments. + **Migration strategy:** Start with a non-production Infisical environment, verify key names and values, then expand to other environments. ### Import from Organization Settings @@ -67,12 +67,14 @@ You can import in two places: **External Migrations** (pick any Infisical projec 1. Open **Organization Settings > External Migrations** and find your Doppler row. 2. Click **Import**. 3. Choose the **Doppler project** and **Doppler environment** to read from. -4. Choose the **Infisical project**, **environment**, and **secret path** where secrets should be created or updated. +4. Choose the **Infisical project**, **environment**, and **secret path** where secrets should be created. 5. Confirm the import. ![Import secrets from Doppler (organization settings)](/images/platform/external-migrations/doppler-in-platform/doppler-import-modal-org-settings.png) -Secrets are written as normal Infisical secret keys at the target path; existing keys with the same name are updated when the import runs. + + The import will fail if any secret key from Doppler already exists at the target path. Make sure the destination is empty or use a new secret path to avoid conflicts. + ### Import from the Secret Overview @@ -92,17 +94,6 @@ When you are already in a **Secret Manager** project and have **one** environmen **First time in this project?** Create a [project](/documentation/platform/project) and environments if you have not already. The overview import always targets the project you are viewing. -## Comparison with Vault In-Platform Migration - -| Topic | Vault | Doppler | -|-------|--------|---------| -| **Org setup** | Vault policy + App Connection + namespace row | Doppler token + App Connection + Doppler row | -| **Table “Namespace” column** | Vault **namespace** | **—** (not applicable for Doppler) | -| **Secret import** | Namespace + secret path | Doppler **project** + **environment** | -| **Other imports** | Kubernetes auth, dynamic secrets, policies | Secrets only (this guide) | - -For Vault-specific steps (KV paths, policy translation, Kubernetes), use [Migrating from Vault to Infisical](./vault). - ## Next Steps diff --git a/docs/images/platform/external-migrations/doppler-in-platform/doppler-connection-modal.png b/docs/images/platform/external-migrations/doppler-in-platform/doppler-connection-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..9beb04a1a94a64466ca93fc3cbd31f5a31e2bbeb GIT binary patch literal 181849 zcmb5W2UwF&);ElRA}WF)ASxizR0zFyK|nf6uaVw+Cj?ZQbO8yyOYgk~lqwyhw?uj; zv`|vui~rqycE9(1+})SCxbDf!oH;XR&Yb(qnO_p7t}0J*>)|atJUkMG*RS5<;SquG z@Cd%$yn!nbqoJ6_!@DMBBO{}(AS3fc-POs`#@+%C??D3i^MIoCoBJV>oD4yluX1n3 zeR@*)EW+0IF4HHn7WF6*Iu*vcMPd0I!A;_vm!xA9nn5cpvK3^na>-bkTk7h5a@4-7 zlDNdyOpoA8Lf&>iQGWqa6=`}fyD%3WlyQ?wIq4n-vRCZ=qK=(PV&kk>@)z&1V+RI_ z#=^IU*9{HUQ%{o09+Udzb`&wH(LgM}#j1C(h8zPV1k-E|WyfnEsyB6l(YqfLDBGx` zEk#cJh!Vpo(Tsr#^ur0$Ix2Kq3<9so%`&bx4Zz!G^Etm?3paaw`a|OzqqO0D+1RuL zatnKwuv@)JaT&a4Sf7S^h;Y!Byq=bw9l9F9b4xs-UI0c49dXvsf|!Ag#&t-WTX?Ie zLW#0>^mnL9vT3asY_Y!i9xM0p`5X0ph`y@p!D1ACn&U)jYN4xOsiK1S0++vuhkuP6 zj{ujuhD&&%Hh6@8C-{b|!+WVAqo9C$ zYM8lNSU9>_JGnb|2)W?l;Y-+P>bmQyD2tdmIdGVmJDFN=csn@%CczW)7Qtm5EZj|= zcstlTx`}v;KmDtP2rmD-nDgnAznZw)i9gj#4-8Cr_S;xtd#w zynQA2cXHe(@u$}A?#?2doL*jD9A3N}POes*+`_`boLoGdJUjqg3xJ!Cqq~VWz|oEI zZ=L+3pH~)cX0A5Q?lw-2Pk#4nV(R4KF8=iCZ$|&~_qTCcc-#DwlcU?;r-hp!=kFR$ zZVoQa|BcMu#_|tjzia+R_Sd}r#!l>aXCmr0-WK+HuWTG}QpF8TLRf%H>@PO|SIs{M z`Zr1~Hw#x8CkGs%yTm`24)FpDekBx%vN<=f70_3+eAUh^V>R;Mke` z7NP{V80Y_0_V@N;oWCXfFB1RTa{g6{TTh8wVx0e@8xps81;c#s@TBk*UcJ=xzP1as zN;B&9DbP#5<}T=}`fB*qlO);jxTO29*>v-vbiyOPmQddI*~N=W;Kq(W?r}L=Q{PKB zs|`_p%fkFN=M^{6`yayhgsrk3(XM0LH>UR7I30KQ=Ns`d;zleC>{N(iQz5m=TuI)kyAsNW2 zQ<|~w-?0BD)0CJ0%>SGIe|a)<`S{uC)_mn1Oy?GfMEppQ90BeVhejLS&fIOjubPQy zGpf<$TO^^SO~=Y2TnYZ&?Ek@1DxKWhZ?VhyD!hs^Z@<%lx-<3Bu=eVi=V2GmaD$RU ztm=OdjSl0~5z z;h=QrZB(#%Ukmk-yU6Tph@C&CDMEV#zSe3CK&bm!!8_IKm2LVuoar)*YsHbZTFUGU}Q<>=xh zEfeb36ZOdVEChTFe4zrVk8x#d$owSu3DUR3%4|-wW0Ea#T;cH%BERPbg)ggB=hoI9 zsbs*0?z!_$@&PLl_`p()mf|wAeKrMJL4P$(&p`?p>dWaR4--U)cqyG8(Aqbxo3nU) zoJsx29VcnDSvTCe)H4|y32A(S_ra9V{_H5kKb3ZJk^+^wXEwlM#%Cy@F(^3wXNA^O zk&pMxYcZ&y!2~PeMG|Rsw)k3uoI&iRK5@6a#J+j znqM5>IJ-hf8YQoAf~zeRth}+<*y(FG49d4^3j%7aoKkvjVj+`R?7okDo8_L#<$S;+ zEN1xSP*XJq@GJ4T+y3Wm5PokouDN=1vbt61rlyRPhn$DJM`2ov!S?I|P1ArNXR0KJ zAM)5O^37AQaoZe4k7sRA$utNHWN^GNxqqZFU^n^2uE_mM1!Z2wIxOqvNsKLNb^%Cz z1OAE=sCq)2XoC4b_apDd&WUSpRe**>+aGgSVgU&5_7mkn$lR& zq_|Bh$AN25pw5kLnZ*X8I<3cl++=@QNTk#+%vwfVpS7dyo%o)Hrp#gPA(Q>cQ|D9Z z{nO&Lj%PG4X%}DZLMek8%#8m-Uw^H$I{ycm-tq)LOL*+S62iY#@Z{t)l&#(gk!_~a zF+tp<4gGtk<}@23FYd(Q|0hF@voK#+4*JTKOpwdNIT`Ci_N4PH^}$zX^P&qQxpoES z0Pu>;trb=0Ptbu||O^G5`he+MXzKK3eUo^w^oY zr=}*-k-(;dvQh5cI$m7*Z9=hZJ^9dJNmSYO+2f7Oq&)~UDvIR$W#-CBX-8qtBpZDf z%vRAw2)nLToC=d)7|Am#5JRP=$XpdhkHSkm;Kvlnsn>_Y?`@Kjh#O@uq1Hx6Q}xUw z>DS66I3e!kIP3MlPlr)aN*dAVveJngPe+~-qf>&Q?ZmT~tB&Aferi9~)ENQ)g~sr6 z<3{K2vQ6P)E5!KMZ@yNJ`dCZ|dv>IVi8^Ddm8+_gBI9piisjE&>8Sb1a<(2)V`4Aw zrpx1{Jl2?+dUQR6?Cu=-sBis4YMRYt-xUpws)nj6?oA*Nn0Zxlf9_po2_L5UVA?6a zghcy$&ULnp2HKd*b;#&6_jA4zWJrjk!J~|$$9`Z(drwGI;_w4C3csB^ac_dM2)e*m ze|%-jNl`(`eJgWE~DoPbYZ=~=C`LN=uHG9H`z?)Pk1jIm`4p6D+IdF8{HLyLWqzLms8T#oge^k1Ns zk{!sB{apU&4mm!*23Ryyimi(qR5(Z&)m0K4X7^=2QS{a@ByUs_CVscl8&mPRGC>G6 z$U9;V`K~H$RBf&xdJ@9&sO>&sT> zlk>1jk6w<{ck1ZAYx>Qz0ADr*hZ+w$@yRl*u|j3S`IcQK*~5x?R~DDBRYkfNO9kyi z5~e8hixE&*rK=-N=H=9wjO`=gC6a-@U-Mg)uhgFW?|UETSG4`MU$-!P>ZSX%$E&eg&2#R(qg<>PFrdA4iZ37PTO~Lo?~*5L zo%b@HXTnh~F6QUG#maDKitORZxEc{Lv^SdeI3SS|NSrHI7fejSavp~_B7u%9v%>iS zCu8y)Kl*OzK0RQJ5qseW zJk!K{sw1EY9A4@k(#xV!@-_-vW_Q@He8n2jg6kEedlgp+lGAY0<)kKankBMwzoikk z&WMrjTy(wUp_oS+pN;hSf>}&sj7Gso$fEwy6A#JWAKY%(LwUM81;c47U9cq1;Llfv zVrQfA=wn3kBNnxk2kV0w$)BKF5)~)xm9rwifc*%GY^j$Oy7f$A$fn*-5WT}qr?z9* z(AMkj%uc8jsvmY%$$n4KD|;g~Mf&U`S_aWI%fKg~M`J`XB<~fnzS2U3>D^d%5gIRW z=jRJ9pBxE-$fUCG({i5_FC(06Zi6YTg7f41$R8LD(36q~Hp|S{17VLfPkBMdMlGHfyg1XFRxw;G9%=Es z)n%op(zN?lz$Nes30#c1WH+c6D>Vi?ok!{2q30hk(feiFXA?Fvhp#yx-;UmI*}saF zr*i>s?atOX-ZQZ7GbA4W>8zS2bdO0}zQGG&OsZk?`N4CBw;`X%tJZ*Wq1DlszXC}y z85t3Wv?A`$1~Vn$*w>l9dv(**HzIJ8IrHP6^=|*kMxumYW7u@CsIfgVQ)Skf8zb@1 z{fma7zON_;Nyd?gsbp@}i&!2JVyNq33g(lIAxuv`EWKHKAne+$_O$rSq+wToBDZ$3 zOmD!^XDw(__i^lU{O|})cS$AAvu@Y4cp(mN6_b3o$YU$G(P%$geQ?l8+Eh6|HT4h% zLSPR@Wk{Q6N@$+jj*5Ej4tlcKKHGNB@LsN|XFtiwIk}=0g-!VIfVs7nrvlQ7@>u)9FKh4x*b^6jbD`u)*pT~$*!UmMmF@ZbNA&Vg1 zo%xN>_$$8;ZV5*0=p@PZDQbe-OFB+avz*=DsaT8BLL$e6VR@D|J%J)A>58A|qY?jm zr@L@^%elClK>zi=gHe=+Ke|3*aU|^l5@aJkB(X>`Q2IfVeUM7GUj^{_Enk$ZpeWylKc@WsWUf_m-48RDYKDSUlBCFq3| zWW1Wd#SHRip3;!I!gC7n>=uig+VBnZ(gXxVnR!h3!) z>)JeDC3z&!_^tp9%Kcn&&SVTQZk@TVKA}gK122!wp~2ZAWJen^DNmC%wDi@ zoPLyPd9WI<=KC-~fEXICw2WY@XkAtk?>%RdiUfpCc8r+#SMvn}t9KlXgk4LxS)-^Yv?vZvj>6ypLc3R|FO6+lKzfsSS?XrQ?TpdJ#&A z9KKxq6n+*>&kAx0%WPwOrwr$#fx%Ny1R7yITSBq7G4H-_J-Nh@Cdrv54B{}XS4Ct9 z*T}?sOhHpFz9;}oh)>$lNcb%c7PVVZESCGC&OcV712V3b$4y`h!b|6U8mAa`L{KA;SY@)et#vuboT`UByTX7Q7L426UCxijfj8loFw)LLih_>JtHXv4So?$^kh8cUKL))>vh@kfK8p&Ja6-K*t zJ69J0S6(bP=nwqr^b1hHt8J&pScL!H1(W2|cRC^W8TKgFAU8|#%XIonB>_11l_0HI z&+RWj;KtX{X<^~WxdT^iYlo?~{Zv1qno0t@V6dWN>5*Dlh8h1luvtOK82#nU@oe4d zJ<&|lshVk-@ma=fr@`~ldSqgDyMywkF~)gwC&~H}1&B1VtZJDZ_rbPpNZ07WPL=iE zDKW&{8Y;LO1OeCIZ&8CnzdWCeS{qy{1VyS& z6_QWu>!+wJv^HNboau&b+-eo z)n~Xk<$w}$=b@G$<#aM{-`h@7v4i&p_q{wlsfH>t%JMYmBJ_HS(>F7>+CZz_N=2`+G+EV2o+9wINQD=GTL#-O;Z6(BcRe7c#8AYF`5K7W+%eiAj! zkwj)SK$Y53^{dSpjB)FGJ3`sRi^!PG?iNV_%zK5@^cdvqq4>{2&W4Tz@{dW4&-b`Y zFhUfvk|a92-3<$;dQ%ZRE?5Z)S*m#rdz*DqK|gYB0B{|2RGfQdK2Xm!B~p6*cs*nz z1N_1d(aY)USAFWh^YV=tQ^#*rz+`-C&tz*kn5ySz<<+n3%JI@}Gm+&thp)vv zvjr1IaG{f>@lN^9j*GL#^5=}2-ML_}S`ry}(0C@r{ebmq{jB<;$#2b8*JQbdbL}0~ zcSW_xg3U2r&#`>AuI%g94&bLQxN;PIh&_L|1LV9tizrv8Nw zyrJF!T~TJ=I~TWj#=KmZhjSTH4W#EGK&B2voV>~%iN_B)GjC&6%9eUcDJ>TrMrP@t z;hl(d(e*PF^MU@`dC%75d!VvQcE2Cx$dDU*38MMDKeij!zV&8rEfwH1ZSx zSTQlw#uQl?RqV?buOC?c#IcKZY2y_KB^17I6NS z`S^2g9aXalQLp_I_(OuJsrc&Egrw&L0(x%!sI!Tpaan}IO*$K^+^>|PQ6F@+yH=oQ zu;aW$3n*KJPFNwiaUEezsb8IamA60c7(0BULrB9nsFKt@BJdTt; zV{)8&J6OtMe~}QP%a%C88V)B1t=-}-=Fh~m-c6mEpUPjm`;q_4qgfi7i`Xqg5-nck zsfzXytLQ?L;_L#^Aj}5S;B!M^j}FE)+ZX4}Px8{b?lxlHP_;lQEX}LoWDhyhiAkp8 zhLyFm#-dQ0dCp+08v#|Df3EvEsh-adhnd#NGM_s8jyaG{(oDBX35#66?999h3;Q0wtD_tP9L_k? z!=CT7U)7h9FVG9v&yioAp8>hXJTtvx?_bSgbai^-2#@oU|5kW zfJl;a-PgZV3hE#>ioFy8q^UEH9yNC9 zmhl^xx)yUwUY?uHs@BxhFp8bdm@QGabJ@w-nFptJL_DoHHGxu=mz01W4jb2vs4k@T?obFi-lbFXB1*1yv-C@?JUr(t%U5twl zHHK{{=%PwC;%P+5eUa!|fJK(Y6Op-NENiQ~)5)fJ+)GDqftDXDH*fyLv_x@6s#E9qI5=rGl<6l))zF-;Fn|7Qgv+l{WJap z#R4u^7Q6=Zh#a+6ygQ#^OVT|MIuN1;K{^DK9Bxh?%|%((J{*9l)^R$qw1w=Kv=JUl zHJjKVCd^x(Y?Px>sX^0%#k_pLd!1dtm4q6F z<~hFOzE`WeOoV6$o1;pkcTfA3@*z!QMzq&^_|T<{(7{%0@4UUJj?XI9BIJel*Mmb$66ZdW7Xwf0?{2+7fq; z=q|9Z=$+?H_ymQY_Xt*-^d8hYRi!<6%`|=9@=6~d`Z!(NI7*4E*X}~TZ2txKsWC<7 z{M=keG_7d0u{pGuIbz(zw#b4w%SCUabmOVyvTM_v(%H8U1dc_Ip#8Sm+AaEydIN$= zc$tDu#@bvuzH+nexycrVD{kG<`o(%Vi!F#YoQTkFndmeFcD88SjzsHcJ1)V@5!S*s z%qTCEyXn_8YWedRZ@Jr(n8FpLbWQ~eWj>#8#4+Bv)tg=c|*t8^C>^kI+_fY6SDrV68}QVyvaBY~p5P zA2?N-?;z3aCIsp(aMBRzX~GX~x9S(8uysnhSv;%Gy}No5 zvZFu*7i3xQ%ZQ}_dB*H=YE0_ zDQImN=tLvJOn(!aQ1im|2r|{R8*;k2=cK@HK*auxS8erTh?o_z+Q#3<9u$E39wXzV zJxH>2)_ze}*(EZs1H94_dWT;3KOGCT&xFY?d0RStw5hiNo84DA?l>8L@l$>CaJTO1 zlArIYb)#2z^+A^v9dWzwPI~E??Ctg7El54D6~(~vZq!7KIEXZ8MDoS+=YTTaNlZWttR^r!wnB?@IVk{kFmQm_n!?K(&?X>LxhG&yGm^yai)8|X;}Lu z*RYw81b@c%E3#+y9f((neLvkbMy1MjfHZrz3G!yj_&Xr9AunjQOTR4}5mLZgYkdXJ zo2`7vljC|-co!Zj1nTtv;fm?m)e^Y({Xt4XHGAoo9PGmQ_8$X~+UAw;ejw)wvDRV}hW<7g===&8UG_}H^^(5dr022JjhsYe#79N()}qcwXyei?)#=XN)nwcr!Qj3K^DO! zJ;))a%lg#gfv-Tz3;ZW;?piQvpx^V|#g<-?81pM*;!a#_lyZL4w{ECfcl9$Ln>5Q_ zJd4V({iim#!0oHA5cX=5>AcaB2@AsZq*0EV(cR>xLABJF{hJQ+8nmVv@N?zMHv?vB zwH73*X<`YK;<=d)^_hFcYf7D^$>UgC@~k!ijfECBkI~P0wox`yOZ*yOw39Rjm@T;eGMk5=N{xM<^K7MQrY`jw z(^O&?OkbcziLw+=H;DTP&U!2wWU_~))$IZv8tz9y>dliaTYSNLiPdLw0_~QEyQJdd zR3Ubx{+$&{?)y$EtvGjKHD@2`0j%Om;^SCcJInoQ;_7WeuBtN}ZE?-oC6PqszqUCw&$n{o9ZT zjR9&q#G+yvp)PR(&)_3T|5i@0(T~ynC_&i4uhosCwE`w;Rm=+_dUr}g(h;2#7)V56{19!V33vbtat07(cD+ z+WAlh2zvkYZ-sE&tT1 zZM5WI*~2Eg;VHKB#i{M-_nnHX4&^J!mHaDS%RzSyKP~^E;nBed$1!uTti60v&Nuyj+g{0a;4i|(|V-LQ_UmH>?Ed3uF74yBO1D_zkMw|TbACfN{; zULO`mS7Of*S0~Vex(Yw;!D`}L^#*=3tsWrVDtm>wfl>c6WC{}5qVQlSKP_d=ZjPTG zPJ6<+hq6~#g%D&inU*hZ>L0$kS+7}bcwCj9ebJRM>SSVbv08gcj2|CkWX3Eko zv9T62LgOd8kqd{;lO&Elf2n%Oh~0~(6Nl9Fd7cEc(1BEH9a?P%4z;(+#V$75 zoSYEn$sCu>c@>IkzIN-IXT$U)BK7T;I$AyI$!F2go-s#nX}IgEM?*%Yh30`5IeTNN zR541y5`~_@zLS_TlpEbmC zUZcUuySLbh)j|5=h>x>Y9sDTkaNIB$}p``*DqH(#4@_r z?5g+bv|Z#wjDX`2_U67(lUVJ1P+;QV3-8{2af_{!I#qm^?W z#8%44d{W=gFn?LMv6xiot?1Oos~NksPS)hwaIf&|U9DxSuT7I0DcjEhRgXhbSPT;D zJj?ZC1@p}-N4hr@mw5GQ+RwPD834mE&JY&P1_}-sR z?Cm6dvCmr&tt{yL%ws||H#aWm1%#ixot3!-^{20A&Otv)B@!pj@#mH6|Kq@yn6f4x zGS}jCtVed*d~0ASGFwx(50Vgg&sQn9U;MX0mSIrWsPcM7yrOq=BIR3lr+mlN+0~U- z42yo24n@IfeZr)}Uw{`LTl4nk#R}F?H2;T|?1F({V>o9cY+MQTN9G2KQXdh{dl$Y+ zywa<`ufsz=;F%)0q?kU9QQxm0IILugeCqTqkJF8?3D+DqU=kEkffBTdvm zZpLVx%u&RZUPA6yzHhANqj^Hni|^Q{k3+)LZU_?n={19!EA!~|^rMH5QbQiz8G+{! zYIhA+JCwN5^TF*Z{2NuDi~@=?G~bu`HW|@S1N`)!T9Zjgnr@95Asjr ziyR;SX~x%X-bs)eiF%aX6ntGLwExf%Z2T8cE;l2AQ4@H^2AF~JalCr}dEgS+^P zMn>6nWkV1*N51b31vwTzp^U~IjpD@CVL&~9#Z9fnqKQ5yH@Aps{%yUy3AthTyMa30 zTlYW_u|-H^(t*xyMflN(}PPp%!h0~40VpW#`Sa8WW&x|YJ21!-J1DZeMtNx}+A0Co@ z_SPwTuM=oawo0oi_0j2B`w)Uwb!m9ScqKhk*7eVCj(?HSuVKdbGoX!x=fWTVM-%_7 zs{8o(>??i)w}hcKPJwwJk3ZzRCqibc&IRt-z5g?w@NXbrq#|C`86+W+aHw`gOofpU z2a8krMKu{3g7F@=Sr+{F@IbQ0y5C@CngI42PBgwxL!|Nut@9J&I_UpBS;Kog&?yXm z^A#};4$VTywF_0b6>k1#9l@>OzAF9@m^OZYI1S!m_#5aOTt&f8_(c8rwK^@-4@H|L z(m&l4H_UB5GR3ShxLrXX{EA9z!pw2)|mVD1_g@4rq` z;4=b}J&OD;{gf}10e=Po|0~80cjdrGI{2dyT^lF$UkCuFzdy*{jTjf>|2v`nL(4zR zf0kl2h__S(a99p;U&AL7`hoqAJsi*{}M+V5eCX3_umsc^+VD;tdYI>9qsTvnu^ z(;}p1>&z~T+iT=m&{5zheb>}yzrF7Sbg_6?MqGMnPjV7-LiD$UE4zkExH3Qb(Z8ox z_$AwH=vk5v#%JoZ!uc@*{J;gWcD7<)alwY!~d## zbp*~P>_CHF{|77ZcYBGCYkga4iTuCP8DG}Xi8+Dw_Mi|=9`v49)Ntybxcwn(F+waKmH;+R?*=mZC-jl8>vp%)d{1j@+BY__>{)=0kf z>y4zN%vVi*+~etK-tTF?qQ3v_91?Hq24 zi;HJBG)(WP$(YF`IfCtTkyl1WQyZij{weIkluC&YO7fjA`YA_L#iyoCFKBsvYZJXn z63}%!(@rfX)Wwoz0DwvLe%VRRLFug8@ZUy^V8TNW2liRFx0kA)% z&E~Ze8Zj9o?H7@!hHah!w!oNs zwNFoz@F<2BpgPONL7m-7i8a%9lmP-C@h?)X2`V0X)AQSEHjd%I{9NnpnwVLT%qKN` zL{9KA2{3SNNp7am$Bx|o1Lm&0A9o~VYQ56-!j;-^xh{FU0R3(5)To8L>IH1Hs%MKv z@tnL^OD*QHD5NZ&ypr$yc^gOclnaX1E%{`T*Qy@0Q~7;S9DQmvU{*`QGLp>CmL?h? zVK|q0Z@B+U;ti3tQ(B=-`6~^U%j_>|cLI89i%il~Y=x}id7DwnV#=Zsk_CepJE1ib z!k>xZfB`{J*=tPy_--<94Xon}8A`bi)&xSl|6J4}n=v9GGO(nz9THYpw&rzvH2arvM?AbMtzf$R;~!`zyc|PYtM^$E}I|CkaZm6$sJr= zoDCvR*kBRVf}wO_D~u1WoY!^wjO)#-B3{!uuB#yyV3pvF{cGHyPZxGP*L?aqt}iVF z-(G6$_q(~o3^tJw0-x?m#f6e(5WW3=e0@MXKkMU0?zFp~TN!YARoI1QewIdVzG3jZ zYNZvrWnlMFC3+U>1$^84^O~+-6++T&-_Q}r7!ateCJ-*-V~iastgm-In%G(u&roE!V&sLnYnuyn(#0?8H7|{~(zj3AQAZr7jCu_KD3c&0EmgY=6xa*k0;=y9?Zskj!2+VL2hWzv%Uiy{vig z$SDVzJdT5Z9Cxs$Hr&Y=Bg>y1=1Knpi5+>LnPs zd&e|_2b8>Stdyr%ANE1Y9ILbo>F%%$#`?-l{U9%%1PZ2TWoyd{`R<;-mX+K+WFNW- ztyY)t#02Rjcs4OF->)e&z@fxu4*J#~$2wFJTi3Sff@=wjR;Wfkr=i5Ky|N!9%wI1- zyc<2&$_JVDb_!LrMeOkF`=wOlxx17hNK045wCm;O*rwcP*+^IO=w#*fcHW;CDpz#L zue9zD4AP8aTWkk#z?W9=#!xca5z}zF(_RJqXqXB4trntVM(o5i4=Y;EU|DOjlCZ|-gALaz!zg+}RahQd z)5sVlzUTI|FChKAJ=aD+w6JY4hPe>HWSLKOelWFpX#lY#F1nk8J%a6eg zou$t>fC6j^5u7~+CApBfcv0`oO5P+(Y1CyPQOzMoCFWU7CY^+7s})Kr2{NNoXh?J!3=Cz62Mo&=Cyh8HdWLwEAUt;N0qS1d zQ&MWN&3f~+lD)aYuxVR)r8>4mr~Kq-;_aM<^7&`kkWz=!-9^NuR>lhh6{=Ch8_U@7 zd9&rDgoqpb2^nwK^3jT!gtgD(@g0pS@iI=e?ICb40MH1rVo@a@QA0DR7QbG*|S1{1J93c~bvSmzyTh{CIf z=0bwAJrf)r)t@-BlM-j>TfT*4^_D4r`6|74(HSFnmq}}jPtfA%t8)yXlWwICG7AA1 z>-0}P%Cl=DxuM2&`^BVaogNZUJ#*n4*j?bwgDjwu?`Fgy9Aqnw!_|<6N>z3~dk+Gd zP-W=brLBCias-$c1%WKz`sdWPw9(pa6Z>oO*suL6ST}o$;u!g8IwWX2QA@&gR=|W{ zo?Bc*v2fxmX}8CAB#F0yn9-sYn8pggTH-r}uydF!PQ> zmWrd#NLMA-M`Zdj&%fm^fGXlVwTjy;1{m|L8e_VTbbk33x!2d#`bsjM77tXHi#u_?X9Lw_ZXUoMIRQMt7axq8p0&nID$WT!C-^3)a=wpZj1k z-qH$t$Wge4x15|+q4w%ZbS}IaAS5GO0~**w2<0?L7W;|iO-6&)XO`MsSj~vGcV)fA z!dmJrH6P8niL>@&7*PhC_Y|CW`5M2Rh0Er`y)GAiIp^dfg3S22`a{S6G$kPMa*N)N z?MIH@{>bGyDMtKjU(pfkS?1MvKxHNT?5u|(CV=I&rvF(WX(teK(T=>LdXui+GD&zF zx^cPHBKhNVe)(coLk;D+Gq?R~MNJ?W?NDTcJ?j{_LKSz9J!rd}+`y)nY&b1!5<9h{ z9nXKQknpc*SJLG*y25YK(dD6O&%YIXJ0sZZLEUW}4frYf^X?|mKa*S~J(otzV8FMj z&1Y58=wO>s1=C1Ti_ry}N9I4j)euTG4G278j+G8v*dNTi5ye-?@Nr_rrTm%6?8s!Nl6_UDnJmu(oRiwCXwxM|8DA=@1}+}uUiATtYJVht z)bi#3R{oulWWoBEVn+@}q4KS_$hP5BRya^qI^6J%lR4cbNqh|C7R(!ohhK&zOa_yx0xGsL45M z&kAnrnA6a$0JIzxGhRInYksIKYNw?A;>>Gsg$DoZ7T#mn;4}wz~%;@)CS+OnwH1 zaYX)j_zFLXPz%67cl>52_l7<5vOuQZKYk0~E)(-m)ohUrJPfJ>4#n91ZXUG;tM+?W zy58Gt6PL`|vTR58$+Or8az(ywBWc1M;kv;G5;EA>E~bPi(c1+Od4PPGzdAS!0?`uv zENWq~I+c-pJ}~LDm}&j7E(mYZsg9HwHJ7N#QO}+50mXtH|9Yd2*g|V$^BLWXmX8k7 z*YdnSwV)`FQQ^Qn{WE4*)4Oziz)S4DH3ey1WFd?=T<2pYM(N2IAw^iZE%jXdTL+D& z+52pJ+g2VbQ@I;uZO_V@Ar6@|lEtJCHxYH%Y5vLz=KMuHq2l&*OCR>bx7vFTza^@# znap4}E2iYbT3l0B8T`vwo_4$H_;*{xLU)+%Y>DT4#p-rlmhXb?N-oR!7z8$qY|<#( z`W5io9)vfbe4%y)vvKXs?Gq@iI)XZzJ)Lr_MIu1Y{BrMun5r$Cg7GfcaShVOdCwSe zEi965-?Sumr7U_5t%s4H4f@<2p{zM2_+I?sj&=6gdqNO(xLEx!a4qaua5Czc8mm9% zrMeDIR4pJ%POQ*h;MCdY<}9A(_MaT$^O`h4cKZ^AXU|olN1VgJ#<^>}Ez_-w8hXuz z#_XBN8)mJCx_zJu!SWNdozf+St2QQmPRibyX6JSrN%=00dR7E82n=#H< z6~XghCBZ`HULO+;OVEszUzG>XmHh=$J^~Ab6)Yw{=eEh=t9^(t!03>pI_yV zc^%Oyg(is~o|`Ga*-1OQ!kh`mAB*9>5dOc%z!qL&rA%2q-?ve@^h}~mOfz_J|I>CK?o7Uf~BlJl7L{vsfpE#Qb@Bb^p&d z(osM2EF74#tey9&^#G`EUdHEjLJ2}8=iSPx1g{^yPb_4-2iRlc_;IA78u*3W!~EJh zB#$PhIzNF~ZnfmQ3W=rdJMlfg_b`t8`W*T`F&CNk7`}JjM-$I$IwW>q{#aI=Vy^!2 z^JrwOk4Jf}>^qm9i!1{JEK!~5wu>-;q0BYm8N*?gW>eGkT$1LZQgad(7a1FU$EUSN zMKAk0jz46D#YgUVox|<3w?J$ zQ6CaLUyoq#tJH;#d8j;iW3*^KU~sAn{k&OkyXNYo!CkITM~Oof5tYRxudHSByfM&d zvL@3%8$c>8=bNa@#J>reQo#9p=}|39yzuKZ%(>3d2q`d66Il68dDi|f1NL>qI$AL#wUK9>4^)y z0&7o-W^VOc;SwAG9u#@3-V!&yN{HN=Bl>w=q=lu#I^m7%nZsL!BCkA@jxeC6On~Dy z50WUh&VayR=ZkKM(1@-PPulhL?eqmo(8ii*LfvIww@6xfZp#11-g`zhxo&I2ilPD{ z3IZwu7K&0WAktAp1f&U}6GVCq0)h~dh*B0Jpdz5OP^2Y5=q-du7m!ZqgeIL3Y62u7 zUp(Jg?>T#~?LO=Ke!V}=$QTR;mgkz+R2uG<;}`Cy7EiBl3mCx5>EABH z7FK8%DJkciYCMImKplw5yFmppai74|GPzO}Xu~2sQ{-UL#y7Asi@D<^DVF)fa_5x6%fP>i_wV*gV*ifrmL99=VJTimL_2oxUxBi3L`}$-Hr)sB~0q5 zLYht43{^KXXrwl=`4u{qQS5_a>6x&N%r#zb`g+XdhL#N5eD~I_lT$nKU}vQkHQ_>s zWO&UTbP{RNYz@$7uxFoD!8G2AXI;>RJWxiY3HD#kr%5{-oETHLyZI&l^|K>eoZ~aE zijL7TopTOfscb2Ca+nt3O^~#5zvAFqBJjRn&D;0+H-%IkgIF`g&SM&~MUsc_>Fl=L z+g{Xfy(YE%lK6HGio9nMF)ze(4Z``(;dz$Ka$>wdd}un!C^j@c*^v*hb1*K2IZ<;(L*%=6d zY|-0u*I=T0B03%`z>9ZrhcZGA$>W%_gyT^*WvYffgVo2V!lVkb3mNNH`Q!GsQuox~ zeBcb6GmbYrx5egga8gsHN$p5u$=QU(uL>`l;;(h{_H_t3e6JLqdL;2-3WbTw{C@UG zG*fhZS+eVqOmEItKZOc;FMKM@_BboXp-X*#BJU1&K_|Bj6w@y&uY2x&Kj%s@em9f} z_7=xiZdz`KW5YSghYEjq@&f!dIsetRKG!9g0Cg%33NV#~0&o{IXZY;Y~rcjAxdDP;$DYVH%0UxI|9f1Ng8 z-^3TS$ta}{8~G)^#pL;nw%zX++b6nrQk2D8pAZ4nPY4JrNXJ7Hq#*Y^#!3Mfo_Eoq zEnh{9WRrLf(1w0MurBN)BkJ7Bx$lqWDV6!wj1v9EZl(9wEA9=EL)#w^<&-n490+w< z5bx`zZvpeEM-Q&uT_DdbgK%Lx5D`(>{wW-~K#goDCj6!@N9ze}Z}Olee%0o5nesam zUG!N#Hf%m51geP&FK$wgvZOVMG~)e`12tNu#FZ}DUq-kbM;>}7ru+Wzn0|^$-n_o5!ZJg|g?y~Oto%nZI{6|*VpnM&Z$YsO8n3jwsqjO6|$9)Q& zeoD|r)s3#iEJu(6ekh=G{H}{0mXQKYKt@Irn^6uzK7F5UFVp49*|~gJ%cIUgp#i(q zq5Z@5!Hx|tLT*OO=xaFZQP!^mQDZJD8|SzBb3#_ePb~$0UV3u&F$wxkuKIJefPUZf z%IJ+`FxJt8xdBz_PTszLDoegGtG6LaYRvJ+8>ka` zFT?1gBDq<7rTk55pi>4Imh{K z!l5szDd$9N$4I8$tSn{8)~T!ixrNi`0IzQ_sDk&)w#rvo0({Y1S|ZEsZKF@<8Ai&d zk38RoT0ZaK{sa4w5;zb#{9~(_CT3)@NsleCY_ux9yCQS>n#JMvP5m9|wa`Lx@_rua zW@+b)yM-UoJCxAXmm49N`1#UJEbja4NI`Zjjal-*VP zY33EDT74G;?b1RE+01KGiTVo-yyk)RLI*zP^UP0kXzX7~49@uh3+vjF(A4dd{Q;|6 z!r%QSzPpP)JM*x3aPql!j;__UK`EIHU2w<>x}5T`a>vlL6Dv7}6#h;a`5`5srLsD1 z&H9GgLx2qif^-gnUcE12=Pak16Lb-|&+vAUM?IXIS}l@Q+xFHqwF?fUUih1XTR z162-6;ZXC1jXK)9wMKTnRqXYyP*DNOJM0nJVm11~*d&ei4d2tdbz{A~jcCYZZ>o0Z>x)Ag+_K;hq6bX4bxhN~y`jM=-mE?=-E3cZCizgFa4}Kf1gB%Z9 zH#le=y_84F{gj))f7j4pt{M5#zw zFh-dtM#)9mu-RuLc;EbmLQ4{eR@%^wj7D9U)LS1WqPMTR)%Hq?`~`d_E3`KXtgAbNDe> zXm257poF}YBt2iAJ)zPz7L6UGPlrC(ogMH`XI?MW~q4F{OZ`9 zd?kBk_}HDmT8OiOjJ3e1-IIoo$6O%hD}U&LAft&CX}s!1N&6x6tM$Oj4wx=FOD!%_+xbom|Ek~_1gG6;)k3k-ktY? z)ukVAF*osx@~MJWfqc{P~`}(r<3Ub4S8L z90_9JvF%Ih`Z-e*NI<{C855*$pW>29*Lc2GR~Vz7Fv|Un4n()HqcGF8A@mcT6&lZh z8OVPFlFuz=A0TpBB0f{%l!I-dkNGGFU(p#7D^e7Q7sus$U-d8SYDqo_0`jnklG*evfX}%AJy^Sa6fND=)!|rukFBX zj`7nw+y?DmjcBoTc>^lj_<=18>xO0^Qs32dzpy7Da%W6#6>YrNRp@Fry`q@@6ATEA zZ-)huK4#HtLa}b$0$d)v;3}zel(%AgJ2!PyrW0B8V=vAH$vfa+{%`eFH@joeM}~}m zRFmcEUFZ24iMP#a1breu#HpG1eb<@O)1w{STrxMU)2%c|n1xZd{3Q@S!TLMKljiI# z_d2es79FTecFibG($k$hw{v@K+h#&ZQsZvjC+*usEq4R@UVl_tgf5SFbP|PNB?q^s z7oXCFggO#;??oz_w^UD7yfga%?O7h6-f(GXTCarBJz$G`Hnf7YxirBV`oa3L8!7;* zbR%YxNf*b9?FwMxQ(^h#AnPgQ(e27@)$@hha@%qT{A!RX$^*fm?aH8-O-L8{F!2cf zc;x})=`)mAMlwG}?-ae7#BWvp%>1*132Vuvfv4}|MRAvkpfJ}#_{{@POBKMIF$)Vb z&!1Jz-HIoK0UTvDJGYrlu)TqlZ2_+0KFVJ*H=t*BcQex=&2FC?d-Nu6nfs0P?Eu2PBtBR{ zm+073+_;|IDo-E6Xuj-ZLHq;Uw$@ectlLc zR)lAhP)2pl9b~-mX%(-ubMA0UzVETZ74d@BcHok|z78I|+1OPBCS3Z}@CkVQ!vPh~ zQpe7sEDp;cFWBZ!EsncyKBBk?K z+ITA3jVwIVjHXi;!k3ilV)juLswn;daIi-!} z#(&49tz9fVHSmfCD1G1iWM-tomWMJbPMohu|NP^MN~wD>2^cS2dsLeJ5!`p}3)PV; z4i3{nvs^{%KD8870EA|4*5t{9>%OFzq>+Xec zxm_PgBk5vOE*YVtkL+WIvz1jag!AAH=}~Ei<;wid?OKva{Gptz%fb=}N$}j3MAoK* zYPndwkY%BN^DQ^7!Fb`j+V(i1q!bYeXNP0*=F1&f6uZkcUeh0CMOt56;VoVsAujf&B-`#8Cq%s;Eoab-bhBf+Qbs0I>l zkzq*y5isOHTJNoOb5Z&T$yHSLZj8>F8_e8>bf@12t_)Tgukx9 zfb2ccBwoETM8GV0zKX%a5}k{^4r+_sm!82tW%({c#Mu-jH3%K~V^^2mVijt7D5nW> z;tM<4wWXeysN2H2t4|>Py-&vXWQ)I5ABt3i>!ftb3}EGs08*F77Lru4g2d z6{qUH8^?kY15rO#Nj%xDvSZ&CnxgvTaH;!w&$y_Wi(c&0UqrD}li{UK-P>7Px?cl6la} zOb-K3zZ{EBQF*y?({U#9_3H;^+t8GfTxIvy$Ya$)H`;1U2H6$;30lW$OO`sR-&2z` zLL&s9+Zb1-8ikBdst+nXCa15I9osCEDLJYysee6PPQm=`cj5akCG=+}ZQf+Al}wA~ z9NA#+u5P--J{1xCV9R&+!qcHkwM{?l(H~9l!(FdOL$Qz!d*wWu2-qVHcqIL;jSIfm zhpaZv9PDs+?&2nwt=w&5LdM*DeDvtpPMWlwq>d5$W<-<(r^9toQCpqyGMl`R%EKST zB8+zKiVDVVZhp|UnAaqYzww8HNd*7iu4c?g>BO?;PVb80Vfq)**v1>;G0U8n;}w++Z~;EO0!(mP@Dc>6HybEb6c!i{{PRx1(ViJRR!b!)_TN z62n6KEt`K#I~?hnSKVqng=j?Qd$wtfzwPkezim#haTAqasENPZEP8Cz-{Q@ZMT^Oi z9l7dX&e!VMyZA(7^ant}%eN8nEE5%Wns?66Et3ZyW3vtbw9NRLGsj&;9MC0Iy^i3r9Ng4CS_i+#?`1>*I zsl8QY+PNkO3$u6P)AvvyQ9(DpcM2P?Jow-QX2rL#;_^)sk0%tljyN=`jaQzijWk;F z&l)YnMh+Hu#KaeU@M6 zQ7M_V+(iYI?=!GT%enE;_*e}zcA<3I0czhpk+k(BQ7G__ND}rFvpbJ{I~MCR0E-J; zsG<+3=fMSLZ=^1K0*fe$(UZL^D{?@`ar&74ZCbAzT|48=NLzl2v%M;qKNB|~1_4Mbp??BX5 zO~(xB*G?_3*iWFe4($())V{Fn(>D*2Un;A+HX$WrcyCf>6rr9`g%7A}4;AeesGvJd z3X>qSL{8n;Z;6~}A`t*#Tf(^Rs4id6!fi|}8C68TLXadsB!C?J zDAuMrCaVv=arZl=eX^3iq$rgfIfRJoV4y1YAjEK0zf-Q#Ffzv^NyR_4fOT^?lLNgd z7HPv6O9#Sk6(*$MT}IVSgJ4@EMSM(QSsRi=*$XC;t}xum+J~&5O$buIi<(3Uc!1mZ zR{SUFm$>y#FhHFS@TPPYxfrGGSGNb`x_FQ|@`bN=*Wp(Vq0XM9uyDNm%3>hcC*v&0 z$cxnz5A9smeRB}JuLgObC01i-``8@S$%KqK>?n4UI_VgBVFMWu}nHc0-$8;YSA#HV(u0UR>(Z0~r zX4+7BZDD?*aO$JvLd_ii_YVf2(G068S@^iQ<+rH-IIxpq0m)f@p67HH)t+t!f1)LC zyw87gpswa4<8c?ka$yRr&F?GpJ`tro_ICfdTxKM3{?dC;IC+SeCyKiqszpiAw)u1N~fn*Ax@?EuZDmneMj^IuOo3 zM2@kWNe^8ijo$#+$W|L5O?H=Msw-)ap=BStzmz($R>XGx<2b*&xmSIsQH}eK1 ztxLX(M!O1gR_DN}L1sQgL=ofpvgsY012Mkj8GbtxtVQUtpHMi9-@!we2a{Ul1&2b0HvPZy;Og*^8d1D1x-p;AOd1E}D?ePka#8S6Qp+kG?rX zeY7IaUUk)cSdZGE!7c+z1gQxgXE$d#P{23zK-u1Xb?e@w(;vd?0owz1bF~;E9 zS`w5%7Up70h@3%IO!7yQb<@c}*xl_FbvcjATZZWBK~ z7}m+jVeBimPS~UPCFDC9hU{|c{5&VF6j#o%c%~DYDSB zh<)j|hEMtOUFO@0Cnd`vS@w%twq#p@@NjuqjYth#O zl~P0hQBz*xELH&|Rebv*Xr*e*hK8zqv9G1{7yCTKggfJW?zV#ngT>~@I{ROC;$Q5~ zR6LjSIa$|}&xn%J$2k9_^!Ueb|EIsEDKJIh0$Tqk)Zc%8*}##*P58iT%zgj#DSslo z{!z#@ZN}~cm>L!T#oGRYLJAJN^lI3WBTMbVpO*YD7WiM^W2|+kxKjJ+%fAD>yJW!e z3!jvJ_R*2QC5ae=+Qo$BB=IjY{^RogUtyLRP-BqtCnlGFEAF2dI|E^c0>y%-`Txe* ze5Iy*T5Yu;{K+Nuzam zLZkm{-2ZjF{&VO4*SP;;y8mn3|Lo}g*K_~H7yWzBJq0WAhxfh!k{O_}+@ps%FFh)H zb%^CPMo#Oi*+68Zkfk@MIK|%aV|8rJEq~x7nbA_HS#i85>bGhp72(l_$u-Mh)iOUT zTucVuW4d%WgN%mpjdP?Pxp?{z%lo5U{!WJ%l5>dNTdz8LiB$5#Lx+!^R{K9c&Sj|0 zpRRQBIePls8>SSE(tODDvB}b|>!rt5ZRbA_;sbV54p-V8`R|wf*Tw(&Tkr?2M;&c# zgbUS;KK6_cVrS~?rZ(zYJ9eSyL%M`ky%U#S9b)?Jk4h;u2Vw!A_tB#d%hf0uYj1%s zu253oCx;Wdu4iR0+t6plUiTxrPE~R6jVFGi?rr7g=l?j^T|*BVOnSK;=S#;#X7h}U z%DTCC<1r@Bi=TybeM}7Jhb!XO7)VwzDeICq$4_O8Fk${_>HoEkM`CKjNuNSPPkc>% z73L`L*bC`lA?L@jlRxEugEIbZzHF&~wO3Q1g25nR=I2+Dm6c_#sTqzN8X5yD`i~wb z!kn$G?O;z|Gp5~*_Uo(8v6vQG+0rR6I##YxK7(@Y9d%2UVg!qpbu$^0!|rvPSb{ws zbO#`h!={2e@8kqU>wZxhX^G-nfESF8TA&wSFH3@IpPPm*mvnY?Y+0w?wS7$(-oO|5 z!D(myOX`38t>uqHw#0MQAAFAlPoH&$`=dsx#+%eD%FX6`{b?oJ%cXTCa?jsPQ?^%q z;AI+Yyd?Rj48%)B_dZ)ZvjPp^3gW#&-iYjT_RBS)klbdCdR# zGA)Vvt)-kWQ#i)>r<#>otCDmIE7$cl=# z9#FgKKeEs2YMH4Fs<=N589j$&?EPcwB?`*hH{Ln631KT9WLpEAaR zSCUA6jIqkKgh_w@W0><_&Xa8DD>gz$F$f-zv-6`|PSbS?V;~`Z<{tQdc=)dEMux_R ziDY@7{Z-|j{erOyb2m36TaOzA_Z)tt=>HtDf843lYL^_Cb60goEcIK@Jd#R7O#D!{ z>?~;!_U!3%wvhYiG26oKIXu7AdtJtUtAaoru7gm5WZkq}A|`ygM{~7rDJxIZE#9w& zQCmR|DDTSU5NWhQY!Ic8ILIbVT`k16gbN0KFDWUZzHmLUu1cMjr7&i4X0Av{!|fR3 z<=o3U1LgGBx?u;A&a{-ktuB&kBGmc!I^X8Gv`Ua{a5{SWk1#iZKkfs*rD!aKIpBev zZD^PNmc>s9d+J~%9cN)_k?F8tjmw2vSXj94AOO(n`CHbNYjq(3k7Wgs^R@tk8jmr* zBn1ydfi=1%TQ|j3(Z3FKoI~Jkblz4MT(vu1(#G+;loA6F_LYFgi~(Sb;X{lm?tVFX zDJ6ET(VCPHIW}I&vJubkGYozobo-be5`icohKaU8&XY8(*}Bb3zyEkLPD+53;92gjsdo1XzNTFncYQ z8%7$$j*f-lD{>Duh2+lqN1{;);?iK$uJS3qgqo+Yjh*xuGGP+L?I~qFadiT@n(wao zd^3b!$*boAA2=-b6oo`qa5Hf!TMj{YZ={)u%hZ-MOmsumN}*_ZpY{yGEU2%q-#rR^ zM_Wf*VrT-6K)A~N+;UM2+%^lk%?7z94d;?f$Po(%7zPbYfOd+pJC+r-(_}WXnjjwH zACAM}cFa{iF`hvVq78Mb(3j3HWsA*~l#JZ*7?nZ$5fbTRN zhKE@X^p-i=5~Ajmo+Nq)Go;Fq;t>xmzmg7P1zXDf*zC9!<6ilrktmce*nXVZ0x^K#%Nwc||zQM?kLK?-Ck zUY?Z;vmT6@pS|n#PF<^orFx>rhy>0LQB$o9Ax{0=BgZ)mcsF*Tnaj2I~K4tzgNi~6=nGJ!jJL{ z|KTKMsj-7C*uGEFjmyt>7ed*1cdHX7U(V_ZJ`0;&0n~e**q+-QFNMo6kEgpla_O9) zB5mj*HG@TkSW{)T^iU_spi?N;AUN#c_(A6D6@0+}bBoO`b%ArWy}g}^F*re)iByfu zpM{)gHFOqO%dxsI7+b($3!(}vj^rth^OHzGm0>5by` z^U5rj9zAWTSXL=+WpH*Bmw3TcHc&R`@&11Oalr>2qG+*kd);85(qa@S^C@XMTu}Q& zU}Iot6{~ctEORuRw(7Kh6tm&MJ>@YvZj^P=CWj2CHr-~iwKYSn?{pum>gxh38%IX1 z%`PM|Jz^eb*#2~&^DQIi+{>l7nsNHh*fYvbWt5m2eS9a+zlU!UNVXj*$=c9hArjF< zd`OyH-7RRr##|fTrZE2<57O0?d%A73Ig(db6%YqtL9(%l?yv;T@;y$z+grDfQ@shW zLpFFt(<{z0D|7IKijA8t+NcTrF92j0c& zJ{R_Uo*!d`JIqWjQA0m0_+o)B7V6Iqtt^mV;A&Ge5bLz$yuP8;c?4KgZ#8ef)_3Vi z-&QNHfGSk!pjV`dwz9I!6(7psWG(wM6+_9ds2JpsONx!P>#ou6?MX~bBzVY`ZKgMd zd+e1sWM7VG951v@THhb(hAOcBA)CC-CSB{iFy7Pm#rzBDi#}|W!wu;%ln?Y6tMKGN z3)hMn0I~>tpjun=LIv+kw%KT<9?8PvfeZSj)`kKX%!m4lMr2(Ngz>6t zz1qs`kXI&IJs{h2ZVyYwgEKpvL7++^eJb26-;vz23lsoTkt>)B%3dDeqZel1ubNPgk-$AD%=R z?de$zS3Wg8c9!>+FdLYA>R^)>t9`d?6R-YIm0pVj3M!cUtRWCv9X1C~8dRp=G*|;J zC!lRZU^_?~O-eaBz#q2R4(q=PXmMB2i4`@11!3`=t}I+0@n zRB`%NWa>i^vtOGy_=&WMVAARYQ!@o=;4&>I%^Z4d(4KdaQgsiMItza|ogH@RpivOG z1^6<0uhE`EGfCdZ(f9KZ5UhNGwC6lw$Xh5-iaihy{XRh(yx4|C?^2v8>kkjFVuM!3 z27Mt=AbT8@L3ubhUnOscb9@Y+wmH6^1*W>mt!^3VLzHekQA0cT-lu2YsA+)oPQ@kI zM1(y%)hgk?z}m>O(s6iluggDkFHY9J`1P{t3)>=#jd$l&%o4~1SH@1wqY-|gjjqt| z+n1H-b8~Zs33{nYOK*UZJw3CkyY(@vZ81u=PI~YS9|KLk&13(N(EPVp>uJ-`b1eZ) z&hj^y{BvHt2C`QNiPx__+Lj2>SMZBO&Rl#PX=+O{ji8XmEGZXVqm%4pWtgKcFS2)> z%`gE7pPJ?y#0>&V3oI)~$P=}NwyJ;#*WuCQcR;6-_LdDh+YTM{l9@ZGWI?MTnrZLyH(N;Y1peb+wvZVddvJyclKU{NP>V!Smy^w6E4x-UaF z&X$op-gOfBqO)w@*?%B4@&r3|Kt@)WTwluKfBnL<(j7ewgBrAYEPEgGg?{n!Umuhm#k6mz90{&So&8xY?3?I2f&cDWvv`W`$)o-)s30 z?DQ3MiBJCA2UT`KE?_HWL)mDK_(+C5;-Z+SQ+KKd>zwC+jJvm^W4EfUsg;96iCudCLy^F&Eq|v+Kq3i%RtOjHcsoL!k_1)ezG|FIP7%tRtr5G!ZUqKND=AIQq4t^afrPLFI6A zzBOMchD+op`x582@T;+ru+7I4?OUiGppS;?N@`{8%9bJ$zCRN>pOSiWmIb^X-0Asw zbAd)3uIzv1bNM%cWZpGKw*A&WMdhm3k>G74uOxVd!#cplWX2?g@GF*lK5_%9@O&mD zul-3uuJckY_}Z=zsky zWH#(Uo_;a}*&J{|dTmjG`ME_{IvQJk5cWwg@SCMot{2J8h8CM!V>Z2`58J=rmnrr* z<~XL)vuZU{GiHR*Cnq$7vSlwXWA{OH(>@5uF&z;HxQV<|-2;iZq-FH&f(6kwu5okv zWnBMBxr9OsuqGM+EL`;&7B?*%#U8Bq6Nm?EAgV%WH*23PuWuCP*1gZ+=D6<^j*F|M zu%P-qpEm5{Gn4ar7zTNp%}~B=7kz_HQN7blODP1Fw;M;GupjO=`dX*_k$sqw9p&Oui2 zZKp2j`~7$RoCRRhOJ9rusL|d`&CI#|*WZ48{L<@$>8*p&$uKwiItL77Lm4&o==++w7e4E^ z$GpcvS!z^Up{#mEvU!sBhFs{I()37L41HsgL2 zJ5P4bFSv=`r@R`z@an{+8>2^MazK>6@Q*;h{W!LGpt5)Hc%&+&nij?Op`;Xj1Q_ai zfu}k>y`JNyl1txL=iFhhU@V=clWpL6tsrCOBVXX&r_cZxue61I;&ubp1+UUEquy?SVQE84nUt5qA&z`5`=0eWk{vz+wrO5jr$U?X{k5 z;}Z2C)h)^>7;mI37xjpu$*)vB!4`VlO!K1agc zUV;|%EU}&`^r|MnhMrHOouDFgoMT1Fe{Fmb>Uv_qAHQce?C}7|Ac}rQ9xojf1do>G zk^Es4InPHkKG_B}MP47_;tERO(Z%hh+r2NWs=Rs;NF?Ti*e5JCOM3JS?;$}|XoJYl zxsm;ym5c?y_D^jlEAID^bx%CDJW}aZ-`L$~y)lrcQH!w*#BlIn`0UA{6-H8`fDPL> zq2pADVKS4YPBD4Q0eX8EEsKMyZ3=C8CyM6(O`yul2vh^?x?X+D%-OaLCvS09p;!NkB$b;wdT4`|05S}$V`ezvNXGh%+XUZr~0 zqWe8aL=&U>lGHGd*F6lsuTx%9a*NJ2`H&KJL!vIIY7%8#Dl+|^HBHvvwZyNU8N>=k zRoQ+7OdwnxWtriZsRIkA?N=Z~MskRLd>NG}7D7amfmm7>8BfHxG%Uzf)Vl2L?S1&d zG>17pKn4oY3t z>^k+4(kzQP{{6hCXM7$Jz5On)56YVsSS|VQF^XP6JxV?M_*TK_ZaE4SyWJ<=>otrR z1fu;4=n*!tYYQtVP=xf1@^8HBt8XV*ZoJz%QP1!k4@=b;g;dF{Z=a{dQUsMOpg2d)o&+3^cDa7 zjEpNI=>$_OwVW`DBiCLi+{KyF-`^7vGbJ!iz`lFmz<|5zKAHYUd~0`BXo<<)^EQQ3w*=m6Dv|@QmNJSN8tMwIrbva| za8;_mU|>rEnoC1)w%(;|T?D^4${^WrB8{$~$d>GdVjKSct3`seMO98F%M?AEhdrg~ z>q_QEHrrMLN}unBmxcW}=mbICF6=Af=ev?tR8N)FVV!cYbJG_$z}zsw!O0(6sJ9a! z$jX?BWs-fJ-2!rX0TeU~e;n8I?`-owdIfvZ%U5A4U5pUH-z@FL?80MpSto&!HL(}n z)#R)}M%@85+NreJl~!0tR+%o1{u1!gtM%MK#P~y2E?F2VOt;Q^?k%NSVb~hvg3d|Z z|161Bktjffa}Vx#GD_E$ANZK6OG?_q8{3%5@sx2%`0ZP_-J_9@2bG$5yWm8=3jEal zoU^(caf5)kxWT(2u2!9Higx?Ha`xWo9GlWLYRW$%z;F7a77^#0Z&Q2v08(FT7n$1Y z@s0Vb5=l4h!cZ241$o6=yi(gN;jz}cj2iM|9|3U*!1pmUds!Wsbaf}-MmKi8T1rZ) zLaWeXzi+N1+qTQ)w`JB!(^o}gQlQVBqia=aPQ4Ot6YJGys-r)g0BiodKXGrU0Ns7Z zy=wAT344-JHe$&!JiR{z+nID9uX+yMi-A$O6kja+HrxqPdn&`WPK}vIx0e5|lBdiF z8kBiz)h{_59p&{{hX6E)UNWlPC?u;MN2E2 z!|r@?e&Kl93rqEVR{{LN{INBVYW!8NN`~B%1phx))PHmDIVP$$taw+n;{KuFGiRLx zW~3jkFScEyp0S&)ut+x z=!Akho*n+0Q_J!~zmfNq+UZ4s9GRdQZboLw5ShUk|Ep~yUDwLsEG?tH4npSVmkq`b zo_&&r%oF>z1xNU&LjSe0znO8SmH10c=2SE&dU6)iTwGGZ|67} z?p<9jw(#G!)fjJATRw4`l--5N&iV7&-wAOe?C1$_YftA_@&D%Y_9 zpWpHB^5F*jP2bx~tpC$HzeXRj1uc)e1-||B+TX3r?$N6v|C1AsYyL-d<}r*eNr9Z0 zdgV81$e#=Szeb%}%(oa$Drjx@>&nAt>0RZ{y;m&DU9)skZ;kZz_2qvp`&j{Oe6+pd zsWd;3r(t4d_R>;{;Fr2$q9|iKb5uOlJO~+H?M4>VCC?OU{A~DdP2T@j6FC%Yc;&sk zc42JCgF}o);iKD@t4u@Zo15=IsXJ+v$POt}lTkbdTu`3%;%+w&zs^0PI*0PlBS6Vo z?>WR=bay$oxTzTgg2B)R$9gMjt7U^%SKZO%I?9i62#uyAT|H!}2n-@psX;4?i$!5! z$FMJjy17+}UKlKcZdy`Yyu%{Va{TtotjR`C=+jc&&o}CU`cvQvF5F ziz%LC7o2DJm)6nN4(b6f4_sIDU3|}RskEdtzc2L1LU)SbT7TB|hJ~diVZ7QWduaM( zU}%l)>@hb_&kDK8m;HP(KdT?khzKZqH@$tEZK3PY$|^@xo8=5uizNa_oFcMt2f48s~(*Cvjpr<^EcTU+KcRA5c%e6b2Aef%udZ zbw^-ISG9E%?L<7Jc&exdJ}WY|61H$*_4zThbqU+Kh7v|6_A~TjMLn?bX{Ao!#}C#o z8^P&D9KHlbSv)~?n9x9~{q4CqiB_}F)AK|P*bR5rA3mctCB<1qKiDz38&HDT>QXfE zku5H{+21)yY2wm1bF)mskiv&Dkb@V|tP!nqKX)(NOWV}gQ%LCLh822XzB!{6So8iR zc}=;(eu-06#y3f^rT)!vNVDg?d%+%z>P1!-`7swBH{t@qVsHuyimSGAWj_ApL|a(b zMgP<|Pv?cUHHC70UEL@Eu+E*qD_2Pvn=E!4D*V!w=gKH(1j^TRZNKvc_gT|JBY8by z(DBI|@)NBpkkRnrU;dnJp_{Vu<41cLx46mfO4s)v+uTKnI|8{4W)H4Vs!d%otZ0 z$1fi^pm$MqnsTe(-0ibR08&==&S>ETI+G&nMv}0s@XaIOOIzo=Qrz|mZTP#4AY;79 z{ec%UXdlpI#RM}oc9k(Ph_(?(S6DzG$b_*4-WA}|1<@)yv9E&=r5Q0>92QSDB(MMY zQo0s-__zeL(2E+Jnp97^dJ#o-TZ~0mHzsh&2omRYlNg|k=5S^hHKKKbm(PO0Aa~c^ zUwwQ%@tID%L~(@Yu%q%IqaLu+Z36@X8*X&f$ZgGcma=$O*U1XJfqos4%I4P4Z!90{rGIZdeN`)!W@fpbv{_;C5;Mc%_l*TjM&JnL{I66xCA zcQ#gFa5!dj8R_{FFPG8W5iea@y)|zU_%Mv)McK2#)e%2NQ~bf0y^}){Q$Nnlgd(ru zW_=eaZ)jR$V0<}#{v5_@`hFQ^UJK{M9I@oGq*B!GJBD&>oOHw&I{;N5fu z_A#^Z>=OD=$6FMfUJCLLV+`-+%iH4`iaRk zEeCSX?+n$D$9|Igdzx$RFqd@1OZteEW=squv>Ay|2xpDqSiCo zb1)xBK*@`jqUrtF`lSFVYNy}jF%4b|(<;GEWPX6-izrvtFF1XVgr)dAo01-g;py{< zg;&iM1Lp+jy?zRMk!)GGv#ZxX4c+$6su^XTT%bP3sfMOwh?#4)fOtafm@%e>Kv`vM zsZ;0XbpGV@K5A)*7`4_a>`#=XR*Ox`f$*zGMt3WE!3k@w&c6JXbM^Zww@>t!RGNzuuUX2w1wX3hTNP& zDAv6O@|(h(>e`3+%?_i)C_4xb`x_m~$o_1-oo>s!WF=mu6&+qiQA6c4$kX-C7nH9} za@y~Tk|)NYhr^!N(dLuS1S^W9dFiUkO8rqacWJ z<3b?-a~?_|3Vy4f`BnYKiG^N%2e0?;OaO`*cZvbP0bvK1qmYVt#J9{x^{YvJDGs+> zYb+`)d?sU@6y41a;;3G>0chYK8&zSN0fWncg4&>Hw*F0OIl>j7J3XY%q5AX97~2B) zwF`E0A5|jn5HEMRJG=cW)QSm-0EJ<_5i?s0g+Pfy;9*};$MLFesVeSwN+>b zsBSNNQg3>rF-FN9VSh>&_kq=bOqf`x#CZdrh&_$1oR>RQP#+qV9ta5D&F*B)$Qj$1 zogiOw&l!4XdcDT372KP_NPB|PfQdHn}fj2=FX)&r67 zn@*iy#Zl}%a=SYX_RpxoQ#C_BCc-SzE0{c#K?rZa9|bpT)WgKz8TV7{b-D31yhJR$ z&brQb1oY&I#Y`i8mxN@@Mg{L~0g&6w!JOhL0M|fAaHSS=Y|zs}>0`McO?2z43$KTe zk>d#`&kkZKt^S!<(FwS$+u&}GRb#T8tlS8LA#zbH4?MqGP*`_s3Ugv8^Pm~7$=t?V z_|~kuvwYO8BB*&&7!4!^yM;&sl`i~)moK0rH-sJo<`aN3i7`J zC5M>T-gu}(JUs_uUTZOv7*Bxh>=|YiTI425`Az4pC54%q#37k%LNTrv)+`4BIKY7q z(FReo6E`~a23RoUh2Ow(0j8IUn&cPW(?1uh^N>h#c)vkwn+2iV;{Rdqy}z2;*X?0N z5CJJlRhpGvrFRs&G=ub8)rJA1_cTMV=4T!KC`!-<3)nReTRsfdbjg<<6;z!l$4*jtCjyjF(uGAlfsi)nV zvYMaYb*QtKb(8`Pw1Y`_>Xj08P&Z~Orn#onT!yP60=ow#UU5yX(q~SUaY!CDP&@C4 z54jZLTaW9|_<=fRl6Eu*jJi3>2^C!&$lXtMC1Pdxn3$HD9Cv0EwAIiED29 zRFc&t;DPF(#mod$jdX0<|kAAKC61i0cW>ArAEBrOD4KMVZUOLPQC`d30yX{Ckpz;mJW? zO;GN`bX>A_5p>@4&*5^fhIOB(%q?%k*~_|E>SXt%sGu{@uAU?XstGs**^gR9IR|H8 zQd8>5wJ#I>lTD-*npBA*#ua_>LWc7zm|>3ZlT{515q@-N&EO7OxxYg#8oyrvX5)9@ z9Dx6Wo~nl>I#J zv3Vi79;49Y7ok7hWO`VJl`7$S2PX#B!xww-Z}!_4+MeNzhA2Ug*Zr7U?du1d zDs=KS$2nwj;QMKd0{0xJ80yy>1eif_e(Q?`IT72$ICLpcdL}OWf)KXvXcC$Cen=U{ zxyiS>gQpSn_j~WgcpsiRE%jlhGRm0!wF~i)P+pT#-IYQfZNU$1E`v5^ap4r zbCkpP1x9A(lNWnac0P8~?4Zm8E*8ZgR0KU|rT->!6s-nxa8R=KtMsd~girW3HHYm3 z$ozy{l}Wz;@-kA)Fv~4CuI0+wl@mifJO-HIkSd$@UbNi~e*cD&zQ&`t99Vi}B1ytl zoq5rtvojzJlK8ATtF%e~3}*9df6-`p&KbW<|9&JrDR8D7Qmjy&vG@qz+_7}SF^y1s* z`V*;20qT$QU2rt&>VE&$cW{*pzJ<-vZXCdnxpUIIEv)MJ?ew^Zn8F2^rZHrK2)A^x zVwf2lad>268J*Q=q$Vi12eQk(?gga$o0Zn{V2Zh`(8?cS3)It01OWz}zAAK&VRD~e zn3Yj}4H)zs20WXEF!zHNdKL9C=TW%H$iUP~fUTalZUe%bdN!FtkaP))V@BMBz`z9z z(sMKW$Wd(&fjOMxB~RhiOm_=)MQ~p>TuIka?wF3i%|%;Qb<@?j>5dwhn&QsQx*0>x z_D|kbk}1Vzb55t^kbZOR!=Myf0{U5dDFq|zqul0RqRVh5{&1ZPK|w*2HtgAkr)Fe* zQ?=BEEyrEc#6(U7?VitCa|cai z3wPHdSsb8}r;SRKelym!o@)bke6AGz^)-M&8h*;2&koTv6^SD;5;;ybnrD9_dj(oE z1u9F>F(jCNBNL{IQ;Oc~J%A9zjL51NfKR{X!e$Ce3$HYvBQxWKZfOl8 zviL8Kl+=3Ry<`g6=qBk`VCnDb6qAN{yHlo!9LZH6=5lI&qGQ!=&D!SG@G@g`di_PQ zzTKP{v)hg5NYnRMyeF4|L@wv!S`nST^a}2<|1j9rPg)njaY|(CM*RlQ&5(ggj?Uh- zBTOFt2D>+!+FV?><6y91h8J1^AU(f>sEbRRJag9q{xa$RN=DVzzq%vqdvqa5n1$iVIdxTcZ=`UJ>vEsqRi&5I}L?#6nX8Q)7p(ot>x%ZV0XRhV5kE5x|XzR zGMv02KcD4QhBxv?rl*|rsthe%z3MBbp(adUP*V(Qdoy&hKU}WZx0||A1N_p}%~T`! z^%@W;pp*6${QVKYvrcI+uTL?PpVr?$n5jY)O~Vl;7*rzqf56{A;muWsA)Pam7kk$j zRDZUULCH;4mPLoB8n;K5pft0mKi}Bd%^cSD@66CID7cztbPbC&Jc{PPmZwr&m=ZY) zqH&$5`=KA(fi5sVN`uTiA>58U^#1$AUM&G&>5%rc@*5$IXUL$7Y4gjJBga|EDhOz8 zr>=(VL`wK+8o-y&!05*{4eLWGRhYKyHWf#MAvD!lc~X>{Ij^4tRj*AX8>vKi1XQmg zk>`v#|0Zq4`2E7|A?P*nzuDlQFnQG3&^_@!%G!Va~Rztj1j z?vekyJOA%t|Btcm|JSio)ut1l_>ZjNMoBR+I4CS3IC$sI9U-L;o5s^k;HH8$ z^Y)Do+XH-ok(m*fw6wHr9HGV>;0Xo+L3>VS>9;@fz%AzQTnWxeSCU3%`dt7C;Yi!* zHLdm5dw&6wgf5cV!(&w2$mQhZP8!4!l@&a*F}WA6#oQsYmy@e8;U5Ic|1suneWWmt$lK81ge?oedlYBM!}%HyKdF&h0;1ht zTZ9W_zBhe6lLamPD+Eh|{Wd5Bj+0yfAKa*gJj?J%O zsmDjUqiYcJh*xq8P7k*)s#N^olvT=C_X?H7aMdQgpV1Azy!sdX4zUd~>HsO{#BlGt z>mjNR)MB=-4l@wH4~;PtHa+Rqz<5-B%oU)mDFhu?gY-eXLJgD3OiWA$hK5NEh3_Mo zA(Kn5lq`*}P14R5%K7~@JtpdH$jPLRjb5I3@aE%HcXe{yuZx2`<$4u%Vd_=rd{Ue8 zDi#qr z*D8QYHx7W(L8ldak|`>#^~~x5B^PD(9zS!0aY6t|&^n3mYY1h@Z!VH5`9nZJWPEKf zpCt9=OT2-NO`e$>M8cgDee34Gh_w) zjb_1rT%1e_$>RtCMozR_>rDqA)X$a*0-OaaDj81dS6w)qJvaovhHhl?AFArio zTKE8&W19muGD@a@gRGS=s>y8&UU1r;Z<~v$wA#L$qG(+vB_lOC43m=Xr42<|t-a{# z?A@8Ps&)MF>h8`h*1eJ8QE;FdYSwi30%j~h)XbY$du=SN_o_`Ya9n?1X+?p~3ix-d zr{$VmxEQN?(i#w)6W$)a`Wxde@5EyBkAB;*#sm?Qo$K&t#?G7RO3H-@$#P(Q<_TT> zHg7c-5N0&G2OUz1u8X~)&mSnX%*Lwj{SsfW00S z4$*s1WCV6h3D)qLWftD?I11NFrjeDTWi86H-nOietg4pt$28lFES-qX*z^i{gWAeT zLA5i`b%7M12Ml2Rd&S|eyk)5gGy&byFXZ1gZc+33IKOI#H1HoSlT{+YDv2|0MK66G`ZmAzSR@O@-tQFi&DH*QMq zXPmUOBtZ_stCi%mE5CB&F!NF$k+Sf5c`#oK+}8F!r$c+GxH8G`&LI6}q5j_@5WgM; zu@L}Z?;vpI1z))MCZu_YL`i3GlEF+$jEZln$(VagFXVXX$r3OEMV3U-cgw-*#RJ8U}~e{Mff6|QPNG>MVJ~IvPu&% z$0-49=KjCM!hjD#OK-%)$Hu0}9xWNHT_FMgxWxFqw|AepT1Gy!^7&7wMVxD1Zf^c~ z^~S4_sez4%4_w{iWgXT;XD}E{SuQtu%?(VhOEEh&d-7Lb^+M+wuWg-Fwf#OI zK?izN-Tk~7rTmTyQ)P|j%|lI29@#W&>l^N8lW6=R`i#IAd?Om$^8UkB73-uJcyxsK zIQkFU{L#v(KBWe_!bRu&!T+|Y*u<}?2a$7;@SmRjUs2%NZD32CoytM`zo-oU6()dJ zY*?Uw%qG#flm6Sc$9yJB;vaXE|L~7cnXQ>wT|KtklVZEjv0~7c`>Yazo_RhRF<1R_ zyQT&R$S)NF7Jri(8l~^J{%C{k%9SgXp5rf&0Y_yf&}zw-D_3YJ>%m0>cO-;w+ScXT zT7RHe{(@1n1*dpP${6bV`*-5g{?vQ_KROfOa2vm|BmxK_m;c`L*@)TGliNtQx#r*S zD*(6immXtJE=Wfw*2MifW}A_BW9Wwt6{dkOTx_JLmxrBgm_0e{fH02Gc0>R>7%~}b zUeyLdS+>XqsoPfBnSz3%p59p`B|#wYA=o^EsNc_5ZQ8ZYN*qyVYv!5ig+ zU3BoQXY@npwEw13rNgiQW@DpbGw5LU*dE6M^T}Y|v(f0Tf`6pLI5~ePo+t5LdhB6V z-KXRPLq7be@Dz6?;oZL_t43|$YDWmP@BeWLr_P2>ZP&!7rD4&jv9S_g^|iHQxYGoK zZlsx6Jw=TU&17#k=#nDT0-vek6Hm|JLi14u1SYl*nX%Hi|1yr`7A&2aB*f7=m{4@p-b zxM1()m4h+*c6CtY%`5xu8DZ&|8ihhXct^m4;@766zK8j$)evZ}OK~xKTG~(OpKj-$ z;bah8L+$idnZf`3Sjd~k2=1U&(VG$yU3oPQg9SSIMt**^!oRe0Qw+@je%DlDY!lCZ zL;5X1r&3p!U2djO0<{;T_G>wn{3I<%cBIVCUMq{@dsCl3e-1+82U$%$Po8aT&9#tR zJQVb&R%cLq1J5emm!2YxeaE3tsLP7=?NrCvdJ>QaQc9fg>%jO~P3?_;o?pFjW>^s< z^F7|B^!-iyRT}}ng&Q(K8OwD6-`1gau8?OCvukUcruiY}oDbhWK zh#BKql>vSItAYT?f>bT6S^}w70N*4Mj`*ci3!2fBiE^pLpu3YKvb}_hgoCDmdPM!Y zN!?OyjZ;^r&7>jZm{42qG2Z#a)Zyw!BT#elIfLuFz?h-V(x6z*hS?z@ApvZwZ+kDd z^ka6`JDO>)3`MUAhcr@8MRW7LVBGTZ^4n=vVWY+3+ZGlZY7ZaQrpX1i4|nhDzHZk` z5pZ7V5w7ZlIvj8q?=Uw5vZ(D8U0vP7Ajg^6C%B*rNCkLl>1jg`87p*DW@yrWG{4U( z^LlP%9#c~I_Q=-UHU_&n6Gn_(!)5G$vIy1~)zj6r;?+u5zgiaVh;<8%!$l_JVxix) z(&g|5HSe?#eh z6&(Oi6rw(@DgWlz(;MSJmO&WuP%fD$w=IU9Pg`qA6{~Ya(g2GPZQBCoH*pr0&wajK z(`v%1s!2PVj`ODbG~4v7r^9pQd9yg!VAa; zlj}WHtQYH#2fBjBjbtF$Z_frLzhv zk*PmPgPhm_eiyr;#oj)@oF{S<%=RaP7k}_(i+KZX7T#@P>ncavT9?V3f$~)xIS578$guAM0N3%N;CQznLtyYd6GXzy9%5S% zhx9o8Y6$OiYA;lmcBP*XOvrZ)?>WYFDDOW%aO!?9)WfwsN*n>Z0t}*#Z08nnrhSL$ zbM#J?>M{vVcH6esh1lVvO{SKzv)Wbk#5Jisoy|8O1L>jq;KiF-6M%8fWn9|H2ZIW` zEP8*ubp&7-u_8Y#TqU^K;AoG#(j&lEF=c42=Y#e`?woKJ!HP)n(SiANG5XS@Mvlcs zq-)JHR7<;s*`-ZJfUG!pqeLnldsNoyW)eJ-^JGRQsIGmGw`d@&b0JTo>iEGk67)pC ze}TBo^}kZ_uO7NRT@@Y7&+Z?X{pgQio)Z88j1xCANNNGwT9J* z9{6uwH97Rk&ePVlu(E5?83nkz(MaDUcIfjT)kbJv3_9SDG5^q zVfJh8mD#rVHYz)Wjc|XWwuX!X$gJ#~%42Zjnj5tZ{hby*gLAkzBP5K)rN-DIcGR_O zTf#P}`7wfuhQ;tB%-c(*cf!H3(EF6jKm`*``(0P9$~gJVBOW7Vs4*wWyG@{`O-h&hfss_LXu8@jl^_= z;8ElhE6dcZa{}y4v5NP1(41-I#e;(v)yv9`@{soCAX-~Zqrq_rX?r{>ey(zK*3Wy6 z30Y=|v_^LBzoSVos3poEx=j2@+c!syU-iG2R$4?GmN?}~Ar~Apr?%T}doQ7IPq+J2 zXg7uO9Vrh8qwHz3+$E#MPXtGNka{cmBg?Pt5Da^!3IW%s14z_Cf8rggKK(V67{cb2 z|9-<+f>f`sr=$FxiIrGoa}Znp8PIiW!15_gDOUC^wntvwQw?AN>uabr?T<RX_6zhXCol|Hcs>O|%MXqiD44!{|T%F14(+y;n2(69Pu-8b{ZwjZew zAS%F70##Jo`z82Q8MN#EIxM&ZfH98dKB$liw2s6KS~Te^bCFwzK-#OP)*F>=!Gd2Y zjTs}ootc0Ymr%BS7MnnAR?4@k6=!x=lK`g)6`U!C005i>$U5@5P% zR*WVLQvqvVi3KHfHM`COol<%TlJK*x@1813!3p-b@n=ZWo+2+p+^jT3YBIMBI!#UO zF(z@rHr{AvLoTmTriT`yY`JT}t!3=-X*5I;`N z$|qwcyGgc8s+TvM^8&m$q>(X3Eg->fde;=|tA{AYA_K?3<-~KWS7$K^g2z2c&pAwN z>w<-cLGddBA1Mka9!DvEWpx7%dOxs;*&U?mbV|u3?mx9**KU(v?x0YA zCjzW?`TK|M=^?L2oxxQ{st72wlh$lXg3^9`qwHIY;FKGR`iI|XtKiw}57Q}PLdD_7 zfqSKourwK)bPkA~Co=SQ!5V6h1Ph6!>@$b@BHc91*-|b+Lt-nKoF~(v+QA)cc1OlC zqD5rvh*7iI%RMVbCMM1er0LDC)58%n*wuc^O2<(V?%%>3BVEfOo60K2h!N+><>jV2 z(|6xup5HA_UapNpBn!NV81Tjgs7wT;(d4KNiXk1KIm2#0-Z)=3D2BnRfO-6(uai^) z*0C6cdp&{c>^k{~?}QZ-Q5 zxF!hqI*0=0094&#v{Hq6=5o4WM2gX1)II?dG-EqWA9($mG5Es#!sJXRG0SuTkliOa zva8Pm7GU=yf|la+vsZM`1t$+(9%1b4cdi%q#z~;YBECZFLDvi+8^2j=tiz4<#U|$J z)wLmu+K{$l8b`+ite)>tNW%Df{jJOe{vlAV^I%x{h~7fDiFXSh%(_<8#!4%B9;?gk;ZyhJCR-(DH8x8_rn^t9odje4IzjZnQ zva3Cwl6;V6`ukKiN<4ICcSk^0CoxY6l9rPV$UGX_(Y z{1=|u_Sj$Cs}KGkFMzAbABzQ^fV3jq#0zz-0ZR|1x#tGTeHf4oy7*&m%nMLctroS6 znq7e64}b%ZSPR!K^~D|6D5rp`-?sqfU3fz-mQ-N9q+g~W8B%+j0A_of+8Ja3hQRxn zzK1g?3bA)PUU-G42+IS+hY=)Qd(LH{Uv_!axP_tvfRb%&5p;p{@0VL@vm!a&5LD3t zE^F94B+U6`B&FD5M z=?1V+oTSS`RIis?H6;q@0p!<*Sp^fi*O!3)jxpSj4&&dTOxn|tb{r|3iHyK{uxT1) zS(W8sKo_8Mh5l7mYBC*F?+z5|17v46C#z;hip^FcDojhvLwnMvE%7t{fh$*Vn^UnS zk2#FeQYdR6Fr=y6q`&WBYGE<3%k9zl4MQs8^aiZi9`J$F*mnTPN|EtQZ31E~z}#g= z^+0?>W@z;HXN!9sZ%1s}Q__{?_2>^AaSz+OIn0z}Q_WCi*g}oWJEPwPcp`NU- zzm~4=CABQB;P6c_q+ZVgd-A=7tjdph54rvHo&6@BM5b!Yt_RpGy;Z&B_*H~Bp1 zTus0~hA=m_(l!Gid?~*he5y?-I{|h}JAA9dB|XWH_UlsUb(pI%4qGMiVEBp?a`~ibIYZ>-#r{BLs0>Y;&&7`dPK+Vv?k^sQY~>z=23byLiu8$sAyv zRLI>2!*JBQBgul&^;Yo+T@!DQ{mP>n7v|SSwh3l=HEtwrbR4sb@@!k)+&frh!&=0n zUjFp8<)O5BsMjQ^uZt5E{)CRSzKOs?VbqYbJ8ykyislxdtK9c!Dgy<5vkU73*wW_= zm^+gXWGcLS@R-ieUUfb?hskTp^!jEC8i8~q$C?*w%e+3-*;3!rX$JK5G5O%RdjYL%eI+_W5-L_nJ@p0fdVp+q8;EmOj69kpelln`JBtgpfy%yL zSL!TCSU=8nDLOCWr}Yj1?RIwYJs?e1+gmnkW7uWrj6e8Ej7lA)_kGnRV=KSmbm`Yh)n91j;o*Dpk&Y9A1VrAAhQ{ z_X@_oFPrsrggc9j^wz!=l2uMgv-FtUXMwDfJjZ1xeC`xIPsRl1K0+f_UIbFE>q6`eFy3 z`PZZH&sSA9RLA@U{Wc>1kv*PJ+>w3G=<>=nF>JB@+;Aw zKDT%ktg$=cK=(3jA&ZiGFLb3KHs3hLzya_jc=UDpV{PXU5`mpMs)u=|U!g!zyGXfW zwNnIKr65I6nT9>UUt_N2QFo7(LnN#4`;SUvmZqo)30LUrd4_!v<7zQ`H^m`;$l~fH z?)~+8rGt&~ed26`RkDZQkI%O&he&`-!kzX?Q2xa4rDC*h!$(dPmlWggu%i-vxPe71 zHP1N3fi-0hn6o}a+;~MV(NInsk026@#z{etutH=Wys{NoG;HBf(Oj!IfIjK24zV)9 zPf?H>V(`+mb5H~PBgSLVv|%gRXueu^mNodr!>pFh^&_K!L)tZ^16J zhe7AkROB1+GC(&oK19j2h8hdj^D!x3Y01GD{Pu4-9GC!J2dGt750Xs(kaoI(Dd@Nq z?Eu9YekEXkT#K-!c{iu|vz5j!X8n;z1`ASPwBfj`p#+e>j{|lfDOM>&YYlia4zS;; z0=UlIl*!!0)kj1pB;e}GeQV$FRf3Q#Fm%<8gFTZEK6zd2#<9MHBCK;CZ=nGB$8g;? z_4s)i8JEN^FR_jyx8ZgRm(e&u{jq`EXUBmwaUG~=@ge_w>J7kQK*y(WeFh!0FF_Td z`;!!Dc6`TT9D5@6kJy!A1K6wrz^%XkdO(rt@_pRC1`t7-NX4M1YFyle@K2nq9aauY3)X~$T?63T9RquqR zzx(#N$ok4ZMwC;`WF{s`!_GgTCdI6+v|Whsg^1BC4oTxjz=#M{Z~YADAx7}f>h*O8 z*tc(65gUQW38sGI`X1p+7Ic$7?=O#pIm-L(eM6D<^&B^(Dxk|$L68o*$#Pq*G0E%q zv4I@UOlB;>+?=YDtt!;eU`#U^ZbE^Nr^?X|{&QihfftITEa3V{I2E^R6S6@Xq-o?yZ+6T{3{4<2 zQ$*fE!3|>zYhZ?C5YXaCiw0M0YoMM4#i`XiO!MZOhhn(ME&thn|@M z!9P-^OL>TZKuSuA%dX)jd=Mx)JjzXLJ;!xFC}`_c8_3r5=`VU$KrUAJR+ti*Sy_?0 z#!oL?%BF2UWT%~mb=rmbZ|`q-pa~B4VFj~xinG_~R6x_a7Q5*B8Mn6ow+wK*8Je29o!5{0V{&zI zA=U37mFo}MBJgbK=3Xft;#gh8io|@YGnVVK2^?`$0ZHY(1Zd!CMW(1u${NvX>e-28 zoG%1$IChXQHh|@wMu=WqQZTrQ%{F%{!P?-`?){i)S~N#Pkd^GeXOFq{j{B^u%GhwX zbV>Wq*l8rX(q(#`KJ8PI1-;6#wr6t7qmTDDUH2Z&W!`JPc))#eV49W6E?Y~L8HN2o zOODFk9C`J>e#Ng+|Dq9qk@o32{WD}trIBGdu|YF0dpZbhfZa8HQ=tHu^wxWIYi=uk zR9qml(-(w?76FoHbX8$inN+k#q9|A`AVb;9uMZ%EOkyzSQA+H8r68X&4UOvVE<9b? zPyby0N1p*WN?g^`AO0vw{_usWN13;`cdbRCZDP2G-glV36lmAMbYU9l9ldzlZ3C&Q zif$}j=m3nuUvd-HuUy!*#_UMi?gK!a&WT1X4UReCf443dt3tZ`)XlbX0d~qd6~Ine zpZ4(kovrG|PLWuCApO!qzzij4-N~eahToe3)Z<_iPEb<8q20G+NI1^s0`v5$#6M!eA30CV2-pXtVnzY6CFdBMp?0{RwGgP&H2k zNTv}~pIfepQB%}*9I%J6_TK()Y*!$93jxu)6OvK?-!^Uh_RFUfQT37LZxu!V;CYAY z0^Z&lOGvHRKTU%EjfiAEL~ZqPLU5%Sko#9sTiMtcHRX_{#K<%O%8{bHymr8{;WFGp zY|<_QklG6h302h9DF&zh65)H@=6L^K*tF+>)`ad%s{=WMSeNMcsb-bzxs-*K6|AqH0C?GbhY#2GCHzMQ$u%*)(AGs8ZDh$MvI{xC zFCHK)EZhUQiP{57TI-IFoV#b80WOlYm6gxOCMO-m@-a#jKnC+B4B0EV{R}aY4Q?8k zx)d*D>g3C~^WsDN$zR>m|15xHgn^X|GzLp=0;x6z2lXv4D=REQ^oW?%ZYUJZr2q;~ z=lRxm${QeSoa!XsPtb$n%IPXd1~;`4CD5;|%*c#S`R*20R1DE^%cou~*}MD~ch5gB zO!WhR9pic_X8IBvh74e?jf{=iovQe6HgR@%EfHN7Q$22-dHuZma@f?x;qfvl z2}ec9bk#^8raoHiK%tH})9o{pjCsX&^wAlphsNV?Pkt_X{Nggd4cV=`x5%!!pTAH? zQu#2*CkchsvVS<9HNFqgPdik|*94^n?kn>b@RxavYG(g@kVbj_d=3Hu;^F1J{aNe> z|Br{_it=}^>h2kNPfsg7q>54s;J>9x_Fw-#U3&afQ}d|f`|CSQR56V+$tF->U$E0Unh}#Ueuc5!w>~H5{yug#pNk5*SLesicGW%I z^wTDoy=vXZ__m43*d7lRlHY3XG}X8ggM2)bnDs4x}5+gmK#eQNYnl{9=p zLXrpci_wI_aNYGldh1t~sH;nc1&XB?1m)z$JubEwNM@TV*cijJd=ez2gf#$DaBHW4 zfCn9@`T5IFo@pg)-!^?_s@PcjqIl)&{EhPOz0T@8@6jGzT4%t?i6`)bsmGg0s`cyn zz&aVnk51E)liydcJ|ahYM7-Jt!b9Ss$6^gjdt-OEy2J=l$w(2pis6U7GnSt$y~ET#fBgZbH2vc)e0cztUoG8s(qBq3CmMPMeAP?UyFP<6c=-mQ^DQcL-$f_rPH{@J(>lba1m(fXR{d5xppdc z8~%($#o`f+9KYO?hw~*d6xN3HBuD;ky_+ImlvXzlw%7`oSea>96kqn!)=l0YjL4>9 zf8zVKMz0h^L(u-*5h(vzaeN$Oy02!y3;p4xUpfrK?b@#ztA#%J`6>EM=@)eSHZt97r|~>3ajnpCOcmz#5;37X z0DT$C0H1t(%hc<~=mFf_WayD0nEbeX3!y!6$s{%W0iO@rNRrn!cNx%jB3!arUNDHwvtw7p55?9#@-5>~3AzU~qUN2!9h{KI*+%2a$KP9adN*ecOXq_NBHbKx z?^Zx&O^55MHy_fiZEWai`1xc-HKNVxX3XoX={b|Lq^0vSCY+xW zGHlZ+7o1At;S~ji1zNGK0u_ zvFnjf0@c+Gtwn=aVQtjPb8v>y__T`G3h?Cht81$pV(?euP154ZS)*2tV$;}3$hXfW zUFvTqB;^(4qa2@u<#Wyng4L~Bp5|$poK7dE+<(Akd!@v{N|pB#Qg_=RbL8eo@+G|= zZ{ED2;c0RvdBm5Gw?RR!;pNE$q}uz|Lqlu3VgAUKq4t@ zlC#3EX`7g&Jvk@TKCHB{scR9rbI;UgjzW$!Y%d46C_7D#*csaf@2us|a{wK}mKx&y zkJvk)T1=)LlO7(AC&Nq#Exnbtb99VVIXw!DxwDSqiV-R?v$!4)=j zyRxaL=}|pj`0rxgxYzCWa=(6>Z%#&_z_C0xOUNpztM=LcEN2V`3qodmBd!F$ zGS_Cs){!P>9gxv9oxYoa2c2Mm@a&}G;~WyX4$S&h7V}ytP?!ew%$mKjlhb{+NB*09!L$$^;YTd4IEzBY$v?d~^~I z$K(~2ZWS0$(#Q8yyF3hkv`E1BZbjaxXs{@yVUL_Mz=o$4jBk{%&uHB^YRT zrDd$fV9?h9gT~h<)G%KO7DQE&GFjL4-^zo>wlOmPKSyHIE-)-EMwG7$9qrp}Gv#__3tfGmftuSZtk++Ttw#k*jSz4AGRU0uX@D^%Lg-_fB_U8Tl8L^I6 z*a@n@V(B(1N>M69!*L^9Ns`>~QsRo2ha z))Fqb67FkN0f+?lXI!vd@S~IjC_<@l@>S1IzqO(5rdrl2(q-pROp`zoRstz3qkM_w zz|z>voJHUp`vm90SK&uh@!X^2i|rq{cGW{l&pN+zL?IATvioC%dHM5@J(Vb>-qN<> z>6q|xm6uMw23!(cBt%*N*OarOrECZ!?HfAl- zs~U%$>vq<4T)dhq=~vGU(m|q4M+@{D9w}X8QxR)_-BF11>R&SFHafrJv&3=ESvd<$ zeF>jZZ)zF%UL24t!ZCsUeol>Sk(l;zT&22s2$7Ev8t5X8e?IaUhVjd!4?{*|ZmRY{ zK2f$`y&x0@mLLbCxOU_P*StAzj1f9DL=m4^gQrGkvvu*))%$ z$>8G(EAj!wj@!pa)hf+I`u0mz{vjxq=G;iz7gZS6i*>jfS$aC3^fnJ}mYn&t-Wf`_ z84dM}{uQ>0v*}e6o^|brxr79XA~zD3eY+9slmg9=1J}VN#oYMio7A;gEX4*O*7G*7#Rgt2flQ}{>mXn~Q3r*zU4+00DV?XDDc^}Tb(Clp*llLEpzPsYL^c;bkHe^dos;;pHM#dm=u!a!Mh=Jj>lH~VdJo* zY46s&bzBf1HxB_tE{dc%!L-KfloShoiAih?%N1ma(Ks9}$**i1ysyKS!@@&I2*O?f*oW$piHK%;+G4`n@cn zM6t5hgn2f?d!5Y33a|xPa_nInEAG9vI!^6u#Jk58DqjQ>yAg1${`AD3tyWZogvqxs z39}W*BF*ipL1!^z2et8`B2%8^%*4JYDUZ15Dir3we!T5RdyS4~rH?!7TJTmA<(ntj zd2S%uFml2VjkJq14Z#@#Ok_CNo3nTtp}K~XR>p@-?~jc@XKD2(_#&8dC|QSk_Yo^w z<1iudxr^cR#}M=Us*?N`FOv`_d25QyB(jk<-1donT>>jU+9o=orz%~$5MyM z6K=pSMR8ZtiCa*H&Y!pD=HQ6&26=xy85u61$_#F#wIrXod@TO%wRoF`)1>7_BmV6Z zlRb@UQ!mCZ^soB##R}e2sclq+Nw+R4?x>NR{3o}&_BGUJT6(S(mWsU#e;^91Cuh@r zFUTd3_9@&bjjw~v7qwgaE@JQ1v?f3ImvdwZNbP1dZB73V_XjkCEWbVR#L*M(nYo&C zv`U?KVQ8qtJ1C5vNXhJjy}zG(PxfV)x}Md3az5!IhZ~lF;P0eze7q;Rcd5d}`a!OS zdlN6gJ50nbDK%M=L`z~JQCXgC#mt26x?tC$7QE4Fiau?s{%?d07LrR`g0lHl2Hf8Z z(+|A4!AN4R6QlZ256}Xr>laL~OaSJ25E`0d>am+#H1vI@Y!ZF>*R^kC3;XF_q6q`C z^c5AS>l_(*sS_jBHdEwYH2X(2^>36T9AEnQe4pBN#Mg(Ho}(7qY8$g?Gd?FjVt!HV z;B4SYhp&3$y&LvbeJ2;{KdGp6Cwo5xn{%}L%zqK*^vL3CR2rd%Q~F%H6T3ZeFx?6h zO_Farbb4Fo6zo33jvBZqW9p0NuadW3-@QF%w2jnsmYXIh4V>vPLM;z?&C%AWG!0Nc zt#G^Saqss zP16I06qe32bb4Z)^K2&yw~g85TdD&)5LC}Bi~S`Cp`4#Mo`Fxh-7y!R>~+ z)F(c8q5+1?#h^l3n#*Tdb+*;RRkoDG^vW%5BJ5>ev7^ykdRSnGbF_Hd^4cOhVPmn4 z1zlCmZFz}`CCx(d^eqqQM?-s_ zhQy;%5KD%xmw)>b((9F~=-bKXvpw+UltJ;mMLg?Xsk^4^sK*KabhO4?BK zGIn}Q!VnoPz1y$o3?Tz>lXiz5(#G-g^5A0Ar}|*{dHw7Kq5W}OKh;ISk*DOKQ}5;81-s;{%ZRz)#nzUO4&RG&$VBC8+ONDm6y+4;|-O8 z%o0NQ9FIjqzJG<^k5bEyMI*-~V{Hmfa_RxVdmJObX5y?jVHu{(q{R*RT|RHU_wId} zECqEpTA9?%Ax~I*UjD+&R!!ZO82U z<&?j!YRWdDo5c= zTz71c#s+O1zB=lS6#ZV0^3Pp+5i60nq3g<8(jG*_&YtH@#?`O5*y~!0^T-RWxM3q( zGwm94#HVDz)-rG^^`M`%Wh~9B$V8`B(w!lPbFoo&kNCtJ*~lWZY6*TnoMhY zb1WKFM}_azhQDB^X3ZJRAJO{Fl9%wR@GkmI5eWLT_Cb=^bGoKm`dOx!#QXHj6-x8t zRF6ySrY7u|I`<9iINYjO%2$h5F^LTA2Iq1|qyhKQNE4?k&H+(!iIOc=8D2fqG-5+4 zx-5HAJ=q|oDmK|4 zfyy9f)`iVhL{EG{9pnT8pJj4!OrFp{pC(ltJGy%6q|ZbW#kRP8^l z;N-it=7hfEEO@bc4(GdCTw)Z_{KIG{D(WI-$Btd+rqG*R1x32X8w`;NSJ|tQ2#o>^ zURQ^SiBO+zNGsJejpV?wbB1c|{sjBT$;VQ$=R`?(FCF4ryVChlI`UCQ!ku{|jHJiC zQv(*e&Bqj@x0z6h+Ou%Wi#)4XD}^tXS;UTPvx=7+&qJ3c^*Cwz+E;J7IDc@33l^q%GY>K#d&a_#MK@ILG;yFHby=Uw=74`2^^?T3e#d zfsZNk)U~N8i?fZM2e8z-625|%+y)}sff?>WYPa#yL5z&$sDApHs)ZP~PV;Ga@*r8% zjFT#H{m9~^@vAG2LVpJ=Qv%pFfw1|sCud_#Wo7&odn-Y~H?CoG-s77OX(`uRe(SC? zI6Ho3GjXLHZOXs;KBQII_+p>2gn7ooxx};1o;PvUmUSE@KXp~986M^wc`wr&saUxT zsqkVJ37oFabWe>0*BvDuSy>&;Wx^j2B^XCB2i#`~c$q-~%7{rZh}(*YGz+o_>|2Ij zw*ha%t?80a`1BkFfK)bGBzjzly1)a_35n*#8{mJg(H82c8VCtUvL%Mim-f$>OtL@ zcP4sev00~Bdf6><-NgK3; z2h)QzxvHI-yrIP62o5>@979a!S%_&~Nk3!0Ki@Q{(4J|No-5(2^XMgMx_WtR2ptZf zUe6W)TF}F;b{Q5wL2-aPG#|~s*~y=f;q8k>l`Ks1!gO|0lSkK5kP*&s=C@`E1! zc2<-c=USne@hYfspFpTK#FVa~cKeCQkPBlAHB$Y8Sn|b1CrD+@V40gFZ1g*>NNG7Cr<%-Z+i^v^4;jRxvUk=Z5wefJMm z!k(>uByzcn8OE9CRl83WFKk4T(;)9t&M>r#epogmyDm5Tr!g1=f}fxC`Y@cM3mg zsL|{Oawp&5Hc=CXDchrC&~g*ZZD1YB@HoI8Wx%Ie6Ok+g{jinCZgXJKl=g2Qmi>kSN&f9DQUBS!GebrIZNuBF{=p{ zYErA@sGCcMVp5KPRTiRm#zUk;z7uEI<~oawuN_5#Laib_56b71VCtmi$f4F$5asXz zk!?u$YXi8SA#^$7iuEvLB^C1r6;WEEXE77!fx`Q=&!tAlp-w3#vpmc3wRG#9>oSLq z*`FOm63ywGj*U;kT&hAjzY<@fr@n2Okxw=a-7Q&6jY~&3eo}MONl@a*KUiC)|BEdP zRJT^&abETk8YN1`-)q!VGEQRKr3r2m?V47uEIM+Zi>%YfTB={Wo|+n`9PH{5RDSu} z9cuO+cdPhj+#vf2i3pb?`X`h)Dee_sXJ^iL__qam^mBX?N;1ByWoSUP)50tiPfIjJn6v2Y^MW7#XLSfV)14&3<|pa)QY8MZfjQRka^J_dIWSl5xoL^ zhv)5hFCBC_BbH4l7%g^?Xui^X@Z}5TmJiehin;-?%&Sl8Jbyj9>r|iqVsw;}y-KMpdTE@Ndw^AslM9#vGsHXMB*&}p#UGzR za36BxVk&}Jpopf&D;W}lt@ntUU7^@{L$o^HUNKEAFiD)smjfNQU;;8hHqHp)%XQGz z%MvFfjaL!ZeOZQ9=4FGjkhY>tjyqNCvIOrLo5cC5v>>RX_kj$R?N{N%e(7}?Ua|M? z#m~WJ=L(M4n}C~K$qs0GJI3ixt04hgA{|$A!P1adY0_>ArP%r9Y@@U9KX_eDS63+x z#&#)q34)tR$Rwt_I^V+9O`b>nKv}gFDfA^|11rZfNKH=%>o=)Cx1sOtVHc@6iv972 z+}c{acIu05D^Sefcr_35!}V-$VWppeOlNpN87rb`QtJxoDBIZ; z!6_ck_}M$+&2KEAqptT(n5wzR5lB3(e)Jg#3|l!(bPhbYq_DU>vMIB-#?CHU=Dpil6=9gvEf{OeY?4iva z&|?mHdWu)lSV=x8?PCFr;TaYUfSkVVaE}Cn7Tm#t`OI+1X#<>RQ{T*JFR?Mul@TT| ziMNtzm`OD8!oYke;Krmyri>b_!I_L7&FGba__==GXHSWQ_>YggCC#$_l&(dg;ci8&^PFJ$jazDWV% z=Lv275}!_Jfau~rz;G5fdZk|!`#z4X^wq1f7iFP0D#kH>!3+w}HrTkpWNZv+DU^r# za*W9}&rfzm;Re1r5&1Y8K_z~HcD4#jkm^Cpiia>VOhMc6c8%|WYj^xBM<&kkH{=~w&3qgNF^l*TA{a>-=d4>@091id>`>t6)n`)_80za2pQ`PPPiq$A zE-lVh{g|yGLH^I!g=(L$c`HPicv)LQ36d51b0671BJOe*o^o;Q3_tdyu_2S47C5TF zBnNDu=R#fFtKn?zYsAnV7k%~54uogakaZ`u)7Hc%_!IHD<4W(!17k`EOQr5~?C%Z% z;p=pmIr>Ue?8|U61RoMxfDz!YLMWxwd~^rge54bbcJU`d2P2Ad$+X*sF^LjMgzQU7 z*=92I-YSAR(nfq9H+9h?j;H$UR*yR3VCN$r&+rE{)b=vN`dbm#<0FNe@vfXR?Gopq zcdq;g+w#2!)+=#zFaoBiQ$~DcQsbGxjgP`kN4Dpzd$-8hIZiX|j<-&+4VL)E`D4Dy zbd^M+9F0kdYoqzEW3ec-Jjcw@$k9r;zE7}v9!NAvq;>c-oL-O){yMkYk26@sbRA%y z{ka|^vsdf3E;C&1UqgA_C4vxp?RE>&@+H6#B zAk+2(%1zbP#)}QzIw;eo*Y^Sl>VE|=9QKb+6*8m$Q6`1bBABtwP{tN`7B}C%Wsdz`m1@Ypls#dTq?Fu+(Ur|S8BREqS>`;g@bqZ1CW!yFgeB1Jh_ z(q%aCHJm~MjTX=v#arAi4hd7T@}uu39YVgKj64;pCewPC=Izp#g$N%xoAIuh8D;OP>X`y$jTUxS5?b-<yd_1qqoLI?t*K>4Xd%U`MJ0$$$cEFRR@w{Lz>-oy|Fr(eGbs(YU8WX z=O{PjGIwoel$!C9lf!wM9YZjps`%98cy4c~fq>UE>&$8P8v>iiix=-pNOiMWQo=+XSH3t}#?HbpuMSg1T*p%% z`4~XlRGYUq_!_CYA}G0t2wmr$;~Y-Tfv#6a(AAz1O&q&DS3-$x=YkFqzL>p0h)aus zpUM+czx?{b8Hhw%mP~FsrRh@Ucj1L{oKS)EnU;5WQ^-3v?<_rF;AsZgsChk|0XO>$ zEMy8WO+1U#<>KjuKM%pw(;K7^?n)uI&(3EvCWz)!@)r^4Zy{6u-zeCu7Bz{?j_`%% z76hB){Y7JbV503*q4#=JJ{&MDM+?Esc{Qyx0EzO6%(A(eVypC>3@-Wh?Ts3icH`^T z-U3C>Q7Nw?4_$Hh7qLc&PfWj%n(8xQo~oQLin&QHZhagQ@wFSeitBA?qwNVeBa8E- z*aQ8lN04GCz*K=Q%pvS^LOQ=QHtF8V3lJ&ZRx3C6Gjtm1?UR@f`5O0|=@Xc~z+&-u z@zQ2`swnKk!x_G^pAX?Jj%bI?js7H<3nut*##8b@mJe2OE|^-W+NqQ%>Y&i=$(^WN zXJ@Ddkc0&{KA(Qss*w>{}FYb0=nm*gRs^Y1-6!z9X zi*K|@)wjRF^{ixLQtknr;Z*YVQ^D4fAJY)VJLA7~Dcc;zS3)*pW`t`cUdqWVd<<#)o z0MD<)NiwNL_VW@+{lFsw?2EED1<^_I1c4oP zue*|^HfKyWyWtA#(&mRM+f+NsiP2;e%mmRd?c=b}StWl>B=gW2NW2IR4AxRWy$cBcJ$reYcI?S1p)&t)7RuxmlaRKJuU@Js#=ecw}(pbQ%YfAonr3=iLoXpX;_q zf412p=#2w-8JHizp^#DEuu7!yHUC*Z0Br4@ta#92H1dNEH1?Dr@E)p<{`s=;Voi6= z^H(Ibz9*I$i1yI9YBWG$^Y(t4>Ap98B0!w|17F-s(1N=FW3!i6pw@oTuS_~HfcuzeJA@poKwcmb{_}T zvNE4eV}=Fl`KAepinM{zle*m?ryyg+5C^0iBtNJmh=d^ST{B9k0*5LJ=rv*`8J%>e%d{#}6uRZFkxAl{7(ehjmC-J1MkHqT=ZvT46I?!!gL~WuB`G$5bZL!T z;EUOBNOIs0y<%y0GOv@xj2kCC<+~S~m0zpRUq3a*ojgUaqo*dYR2iS@`M{uNzu$#O zhE^=%8Oe)E?)&XHv6DYsSdjTb2IinWZ<=)QZS;AL>Ka5?|FC z{`M~pZ1)?H$&t#T$3g(hN;yxp2d@THsLt^9^nzc`7LqJV%~jKjztZt_420o8rcbg9 zQ;2u^z~rR|72NH^%+In;Qh3R{Bxy_@W>a%322trF?1Ga93<58eVvpWd6s(4ORdmAg zFd)651U`y#$ufm~HS59TK}^J~jqJ(#>YMF9^bqO7TU>aIw-UEa=DxSvX}IR~p`*ce z>=g|?Pp}bQirTgG9K%r zxwmvQY7BUk9eDCKOS}kElxb5O?+N5}B_?d~ooIw(%#8iyFpDgrl6MA5@p?!b*Uv_<^ENw5^Z6C6jPWeO7;JseCB zJq%c)`X(Fyn!#E) zSaXk=%HB9JHOiKNeBc`B*_qZUk#*m#g7>YU>3wh0nP6mZy7m?*2{};KFvjdaB4}FV z7g%m_1X|*&FtFBZWt!T;DGwdjP-(GzUVGT2i!^)4(X;TFWW7ag1I;Sxb+N(ou#qsm zxl;XW$8Gqpg1KMR?i9v}5SJ)}(Kk&c2oY_=p}84nfjW5GE6})4Lajk&*$TLwp|X{` zD;lZx>(^7`CA%}1ad}$)yBjQVT1nsU5~_b~Nb<7I@EO@e-r_3N?>#keXq`K%6e;s% zK7Cok)|0aNO3lZ--pxCb&bLI=cwljA!~woPC8^!SQ8sSZHIUNjhmN6sOqMx{!^NAi zXFScS@Ib}oI`U%}Rtv3{3>@Wi_P&yx z$awN9OV?vDf{Kkls6jdK)$vy5#G~hvtEqL~U5_#={roKR@Om2hBZ-H_-YW25mlOi|+lJ|VmP)T#G zt{=YaJ`pMcBe=9i-X0Uw&vKVKGk5XGN9*@2id?L&_nEQbU(d19W!|<4pMGcm;U`Oo zec*i9{D||=E8%q!UTVql1f+3h5Qn@w+{#(o_K$!W=yf1RdY<5~y(RBNLvsUL)Ih1P z?=<`Vb_C=&Aiu!IG`Ezuk=)BN?zMd5h!Rj4_vT4QxcX3N=?A{~ODhs9hY0>&Ruww_ zBBa^F&pg3#=?06Mu)2=VWM*|i;OPsQh+0LY*X8`p3B0gfEm!mNpZihm;nl3vvRswq zsyE}ZDNt5tIyqv3I@mK`+sNTXfl#WF89(XZ|e8WNkuQ2xwPiMc1X{ne~ zk{Q^?UD@uKD^i%KMkAUv2r(dN+4lHIG_+l(duy<0DnKkx0hDug-O`aFx>}>Ow_5oB z&_SB_Zjh#q-|Btp&yEf@xNcqZ_s{*AHCUl!G>OFhZwwFcg`a6 zukZNp@BY`v)=B`upY4E)c@dCH1H-^n@rAlB|rE&%t3<>&Vc`yX6M(FidO zNfonit$wfkKeyoDKL9x^0im(;+$R>%|LlgE*JuF1$C|b4c;X+oV)XE_jIwfE;f}Rh z^k^k_USZ+46)>2v=&h|mYF1WuXR^7bW~}w(8+vTr8o9)A<03TJx0Gmn_|knNzK3+@ zcW(UXZ%E|P-=h0#32Y>Bxx9Zr2}}Hz{9M3tcgpz&+Sg8%HYyOh0PyaTJ|zt{ti{KB z_1=7a1oKA3m+l-}vwnGbne*p7rEn+vUoOCXs474NJePN%R>JXgo-rQB3&#otMMYVlJ5xbX8C?(2e5l2fQLYrn3<33w zv&Kwo{Sx=Vy4jyUUyC@N(wo&u1bc zBE#@$GT{h*0IcG;Is5||V}hybakcF?t5K-y+FF=iz1z!>$_Rlc6fi?=wliv9*31gM zk&zL^)l=+#Oq1=o*%4OS4%)Sea552~&rfiDN^o+tN`q8ENg@7dKrB3bI?VY6cu-)= z@&Xpq+cIK=yeAth%gHTF1Avu|PE=?eEiCd>Keb^H!%P^8XAjZny8m{?9=}HXxJ>>! zULoYS2*!pY5Tx1j2=j`*C#dX!HZjle>dLBgm`Z%V4I(VS07tq{oN4$~T$U>Gt)1gYok zun->x;?+PP+IOe~b=7++#|Hb*V!2(a%+li7a;cc%hdOs`YB>Nrrgnzd=c5763ihhY zYx5xS1T0XUrG1mba$x%H0;*XhVW~eSNyz$Mv8}A4Yz%9aE(BhT+^+oR3H?(s|Cd$( znb89<6SLQSSid!t(I!&*JO6JL4MqJlytx?C+7lk=;8*}l_EO5KjL9*hw2G*Gmw6R=iUT20vv z8PXku)jKQM?2+|Vw2cb=ySh4wkZL_vr1yfD?@H9UlkB~vGOZ{bHY~p(y)=U4x z;XQrKZ7s;h&O1xzGi%xxjH<&Uh_Ma!F<1fR8pqESa*<2I*H6)pv_;NTWi}Y0ZB_|W}HJdf*=-2hQ3miQzvvr;nd>h9A*Gd~*6s}W8O_C~h zMRfw;Hjbt+0jm$AJi3IvN+2`NKWg}YWk59j0M*a@GQs_~YHG$qLn7yrd|j&|OL{rY zjL8s2B@Gf-&n9U?y+rksQ-!dmrlhni#v{q;RIrya887+?Fbl~Ojvif|b%JxH9hu{b zJfDMWdTA;+=v}@X#jT=iO(=D6yFH<;qfWgE;cRPg$(=CeqS_^U64CT`w(S`h_+c5Z z&Xax%-Z;qv232FKq&(ZGqF$q&Ak0uL20Ln8?QMw{0>YeySIaI)nMO?pRwo$p#>*aW zN2+0?fO)}pdFRGY(zPw`YuL21vLXYtN=>pue4i~WO)y8y3&0)C-Y0yR@a31(XD+GK zt{Hi_RXn+QDWLCe;`@$|RHN6Z6y!*}Yk_=)FWJf%Y{Tz!?+g6ZCC&i)l%Tw!dQ11G zplGWhmA)=f{k}EVpmM0GsSec%_8^2Bo(%+SFH0ysEDl`sgA^Al0TjuKl@De;i9)(z zFu7<{@K*qE{;g#3*|=i4Lt5e0Ar$?zDByWTE<`5%u`~3g3npbx8S?6z4qKm>AX(oJ z_6)h;2%4uQ94c<+@83P?D65(}!N9RH7%ll;FVT#?msM8ti)c02+j|x%!~-%?Tu{KL zP@!?4o3V?QYA-KRAm`2Z($m;?jmCLZ@xGM%mlyqmfhU3%zl46TL7^(5{_HH&&Mt%? z4jhkXA~uzgLDeHOhz52WXomL=5EsYbYb5CEsk6{JZHgO*EI;0XPY(@I0i3RH3PQRU z%1&L5o?;9=&=AbTQX$~u<4IV~@LhmGN^?~%)oV$sAnMO5^-2XP#-Xkskzi&GtaY!# z`8{`n^xnRut*WXT9v{!XEpB_|Oy1k*PO3rIblcT^v>B>L4#4%H+lz zWGh#q4*V^my%QCrdxh(}ptgWDhrhmEpaSrWN(x@rwlQOY7j2zSLmm<_zzI$zBJAh&wQ=Y-?_{QN-C49!8n!x} z{;e(F{wxlCf)wWe_EV#%W%C>0SGC{wA(nkJ75;rI+Q^71=TiC4j+rP}J~y;8(fcl)R{l)O- zyTrkOyI(SU#|O*BQu=F04)9|hKLoXtEOGp;cK#PBZDztxFL#Y0`!pH-SHk;0UKeLU z%H0VMc(VL2pYuQ7^xvQUfBK4Vrorv^(N9vSH~_Aup`k-!77-L=l9ZI>6yhQit|m8p zLPkdW;)N=Jj9WC(Tj!P7ePz}v=>~f34ee8Z+oHde zV4$u=NDpjX2(@`2P3bM#=op-p?Rck94?0T2XFH?q#isNc0~3>mimK&0ZS1-}D;J{8 zSy4{IMXiRC6I-0z-`^V@)`!(IIG9ro#}pon`tNJ-?;aOE0r?*vE7)Pf@(II9f#okG zM0A~T4=Rfl@!Ts^tp{>jGB!3v7r@wu1Bmu8bc_c;U#gEWkBr>LLRBzwva-8Z+Ou@u zym%@PL<|Q92k}dsc<9=QZ=q<$US55-EA)S!pa1pk?J43O9)V$DVeKONbTWYZdy4+E z+;z7GS6&9u%CEU^CoC)?EU`QcD^ezqNkV?C!3m_(czSZuo1u%dX`Tjv_c6d(=7Y&G zEiEte^7FYD->9kM3JEZ#q`-e5a>ZP(EybfFhFB;bQBGS+Od~VVQvQagdt;ZNGuF$y`-Q}=t^_TL&WW+ z#yJBuO0YwEli@&H$MMX!1Z!4901#~Kc;KNHRu8xH2+mSd_nt3q3S4!K^GSU;>Rqi5?*V9>$oMm^Vc*B?jFqjTedFWR@yj z%O477@ZH)W($+no=)(Xpi ztP)om8x+1XRn^Pjlw&sse!!~yUOEr}Zve!W=4@#5Du#C8dbGF*4k4HLqhQ%!IuS1k z6(WYRUKk7+W;=E*2N=Imb$I+yUj8TPRMN!Gud%*f*1{idurSU31J%%;guv>#tO(wW zYDS^`nha*K*tF=};$`PkmXixnRLp1(h#+)SBh03cNc&1!Wf`Epo5wj`YUp(k;BbN! zz`*jZpr9bUYI|cNw+u;1UOpOtgKA{OCb*SeV-qsyWb{29;a61bU;8L48?3W~QW&1H zs5+25L!Q}wa~R6r&&cq-#%BKgVWYi4k;D4RRF$TwMOY=yypQ(TCN{(8`=%gZnrXsE zW3&3JSX~-r)}RvoIywN`AE;<xK!~si}?l-Fz&g_t!Yi&Z5CwYL;{LU@Bc_o8gyyn^dR? z;YU5|e5`#baX1Ea&~*aPJ+0ogg_*P$&TYaxK3^!@|Gs^6Kc}WFEl~q@o14>B`veOx1M*_p+dpkDO$sm@dV0NQ z!#b_s-P??XUJ5d@F~z=|l_%~>hP@%{@-Y#c+uCAc9KQLO@w4NOLL*mVbB7@7VOhxf zfflK&_m?pSL-sF02>GZ$`h8<~O8{H-~gS>rjM1ukY z6+UiWBW>dcW2WYk($bvIY*7tzO@y2e)HmV|O}pfd@!QK_XuC8hPYQDjQ2~5!togS1usT z58F)8Os4~%=8OZ=i`m&R)|mWKHgHVM?L+U&8dwpIP(j#U2!j+$*>FN31;_+ zi_?15^8|SWXx9hQT>TU8Jhn!)qiq&2Dds$cSMkQh9m#J1;Nm@Ysls=YM|q z|8T@7(2#)d0`Pb5sMQ0Ufj@rvhA_+j8a=E92&7D?AG1rbJL0TwO%}c5g4+F(WAJct zEH?upUFiqdaRU=UkkZnh1n7H(|H0Znw!2Sz*nL-s1T29X9?6p@v1@DZL5{Wc-}OS& zhcLI7ff-U#Ka%IbzqBp>uSEjIqx~%Bqq7csb$=d1(VM>$-~9)_p%m|a|M9>HsQAuY%qG`MMG9ea`v+2VX%`@`|nxu-bo{C?0^UCYq018}02&-i$&n!H76Q4Pihp}xKs<^FA#;ox zGBi`$ua1FO@Ig4mLxn5#aqQ#}bRu zRG_ivpKeim9gkoC;Tr%k6Kqbq=LN;z99Axul)1&H*rgy=lXmly|L470fF-7|Mm6MGKDK7fPDS!p8fN$no+>E z6riQO{f`5f!utRwhJ5+&_wm1$ubBxCh>-{vx&Ff<0HA(i#2pK9N&k5dM$Tw7G&J3S z{m9D7QU?aX{iw@%otT(t_Rh_%0|T6x$ONEgC4poI@~VY}MO4lFZISRn`|=wD1Gf7H zv09Ilt&kY{R8m@c`d&tO88j zfA61B=HpMuI{?X&UVeq$ylCy&oM#vP;t>V6D!I|oDX#ABPvWBmVk0BcE1<_UYG`Q4UbZk{S(!qF378AyC{^?| zXq_eV>hdzHvQlC4QEw2XH$w$ig;jPv3)=rWNNJL4SsvniZHb%OiVjEs4Q=kN&FVwikt0OzGQg2w|DC+-B3U+Zduj`)8gU`ZyNyzqPr{q_~x*e zU6F%9m(qR37~lhos;uNzn*)LlSt+Riou9F=$%^%3+Eef7`T6VqUb+Eg-%~D9&0Za5 z_J(8qo`HebWqPIVvcZTR)|wqn=5=5yiE}%cbgwAm*araEhhKfr764dOa5E9QLd%QJ zJbkY-ja`8jv29Gd1v7GY;j6xpYzknyx>IJo3p47l0MPHLuBj;ljBd>93Mb=R$&3_@ zjfi-pt6pK}K*M5##BkucH)AoeKmuM*vv}GBuv$hV@p}K8d@Kw50|tyZCY8RW27Fzt zF?GAQmX20*zz8Xj``}H#oev?)h;RKNb&6fQAwPw1nV%sH#*_ttaL1e8S0n=*kulr< zC<#4A22@Jsr;haB8opEq$x=fVgOrTS$$11Tbi8KHM;D+ean`UiER8>#2jKS7cIdZ( zON1dRl}or}Iip=;;U)48)DtC;&Sv zy~ax&(rfG=J3!l7xFex^c1{lR05D0wpdF}Qwfs6a8BtWm1Y_^TJSM_e0On({pe3b5 zv$EI!+D$)s0bb0t0w_9#kB&zUEAHIPUY<*d>A@b@-gAC}^&8P6F27UQKM23P+0rVJ zb9HS_6nqjJDSG*Zo0m6{dl7}~;?te?*(@`9F!~I;o9gnf|CL9vRzUPT-GQI2BpqI? zr{$TKTxCJ?HFc(S{9*!xR!T%%)aT_f`|GF+-$^3drkw4He3)ZiM1eLmuyS|%&AXNO ztSr)hq;jcsw@ZyDfg|@*c8|sO(j^}WH{#&nY`VOrlrcAdHhVQ@SyTR9r$*W`wzFuu z-&2q!eBNuDhmpNxw2~61F{$bL#`kB(6!A(4OLTp5f{)a@oP`@`(=R~wFEt&LB~R%2T(>ab%pDy7%6+>H*Ob~LM^Pf>IPjTuW_ zc#GSkySzxNw{gA~8L~A+Mg8C^D0C`$neu;`YEZc1GgV^YHdtjroje;)3g3REebWv& zbKXr8ASV1FNm!)VPkf?ZX9-#_vaCXBy!oXsUF&gsO{&rN=$?0ZfQHE1cj+J}oU^j- z3hL#2DerBr^bM85?Ul%9WR{qe^^Dy9pEn>%?-lf(UThYBB@JY5VK<)KrK8~=M?ewU zNRL|*eG2Z{#voyntrB8TPY^HETqg|9{0gX93v zIbc>a@@d!GOirNu(^QMMBb5pga&r8nbV#;wBFePKysn$S9ccfIcnmLTqWE}G@4T(4 z&vWh0q3D0pYj|toBl#fs4(%c4ly*B4R~d8+8XJgsF{Wi0({xqWgkAhAoYsbHow(`z zhXbFDZ<6=tv2bpK`oeM#>6oVTh&WkDM1*F3K4J)be7ri{(@a~X&E^>3j4~bWhru{) zf7nb#l~%IHl?o1M6)gH__%+>LlJTPd8}(cG60vmUBh)rf-l+R&%{)E}D?wV+-eR3o zm+g^{*WQknbl$|YXWI@v<`23#vWf~P1s@eTpIgayOn0&s$B(k8w@r+U|eUi^&vHnEf@YXoMSf6Y{F$QLXm;9hH=oIOFy2k2Tf*2tt)fGFeQ%<%mtmqUW}8Uk`1_-h z##1MJ%1!U}j<~V9i6YF?C!(3-ja?DG)~&+s$L^-?yKhxe|A3L0Jp)1&PI0quzwHPR zTTdkMva=5sehufgfsh0qA0M-PL5v#&vi@`piHTdtusNzO(b_Mg4K4>)mp`f{@HL zzIn*+-zkpRD=$ubwD|VdTL0#1e^B0iMG|&@Dq<)O+onJ&qxR zX;Edh0X7q_16FF?!uv@k4~N2r290VPOzrPWHEN}=Iok8SQczHUYkaSu0*$6uds6G3 zo}PWTby8a88Huq~b>0+Rw;Q1(x|De|Eu!nx2 z@LWU*sr*EWGIjzTU3O~SZtISpw(s441%P1)_y=o7|$+`GYYxRnSdK)o!G)N>_3JarSMa|Eczrlx4B!_#1(Oq%DFC0 zO3^$+Gvl7MnJjM~`(V@m)<@mcdzWf_ygf-l!^(-Z_Tf5h6wb0lzU(C>IWyX)y#Pm zkc&0`yitWh-5Y_H`mkYK&mHl}>DgJE8FpeKA~q&(B_*Q(78chyHRxDAi92CI0J}lw zPACq{>TJF2LdftdFz=FRCyngMc&EeFOr3e80G8E~;q9ST%UI?7)tvkbX3wt9P8u#Q zwe&9{PIL>17zydN<8RI#kIZV8&M7`S{~GkYZBm3J0#u`pD^$^NfXX&^=i~>mJ_5rP zrn9p!9li9}Q}}V^RhIO}JWlRE)o`;V-ltWjIWxuMnG@{QjkX0I`&*nZLqg>I_A~hr3Jh5Ax{^O>V8q47 zOs^1m8>pT2%T#0-C(S^HYzErCpF{}lMX5n^il*HevR|+dP4U_V*D)+IJW@~yOLBFA zXx^SjH^;u|eyG{ta*NQjD5R&P%b4brWaC@sZGy8xW*K~)G=B|C4lLM}iD{UaCyuS1 z5Sn1LSH@O0`$uNd3d!WC2QqHia`-#uZ$_d2IXX%(gL4W%K6+AQ{%;*$adPmwZNj$R3Gy2XOKtYc2Bf@h$%>57zk9s(%E`Xf!L-VrF7mnV!GQ zW-Q?{g_u^yRs=nI%8l>Be+T#w>=@f&#Fw+h&AU7G6za!*QPYiWr>kY+XT2wQ3OB2)%}>TL7oowXFPu2!nwpcGwl%B)i9^iR1`j3M)1d8DW^9!4%OHB zoQx4mM`4<=-TGc`2GMbzF70a645)Ad@$TyyM5so!-85~a$mI!guwlL10E0(a4%=}3 z{v7q2uT5?THR0SG6LzOrvp>e$f*#EkhbCF|r&jA~T!bP|Wvr7q@6Xbwc@4Z0b6R6g z>iZ_fZXj5KnOcE#g-PkYVRbm;#LlK-Lj6#CohW~M!*kC^<#bPk0a&Wje&VyBnPlO- z{K6N)fHOMb$A5F*x{kDhVsUW>m&I?TLcI+RC}DCrSKo0&&qF68iF;CnT$K!w zT;<%|YiHcopE^$4)FhT_2D{yQHDAK%w`o%v0Za~)4B2rtu7ThK7T@?P5Jq|XtGJnyL~h&8=g7T6nWOL(>(v=B>-Z-_V^diiCrP>ikWN4+ zefpGVepj^9#>S@6fo}ENe?hfG>lxuj2+3n)wzNY5*sM- zaeLgx@y`2o-xc@iPElcD^-Ch}#@kEw)r}!@4UmWU>DJr67hdj%{%jI^9L6c@4hZ|D zX+EbJI?p_tN-Q}WO+I^lCu;b0tYO$Rraj#HgzxPv!@3Z`*#6CdtMug51Z39D5^BF# zC@#y)i`(DNwpLB*d);HWI_F6N2CxvVp&krHilfy=O_O6=-^)4kQNh@i$ z*AYEV@-_{l7W`Sht8x|OLbndjf@?oj3`k70{{uPBtnf#lN`xVEGEW82+NrG!sO|2N z28oJ_@_tL`?d>hkVs%zo*-+u>XNh15M5`zSaG3oaK0Anc5g6P$qaCLsMLpapYIcuy z@@GQBUE3JSylhpcP%o5lzz8+)uQ}}FQYJHFVbS(I2sNB)EB8FJ)$j0Va!x&OFUq`kpZO-BZ}*m{v}BD+yaPFg%ym7jSJ?n?Vm9;rgzL#Ph(} zG5mb7fC(-g6uYZeI_@v&LryCzbMP)>{x&|&>%JV$r$EjSu*eIbxO@(Kayk`{=5J=_ z6OY7hHV2Q91xxRAHC?KOPgYcyiF(Vsww4A(g|f|(4adl_zZZ^LLmeN1?8Pyjdl9HX8lAA zf(CxvgoP1m(W(rLpB%WyB7z$8gHHW()wWmHOI|>m z0vlW8oe<$L+wiW7pwK!%s?uXKf< zGP+&x>+d8FW^%^IdKrJ1?=39Gqmg2RfWjF&j#joD zB3TGRp?Ss(1Q`3yB!NN$kj(Dr)|&MaZSHM7synoyeMT^u$j zm<=Vm>pwf8$YPpDkF)mj`1cphGRLD&?u&$=aES$+{aZ~DTW`fJXG6Um;;;ayz17Y7 z*ez(W{acnNXZ+)7?<$8#xJ&%+w9w0xO*Td*+gFkVGh5_Epv&hu$@JVt*lb2EW z+F2CdIp*}OGa)`1oGl+WnrJ)MV5On)LuWEZ*3vRR_+i1q__*f74WRKv`rzmyc<^(x zE#Ubo}PX8E(NWcu-#wO52pf7E&v8M0Oj6F@1VHw(AvQUe}iW5ixGfzS6*g< z!3KGGd4trlH|I&0S~P@3N+|_E!)Cxp95DKUl2TYJ++iJve}Qqvt-Z54Zezqu}vts$DF#}gQCJ{;X z=N~_VcjoF9aUyVBjJ`R#)Q@vo{}^4!1$om`1E=`af7rZ3+pF5pAAX~$wRM2wOx>@? z9G!-i>-cH!0iJ(^g*GYBm7G$}v1J3l{D3i^F>1102xvcrKqS7G36x4D8hdinksXN}P|i3~cdOM&@#yECnBuzUjUx$JccJt8hT?R^H#U|L4yB*WWS~ ztXE@=Diq;eK!B-jc9SOUrU>ey^RIrM3DmaYwbv*#s7~y<*3rBrlLcDuH`km~+7?f+ z{`5J;jHDGdoX(@k%)%ZQ5_0!@QNd3!{*srPnqM8O@oe<8G0c4X#Xu))bC@%wSFfPy zYPo6!N-70U9GyQ?0gXhyPyblH5dqDai2EHSnxgd;Fs z_IPk;h;ORtJ;S}N*KVVKpx^(>r2p5y+9SZPFc>NBsrcNAL+FQEo1NA1*JQtvaowGJ zQvYKoc(TZ)CGyz}WV*leG)Qfqk@4<4PY3;sA`v>u$$h{U59Rv7%}o*D&DCBdeEG6D zMN`>!847k@)%hPH?0-`G+Ko5g-DubGDXuk{HWp|_AmX|cdv)a_oWk-ja;Uipoj5%BRtmAFl6BZYO`3e1veRu8>Ro zS@pKEhm)imsHIBLZFEM-7Tc2m5b8NQ>>7p88?K+R?rZK}p}_xAzA9*+iFrOHe`5Zu zk;*WaDrUURY>{I8@4E1U%U4Ny2%$l z*Vp&LOsLVtq7Yj{O@|Ih-dMCifo-QgYdKso+#H?`9-mxz@}#Tl)AudoQiI<8-Y}9M z^saCyxPj(<2FZhm^2%hO+c`x-vqI_y2JEj6r9a}WAIxkP08;KmUXeMGY?Tzke;mPo z-SFS{2Qu4z!*9$TXujG~=4(z{Dyyp#qhH4T!2*;MJ&)w0zsZi;5}~~d0v)cg_yZ(f zE+B4`9~0r@dt#I(ZujLot>dqsECA=vgR^iR;+eC#yZ4KT*^^FLS^1{z$rkxm1+Z7- zYzET<=S^5QZWMcwF)`a$%`9kI0}Ene+|E1=p;UEo_BIXzciS{4HM@tZUg%$caJ_r7 z2^jlS_y4sz{f88dGmWC|et@#FvX))WY&>a8E@ixpX!$~NoLcbjGdx!v`Kd?ohs6H^ zyA^|{$R+CwUrC}tHm#EGyW~jK$ZcpH$87|`xZjhq6xQ|5PT8a+%_k0tb$cuv;>n+q zD~zv=>)w|XmVVw&OZ#Em+#rY+6Whv7==bE}^mK+hcla%Ubm-|`X&SJCy~X0t&Hs+@ zY5ng>W|n1Y&*|#%ODbz)04{c&F}CPs&A57+Omgz1$2XmZ4~F(jN)pd+m84Yutf0cZ z-_VfvRu{FT{zObnhCN6jJ{fQIMi43kh)tUAQ%1=Fbp+^dVZdh!YR7R*GVy?NP)GJS z#-&y5X@T1o&)@0(;Qc9pUgTwR2AQJfz=`?4QsK7rXs^nuYn5Lb`c&wiGQRYo$R7|; zJ1TvrS#F8g-^XM3)T(}vD1>cGh1LYJORagU3@jaethJ4`m-hD2CDAGI8v{cP>O7g~ zuGsxD|G29Ex=D$>rN4O};m{sl+5hKTls9K7D6`3Ruz|sNkM8*aZgi3Ve_7bSueZuG z#MX^H?L7bYrT?+V-`;AqxS6aIt7|H}u^(-}W#4%O_7xPFb0myR;|?d{eKU=*$*$pZfWgZSL| z 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%0AsFjG(GFw_Fj^%Rv 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 t!gkSvn3A%%Yn@@& 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 Jp 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

a5SMGYGQ$QUR6L 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%0ApZGd@MK#yPCo$wp%TqQ*!F8zk#`7a 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

1^xUiy%>R>mIDIEeaPlY#ey@uzPep_ZYAQ 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 Date: Tue, 31 Mar 2026 14:40:47 -0300 Subject: [PATCH 024/562] fix: resolve TS errors and DB schema drift from Doppler migration --- .../db/schemas/external-migration-configs.ts | 9 ++-- backend/src/db/schemas/index.ts | 2 +- .../routes/v3/external-migration-router.ts | 6 +-- .../vault-external-migration-config-dal.ts | 47 ++++++++++--------- .../types/doppler-connection.ts | 4 +- 5 files changed, 35 insertions(+), 33 deletions(-) diff --git a/backend/src/db/schemas/external-migration-configs.ts b/backend/src/db/schemas/external-migration-configs.ts index 39e0bbb791e..bf46dc8f758 100644 --- a/backend/src/db/schemas/external-migration-configs.ts +++ b/backend/src/db/schemas/external-migration-configs.ts @@ -12,16 +12,13 @@ export const ExternalMigrationConfigsSchema = z.object({ orgId: z.string().uuid(), namespace: z.string().nullable().optional(), connectionId: z.string().uuid().nullable().optional(), - provider: z.string(), createdAt: z.date(), - updatedAt: z.date() + updatedAt: z.date(), + provider: z.string().default("vault") }); export type TExternalMigrationConfigs = z.infer; -export type TExternalMigrationConfigsInsert = Omit< - z.input, - TImmutableDBKeys ->; +export type TExternalMigrationConfigsInsert = Omit, TImmutableDBKeys>; export type TExternalMigrationConfigsUpdate = Partial< Omit, TImmutableDBKeys> >; diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 6d5f17b9941..bbd99db6808 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -45,6 +45,7 @@ export * from "./dynamic-secrets"; export * from "./external-certificate-authorities"; export * from "./external-group-org-role-mappings"; export * from "./external-kms"; +export * from "./external-migration-configs"; export * from "./folder-checkpoint-resources"; export * from "./folder-checkpoints"; export * from "./folder-commit-changes"; @@ -234,7 +235,6 @@ export * from "./user-aliases"; export * from "./user-encryption-keys"; export * from "./user-group-membership"; export * from "./users"; -export * from "./external-migration-configs"; export * from "./vault-external-migration-configs"; export * from "./webauthn-credentials"; export * from "./webhooks"; diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index 3fd870be961..1bd2c27590d 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -209,7 +209,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider config: z.object({ id: z.string(), orgId: z.string(), - namespace: z.string(), + namespace: z.string().nullable().optional(), connectionId: z.string().nullable().optional(), createdAt: z.date(), updatedAt: z.date() @@ -245,7 +245,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider config: z.object({ id: z.string(), orgId: z.string(), - namespace: z.string(), + namespace: z.string().nullable().optional(), connectionId: z.string().nullable().optional(), createdAt: z.date(), updatedAt: z.date() @@ -274,7 +274,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider operationId: "getVaultNamespacesV3", response: { 200: z.object({ - namespaces: z.array(z.object({ id: z.string(), name: z.string() })) + namespaces: z.array(z.object({ id: z.string().nullish(), name: z.string().nullish() })) }) } }, diff --git a/backend/src/services/external-migration/vault-external-migration-config-dal.ts b/backend/src/services/external-migration/vault-external-migration-config-dal.ts index b92dfc106ec..6acf11b6621 100644 --- a/backend/src/services/external-migration/vault-external-migration-config-dal.ts +++ b/backend/src/services/external-migration/vault-external-migration-config-dal.ts @@ -1,13 +1,13 @@ import { Knex } from "knex"; import { TDbClient } from "@app/db"; -import { TableName } from "@app/db/schemas"; +import { TableName, TExternalMigrationConfigs } from "@app/db/schemas"; import { DatabaseError } from "@app/lib/errors"; import { buildFindFilter, ormify, prependTableNameToFindFilter, selectAllTableCols } from "@app/lib/knex"; export type TVaultExternalMigrationConfigDALFactory = ReturnType; -const buildConnectionJoin = (qb: ReturnType, db: TDbClient) => +const buildConnectionJoin = (qb: Knex.QueryBuilder, db: TDbClient) => qb .leftJoin(TableName.AppConnection, `${TableName.AppConnection}.id`, `${TableName.ExternalMigrationConfig}.connectionId`) .select(selectAllTableCols(TableName.ExternalMigrationConfig)) @@ -27,26 +27,29 @@ const buildConnectionJoin = (qb: ReturnType, db: TDbCl db.ref("updatedAt").withSchema(TableName.AppConnection).as("appConnectionUpdatedAt") ); -const mapResultToConnection = (result: Record) => ({ - ...result, - connection: result.appConnectionId - ? { - id: result.appConnectionId, - name: result.appConnectionName, - app: result.appConnectionApp, - encryptedCredentials: result.appConnectionEncryptedCredentials, - orgId: result.appConnectionOrgId, - method: result.appConnectionMethod, - description: result.appConnectionDescription, - version: result.appConnectionVersion, - gatewayId: result.appConnectionGatewayId, - projectId: result.appConnectionProjectId, - createdAt: result.appConnectionCreatedAt, - updatedAt: result.appConnectionUpdatedAt, - isAutoRotationEnabled: result.appConnectionIsAutoRotationEnabled - } - : undefined -}); +const mapResultToConnection = (raw: Record) => { + const result = raw as TExternalMigrationConfigs & Record; + return { + ...result, + connection: raw.appConnectionId + ? { + id: raw.appConnectionId as string, + name: raw.appConnectionName as string, + app: raw.appConnectionApp, + encryptedCredentials: raw.appConnectionEncryptedCredentials as Buffer, + orgId: raw.appConnectionOrgId as string, + method: raw.appConnectionMethod, + description: raw.appConnectionDescription, + version: raw.appConnectionVersion, + gatewayId: raw.appConnectionGatewayId, + projectId: raw.appConnectionProjectId, + createdAt: raw.appConnectionCreatedAt as Date, + updatedAt: raw.appConnectionUpdatedAt as Date, + isAutoRotationEnabled: raw.appConnectionIsAutoRotationEnabled as boolean + } + : undefined + }; +}; export const vaultExternalMigrationConfigDALFactory = (db: TDbClient) => { const orm = ormify(db, TableName.ExternalMigrationConfig); diff --git a/frontend/src/hooks/api/appConnections/types/doppler-connection.ts b/frontend/src/hooks/api/appConnections/types/doppler-connection.ts index 539bfd731bf..97a91b23a9f 100644 --- a/frontend/src/hooks/api/appConnections/types/doppler-connection.ts +++ b/frontend/src/hooks/api/appConnections/types/doppler-connection.ts @@ -7,5 +7,7 @@ export enum DopplerConnectionMethod { export type TDopplerConnection = TRootAppConnection & { app: AppConnection.Doppler } & { method: DopplerConnectionMethod.ApiToken; - credentials: Record; // sanitized — no credentials returned + credentials: { + apiToken: string; + }; }; From b25b51c859665baabd4b1be866d7080458ac48da Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Tue, 31 Mar 2026 14:43:02 -0300 Subject: [PATCH 025/562] chore: remove stale VaultExternalMigrationConfig knex type after table rename --- backend/src/@types/knex.d.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index acb399bbf91..97e6b86d5fc 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -626,9 +626,6 @@ import { TExternalMigrationConfigs, TExternalMigrationConfigsInsert, TExternalMigrationConfigsUpdate, - TVaultExternalMigrationConfigs, - TVaultExternalMigrationConfigsInsert, - TVaultExternalMigrationConfigsUpdate, TWebauthnCredentials, TWebauthnCredentialsInsert, TWebauthnCredentialsUpdate, @@ -1635,11 +1632,6 @@ declare module "knex/types/tables" { TExternalMigrationConfigsInsert, TExternalMigrationConfigsUpdate >; - [TableName.VaultExternalMigrationConfig]: KnexOriginal.CompositeTableType< - TVaultExternalMigrationConfigs, - TVaultExternalMigrationConfigsInsert, - TVaultExternalMigrationConfigsUpdate - >; [TableName.WebAuthnCredential]: KnexOriginal.CompositeTableType< TWebauthnCredentials, TWebauthnCredentialsInsert, From 7b3f71c89138b2d965e3d4a616ce7fe633b1e5bd Mon Sep 17 00:00:00 2001 From: Igor Correa Date: Tue, 31 Mar 2026 15:20:51 -0300 Subject: [PATCH 026/562] fix: resolve frontend lint errors and backend TS schema mismatches --- .../routes/v3/external-migration-router.ts | 4 +- .../src/hooks/api/migration/mutations.tsx | 6 +- .../ExternalMigrationsTab.tsx | 8 +- .../components/DopplerConfigModal.tsx | 6 +- .../components/DopplerImportModal.tsx | 13 +- .../components/GenericDropzone.tsx | 2 +- .../components/InPlatformMigrationSection.tsx | 254 ++++++++++-------- .../MigrationConfigDeleteDialog.tsx | 8 +- ...SelectInPlatformMigrationProviderModal.tsx | 4 +- .../components/VaultNamespaceConfigModal.tsx | 5 +- .../components/VaultPlatformModal.tsx | 20 +- .../ActionBar/DopplerSecretImportModal.tsx | 12 +- 12 files changed, 180 insertions(+), 162 deletions(-) diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index 1bd2c27590d..0d960139a19 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -134,7 +134,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider .object({ id: z.string(), orgId: z.string(), - namespace: z.string(), + namespace: z.string().nullable().optional(), connectionId: z.string().nullish(), createdAt: z.date(), updatedAt: z.date() @@ -170,7 +170,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider config: z.object({ id: z.string(), orgId: z.string(), - namespace: z.string(), + namespace: z.string().nullable().optional(), connectionId: z.string().nullable().optional(), createdAt: z.date(), updatedAt: z.date() diff --git a/frontend/src/hooks/api/migration/mutations.tsx b/frontend/src/hooks/api/migration/mutations.tsx index 0fd14bfde5f..84a953fcca7 100644 --- a/frontend/src/hooks/api/migration/mutations.tsx +++ b/frontend/src/hooks/api/migration/mutations.tsx @@ -192,11 +192,7 @@ export const useCreateDopplerExternalMigrationConfig = () => { export const useUpdateDopplerExternalMigrationConfig = () => { const queryClient = useQueryClient(); - return useMutation< - TDopplerExternalMigrationConfig, - Error, - { id: string; connectionId: string } - >({ + return useMutation({ mutationFn: async ({ id, connectionId }) => { const { data } = await apiRequest.put<{ config: TDopplerExternalMigrationConfig }>( `/api/v3/external-migration/doppler/configs/${id}`, diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx index 013cc494468..422bb9014cc 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx @@ -28,8 +28,8 @@ export const ExternalMigrationsTab = () => {

Connect HashiCorp Vault or{" "} Doppler to enable migration features across - Infisical: import KV secrets (and from Vault, policies, Kubernetes-related resources, and - more) directly from the UI. + Infisical: import KV secrets (and from Vault, policies, Kubernetes-related resources, + and more) directly from the UI.

8e`z*r4~- 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­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±B5Lt=f-Iuw+Q2lGYk<)1n@TQ?cQ&di5 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 WqKJw7skwfrEdDFr-%|T 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 z

@@ -50,7 +50,9 @@ export const ExternalMigrationsTab = () => {

Import from external source

-

Import data from another platform to Infisical.

+

+ Import data from another platform to Infisical. +

- diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx index b6f9b47bda3..b7cc470ad31 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/GenericDropzone.tsx @@ -82,7 +82,7 @@ export const GenericDropzone = forwardRef( onDragOver={handleDrag} onDrop={handleDrop} className={twMerge( - "relative mx-0.5 mt-4 mb-4 flex cursor-pointer items-center justify-center rounded-md border border-dashed border-border bg-container/40 px-2 py-4 text-sm text-muted opacity-80 outline-none duration-200 hover:border-accent/30 hover:opacity-100", + "relative mx-0.5 mt-4 mb-4 flex cursor-pointer items-center justify-center rounded-md border border-dashed border-border bg-container/40 px-2 py-4 text-sm text-muted opacity-80 duration-200 outline-none hover:border-accent/30 hover:opacity-100", isDragActive && "opacity-100", !isSmaller && "mx-auto w-full max-w-3xl flex-col space-y-4 py-20" )} diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx index fd1cd00173a..6e089440648 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from "react"; -import { Download, Edit, MoreVertical, Plus, Trash2 } from "lucide-react"; import { Link } from "@tanstack/react-router"; +import { Download, Edit, MoreVertical, Plus, Trash2 } from "lucide-react"; import { createNotification } from "@app/components/notifications"; import { @@ -29,8 +29,8 @@ import { getInPlatformMigrationProviderMeta, TInPlatformMigrationApp } from "@app/helpers/externalMigrationInPlatform"; -import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { AppConnection } from "@app/hooks/api/appConnections/enums"; +import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { useDeleteDopplerExternalMigrationConfig, useDeleteVaultExternalMigrationConfig, @@ -58,7 +58,9 @@ export const InPlatformMigrationSection = () => { const [isProviderPickerOpen, setIsProviderPickerOpen] = useState(false); const [vaultModalOpen, setVaultModalOpen] = useState(false); - const [vaultEditConfig, setVaultEditConfig] = useState(); + const [vaultEditConfig, setVaultEditConfig] = useState< + TVaultExternalMigrationConfig | undefined + >(); const [dopplerConfigModalOpen, setDopplerConfigModalOpen] = useState(false); const [dopplerEditConfig, setDopplerEditConfig] = useState< @@ -66,17 +68,19 @@ export const InPlatformMigrationSection = () => { >(); const [dopplerImportModalOpen, setDopplerImportModalOpen] = useState(false); - const [dopplerImportConfig, setDopplerImportConfig] = useState( - null - ); + const [dopplerImportConfig, setDopplerImportConfig] = + useState(null); const [vaultDeleteOpen, setVaultDeleteOpen] = useState(false); const [vaultToDelete, setVaultToDelete] = useState(null); const [dopplerDeleteOpen, setDopplerDeleteOpen] = useState(false); - const [dopplerToDelete, setDopplerToDelete] = useState(null); + const [dopplerToDelete, setDopplerToDelete] = useState( + null + ); - const { data: vaultConfigs = [], isPending: isVaultLoading } = useGetVaultExternalMigrationConfigs(); + const { data: vaultConfigs = [], isPending: isVaultLoading } = + useGetVaultExternalMigrationConfigs(); const { data: dopplerConfigs = [], isPending: isDopplerLoading } = useGetDopplerExternalMigrationConfigs(); @@ -138,22 +142,9 @@ export const InPlatformMigrationSection = () => { setDopplerToDelete(null); }; - return ( -
-
-

Configurations

- -
- - {isLoading ? ( + const renderTable = () => { + if (isLoading) { + return ( @@ -182,7 +173,10 @@ export const InPlatformMigrationSection = () => { ))} - ) : mergedRows.length === 0 ? ( + ); + } + if (mergedRows.length === 0) { + return ( @@ -194,105 +188,125 @@ export const InPlatformMigrationSection = () => { - ) : ( - - - - Platform - Namespace - Connection - - - - - {mergedRows.map((row) => { - const app = providerApp(row); - const { name, imageFileName } = getInPlatformMigrationProviderMeta(app); + ); + } + return ( + + + + Platform + Namespace + Connection + + + + + {mergedRows.map((row) => { + const app = providerApp(row); + const { name, imageFileName } = getInPlatformMigrationProviderMeta(app); - return ( - - -
-
- -
- {name} + return ( + + +
+
+
- - - {row.kind === "vault" ? row.config.namespace : "—"} - - {getConnectionName(row.config.connectionId)} - - - - - - - - - {row.kind === "doppler" && ( - { - setDopplerImportConfig(row.config); - setDopplerImportModalOpen(true); - }} - > - - Import secrets - - )} - { - if (row.kind === "vault") { - setVaultEditConfig(row.config); - setVaultModalOpen(true); - } else { - setDopplerEditConfig(row.config); - setDopplerConfigModalOpen(true); - } - }} - > - - Edit - + {name} +
+
+ + {row.kind === "vault" ? row.config.namespace : "—"} + + {getConnectionName(row.config.connectionId)} + + + + + + + + + {row.kind === "doppler" && ( { - if (row.kind === "vault") { - setVaultToDelete(row.config); - setVaultDeleteOpen(true); - } else { - setDopplerToDelete(row.config); - setDopplerDeleteOpen(true); - } + setDopplerImportConfig(row.config); + setDopplerImportModalOpen(true); }} > - - Delete + + Import secrets - - - -
- ); - })} - - - )} + )} + { + if (row.kind === "vault") { + setVaultEditConfig(row.config); + setVaultModalOpen(true); + } else { + setDopplerEditConfig(row.config); + setDopplerConfigModalOpen(true); + } + }} + > + + Edit + + { + if (row.kind === "vault") { + setVaultToDelete(row.config); + setVaultDeleteOpen(true); + } else { + setDopplerToDelete(row.config); + setDopplerDeleteOpen(true); + } + }} + > + + Delete + + + + + + ); + })} + + + ); + }; + + return ( +
+
+

Configurations

+ +
+ + {renderTable()}

Manage credentials in{" "} @@ -303,8 +317,10 @@ export const InPlatformMigrationSection = () => { > App Connections - . Use {APP_CONNECTION_MAP[AppConnection.HCVault].name}{" "} - or {APP_CONNECTION_MAP[AppConnection.Doppler].name}{" "} + . Use{" "} + {APP_CONNECTION_MAP[AppConnection.HCVault].name}{" "} + or{" "} + {APP_CONNECTION_MAP[AppConnection.Doppler].name}{" "} connection types as needed.

diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/MigrationConfigDeleteDialog.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/MigrationConfigDeleteDialog.tsx index 98b03bd654e..08d5ecb8f30 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/MigrationConfigDeleteDialog.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/MigrationConfigDeleteDialog.tsx @@ -66,9 +66,9 @@ export const MigrationConfigDeleteDialog = ({ {subTitle} { + onSubmit={async (evt) => { evt.preventDefault(); - if (deleteKey === inputData) void onDelete(); + if (deleteKey === inputData) await onDelete(); }} > @@ -93,7 +93,9 @@ export const MigrationConfigDeleteDialog = ({ variant="danger" isPending={isLoading} isDisabled={deleteKey !== inputData || isLoading || isDisabled} - onClick={() => void onDelete()} + onClick={async () => { + await onDelete(); + }} > {buttonText} diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx index 0b0e626a58a..9f8aadeacfd 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/SelectInPlatformMigrationProviderModal.tsx @@ -72,7 +72,9 @@ export const SelectInPlatformMigrationProviderModal = ({ {name} - {description} + + {description} + ); })} diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx index 934e3355cf7..818c8cc442e 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx @@ -1,7 +1,7 @@ import { useEffect, useMemo } from "react"; import { Controller, useForm } from "react-hook-form"; -import { InfoIcon } from "lucide-react"; import { zodResolver } from "@hookform/resolvers/zod"; +import { InfoIcon } from "lucide-react"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -131,7 +131,8 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: {isEdit ? "Edit Namespace Configuration" : "Add Namespace Configuration"} - Configure a HashiCorp Vault namespace {isEdit ? "configuration" : "for migration tooling"} + Configure a HashiCorp Vault namespace{" "} + {isEdit ? "configuration" : "for migration tooling"} diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx index c6ad9457807..25742231b82 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultPlatformModal.tsx @@ -1,7 +1,7 @@ import { Controller, useForm } from "react-hook-form"; -import { CircleHelpIcon } from "lucide-react"; import { zodResolver } from "@hookform/resolvers/zod"; import { useQuery } from "@tanstack/react-query"; +import { CircleHelpIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { z } from "zod"; @@ -67,20 +67,14 @@ function VaultGatewaySelect({ }: VaultGatewaySelectProps) { const select = ( setPendingSearch(e.target.value)} - leftIcon={} - placeholder="Search by SAN, CN, ID or Serial Number" - className="flex-1" - /> - - - - - - - -
-
-

Filters

- - {isTableFiltered && ( - - )} - -
- -
-
- - Certificate Profiles - - {pendingProfileIds.length > 0 && ( - - )} -
- ({ - value: id, - label: profilesData?.certificateProfiles?.find((p) => p.id === id)?.slug || id - }))} - onChange={(selectedOptions) => { - const ids = Array.isArray(selectedOptions) - ? selectedOptions.map((opt) => opt.value) - : []; - setPendingProfileIds(ids); - }} - options={ - profilesData?.certificateProfiles?.map((profile) => ({ - value: profile.id, - label: profile.slug - })) || [] - } - placeholder="Select certificate profiles..." - className="w-full border-mineshaft-600 bg-mineshaft-700 text-bunker-200" - isMulti - isLoading={!profilesData} - maxMenuHeight={120} - /> -
- -
-
- Status - {pendingFilters.status && ( - - )} -
- -
- - - -
-
+ + + { + setPendingFilters(appliedFilters); + setIsFilterOpen(false); + }} + onClearAll={() => { + handleClearAllFilters(); + setIsFilterOpen(false); + }} + onSaveView={() => setIsSaveViewOpen(true)} + dynamicFieldOptions={dynamicFieldOptions} + /> + + + + + + + + { + handleDeleteView(viewId); + }} + /> + + +
+ + + + + + + {visibleColumns.has("sanCn") && ( + + SAN / CN + + )} + {visibleColumns.has("serialNumber") && ( + Serial # + )} + {visibleColumns.has("enrollmentMethod") && ( + Enrollment Method + )} + {visibleColumns.has("status") && ( + Status + )} + {visibleColumns.has("health") && ( + Health + )} + {visibleColumns.has("issuedAt") && ( + handleSort("notBefore")} + > + Issued + + + )} + {visibleColumns.has("expiresAt") && ( + handleSort("notAfter")} + > + Expires + + + )} + {visibleColumns.has("ca") && ( + CA + )} + {visibleColumns.has("profile") && ( + Profile + )} + {visibleColumns.has("algorithm") && ( + Algorithm + )} + {visibleColumns.has("source") && ( + Source + )} + + + + + {isPending && + Array.from({ length: 10 }).map((_, i) => ( + + {Array.from({ length: visibleColumns.size + 1 }).map((__, j) => ( + + + + ))} + + ))} + {!isPending && + certificates.map((certificate) => { + const { variant, label } = getCertValidUntilBadgeDetails(certificate.notAfter); + const isRevoked = certificate.status === CertStatus.REVOKED; + const isExpired = new Date(certificate.notAfter) < new Date(); + const isExpiringWithinDay = isExpiringWithinOneDay(certificate.notAfter); + const hasFailed = Boolean(certificate.renewalError); + const isAutoRenewalEnabled = Boolean( + certificate.renewBeforeDays && certificate.renewBeforeDays > 0 + ); + const canShowAutoRenewalIcon = Boolean( + certificate.profileId && + certificate.hasPrivateKey !== false && + !certificate.renewedByCertificateId && + !isRevoked && + !isExpired && + !isExpiringWithinDay + ); + const { originalDisplayName } = getCertificateDisplayName(certificate, 64, "—"); + + return ( + { - setAppliedFilters(pendingFilters); - setAppliedProfileIds(pendingProfileIds); - setAppliedMetadataFilters(pendingMetadataFilters); - setPage(1); + navigate({ + to: "/organizations/$orgId/projects/cert-manager/$projectId/certificates/$certificateId", + params: { + orgId: currentOrg.id, + projectId: currentProject.id, + certificateId: certificate.id + } + }); }} - className="w-full bg-primary font-medium text-black hover:bg-primary-600" - size="sm" - isDisabled={!hasFilterChanges} > - Apply Filters - -
-
- - -
- - - - - - - - - - - - - - {isPending && } - {!isPending && - certificates.map((certificate) => { - const { variant, label } = getCertValidUntilBadgeDetails(certificate.notAfter); - - const isRevoked = certificate.status === CertStatus.REVOKED; - const isExpired = new Date(certificate.notAfter) < new Date(); - const isExpiringWithinDay = isExpiringWithinOneDay(certificate.notAfter); - const hasFailed = Boolean(certificate.renewalError); - const isAutoRenewalEnabled = Boolean( - certificate.renewBeforeDays && certificate.renewBeforeDays > 0 - ); - - const canShowAutoRenewalIcon = Boolean( - certificate.profileId && - certificate.hasPrivateKey !== false && - !certificate.renewedByCertificateId && - !isRevoked && - !isExpired && - !isExpiringWithinDay - ); - - const { originalDisplayName } = getCertificateDisplayName(certificate, 64, "—"); - - return ( - { - navigate({ - to: "/organizations/$orgId/projects/cert-manager/$projectId/certificates/$certificateId", - params: { - orgId: currentOrg.id, - projectId: currentProject.id, - certificateId: certificate.id - } - }); - }} - > - - - - - - - - - ); - })} - -
SAN / CNSerial Number - Source - - - - StatusIssued AtExpiring At -
+ {visibleColumns.has("sanCn") && ( + - -
- {truncateSerialNumber(certificate.serialNumber)} -
-
- - {getCertSourceLabel(certificate.source ?? null)} - - - {certificate.status === CertStatus.REVOKED ? ( + + )} + {visibleColumns.has("serialNumber") && ( + + {truncateSerialNumber(certificate.serialNumber)} + + )} + {visibleColumns.has("enrollmentMethod") && ( + + {getEnrollmentMethodBadge(certificate.enrollmentType)} + + )} + {visibleColumns.has("status") && ( + + {isRevoked ? ( Revoked + ) : isExpired ? ( + Expired + ) : ( + Active + )} + + )} + {visibleColumns.has("health") && ( + + {isRevoked ? ( + Critical ) : ( {label} )} - + + )} + {visibleColumns.has("issuedAt") && ( + {certificate.notBefore - ? format(new Date(certificate.notBefore), "yyyy-MM-dd") + ? format(new Date(certificate.notBefore), "MMM d, yyyy") : "-"} - + + )} + {visibleColumns.has("expiresAt") && ( + {certificate.notAfter - ? format(new Date(certificate.notAfter), "yyyy-MM-dd") + ? format(new Date(certificate.notAfter), "MMM d, yyyy") : "-"} - + + )} + {visibleColumns.has("ca") && ( + {certificate.caName || "-"} + )} + {visibleColumns.has("profile") && ( + + {certificate.profileName || "-"} + + )} + {visibleColumns.has("algorithm") && ( + + + {certificate.keyAlgorithm?.replace("_", "-") || "-"} + + + )} + {visibleColumns.has("source") && ( + + + {getCertSourceLabel(certificate.source ?? null)} + + + )} + +
{ if (!canShowAutoRenewalIcon) return ""; @@ -514,74 +793,76 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => }) ); + const tooltipText = (() => { + if (hasFailed && certificate.renewalError) { + return `Auto-renewal failed: ${certificate.renewalError}`; + } + if (isAutoRenewalEnabled) { + const daysUntilExpiry = Math.ceil( + (new Date(certificate.notAfter).getTime() - + new Date().getTime()) / + MS_PER_DAY + ); + const daysUntilRenewal = Math.max( + 0, + daysUntilExpiry - (certificate.renewBeforeDays || 0) + ); + return `Auto-renews in ${daysUntilRenewal}d`; + } + return "Set auto renewal"; + })(); + return ( - { - if (hasFailed && certificate.renewalError) { - return `Auto-renewal failed: ${certificate.renewalError}`; - } - if (isAutoRenewalEnabled) { - const expiryDate = new Date(certificate.notAfter); - const now = new Date(); - const daysUntilExpiry = Math.ceil( - (expiryDate.getTime() - now.getTime()) / (24 * 60 * 60 * 1000) - ); - const daysUntilRenewal = Math.max( - 0, - daysUntilExpiry - (certificate.renewBeforeDays || 0) - ); - return `Auto-renews in ${daysUntilRenewal}d`; - } - return "Set auto renewal"; - })()} - > - + + + + + {tooltipText} ); })()}
- - - + + e.stopPropagation()} > - - - - + + + + })} > {(isAllowed) => ( - { e.stopPropagation(); handlePopUpOpen("certificateExport", { @@ -604,44 +883,37 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => serialNumber: certificate.serialNumber }); }} - disabled={!isAllowed} - icon={} > + Export Certificate - + + )} + + s.trim()), + serialNumber: certificate.serialNumber, + friendlyName: certificate.friendlyName, + metadata: certificate.metadata + })} + > + {(isAllowed) => ( + { + e.stopPropagation(); + handlePopUpOpen("certificateCert", { + serialNumber: certificate.serialNumber + }); + }} + > + + View Details + )} - {isLegacyTemplatesEnabled && ( - s.trim()), - serialNumber: certificate.serialNumber, - friendlyName: certificate.friendlyName, - metadata: certificate.metadata - })} - > - {(isAllowed) => ( - { - e.stopPropagation(); - handlePopUpOpen("certificateCert", { - serialNumber: certificate.serialNumber - }); - }} - disabled={!isAllowed} - icon={} - > - View Details - - )} - - )} {(() => { const canManageRenewal = certificate.profileId && @@ -665,50 +937,42 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => metadata: certificate.metadata })} > - {(isAllowed) => { - return ( - { - e.stopPropagation(); - const notAfterDate = new Date(certificate.notAfter); - const notBeforeDate = certificate.notBefore - ? new Date(certificate.notBefore) - : new Date( - notAfterDate.getTime() - 365 * 24 * 60 * 60 * 1000 - ); - const ttlDays = Math.max( - 1, - Math.ceil( - (notAfterDate.getTime() - notBeforeDate.getTime()) / - (24 * 60 * 60 * 1000) - ) - ); - handlePopUpOpen("manageRenewal", { - certificateId: certificate.id, - commonName: certificate.commonName, - profileId: certificate.profileId, - renewBeforeDays: certificate.renewBeforeDays, - ttlDays, - notAfter: certificate.notAfter, - renewalError: certificate.renewalError, - renewedFromCertificateId: - certificate.renewedFromCertificateId, - renewedByCertificateId: certificate.renewedByCertificateId - }); - }} - disabled={!isAllowed} - icon={} - > - {isAutoRenewalEnabled - ? "Manage auto renewal" - : "Enable auto renewal"} - - ); - }} + {(isAllowed) => ( + { + e.stopPropagation(); + const notAfterDate = new Date(certificate.notAfter); + const notBeforeDate = certificate.notBefore + ? new Date(certificate.notBefore) + : new Date(notAfterDate.getTime() - 365 * MS_PER_DAY); + const ttlDays = Math.max( + 1, + Math.ceil( + (notAfterDate.getTime() - notBeforeDate.getTime()) / + MS_PER_DAY + ) + ); + handlePopUpOpen("manageRenewal", { + certificateId: certificate.id, + commonName: certificate.commonName, + profileId: certificate.profileId, + renewBeforeDays: certificate.renewBeforeDays, + ttlDays, + notAfter: certificate.notAfter, + renewalError: certificate.renewalError, + renewedFromCertificateId: + certificate.renewedFromCertificateId, + renewedByCertificateId: certificate.renewedByCertificateId + }); + }} + > + + {isAutoRenewalEnabled + ? "Manage auto renewal" + : "Enable auto renewal"} + + )} ); })()} @@ -736,11 +1000,8 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => })} > {(isAllowed) => ( - { e.stopPropagation(); await handleDisableAutoRenewal( @@ -748,11 +1009,10 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => certificate.commonName ); }} - disabled={!isAllowed} - icon={} > + Disable auto renewal - + )} ); @@ -779,11 +1039,8 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => })} > {(isAllowed) => ( - { e.stopPropagation(); handlePopUpOpen("renewCertificate", { @@ -791,11 +1048,10 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => commonName: certificate.commonName }); }} - disabled={!isAllowed} - icon={} > + Renew Now - + )} ); @@ -808,11 +1064,8 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => a={ProjectPermissionSub.PkiSyncs} > {(isAllowed) => ( - { e.stopPropagation(); handlePopUpOpen("managePkiSyncs", { @@ -820,11 +1073,10 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => commonName: certificate.commonName }); }} - disabled={!isAllowed} - icon={} > + Manage PKI Syncs - + )} )} @@ -854,22 +1106,19 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => })} > {(isAllowed) => ( - { e.stopPropagation(); handlePopUpOpen("revokeCertificate", { certificateId: certificate.id }); }} - disabled={!isAllowed} - icon={} > + Revoke Certificate - + )} ); @@ -885,10 +1134,9 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => })} > {(isAllowed) => ( - { e.stopPropagation(); handlePopUpOpen("deleteCertificate", { @@ -896,41 +1144,51 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter }: Props) => commonName: certificate.commonName }); }} - disabled={!isAllowed} - icon={} > + Delete Certificate - + )} - - -
- {!isPending && (data?.totalCount || 0) >= PER_PAGE_INIT && ( - setPage(newPage)} - onChangePerPage={(newPerPage) => setPerPage(newPerPage)} - /> - )} - {!isPending && !certificates.length && ( - + +
+ + + ); + })} + + + {!isPending && (data?.totalCount || 0) >= PER_PAGE_INIT && ( + setPage(newPage)} + onChangePerPage={(newPerPage) => setPerPage(newPerPage)} + /> + )} + {!isPending && !certificates.length && ( + + + + {isTableFiltered || appliedSearch ? "No certificates match search..." - : "No certificates have been issued" - } - icon={data?.certificates?.length ? faSearch : faCertificate} - /> - )} - + : "No certificates have been issued"} + + + + )} + + 0 ? appliedFilters : pendingFilters} + onViewCreated={(viewId, viewFilters) => { + handleSelectView(viewId, viewFilters); + }} + />
); }; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx new file mode 100644 index 00000000000..d950b592d51 --- /dev/null +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx @@ -0,0 +1,100 @@ +import { Columns3Icon } from "lucide-react"; + +import { + UnstableDropdownMenu, + UnstableDropdownMenuCheckboxItem, + UnstableDropdownMenuContent, + UnstableDropdownMenuLabel, + UnstableDropdownMenuTrigger, + UnstableIconButton +} from "@app/components/v3"; + +export type ColumnDef = { + key: string; + label: string; + defaultVisible: boolean; +}; + +export const INVENTORY_COLUMNS: ColumnDef[] = [ + { key: "sanCn", label: "SAN / CN", defaultVisible: true }, + { key: "serialNumber", label: "Serial Number", defaultVisible: true }, + { key: "enrollmentMethod", label: "Enrollment Method", defaultVisible: true }, + { key: "status", label: "Status", defaultVisible: true }, + { key: "health", label: "Health", defaultVisible: true }, + { key: "issuedAt", label: "Issued", defaultVisible: true }, + { key: "expiresAt", label: "Expires", defaultVisible: true }, + { key: "ca", label: "CA", defaultVisible: true }, + { key: "profile", label: "Profile", defaultVisible: true }, + { key: "algorithm", label: "Algorithm", defaultVisible: true }, + { key: "source", label: "Source", defaultVisible: false } +]; + +const STORAGE_KEY = "cert-inventory-columns"; + +export const getDefaultVisibleColumns = (): Set => { + try { + const stored = localStorage.getItem(STORAGE_KEY); + if (stored) { + return new Set(JSON.parse(stored) as string[]); + } + } catch { + // ignore + } + return new Set(INVENTORY_COLUMNS.filter((c) => c.defaultVisible).map((c) => c.key)); +}; + +export const saveVisibleColumns = (columns: Set) => { + try { + localStorage.setItem(STORAGE_KEY, JSON.stringify([...columns])); + } catch { + // ignore + } +}; + +type Props = { + visibleColumns: Set; + onChange: (columns: Set) => void; +}; + +export const ColumnVisibilityToggle = ({ visibleColumns, onChange }: Props) => { + const hasHiddenColumns = visibleColumns.size < INVENTORY_COLUMNS.length; + + const handleToggle = (key: string) => { + const next = new Set(visibleColumns); + if (next.has(key)) { + next.delete(key); + } else { + next.add(key); + } + onChange(next); + saveVisibleColumns(next); + }; + + return ( + + +
+ + + +
+
+ + Columns + {INVENTORY_COLUMNS.map((col) => ( + handleToggle(col.key)} + > + {col.label} + + ))} + +
+ ); +}; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx new file mode 100644 index 00000000000..139c7befd32 --- /dev/null +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx @@ -0,0 +1,313 @@ +import { format } from "date-fns"; +import { CalendarIcon, PlusIcon, Trash2Icon } from "lucide-react"; + +import { + Button, + Calendar, + FilterableSelect, + Popover, + PopoverContent, + PopoverTrigger, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, + UnstableIconButton, + UnstableInput +} from "@app/components/v3"; + +import { FILTER_FIELDS, type FilterFieldDefinition, type FilterRule } from "./inventory-types"; + +type Props = { + rules: FilterRule[]; + onChange: (rules: FilterRule[]) => void; + onApply: () => void; + onCancel: () => void; + onClearAll: () => void; + onSaveView: () => void; + dynamicFieldOptions?: Record; +}; + +const getFieldDef = ( + fieldKey: string, + dynamicOptions?: Record +): FilterFieldDefinition => { + const baseDef = FILTER_FIELDS.find((f) => f.key === fieldKey); + if (!baseDef) return FILTER_FIELDS[0]; + + if (dynamicOptions && dynamicOptions[fieldKey]) { + return { ...baseDef, options: dynamicOptions[fieldKey] }; + } + return baseDef; +}; + +const DatePickerInput = ({ + value, + onChange +}: { + value: string | null; + onChange: (val: string) => void; +}) => { + const selectedDate = value ? new Date(value) : undefined; + + return ( + + + + + + { + if (date) { + onChange(format(date, "yyyy-MM-dd")); + } + }} + /> + + + ); +}; + +const FilterRow = ({ + rule, + onUpdate, + onRemove, + dynamicFieldOptions: dynOpts +}: { + rule: FilterRule; + onUpdate: (updated: FilterRule) => void; + onRemove: () => void; + dynamicFieldOptions?: Record; +}) => { + const fieldDef = getFieldDef(rule.field, dynOpts); + + const handleFieldChange = (newField: string) => { + const newDef = getFieldDef(newField, dynOpts); + onUpdate({ + ...rule, + field: newField, + operator: newDef.operators[0]?.value || "is", + value: newDef.valueType === "multi-select" ? [] : null + }); + }; + + const renderValueInput = () => { + const options = fieldDef.options || []; + + switch (fieldDef.valueType) { + case "multi-select": { + const currentValues = Array.isArray(rule.value) ? rule.value : []; + const selectedOptions = currentValues + .map((v) => { + const opt = options.find((o) => o.value === v); + return opt ? { value: opt.value, label: opt.label } : null; + }) + .filter(Boolean) as { value: string; label: string }[]; + + return ( + { + const selected = Array.isArray(opts) ? opts.map((o) => o.value) : []; + onUpdate({ ...rule, value: selected }); + }} + options={options} + placeholder="Select..." + className="w-full text-sm" + maxMenuHeight={160} + /> + ); + } + case "select": + return ( + + ); + case "date": + return ( + onUpdate({ ...rule, value: val })} + /> + ); + case "number": + return ( + + onUpdate({ ...rule, value: e.target.value ? Number(e.target.value) : null }) + } + placeholder="Value" + className="w-full" + /> + ); + default: + return ( + onUpdate({ ...rule, value: e.target.value })} + placeholder="Value" + className="w-full" + /> + ); + } + }; + + return ( +
+ + + + +
{renderValueInput()}
+ + + + +
+ ); +}; + +export const FilterBuilder = ({ + rules, + onChange, + onApply, + onCancel, + onClearAll, + onSaveView, + dynamicFieldOptions +}: Props) => { + const handleAddRule = () => { + const defaultField = FILTER_FIELDS[0]; + onChange([ + ...rules, + { + id: crypto.randomUUID(), + field: defaultField.key, + operator: defaultField.operators[0]?.value || "is", + value: defaultField.valueType === "multi-select" ? [] : null + } + ]); + }; + + const handleUpdateRule = (index: number, updated: FilterRule) => { + const newRules = [...rules]; + newRules[index] = updated; + onChange(newRules); + }; + + const handleRemoveRule = (index: number) => { + onChange(rules.filter((_, i) => i !== index)); + }; + + return ( +
+
+ Filters + {rules.length > 0 && ( + + )} +
+ + {rules.length === 0 ? ( +

+ No filters applied. Click "Add filter" to get started. +

+ ) : ( +
+ {rules.map((rule, index) => ( +
+ {index > 0 && ( +
AND
+ )} + handleUpdateRule(index, updated)} + onRemove={() => handleRemoveRule(index)} + dynamicFieldOptions={dynamicFieldOptions} + /> +
+ ))} +
+ )} + + + +
+ +
+ + +
+
+
+ ); +}; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx new file mode 100644 index 00000000000..e84511c1b74 --- /dev/null +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx @@ -0,0 +1,101 @@ +import { useState } from "react"; + +import { createNotification } from "@app/components/notifications"; +import { + Button, + Dialog, + DialogClose, + DialogContent, + DialogFooter, + DialogHeader, + DialogTitle, + UnstableInput +} from "@app/components/v3"; +import { useCreateCertificateInventoryView } from "@app/hooks/api/certificateInventoryViews"; +import type { TInventoryViewFilters } from "@app/hooks/api/certificateInventoryViews/types"; + +import { type FilterRule, filtersToSearchParams } from "./inventory-types"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + projectId: string; + filters: FilterRule[]; + onViewCreated?: (viewId: string, filters: TInventoryViewFilters) => void; +}; + +export const SaveViewModal = ({ + isOpen, + onOpenChange, + projectId, + filters, + onViewCreated +}: Props) => { + const [name, setName] = useState(""); + const { mutateAsync: createView, isPending } = useCreateCertificateInventoryView(); + + const handleSave = async () => { + if (!name.trim()) return; + + try { + const apiFilters = filtersToSearchParams(filters); + const result = await createView({ + projectId, + name: name.trim(), + filters: apiFilters + }); + createNotification({ + text: `View "${name}" saved successfully`, + type: "success" + }); + setName(""); + onOpenChange(false); + if (onViewCreated && result?.id) { + onViewCreated(result.id, apiFilters); + } + } catch { + createNotification({ + text: "Failed to save view", + type: "error" + }); + } + }; + + return ( + { + if (!open) setName(""); + onOpenChange(open); + }} + > + + + Save View As + + { + e.preventDefault(); + handleSave(); + }} + > + setName(e.target.value)} + placeholder="Enter view name" + autoFocus + className="mt-2" + /> + + + + + + + + + + ); +}; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/ViewsDropdown.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/ViewsDropdown.tsx new file mode 100644 index 00000000000..39de85f1684 --- /dev/null +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/ViewsDropdown.tsx @@ -0,0 +1,101 @@ +import { ChevronDownIcon, Trash2Icon } from "lucide-react"; + +import { + UnstableDropdownMenu, + UnstableDropdownMenuContent, + UnstableDropdownMenuLabel, + UnstableDropdownMenuRadioGroup, + UnstableDropdownMenuRadioItem, + UnstableDropdownMenuSeparator, + UnstableDropdownMenuTrigger +} from "@app/components/v3"; +import { TSystemView } from "@app/hooks/api/certificateInventoryViews"; +import type { + TCertificateInventoryView, + TInventoryViewFilters, + TSystemViewFilters +} from "@app/hooks/api/certificateInventoryViews/types"; + +type Props = { + activeViewId: string | null; + systemViews: TSystemView[]; + customViews: (TCertificateInventoryView & { isSystem: false })[]; + onSelectView: (viewId: string, filters: TInventoryViewFilters | TSystemViewFilters) => void; + onDeleteView: (viewId: string) => void; +}; + +export const ViewsDropdown = ({ + activeViewId, + systemViews, + customViews, + onSelectView, + onDeleteView +}: Props) => { + const activeView = + systemViews.find((v) => v.id === activeViewId) || + customViews.find((v) => v.id === activeViewId); + const label = activeView?.name || "All Certificates"; + + return ( + + + + + + System Views + + {systemViews.map((view) => ( + onSelectView(view.id, view.filters)} + > + {view.name} + + ))} + + + + + Custom Views + {customViews.length === 0 ? ( +
+ No custom views saved yet. +
+ Apply filters and click "Save as View" +
+ ) : ( + + {customViews.map((view) => ( + onSelectView(view.id, view.filters as Record)} + > + {view.name} + + + ))} + + )} +
+
+ ); +}; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/csvExport.ts b/frontend/src/pages/cert-manager/CertificatesPage/components/csvExport.ts new file mode 100644 index 00000000000..31e9a6ad805 --- /dev/null +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/csvExport.ts @@ -0,0 +1,47 @@ +import { TCertificate } from "@app/hooks/api/certificates/types"; + +const CSV_COLUMNS = [ + { key: "commonName", header: "Common Name" }, + { key: "altNames", header: "SANs" }, + { key: "serialNumber", header: "Serial Number" }, + { key: "status", header: "Status" }, + { key: "enrollmentType", header: "Enrollment Method" }, + { key: "keyAlgorithm", header: "Algorithm" }, + { key: "notBefore", header: "Issued" }, + { key: "notAfter", header: "Expires" }, + { key: "caName", header: "CA" }, + { key: "profileName", header: "Profile" }, + { key: "source", header: "Source" } +] as const; + +const escapeCSV = (value: string | null | undefined): string => { + if (value === null || value === undefined) return ""; + const str = String(value); + if (str.includes(",") || str.includes('"') || str.includes("\n")) { + return `"${str.replace(/"/g, '""')}"`; + } + return str; +}; + +export const certificatesToCSV = (certificates: TCertificate[]): string => { + const header = CSV_COLUMNS.map((col) => col.header).join(","); + const rows = certificates.map((cert) => + CSV_COLUMNS.map((col) => { + const value = cert[col.key as keyof TCertificate]; + if (value === null || value === undefined) return ""; + if (typeof value === "object") return escapeCSV(JSON.stringify(value)); + return escapeCSV(String(value)); + }).join(",") + ); + return [header, ...rows].join("\n"); +}; + +export const downloadCSV = (csv: string, filename: string) => { + const blob = new Blob([csv], { type: "text/csv;charset=utf-8;" }); + const url = URL.createObjectURL(blob); + const link = document.createElement("a"); + link.href = url; + link.download = filename; + link.click(); + URL.revokeObjectURL(url); +}; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/inventory-types.ts b/frontend/src/pages/cert-manager/CertificatesPage/components/inventory-types.ts new file mode 100644 index 00000000000..46be045d55a --- /dev/null +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/inventory-types.ts @@ -0,0 +1,230 @@ +import type { TInventoryViewFilters } from "@app/hooks/api/certificateInventoryViews/types"; + +export type FilterRule = { + id: string; + field: string; + operator: string; + value: string | string[] | number | Date | null; +}; + +export type FilterFieldDefinition = { + key: string; + label: string; + operators: { value: string; label: string }[]; + valueType: "text" | "number" | "date" | "select" | "multi-select"; + options?: { value: string; label: string }[]; +}; + +export const FILTER_FIELDS: FilterFieldDefinition[] = [ + { + key: "status", + label: "Status", + operators: [{ value: "in", label: "in" }], + valueType: "multi-select", + options: [ + { value: "active", label: "Active" }, + { value: "expired", label: "Expired" }, + { value: "revoked", label: "Revoked" } + ] + }, + { + key: "notAfter", + label: "Expiration Date", + operators: [ + { value: "before", label: "before" }, + { value: "after", label: "after" } + ], + valueType: "date" + }, + { + key: "notBefore", + label: "Issued Date", + operators: [ + { value: "before", label: "before" }, + { value: "after", label: "after" } + ], + valueType: "date" + }, + { + key: "enrollmentType", + label: "Enrollment Method", + operators: [{ value: "in", label: "in" }], + valueType: "multi-select", + options: [ + { value: "acme", label: "ACME" }, + { value: "api", label: "API" }, + { value: "est", label: "EST" }, + { value: "scep", label: "SCEP" } + ] + }, + { + key: "keyAlgorithm", + label: "Algorithm", + operators: [{ value: "is", label: "is" }], + valueType: "select", + options: [ + { value: "RSA_2048", label: "RSA-2048" }, + { value: "RSA_3072", label: "RSA-3072" }, + { value: "RSA_4096", label: "RSA-4096" }, + { value: "EC_prime256v1", label: "ECDSA-P256" }, + { value: "EC_secp384r1", label: "ECDSA-P384" }, + { value: "EC_secp521r1", label: "ECDSA-P521" } + ] + }, + { + key: "keySize", + label: "Key Size", + operators: [{ value: "in", label: "in" }], + valueType: "multi-select", + options: [ + { value: "256", label: "256-bit (ECDSA)" }, + { value: "384", label: "384-bit (ECDSA)" }, + { value: "521", label: "521-bit (ECDSA)" }, + { value: "2048", label: "2048-bit (RSA)" }, + { value: "3072", label: "3072-bit (RSA)" }, + { value: "4096", label: "4096-bit (RSA)" } + ] + }, + { + key: "source", + label: "Source", + operators: [{ value: "is", label: "is" }], + valueType: "select", + options: [ + { value: "issued", label: "Managed" }, + { value: "discovered", label: "Discovered" }, + { value: "imported", label: "Imported" } + ] + }, + { + key: "caId", + label: "Certificate Authority", + operators: [{ value: "in", label: "in" }], + valueType: "multi-select", + options: [] + }, + { + key: "profileId", + label: "Profile", + operators: [{ value: "in", label: "in" }], + valueType: "multi-select", + options: [] + } +]; + +export const filtersToSearchParams = (rules: FilterRule[]): TInventoryViewFilters => { + const params: TInventoryViewFilters = {}; + + rules.forEach((rule) => { + switch (rule.field) { + case "status": + if (Array.isArray(rule.value) && rule.value.length > 0) { + params.status = rule.value.join(","); + } + break; + case "notAfter": + if (rule.operator === "before" && rule.value) { + params.notAfterTo = new Date(rule.value as string); + } else if (rule.operator === "after" && rule.value) { + params.notAfterFrom = new Date(rule.value as string); + } + break; + case "notBefore": + if (rule.operator === "before" && rule.value) { + params.notBeforeTo = new Date(rule.value as string); + } else if (rule.operator === "after" && rule.value) { + params.notBeforeFrom = new Date(rule.value as string); + } + break; + case "enrollmentType": + if (Array.isArray(rule.value) && rule.value.length > 0) { + params.enrollmentTypes = rule.value; + } + break; + case "keyAlgorithm": + if (rule.value) { + params.keyAlgorithm = rule.value as string; + } + break; + case "source": + if (rule.value) { + params.source = rule.value as string; + } + break; + case "keySize": + if (Array.isArray(rule.value) && rule.value.length > 0) { + params.keySizes = rule.value.map(Number); + } + break; + case "caId": + if (Array.isArray(rule.value) && rule.value.length > 0) { + params.caIds = rule.value; + } + break; + case "profileId": + if (Array.isArray(rule.value) && rule.value.length > 0) { + params.profileIds = rule.value; + } + break; + default: + break; + } + }); + + return params; +}; + +export const getFilterChipLabel = ( + rule: FilterRule, + dynamicFieldOptions?: Record +): string => { + const baseDef = FILTER_FIELDS.find((f) => f.key === rule.field); + const fieldLabel = baseDef?.label || rule.field; + + const options = + dynamicFieldOptions && dynamicFieldOptions[rule.field] + ? dynamicFieldOptions[rule.field] + : baseDef?.options || []; + + if (Array.isArray(rule.value)) { + const values = rule.value; + if (values.length === 1) { + const opt = options.find((o) => o.value === values[0]); + return `${fieldLabel}: ${opt?.label || values[0]}`; + } + return `${fieldLabel}: ${values.length} selected`; + } + + if (rule.value instanceof Date) { + return `${fieldLabel} ${rule.operator} ${rule.value.toLocaleDateString()}`; + } + + if (typeof rule.value === "string" && (rule.field === "notAfter" || rule.field === "notBefore")) { + return `${fieldLabel} ${rule.operator} ${rule.value}`; + } + + if (typeof rule.value === "number") { + return `${fieldLabel}: ${rule.value}`; + } + + const opt = options.find((o) => o.value === rule.value); + return `${fieldLabel}: ${opt?.label || rule.value}`; +}; + +export const getFilterMultiSelectLabels = ( + rule: FilterRule, + dynamicFieldOptions?: Record +): string[] => { + if (!Array.isArray(rule.value)) return []; + + const baseDef = FILTER_FIELDS.find((f) => f.key === rule.field); + const options = + dynamicFieldOptions && dynamicFieldOptions[rule.field] + ? dynamicFieldOptions[rule.field] + : baseDef?.options || []; + + return rule.value.map((v) => { + const opt = options.find((o) => o.value === v); + return opt?.label || String(v); + }); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx new file mode 100644 index 00000000000..f5c0fddf868 --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx @@ -0,0 +1,97 @@ +import { useCallback, useState } from "react"; +import { Helmet } from "react-helmet"; +import { useTranslation } from "react-i18next"; +import { useNavigate } from "@tanstack/react-router"; + +import { ProjectPermissionCan } from "@app/components/permissions"; +import { PageHeader } from "@app/components/v2"; +import { UnstablePageLoader } from "@app/components/v3"; +import { useProject } from "@app/context"; +import { + ProjectPermissionCertificateActions, + ProjectPermissionSub +} from "@app/context/ProjectPermissionContext/types"; +import { useGetCertActivityTrend, useGetCertDashboardStats } from "@app/hooks/api/certificates"; +import { ProjectType } from "@app/hooks/api/projects/types"; + +import { + ActivityTrend, + CodeSigningSection, + DistributionCharts, + ExpirationTimeline, + KpiCards +} from "./components"; + +export const DashboardPage = () => { + const { t } = useTranslation(); + const { currentProject } = useProject(); + const navigate = useNavigate(); + const [trendRange, setTrendRange] = useState("30d"); + + const { data: stats, isPending: isStatsLoading } = useGetCertDashboardStats( + currentProject?.id || "" + ); + const { data: trendData } = useGetCertActivityTrend(currentProject?.id || "", trendRange); + + const navigateToInventory = useCallback( + (filters: Record) => { + navigate({ + to: "/organizations/$orgId/projects/cert-manager/$projectId/policies", + params: { + orgId: currentProject?.orgId || "", + projectId: currentProject?.id || "" + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + search: { selectedTab: "certificates", ...filters } as any + }); + }, + [navigate, currentProject] + ); + + if (!currentProject) { + return ; + } + + return ( +
+ + {t("common.head-title", { title: "Certificate Dashboard" })} + +
+
+ + + {isStatsLoading || !stats ? ( + + ) : ( +
+ +
+ + +
+ + +
+ )} +
+
+
+
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx new file mode 100644 index 00000000000..1288411f5f9 --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx @@ -0,0 +1,132 @@ +import { + CartesianGrid, + Legend, + Line, + LineChart, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis +} from "recharts"; + +import { + Button, + UnstableCard, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import type { TActivityTrendPoint } from "@app/hooks/api/certificates"; + +import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; + +type Props = { + data: TActivityTrendPoint[]; + onRangeChange: (range: string) => void; + currentRange: string; +}; + +const SERIES_KEYS = ["issued", "expired", "revoked", "renewed"]; + +const ranges = [ + { label: "7D", value: "7d" }, + { label: "30D", value: "30d" }, + { label: "6M", value: "6m" } +]; + +export const ActivityTrend = ({ data, onRangeChange, currentRange }: Props) => { + const hasAnyData = data.some( + (d) => d.issued > 0 || d.expired > 0 || d.revoked > 0 || d.renewed > 0 + ); + return ( + + + Certificate Activity Trend +
+ {ranges.map((r) => ( + + ))} +
+
+ + {!hasAnyData ? ( + + + No activity in this period + + + ) : ( + + + + + + + + + + + + + + )} + +
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx new file mode 100644 index 00000000000..a71d3bffa4c --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx @@ -0,0 +1,244 @@ +import { useMemo, useState } from "react"; +import { format } from "date-fns"; +import { + CartesianGrid, + Legend, + Line, + LineChart, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis +} from "recharts"; + +import { + Button, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, + UnstableCard, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import { + SigningOperationStatus, + TSigningOperation, + useListSigners, + useListSigningOperations +} from "@app/hooks/api/signers"; + +import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; + +type Props = { + projectId: string; +}; + +const ALL_SIGNERS = "__all__"; + +const ranges = [ + { label: "7D", value: "7d", days: 7 }, + { label: "30D", value: "30d", days: 30 }, + { label: "6M", value: "6m", days: 180 } +]; + +const buildTrendData = (operations: TSigningOperation[], daysBack: number) => { + const useDaily = daysBack <= 30; + const formatKey = useDaily ? "yyyy-MM-dd" : "yyyy-MM"; + const bucketMap = new Map(); + + operations.forEach((op) => { + const key = format(new Date(op.createdAt), formatKey); + const entry = bucketMap.get(key) || { success: 0, failed: 0 }; + if (op.status === SigningOperationStatus.Success) { + entry.success += 1; + } else { + entry.failed += 1; + } + bucketMap.set(key, entry); + }); + + const now = new Date(); + const cursor = new Date(); + cursor.setDate(cursor.getDate() - daysBack); + cursor.setHours(0, 0, 0, 0); + if (!useDaily) cursor.setDate(1); + + const result: { period: string; success: number; failed: number }[] = []; + while (cursor <= now) { + const key = format(cursor, formatKey); + const entry = bucketMap.get(key) || { success: 0, failed: 0 }; + result.push({ period: key, ...entry }); + if (useDaily) { + cursor.setDate(cursor.getDate() + 1); + } else { + cursor.setMonth(cursor.getMonth() + 1); + } + } + return result; +}; + +export const CodeSigningSection = ({ projectId }: Props) => { + const { data: signersData } = useListSigners({ projectId, limit: 100 }); + const signers = signersData?.signers || []; + + const [selectedSignerId, setSelectedSignerId] = useState(ALL_SIGNERS); + const [currentRange, setCurrentRange] = useState("30d"); + const activeDays = ranges.find((r) => r.value === currentRange)?.days || 30; + + const signerIds = signers.map((s) => s.id); + const firstSignerId = signerIds[0] || ""; + const secondSignerId = signerIds[1] || ""; + const thirdSignerId = signerIds[2] || ""; + const fourthSignerId = signerIds[3] || ""; + const fifthSignerId = signerIds[4] || ""; + + const { data: ops1 } = useListSigningOperations({ signerId: firstSignerId, limit: 100 }); + const { data: ops2 } = useListSigningOperations({ signerId: secondSignerId, limit: 100 }); + const { data: ops3 } = useListSigningOperations({ signerId: thirdSignerId, limit: 100 }); + const { data: ops4 } = useListSigningOperations({ signerId: fourthSignerId, limit: 100 }); + const { data: ops5 } = useListSigningOperations({ signerId: fifthSignerId, limit: 100 }); + + const allOperationsMap = useMemo(() => { + const map = new Map(); + const queryResults = [ + { id: firstSignerId, data: ops1 }, + { id: secondSignerId, data: ops2 }, + { id: thirdSignerId, data: ops3 }, + { id: fourthSignerId, data: ops4 }, + { id: fifthSignerId, data: ops5 } + ]; + queryResults.forEach(({ id, data }) => { + if (id && data?.operations) { + map.set(id, data.operations); + } + }); + return map; + }, [ + firstSignerId, + secondSignerId, + thirdSignerId, + fourthSignerId, + fifthSignerId, + ops1, + ops2, + ops3, + ops4, + ops5 + ]); + + const filteredOperations = useMemo(() => { + let ops: TSigningOperation[]; + if (selectedSignerId === ALL_SIGNERS) { + ops = Array.from(allOperationsMap.values()).flat(); + } else { + ops = allOperationsMap.get(selectedSignerId) || []; + } + const cutoffDate = new Date(); + cutoffDate.setDate(cutoffDate.getDate() - activeDays); + return ops + .filter((op) => new Date(op.createdAt) >= cutoffDate) + .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); + }, [selectedSignerId, allOperationsMap, activeDays]); + + const trendData = useMemo( + () => buildTrendData(filteredOperations, activeDays), + [filteredOperations, activeDays] + ); + + if (signers.length === 0) { + return null; + } + + return ( + + + Code Signing Activity +
+
+ {ranges.map((r) => ( + + ))} +
+ +
+
+ + {trendData.length === 0 ? ( + + + No signing operations yet + + + ) : ( + + + + + + + + + + + + )} + +
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx new file mode 100644 index 00000000000..4c5d862309e --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx @@ -0,0 +1,211 @@ +import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; + +import { + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import type { TDashboardDistribution, TDashboardStats } from "@app/hooks/api/certificates"; +import { certKeyAlgorithmToNameMap } from "@app/hooks/api/certificates/constants"; + +import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; + +type Props = { + stats: TDashboardStats; + onNavigate: (filters: Record) => void; +}; + +type ChartKey = "enrollmentMethod" | "algorithm" | "ca"; + +const DonutChart = ({ + title, + subtitle, + data, + chartKey, + onSegmentClick +}: { + title: string; + subtitle?: string; + data: TDashboardDistribution[]; + chartKey: ChartKey; + onSegmentClick?: (entry: TDashboardDistribution) => void; +}) => { + const nonZeroData = data.filter((d) => d.count > 0); + const total = data.reduce((sum, d) => sum + d.count, 0); + const chartId = title.replace(/\s+/g, "-").toLowerCase(); + const formatLabel = (label: string) => { + if (chartKey === "algorithm") { + return ( + (certKeyAlgorithmToNameMap as Record)[label] ?? label.replace(/_/g, " ") + ); + } + if (chartKey === "enrollmentMethod") return label.toUpperCase(); + return label; + }; + + return ( + + +
+ {title} + {subtitle &&

{subtitle}

} +
+
+ + {nonZeroData.length === 0 ? ( + + + No data available + + + ) : ( +
+
+ + + + {nonZeroData.map((entry, idx) => { + const hex = CHART_COLORS_HEX[idx % CHART_COLORS_HEX.length]; + return ( + + + + + ); + })} + + onSegmentClick?.(nonZeroData[idx])} + > + {nonZeroData.map((entry, idx) => ( + + ))} + + + + +
+
+
+ {nonZeroData.map((entry, idx) => { + const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; + return ( + + ); + })} +
+
+ Total + {total} +
+
+
+ )} +
+
+ ); +}; + +export const DistributionCharts = ({ stats, onNavigate }: Props) => { + const charts: { + title: string; + subtitle?: string; + chartKey: ChartKey; + data: TDashboardDistribution[]; + }[] = [ + { + title: "By Enrollment Method", + subtitle: "Distribution by enrollment type", + chartKey: "enrollmentMethod", + data: stats.distributions.byEnrollmentMethod + }, + { + title: "By Algorithm", + subtitle: "Distribution by key algorithm", + chartKey: "algorithm", + data: stats.distributions.byAlgorithm + }, + { + title: "By Issuing CA", + subtitle: "Distribution by certificate authority", + chartKey: "ca", + data: stats.distributions.byCA + } + ]; + + return ( + <> + {charts.map((chart) => ( + { + if (chart.chartKey === "enrollmentMethod") { + onNavigate({ filterEnrollmentType: entry.label }); + } else if (chart.chartKey === "algorithm") { + onNavigate({ filterKeyAlgorithm: entry.label }); + } else if (chart.chartKey === "ca" && entry.id) { + onNavigate({ filterCaId: entry.id }); + } + }} + /> + ))} + + ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx new file mode 100644 index 00000000000..2322a0af502 --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx @@ -0,0 +1,177 @@ +import { useMemo } from "react"; +import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; + +import { + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import type { TExpirationBucket } from "@app/hooks/api/certificates"; + +import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; + +type Props = { + buckets: TExpirationBucket[]; + onNavigate: (filters: Record) => void; +}; + +const DONUT_SEGMENTS = [ + { + label: "< 7 days", + sourceBuckets: ["expired", "0-7d"], + filter: { filterExpiresDays: "7" } + }, + { + label: "7-30 days", + sourceBuckets: ["8-30d"], + filter: { filterExpiresAfterDays: "7", filterExpiresDays: "30" } + }, + { + label: "> 30 days", + sourceBuckets: ["31-60d", "61-90d", "90d+"], + filter: { filterExpiresAfterDays: "30" } + } +]; + +export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { + const bucketMap = useMemo(() => { + const map = new Map(); + buckets.forEach((b) => map.set(b.bucket, b.count)); + return map; + }, [buckets]); + + const chartData = useMemo( + () => + DONUT_SEGMENTS.map((seg, idx) => ({ + label: seg.label, + count: seg.sourceBuckets.reduce((sum, key) => sum + (bucketMap.get(key) || 0), 0), + color: CHART_COLORS[idx % CHART_COLORS.length], + segIdx: idx, + filter: seg.filter + })), + [bucketMap] + ); + + const nonZeroData = chartData.filter((d) => d.count > 0); + const total = chartData.reduce((sum, d) => sum + d.count, 0); + + return ( + + + + Expiration Timeline + +

Certificates by time to expiry

+
+ + {nonZeroData.length === 0 ? ( + + + No expiration data + + + ) : ( +
+
+ + + + {nonZeroData.map((item) => { + const hex = CHART_COLORS_HEX[item.segIdx % CHART_COLORS_HEX.length]; + return ( + + + + + ); + })} + + { + const item = nonZeroData[idx]; + if (item.filter) onNavigate(item.filter); + }} + > + {nonZeroData.map((item) => ( + + ))} + + + + +
+
+
+ {chartData.map((item, idx) => { + const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; + return ( + + ); + })} +
+
+ Total + {total} +
+
+
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/KpiCards.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/KpiCards.tsx new file mode 100644 index 00000000000..47476d2d6f5 --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/components/KpiCards.tsx @@ -0,0 +1,133 @@ +import { AlertTriangle, FileCheck, FileClock, FileKey, FileX } from "lucide-react"; + +import { Badge, UnstableCard, UnstableCardContent } from "@app/components/v3"; +import type { TDashboardStats } from "@app/hooks/api/certificates"; + +type Props = { + stats: TDashboardStats; + onNavigate: (filters: Record) => void; +}; + +const cards = [ + { + key: "total" as const, + label: "Total Certificates", + subtitle: "All certificates", + icon: FileKey, + iconClass: "text-org", + iconBg: "bg-org/10 border-org/20", + filters: {} as Record + }, + { + key: "active" as const, + label: "Active", + subtitle: "Currently valid", + icon: FileCheck, + iconClass: "text-success", + iconBg: "bg-success/10 border-success/20", + filters: { filterStatus: "active" } + }, + { + key: "expiringSoon" as const, + label: "Expiring Soon", + subtitle: "In the next 30 days", + icon: FileClock, + iconClass: "text-warning", + iconBg: "bg-warning/10 border-warning/20", + filters: { filterStatus: "active", filterExpiresDays: "30" } + }, + { + key: "expired" as const, + label: "Expired", + subtitle: "Past validity", + icon: FileX, + iconClass: "text-danger", + iconBg: "bg-danger/10 border-danger/20", + filters: { filterStatus: "expired" } + }, + { + key: "revoked" as const, + label: "Revoked", + subtitle: "Manually revoked", + icon: AlertTriangle, + iconClass: "text-neutral", + iconBg: "bg-neutral/10 border-neutral/20", + filters: { filterStatus: "revoked" } + } +]; + +const getBadge = (key: string, stats: TDashboardStats) => { + const { total, active } = stats.totals; + + if (key === "total" && total > 0) { + const pct = Math.round((active / total) * 100); + return { + variant: "org" as const, + label: `${pct}% active` + }; + } + if (key === "active" && total > 0) { + return { + variant: "success" as const, + label: "valid & trusted" + }; + } + if (key === "expiringSoon" && stats.expiringSoonNoAutoRenewal > 0) { + return { + variant: "warning" as const, + label: `${stats.expiringSoonNoAutoRenewal} without auto-renewal` + }; + } + if (key === "expired" && stats.expiredNotRenewed > 0) { + return { + variant: "danger" as const, + label: `${stats.expiredNotRenewed} not renewed` + }; + } + if (key === "revoked" && stats.totals.revoked > 0) { + return { + variant: "neutral" as const, + label: "action required" + }; + } + return null; +}; + +export const KpiCards = ({ stats, onNavigate }: Props) => { + return ( +
+ {cards.map((card) => { + const Icon = card.icon; + const count = stats.totals[card.key]; + const badge = getBadge(card.key, stats); + return ( + onNavigate(card.filters)} + > + +
+ {card.label} +
+ +
+
+
+
+ {count} + {card.subtitle} +
+
+ {badge && {badge.label}} +
+
+
+
+ ); + })} +
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/chart-theme.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/chart-theme.tsx new file mode 100644 index 00000000000..240198b2bae --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/components/chart-theme.tsx @@ -0,0 +1,69 @@ +export const CHART_COLORS = [ + "var(--color-info)", + "var(--color-warning)", + "var(--color-neutral)", + "var(--color-accent)", + "var(--color-muted)", + "var(--color-success)", + "var(--color-org)", + "var(--color-danger)" +]; + +export const CHART_COLORS_HEX = [ + "#63b0bd", + "#f1c40f", + "#adaeb0", + "#7d7f80", + "#707174", + "#2ecc71", + "#30b3ff", + "#e74c3c" +]; + +export const TREND_COLORS = { + issued: "var(--color-org)", + expired: "var(--color-danger)", + revoked: "var(--color-neutral)", + renewed: "var(--color-success)" +}; + +export const formatTickLabel = (value: string) => { + if (value.length === 10) { + const [, m, d] = value.split("-"); + const date = new Date(Number(value.slice(0, 4)), Number(m) - 1, Number(d)); + return date.toLocaleDateString("en-US", { month: "short", day: "numeric" }); + } + const [year, month] = value.split("-"); + const date = new Date(Number(year), Number(month) - 1); + return date.toLocaleDateString("en-US", { month: "short", year: "2-digit" }); +}; + +export const legendFormatter = (value: string) => ( + {value} +); + +export const nonZeroDot = (dataKey: string, color: string, seriesKeys?: string[]) => { + return ({ cx, cy, payload }: { cx?: number; cy?: number; payload?: Record }) => { + if (cx == null || cy == null) return null; + const val = payload?.[dataKey]; + if (!val || val === 0) return null; + + let offsetX = 0; + if (seriesKeys) { + const sameValKeys = seriesKeys.filter((k) => payload?.[k] === val); + const myIdx = sameValKeys.indexOf(dataKey); + offsetX = sameValKeys.length > 1 ? (myIdx - (sameValKeys.length - 1) / 2) * 6 : 0; + } + + return ( + + ); + }; +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx new file mode 100644 index 00000000000..3862c8a19c9 --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx @@ -0,0 +1,5 @@ +export { ActivityTrend } from "./ActivityTrend"; +export { CodeSigningSection } from "./CodeSigningSection"; +export { DistributionCharts } from "./DistributionCharts"; +export { ExpirationTimeline } from "./ExpirationTimeline"; +export { KpiCards } from "./KpiCards"; diff --git a/frontend/src/pages/cert-manager/DashboardPage/route-index.tsx b/frontend/src/pages/cert-manager/DashboardPage/route-index.tsx new file mode 100644 index 00000000000..a91fd8d56e7 --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/route-index.tsx @@ -0,0 +1,12 @@ +import { createFileRoute, redirect } from "@tanstack/react-router"; + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/" +)({ + beforeLoad: ({ params }) => { + throw redirect({ + to: "/organizations/$orgId/projects/cert-manager/$projectId/overview", + params + }); + } +}); diff --git a/frontend/src/pages/cert-manager/DashboardPage/route.tsx b/frontend/src/pages/cert-manager/DashboardPage/route.tsx new file mode 100644 index 00000000000..39c11d3f792 --- /dev/null +++ b/frontend/src/pages/cert-manager/DashboardPage/route.tsx @@ -0,0 +1,19 @@ +import { createFileRoute } from "@tanstack/react-router"; + +import { DashboardPage } from "./DashboardPage"; + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/overview" +)({ + component: DashboardPage, + beforeLoad: ({ context }) => { + return { + breadcrumbs: [ + ...context.breadcrumbs, + { + label: "Dashboard" + } + ] + }; + } +}); diff --git a/frontend/src/pages/cert-manager/PoliciesPage/PoliciesPage.tsx b/frontend/src/pages/cert-manager/PoliciesPage/PoliciesPage.tsx index 4ae23654487..33f686071d9 100644 --- a/frontend/src/pages/cert-manager/PoliciesPage/PoliciesPage.tsx +++ b/frontend/src/pages/cert-manager/PoliciesPage/PoliciesPage.tsx @@ -1,10 +1,11 @@ -import { useState } from "react"; +import { useMemo, useState } from "react"; import { Helmet } from "react-helmet"; import { useTranslation } from "react-i18next"; import { useNavigate, useSearch } from "@tanstack/react-router"; import { PermissionDeniedBanner } from "@app/components/permissions"; -import { ContentLoader, PageHeader } from "@app/components/v2"; +import { PageHeader } from "@app/components/v2"; +import { UnstablePageLoader } from "@app/components/v3"; import { useProject, useProjectPermission } from "@app/context"; import { ProjectPermissionCertificateActions, @@ -31,13 +32,77 @@ export const PoliciesPage = () => { const { currentProject } = useProject(); const { permission } = useProjectPermission(); const navigate = useNavigate(); - const { selectedTab } = useSearch({ + const searchParams = useSearch({ from: "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/policies" }); - const activeTab = (selectedTab as TabSections) || TabSections.Certificates; + const activeTab = (searchParams.selectedTab as TabSections) || TabSections.Certificates; const [certificateFilter, setCertificateFilter] = useState<{ search?: string }>({}); + const dashboardFilters = useMemo(() => { + const filters: Array<{ + id: string; + field: string; + operator: string; + value: string | string[]; + }> = []; + if (searchParams.filterStatus) { + filters.push({ + id: "dash-status", + field: "status", + operator: "in", + value: [searchParams.filterStatus] + }); + } + if (searchParams.filterEnrollmentType) { + filters.push({ + id: "dash-enrollment", + field: "enrollmentType", + operator: "in", + value: [searchParams.filterEnrollmentType] + }); + } + if (searchParams.filterKeyAlgorithm) { + filters.push({ + id: "dash-algorithm", + field: "keyAlgorithm", + operator: "is", + value: searchParams.filterKeyAlgorithm + }); + } + if (searchParams.filterCaId) { + filters.push({ + id: "dash-ca", + field: "caId", + operator: "in", + value: [searchParams.filterCaId] + }); + } + if (searchParams.filterExpiresDays) { + const days = Number(searchParams.filterExpiresDays); + const futureDate = new Date(); + futureDate.setDate(futureDate.getDate() + days); + filters.push({ + id: "dash-expires", + field: "notAfter", + operator: "before", + value: futureDate.toISOString().split("T")[0] + }); + } + if (searchParams.filterExpiresAfterDays) { + const days = Number(searchParams.filterExpiresAfterDays); + const afterDate = new Date(); + afterDate.setDate(afterDate.getDate() + days); + filters.push({ + id: "dash-expires-after", + field: "notAfter", + operator: "after", + value: afterDate.toISOString().split("T")[0] + }); + } + return filters; + }, [searchParams]); + const handleViewCertificateFromRequest = (certificateId: string) => { setCertificateFilter({ search: certificateId }); navigate({ @@ -60,7 +125,7 @@ export const PoliciesPage = () => { ); if (!currentProject) { - return ; + return ; } return ( @@ -77,7 +142,10 @@ export const PoliciesPage = () => {
{activeTab === TabSections.Certificates && (canReadCertificates ? ( - + ) : ( ))} diff --git a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificatesTab/CertificatesTab.tsx b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificatesTab/CertificatesTab.tsx index 24cc69c8a6a..a84904f4a63 100644 --- a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificatesTab/CertificatesTab.tsx +++ b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificatesTab/CertificatesTab.tsx @@ -1,12 +1,16 @@ import { CertificatesSection } from "../../../CertificatesPage/components/CertificatesSection"; +import type { FilterRule } from "../../../CertificatesPage/components/inventory-types"; type Props = { externalFilter?: { certificateId?: string; search?: string; }; + dashboardFilters?: FilterRule[]; }; -export const CertificatesTab = ({ externalFilter }: Props) => { - return ; +export const CertificatesTab = ({ externalFilter, dashboardFilters }: Props) => { + return ( + + ); }; diff --git a/frontend/src/pages/cert-manager/PoliciesPage/route.tsx b/frontend/src/pages/cert-manager/PoliciesPage/route.tsx index 19524feabb0..cc05db101b1 100644 --- a/frontend/src/pages/cert-manager/PoliciesPage/route.tsx +++ b/frontend/src/pages/cert-manager/PoliciesPage/route.tsx @@ -5,7 +5,13 @@ import { z } from "zod"; import { PoliciesPage } from "./PoliciesPage"; const policiesPageSearchSchema = z.object({ - selectedTab: z.string().optional().default("certificates") + selectedTab: z.string().optional().default("certificates"), + filterStatus: z.string().optional(), + filterEnrollmentType: z.string().optional(), + filterKeyAlgorithm: z.string().optional(), + filterCaId: z.string().optional(), + filterExpiresDays: z.string().optional(), + filterExpiresAfterDays: z.string().optional() }); export const Route = createFileRoute( diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index 948a8f60127..e56f45e3159 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -101,6 +101,7 @@ import { Route as projectAppConnectionsPageRouteCertManagerImport } from './page import { Route as projectAccessControlPageRouteCertManagerImport } from './pages/project/AccessControlPage/route-cert-manager' import { Route as projectAuditLogsPageRouteAiImport } from './pages/project/AuditLogsPage/route-ai' import { Route as projectAccessControlPageRouteAiImport } from './pages/project/AccessControlPage/route-ai' +import { Route as certManagerDashboardPageRouteIndexImport } from './pages/cert-manager/DashboardPage/route-index' import { Route as sshSettingsPageRouteImport } from './pages/ssh/SettingsPage/route' import { Route as sshSshHostsPageRouteImport } from './pages/ssh/SshHostsPage/route' import { Route as sshSshCertsPageRouteImport } from './pages/ssh/SshCertsPage/route' @@ -119,6 +120,7 @@ import { Route as kmsOverviewPageRouteImport } from './pages/kms/OverviewPage/ro import { Route as kmsKmipPageRouteImport } from './pages/kms/KmipPage/route' import { Route as certManagerSettingsPageRouteImport } from './pages/cert-manager/SettingsPage/route' import { Route as certManagerPoliciesPageRouteImport } from './pages/cert-manager/PoliciesPage/route' +import { Route as certManagerDashboardPageRouteImport } from './pages/cert-manager/DashboardPage/route' import { Route as certManagerCertificateAuthoritiesPageRouteImport } from './pages/cert-manager/CertificateAuthoritiesPage/route' import { Route as certManagerApprovalsPageRouteImport } from './pages/cert-manager/ApprovalsPage/route' import { Route as certManagerAlertingPageRouteImport } from './pages/cert-manager/AlertingPage/route' @@ -1235,6 +1237,13 @@ const projectAccessControlPageRouteAiRoute = getParentRoute: () => aiLayoutRoute, } as any) +const certManagerDashboardPageRouteIndexRoute = + certManagerDashboardPageRouteIndexImport.update({ + id: '/', + path: '/', + getParentRoute: () => certManagerLayoutRoute, + } as any) + const sshSettingsPageRouteRoute = sshSettingsPageRouteImport.update({ id: '/settings', path: '/settings', @@ -1352,6 +1361,13 @@ const certManagerPoliciesPageRouteRoute = getParentRoute: () => certManagerLayoutRoute, } as any) +const certManagerDashboardPageRouteRoute = + certManagerDashboardPageRouteImport.update({ + id: '/overview', + path: '/overview', + getParentRoute: () => certManagerLayoutRoute, + } as any) + const certManagerCertificateAuthoritiesPageRouteRoute = certManagerCertificateAuthoritiesPageRouteImport.update({ id: '/certificate-authorities', @@ -3165,6 +3181,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof certManagerCertificateAuthoritiesPageRouteImport parentRoute: typeof certManagerLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/overview': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/overview' + path: '/overview' + fullPath: '/organizations/$orgId/projects/cert-manager/$projectId/overview' + preLoaderRoute: typeof certManagerDashboardPageRouteImport + parentRoute: typeof certManagerLayoutImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/policies': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/policies' path: '/policies' @@ -3291,6 +3314,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof sshSettingsPageRouteImport parentRoute: typeof sshLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/' + path: '/' + fullPath: '/organizations/$orgId/projects/cert-manager/$projectId/' + preLoaderRoute: typeof certManagerDashboardPageRouteIndexImport + parentRoute: typeof certManagerLayoutImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout/access-management': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout/access-management' path: '/access-management' @@ -4672,8 +4702,10 @@ interface certManagerLayoutRouteChildren { certManagerAlertingPageRouteRoute: typeof certManagerAlertingPageRouteRoute certManagerApprovalsPageRouteRoute: typeof certManagerApprovalsPageRouteRoute certManagerCertificateAuthoritiesPageRouteRoute: typeof certManagerCertificateAuthoritiesPageRouteRoute + certManagerDashboardPageRouteRoute: typeof certManagerDashboardPageRouteRoute certManagerPoliciesPageRouteRoute: typeof certManagerPoliciesPageRouteRoute certManagerSettingsPageRouteRoute: typeof certManagerSettingsPageRouteRoute + certManagerDashboardPageRouteIndexRoute: typeof certManagerDashboardPageRouteIndexRoute projectAccessControlPageRouteCertManagerRoute: typeof projectAccessControlPageRouteCertManagerRoute projectAppConnectionsPageRouteCertManagerRoute: typeof projectAppConnectionsPageRouteCertManagerRoute projectAuditLogsPageRouteCertManagerRoute: typeof projectAuditLogsPageRouteCertManagerRoute @@ -4697,8 +4729,11 @@ const certManagerLayoutRouteChildren: certManagerLayoutRouteChildren = { certManagerApprovalsPageRouteRoute: certManagerApprovalsPageRouteRoute, certManagerCertificateAuthoritiesPageRouteRoute: certManagerCertificateAuthoritiesPageRouteRoute, + certManagerDashboardPageRouteRoute: certManagerDashboardPageRouteRoute, certManagerPoliciesPageRouteRoute: certManagerPoliciesPageRouteRoute, certManagerSettingsPageRouteRoute: certManagerSettingsPageRouteRoute, + certManagerDashboardPageRouteIndexRoute: + certManagerDashboardPageRouteIndexRoute, projectAccessControlPageRouteCertManagerRoute: projectAccessControlPageRouteCertManagerRoute, projectAppConnectionsPageRouteCertManagerRoute: @@ -5830,6 +5865,7 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/cert-manager/$projectId/alerting': typeof certManagerAlertingPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/approvals': typeof certManagerApprovalsPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/certificate-authorities': typeof certManagerCertificateAuthoritiesPageRouteRoute + '/organizations/$orgId/projects/cert-manager/$projectId/overview': typeof certManagerDashboardPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/policies': typeof certManagerPoliciesPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/settings': typeof certManagerSettingsPageRouteRoute '/organizations/$orgId/projects/kms/$projectId/kmip': typeof kmsKmipPageRouteRoute @@ -5848,6 +5884,7 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/ssh/$projectId/certificates': typeof sshSshCertsPageRouteRoute '/organizations/$orgId/projects/ssh/$projectId/overview': typeof sshSshHostsPageRouteRoute '/organizations/$orgId/projects/ssh/$projectId/settings': typeof sshSettingsPageRouteRoute + '/organizations/$orgId/projects/cert-manager/$projectId/': typeof certManagerDashboardPageRouteIndexRoute '/organizations/$orgId/projects/ai/$projectId/access-management': typeof projectAccessControlPageRouteAiRoute '/organizations/$orgId/projects/ai/$projectId/audit-logs': typeof projectAuditLogsPageRouteAiRoute '/organizations/$orgId/projects/cert-manager/$projectId/access-management': typeof projectAccessControlPageRouteCertManagerRoute @@ -6083,7 +6120,7 @@ export interface FileRoutesByTo { '/organizations/$orgId/secret-manager/$projectId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdSecretManagerProjectIdRouteWithChildren '/organizations/$orgId/settings/oauth/callback': typeof organizationSettingsPageOauthCallbackPageRouteRoute '/organizations/$orgId/projects/ai/$projectId': typeof aiLayoutRouteWithChildren - '/organizations/$orgId/projects/cert-manager/$projectId': typeof certManagerLayoutRouteWithChildren + '/organizations/$orgId/projects/cert-manager/$projectId': typeof certManagerDashboardPageRouteIndexRoute '/organizations/$orgId/projects/kms/$projectId': typeof kmsLayoutRouteWithChildren '/organizations/$orgId/projects/pam/$projectId': typeof pamLayoutRouteWithChildren '/organizations/$orgId/projects/secret-management/$projectId': typeof secretManagerLayoutRouteWithChildren @@ -6096,6 +6133,7 @@ export interface FileRoutesByTo { '/organizations/$orgId/projects/cert-manager/$projectId/alerting': typeof certManagerAlertingPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/approvals': typeof certManagerApprovalsPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/certificate-authorities': typeof certManagerCertificateAuthoritiesPageRouteRoute + '/organizations/$orgId/projects/cert-manager/$projectId/overview': typeof certManagerDashboardPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/policies': typeof certManagerPoliciesPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/settings': typeof certManagerSettingsPageRouteRoute '/organizations/$orgId/projects/kms/$projectId/kmip': typeof kmsKmipPageRouteRoute @@ -6368,6 +6406,7 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/alerting': typeof certManagerAlertingPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/approvals': typeof certManagerApprovalsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/certificate-authorities': typeof certManagerCertificateAuthoritiesPageRouteRoute + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/overview': typeof certManagerDashboardPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/policies': typeof certManagerPoliciesPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/settings': typeof certManagerSettingsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/kmip': typeof kmsKmipPageRouteRoute @@ -6386,6 +6425,7 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/certificates': typeof sshSshCertsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/overview': typeof sshSshHostsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/settings': typeof sshSettingsPageRouteRoute + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/': typeof certManagerDashboardPageRouteIndexRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout/access-management': typeof projectAccessControlPageRouteAiRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout/audit-logs': typeof projectAuditLogsPageRouteAiRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/access-management': typeof projectAccessControlPageRouteCertManagerRoute @@ -6643,6 +6683,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/cert-manager/$projectId/alerting' | '/organizations/$orgId/projects/cert-manager/$projectId/approvals' | '/organizations/$orgId/projects/cert-manager/$projectId/certificate-authorities' + | '/organizations/$orgId/projects/cert-manager/$projectId/overview' | '/organizations/$orgId/projects/cert-manager/$projectId/policies' | '/organizations/$orgId/projects/cert-manager/$projectId/settings' | '/organizations/$orgId/projects/kms/$projectId/kmip' @@ -6661,6 +6702,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/ssh/$projectId/certificates' | '/organizations/$orgId/projects/ssh/$projectId/overview' | '/organizations/$orgId/projects/ssh/$projectId/settings' + | '/organizations/$orgId/projects/cert-manager/$projectId/' | '/organizations/$orgId/projects/ai/$projectId/access-management' | '/organizations/$orgId/projects/ai/$projectId/audit-logs' | '/organizations/$orgId/projects/cert-manager/$projectId/access-management' @@ -6908,6 +6950,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/cert-manager/$projectId/alerting' | '/organizations/$orgId/projects/cert-manager/$projectId/approvals' | '/organizations/$orgId/projects/cert-manager/$projectId/certificate-authorities' + | '/organizations/$orgId/projects/cert-manager/$projectId/overview' | '/organizations/$orgId/projects/cert-manager/$projectId/policies' | '/organizations/$orgId/projects/cert-manager/$projectId/settings' | '/organizations/$orgId/projects/kms/$projectId/kmip' @@ -7178,6 +7221,7 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/alerting' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/approvals' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/certificate-authorities' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/overview' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/policies' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/settings' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/kms/$projectId/_kms-layout/kmip' @@ -7196,6 +7240,7 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/certificates' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/overview' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout/settings' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout/access-management' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout/audit-logs' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/access-management' @@ -7884,8 +7929,10 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/alerting", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/approvals", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/certificate-authorities", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/overview", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/policies", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/settings", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/access-management", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/app-connections", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/audit-logs", @@ -8012,6 +8059,10 @@ export const routeTree = rootRoute "filePath": "cert-manager/CertificateAuthoritiesPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout" }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/overview": { + "filePath": "cert-manager/DashboardPage/route.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout" + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/policies": { "filePath": "cert-manager/PoliciesPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout" @@ -8084,6 +8135,10 @@ export const routeTree = rootRoute "filePath": "ssh/SettingsPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ssh/$projectId/_ssh-layout" }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/": { + "filePath": "cert-manager/DashboardPage/route-index.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout" + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout/access-management": { "filePath": "project/AccessControlPage/route-ai.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/ai/$projectId/_ai-layout" diff --git a/frontend/src/routes.ts b/frontend/src/routes.ts index 9ef979376ec..f279b460cb3 100644 --- a/frontend/src/routes.ts +++ b/frontend/src/routes.ts @@ -274,6 +274,8 @@ const secretManagerIntegrationsRedirect = route("/integrations", [ const certManagerRoutes = route("/organizations/$orgId/projects/cert-manager/$projectId", [ layout("cert-manager-layout", "cert-manager/layout.tsx", [ + index("cert-manager/DashboardPage/route-index.tsx"), + route("/overview", "cert-manager/DashboardPage/route.tsx"), route("/policies", "cert-manager/PoliciesPage/route.tsx"), route("/subscribers", [ index("cert-manager/PkiSubscribersPage/route.tsx"), From 5e8b4d7855f68a06d5b32bb51a40079f98917836 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Tue, 7 Apr 2026 09:33:32 -0300 Subject: [PATCH 049/562] Address greptile comments --- ...260401124650_certificate-inventory-views.ts | 2 +- .../db/schemas/certificate-inventory-views.ts | 2 +- .../src/services/project/project-service.ts | 12 ++++++++++-- .../CertificatesPage/components/csvExport.ts | 18 ++++++++++++++++-- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/backend/src/db/migrations/20260401124650_certificate-inventory-views.ts b/backend/src/db/migrations/20260401124650_certificate-inventory-views.ts index e62d5109ab3..261954af475 100644 --- a/backend/src/db/migrations/20260401124650_certificate-inventory-views.ts +++ b/backend/src/db/migrations/20260401124650_certificate-inventory-views.ts @@ -12,7 +12,7 @@ export async function up(knex: Knex): Promise { t.foreign("projectId").references("id").inTable(TableName.Project).onDelete("CASCADE"); t.string("name", 255).notNullable(); - t.jsonb("filters").notNullable().defaultTo("{}"); + t.jsonb("filters").notNullable(); t.jsonb("columns").nullable(); t.uuid("createdByUserId").nullable(); diff --git a/backend/src/db/schemas/certificate-inventory-views.ts b/backend/src/db/schemas/certificate-inventory-views.ts index f63e6b7f96d..78b54e1d146 100644 --- a/backend/src/db/schemas/certificate-inventory-views.ts +++ b/backend/src/db/schemas/certificate-inventory-views.ts @@ -11,7 +11,7 @@ export const CertificateInventoryViewsSchema = z.object({ id: z.string().uuid(), projectId: z.string(), name: z.string(), - filters: z.unknown().default({}), + filters: z.unknown(), columns: z.unknown().nullable().optional(), createdByUserId: z.string().uuid().nullable().optional(), createdAt: z.date(), diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index cf1bceb3b7b..6c399f62dfb 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -1364,7 +1364,11 @@ export const projectServiceFactory = ({ const cacheKey = KeyStorePrefixes.CertDashboardStats(projectId); const cached = await keyStore.getItem(cacheKey); if (cached) { - return JSON.parse(cached) as Awaited>; + try { + return JSON.parse(cached) as Awaited>; + } catch { + // stale entry — recompute + } } const stats = await certificateDAL.getDashboardStats(projectId); @@ -1403,7 +1407,11 @@ export const projectServiceFactory = ({ const cacheKey = KeyStorePrefixes.CertActivityTrend(projectId, range); const cached = await keyStore.getItem(cacheKey); if (cached) { - return JSON.parse(cached) as Awaited>; + try { + return JSON.parse(cached) as Awaited>; + } catch { + // stale entry — recompute + } } const trend = await certificateDAL.getActivityTrend(projectId, daysBack); diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/csvExport.ts b/frontend/src/pages/cert-manager/CertificatesPage/components/csvExport.ts index 31e9a6ad805..d5e1e5db176 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/csvExport.ts +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/csvExport.ts @@ -1,4 +1,6 @@ -import { TCertificate } from "@app/hooks/api/certificates/types"; +import { TCertificate, TCertificateSource } from "@app/hooks/api/certificates/types"; + +import { getCertSourceLabel } from "./CertificatesTable.utils"; const CSV_COLUMNS = [ { key: "commonName", header: "Common Name" }, @@ -17,7 +19,16 @@ const CSV_COLUMNS = [ const escapeCSV = (value: string | null | undefined): string => { if (value === null || value === undefined) return ""; const str = String(value); - if (str.includes(",") || str.includes('"') || str.includes("\n")) { + const needsQuoting = + str.includes(",") || + str.includes('"') || + str.includes("\n") || + str.includes("\r") || + str.startsWith("=") || + str.startsWith("+") || + str.startsWith("-") || + str.startsWith("@"); + if (needsQuoting) { return `"${str.replace(/"/g, '""')}"`; } return str; @@ -27,6 +38,9 @@ export const certificatesToCSV = (certificates: TCertificate[]): string => { const header = CSV_COLUMNS.map((col) => col.header).join(","); const rows = certificates.map((cert) => CSV_COLUMNS.map((col) => { + if (col.key === "source") { + return escapeCSV(getCertSourceLabel((cert.source ?? null) as TCertificateSource)); + } const value = cert[col.key as keyof TCertificate]; if (value === null || value === undefined) return ""; if (typeof value === "object") return escapeCSV(JSON.stringify(value)); From 4048f1300dfc25e8554b5a15e801e5633f7f9b97 Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Mon, 6 Apr 2026 21:49:33 +0200 Subject: [PATCH 050/562] fix: refactor pr --- backend/src/@types/knex.d.ts | 8 + ...name-vault-to-external-migration-config.ts | 93 +++-- .../db/schemas/external-migration-configs.ts | 8 +- .../routes/v3/external-migration-router.ts | 195 +++-------- .../doppler/doppler-connection-types.ts | 2 +- .../external-migration-schemas.ts | 26 ++ .../external-migration-service.ts | 316 +++++++---------- .../external-migration-types.ts | 22 +- .../src/hooks/api/migration/mutations.tsx | 122 ++----- frontend/src/hooks/api/migration/queries.tsx | 26 +- frontend/src/hooks/api/migration/types.ts | 43 ++- .../IdentityKubernetesAuthForm.tsx | 6 +- .../components/DopplerConfigModal.tsx | 24 +- .../components/DopplerImportModal.tsx | 324 ------------------ .../components/InPlatformMigrationSection.tsx | 165 +++------ .../components/VaultNamespaceConfigModal.tsx | 30 +- .../components/AddPoliciesButton.tsx | 5 +- .../OverviewPage/OverviewPage.tsx | 9 +- .../components/ActionBar/ActionBar.tsx | 6 +- .../components/LoadFromVaultBanner.tsx | 5 +- .../ActionBar/DopplerSecretImportModal.tsx | 4 +- 21 files changed, 440 insertions(+), 999 deletions(-) create mode 100644 backend/src/services/external-migration/external-migration-schemas.ts delete mode 100644 frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index eaa3427c539..6f18e096e73 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -629,6 +629,9 @@ import { TUsers, TUsersInsert, TUsersUpdate, + TVaultExternalMigrationConfigs, + TVaultExternalMigrationConfigsInsert, + TVaultExternalMigrationConfigsUpdate, TWebauthnCredentials, TWebauthnCredentialsInsert, TWebauthnCredentialsUpdate, @@ -1752,5 +1755,10 @@ declare module "knex/types/tables" { TSecretValidationRulesInsert, TSecretValidationRulesUpdate >; + [TableName.VaultExternalMigrationConfig]: KnexOriginal.CompositeTableType< + TVaultExternalMigrationConfigs, + TVaultExternalMigrationConfigsInsert, + TVaultExternalMigrationConfigsUpdate + >; } } diff --git a/backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts b/backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts index a05b1f7c17b..b91e97c9fa8 100644 --- a/backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts +++ b/backend/src/db/migrations/20260330172252_rename-vault-to-external-migration-config.ts @@ -1,50 +1,71 @@ import { Knex } from "knex"; +import { inMemoryKeyStore } from "@app/keystore/memory"; +import { selectAllTableCols } from "@app/lib/knex"; +import { initLogger } from "@app/lib/logger"; +import { ExternalMigrationProviders } from "@app/services/external-migration/external-migration-schemas"; +import { kmsRootConfigDALFactory } from "@app/services/kms/kms-root-config-dal"; +import { KmsDataKey } from "@app/services/kms/kms-types"; +import { superAdminDALFactory } from "@app/services/super-admin/super-admin-dal"; + import { TableName } from "../schemas"; import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; +import { getMigrationEnvConfig, getMigrationHsmConfig } from "./utils/env-config"; +import { getMigrationEncryptionServices, getMigrationHsmService } from "./utils/services"; export async function up(knex: Knex): Promise { - if (await knex.schema.hasTable(TableName.VaultExternalMigrationConfig)) { - await knex.schema.renameTable(TableName.VaultExternalMigrationConfig, TableName.ExternalMigrationConfig); - } - - if (await knex.schema.hasTable(TableName.ExternalMigrationConfig)) { - const hasProviderColumn = await knex.schema.hasColumn(TableName.ExternalMigrationConfig, "provider"); - if (!hasProviderColumn) { - await knex.schema.alterTable(TableName.ExternalMigrationConfig, (t) => { - t.string("provider").notNullable().defaultTo("vault"); - }); - await knex(TableName.ExternalMigrationConfig).update({ provider: "vault" }); - } + initLogger(); + const { hsmService } = await getMigrationHsmService({ envConfig: getMigrationHsmConfig() }); + const superAdminDAL = superAdminDALFactory(knex); + const kmsRootConfigDAL = kmsRootConfigDALFactory(knex); + const envConfig = await getMigrationEnvConfig(superAdminDAL, hsmService, kmsRootConfigDAL); + const keyStore = inMemoryKeyStore(); + const { kmsService } = await getMigrationEncryptionServices({ envConfig, keyStore, db: knex }); - const hasNullableNamespace = await knex.schema.hasColumn(TableName.ExternalMigrationConfig, "namespace"); - if (hasNullableNamespace) { - await knex.schema.alterTable(TableName.ExternalMigrationConfig, (t) => { - t.string("namespace").nullable().alter(); - }); - } + if (!(await knex.schema.hasTable(TableName.ExternalMigrationConfig))) { + await knex.schema.createTable(TableName.ExternalMigrationConfig, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + t.uuid("orgId").notNullable(); + t.foreign("orgId").references("id").inTable(TableName.Organization).onDelete("CASCADE"); + t.string("provider").notNullable(); + t.binary("encryptedConfig").notNullable(); + t.uuid("connectionId"); + t.foreign("connectionId").references("id").inTable(TableName.AppConnection); + t.timestamps(true, true, true); + }); - // Drop the old trigger (still named after the old table, but now on the renamed table) - await knex.raw( - `DROP TRIGGER IF EXISTS "${TableName.VaultExternalMigrationConfig}_updatedAt" ON ${TableName.ExternalMigrationConfig}` - ); await createOnUpdateTrigger(knex, TableName.ExternalMigrationConfig); + + if (await knex.schema.hasTable(TableName.VaultExternalMigrationConfig)) { + const existingVaultConfigs = await knex(TableName.VaultExternalMigrationConfig).select( + selectAllTableCols(TableName.VaultExternalMigrationConfig) + ); + + await Promise.all( + existingVaultConfigs.map(async (vaultConfig) => { + const { encryptor } = await kmsService.createCipherPairWithDataKey({ + orgId: vaultConfig.orgId, + type: KmsDataKey.Organization + }); + + const config = { + namespace: vaultConfig.namespace + }; + const { cipherTextBlob: encryptedConfig } = encryptor({ plainText: Buffer.from(JSON.stringify(config)) }); + + await knex(TableName.ExternalMigrationConfig).insert({ + orgId: vaultConfig.orgId, + provider: ExternalMigrationProviders.Vault, + encryptedConfig, + connectionId: vaultConfig.connectionId + }); + }) + ); + } } } export async function down(knex: Knex): Promise { - if (await knex.schema.hasTable(TableName.ExternalMigrationConfig)) { - // Remove Doppler rows before re-applying the NOT NULL constraint on namespace - await knex(TableName.ExternalMigrationConfig).where("provider", "doppler").delete(); - - const hasProviderColumn = await knex.schema.hasColumn(TableName.ExternalMigrationConfig, "provider"); - await knex.schema.alterTable(TableName.ExternalMigrationConfig, (t) => { - if (hasProviderColumn) t.dropColumn("provider"); - t.string("namespace").notNullable().alter(); - }); - - await dropOnUpdateTrigger(knex, TableName.ExternalMigrationConfig); - await knex.schema.renameTable(TableName.ExternalMigrationConfig, TableName.VaultExternalMigrationConfig); - await createOnUpdateTrigger(knex, TableName.VaultExternalMigrationConfig); - } + await knex.schema.dropTableIfExists(TableName.ExternalMigrationConfig); + await dropOnUpdateTrigger(knex, TableName.ExternalMigrationConfig); } diff --git a/backend/src/db/schemas/external-migration-configs.ts b/backend/src/db/schemas/external-migration-configs.ts index bf46dc8f758..bd77923b225 100644 --- a/backend/src/db/schemas/external-migration-configs.ts +++ b/backend/src/db/schemas/external-migration-configs.ts @@ -5,16 +5,18 @@ import { z } from "zod"; +import { zodBuffer } from "@app/lib/zod"; + import { TImmutableDBKeys } from "./models"; export const ExternalMigrationConfigsSchema = z.object({ id: z.string().uuid(), orgId: z.string().uuid(), - namespace: z.string().nullable().optional(), + provider: z.string(), + encryptedConfig: zodBuffer, connectionId: z.string().uuid().nullable().optional(), createdAt: z.date(), - updatedAt: z.date(), - provider: z.string().default("vault") + updatedAt: z.date() }); export type TExternalMigrationConfigs = z.infer; diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index 0d960139a19..2fe578b31ff 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -6,10 +6,10 @@ import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; import { - ExternalMigrationProviders, - VaultImportStatus, - VaultMappingType -} from "@app/services/external-migration/external-migration-types"; + ExternalMigrationConfigSchema, + ExternalMigrationProviders +} from "@app/services/external-migration/external-migration-schemas"; +import { VaultImportStatus, VaultMappingType } from "@app/services/external-migration/external-migration-types"; const MB25_IN_BYTES = 26214400; @@ -122,19 +122,22 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider server.route({ method: "GET", - url: "/vault/configs", + url: "/:provider/configs", config: { rateLimit: readLimit }, schema: { - operationId: "getVaultExternalMigrationConfigsV3", + operationId: "getExternalMigrationConfigsV3", + params: z.object({ + provider: z.nativeEnum(ExternalMigrationProviders) + }), response: { 200: z.object({ configs: z .object({ id: z.string(), orgId: z.string(), - namespace: z.string().nullable().optional(), + provider: z.string(), connectionId: z.string().nullish(), createdAt: z.date(), updatedAt: z.date() @@ -145,8 +148,9 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const configs = await server.services.migration.getVaultExternalMigrationConfigs({ - actor: req.permission + const configs = await server.services.migration.getExternalMigrationConfigs({ + actor: req.permission, + provider: req.params.provider }); return { configs }; @@ -155,23 +159,26 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider server.route({ method: "POST", - url: "/vault/configs", + url: "/:provider/configs", config: { rateLimit: writeLimit }, schema: { - operationId: "createVaultExternalMigrationV3", + operationId: "createExternalMigrationV3", + params: z.object({ + provider: z.nativeEnum(ExternalMigrationProviders) + }), body: z.object({ connectionId: z.string(), - namespace: z.string() + input: ExternalMigrationConfigSchema }), response: { 200: z.object({ config: z.object({ id: z.string(), orgId: z.string(), - namespace: z.string().nullable().optional(), - connectionId: z.string().nullable().optional(), + provider: z.string(), + connectionId: z.string().nullish(), createdAt: z.date(), updatedAt: z.date() }) @@ -180,8 +187,9 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const config = await server.services.migration.createVaultExternalMigration({ - ...req.body, + const config = await server.services.migration.createExternalMigration({ + config: req.body.input, + connectionId: req.body.connectionId, actor: req.permission }); @@ -191,26 +199,27 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider server.route({ method: "PUT", - url: "/vault/configs/:id", + url: "/:provider/configs/:id", config: { rateLimit: writeLimit }, schema: { - operationId: "updateVaultExternalMigrationV3", + operationId: "updateExternalMigrationV3", params: z.object({ + provider: z.nativeEnum(ExternalMigrationProviders), id: z.string() }), body: z.object({ - connectionId: z.string(), - namespace: z.string() + connectionId: z.string().nullable(), + input: ExternalMigrationConfigSchema }), response: { 200: z.object({ config: z.object({ id: z.string(), orgId: z.string(), - namespace: z.string().nullable().optional(), - connectionId: z.string().nullable().optional(), + provider: z.string(), + connectionId: z.string().nullish(), createdAt: z.date(), updatedAt: z.date() }) @@ -219,9 +228,10 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const config = await server.services.migration.updateVaultExternalMigration({ + const config = await server.services.migration.updateExternalMigration({ id: req.params.id, - ...req.body, + config: req.body.input, + connectionId: req.body.connectionId, actor: req.permission }); @@ -231,13 +241,14 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider server.route({ method: "DELETE", - url: "/vault/configs/:id", + url: "/:provider/configs/:id", config: { rateLimit: writeLimit }, schema: { - operationId: "deleteVaultExternalMigrationV3", + operationId: "deleteExternalMigrationV3", params: z.object({ + provider: z.nativeEnum(ExternalMigrationProviders), id: z.string() }), response: { @@ -245,8 +256,8 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider config: z.object({ id: z.string(), orgId: z.string(), - namespace: z.string().nullable().optional(), - connectionId: z.string().nullable().optional(), + provider: z.string(), + connectionId: z.string().nullish(), createdAt: z.date(), updatedAt: z.date() }) @@ -255,7 +266,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const config = await server.services.migration.deleteVaultExternalMigration({ + const config = await server.services.migration.deleteExternalMigration({ id: req.params.id, actor: req.permission }); @@ -642,130 +653,6 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider // ─── Doppler In-Platform Migration Routes ──────────────────────────────────── - server.route({ - method: "GET", - url: "/doppler/configs", - config: { rateLimit: readLimit }, - schema: { - operationId: "getDopplerExternalMigrationConfigsV3", - response: { - 200: z.object({ - configs: z - .object({ - id: z.string(), - orgId: z.string(), - connectionId: z.string().nullish(), - provider: z.string(), - createdAt: z.date(), - updatedAt: z.date() - }) - .array() - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const configs = await server.services.migration.getDopplerExternalMigrationConfigs(req.permission); - return { configs }; - } - }); - - server.route({ - method: "POST", - url: "/doppler/configs", - config: { rateLimit: writeLimit }, - schema: { - operationId: "createDopplerExternalMigrationV3", - body: z.object({ - connectionId: z.string().uuid() - }), - response: { - 200: z.object({ - config: z.object({ - id: z.string(), - orgId: z.string(), - connectionId: z.string().nullish(), - provider: z.string(), - createdAt: z.date(), - updatedAt: z.date() - }) - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const config = await server.services.migration.createDopplerExternalMigration({ - connectionId: req.body.connectionId, - actor: req.permission - }); - return { config }; - } - }); - - server.route({ - method: "PUT", - url: "/doppler/configs/:id", - config: { rateLimit: writeLimit }, - schema: { - operationId: "updateDopplerExternalMigrationV3", - params: z.object({ id: z.string().uuid() }), - body: z.object({ - connectionId: z.string().uuid().nullable() - }), - response: { - 200: z.object({ - config: z.object({ - id: z.string(), - orgId: z.string(), - connectionId: z.string().nullish(), - provider: z.string(), - createdAt: z.date(), - updatedAt: z.date() - }) - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const config = await server.services.migration.updateDopplerExternalMigration({ - id: req.params.id, - connectionId: req.body.connectionId, - actor: req.permission - }); - return { config }; - } - }); - - server.route({ - method: "DELETE", - url: "/doppler/configs/:id", - config: { rateLimit: writeLimit }, - schema: { - operationId: "deleteDopplerExternalMigrationV3", - params: z.object({ id: z.string().uuid() }), - response: { - 200: z.object({ - config: z.object({ - id: z.string(), - orgId: z.string(), - connectionId: z.string().nullish(), - provider: z.string(), - createdAt: z.date(), - updatedAt: z.date() - }) - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const config = await server.services.migration.deleteDopplerExternalMigration({ - id: req.params.id, - actor: req.permission - }); - return { config }; - } - }); - server.route({ method: "GET", url: "/doppler/projects", @@ -780,7 +667,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider id: z.string(), slug: z.string(), name: z.string(), - description: z.string() + description: z.string().nullish() }) .array() }) diff --git a/backend/src/services/app-connection/doppler/doppler-connection-types.ts b/backend/src/services/app-connection/doppler/doppler-connection-types.ts index c4534ba5a84..85b42675a8e 100644 --- a/backend/src/services/app-connection/doppler/doppler-connection-types.ts +++ b/backend/src/services/app-connection/doppler/doppler-connection-types.ts @@ -25,7 +25,7 @@ export type TDopplerProject = { id: string; slug: string; name: string; - description: string; + description?: string | null; }; export type TDopplerEnvironment = { diff --git a/backend/src/services/external-migration/external-migration-schemas.ts b/backend/src/services/external-migration/external-migration-schemas.ts new file mode 100644 index 00000000000..ae16ba3b369 --- /dev/null +++ b/backend/src/services/external-migration/external-migration-schemas.ts @@ -0,0 +1,26 @@ +import { z } from "zod"; + +export enum ExternalMigrationProviders { + Vault = "vault", + EnvKey = "env-key", + Doppler = "doppler" +} + +export const ExternalMigrationConfigVaultConfigSchema = z.object({ + namespace: z.string() +}); + +export const ExternalMigrationConfigDopplerConfigSchema = z.object({}); + +export const ExternalMigrationConfigSchema = z.discriminatedUnion("provider", [ + z.object({ + provider: z.literal(ExternalMigrationProviders.Vault), + config: ExternalMigrationConfigVaultConfigSchema + }), + z.object({ + provider: z.literal(ExternalMigrationProviders.Doppler), + config: ExternalMigrationConfigDopplerConfigSchema + }) +]); + +export type TExternalMigrationConfig = z.infer; diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 8491f533dd0..571d340c28f 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -10,8 +10,7 @@ import { TGatewayServiceFactory } from "@app/ee/services/gateway/gateway-service import { TGatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2-service"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { crypto } from "@app/lib/crypto/cryptography"; -import { DatabaseErrorCode } from "@app/lib/error-codes"; -import { BadRequestError, DatabaseError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors"; +import { BadRequestError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors"; import { GatewayVersion } from "@app/lib/gateway/types"; import { OrgServiceActor } from "@app/lib/types"; @@ -37,6 +36,7 @@ import { THCVaultConnection } from "../app-connection/hc-vault"; import { TKmsServiceFactory } from "../kms/kms-service"; +import { KmsDataKey } from "../kms/kms-types"; import { TSecretServiceFactory } from "../secret/secret-service"; import { SecretProtectionType } from "../secret/secret-types"; import { TUserDALFactory } from "../user/user-dal"; @@ -51,19 +51,16 @@ import { vaultMigrationTransformMappings } from "./external-migration-fns"; import { TExternalMigrationQueueFactory } from "./external-migration-queue"; +import { ExternalMigrationConfigVaultConfigSchema, ExternalMigrationProviders } from "./external-migration-schemas"; import { - ExternalMigrationProviders, ExternalPlatforms, - TCreateDopplerExternalMigrationDTO, - TCreateVaultExternalMigrationDTO, - TDeleteDopplerExternalMigrationDTO, - TDeleteVaultExternalMigrationDTO, + TCreateExternalMigrationDTO, + TDeleteExternalMigrationDTO, THasCustomVaultMigrationDTO, TImportDopplerSecretsDTO, TImportEnvKeyDataDTO, TImportVaultDataDTO, - TUpdateDopplerExternalMigrationDTO, - TUpdateVaultExternalMigrationDTO, + TUpdateExternalMigrationDTO, VaultImportStatus } from "./external-migration-types"; @@ -365,7 +362,11 @@ export const externalMigrationServiceFactory = ({ } }; - const createVaultExternalMigration = async ({ namespace, connectionId, actor }: TCreateVaultExternalMigrationDTO) => { + const createExternalMigration = async ({ + config: migrationConfig, + connectionId, + actor + }: TCreateExternalMigrationDTO) => { const { hasRole } = await permissionService.getOrgPermission({ actorId: actor.id, actor: actor.type, @@ -376,49 +377,66 @@ export const externalMigrationServiceFactory = ({ }); if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can configure vault external migration" }); + throw new ForbiddenRequestError({ message: "Only admins can create external migration" }); } - const connection = await appConnectionService.connectAppConnectionById( - AppConnection.HCVault, - connectionId, - actor - ); - - await validateVaultExternalMigrationConnection({ - connection, - namespace + const existingConfigs = await externalMigrationConfigDAL.find({ + orgId: actor.orgId, + provider: migrationConfig.provider }); - try { - const config = await externalMigrationConfigDAL.create({ - namespace, - connectionId, - orgId: actor.orgId, - provider: ExternalMigrationProviders.Vault - }); + const { decryptor, encryptor } = await kmsService.createCipherPairWithDataKey({ + type: KmsDataKey.Organization, + orgId: actor.orgId + }); - return config; - } catch (error) { - if ( - error instanceof DatabaseError && - (error.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation - ) { - throw new BadRequestError({ - message: `Vault external migration already exists for this namespace` + if (migrationConfig.provider === ExternalMigrationProviders.Vault) { + if (existingConfigs?.length) { + const parsedConfigs = existingConfigs.map((cfg) => { + const decryptedConfig = decryptor({ cipherTextBlob: cfg.encryptedConfig }); + return ExternalMigrationConfigVaultConfigSchema.parse(JSON.parse(decryptedConfig.toString())); }); + + if (parsedConfigs.some((cfg) => cfg.namespace === migrationConfig.config.namespace)) { + throw new BadRequestError({ message: "A Vault external migration already exists for this namespace" }); + } } - throw error; + const connection = await appConnectionService.connectAppConnectionById( + AppConnection.HCVault, + connectionId, + actor + ); + await validateVaultExternalMigrationConnection({ + connection, + namespace: migrationConfig.config.namespace + }); + } else if (migrationConfig.provider === ExternalMigrationProviders.Doppler) { + if (existingConfigs?.length) { + if (existingConfigs.some((cfg) => cfg.connectionId === connectionId)) { + throw new BadRequestError({ + message: "A Doppler external migration already exists with the same app connection" + }); + } + } } + + const externalMigrationConfig = await externalMigrationConfigDAL.create({ + orgId: actor.orgId, + provider: migrationConfig.provider, + encryptedConfig: encryptor({ plainText: Buffer.from(JSON.stringify(migrationConfig.config)) }).cipherTextBlob, + connectionId + }); + + return externalMigrationConfig; }; - const updateVaultExternalMigration = async ({ + const updateExternalMigration = async ({ id, - namespace, + config: migrationConfig, connectionId, actor - }: TUpdateVaultExternalMigrationDTO) => { + }: TUpdateExternalMigrationDTO) => { const { hasRole } = await permissionService.getOrgPermission({ actorId: actor.id, actor: actor.type, @@ -429,39 +447,57 @@ export const externalMigrationServiceFactory = ({ }); if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can update vault external migration" }); + throw new ForbiddenRequestError({ message: "Only admins can update external migration" }); } const existing = await externalMigrationConfigDAL.findById(id); if (!existing || existing.orgId !== actor.orgId) { - throw new NotFoundError({ message: "Vault migration config not found" }); + throw new NotFoundError({ message: "External migration config not found" }); } - if (existing.provider !== ExternalMigrationProviders.Vault) { - throw new NotFoundError({ message: "Vault migration config not found" }); + + if (existing.provider !== migrationConfig.provider) { + throw new BadRequestError({ message: "Cannot change provider of an existing migration config" }); } - if (connectionId) { - const connection = await appConnectionService.connectAppConnectionById( - AppConnection.HCVault, - connectionId, - actor - ); + const { encryptor } = await kmsService.createCipherPairWithDataKey({ + type: KmsDataKey.Organization, + orgId: actor.orgId + }); - await validateVaultExternalMigrationConnection({ - connection, - namespace - }); + if (migrationConfig.provider === ExternalMigrationProviders.Vault) { + if (connectionId) { + const connection = await appConnectionService.connectAppConnectionById( + AppConnection.HCVault, + connectionId, + actor + ); + + await validateVaultExternalMigrationConnection({ + connection, + namespace: migrationConfig.config.namespace + }); + } + } else if (migrationConfig.provider === ExternalMigrationProviders.Doppler) { + if (connectionId) { + await appConnectionService.connectAppConnectionById(AppConnection.Doppler, connectionId, actor); + } } - const config = await externalMigrationConfigDAL.updateById(id, { - namespace, + const updatedConfig = await externalMigrationConfigDAL.updateById(id, { + encryptedConfig: encryptor({ plainText: Buffer.from(JSON.stringify(migrationConfig.config)) }).cipherTextBlob, connectionId }); - return config; + return updatedConfig; }; - const getVaultExternalMigrationConfigs = async ({ actor }: { actor: OrgServiceActor }) => { + const getExternalMigrationConfigs = async ({ + actor, + provider + }: { + actor: OrgServiceActor; + provider: ExternalMigrationProviders; + }) => { const { hasRole } = await permissionService.getOrgPermission({ actorId: actor.id, actor: actor.type, @@ -472,15 +508,13 @@ export const externalMigrationServiceFactory = ({ }); if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can view vault external migration configs" }); + throw new ForbiddenRequestError({ message: "Only admins can view external migration configs" }); } - const configs = await externalMigrationConfigDAL.find({ + return externalMigrationConfigDAL.findWithConnection({ orgId: actor.orgId, - provider: ExternalMigrationProviders.Vault + provider }); - - return configs; }; const getVaultNamespaces = async ({ actor }: { actor: OrgServiceActor }) => { @@ -503,12 +537,23 @@ export const externalMigrationServiceFactory = ({ provider: ExternalMigrationProviders.Vault }); + const { decryptor } = await kmsService.createCipherPairWithDataKey({ + type: KmsDataKey.Organization, + orgId: actor.orgId + }); + // Return the configured namespaces as an array of objects with id and name // where both id and name are the namespace path - const namespaces = vaultConfigs.map((config) => ({ - id: config.namespace, - name: config.namespace - })); + const namespaces = vaultConfigs.map((config) => { + const decryptedConfig = decryptor({ cipherTextBlob: config.encryptedConfig }); + + const parsedConfig = ExternalMigrationConfigVaultConfigSchema.parse(JSON.parse(decryptedConfig.toString())); + + return { + id: parsedConfig.namespace, + name: parsedConfig.namespace + }; + }); return namespaces; }; @@ -617,7 +662,7 @@ export const externalMigrationServiceFactory = ({ } }; - const deleteVaultExternalMigration = async ({ id, actor }: TDeleteVaultExternalMigrationDTO) => { + const deleteExternalMigration = async ({ id, actor }: TDeleteExternalMigrationDTO) => { const { hasRole } = await permissionService.getOrgPermission({ actorId: actor.id, actor: actor.type, @@ -628,26 +673,16 @@ export const externalMigrationServiceFactory = ({ }); if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can delete vault external migration configs" }); + throw new ForbiddenRequestError({ message: "Only admins can delete external migration configs" }); } const config = await externalMigrationConfigDAL.findById(id); - if (!config) { - throw new NotFoundError({ message: "Vault migration config not found" }); - } - - if (config.orgId !== actor.orgId) { - throw new ForbiddenRequestError({ message: "Config does not belong to this organization" }); - } - - if (config.provider !== ExternalMigrationProviders.Vault) { - throw new NotFoundError({ message: "Vault migration config not found" }); + if (!config || config.orgId !== actor.orgId) { + throw new NotFoundError({ message: "External migration config not found" }); } - const deletedConfig = await externalMigrationConfigDAL.deleteById(id); - - return deletedConfig; + return externalMigrationConfigDAL.deleteById(id); }; const getVaultAuthMounts = async ({ @@ -750,110 +785,6 @@ export const externalMigrationServiceFactory = ({ return appConnection; }; - const createDopplerExternalMigration = async ({ connectionId, actor }: TCreateDopplerExternalMigrationDTO) => { - const { hasRole } = await permissionService.getOrgPermission({ - scope: OrganizationActionScope.Any, - actor: actor.type, - actorId: actor.id, - orgId: actor.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId - }); - - if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can create Doppler migration configs" }); - } - - const existingConfig = await externalMigrationConfigDAL.findOne({ - orgId: actor.orgId, - provider: ExternalMigrationProviders.Doppler, - connectionId - }); - - if (existingConfig) { - throw new BadRequestError({ message: "A Doppler migration config already exists for this connection" }); - } - - const config = await externalMigrationConfigDAL.create({ - orgId: actor.orgId, - connectionId, - provider: ExternalMigrationProviders.Doppler, - namespace: null - }); - - return config; - }; - - const getDopplerExternalMigrationConfigs = async (actor: OrgServiceActor) => { - const { hasRole } = await permissionService.getOrgPermission({ - scope: OrganizationActionScope.Any, - actor: actor.type, - actorId: actor.id, - orgId: actor.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId - }); - - if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can view Doppler migration configs" }); - } - - return externalMigrationConfigDAL.findWithConnection({ - orgId: actor.orgId, - provider: ExternalMigrationProviders.Doppler - }); - }; - - const updateDopplerExternalMigration = async ({ id, connectionId, actor }: TUpdateDopplerExternalMigrationDTO) => { - const { hasRole } = await permissionService.getOrgPermission({ - scope: OrganizationActionScope.Any, - actor: actor.type, - actorId: actor.id, - orgId: actor.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId - }); - - if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can update Doppler migration configs" }); - } - - const config = await externalMigrationConfigDAL.findById(id); - - if (!config || config.orgId !== actor.orgId || config.provider !== ExternalMigrationProviders.Doppler) { - throw new NotFoundError({ message: "Doppler migration config not found" }); - } - - if (connectionId) { - await appConnectionService.connectAppConnectionById(AppConnection.Doppler, connectionId, actor); - } - - return externalMigrationConfigDAL.updateById(id, { connectionId }); - }; - - const deleteDopplerExternalMigration = async ({ id, actor }: TDeleteDopplerExternalMigrationDTO) => { - const { hasRole } = await permissionService.getOrgPermission({ - scope: OrganizationActionScope.Any, - actor: actor.type, - actorId: actor.id, - orgId: actor.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId - }); - - if (!hasRole(OrgMembershipRole.Admin)) { - throw new ForbiddenRequestError({ message: "Only admins can delete Doppler migration configs" }); - } - - const config = await externalMigrationConfigDAL.findById(id); - - if (!config || config.orgId !== actor.orgId || config.provider !== ExternalMigrationProviders.Doppler) { - throw new NotFoundError({ message: "Doppler migration config not found" }); - } - - return externalMigrationConfigDAL.deleteById(id); - }; - const getDopplerProjects = async ({ configId, actor }: { configId: string; actor: OrgServiceActor }) => { const appConnection = await getDopplerConnectionForConfig(configId, actor); return listDopplerProjects(appConnection); @@ -916,10 +847,12 @@ export const externalMigrationServiceFactory = ({ importEnvKeyData, importVaultData, hasCustomVaultMigration, - createVaultExternalMigration, - getVaultExternalMigrationConfigs, - updateVaultExternalMigration, - deleteVaultExternalMigration, + + createExternalMigration, + updateExternalMigration, + deleteExternalMigration, + getExternalMigrationConfigs, + getVaultNamespaces, getVaultPolicies, getVaultMounts, @@ -930,10 +863,7 @@ export const externalMigrationServiceFactory = ({ getVaultKubernetesRoles, getVaultDatabaseRoles, getVaultLdapRoles, - createDopplerExternalMigration, - getDopplerExternalMigrationConfigs, - updateDopplerExternalMigration, - deleteDopplerExternalMigration, + getDopplerProjects, getDopplerEnvironments, importDopplerSecrets diff --git a/backend/src/services/external-migration/external-migration-types.ts b/backend/src/services/external-migration/external-migration-types.ts index 58ee2ca2cd0..8877326f33f 100644 --- a/backend/src/services/external-migration/external-migration-types.ts +++ b/backend/src/services/external-migration/external-migration-types.ts @@ -1,6 +1,7 @@ import { OrgServiceActor, TOrgPermission } from "@app/lib/types"; import { ActorAuthMethod, ActorType } from "../auth/auth-type"; +import { ExternalMigrationProviders, TExternalMigrationConfig } from "./external-migration-schemas"; export enum KvVersion { V1 = "1", @@ -123,12 +124,6 @@ export enum ExternalPlatforms { Doppler = "Doppler" } -export enum ExternalMigrationProviders { - Vault = "vault", - EnvKey = "env-key", - Doppler = "doppler" -} - export enum VaultImportStatus { Imported = "imported", ApprovalRequired = "approval-required" @@ -173,7 +168,20 @@ export type TUpdateVaultExternalMigrationDTO = { actor: OrgServiceActor; }; -export type TDeleteVaultExternalMigrationDTO = { +export type TCreateExternalMigrationDTO = { + config: TExternalMigrationConfig; + connectionId: string; + actor: OrgServiceActor; +}; + +export type TUpdateExternalMigrationDTO = { + id: string; + config: TExternalMigrationConfig; + connectionId: string | null; + actor: OrgServiceActor; +}; + +export type TDeleteExternalMigrationDTO = { id: string; actor: OrgServiceActor; }; diff --git a/frontend/src/hooks/api/migration/mutations.tsx b/frontend/src/hooks/api/migration/mutations.tsx index 84a953fcca7..1a2d1a43584 100644 --- a/frontend/src/hooks/api/migration/mutations.tsx +++ b/frontend/src/hooks/api/migration/mutations.tsx @@ -7,10 +7,12 @@ import { secretKeys } from "@app/hooks/api/secrets/queries"; import { projectKeys } from "../projects"; import { externalMigrationQueryKeys } from "./queries"; import { - TDopplerExternalMigrationConfig, + TCreateExternalMigrationConfigDTO, + TDeleteExternalMigrationConfigDTO, + TExternalMigrationConfig, TImportDopplerSecretsDTO, TImportVaultSecretsDTO, - TVaultExternalMigrationConfig, + TUpdateExternalMigrationConfigDTO, VaultImportStatus } from "./types"; @@ -100,127 +102,57 @@ export const useImportVaultSecrets = () => { }); }; -export const useCreateVaultExternalMigrationConfig = () => { +export const useCreateExternalMigrationConfig = () => { const queryClient = useQueryClient(); - return useMutation< - TVaultExternalMigrationConfig, - Error, - { connectionId: string; namespace: string } - >({ - mutationFn: async ({ connectionId, namespace }) => { - const { data } = await apiRequest.post<{ config: TVaultExternalMigrationConfig }>( - "/api/v3/external-migration/vault/configs", - { - connectionId, - namespace - } + return useMutation({ + mutationFn: async ({ connectionId, input }) => { + const { data } = await apiRequest.post<{ config: TExternalMigrationConfig }>( + `/api/v3/external-migration/${input.provider}/configs`, + { connectionId, input } ); return data.config; }, - onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: externalMigrationQueryKeys.vaultConfigs() - }); - } - }); -}; - -export const useUpdateVaultExternalMigrationConfig = () => { - const queryClient = useQueryClient(); - - return useMutation< - TVaultExternalMigrationConfig, - Error, - { id: string; connectionId: string; namespace: string } - >({ - mutationFn: async ({ id, connectionId, namespace }) => { - const { data } = await apiRequest.put<{ config: TVaultExternalMigrationConfig }>( - `/api/v3/external-migration/vault/configs/${id}`, - { - connectionId, - namespace - } - ); - return data.config; - }, - onSuccess: () => { + onSuccess: (_, { input }) => { queryClient.invalidateQueries({ - queryKey: externalMigrationQueryKeys.vaultConfigs() + queryKey: externalMigrationQueryKeys.configs(input.provider) }); } }); }; -export const useDeleteVaultExternalMigrationConfig = () => { +export const useUpdateExternalMigrationConfig = () => { const queryClient = useQueryClient(); - return useMutation({ - mutationFn: async ({ id }) => { - const { data } = await apiRequest.delete<{ config: TVaultExternalMigrationConfig }>( - `/api/v3/external-migration/vault/configs/${id}` + return useMutation({ + mutationFn: async ({ id, connectionId, input }) => { + const { data } = await apiRequest.put<{ config: TExternalMigrationConfig }>( + `/api/v3/external-migration/${input.provider}/configs/${id}`, + { connectionId, input } ); return data.config; }, - onSuccess: () => { + onSuccess: (_, { input }) => { queryClient.invalidateQueries({ - queryKey: externalMigrationQueryKeys.vaultConfigs() + queryKey: externalMigrationQueryKeys.configs(input.provider) }); } }); }; -export const useCreateDopplerExternalMigrationConfig = () => { +export const useDeleteExternalMigrationConfig = () => { const queryClient = useQueryClient(); - return useMutation({ - mutationFn: async ({ connectionId }) => { - const { data } = await apiRequest.post<{ config: TDopplerExternalMigrationConfig }>( - "/api/v3/external-migration/doppler/configs", - { connectionId } + return useMutation({ + mutationFn: async ({ provider, id }) => { + const { data } = await apiRequest.delete<{ config: TExternalMigrationConfig }>( + `/api/v3/external-migration/${provider}/configs/${id}` ); return data.config; }, - onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: externalMigrationQueryKeys.dopplerConfigs() - }); - } - }); -}; - -export const useUpdateDopplerExternalMigrationConfig = () => { - const queryClient = useQueryClient(); - - return useMutation({ - mutationFn: async ({ id, connectionId }) => { - const { data } = await apiRequest.put<{ config: TDopplerExternalMigrationConfig }>( - `/api/v3/external-migration/doppler/configs/${id}`, - { connectionId } - ); - return data.config; - }, - onSuccess: () => { - queryClient.invalidateQueries({ - queryKey: externalMigrationQueryKeys.dopplerConfigs() - }); - } - }); -}; - -export const useDeleteDopplerExternalMigrationConfig = () => { - const queryClient = useQueryClient(); - - return useMutation({ - mutationFn: async ({ id }) => { - const { data } = await apiRequest.delete<{ config: TDopplerExternalMigrationConfig }>( - `/api/v3/external-migration/doppler/configs/${id}` - ); - return data.config; - }, - onSuccess: () => { + onSuccess: (_, { provider }) => { queryClient.invalidateQueries({ - queryKey: externalMigrationQueryKeys.dopplerConfigs() + queryKey: externalMigrationQueryKeys.configs(provider) }); } }); diff --git a/frontend/src/hooks/api/migration/queries.tsx b/frontend/src/hooks/api/migration/queries.tsx index a4c5041c01b..2ae0f83ef0d 100644 --- a/frontend/src/hooks/api/migration/queries.tsx +++ b/frontend/src/hooks/api/migration/queries.tsx @@ -5,9 +5,8 @@ import { apiRequest } from "@app/config/request"; import { ExternalMigrationProviders, TDopplerEnvironment, - TDopplerExternalMigrationConfig, TDopplerProject, - TVaultExternalMigrationConfig, + TExternalMigrationConfig, VaultDatabaseRole, VaultKubernetesAuthRole, VaultKubernetesRole, @@ -19,7 +18,7 @@ export const externalMigrationQueryKeys = { "custom-migration-available", provider ], - vaultConfigs: () => ["vault-external-migration-configs"], + configs: (provider: ExternalMigrationProviders) => ["external-migration-configs", provider], vaultNamespaces: () => ["vault-namespaces"], vaultPolicies: (namespace?: string) => ["vault-policies", namespace], vaultMounts: (namespace?: string) => ["vault-mounts", namespace], @@ -53,7 +52,6 @@ export const externalMigrationQueryKeys = { namespace, mountPath ], - dopplerConfigs: () => ["doppler-external-migration-configs"], dopplerProjects: (configId?: string) => ["doppler-projects", configId], dopplerEnvironments: (configId?: string, projectSlug?: string) => [ "doppler-environments", @@ -72,12 +70,12 @@ export const useHasCustomMigrationAvailable = (provider: ExternalMigrationProvid }); }; -export const useGetVaultExternalMigrationConfigs = () => { +export const useGetExternalMigrationConfigs = (provider: ExternalMigrationProviders) => { return useQuery({ - queryKey: externalMigrationQueryKeys.vaultConfigs(), + queryKey: externalMigrationQueryKeys.configs(provider), queryFn: async () => { - const { data } = await apiRequest.get<{ configs: TVaultExternalMigrationConfig[] }>( - "/api/v3/external-migration/vault/configs" + const { data } = await apiRequest.get<{ configs: TExternalMigrationConfig[] }>( + `/api/v3/external-migration/${provider}/configs` ); return data.configs; } @@ -278,18 +276,6 @@ export const useGetVaultLdapRoles = (enabled = true, namespace?: string, mountPa }); }; -export const useGetDopplerExternalMigrationConfigs = () => { - return useQuery({ - queryKey: externalMigrationQueryKeys.dopplerConfigs(), - queryFn: async () => { - const { data } = await apiRequest.get<{ configs: TDopplerExternalMigrationConfig[] }>( - "/api/v3/external-migration/doppler/configs" - ); - return data.configs; - } - }); -}; - export const useGetDopplerProjects = (configId?: string) => { return useQuery({ queryKey: externalMigrationQueryKeys.dopplerProjects(configId), diff --git a/frontend/src/hooks/api/migration/types.ts b/frontend/src/hooks/api/migration/types.ts index 31dd81fa4b1..a23b1b25192 100644 --- a/frontend/src/hooks/api/migration/types.ts +++ b/frontend/src/hooks/api/migration/types.ts @@ -4,20 +4,48 @@ export enum ExternalMigrationProviders { Doppler = "doppler" } -export type TDopplerExternalMigrationConfig = { +export type TExternalMigrationConfig = { id: string; orgId: string; - connectionId: string | null; provider: string; + connectionId: string | null; createdAt: string; updatedAt: string; }; +export type TExternalMigrationVaultInput = { + provider: ExternalMigrationProviders.Vault; + config: { namespace: string }; +}; + +export type TExternalMigrationDopplerInput = { + provider: ExternalMigrationProviders.Doppler; + config: Record; +}; + +export type TExternalMigrationInput = TExternalMigrationVaultInput | TExternalMigrationDopplerInput; + +export type TCreateExternalMigrationConfigDTO = { + connectionId: string; + input: TExternalMigrationInput; +}; + +export type TUpdateExternalMigrationConfigDTO = { + id: string; + connectionId: string | null; + input: TExternalMigrationInput; +}; + +export type TDeleteExternalMigrationConfigDTO = { + provider: ExternalMigrationProviders; + id: string; +}; + export type TDopplerProject = { id: string; slug: string; name: string; - description: string; + description?: string | null; }; export type TDopplerEnvironment = { @@ -41,15 +69,6 @@ export enum VaultImportStatus { ApprovalRequired = "approval-required" } -export type TVaultExternalMigrationConfig = { - id: string; - orgId: string; - namespace: string; - connectionId: string | null; - createdAt: string; - updatedAt: string; -}; - export type TImportVaultSecretsDTO = { projectId: string; environment: string; diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx index 4ce02dda789..e6e43d79f78 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx @@ -39,8 +39,8 @@ import { IdentityKubernetesAuthTokenReviewMode, IdentityTrustedIp } from "@app/hooks/api/identities/types"; -import { useGetVaultExternalMigrationConfigs } from "@app/hooks/api/migration/queries"; -import { VaultKubernetesAuthRole } from "@app/hooks/api/migration/types"; +import { useGetExternalMigrationConfigs } from "@app/hooks/api/migration/queries"; +import { ExternalMigrationProviders, VaultKubernetesAuthRole } from "@app/hooks/api/migration/types"; import { usePopUp, UsePopUpState } from "@app/hooks/usePopUp"; import { IdentityFormTab } from "./types"; @@ -134,7 +134,7 @@ export const IdentityKubernetesAuthForm = ({ const { popUp, handlePopUpToggle: handleImportPopUpToggle } = usePopUp([ "importFromVault" ] as const); - const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const { hasOrgRole } = useOrgPermission(); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx index c8c0ed45767..9ee550788cf 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx @@ -25,10 +25,13 @@ import { FilterableSelect } from "@app/components/v3/generic/ReactSelect"; import { AppConnection } from "@app/hooks/api/appConnections/enums"; import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { - useCreateDopplerExternalMigrationConfig, - useUpdateDopplerExternalMigrationConfig + useCreateExternalMigrationConfig, + useUpdateExternalMigrationConfig } from "@app/hooks/api/migration"; -import { TDopplerExternalMigrationConfig } from "@app/hooks/api/migration/types"; +import { + ExternalMigrationProviders, + TExternalMigrationConfig +} from "@app/hooks/api/migration/types"; const schema = z.object({ connectionId: z.string().min(1, "Connection is required") @@ -39,7 +42,7 @@ type FormData = z.infer; type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; - editConfig?: TDopplerExternalMigrationConfig; + editConfig?: TExternalMigrationConfig; }; export const DopplerConfigModal = ({ isOpen, onOpenChange, editConfig }: Props) => { @@ -53,9 +56,9 @@ export const DopplerConfigModal = ({ isOpen, onOpenChange, editConfig }: Props) ); const { mutateAsync: createConfig, isPending: isCreating } = - useCreateDopplerExternalMigrationConfig(); + useCreateExternalMigrationConfig(); const { mutateAsync: updateConfig, isPending: isUpdating } = - useUpdateDopplerExternalMigrationConfig(); + useUpdateExternalMigrationConfig(); const { control, @@ -78,11 +81,16 @@ export const DopplerConfigModal = ({ isOpen, onOpenChange, editConfig }: Props) }, [isOpen, editConfig, reset]); const onFormSubmit = async (data: FormData) => { + const input = { + provider: ExternalMigrationProviders.Doppler as const, + config: {} as Record + }; + if (isEdit && editConfig) { - await updateConfig({ id: editConfig.id, connectionId: data.connectionId }); + await updateConfig({ id: editConfig.id, connectionId: data.connectionId, input }); createNotification({ type: "success", text: "Doppler configuration updated successfully" }); } else { - await createConfig({ connectionId: data.connectionId }); + await createConfig({ connectionId: data.connectionId, input }); createNotification({ type: "success", text: "Doppler configuration created successfully" }); } reset(); diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx deleted file mode 100644 index a9e3f1ea74e..00000000000 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerImportModal.tsx +++ /dev/null @@ -1,324 +0,0 @@ -import { useEffect, useMemo } from "react"; -import { Controller, useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { InfoIcon } from "lucide-react"; -import { z } from "zod"; - -import { createNotification } from "@app/components/notifications"; -import { SecretPathInput } from "@app/components/v2/SecretPathInput"; -import { - Button, - Dialog, - DialogContent, - DialogDescription, - DialogFooter, - DialogHeader, - DialogTitle, - Field, - FieldContent, - FieldError, - FieldLabel, - Tooltip, - TooltipContent, - TooltipTrigger -} from "@app/components/v3"; -import { FilterableSelect } from "@app/components/v3/generic/ReactSelect"; -import { useGetUserProjects } from "@app/hooks/api"; -import { - useGetDopplerEnvironments, - useGetDopplerProjects, - useImportDopplerSecrets -} from "@app/hooks/api/migration"; -import { TDopplerExternalMigrationConfig } from "@app/hooks/api/migration/types"; -import { ProjectType } from "@app/hooks/api/projects/types"; - -const schema = z.object({ - dopplerProject: z.string().min(1, "Doppler project is required"), - dopplerEnvironment: z.string().min(1, "Doppler environment is required"), - targetProjectId: z.string().min(1, "Target project is required"), - targetEnvironment: z.string().min(1, "Target environment is required"), - targetSecretPath: z.string().min(1, "Secret path is required") -}); - -type FormData = z.infer; - -type Props = { - isOpen: boolean; - onOpenChange: (isOpen: boolean) => void; - config: TDopplerExternalMigrationConfig; -}; - -export const DopplerImportModal = ({ isOpen, onOpenChange, config }: Props) => { - const { - control, - handleSubmit, - watch, - reset, - formState: { errors, isSubmitting } - } = useForm({ - resolver: zodResolver(schema), - defaultValues: { - dopplerProject: "", - dopplerEnvironment: "", - targetProjectId: "", - targetEnvironment: "", - targetSecretPath: "/" - } - }); - - useEffect(() => { - if (isOpen) reset(); - }, [isOpen, reset]); - - const selectedDopplerProject = watch("dopplerProject"); - const selectedTargetProjectId = watch("targetProjectId"); - const selectedTargetEnvironment = watch("targetEnvironment"); - - const { data: dopplerProjects = [], isPending: isLoadingProjects } = useGetDopplerProjects( - config.id - ); - const { data: dopplerEnvironments = [], isPending: isLoadingEnvironments } = - useGetDopplerEnvironments(config.id, selectedDopplerProject || undefined); - - const { data: userProjects = [], isPending: isLoadingUserProjects } = useGetUserProjects(); - - const secretManagerProjects = useMemo( - () => userProjects.filter((p) => p.type === ProjectType.SecretManager), - [userProjects] - ); - - const selectedProject = useMemo( - () => secretManagerProjects.find((p) => p.id === selectedTargetProjectId), - [secretManagerProjects, selectedTargetProjectId] - ); - - const { mutateAsync: importSecrets } = useImportDopplerSecrets(); - - const onFormSubmit = async (data: FormData) => { - const result = await importSecrets({ - configId: config.id, - dopplerProject: data.dopplerProject, - dopplerEnvironment: data.dopplerEnvironment, - targetProjectId: data.targetProjectId, - targetEnvironment: data.targetEnvironment, - targetSecretPath: data.targetSecretPath - }); - createNotification({ - type: "success", - text: - result.status === "approval-required" - ? "Secrets submitted for approval — review the pending request in your project" - : `${result.imported} secret${result.imported !== 1 ? "s" : ""} imported successfully from Doppler` - }); - reset(); - onOpenChange(false); - }; - - const handleClose = () => { - reset(); - onOpenChange(false); - }; - - return ( - { - if (!open) { - reset(); - onOpenChange(false); - } - }} - > - - - Import Secrets from Doppler - Select source and destination to import secrets - -
-

Doppler Source

- - { - const selectedItem = dopplerProjects.find((p) => p.slug === field.value); - - return ( - - Project - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingProjects} - options={dopplerProjects} - placeholder="Select Doppler project..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - - {errors.dopplerProject?.message} - - ); - }} - /> - - { - const selectedItem = dopplerEnvironments.find((e) => e.slug === field.value); - - return ( - - Environment - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingEnvironments} - isDisabled={!selectedDopplerProject} - options={dopplerEnvironments} - placeholder="Select Doppler environment..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - - {errors.dopplerEnvironment?.message} - - ); - }} - /> - -

Infisical Destination

- - { - const selectedItem = secretManagerProjects.find((p) => p.id === field.value); - - return ( - - Project - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "id" in singleValue) { - field.onChange(singleValue.id); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingUserProjects} - options={secretManagerProjects} - placeholder="Select Infisical project..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - /> - - {errors.targetProjectId?.message} - - ); - }} - /> - - { - const environments = selectedProject?.environments ?? []; - const selectedItem = environments.find((e) => e.slug === field.value); - - return ( - - Environment - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isDisabled={!selectedTargetProjectId} - options={environments} - placeholder="Select environment..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - - {errors.targetEnvironment?.message} - - ); - }} - /> - - ( - - - Secret Path - - - - - - - - The path in Infisical where secrets will be imported - - - - - - - {error?.message} - - )} - /> - - - - - - -
-
- ); -}; diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx index 6e089440648..4a10098a986 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from "react"; import { Link } from "@tanstack/react-router"; -import { Download, Edit, MoreVertical, Plus, Trash2 } from "lucide-react"; +import { Edit, MoreVertical, Plus, Trash2 } from "lucide-react"; import { createNotification } from "@app/components/notifications"; import { @@ -32,70 +32,50 @@ import { import { AppConnection } from "@app/hooks/api/appConnections/enums"; import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { - useDeleteDopplerExternalMigrationConfig, - useDeleteVaultExternalMigrationConfig, - useGetDopplerExternalMigrationConfigs, - useGetVaultExternalMigrationConfigs + useDeleteExternalMigrationConfig, + useGetExternalMigrationConfigs } from "@app/hooks/api/migration"; import { - TDopplerExternalMigrationConfig, - TVaultExternalMigrationConfig + ExternalMigrationProviders, + TExternalMigrationConfig } from "@app/hooks/api/migration/types"; import { DopplerConfigModal } from "./DopplerConfigModal"; -import { DopplerImportModal } from "./DopplerImportModal"; import { MigrationConfigDeleteDialog } from "./MigrationConfigDeleteDialog"; import { SelectInPlatformMigrationProviderModal } from "./SelectInPlatformMigrationProviderModal"; import { VaultNamespaceConfigModal } from "./VaultNamespaceConfigModal"; -type TMergedRow = - | { kind: "vault"; config: TVaultExternalMigrationConfig } - | { kind: "doppler"; config: TDopplerExternalMigrationConfig }; - const SKELETON_ROW_KEYS = ["sk-1", "sk-2", "sk-3"] as const; export const InPlatformMigrationSection = () => { const [isProviderPickerOpen, setIsProviderPickerOpen] = useState(false); const [vaultModalOpen, setVaultModalOpen] = useState(false); - const [vaultEditConfig, setVaultEditConfig] = useState< - TVaultExternalMigrationConfig | undefined - >(); + const [vaultEditConfig, setVaultEditConfig] = useState(); const [dopplerConfigModalOpen, setDopplerConfigModalOpen] = useState(false); const [dopplerEditConfig, setDopplerEditConfig] = useState< - TDopplerExternalMigrationConfig | undefined + TExternalMigrationConfig | undefined >(); - const [dopplerImportModalOpen, setDopplerImportModalOpen] = useState(false); - const [dopplerImportConfig, setDopplerImportConfig] = - useState(null); + const [deleteOpen, setDeleteOpen] = useState(false); + const [configToDelete, setConfigToDelete] = useState(null); - const [vaultDeleteOpen, setVaultDeleteOpen] = useState(false); - const [vaultToDelete, setVaultToDelete] = useState(null); - - const [dopplerDeleteOpen, setDopplerDeleteOpen] = useState(false); - const [dopplerToDelete, setDopplerToDelete] = useState( - null + const { data: vaultConfigs = [], isPending: isVaultLoading } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Vault + ); + const { data: dopplerConfigs = [], isPending: isDopplerLoading } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Doppler ); - - const { data: vaultConfigs = [], isPending: isVaultLoading } = - useGetVaultExternalMigrationConfigs(); - const { data: dopplerConfigs = [], isPending: isDopplerLoading } = - useGetDopplerExternalMigrationConfigs(); const { currentOrg } = useOrganization(); const { data: appConnections = [] } = useListAppConnections(); - const { mutateAsync: deleteVaultConfig } = useDeleteVaultExternalMigrationConfig(); - const { mutateAsync: deleteDopplerConfig } = useDeleteDopplerExternalMigrationConfig(); + const { mutateAsync: deleteConfig } = useDeleteExternalMigrationConfig(); const mergedRows = useMemo(() => { - const rows: TMergedRow[] = [ - ...vaultConfigs.map((config) => ({ kind: "vault" as const, config })), - ...dopplerConfigs.map((config) => ({ kind: "doppler" as const, config })) - ]; - rows.sort((a, b) => b.config.createdAt.localeCompare(a.config.createdAt)); + const rows: TExternalMigrationConfig[] = [...vaultConfigs, ...dopplerConfigs]; + rows.sort((a, b) => b.createdAt.localeCompare(a.createdAt)); return rows; }, [vaultConfigs, dopplerConfigs]); @@ -107,8 +87,10 @@ export const InPlatformMigrationSection = () => { return connection?.name || "Unknown"; }; - const providerApp = (row: TMergedRow): TInPlatformMigrationApp => - row.kind === "vault" ? AppConnection.HCVault : AppConnection.Doppler; + const providerApp = (config: TExternalMigrationConfig): TInPlatformMigrationApp => + config.provider === ExternalMigrationProviders.Vault + ? AppConnection.HCVault + : AppConnection.Doppler; const openAddForProvider = (app: TInPlatformMigrationApp) => { if (app === AppConnection.HCVault) { @@ -120,26 +102,18 @@ export const InPlatformMigrationSection = () => { } }; - const handleVaultDeleteConfirm = async () => { - if (!vaultToDelete) return; - await deleteVaultConfig({ id: vaultToDelete.id }); - createNotification({ - type: "success", - text: "Namespace configuration deleted successfully" + const handleDeleteConfirm = async () => { + if (!configToDelete) return; + await deleteConfig({ + id: configToDelete.id, + provider: configToDelete.provider as ExternalMigrationProviders }); - setVaultDeleteOpen(false); - setVaultToDelete(null); - }; - - const handleDopplerDeleteConfirm = async () => { - if (!dopplerToDelete) return; - await deleteDopplerConfig({ id: dopplerToDelete.id }); createNotification({ type: "success", - text: "Doppler configuration deleted successfully" + text: "Migration configuration deleted successfully" }); - setDopplerDeleteOpen(false); - setDopplerToDelete(null); + setDeleteOpen(false); + setConfigToDelete(null); }; const renderTable = () => { @@ -149,7 +123,6 @@ export const InPlatformMigrationSection = () => { Platform - Namespace Connection @@ -160,9 +133,6 @@ export const InPlatformMigrationSection = () => { - - - @@ -195,18 +165,18 @@ export const InPlatformMigrationSection = () => { Platform - Namespace Connection - {mergedRows.map((row) => { - const app = providerApp(row); + {mergedRows.map((config) => { + const app = providerApp(config); const { name, imageFileName } = getInPlatformMigrationProviderMeta(app); + const isDoppler = config.provider === ExternalMigrationProviders.Doppler; return ( - +
@@ -214,7 +184,7 @@ export const InPlatformMigrationSection = () => { src={`/images/integrations/${imageFileName}`} alt="" className={ - row.kind === "doppler" + isDoppler ? "max-h-5 max-w-5 object-contain" : "max-h-full max-w-full object-contain" } @@ -223,10 +193,7 @@ export const InPlatformMigrationSection = () => { {name}
- - {row.kind === "vault" ? row.config.namespace : "—"} - - {getConnectionName(row.config.connectionId)} + {getConnectionName(config.connectionId)} @@ -240,25 +207,14 @@ export const InPlatformMigrationSection = () => { - {row.kind === "doppler" && ( - { - setDopplerImportConfig(row.config); - setDopplerImportModalOpen(true); - }} - > - - Import secrets - - )} { - if (row.kind === "vault") { - setVaultEditConfig(row.config); - setVaultModalOpen(true); - } else { - setDopplerEditConfig(row.config); + if (isDoppler) { + setDopplerEditConfig(config); setDopplerConfigModalOpen(true); + } else { + setVaultEditConfig(config); + setVaultModalOpen(true); } }} > @@ -268,13 +224,8 @@ export const InPlatformMigrationSection = () => { { - if (row.kind === "vault") { - setVaultToDelete(row.config); - setVaultDeleteOpen(true); - } else { - setDopplerToDelete(row.config); - setDopplerDeleteOpen(true); - } + setConfigToDelete(config); + setDeleteOpen(true); }} > @@ -348,37 +299,15 @@ export const InPlatformMigrationSection = () => { editConfig={dopplerEditConfig} /> - {dopplerImportConfig && ( - { - setDopplerImportModalOpen(open); - if (!open) setDopplerImportConfig(null); - }} - config={dopplerImportConfig} - /> - )} - - { - setVaultDeleteOpen(open); - if (!open) setVaultToDelete(null); - }} - deleteKey="confirm" - onDeleteApproved={handleVaultDeleteConfirm} - /> - { - setDopplerDeleteOpen(open); - if (!open) setDopplerToDelete(null); + setDeleteOpen(open); + if (!open) setConfigToDelete(null); }} deleteKey="confirm" - onDeleteApproved={handleDopplerDeleteConfirm} + onDeleteApproved={handleDeleteConfirm} />
); diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx index 818c8cc442e..56c18cc1cb8 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx @@ -26,10 +26,13 @@ import { FilterableSelect } from "@app/components/v3/generic/ReactSelect"; import { AppConnection } from "@app/hooks/api/appConnections/enums"; import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { - useCreateVaultExternalMigrationConfig, - useUpdateVaultExternalMigrationConfig + useCreateExternalMigrationConfig, + useUpdateExternalMigrationConfig } from "@app/hooks/api/migration"; -import { TVaultExternalMigrationConfig } from "@app/hooks/api/migration/types"; +import { + ExternalMigrationProviders, + TExternalMigrationConfig +} from "@app/hooks/api/migration/types"; const schema = z.object({ namespace: z @@ -43,7 +46,7 @@ type FormData = z.infer; type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; - editConfig?: TVaultExternalMigrationConfig; + editConfig?: TExternalMigrationConfig; }; export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: Props) => { @@ -57,9 +60,9 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: ); const { mutateAsync: createConfig, isPending: isCreating } = - useCreateVaultExternalMigrationConfig(); + useCreateExternalMigrationConfig(); const { mutateAsync: updateConfig, isPending: isUpdating } = - useUpdateVaultExternalMigrationConfig(); + useUpdateExternalMigrationConfig(); const { control, @@ -77,18 +80,23 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: useEffect(() => { if (isOpen) { reset({ - namespace: editConfig?.namespace || "", + namespace: "", connectionId: editConfig?.connectionId || "" }); } }, [isOpen, editConfig, reset]); const onFormSubmit = async (data: FormData) => { + const input = { + provider: ExternalMigrationProviders.Vault as const, + config: { namespace: data.namespace } + }; + if (isEdit && editConfig) { await updateConfig({ id: editConfig.id, - namespace: data.namespace, - connectionId: data.connectionId + connectionId: data.connectionId, + input }); createNotification({ type: "success", @@ -96,8 +104,8 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: }); } else { await createConfig({ - namespace: data.namespace, - connectionId: data.connectionId + connectionId: data.connectionId, + input }); createNotification({ type: "success", diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx index 62174fa6267..e9cc14f2a9c 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx @@ -15,7 +15,8 @@ import { import { ProjectPermissionSub, useOrgPermission } from "@app/context"; import { OrgMembershipRole } from "@app/helpers/roles"; import { usePopUp } from "@app/hooks"; -import { useGetVaultExternalMigrationConfigs } from "@app/hooks/api/migration"; +import { useGetExternalMigrationConfigs } from "@app/hooks/api/migration"; +import { ExternalMigrationProviders } from "@app/hooks/api/migration/types"; import { ProjectType } from "@app/hooks/api/projects/types"; import { PolicySelectionPopover } from "@app/pages/project/RoleDetailsBySlugPage/components/PolicySelectionModal"; import { PolicyTemplateModal } from "@app/pages/project/RoleDetailsBySlugPage/components/PolicyTemplateModal"; @@ -44,7 +45,7 @@ export const AddPoliciesButton = ({ ] as const); const { hasOrgRole } = useOrgPermission(); - const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); const isVaultImportDisabled = isDisabled || !isOrgAdmin; diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index 8f93e655107..ff081c5e6ec 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -142,12 +142,11 @@ import { TDynamicSecret } from "@app/hooks/api/dynamicSecret/types"; import { useGetFolderCommitsCount } from "@app/hooks/api/folderCommits"; import { OrderByDirection } from "@app/hooks/api/generic/types"; import { - useGetDopplerExternalMigrationConfigs, - useGetVaultExternalMigrationConfigs, + useGetExternalMigrationConfigs, useImportDopplerSecrets, useImportVaultSecrets } from "@app/hooks/api/migration"; -import { VaultImportStatus } from "@app/hooks/api/migration/types"; +import { ExternalMigrationProviders, VaultImportStatus } from "@app/hooks/api/migration/types"; import { ProjectType, ProjectVersion } from "@app/hooks/api/projects/types"; import { useUpdateFolderBatch } from "@app/hooks/api/secretFolders/queries"; import { PendingAction, TUpdateFolderBatchDTO } from "@app/hooks/api/secretFolders/types"; @@ -289,9 +288,9 @@ const OverviewPageContent = () => { const { subscription } = useSubscription(); const { hasOrgRole } = useOrgPermission(); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); - const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); - const { data: dopplerConfigs = [] } = useGetDopplerExternalMigrationConfigs(); + const { data: dopplerConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Doppler); const dopplerImportConfigs = useMemo( () => dopplerConfigs.filter((c) => c.connectionId), [dopplerConfigs] diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx index 502767b7d29..4dfc8cb8a4e 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx @@ -87,10 +87,10 @@ import { } from "@app/hooks/api/dashboard/queries"; import { UsedBySecretSyncs } from "@app/hooks/api/dashboard/types"; import { - useGetVaultExternalMigrationConfigs, + useGetExternalMigrationConfigs, useImportVaultSecrets } from "@app/hooks/api/migration"; -import { VaultImportStatus } from "@app/hooks/api/migration/types"; +import { ExternalMigrationProviders, VaultImportStatus } from "@app/hooks/api/migration/types"; import { secretApprovalRequestKeys } from "@app/hooks/api/secretApprovalRequest/queries"; import { PendingAction } from "@app/hooks/api/secretFolders/types"; import { fetchProjectSecrets, secretKeys } from "@app/hooks/api/secrets/queries"; @@ -210,7 +210,7 @@ export const ActionBar = ({ const isMultiSelectActive = Boolean(Object.keys(selectedSecrets).length); const { permission } = useProjectPermission(); - const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const { hasOrgRole } = useOrgPermission(); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx index fa9e7adf63e..7d6c407a515 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx @@ -4,14 +4,15 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { Button, Tooltip } from "@app/components/v2"; import { useOrgPermission } from "@app/context"; import { OrgMembershipRole } from "@app/helpers/roles"; -import { useGetVaultExternalMigrationConfigs } from "@app/hooks/api/migration"; +import { useGetExternalMigrationConfigs } from "@app/hooks/api/migration"; +import { ExternalMigrationProviders } from "@app/hooks/api/migration/types"; type Props = { onClick: () => void; }; export const LoadFromVaultBanner = ({ onClick }: Props) => { - const { data: vaultConfigs = [] } = useGetVaultExternalMigrationConfigs(); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const { hasOrgRole } = useOrgPermission(); diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx index a7cc3d7e885..afb5a45cf27 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx @@ -15,7 +15,7 @@ import { } from "@app/components/v2"; import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { useGetDopplerEnvironments, useGetDopplerProjects } from "@app/hooks/api/migration/queries"; -import { TDopplerExternalMigrationConfig } from "@app/hooks/api/migration/types"; +import { TExternalMigrationConfig } from "@app/hooks/api/migration/types"; const schema = z.object({ configId: z.string().min(1, "Doppler configuration is required"), @@ -28,7 +28,7 @@ type FormData = z.infer; type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; - configs: TDopplerExternalMigrationConfig[]; + configs: TExternalMigrationConfig[]; environment: string; secretPath: string; onImport: (dopplerProject: string, dopplerEnvironment: string, configId: string) => Promise; From c65caf9d312f61bf50883dd15082c0e3f01faa9c Mon Sep 17 00:00:00 2001 From: Daniel Hougaard Date: Wed, 8 Apr 2026 04:51:01 +0200 Subject: [PATCH 051/562] requested changes --- .../routes/v3/external-migration-router.ts | 3 +- .../external-migration-config-dal.ts | 5 +- .../external-migration-service.ts | 53 ++++++++++++++++--- .../external-migration-types.ts | 2 + .../IdentityKubernetesAuthForm.tsx | 9 +++- .../components/DopplerConfigModal.tsx | 6 +-- .../components/VaultNamespaceConfigModal.tsx | 6 +-- .../components/AddPoliciesButton.tsx | 4 +- .../OverviewPage/OverviewPage.tsx | 8 ++- .../components/ActionBar/ActionBar.tsx | 9 ++-- .../components/LoadFromVaultBanner.tsx | 4 +- 11 files changed, 77 insertions(+), 32 deletions(-) diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index 2fe578b31ff..87642204490 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -739,7 +739,8 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider handler: async (req) => { const result = await server.services.migration.importDopplerSecrets({ ...req.body, - actor: req.permission + actor: req.permission, + auditLogInfo: req.auditLogInfo }); return result; } diff --git a/backend/src/services/external-migration/external-migration-config-dal.ts b/backend/src/services/external-migration/external-migration-config-dal.ts index 2acc8d7f59a..1f0d11361d0 100644 --- a/backend/src/services/external-migration/external-migration-config-dal.ts +++ b/backend/src/services/external-migration/external-migration-config-dal.ts @@ -58,10 +58,7 @@ const mapResultToConnection = (raw: Record) => { export const externalMigrationConfigDALFactory = (db: TDbClient) => { const orm = ormify(db, TableName.ExternalMigrationConfig); - const findOne = async ( - filter: { orgId: string; namespace?: string; provider?: string; connectionId?: string | null }, - tx?: Knex - ) => { + const findOne = async (filter: { orgId: string; provider?: string; connectionId?: string | null }, tx?: Knex) => { try { const qb = buildConnectionJoin((tx || db?.replicaNode?.() || db)(TableName.ExternalMigrationConfig), db); /* eslint-disable @typescript-eslint/no-misused-promises */ diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 571d340c28f..0bc2dca715e 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -158,29 +158,44 @@ export const externalMigrationServiceFactory = ({ throw new ForbiddenRequestError({ message: `Only admins can ${action}` }); } - const existingConfig = await externalMigrationConfigDAL.findOne({ + const existingConfig = await externalMigrationConfigDAL.findWithConnection({ orgId: actor.orgId, - namespace, provider: ExternalMigrationProviders.Vault }); - if (!existingConfig) { + const { decryptor } = await kmsService.createCipherPairWithDataKey({ + type: KmsDataKey.Organization, + orgId: actor.orgId + }); + + const migrationConfig = existingConfig + .map((config) => { + const decryptedConfig = decryptor({ cipherTextBlob: config.encryptedConfig }); + + return { + ...config, + config: ExternalMigrationConfigVaultConfigSchema.parse(JSON.parse(decryptedConfig.toString())) + }; + }) + .find((config) => config.config.namespace === namespace); + + if (!migrationConfig) { throw new NotFoundError({ message: "Vault migration config not found for this namespace" }); } - if (!existingConfig.connection) { + if (!migrationConfig.connection) { throw new BadRequestError({ message: "Vault migration connection is not configured for this namespace" }); } const credentials = await decryptAppConnectionCredentials({ - orgId: existingConfig.orgId, - encryptedCredentials: existingConfig.connection.encryptedCredentials, + orgId: migrationConfig.orgId, + encryptedCredentials: migrationConfig.connection?.encryptedCredentials, kmsService, projectId: null }); return { - ...existingConfig.connection, + ...migrationConfig.connection, credentials } as THCVaultConnection; }; @@ -412,6 +427,8 @@ export const externalMigrationServiceFactory = ({ namespace: migrationConfig.config.namespace }); } else if (migrationConfig.provider === ExternalMigrationProviders.Doppler) { + await appConnectionService.connectAppConnectionById(AppConnection.Doppler, connectionId, actor); + if (existingConfigs?.length) { if (existingConfigs.some((cfg) => cfg.connectionId === connectionId)) { throw new BadRequestError({ @@ -810,7 +827,8 @@ export const externalMigrationServiceFactory = ({ targetProjectId, targetEnvironment, targetSecretPath, - actor + actor, + auditLogInfo }: TImportDopplerSecretsDTO) => { const appConnection = await getDopplerConnectionForConfig(configId, actor); @@ -832,6 +850,25 @@ export const externalMigrationServiceFactory = ({ }); if (secretOperation.type === SecretProtectionType.Approval) { + await auditLogService.createAuditLog({ + projectId: targetProjectId, + ...auditLogInfo, + event: { + type: EventType.SECRET_APPROVAL_REQUEST, + metadata: { + committedBy: secretOperation.approval.committerUserId, + secretApprovalRequestId: secretOperation.approval.id, + secretApprovalRequestSlug: secretOperation.approval.slug, + secretPath: targetSecretPath, + environment: targetEnvironment, + secrets: Object.entries(dopplerSecrets).map(([secretKey]) => ({ + secretKey + })), + eventType: SecretApprovalEvent.CreateMany + } + } + }); + return { status: VaultImportStatus.ApprovalRequired, imported: 0 }; } } catch (error) { diff --git a/backend/src/services/external-migration/external-migration-types.ts b/backend/src/services/external-migration/external-migration-types.ts index 8877326f33f..557f8bd2b0e 100644 --- a/backend/src/services/external-migration/external-migration-types.ts +++ b/backend/src/services/external-migration/external-migration-types.ts @@ -1,3 +1,4 @@ +import { AuditLogInfo } from "@app/ee/services/audit-log/audit-log-types"; import { OrgServiceActor, TOrgPermission } from "@app/lib/types"; import { ActorAuthMethod, ActorType } from "../auth/auth-type"; @@ -153,6 +154,7 @@ export type TImportDopplerSecretsDTO = { targetEnvironment: string; targetSecretPath: string; actor: OrgServiceActor; + auditLogInfo: AuditLogInfo; }; export type TCreateVaultExternalMigrationDTO = { diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx index e6e43d79f78..b27779de2a6 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx @@ -40,7 +40,10 @@ import { IdentityTrustedIp } from "@app/hooks/api/identities/types"; import { useGetExternalMigrationConfigs } from "@app/hooks/api/migration/queries"; -import { ExternalMigrationProviders, VaultKubernetesAuthRole } from "@app/hooks/api/migration/types"; +import { + ExternalMigrationProviders, + VaultKubernetesAuthRole +} from "@app/hooks/api/migration/types"; import { usePopUp, UsePopUpState } from "@app/hooks/usePopUp"; import { IdentityFormTab } from "./types"; @@ -134,7 +137,9 @@ export const IdentityKubernetesAuthForm = ({ const { popUp, handlePopUpToggle: handleImportPopUpToggle } = usePopUp([ "importFromVault" ] as const); - const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Vault + ); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const { hasOrgRole } = useOrgPermission(); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx index 9ee550788cf..35eb76fa4b4 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/DopplerConfigModal.tsx @@ -55,10 +55,8 @@ export const DopplerConfigModal = ({ isOpen, onOpenChange, editConfig }: Props) [appConnections] ); - const { mutateAsync: createConfig, isPending: isCreating } = - useCreateExternalMigrationConfig(); - const { mutateAsync: updateConfig, isPending: isUpdating } = - useUpdateExternalMigrationConfig(); + const { mutateAsync: createConfig, isPending: isCreating } = useCreateExternalMigrationConfig(); + const { mutateAsync: updateConfig, isPending: isUpdating } = useUpdateExternalMigrationConfig(); const { control, diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx index 56c18cc1cb8..0ef39579bed 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx @@ -59,10 +59,8 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: [appConnections] ); - const { mutateAsync: createConfig, isPending: isCreating } = - useCreateExternalMigrationConfig(); - const { mutateAsync: updateConfig, isPending: isUpdating } = - useUpdateExternalMigrationConfig(); + const { mutateAsync: createConfig, isPending: isCreating } = useCreateExternalMigrationConfig(); + const { mutateAsync: updateConfig, isPending: isUpdating } = useUpdateExternalMigrationConfig(); const { control, diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx index e9cc14f2a9c..00136146dd3 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/AddPoliciesButton.tsx @@ -45,7 +45,9 @@ export const AddPoliciesButton = ({ ] as const); const { hasOrgRole } = useOrgPermission(); - const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Vault + ); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); const isVaultImportDisabled = isDisabled || !isOrgAdmin; diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index ff081c5e6ec..33cd117bbcc 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -288,9 +288,13 @@ const OverviewPageContent = () => { const { subscription } = useSubscription(); const { hasOrgRole } = useOrgPermission(); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); - const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Vault + ); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); - const { data: dopplerConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Doppler); + const { data: dopplerConfigs = [] } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Doppler + ); const dopplerImportConfigs = useMemo( () => dopplerConfigs.filter((c) => c.connectionId), [dopplerConfigs] diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx index 4dfc8cb8a4e..241e8cc5acb 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx @@ -86,10 +86,7 @@ import { fetchDashboardProjectSecretsByKeys } from "@app/hooks/api/dashboard/queries"; import { UsedBySecretSyncs } from "@app/hooks/api/dashboard/types"; -import { - useGetExternalMigrationConfigs, - useImportVaultSecrets -} from "@app/hooks/api/migration"; +import { useGetExternalMigrationConfigs, useImportVaultSecrets } from "@app/hooks/api/migration"; import { ExternalMigrationProviders, VaultImportStatus } from "@app/hooks/api/migration/types"; import { secretApprovalRequestKeys } from "@app/hooks/api/secretApprovalRequest/queries"; import { PendingAction } from "@app/hooks/api/secretFolders/types"; @@ -210,7 +207,9 @@ export const ActionBar = ({ const isMultiSelectActive = Boolean(Object.keys(selectedSecrets).length); const { permission } = useProjectPermission(); - const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Vault + ); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const { hasOrgRole } = useOrgPermission(); const isOrgAdmin = hasOrgRole(OrgMembershipRole.Admin); diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx index 7d6c407a515..3ea4392ae4b 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/CreateDynamicSecretForm/components/LoadFromVaultBanner.tsx @@ -12,7 +12,9 @@ type Props = { }; export const LoadFromVaultBanner = ({ onClick }: Props) => { - const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs(ExternalMigrationProviders.Vault); + const { data: vaultConfigs = [] } = useGetExternalMigrationConfigs( + ExternalMigrationProviders.Vault + ); const hasVaultConnection = vaultConfigs.some((config) => config.connectionId); const { hasOrgRole } = useOrgPermission(); From b570ed67158c66c5241e6462d48cb15015520507 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 7 Apr 2026 20:27:05 -0700 Subject: [PATCH 052/562] feat: add insights page to secrets management product type --- backend/package-lock.json | 119 ++++ backend/package.json | 2 + backend/src/@types/fastify.d.ts | 2 + backend/src/ee/routes/v1/index.ts | 3 + backend/src/ee/routes/v1/insights-router.ts | 232 +++++++ .../ee/services/audit-log/audit-log-types.ts | 52 +- .../ee/services/insights/insights-service.ts | 427 +++++++++++++ .../ee/services/insights/insights-types.ts | 23 + .../ee/services/permission/default-roles.ts | 3 + .../services/permission/project-permission.ts | 16 +- .../secret-rotation-v2-dal.ts | 151 +++++ backend/src/server/plugins/audit-log.ts | 3 + backend/src/server/routes/index.ts | 12 + backend/src/services/reminder/reminder-dal.ts | 49 +- .../secret-v2-bridge/secret-v2-bridge-dal.ts | 24 + frontend/package-lock.json | 576 ++++++++++++++++++ frontend/package.json | 8 + frontend/src/const/routes.ts | 4 + .../ProjectPermissionContext/index.tsx | 1 + .../context/ProjectPermissionContext/types.ts | 8 +- frontend/src/context/index.tsx | 1 + .../src/hooks/api/auditLogs/constants.tsx | 9 + frontend/src/hooks/api/auditLogs/enums.tsx | 6 + frontend/src/hooks/api/index.tsx | 1 + .../src/hooks/api/secretInsights/index.ts | 23 + .../src/hooks/api/secretInsights/queries.tsx | 155 +++++ .../src/hooks/api/secretInsights/types.ts | 119 ++++ .../OrgSidebar/SecretManagerNav.tsx | 7 + .../ProjectRoleModifySection.utils.tsx | 21 +- .../InsightsPage/InsightsPage.tsx | 46 ++ .../components/AuthMethodChart.tsx | 178 ++++++ .../InsightsPage/components/CalendarCard.tsx | 79 +++ .../components/CalendarDayCell.tsx | 79 +++ .../components/CalendarEventDetail.tsx | 170 ++++++ .../components/CalendarEventPill.tsx | 36 ++ .../InsightsPage/components/CalendarGrid.tsx | 87 +++ .../components/CalendarLegend.tsx | 14 + .../components/InsightsSummaryCards.tsx | 398 ++++++++++++ .../InsightsPage/components/LineChart.tsx | 78 +++ .../components/SecretAccessChart.tsx | 83 +++ .../InsightsPage/components/WorldMap.tsx | 348 +++++++++++ .../components/countries-110m.json | 1 + .../InsightsPage/components/index.ts | 8 + .../InsightsPage/components/types.ts | 5 + .../secret-manager/InsightsPage/route.tsx | 19 + frontend/src/routeTree.gen.ts | 28 + frontend/src/routes.ts | 1 + 47 files changed, 3709 insertions(+), 6 deletions(-) create mode 100644 backend/src/ee/routes/v1/insights-router.ts create mode 100644 backend/src/ee/services/insights/insights-service.ts create mode 100644 backend/src/ee/services/insights/insights-types.ts create mode 100644 frontend/src/hooks/api/secretInsights/index.ts create mode 100644 frontend/src/hooks/api/secretInsights/queries.tsx create mode 100644 frontend/src/hooks/api/secretInsights/types.ts create mode 100644 frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/index.ts create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/types.ts create mode 100644 frontend/src/pages/secret-manager/InsightsPage/route.tsx diff --git a/backend/package-lock.json b/backend/package-lock.json index 34bce8f903c..0e154e9c0c9 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -89,6 +89,7 @@ "fastify": "^4.29.1", "fastify-plugin": "^4.5.1", "file-type": "^22.0.0", + "geoip-lite": "^2.0.1", "google-auth-library": "^9.9.0", "handlebars": "^4.7.8", "hdb": "^0.19.10", @@ -162,6 +163,7 @@ "@smithy/types": "^4.3.1", "@types/bcrypt": "^5.0.2", "@types/dns-packet": "^5.6.5", + "@types/geoip-lite": "^1.4.4", "@types/jmespath": "^0.15.2", "@types/js-yaml": "^4.0.9", "@types/jsonwebtoken": "^9.0.5", @@ -11344,6 +11346,13 @@ "@types/send": "*" } }, + "node_modules/@types/geoip-lite": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/@types/geoip-lite/-/geoip-lite-1.4.4.tgz", + "integrity": "sha512-2uVfn+C6bX/H356H6mjxsWUA5u8LO8dJgSBIRO/NFlpMe4DESzacutD/rKYrTDKm1Ugv78b4Wz1KvpHrlv3jSw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", @@ -13790,6 +13799,15 @@ "ieee754": "^1.2.1" } }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -17242,6 +17260,79 @@ "node": ">=6.9.0" } }, + "node_modules/geoip-lite": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/geoip-lite/-/geoip-lite-2.0.1.tgz", + "integrity": "sha512-cR9E28nu1a6dsvzB1tANhdmCyXWV1L4AiSCT9alHLIUl06599EGu33mqY99ieU0twQob0kfcDQ/sAUBvHb7swA==", + "license": "Apache-2.0", + "dependencies": { + "chalk": "4.1 - 4.1.2", + "iconv-lite": "0.4.13 - 0.6.3", + "ip-address": "5.8.9 - 5.9.4", + "lazy": "1.0.11", + "yauzl": "^3.2.1" + }, + "engines": { + "node": ">=24.0.0" + } + }, + "node_modules/geoip-lite/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/geoip-lite/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/geoip-lite/node_modules/ip-address": { + "version": "5.9.4", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", + "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "lodash": "^4.17.15", + "sprintf-js": "1.1.2" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/geoip-lite/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "license": "BSD-3-Clause" + }, + "node_modules/geoip-lite/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -19231,6 +19322,15 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "license": "MIT" }, + "node_modules/lazy": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", + "license": "MIT", + "engines": { + "node": ">=0.2.0" + } + }, "node_modules/ldap-filter": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.3.3.tgz", @@ -21823,6 +21923,12 @@ "url": "https://ko-fi.com/killymxi" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, "node_modules/pg": { "version": "8.13.1", "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", @@ -27398,6 +27504,19 @@ "url": "https://github.com/sponsors/eemeli" } }, + "node_modules/yauzl": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", + "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "pend": "~1.2.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/backend/package.json b/backend/package.json index 9e44bc4e308..f4ee1977b6e 100644 --- a/backend/package.json +++ b/backend/package.json @@ -83,6 +83,7 @@ "@smithy/types": "^4.3.1", "@types/bcrypt": "^5.0.2", "@types/dns-packet": "^5.6.5", + "@types/geoip-lite": "^1.4.4", "@types/jmespath": "^0.15.2", "@types/js-yaml": "^4.0.9", "@types/jsonwebtoken": "^9.0.5", @@ -210,6 +211,7 @@ "fastify": "^4.29.1", "fastify-plugin": "^4.5.1", "file-type": "^22.0.0", + "geoip-lite": "^2.0.1", "google-auth-library": "^9.9.0", "handlebars": "^4.7.8", "hdb": "^0.19.10", diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 2a7dc22076e..3552d732317 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -22,6 +22,7 @@ import { TGatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2 import { TGithubOrgSyncServiceFactory } from "@app/ee/services/github-org-sync/github-org-sync-service"; import { TGroupServiceFactory } from "@app/ee/services/group/group-service"; import { TIdentityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template"; +import { TInsightsServiceFactory } from "@app/ee/services/insights/insights-service"; import { TKmipClientDALFactory } from "@app/ee/services/kmip/kmip-client-dal"; import { TKmipOperationServiceFactory } from "@app/ee/services/kmip/kmip-operation-service"; import { TKmipServiceFactory } from "@app/ee/services/kmip/kmip-service"; @@ -363,6 +364,7 @@ declare module "fastify" { secretRotationV2: TSecretRotationV2ServiceFactory; microsoftTeams: TMicrosoftTeamsServiceFactory; assumePrivileges: TAssumePrivilegeServiceFactory; + insights: TInsightsServiceFactory; relay: TRelayServiceFactory; gatewayV2: TGatewayV2ServiceFactory; githubOrgSync: TGithubOrgSyncServiceFactory; diff --git a/backend/src/ee/routes/v1/index.ts b/backend/src/ee/routes/v1/index.ts index e75e6871ac9..7545d0cb933 100644 --- a/backend/src/ee/routes/v1/index.ts +++ b/backend/src/ee/routes/v1/index.ts @@ -21,6 +21,7 @@ import { registerGithubOrgSyncRouter } from "./github-org-sync-router"; import { registerGroupRouter } from "./group-router"; import { registerIdentityProjectAdditionalPrivilegeRouter } from "./identity-project-additional-privilege-router"; import { registerIdentityTemplateRouter } from "./identity-template-router"; +import { registerInsightsRouter } from "./insights-router"; import { registerKmipRouter } from "./kmip-router"; import { registerKmipSpecRouter } from "./kmip-spec-router"; import { registerLdapRouter } from "./ldap-router"; @@ -114,6 +115,8 @@ export const registerV1EERoutes = async (server: FastifyZodProvider) => { await server.register(registerRelayRouter, { prefix: "/relays" }); await server.register(registerGithubOrgSyncRouter, { prefix: "/github-org-sync-config" }); + await server.register(registerInsightsRouter, { prefix: "/insights" }); + await server.register( async (pkiRouter) => { await pkiRouter.register(registerCaCrlRouter, { prefix: "/crl" }); diff --git a/backend/src/ee/routes/v1/insights-router.ts b/backend/src/ee/routes/v1/insights-router.ts new file mode 100644 index 00000000000..03045b3d3c0 --- /dev/null +++ b/backend/src/ee/routes/v1/insights-router.ts @@ -0,0 +1,232 @@ +import { z } from "zod"; + +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { readLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; + +export const registerInsightsRouter = async (server: FastifyZodProvider) => { + server.route({ + method: "GET", + url: "/secrets/calendar", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsCalendar", + description: "Get secret rotation and reminder events for a calendar month view", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim(), + month: z.coerce.number().min(1).max(12), + year: z.coerce.number().min(2000).max(2100) + }), + response: { + 200: z.object({ + rotations: z.array( + z.object({ + id: z.string(), + name: z.string(), + type: z.string(), + nextRotationAt: z.date().nullable(), + environment: z.string(), + secretPath: z.string(), + secretKeys: z.string().array(), + rotationInterval: z.number(), + rotationStatus: z.string().nullable(), + isAutoRotationEnabled: z.boolean() + }) + ), + reminders: z.array( + z.object({ + id: z.string(), + secretId: z.string().nullable(), + secretKey: z.string(), + nextReminderDate: z.date(), + message: z.string().nullable().optional(), + environment: z.string(), + secretPath: z.string(), + repeatDays: z.number().nullable().optional() + }) + ) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId, month, year } = req.query; + const result = await server.services.insights.getCalendar({ projectId, month, year }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR, metadata: { projectId, month, year } }, + ...req.auditLogInfo + }); + return result; + } + }); + + server.route({ + method: "GET", + url: "/secrets/access-volume", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsAccessVolume", + description: "Get secret access volume aggregated by day and actor for the past week", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim() + }), + response: { + 200: z.object({ + days: z.array( + z.object({ + date: z.string(), + total: z.number(), + actors: z.array(z.object({ name: z.string(), type: z.string(), count: z.number() })) + }) + ) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId } = req.query; + const result = await server.services.insights.getAccessVolume({ projectId }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME, metadata: { projectId } }, + ...req.auditLogInfo + }); + return result; + } + }); + + server.route({ + method: "GET", + url: "/secrets/access-locations", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsAccessLocations", + description: "Get geographic locations of secret access based on audit log IP addresses", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim(), + days: z.coerce.number().min(1).max(90).default(30) + }), + response: { + 200: z.object({ + locations: z.array( + z.object({ lat: z.number(), lng: z.number(), city: z.string(), country: z.string(), count: z.number() }) + ) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId, days } = req.query; + const result = await server.services.insights.getAccessLocations({ projectId, days }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS, metadata: { projectId, days } }, + ...req.auditLogInfo + }); + return result; + } + }); + + server.route({ + method: "GET", + url: "/auth/method-distribution", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsAuthMethodDistribution", + description: "Get distribution of authentication methods from secret access audit logs", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim(), + days: z.coerce.number().min(1).max(90).default(30) + }), + response: { + 200: z.object({ + methods: z.array(z.object({ method: z.string(), count: z.number() })) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId, days } = req.query; + const result = await server.services.insights.getAuthMethodDistribution({ projectId, days }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_AUTH_METHODS, metadata: { projectId, days } }, + ...req.auditLogInfo + }); + return result; + } + }); + + server.route({ + method: "GET", + url: "/secrets/summary", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsSummary", + description: + "Get summary stats for the insights dashboard: upcoming rotations, upcoming reminders, and stale secrets", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim() + }), + response: { + 200: z.object({ + upcomingRotations: z.array( + z.object({ + name: z.string(), + environment: z.string(), + secretPath: z.string(), + nextRotationAt: z.date().nullable(), + rotationStatus: z.string().nullable() + }) + ), + failedRotations: z.array( + z.object({ + name: z.string(), + environment: z.string(), + secretPath: z.string(), + nextRotationAt: z.date().nullable(), + rotationStatus: z.string().nullable() + }) + ), + upcomingReminders: z.array( + z.object({ + secretKey: z.string(), + environment: z.string(), + secretPath: z.string(), + nextReminderDate: z.date() + }) + ), + overdueReminders: z.array( + z.object({ + secretKey: z.string(), + environment: z.string(), + secretPath: z.string(), + nextReminderDate: z.date() + }) + ), + staleSecrets: z.array( + z.object({ key: z.string(), environment: z.string(), secretPath: z.string(), updatedAt: z.date() }) + ) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId } = req.query; + const result = await server.services.insights.getSummary({ projectId }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY, metadata: { projectId } }, + ...req.auditLogInfo + }); + return result; + } + }); +}; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 3e0144513ee..b4ffedca1bc 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -589,6 +589,12 @@ export enum EventType { DASHBOARD_GET_SECRET_VALUE = "dashboard-get-secret-value", DASHBOARD_GET_SECRET_VERSION_VALUE = "dashboard-get-secret-version-value", + VIEW_INSIGHTS_AUTH_METHODS = "view-insights-auth-methods", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR = "view-insights-secrets-management-calendar", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME = "view-insights-secrets-management-access-volume", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS = "view-insights-secrets-management-access-locations", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY = "view-insights-secrets-management-summary", + PAM_SESSION_CREDENTIALS_GET = "pam-session-credentials-get", PAM_SESSION_START = "pam-session-start", PAM_SESSION_LOGS_UPDATE = "pam-session-logs-update", @@ -768,7 +774,7 @@ interface IdentityActorMetadata { identityId: string; name: string; permission?: Record; - + authMethod?: string; aws?: TAWSAuthDetails; kubernetes?: TKubernetesAuthDetails; oidc?: TOidcAuthDetails; @@ -4631,6 +4637,45 @@ interface DashboardGetSecretVersionValueEvent { }; } +interface ViewSecretManagementInsightsCalendarEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR; + metadata: { + projectId: string; + month: number; + year: number; + }; +} + +interface ViewSecretManagementInsightsAccessVolumeEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME; + metadata: { + projectId: string; + }; +} + +interface ViewSecretManagementInsightsAccessLocationsEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS; + metadata: { + projectId: string; + days: number; + }; +} + +interface ViewInsightsAuthMethodsEvent { + type: EventType.VIEW_INSIGHTS_AUTH_METHODS; + metadata: { + projectId: string; + days: number; + }; +} + +interface ViewSecretManagementInsightsSummaryEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY; + metadata: { + projectId: string; + }; +} + interface ProjectRoleCreateEvent { type: EventType.CREATE_PROJECT_ROLE; metadata: { @@ -6150,6 +6195,11 @@ export type Event = | DashboardListSecretsEvent | DashboardGetSecretValueEvent | DashboardGetSecretVersionValueEvent + | ViewSecretManagementInsightsCalendarEvent + | ViewSecretManagementInsightsAccessVolumeEvent + | ViewSecretManagementInsightsAccessLocationsEvent + | ViewInsightsAuthMethodsEvent + | ViewSecretManagementInsightsSummaryEvent | ProjectRoleCreateEvent | ProjectRoleUpdateEvent | ProjectRoleDeleteEvent diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts new file mode 100644 index 00000000000..c4a2725b01c --- /dev/null +++ b/backend/src/ee/services/insights/insights-service.ts @@ -0,0 +1,427 @@ +import { ForbiddenError } from "@casl/ability"; +import geoip from "geoip-lite"; + +import { ActionProjectType, IdentityAuthMethod } from "@app/db/schemas"; +import { EventType, TAuditLogServiceFactory } from "@app/ee/services/audit-log/audit-log-types"; +import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; +import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; +import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; +import { BadRequestError } from "@app/lib/errors"; +import { OrgServiceActor } from "@app/lib/types"; +import { TProjectBotServiceFactory } from "@app/services/project-bot/project-bot-service"; +import { TReminderDALFactory } from "@app/services/reminder/reminder-dal"; +import { TSecretFolderDALFactory } from "@app/services/secret-folder/secret-folder-dal"; +import { TSecretV2BridgeDALFactory } from "@app/services/secret-v2-bridge/secret-v2-bridge-dal"; + +import { + TGetAccessLocationsDTO, + TGetAccessVolumeDTO, + TGetAuthMethodDistributionDTO, + TGetInsightsCalendarDTO, + TGetInsightsSummaryDTO +} from "./insights-types"; + +type TInsightsServiceFactoryDep = { + permissionService: Pick; + auditLogService: Pick; + secretRotationV2DAL: Pick; + reminderDAL: Pick; + folderDAL: Pick; + secretV2BridgeDAL: Pick; + projectBotService: Pick; +}; + +export type TInsightsServiceFactory = ReturnType; + +const VALUE_EVENT_TYPES = [ + EventType.GET_SECRETS, + EventType.GET_SECRET, + EventType.DASHBOARD_GET_SECRET_VALUE, + EventType.DASHBOARD_GET_SECRET_VERSION_VALUE, + EventType.GET_SECRET_ROTATION_GENERATED_CREDENTIALS, + EventType.CREATE_DYNAMIC_SECRET_LEASE +]; + +const checkInsightsPermission = async ( + permissionService: TInsightsServiceFactoryDep["permissionService"], + projectId: string, + actor: OrgServiceActor +) => { + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorId: actor.id, + projectId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + actionProjectType: ActionProjectType.SecretManager + }); + + ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionInsightsActions.Read, ProjectPermissionSub.Insights); +}; + +export const insightsServiceFactory = ({ + permissionService, + auditLogService, + secretRotationV2DAL, + reminderDAL, + folderDAL, + secretV2BridgeDAL, + projectBotService +}: TInsightsServiceFactoryDep) => { + const fetchReminders = async (projectId: string, startDate: Date, endDate: Date) => { + const rawReminders = await reminderDAL.findByProjectAndDateRange({ projectId, startDate, endDate }); + if (!rawReminders.length) return []; + + const folderIds = [...new Set(rawReminders.map((r) => r.folderId))]; + const foldersWithPath = await folderDAL.findSecretPathByFolderIds(projectId, folderIds); + const folderRecord: Record = {}; + foldersWithPath.forEach((folder) => { + if (folder) folderRecord[folder.id] = folder.path; + }); + + return rawReminders.map((r) => ({ + id: r.id, + secretId: r.secretId ?? null, + secretKey: r.secretKey, + nextReminderDate: r.nextReminderDate, + message: r.message ?? null, + environment: r.envSlug, + secretPath: folderRecord[r.folderId] ?? "/", + repeatDays: r.repeatDays ?? null + })); + }; + + const getCalendar = async (dto: TGetInsightsCalendarDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, dto.projectId, actorDto); + + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + + const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 1)); + const endDate = new Date(Date.UTC(dto.year, dto.month, 0, 23, 59, 59, 999)); + + const [rotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), + fetchReminders(dto.projectId, startDate, endDate) + ]); + + return { + rotations: rotations.map((r) => ({ + id: r.id, + name: r.name, + type: r.type, + nextRotationAt: r.nextRotationAt ?? null, + environment: r.environment.slug, + secretPath: r.folder.path, + secretKeys: r.secretKeys, + rotationInterval: r.rotationInterval, + rotationStatus: r.rotationStatus, + isAutoRotationEnabled: r.isAutoRotationEnabled + })), + reminders + }; + }; + + const getAccessVolume = async (dto: TGetAccessVolumeDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, dto.projectId, actorDto); + + const now = new Date(); + const todayStr = now.toISOString().slice(0, 10); + const endDate = new Date(`${todayStr}T23:59:59.999Z`); + const startDate = new Date(`${todayStr}T00:00:00.000Z`); + startDate.setUTCDate(startDate.getUTCDate() - 6); + + const auditLogs = await auditLogService.listAuditLogs({ + filter: { + projectId: dto.projectId, + eventType: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString(), + limit: 9999 + }, + actorId: actorDto.id, + actorOrgId: actorDto.orgId, + actorAuthMethod: actorDto.authMethod, + actor: actorDto.type + }); + + const dayMap = new Map>(); + + for (let i = 6; i >= 0; i -= 1) { + const d = new Date(`${todayStr}T00:00:00.000Z`); + d.setUTCDate(d.getUTCDate() - i); + const key = d.toISOString().slice(0, 10); + dayMap.set(key, new Map()); + } + + auditLogs.forEach((log) => { + const dateKey = log.createdAt.toISOString().slice(0, 10); + const actorMap = dayMap.get(dateKey); + if (!actorMap) return; + + const actorMeta = log.actor.metadata as Record | null; + const actorName = actorMeta?.email || actorMeta?.name || actorMeta?.identityId || actorMeta?.userId || "Unknown"; + const actorKey = `${log.actor.type}:${actorName}`; + + const existing = actorMap.get(actorKey); + if (existing) { + existing.count += 1; + } else { + actorMap.set(actorKey, { name: actorName, type: log.actor.type, count: 1 }); + } + }); + + const days = Array.from(dayMap.entries()).map(([date, actorMap]) => { + const actors = Array.from(actorMap.values()).sort((a, b) => b.count - a.count); + const total = actors.reduce((sum, a) => sum + a.count, 0); + return { date, total, actors }; + }); + + return { days }; + }; + + const getAccessLocations = async (dto: TGetAccessLocationsDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, dto.projectId, actorDto); + + const endDate = new Date(); + const startDate = new Date(); + startDate.setUTCDate(startDate.getUTCDate() - dto.days); + + const auditLogs = await auditLogService.listAuditLogs({ + filter: { + projectId: dto.projectId, + eventType: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString(), + limit: 9999 + }, + actorId: actorDto.id, + actorOrgId: actorDto.orgId, + actorAuthMethod: actorDto.authMethod, + actor: actorDto.type + }); + + const ipCounts = new Map(); + auditLogs.forEach((log) => { + const ip = (log as { ipAddress?: string | null }).ipAddress; + if (ip) { + ipCounts.set(ip, (ipCounts.get(ip) || 0) + 1); + } + }); + + const locationMap = new Map(); + + const isPrivateIp = (ip: string) => + ip === "127.0.0.1" || + ip === "::1" || + ip === "::ffff:127.0.0.1" || + ip.startsWith("10.") || + ip.startsWith("172.16.") || + ip.startsWith("172.17.") || + ip.startsWith("172.18.") || + ip.startsWith("172.19.") || + ip.startsWith("172.2") || + ip.startsWith("172.30.") || + ip.startsWith("172.31.") || + ip.startsWith("192.168."); + + ipCounts.forEach((count, ip) => { + if (isPrivateIp(ip)) { + const key = "Local Network:LOCAL"; + const existing = locationMap.get(key); + if (existing) { + existing.count += count; + } else { + locationMap.set(key, { lat: 0, lng: 0, city: "Local Network", country: "LOCAL", count }); + } + return; + } + + const geo = geoip.lookup(ip); + if (!geo || !geo.ll) return; + + const city = geo.city || geo.region || ""; + const key = `${city}:${geo.country}`; + const existing = locationMap.get(key); + if (existing) { + existing.count += count; + } else { + locationMap.set(key, { + lat: geo.ll[0], + lng: geo.ll[1], + city, + country: geo.country, + count + }); + } + }); + + return { + locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) + }; + }; + + const getAuthMethodDistribution = async (dto: TGetAuthMethodDistributionDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, dto.projectId, actorDto); + + const endDate = new Date(); + const startDate = new Date(); + startDate.setUTCDate(startDate.getUTCDate() - dto.days); + + const auditLogs = await auditLogService.listAuditLogs({ + filter: { + projectId: dto.projectId, + eventType: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString(), + limit: 10000 + }, + actorId: actorDto.id, + actorOrgId: actorDto.orgId, + actorAuthMethod: actorDto.authMethod, + actor: actorDto.type + }); + + const methodCounts = new Map(); + + const authMethodLabels: Record = { + email: "Email", + google: "Google", + github: "GitHub", + gitlab: "GitLab", + "okta-saml": "Okta SAML", + "azure-saml": "Azure SAML", + "jumpcloud-saml": "JumpCloud SAML", + "google-saml": "Google SAML", + "keycloak-saml": "Keycloak SAML", + ldap: "LDAP", + oidc: "OIDC" + }; + + const identityAuthMethodLabels: Record = { + [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", + [IdentityAuthMethod.TOKEN_AUTH]: "Token Auth", + [IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes", + [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", + [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", + [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth", + [IdentityAuthMethod.OIDC_AUTH]: "OIDC", + [IdentityAuthMethod.JWT_AUTH]: "JWT Auth", + [IdentityAuthMethod.LDAP_AUTH]: "LDAP Auth", + [IdentityAuthMethod.ALICLOUD_AUTH]: "AliCloud Auth", + [IdentityAuthMethod.TLS_CERT_AUTH]: "TLS Certificate", + [IdentityAuthMethod.OCI_AUTH]: "OCI Auth", + [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" + }; + + auditLogs.forEach((log) => { + const actorMeta = log.actor.metadata as Record | null; + let method = "Unknown"; + + if (log.actor.type === "user") { + const raw = (actorMeta?.authMethod as string) || "Unknown"; + method = authMethodLabels[raw] || raw; + } else if (log.actor.type === "identity") { + const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; + method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; + } else if (log.actor.type === "service") { + method = "Service Token"; + } else { + method = log.actor.type; + } + + methodCounts.set(method, (methodCounts.get(method) || 0) + 1); + }); + + const methods = Array.from(methodCounts.entries()) + .map(([method, count]) => ({ method, count })) + .sort((a, b) => b.count - a.count); + + return { methods }; + }; + + const getSummary = async (dto: TGetInsightsSummaryDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, dto.projectId, actorDto); + + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + + const now = new Date(); + const in7Days = new Date(now); + in7Days.setDate(now.getDate() + 7); + const staleThreshold = new Date(now); + staleThreshold.setDate(now.getDate() - 90); + + // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel + const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ + projectId: dto.projectId, + startDate: new Date(0), + endDate: in7Days + }), + secretRotationV2DAL.findByProject(dto.projectId), + fetchReminders(dto.projectId, new Date(0), in7Days) + ]); + + const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ + name: r.name, + environment: r.environment.slug, + secretPath: r.folder.path, + nextRotationAt: r.nextRotationAt ?? null, + rotationStatus: r.rotationStatus + }); + + const mapReminder = (r: (typeof reminders)[number]) => ({ + secretKey: r.secretKey, + environment: r.environment, + secretPath: r.secretPath, + nextReminderDate: r.nextReminderDate + }); + + // Failed rotations with nextRotationAt set also count as upcoming (will be re-attempted) + const upcomingIds = new Set(upcomingRotationsRaw.map((r) => r.id)); + const failedWithRetry = allProjectRotations.filter( + (r) => r.rotationStatus === "failed" && r.nextRotationAt && !upcomingIds.has(r.id) + ); + const upcomingRotations = [...upcomingRotationsRaw, ...failedWithRetry].map(mapRotation); + + const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); + const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); + const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); + + const rawStaleSecrets = await secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold); + + // Resolve folder paths for stale secrets + const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; + const staleFolders = staleFolderIds.length + ? await folderDAL.findSecretPathByFolderIds(dto.projectId, staleFolderIds) + : []; + const staleFolderMap: Record = {}; + staleFolders.forEach((f) => { + if (f) staleFolderMap[f.id] = f.path; + }); + + const staleSecrets = rawStaleSecrets.map((s) => ({ + key: s.key, + environment: s.environment, + secretPath: staleFolderMap[s.folderId] ?? "/", + updatedAt: s.updatedAt + })); + + return { + upcomingRotations, + failedRotations, + upcomingReminders, + overdueReminders, + staleSecrets + }; + }; + + return { + getCalendar, + getAccessVolume, + getAccessLocations, + getAuthMethodDistribution, + getSummary + }; +}; diff --git a/backend/src/ee/services/insights/insights-types.ts b/backend/src/ee/services/insights/insights-types.ts new file mode 100644 index 00000000000..68f9ac6dc22 --- /dev/null +++ b/backend/src/ee/services/insights/insights-types.ts @@ -0,0 +1,23 @@ +export type TGetInsightsCalendarDTO = { + projectId: string; + month: number; + year: number; +}; + +export type TGetAccessVolumeDTO = { + projectId: string; +}; + +export type TGetAccessLocationsDTO = { + projectId: string; + days: number; +}; + +export type TGetAuthMethodDistributionDTO = { + projectId: string; + days: number; +}; + +export type TGetInsightsSummaryDTO = { + projectId: string; +}; diff --git a/backend/src/ee/services/permission/default-roles.ts b/backend/src/ee/services/permission/default-roles.ts index fa3d43f8a01..cd374d454b8 100644 --- a/backend/src/ee/services/permission/default-roles.ts +++ b/backend/src/ee/services/permission/default-roles.ts @@ -16,6 +16,7 @@ import { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, @@ -437,6 +438,8 @@ const buildAdminPermissionRules = () => { can([ProjectPermissionSecretApprovalRequestActions.Read], ProjectPermissionSub.SecretApprovalRequest); + can([ProjectPermissionInsightsActions.Read], ProjectPermissionSub.Insights); + return rules; }; diff --git a/backend/src/ee/services/permission/project-permission.ts b/backend/src/ee/services/permission/project-permission.ts index f0e4ecf2ac9..ba6df0662a0 100644 --- a/backend/src/ee/services/permission/project-permission.ts +++ b/backend/src/ee/services/permission/project-permission.ts @@ -248,6 +248,10 @@ export enum ProjectPermissionAuditLogsActions { Read = "read" } +export enum ProjectPermissionInsightsActions { + Read = "read" +} + export enum ProjectPermissionPamAccountActions { Access = "access", Read = "read", @@ -354,7 +358,8 @@ export enum ProjectPermissionSub { ApprovalRequestGrants = "approval-request-grants", McpEndpoints = "mcp-endpoints", McpServers = "mcp-servers", - McpActivityLogs = "mcp-activity-logs" + McpActivityLogs = "mcp-activity-logs", + Insights = "insights" } // Structure: { [subject]: { [action]: allowedConditionKeys[] } } @@ -685,7 +690,8 @@ export type ProjectPermissionSet = ] | [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests] | [ProjectPermissionApprovalRequestGrantActions, ProjectPermissionSub.ApprovalRequestGrants] - | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest]; + | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest] + | [ProjectPermissionInsightsActions, ProjectPermissionSub.Insights]; const SECRET_PATH_MISSING_SLASH_ERR_MSG = "Invalid Secret Path; it must start with a '/'"; const SECRET_PATH_PERMISSION_OPERATOR_SCHEMA = z.union([ @@ -1508,6 +1514,12 @@ const GeneralPermissionSchema = [ "Describe what action an entity can take." ) }), + z.object({ + subject: z.literal(ProjectPermissionSub.Insights).describe("The entity this permission pertains to."), + action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionInsightsActions).describe( + "Describe what action an entity can take." + ) + }), z.object({ subject: z.literal(ProjectPermissionSub.IpAllowList).describe("The entity this permission pertains to."), action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionActions).describe( diff --git a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts index 4ef50038ccd..01f85dbab5d 100644 --- a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts +++ b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts @@ -469,6 +469,88 @@ export const secretRotationV2DALFactory = ( } }; + const findByProjectAndDateRange = async ( + { + projectId, + startDate, + endDate + }: { + projectId: string; + startDate: Date; + endDate: Date; + }, + tx?: Knex + ) => { + try { + const query = (tx || db.replicaNode())(TableName.SecretRotationV2) + .join(TableName.SecretFolder, `${TableName.SecretRotationV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .join(TableName.AppConnection, `${TableName.SecretRotationV2}.connectionId`, `${TableName.AppConnection}.id`) + .join( + TableName.SecretRotationV2SecretMapping, + `${TableName.SecretRotationV2SecretMapping}.rotationId`, + `${TableName.SecretRotationV2}.id` + ) + .join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretRotationV2SecretMapping}.secretId`) + .where(`${TableName.Environment}.projectId`, projectId) + .whereNotNull(`${TableName.SecretRotationV2}.nextRotationAt`); + + const rawRotations = await query + .whereBetween(`${TableName.SecretRotationV2}.nextRotationAt`, [startDate, endDate]) + .select( + selectAllTableCols(TableName.SecretRotationV2), + db.ref("name").withSchema(TableName.Environment).as("envName"), + db.ref("id").withSchema(TableName.Environment).as("envId"), + db.ref("slug").withSchema(TableName.Environment).as("envSlug"), + db.ref("id").withSchema(TableName.AppConnection).as("connectionAppId"), + db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), + db.ref("id").withSchema(TableName.SecretV2).as("secretId") + ); + + if (!rawRotations.length) return []; + + const foldersWithPath = await folderDAL.findSecretPathByFolderIds( + projectId, + rawRotations.map((r) => r.folderId), + tx + ); + + const folderRecord: Record = {}; + foldersWithPath.forEach((folder) => { + if (folder) folderRecord[folder.id] = folder; + }); + + return sqlNestRelationships({ + data: rawRotations, + key: "id", + parentMapper: (rotation) => ({ + id: rotation.id, + name: rotation.name, + type: rotation.type, + nextRotationAt: rotation.nextRotationAt, + rotationInterval: rotation.rotationInterval, + rotationStatus: rotation.rotationStatus, + isAutoRotationEnabled: rotation.isAutoRotationEnabled, + environment: { slug: rotation.envSlug, name: rotation.envName, id: rotation.envId }, + folder: { + id: rotation.folderId, + path: folderRecord[rotation.folderId]?.path ?? "/" + }, + connection: { id: rotation.connectionAppId } + }), + childrenMapper: [ + { + key: "secretKey", + label: "secretKeys" as const, + mapper: ({ secretKey }) => secretKey + } + ] + }); + } catch (error) { + throw new DatabaseError({ error, name: "Find Calendar Rotations - Secret Rotation V2" }); + } + }; + const findSecretRotationsToQueue = async (rotateBy: Date, tx?: Knex) => { const secretRotations = await (tx || db.replicaNode())(TableName.SecretRotationV2) .where(`${TableName.SecretRotationV2}.isAutoRotationEnabled`, true) @@ -479,6 +561,73 @@ export const secretRotationV2DALFactory = ( return secretRotations; }; + const findByProject = async (projectId: string, tx?: Knex) => { + try { + const rawRotations = await (tx || db.replicaNode())(TableName.SecretRotationV2) + .join(TableName.SecretFolder, `${TableName.SecretRotationV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .join(TableName.AppConnection, `${TableName.SecretRotationV2}.connectionId`, `${TableName.AppConnection}.id`) + .join( + TableName.SecretRotationV2SecretMapping, + `${TableName.SecretRotationV2SecretMapping}.rotationId`, + `${TableName.SecretRotationV2}.id` + ) + .join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretRotationV2SecretMapping}.secretId`) + .where(`${TableName.Environment}.projectId`, projectId) + .select( + selectAllTableCols(TableName.SecretRotationV2), + db.ref("name").withSchema(TableName.Environment).as("envName"), + db.ref("id").withSchema(TableName.Environment).as("envId"), + db.ref("slug").withSchema(TableName.Environment).as("envSlug"), + db.ref("id").withSchema(TableName.AppConnection).as("connectionAppId"), + db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), + db.ref("id").withSchema(TableName.SecretV2).as("secretId") + ); + + if (!rawRotations.length) return []; + + const foldersWithPath = await folderDAL.findSecretPathByFolderIds( + projectId, + rawRotations.map((r) => r.folderId), + tx + ); + + const folderRecord: Record = {}; + foldersWithPath.forEach((folder) => { + if (folder) folderRecord[folder.id] = folder; + }); + + return sqlNestRelationships({ + data: rawRotations, + key: "id", + parentMapper: (rotation) => ({ + id: rotation.id, + name: rotation.name, + type: rotation.type, + nextRotationAt: rotation.nextRotationAt, + rotationInterval: rotation.rotationInterval, + rotationStatus: rotation.rotationStatus, + isAutoRotationEnabled: rotation.isAutoRotationEnabled, + environment: { slug: rotation.envSlug, name: rotation.envName, id: rotation.envId }, + folder: { + id: rotation.folderId, + path: folderRecord[rotation.folderId]?.path ?? "/" + }, + connection: { id: rotation.connectionAppId } + }), + childrenMapper: [ + { + key: "secretKey", + label: "secretKeys" as const, + mapper: ({ secretKey }) => secretKey + } + ] + }); + } catch (error) { + throw new DatabaseError({ error, name: "Find by Project - Secret Rotation V2" }); + } + }; + return { ...secretRotationV2Orm, find, @@ -490,6 +639,8 @@ export const secretRotationV2DALFactory = ( insertSecretMappings: secretRotationV2SecretMappingOrm.insertMany, findWithMappedSecrets, findWithMappedSecretsCount, + findByProjectAndDateRange, + findByProject, findSecretRotationsToQueue }; }; diff --git a/backend/src/server/plugins/audit-log.ts b/backend/src/server/plugins/audit-log.ts index 9fb14e97cb1..8409f41267d 100644 --- a/backend/src/server/plugins/audit-log.ts +++ b/backend/src/server/plugins/audit-log.ts @@ -49,10 +49,12 @@ export const injectAuditLogInfo = fp(async (server: FastifyZodProvider) => { req.auditLogInfo = payload; return; } + if (req.auth.actor === ActorType.USER) { payload.actor = { type: ActorType.USER, metadata: { + ...(req.auth.authMethod ? { authMethod: req.auth.authMethod } : {}), email: req.auth.user.email, username: req.auth.user.username, userId: req.permission.id @@ -74,6 +76,7 @@ export const injectAuditLogInfo = fp(async (server: FastifyZodProvider) => { metadata: { name: req.auth.identityName, identityId: req.auth.identityId, + ...(identityAuthInfo?.authMethod ? { authMethod: identityAuthInfo.authMethod } : {}), ...(identityAuthInfo?.aws ? { aws: identityAuthInfo.aws } : {}), ...(identityAuthInfo?.kubernetes ? { kubernetes: identityAuthInfo.kubernetes } : {}), ...(identityAuthInfo?.oidc ? { oidc: identityAuthInfo.oidc } : {}) diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index aca5ed3e16c..0ac8ff65b91 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -69,6 +69,7 @@ import { isHsmActiveAndEnabled } from "@app/ee/services/hsm/hsm-fns"; import { THsmServiceFactory } from "@app/ee/services/hsm/hsm-service"; import { identityAuthTemplateDALFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-dal"; import { identityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-service"; +import { insightsServiceFactory } from "@app/ee/services/insights/insights-service"; import { kmipClientCertificateDALFactory } from "@app/ee/services/kmip/kmip-client-certificate-dal"; import { kmipClientDALFactory } from "@app/ee/services/kmip/kmip-client-dal"; import { kmipOperationServiceFactory } from "@app/ee/services/kmip/kmip-operation-service"; @@ -2335,6 +2336,16 @@ export const registerRoutes = async ( gatewayV2Service }); + const insightsService = insightsServiceFactory({ + permissionService, + auditLogService, + secretRotationV2DAL, + reminderDAL, + folderDAL, + secretV2BridgeDAL, + projectBotService + }); + const pkiSyncQueue = pkiSyncQueueFactory({ queueService, kmsService, @@ -3139,6 +3150,7 @@ export const registerRoutes = async ( secretRotationV2: secretRotationV2Service, microsoftTeams: microsoftTeamsService, assumePrivileges: assumePrivilegeService, + insights: insightsService, githubOrgSync: githubOrgSyncConfigService, folderCommit: folderCommitService, secretScanningV2: secretScanningV2Service, diff --git a/backend/src/services/reminder/reminder-dal.ts b/backend/src/services/reminder/reminder-dal.ts index 4161552a95e..bad70197169 100644 --- a/backend/src/services/reminder/reminder-dal.ts +++ b/backend/src/services/reminder/reminder-dal.ts @@ -148,11 +148,58 @@ export const reminderDALFactory = (db: TDbClient) => { return reminders; }; + const findByProjectAndDateRange = async ( + { + projectId, + startDate, + endDate + }: { + projectId: string; + startDate: Date; + endDate: Date; + }, + tx?: Knex + ) => { + const query = (tx || db.replicaNode())(TableName.Reminder) + .whereNotNull(`${TableName.Reminder}.secretId`) + .whereBetween(`${TableName.Reminder}.nextReminderDate`, [startDate, endDate]) + .join(TableName.SecretV2, `${TableName.Reminder}.secretId`, `${TableName.SecretV2}.id`) + .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) + .join( + TableName.Environment, + `${TableName.SecretFolder}.envId`, + `${TableName.Environment}.id` + ) + .where(`${TableName.Environment}.projectId`, projectId); + + const rawReminders = await query + .select(selectAllTableCols(TableName.Reminder)) + .select( + db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), + db.ref("folderId").withSchema(TableName.SecretV2).as("secretFolderId"), + db.ref("slug").withSchema(TableName.Environment).as("envSlug"), + db.ref("name").withSchema(TableName.Environment).as("envName") + ); + + return rawReminders.map((r) => ({ + id: r.id, + secretId: r.secretId, + secretKey: (r as unknown as Record).secretKey, + nextReminderDate: r.nextReminderDate, + message: r.message, + repeatDays: r.repeatDays, + folderId: (r as unknown as Record).secretFolderId, + envSlug: (r as unknown as Record).envSlug, + envName: (r as unknown as Record).envName + })); + }; + return { ...reminderOrm, findSecretDailyReminders, findUpcomingReminders, findSecretReminder, - findSecretReminders + findSecretReminders, + findByProjectAndDateRange }; }; diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts index 13295398038..e66c8d41a1e 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts @@ -1128,6 +1128,29 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { } }; + const findStaleByProject = async (projectId: string, staleBeforeDate: Date, tx?: Knex) => { + try { + const result = await (tx || db.replicaNode())(TableName.SecretV2) + .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .where(`${TableName.Environment}.projectId`, projectId) + .whereNull(`${TableName.SecretV2}.userId`) + .where(`${TableName.SecretV2}.updatedAt`, "<", staleBeforeDate) + .select( + `${TableName.SecretV2}.key`, + `${TableName.SecretV2}.updatedAt`, + `${TableName.SecretV2}.folderId`, + `${TableName.Environment}.slug as environment` + ) + .orderBy(`${TableName.SecretV2}.updatedAt`, "asc") + .limit(50); + + return result as { key: string; updatedAt: Date; folderId: string; environment: string }[]; + } catch (error) { + throw new DatabaseError({ error, name: "findStaleByProject" }); + } + }; + return { ...secretOrm, update, @@ -1144,6 +1167,7 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { findReferencedSecretReferences, findAllProjectSecretValues, countByFolderIds, + findStaleByProject, findOne, find, invalidateSecretCacheByProjectId, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ab852cf0192..1ed268f7a25 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -72,6 +72,7 @@ "clsx": "^2.1.1", "cmdk": "^1.1.1", "cva": "npm:class-variance-authority@^0.7.1", + "d3-geo": "^3.1.1", "date-fns": "^4.1.0", "diff": "^8.0.3", "dompurify": "^3.2.4", @@ -102,11 +103,14 @@ "react-icons": "^5.4.0", "react-markdown": "^10.0.1", "react-select": "^5.9.0", + "react-simple-maps": "^3.0.0", "react-toastify": "^10.0.6", + "recharts": "^3.8.1", "redaxios": "^0.5.1", "rehype-raw": "^7.0.0", "sonner": "^2.0.7", "tailwind-merge": "^2.5.5", + "topojson-client": "^3.1.0", "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1", "xterm-readline": "^1.1.2", @@ -128,6 +132,7 @@ "@tanstack/router-devtools": "^1.87.9", "@tanstack/router-plugin": "^1.95.1", "@types/argon2-browser": "^1.18.4", + "@types/d3-geo": "^3.1.0", "@types/file-saver": "^2.0.7", "@types/jsrp": "^0.2.6", "@types/ms": "^0.7.34", @@ -136,6 +141,9 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/react-helmet": "^6.1.11", + "@types/react-simple-maps": "^3.0.6", + "@types/topojson-client": "^3.1.5", + "@types/topojson-specification": "^1.0.5", "@vitejs/plugin-react-swc": "^3.5.0", "eslint": "^8.57.1", "eslint-config-airbnb": "^19.0.4", @@ -4796,6 +4804,42 @@ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", "license": "MIT" }, + "node_modules/@reduxjs/toolkit": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz", + "integrity": "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^11.0.0", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@reduxjs/toolkit/node_modules/immer": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.4.tgz", + "integrity": "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", @@ -5236,6 +5280,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, "node_modules/@storybook/addon-a11y": { "version": "9.1.13", "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.1.13.tgz", @@ -6544,6 +6600,12 @@ "assertion-error": "^2.0.1" } }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", @@ -6559,6 +6621,22 @@ "@types/d3-selection": "*" } }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", @@ -6568,12 +6646,48 @@ "@types/d3-color": "*" } }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", "license": "MIT" }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", @@ -6643,6 +6757,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/geojson": { + "version": "7946.0.16", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", @@ -6773,6 +6894,64 @@ "@types/react": "*" } }, + "node_modules/@types/react-simple-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/react-simple-maps/-/react-simple-maps-3.0.6.tgz", + "integrity": "sha512-hR01RXt6VvsE41FxDd+Bqm1PPGdKbYjCYVtCgh38YeBPt46z3SwmWPWu2L3EdCAP6bd6VYEgztucihRw1C0Klg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-geo": "^2", + "@types/d3-zoom": "^2", + "@types/geojson": "*", + "@types/react": "*" + } + }, + "node_modules/@types/react-simple-maps/node_modules/@types/d3-color": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-2.0.6.tgz", + "integrity": "sha512-tbaFGDmJWHqnenvk3QGSvD3RVwr631BjKRD7Sc7VLRgrdX5mk5hTyoeBL6rXZaeoXzmZwIl1D2HPogEdt1rHBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react-simple-maps/node_modules/@types/d3-geo": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-2.0.7.tgz", + "integrity": "sha512-RIXlxPdxvX+LAZFv+t78CuYpxYag4zuw9mZc+AwfB8tZpKU90rMEn2il2ADncmeZlb7nER9dDsJpRisA3lRvjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/react-simple-maps/node_modules/@types/d3-interpolate": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-2.0.5.tgz", + "integrity": "sha512-UINE41RDaUMbulp+bxQMDnhOi51rh5lA2dG+dWZU0UY/IwQiG/u2x8TfnWYU9+xwGdXsJoAvrBYUEQl0r91atg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-color": "^2" + } + }, + "node_modules/@types/react-simple-maps/node_modules/@types/d3-selection": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-2.0.5.tgz", + "integrity": "sha512-71BorcY0yXl12S7lvb01JdaN9TpeUHBDb4RRhSq8U8BEkX/nIk5p7Byho+ZRTsx5nYLMpAbY3qt5EhqFzfGJlw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react-simple-maps/node_modules/@types/d3-zoom": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-2.0.7.tgz", + "integrity": "sha512-JWke4E8ZyrKUQ68ESTWSK16fVb0OYnaiJ+WXJRYxKLn4aXU0o4CLYxMWBEiouUfO3TTCoyroOrGPcBG6u1aAxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/d3-interpolate": "^2", + "@types/d3-selection": "^2" + } + }, "node_modules/@types/react-transition-group": { "version": "4.4.12", "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", @@ -6789,6 +6968,27 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/topojson-client": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/topojson-client/-/topojson-client-3.1.5.tgz", + "integrity": "sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*", + "@types/topojson-specification": "*" + } + }, + "node_modules/@types/topojson-specification": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/topojson-specification/-/topojson-specification-1.0.5.tgz", + "integrity": "sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -6800,6 +7000,12 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz", @@ -8920,6 +9126,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "license": "MIT" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -9163,6 +9375,18 @@ "url": "https://polar.sh/cva" } }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", @@ -9203,6 +9427,27 @@ "node": ">=12" } }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -9215,6 +9460,31 @@ "node": ">=12" } }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-selection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", @@ -9224,6 +9494,42 @@ "node": ">=12" } }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-timer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", @@ -9372,6 +9678,12 @@ "node": ">=0.10.0" } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -9854,6 +10166,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-toolkit": { + "version": "1.45.1", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz", + "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, "node_modules/esbuild": { "version": "0.25.11", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", @@ -10598,6 +10920,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -11619,6 +11947,16 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", + "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -11694,6 +12032,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/iobuffer": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", @@ -14990,6 +15337,29 @@ "react": ">=18" } }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-remove-scroll": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", @@ -15067,6 +15437,125 @@ "react": "^16.3.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-simple-maps": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/react-simple-maps/-/react-simple-maps-3.0.0.tgz", + "integrity": "sha512-vKNFrvpPG8Vyfdjnz5Ne1N56rZlDfHXv5THNXOVZMqbX1rWZA48zQuYT03mx6PAKanqarJu/PDLgshIZAfHHqw==", + "license": "MIT", + "dependencies": { + "d3-geo": "^2.0.2", + "d3-selection": "^2.0.0", + "d3-zoom": "^2.0.0", + "topojson-client": "^3.1.0" + }, + "peerDependencies": { + "prop-types": "^15.7.2", + "react": "^16.8.0 || 17.x || 18.x", + "react-dom": "^16.8.0 || 17.x || 18.x" + } + }, + "node_modules/react-simple-maps/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/react-simple-maps/node_modules/d3-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-2.0.0.tgz", + "integrity": "sha512-SPXi0TSKPD4g9tw0NMZFnR95XVgUZiBH+uUTqQuDu1OsE2zomHU7ho0FISciaPvosimixwHFl3WHLGabv6dDgQ==", + "license": "BSD-3-Clause" + }, + "node_modules/react-simple-maps/node_modules/d3-dispatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz", + "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA==", + "license": "BSD-3-Clause" + }, + "node_modules/react-simple-maps/node_modules/d3-drag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-2.0.0.tgz", + "integrity": "sha512-g9y9WbMnF5uqB9qKqwIIa/921RYWzlUDv9Jl1/yONQwxbOfszAWTCm8u7HOTgJgRDXiRZN56cHT9pd24dmXs8w==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-selection": "2" + } + }, + "node_modules/react-simple-maps/node_modules/d3-ease": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-2.0.0.tgz", + "integrity": "sha512-68/n9JWarxXkOWMshcT5IcjbB+agblQUaIsbnXmrzejn2O82n3p2A9R2zEB9HIEFWKFwPAEDDN8gR0VdSAyyAQ==", + "license": "BSD-3-Clause" + }, + "node_modules/react-simple-maps/node_modules/d3-geo": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-2.0.2.tgz", + "integrity": "sha512-8pM1WGMLGFuhq9S+FpPURxic+gKzjluCD/CHTuUF3mXMeiCo0i6R0tO1s4+GArRFde96SLcW/kOFRjoAosPsFA==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "^2.5.0" + } + }, + "node_modules/react-simple-maps/node_modules/d3-interpolate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-2.0.1.tgz", + "integrity": "sha512-c5UhwwTs/yybcmTpAVqwSFl6vrQ8JZJoT5F7xNFK9pymv5C0Ymcc9/LIJHtYIggg/yS9YHw8i8O8tgb9pupjeQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-color": "1 - 2" + } + }, + "node_modules/react-simple-maps/node_modules/d3-selection": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", + "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==", + "license": "BSD-3-Clause" + }, + "node_modules/react-simple-maps/node_modules/d3-timer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-2.0.0.tgz", + "integrity": "sha512-TO4VLh0/420Y/9dO3+f9abDEFYeCUr2WZRlxJvbp4HPTQcSylXNiL6yZa9FIUvV1yRiFufl1bszTCLDqv9PWNA==", + "license": "BSD-3-Clause" + }, + "node_modules/react-simple-maps/node_modules/d3-transition": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-2.0.0.tgz", + "integrity": "sha512-42ltAGgJesfQE3u9LuuBHNbGrI/AJjNL2OAUdclE70UE6Vy239GCBEYD38uBPoLeNsOhFStGpPI0BAOV+HMxog==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-color": "1 - 2", + "d3-dispatch": "1 - 2", + "d3-ease": "1 - 2", + "d3-interpolate": "1 - 2", + "d3-timer": "1 - 2" + }, + "peerDependencies": { + "d3-selection": "2" + } + }, + "node_modules/react-simple-maps/node_modules/d3-zoom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-2.0.0.tgz", + "integrity": "sha512-fFg7aoaEm9/jf+qfstak0IYpnesZLiMX6GZvXtUSdv8RH2o4E2qeelgdU09eKS6wGuiGMfcnMI0nTIqWzRHGpw==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-dispatch": "1 - 2", + "d3-drag": "2", + "d3-interpolate": "1 - 2", + "d3-selection": "2", + "d3-transition": "2" + } + }, + "node_modules/react-simple-maps/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, "node_modules/react-style-singleton": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", @@ -15188,6 +15677,36 @@ "node": ">=0.10.0" } }, + "node_modules/recharts": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.8.1.tgz", + "integrity": "sha512-mwzmO1s9sFL0TduUpwndxCUNoXsBw3u3E/0+A+cLcrSfQitSG62L32N69GhqUrrT5qKcAE3pCGVINC6pqkBBQg==", + "license": "MIT", + "workspaces": [ + "www" + ], + "dependencies": { + "@reduxjs/toolkit": "^1.9.0 || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^10.1.1", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.1.1", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/redaxios": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/redaxios/-/redaxios-0.5.1.tgz", @@ -15223,6 +15742,21 @@ "node": ">=8" } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -15337,6 +15871,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "license": "ISC" }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -16369,6 +16909,20 @@ "node": ">=8.0" } }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "license": "ISC", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -17010,6 +17564,28 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 2f770fdf7f4..cb9d5b35c66 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -84,6 +84,7 @@ "clsx": "^2.1.1", "cmdk": "^1.1.1", "cva": "npm:class-variance-authority@^0.7.1", + "d3-geo": "^3.1.1", "date-fns": "^4.1.0", "diff": "^8.0.3", "dompurify": "^3.2.4", @@ -114,11 +115,14 @@ "react-icons": "^5.4.0", "react-markdown": "^10.0.1", "react-select": "^5.9.0", + "react-simple-maps": "^3.0.0", "react-toastify": "^10.0.6", + "recharts": "^3.8.1", "redaxios": "^0.5.1", "rehype-raw": "^7.0.0", "sonner": "^2.0.7", "tailwind-merge": "^2.5.5", + "topojson-client": "^3.1.0", "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1", "xterm-readline": "^1.1.2", @@ -140,6 +144,7 @@ "@tanstack/router-devtools": "^1.87.9", "@tanstack/router-plugin": "^1.95.1", "@types/argon2-browser": "^1.18.4", + "@types/d3-geo": "^3.1.0", "@types/file-saver": "^2.0.7", "@types/jsrp": "^0.2.6", "@types/ms": "^0.7.34", @@ -148,6 +153,9 @@ "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", "@types/react-helmet": "^6.1.11", + "@types/react-simple-maps": "^3.0.6", + "@types/topojson-client": "^3.1.5", + "@types/topojson-specification": "^1.0.5", "@vitejs/plugin-react-swc": "^3.5.0", "eslint": "^8.57.1", "eslint-config-airbnb": "^19.0.4", diff --git a/frontend/src/const/routes.ts b/frontend/src/const/routes.ts index 8892e7d070d..d2f844ac30c 100644 --- a/frontend/src/const/routes.ts +++ b/frontend/src/const/routes.ts @@ -108,6 +108,10 @@ export const ROUTE_PATHS = Object.freeze({ "/organizations/$orgId/projects/secret-management/$projectId/settings", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings" ), + InsightsPage: setRoute( + "/organizations/$orgId/projects/secret-management/$projectId/insights", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights" + ), IntegrationDetailsByIDPage: setRoute( "/organizations/$orgId/projects/secret-management/$projectId/integrations/$integrationId", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/$integrationId" diff --git a/frontend/src/context/ProjectPermissionContext/index.tsx b/frontend/src/context/ProjectPermissionContext/index.tsx index 9b46b386870..742ddd9726c 100644 --- a/frontend/src/context/ProjectPermissionContext/index.tsx +++ b/frontend/src/context/ProjectPermissionContext/index.tsx @@ -12,6 +12,7 @@ export { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, diff --git a/frontend/src/context/ProjectPermissionContext/types.ts b/frontend/src/context/ProjectPermissionContext/types.ts index d1125848a7b..f66f5079c26 100644 --- a/frontend/src/context/ProjectPermissionContext/types.ts +++ b/frontend/src/context/ProjectPermissionContext/types.ts @@ -227,6 +227,10 @@ export enum ProjectPermissionAuditLogsActions { Read = "read" } +export enum ProjectPermissionInsightsActions { + Read = "read" +} + export enum ProjectPermissionAppConnectionActions { Read = "read-app-connections", Create = "create-app-connections", @@ -433,7 +437,8 @@ export enum ProjectPermissionSub { McpServers = "mcp-servers", McpActivityLogs = "mcp-activity-logs", ApprovalRequests = "approval-requests", - ApprovalRequestGrants = "approval-request-grants" + ApprovalRequestGrants = "approval-request-grants", + Insights = "insights" } export type SecretSubjectFields = { @@ -718,6 +723,7 @@ export type ProjectPermissionSet = | [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests] | [ProjectPermissionApprovalRequestGrantActions, ProjectPermissionSub.ApprovalRequestGrants] | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest] + | [ProjectPermissionInsightsActions, ProjectPermissionSub.Insights] | [ ProjectPermissionMcpEndpointActions, ( diff --git a/frontend/src/context/index.tsx b/frontend/src/context/index.tsx index cd14f48bb44..17c203d99f9 100644 --- a/frontend/src/context/index.tsx +++ b/frontend/src/context/index.tsx @@ -24,6 +24,7 @@ export { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, diff --git a/frontend/src/hooks/api/auditLogs/constants.tsx b/frontend/src/hooks/api/auditLogs/constants.tsx index 997693067f7..ae5442e03f7 100644 --- a/frontend/src/hooks/api/auditLogs/constants.tsx +++ b/frontend/src/hooks/api/auditLogs/constants.tsx @@ -245,6 +245,15 @@ export const eventToNameMap: { [K in EventType]: string } = { [EventType.DASHBOARD_GET_SECRET_VALUE]: "Dashboard Get Secret Value", [EventType.DASHBOARD_GET_SECRET_VERSION_VALUE]: "Dashboard Get Secret Version Value", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR]: + "View Secrets Management Calendar Insights", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME]: + "View Secrets Management Access Volume Insights", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS]: + "View Secrets Management Access Locations Insights", + [EventType.VIEW_INSIGHTS_AUTH_METHODS]: "View Machine Identity Auth Methods Insights", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY]: "View Secrets Management Summary Insights", + [EventType.CREATE_PROJECT_ROLE]: "Create Project Role", [EventType.UPDATE_PROJECT_ROLE]: "Update Project Role", [EventType.DELETE_PROJECT_ROLE]: "Delete Project Role", diff --git a/frontend/src/hooks/api/auditLogs/enums.tsx b/frontend/src/hooks/api/auditLogs/enums.tsx index 5956e5516d8..87faa5f0431 100644 --- a/frontend/src/hooks/api/auditLogs/enums.tsx +++ b/frontend/src/hooks/api/auditLogs/enums.tsx @@ -240,6 +240,12 @@ export enum EventType { DASHBOARD_GET_SECRET_VALUE = "dashboard-get-secret-value", DASHBOARD_GET_SECRET_VERSION_VALUE = "dashboard-get-secret-version-value", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR = "view-insights-secrets-management-calendar", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME = "view-insights-secrets-management-access-volume", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS = "view-insights-secrets-management-access-locations", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY = "view-insights-secrets-management-summary", + VIEW_INSIGHTS_AUTH_METHODS = "view-insights-auth-methods", + CREATE_PROJECT_ROLE = "create-project-role", UPDATE_PROJECT_ROLE = "update-project-role", DELETE_PROJECT_ROLE = "delete-project-role", diff --git a/frontend/src/hooks/api/index.tsx b/frontend/src/hooks/api/index.tsx index 8bbaf3567ca..f56e423a0e9 100644 --- a/frontend/src/hooks/api/index.tsx +++ b/frontend/src/hooks/api/index.tsx @@ -54,6 +54,7 @@ export * from "./secretApproval"; export * from "./secretApprovalRequest"; export * from "./secretFolders"; export * from "./secretImports"; +export * from "./secretInsights"; export * from "./secretRotation"; export * from "./secrets"; export * from "./secretSharing"; diff --git a/frontend/src/hooks/api/secretInsights/index.ts b/frontend/src/hooks/api/secretInsights/index.ts new file mode 100644 index 00000000000..ab975b5b4f9 --- /dev/null +++ b/frontend/src/hooks/api/secretInsights/index.ts @@ -0,0 +1,23 @@ +export { + useGetAuthMethodDistribution, + useGetCalendarInsights, + useGetInsightsSummary, + useGetSecretAccessLocations, + useGetSecretAccessVolume +} from "./queries"; +export type { + TAccessLocation, + TAuthMethodCount, + TCalendarReminder, + TCalendarRotation, + TGetAuthMethodDistributionDTO, + TGetAuthMethodDistributionResponse, + TGetCalendarInsightsDTO, + TGetCalendarInsightsResponse, + TGetSecretAccessLocationsDTO, + TGetSecretAccessLocationsResponse, + TGetSecretAccessVolumeDTO, + TGetSecretAccessVolumeResponse, + TSecretAccessVolumeActor, + TSecretAccessVolumeDay +} from "./types"; diff --git a/frontend/src/hooks/api/secretInsights/queries.tsx b/frontend/src/hooks/api/secretInsights/queries.tsx new file mode 100644 index 00000000000..83f67b3809f --- /dev/null +++ b/frontend/src/hooks/api/secretInsights/queries.tsx @@ -0,0 +1,155 @@ +import { useQuery, UseQueryOptions } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { + TGetAuthMethodDistributionDTO, + TGetAuthMethodDistributionResponse, + TGetCalendarInsightsDTO, + TGetCalendarInsightsResponse, + TGetInsightsSummaryDTO, + TGetInsightsSummaryResponse, + TGetSecretAccessLocationsDTO, + TGetSecretAccessLocationsResponse, + TGetSecretAccessVolumeDTO, + TGetSecretAccessVolumeResponse +} from "./types"; + +export const secretInsightsKeys = { + all: () => ["secret-insights"] as const, + calendarEvents: (params: TGetCalendarInsightsDTO) => + [...secretInsightsKeys.all(), "calendar-events", params] as const, + accessVolume: (params: TGetSecretAccessVolumeDTO) => + [...secretInsightsKeys.all(), "access-volume", params] as const, + accessLocations: (params: TGetSecretAccessLocationsDTO) => + [...secretInsightsKeys.all(), "access-locations", params] as const, + authMethodDistribution: (params: TGetAuthMethodDistributionDTO) => + [...secretInsightsKeys.all(), "auth-method-distribution", params] as const, + summary: (params: TGetInsightsSummaryDTO) => + [...secretInsightsKeys.all(), "summary", params] as const +}; + +export const useGetCalendarInsights = ( + params: TGetCalendarInsightsDTO, + options?: Omit< + UseQueryOptions< + TGetCalendarInsightsResponse, + unknown, + TGetCalendarInsightsResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.calendarEvents(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/secrets/calendar", + { params } + ); + return data; + }, + ...options + }); +}; + +export const useGetSecretAccessVolume = ( + params: TGetSecretAccessVolumeDTO, + options?: Omit< + UseQueryOptions< + TGetSecretAccessVolumeResponse, + unknown, + TGetSecretAccessVolumeResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.accessVolume(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/secrets/access-volume", + { params } + ); + return data; + }, + ...options + }); +}; + +export const useGetSecretAccessLocations = ( + params: TGetSecretAccessLocationsDTO, + options?: Omit< + UseQueryOptions< + TGetSecretAccessLocationsResponse, + unknown, + TGetSecretAccessLocationsResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.accessLocations(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/secrets/access-locations", + { params } + ); + return data; + }, + ...options + }); +}; + +export const useGetAuthMethodDistribution = ( + params: TGetAuthMethodDistributionDTO, + options?: Omit< + UseQueryOptions< + TGetAuthMethodDistributionResponse, + unknown, + TGetAuthMethodDistributionResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.authMethodDistribution(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/auth/method-distribution", + { params } + ); + return data; + }, + ...options + }); +}; + +export const useGetInsightsSummary = ( + params: TGetInsightsSummaryDTO, + options?: Omit< + UseQueryOptions< + TGetInsightsSummaryResponse, + unknown, + TGetInsightsSummaryResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.summary(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/secrets/summary", + { params } + ); + return data; + }, + ...options + }); +}; diff --git a/frontend/src/hooks/api/secretInsights/types.ts b/frontend/src/hooks/api/secretInsights/types.ts new file mode 100644 index 00000000000..4d4b210c74b --- /dev/null +++ b/frontend/src/hooks/api/secretInsights/types.ts @@ -0,0 +1,119 @@ +export type TCalendarRotation = { + id: string; + name: string; + type: string; + nextRotationAt: string | null; + environment: string; + secretPath: string; + secretKeys: string[]; + rotationInterval: number; + rotationStatus: string | null; + isAutoRotationEnabled: boolean; +}; + +export type TCalendarReminder = { + id: string; + secretId: string | null; + secretKey: string; + nextReminderDate: string; + message?: string | null; + environment: string; + secretPath: string; + repeatDays?: number | null; +}; + +export type TGetCalendarInsightsDTO = { + projectId: string; + month: number; + year: number; +}; + +export type TGetCalendarInsightsResponse = { + rotations: TCalendarRotation[]; + reminders: TCalendarReminder[]; +}; + +export type TSecretAccessVolumeActor = { + name: string; + type: string; + count: number; +}; + +export type TSecretAccessVolumeDay = { + date: string; + total: number; + actors: TSecretAccessVolumeActor[]; +}; + +export type TGetSecretAccessVolumeDTO = { + projectId: string; +}; + +export type TGetInsightsSummaryDTO = { + projectId: string; +}; + +export type TInsightRotationItem = { + name: string; + environment: string; + secretPath: string; + nextRotationAt: string | null; + rotationStatus: string | null; +}; + +export type TInsightReminderItem = { + secretKey: string; + environment: string; + secretPath: string; + nextReminderDate: string; +}; + +export type TInsightStaleSecretItem = { + key: string; + environment: string; + secretPath: string; + updatedAt: string; +}; + +export type TGetInsightsSummaryResponse = { + upcomingRotations: TInsightRotationItem[]; + failedRotations: TInsightRotationItem[]; + upcomingReminders: TInsightReminderItem[]; + overdueReminders: TInsightReminderItem[]; + staleSecrets: TInsightStaleSecretItem[]; +}; + +export type TGetSecretAccessVolumeResponse = { + days: TSecretAccessVolumeDay[]; +}; + +export type TAccessLocation = { + lat: number; + lng: number; + city: string; + country: string; + count: number; +}; + +export type TGetSecretAccessLocationsDTO = { + projectId: string; + days?: number; +}; + +export type TGetSecretAccessLocationsResponse = { + locations: TAccessLocation[]; +}; + +export type TAuthMethodCount = { + method: string; + count: number; +}; + +export type TGetAuthMethodDistributionDTO = { + projectId: string; + days?: number; +}; + +export type TGetAuthMethodDistributionResponse = { + methods: TAuthMethodCount[]; +}; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx index c8b4bde57b4..fd031544fa0 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx @@ -1,4 +1,5 @@ import { + ActivityIcon, BookCheck, DoorOpen, FileKey, @@ -91,6 +92,7 @@ export const SecretManagerNav = ({ pathSuffix: "secret-rotation", hidden: !secretRotations?.length }, + { label: "Access Control", icon: Shield, @@ -98,6 +100,11 @@ export const SecretManagerNav = ({ activeMatch: /\/groups\/|\/identities\/|\/members\/|\/roles\//, submenu: SECRET_MANAGER_ACCESS_CONTROL_SUBMENU }, + { + label: "Insights", + icon: ActivityIcon, + pathSuffix: "insights" + }, { label: "Audit Logs", icon: FileText, pathSuffix: "audit-logs" }, { label: "Settings", icon: Settings, pathSuffix: "settings", submenu: SM_SETTINGS_SUBMENU } ]; diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx index 74f754f064c..eb67697cdc6 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx @@ -21,6 +21,7 @@ import { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, @@ -58,6 +59,10 @@ const AuditLogsPolicyActionSchema = z.object({ [ProjectPermissionAuditLogsActions.Read]: z.boolean().optional() }); +const InsightsPolicyActionSchema = z.object({ + [ProjectPermissionInsightsActions.Read]: z.boolean().optional() +}); + const CertificatePolicyActionSchema = z.object({ [ProjectPermissionCertificateActions.Create]: z.boolean().optional(), [ProjectPermissionCertificateActions.Delete]: z.boolean().optional(), @@ -681,6 +686,7 @@ export const projectRoleFormSchema = z.object({ [ProjectPermissionSub.Settings]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.Environments]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.AuditLogs]: AuditLogsPolicyActionSchema.array().default([]), + [ProjectPermissionSub.Insights]: InsightsPolicyActionSchema.array().default([]), [ProjectPermissionSub.IpAllowList]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.CertificateAuthorities]: CertificateAuthorityPolicyActionSchema.extend({ inverted: z.boolean().optional(), @@ -1035,7 +1041,8 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => { ProjectPermissionSub.PamResources, ProjectPermissionSub.McpEndpoints, ProjectPermissionSub.McpServers, - ProjectPermissionSub.McpActivityLogs + ProjectPermissionSub.McpActivityLogs, + ProjectPermissionSub.Insights ].includes(subject) ) { // from above statement we are sure it won't be undefined @@ -2428,6 +2435,17 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = { } ] }, + [ProjectPermissionSub.Insights]: { + title: "Insights", + description: "View project analytics and insights dashboards", + actions: [ + { + label: "Read", + value: ProjectPermissionInsightsActions.Read, + description: "View secret access volume, locations, auth methods, and calendar insights" + } + ] + }, [ProjectPermissionSub.IpAllowList]: { title: "IP Allowlist", description: "Restrict project access by IP address", @@ -3329,6 +3347,7 @@ const SecretsManagerPermissionSubjects = (enabled = false) => ({ [ProjectPermissionSub.SecretRotation]: enabled, [ProjectPermissionSub.ServiceTokens]: enabled, [ProjectPermissionSub.Commits]: enabled, + [ProjectPermissionSub.Insights]: enabled, [ProjectPermissionSub.SecretEventSubscriptions]: enabled, [ProjectPermissionSub.SecretApprovalRequest]: enabled }); diff --git a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx new file mode 100644 index 00000000000..391268347ab --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx @@ -0,0 +1,46 @@ +import { Helmet } from "react-helmet"; + +import { PageHeader } from "@app/components/v2"; +import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/context"; +import { withProjectPermission } from "@app/hoc"; +import { ProjectType } from "@app/hooks/api/projects/types"; + +import { + AuthMethodChart, + CalendarCard, + InsightsSummaryCards, + SecretAccessChart, + WorldMap +} from "./components"; + +export const InsightsPage = withProjectPermission( + () => { + return ( + <> + + Insights + + + +
+
+ + +
+
+ + +
+
+ + ); + }, + { + action: ProjectPermissionInsightsActions.Read, + subject: ProjectPermissionSub.Insights + } +); diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx new file mode 100644 index 00000000000..7db2e3fdaa9 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx @@ -0,0 +1,178 @@ +import { useMemo } from "react"; +import { InfoIcon } from "lucide-react"; +import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip } from "recharts"; + +import { + Skeleton, + Tooltip as V3Tooltip, + TooltipContent, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import { useProject } from "@app/context"; +import { useGetAuthMethodDistribution } from "@app/hooks/api"; + +// Palette using theme-aligned colors +// 13 muted, dark-theme-friendly base colors (used for legend dots and gradient outer stops) +const COLORS = [ + "#63b0bd", // teal (info) + "#f1c40f", // gold (warning) + "#6dbf8b", // sage green + "#c084d8", // soft purple + "#e8855e", // burnt orange + "#5b9bd5", // steel blue + "#e06b8f", // dusty rose + "#85c46c", // leaf green + "#d4a054", // amber + "#7b8ec4", // periwinkle + "#cb6b6b", // muted red + "#4fc1b0", // seafoam + "#b8a060" // olive gold +]; + +// Radial gradient IDs for each color — fades from color at outer edge to transparent at center +const gradientId = (index: number) => `pie-radial-${index}`; + +export const AuthMethodChart = () => { + const { projectId } = useProject(); + + const { data, isPending } = useGetAuthMethodDistribution( + { projectId, days: 30 }, + { enabled: !!projectId } + ); + + const methods = data?.methods ?? []; + const total = useMemo(() => methods.reduce((sum, m) => sum + m.count, 0), [methods]); + + return ( + + + Authentication Methods + + Distribution of auth methods used for secret access over the past 30 days + + + + {isPending && } + {!isPending && methods.length === 0 && ( + + + No secret access data available + + + )} + {!isPending && methods.length > 0 && ( +
+
+ + + + {COLORS.map((color, i) => ( + + + + + + ))} + + + {methods.map((entry, index) => ( + + ))} + + [ + `${Number(value).toLocaleString()} (${total > 0 ? Math.round((Number(value) / total) * 100) : 0}%)`, + String(name) + ]} + /> + + +
+
+ {methods.map((entry, index) => { + const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; + return ( +
+ + + {entry.method} + {entry.method === "Unknown" && ( + + + + + +

+ Only new requests will display the auth method. Older requests may not + have this information recorded. +

+
+
+ )} +
+ {pct}% + + {entry.count.toLocaleString()} + +
+ ); + })} +
+
+ + Total + + + {total.toLocaleString()} + +
+
+
+
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx new file mode 100644 index 00000000000..34de74e0798 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx @@ -0,0 +1,79 @@ +import { useState } from "react"; +import { addMonths, format, subMonths } from "date-fns"; +import { ChevronLeft, ChevronRight } from "lucide-react"; + +import { Lottie } from "@app/components/v2"; +import { + UnstableCard, + UnstableCardAction, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle, + UnstableIconButton +} from "@app/components/v3"; +import { useProject } from "@app/context"; +import { useGetCalendarInsights } from "@app/hooks/api"; + +import { CalendarGrid } from "./CalendarGrid"; +import { CalendarLegend } from "./CalendarLegend"; + +export const CalendarCard = () => { + const { projectId } = useProject(); + const [currentMonth, setCurrentMonth] = useState(new Date()); + + const month = currentMonth.getMonth() + 1; + const year = currentMonth.getFullYear(); + + const { data, isPending } = useGetCalendarInsights( + { projectId, month, year }, + { enabled: !!projectId } + ); + + return ( + + + Rotation & Reminder Calendar + + View upcoming secret rotations and reminders + + +
+ setCurrentMonth((prev) => subMonths(prev, 1))} + > + + + + {format(currentMonth, "MMMM yyyy")} + + setCurrentMonth((prev) => addMonths(prev, 1))} + > + + +
+
+
+ +
+ + {isPending && ( +
+ +
+ )} +
+ +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx new file mode 100644 index 00000000000..e7a12842a7e --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx @@ -0,0 +1,79 @@ +import { useState } from "react"; +import { isToday } from "date-fns"; + +import { Badge } from "@app/components/v3/generic/Badge"; +import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; + +import { CalendarEventPill } from "./CalendarEventPill"; +import { CalendarEvent } from "./types"; + +const MAX_SLOTS = 2; + +const getBgClass = (today: boolean, isCurrentMonth: boolean) => { + if (today) return isCurrentMonth ? "bg-muted/5" : "bg-card/50"; + return isCurrentMonth ? "bg-container" : "bg-card"; +}; + +export const CalendarDayCell = ({ + date, + isCurrentMonth, + events +}: { + date: Date; + isCurrentMonth: boolean; + events: CalendarEvent[]; +}) => { + const [overflowOpen, setOverflowOpen] = useState(false); + const today = isToday(date); + const dayNum = date.getDate(); + // If everything fits in MAX_SLOTS, show all. Otherwise reserve 1 slot for the overflow badge. + const hasOverflow = events.length > MAX_SLOTS; + const visibleCount = hasOverflow ? MAX_SLOTS - 1 : events.length; + const visibleEvents = events.slice(0, visibleCount); + const overflowCount = events.length - visibleCount; + + return ( +
+
+ {today ? ( + + {dayNum} + + ) : ( + {dayNum} + )} +
+
+ {visibleEvents.map((event) => ( + + ))} + {hasOverflow && ( + + + + + + + +
+ {events.map((event) => ( + + ))} +
+
+
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx new file mode 100644 index 00000000000..29dc8ac6bfd --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx @@ -0,0 +1,170 @@ +import { Link, useParams } from "@tanstack/react-router"; +import { format, formatDistanceToNow } from "date-fns"; +import { BanIcon, BellIcon, ExternalLink, RefreshCwIcon, XIcon } from "lucide-react"; + +import { + Badge, + Button, + Detail, + DetailGroup, + DetailLabel, + DetailValue, + UnstableSeparator +} from "@app/components/v3"; + +import { CalendarEvent } from "./types"; + +const RotationStatusBadge = ({ + status, + nextRotationAt, + isAutoRotationEnabled +}: { + status: string | null; + nextRotationAt: string | null; + isAutoRotationEnabled: boolean; +}) => { + if (status === "failed") { + return ( + + + Rotation Failed + + ); + } + + if (!isAutoRotationEnabled) { + return ( + + + Auto-Rotation Disabled + + ); + } + + if (!nextRotationAt) { + return Active; + } + + const daysToRotation = (new Date(nextRotationAt).getTime() - Date.now()) / (1000 * 60 * 60 * 24); + + return ( + = 7 ? "info" : "warning"} className="capitalize"> + + {daysToRotation < 0 + ? "Rotating" + : `Rotates ${formatDistanceToNow(new Date(nextRotationAt), { addSuffix: true })}`} + + ); +}; + +const getDateString = (event: CalendarEvent): string => { + if (event.type === "rotation") { + if (!event.data.nextRotationAt) return "N/A"; + return format(new Date(event.data.nextRotationAt), "MMM d, yyyy 'at' h:mm a"); + } + return format(new Date(event.data.nextReminderDate), "MMM d, yyyy"); +}; + +export const CalendarEventDetail = ({ event }: { event: CalendarEvent }) => { + const { orgId, projectId } = useParams({ + strict: false, + select: (p) => ({ + orgId: (p as Record).orgId, + projectId: (p as Record).projectId + }) + }); + + const isRotation = event.type === "rotation"; + const title = isRotation ? event.data.name : event.data.secretKey; + const dateStr = getDateString(event); + const { environment, secretPath } = event.data; + + return ( +
+
+

{title}

+ + {isRotation ? : } + {isRotation ? "Rotation" : "Reminder"} + +
+ + + + Date + {dateStr} + + + Environment + {environment} + + + Path + {secretPath} + + + {isRotation && ( + <> + + Interval + + Every {event.data.rotationInterval} day + {event.data.rotationInterval !== 1 ? "s" : ""} + + + + Status + + + + + + Secret Keys + {event.data.secretKeys.map((key) =>

{key}

) || "—"}
+
+ + )} + + {!isRotation && ( + <> + {event.data.message && ( + + Message + {event.data.message} + + )} + {event.data.repeatDays && ( + + Repeat + + Every {event.data.repeatDays} day + {event.data.repeatDays !== 1 ? "s" : ""} + + + )} + + )} +
+ + +
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx new file mode 100644 index 00000000000..226aab3f868 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx @@ -0,0 +1,36 @@ +import { useState } from "react"; +import { BellIcon, RefreshCwIcon } from "lucide-react"; + +import { Badge } from "@app/components/v3/generic/Badge"; +import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; + +import { CalendarEventDetail } from "./CalendarEventDetail"; +import { CalendarEvent } from "./types"; + +export const CalendarEventPill = ({ event }: { event: CalendarEvent }) => { + const [open, setOpen] = useState(false); + const label = event.type === "rotation" ? event.data.name : event.data.secretKey; + const isRotation = event.type === "rotation"; + + return ( + + + + + + + + + + + ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx new file mode 100644 index 00000000000..1d7cdc81125 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx @@ -0,0 +1,87 @@ +import { useMemo } from "react"; +import { + eachDayOfInterval, + endOfMonth, + endOfWeek, + format, + isSameMonth, + startOfMonth, + startOfWeek +} from "date-fns"; + +import { TCalendarReminder, TCalendarRotation } from "@app/hooks/api/secretInsights/types"; + +import { CalendarDayCell } from "./CalendarDayCell"; +import { CalendarEvent } from "./types"; + +const DAY_NAMES = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + +const groupEventsByDate = ( + rotations: TCalendarRotation[], + reminders: TCalendarReminder[] +): Record => { + const map: Record = {}; + + rotations.forEach((r) => { + if (!r.nextRotationAt) return; + const key = format(new Date(r.nextRotationAt), "yyyy-MM-dd"); + if (!map[key]) map[key] = []; + map[key].push({ type: "rotation", data: r }); + }); + + reminders.forEach((r) => { + const key = format(new Date(r.nextReminderDate), "yyyy-MM-dd"); + if (!map[key]) map[key] = []; + map[key].push({ type: "reminder", data: r }); + }); + + return map; +}; + +export const CalendarGrid = ({ + currentMonth, + rotations, + reminders +}: { + currentMonth: Date; + rotations: TCalendarRotation[]; + reminders: TCalendarReminder[]; +}) => { + const days = useMemo(() => { + const monthStart = startOfMonth(currentMonth); + const monthEnd = endOfMonth(currentMonth); + const gridStart = startOfWeek(monthStart, { weekStartsOn: 1 }); + const gridEnd = endOfWeek(monthEnd, { weekStartsOn: 1 }); + return eachDayOfInterval({ start: gridStart, end: gridEnd }); + }, [currentMonth]); + + const eventsByDate = useMemo( + () => groupEventsByDate(rotations, reminders), + [rotations, reminders] + ); + + return ( +
+
+ {DAY_NAMES.map((day) => ( +
+ {day} +
+ ))} +
+
+ {days.map((day) => { + const dateKey = format(day, "yyyy-MM-dd"); + return ( + + ); + })} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx new file mode 100644 index 00000000000..871fea844ed --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx @@ -0,0 +1,14 @@ +export const CalendarLegend = () => { + return ( +
+
+ + Rotation +
+
+ + Reminder +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx new file mode 100644 index 00000000000..189879bef8d --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx @@ -0,0 +1,398 @@ +import { useState } from "react"; +import { Link, useParams } from "@tanstack/react-router"; +import { formatDistanceToNow, parseISO } from "date-fns"; +import { + AlertTriangleIcon, + BellIcon, + CheckIcon, + ClockIcon, + ExternalLinkIcon, + RefreshCwIcon +} from "lucide-react"; + +import { + Badge, + Button, + Command, + CommandEmpty, + CommandGroup, + CommandItem, + CommandList, + Skeleton, + UnstableCard, + UnstableCardAction, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableSeparator +} from "@app/components/v3"; +import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; +import { cn } from "@app/components/v3/utils"; +import { useProject } from "@app/context"; +import { useGetInsightsSummary } from "@app/hooks/api"; + +type StatCardProps = { + title: string; + icon: React.ReactNode; + iconVariant: "warning" | "info" | "danger"; + count: number; + totalItems: number; + subtitle: string; + footnote: string; + footnoteVariant: "warning" | "danger" | "success"; + viewLabel: string; + popoverContent?: React.ReactNode; +}; + +const StatCard = ({ + title, + icon, + iconVariant, + count, + totalItems, + subtitle, + footnote, + footnoteVariant, + viewLabel, + popoverContent +}: StatCardProps) => { + const [open, setOpen] = useState(false); + + return ( + + + {title} + +
svg]:size-5", + iconVariant === "info" && "border-info/15 bg-info/10 text-info", + iconVariant === "warning" && "border-warning/15 bg-warning/10 text-warning", + iconVariant === "danger" && "border-danger/15 bg-danger/10 text-danger" + )} + > + {icon} +
+
+
+ +
+ {count} + {subtitle} +
+ +
+ + {footnoteVariant === "success" ? : } + {footnote} + + {popoverContent && ( + + + + + + {popoverContent} + + + )} +
+
+
+ ); +}; + +const overviewRoute = + "/organizations/$orgId/projects/secret-management/$projectId/overview" as const; + +const RotationCommandList = ({ + failed, + upcoming, + orgId, + projectId +}: { + failed: { + name: string; + environment: string; + secretPath: string; + nextRotationAt: string | null; + }[]; + upcoming: { + name: string; + environment: string; + secretPath: string; + nextRotationAt: string | null; + }[]; + orgId: string; + projectId: string; +}) => ( + + + No rotations found + {failed.length > 0 && ( + + {failed.map((item) => ( + + +
+
{item.name}
+
+ {item.nextRotationAt + ? `retries ${formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true })} — ` + : ""} + {item.environment} · {item.secretPath} +
+
+ + +
+ ))} +
+ )} + {upcoming.length > 0 && ( + + {upcoming.map((item) => ( + + +
+
{item.name}
+
+ {item.nextRotationAt && + `${formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true })} — `} + {item.environment} · {item.secretPath} +
+
+ + +
+ ))} +
+ )} +
+
+); + +const ReminderCommandList = ({ + overdue, + upcoming, + orgId, + projectId +}: { + overdue: { + secretKey: string; + environment: string; + secretPath: string; + nextReminderDate: string; + }[]; + upcoming: { + secretKey: string; + environment: string; + secretPath: string; + nextReminderDate: string; + }[]; + orgId: string; + projectId: string; +}) => ( + + + No reminders found + {overdue.length > 0 && ( + + {overdue.map((item) => ( + + +
+
{item.secretKey}
+
+ {formatDistanceToNow(parseISO(item.nextReminderDate), { addSuffix: true })} —{" "} + {item.environment} · {item.secretPath} +
+
+ + +
+ ))} +
+ )} + {upcoming.length > 0 && ( + + {upcoming.map((item) => ( + + +
+
{item.secretKey}
+
+ {formatDistanceToNow(parseISO(item.nextReminderDate), { addSuffix: true })} —{" "} + {item.environment} · {item.secretPath} +
+
+ + +
+ ))} +
+ )} +
+
+); + +const StaleSecretCommandList = ({ + items, + orgId, + projectId +}: { + items: { key: string; environment: string; secretPath: string; updatedAt: string }[]; + orgId: string; + projectId: string; +}) => ( + + + No stale secrets found + + {items.map((item) => ( + + +
+
{item.key}
+
+ {formatDistanceToNow(parseISO(item.updatedAt), { addSuffix: true })} —{" "} + {item.environment} · {item.secretPath} +
+
+ + +
+ ))} +
+
+
+); + +export const InsightsSummaryCards = () => { + const { projectId } = useProject(); + const { orgId } = useParams({ + strict: false, + select: (p) => ({ orgId: (p as Record).orgId }) + }); + + const { data, isPending } = useGetInsightsSummary({ projectId }, { enabled: !!projectId }); + + if (isPending) { + return ( +
+ + + +
+ ); + } + + const upcomingRotations = data?.upcomingRotations ?? []; + const failedRotations = data?.failedRotations ?? []; + const upcomingReminders = data?.upcomingReminders ?? []; + const overdueReminders = data?.overdueReminders ?? []; + const staleSecrets = data?.staleSecrets ?? []; + + return ( +
+ } + iconVariant="info" + count={upcomingRotations.length} + totalItems={upcomingRotations.length + failedRotations.length} + subtitle="In the next 7 days" + footnote={ + failedRotations.length ? `${failedRotations.length} failed` : "No failed rotations" + } + footnoteVariant={failedRotations.length ? "danger" : "success"} + viewLabel={failedRotations.length ? "View Failed Rotations" : "View Rotations"} + popoverContent={ + + } + /> + } + iconVariant="warning" + count={upcomingReminders.length} + totalItems={upcomingReminders.length + overdueReminders.length} + subtitle="In the next 7 days" + footnote={ + overdueReminders.length ? `${overdueReminders.length} overdue` : "No overdue reminders" + } + footnoteVariant={overdueReminders.length ? "danger" : "success"} + viewLabel={overdueReminders.length ? "View Overdue Reminders" : "View Upcoming Reminders"} + popoverContent={ + + } + /> + } + iconVariant="danger" + count={staleSecrets.length} + totalItems={staleSecrets.length} + subtitle="Unmodified > 90 days" + footnote={ + staleSecrets.length + ? `${staleSecrets.length} need${staleSecrets.length === 1 ? "s" : ""} review` + : "All secrets up to date" + } + footnoteVariant={staleSecrets.length ? "warning" : "success"} + viewLabel="View Stale Secrets" + popoverContent={ + + } + /> +
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx new file mode 100644 index 00000000000..0dd06fe9942 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx @@ -0,0 +1,78 @@ +import { + Area, + AreaChart, + CartesianGrid, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis +} from "recharts"; + +export type LineChartDataPoint = { + label: string; + value: number; +}; + +type LineChartProps = { + data: LineChartDataPoint[]; + height?: number; +}; + +export const LineChart = ({ data, height = 280 }: LineChartProps) => { + return ( + + + + + + + + + + + + [Number(value).toLocaleString(), "Requests"]} + /> + + + + ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx new file mode 100644 index 00000000000..89d24dee2ad --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx @@ -0,0 +1,83 @@ +import { useMemo } from "react"; +import { format, parseISO } from "date-fns"; + +import { + Skeleton, + UnstableCard, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle +} from "@app/components/v3"; +import { useProject } from "@app/context"; +import { useGetSecretAccessVolume } from "@app/hooks/api"; + +import { LineChart } from "./LineChart"; + +export const SecretAccessChart = () => { + const { projectId } = useProject(); + + const { data, isPending } = useGetSecretAccessVolume({ projectId }, { enabled: !!projectId }); + + const chartData = useMemo(() => { + if (!data?.days) return []; + return data.days.map((day) => ({ + label: format(parseISO(day.date), "EEE"), + value: day.total + })); + }, [data]); + + const topActors = useMemo(() => { + if (!data?.days) return []; + const totals = new Map(); + data.days.forEach((day) => { + day.actors.forEach((actor) => { + const key = `${actor.type}:${actor.name}`; + const existing = totals.get(key); + if (existing) { + existing.count += actor.count; + } else { + totals.set(key, { ...actor }); + } + }); + }); + return Array.from(totals.values()) + .sort((a, b) => b.count - a.count) + .slice(0, 5); + }, [data]); + + const totalRequests = chartData.reduce((sum, d) => sum + d.value, 0); + + return ( + + + Secret Access Volume + Secret read requests over the past 7 days + + + {isPending ? ( + + ) : ( +
+ + {topActors.length > 0 && ( +
+ + Top actors — {totalRequests.toLocaleString()} total requests + +
+ {topActors.map((actor) => ( + + {actor.type}: {actor.name}{" "} + ({actor.count.toLocaleString()}) + + ))} +
+
+ )} +
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx new file mode 100644 index 00000000000..2deae240683 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx @@ -0,0 +1,348 @@ +import { useMemo, useState } from "react"; +import { geoNaturalEarth1, geoPath } from "d3-geo"; +import { feature } from "topojson-client"; +import type { Topology } from "topojson-specification"; + +import { + Badge, + Skeleton, + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle +} from "@app/components/v3"; +import { useProject } from "@app/context"; +import { useGetSecretAccessLocations } from "@app/hooks/api"; +import { TAccessLocation } from "@app/hooks/api/secretInsights/types"; + +import worldTopoJson from "./countries-110m.json"; + +// ISO 3166-1 alpha-2 → numeric mapping (covers common countries; extend as needed) +/* eslint-disable @typescript-eslint/naming-convention */ +const ALPHA2_TO_NUMERIC: Record = { + AF: "004", + AL: "008", + DZ: "012", + AR: "032", + AU: "036", + AT: "040", + BD: "050", + BE: "056", + BR: "076", + BG: "100", + CA: "124", + CL: "152", + CN: "156", + CO: "170", + HR: "191", + CZ: "203", + DK: "208", + EG: "818", + EE: "233", + FI: "246", + FR: "250", + DE: "276", + GR: "300", + HK: "344", + HU: "348", + IN: "356", + ID: "360", + IR: "364", + IQ: "368", + IE: "372", + IL: "376", + IT: "380", + JP: "392", + KE: "404", + KR: "410", + LV: "428", + LT: "440", + MY: "458", + MX: "484", + MA: "504", + NL: "528", + NZ: "554", + NG: "566", + NO: "578", + PK: "586", + PE: "604", + PH: "608", + PL: "616", + PT: "620", + RO: "642", + RU: "643", + SA: "682", + SG: "702", + ZA: "710", + ES: "724", + SE: "752", + CH: "756", + TW: "158", + TH: "764", + TR: "792", + UA: "804", + AE: "784", + GB: "826", + US: "840", + VN: "704", + KZ: "398", + CY: "196" +}; +/* eslint-enable @typescript-eslint/naming-convention */ + +const MAX_RADIUS = 10; +const MIN_RADIUS = 3; + +// Natural Earth 1 projection — trimmed left (before Hawaii), padded right +const SVG_WIDTH = 960; +const SVG_HEIGHT = 460; + +const projection = geoNaturalEarth1() + .scale(170) + .translate([SVG_WIDTH / 2 - 25, SVG_HEIGHT / 2 + 5]); + +const pathGenerator = geoPath(projection); + +const geoFeatures = ( + feature( + worldTopoJson as unknown as Topology, + (worldTopoJson as unknown as Topology).objects.countries + ) as GeoJSON.FeatureCollection +).features; + +// Inactive country base: dark but visible against the card bg +const INACTIVE_FILL = "#242629"; +// Stroke between countries +const BORDER_STROKE = "#3a3c40"; +// Info color for active country gradient +const INFO_COLOR = "#63b0bd"; + +const ResponsiveWorldMap = ({ + mapLocations, + countryActivity, + countryMaxCount, + getRadius +}: { + mapLocations: TAccessLocation[]; + countryActivity: Map; + countryMaxCount: number; + getRadius: (count: number) => number; +}) => { + const [hovered, setHovered] = useState(null); + + // Build gradient definitions for each active country + const activeCountryGradients = useMemo(() => { + const gradients: { id: string; topOpacity: number; bottomOpacity: number }[] = []; + countryActivity.forEach((count, numericCode) => { + const ratio = count / countryMaxCount; + // Top of gradient is brighter, bottom fades to the base + const topOpacity = 0.25 + ratio * 0.55; // 0.25 → 0.80 + const bottomOpacity = 0.08 + ratio * 0.15; // 0.08 → 0.23 + gradients.push({ id: numericCode, topOpacity, bottomOpacity }); + }); + return gradients; + }, [countryActivity, countryMaxCount]); + + const getFill = (id: string, isHover: boolean) => { + const isActive = countryActivity.has(id); + if (isHover) { + return isActive ? `url(#grad-hover-${id})` : "#2f3136"; + } + return isActive ? `url(#grad-${id})` : INACTIVE_FILL; + }; + + return ( +
+ + + {activeCountryGradients.map((g) => ( + + + + + ))} + {activeCountryGradients.map((g) => ( + + + + + ))} + + + {geoFeatures.map((geo) => { + const id = String(geo.id ?? ""); + const d = pathGenerator(geo) ?? ""; + const isHover = hovered === id; + return ( + setHovered(id)} + onMouseLeave={() => setHovered(null)} + style={{ outline: "none", transition: "fill 0.15s, opacity 0.15s" }} + /> + ); + })} + + + {mapLocations.map((loc) => { + const coords = projection([loc.lng, loc.lat]); + if (!coords) return null; + return ( + + + + + +

+ {loc.city ? `${loc.city}, ${loc.country}` : loc.country} +

+

+ {loc.count.toLocaleString()} access{loc.count !== 1 ? "es" : ""} +

+ + + ); + })} + + +
+ ); +}; + +export const WorldMap = () => { + const { projectId } = useProject(); + + const { data, isPending } = useGetSecretAccessLocations( + { projectId, days: 30 }, + { enabled: !!projectId } + ); + + const allLocations = data?.locations ?? []; + + // Separate local network entries from geo-resolvable locations + const { mapLocations, localCount } = useMemo(() => { + const geo: TAccessLocation[] = []; + let local = 0; + allLocations.forEach((loc) => { + if (loc.country === "LOCAL") { + local += loc.count; + } else { + geo.push(loc); + } + }); + return { mapLocations: geo, localCount: local }; + }, [allLocations]); + + // Aggregate total access count per country (numeric code) for choropleth fill + const { countryActivity, countryMaxCount } = useMemo(() => { + const activity = new Map(); + mapLocations.forEach((loc) => { + const numericCode = ALPHA2_TO_NUMERIC[loc.country]; + if (!numericCode) return; + activity.set(numericCode, (activity.get(numericCode) || 0) + loc.count); + }); + const maxVal = Math.max(...Array.from(activity.values()), 1); + return { countryActivity: activity, countryMaxCount: maxVal }; + }, [mapLocations]); + + const maxCount = useMemo(() => Math.max(...mapLocations.map((l) => l.count), 1), [mapLocations]); + + const getRadius = (count: number) => { + const ratio = count / maxCount; + return MIN_RADIUS + ratio * (MAX_RADIUS - MIN_RADIUS); + }; + + const totalAccess = allLocations.reduce((sum, l) => sum + l.count, 0); + + return ( + + + Secret Access Locations + + Geographic distribution of secret access over the past 30 days + + + + {isPending ? ( + + ) : ( + + + {totalAccess > 0 && ( +
+ {mapLocations.map((loc) => ( + + + {loc.city ? `${loc.city}, ${loc.country}` : loc.country}: + {" "} + {loc.count.toLocaleString()} + + ))} + {localCount > 0 && ( + + + + Local Network: {localCount.toLocaleString()} + + + +

Local / Private Network

+

+ {localCount.toLocaleString()} access{localCount !== 1 ? "es" : ""} from + localhost, Docker, or private IP ranges (127.x, 10.x, 192.168.x) +

+
+
+ )} +
+ )} +
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json b/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json new file mode 100644 index 00000000000..055d19ffcf3 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json @@ -0,0 +1 @@ +{"type":"Topology","objects":{"countries":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[0]],[[1]]],"id":"242","properties":{"name":"Fiji"}},{"type":"Polygon","arcs":[[2,3,4,5,6,7,8,9,10]],"id":"834","properties":{"name":"Tanzania"}},{"type":"Polygon","arcs":[[11,12,13,14]],"id":"732","properties":{"name":"W. Sahara"}},{"type":"MultiPolygon","arcs":[[[15,16,17,18]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]],[[44]],[[45]],[[46]],[[47]]],"id":"124","properties":{"name":"Canada"}},{"type":"MultiPolygon","arcs":[[[-19,48,49,50]],[[51]],[[52]],[[53]],[[54]],[[55]],[[56]],[[57]],[[-17,58]],[[59]]],"id":"840","properties":{"name":"United States of America"}},{"type":"Polygon","arcs":[[60,61,62,63,64,65]],"id":"398","properties":{"name":"Kazakhstan"}},{"type":"Polygon","arcs":[[-63,66,67,68,69]],"id":"860","properties":{"name":"Uzbekistan"}},{"type":"MultiPolygon","arcs":[[[70,71]],[[72]],[[73]],[[74]]],"id":"598","properties":{"name":"Papua New Guinea"}},{"type":"MultiPolygon","arcs":[[[-72,75]],[[76,77]],[[78]],[[79,80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]]],"id":"360","properties":{"name":"Indonesia"}},{"type":"MultiPolygon","arcs":[[[90,91]],[[92,93,94,95,96,97]]],"id":"032","properties":{"name":"Argentina"}},{"type":"MultiPolygon","arcs":[[[-92,98]],[[99,-95,100,101]]],"id":"152","properties":{"name":"Chile"}},{"type":"Polygon","arcs":[[-8,102,103,104,105,106,107,108,109,110,111]],"id":"180","properties":{"name":"Dem. Rep. Congo"}},{"type":"Polygon","arcs":[[112,113,114,115]],"id":"706","properties":{"name":"Somalia"}},{"type":"Polygon","arcs":[[-3,116,117,118,-113,119]],"id":"404","properties":{"name":"Kenya"}},{"type":"Polygon","arcs":[[120,121,122,123,124,125,126,127]],"id":"729","properties":{"name":"Sudan"}},{"type":"Polygon","arcs":[[-122,128,129,130,131]],"id":"148","properties":{"name":"Chad"}},{"type":"Polygon","arcs":[[132,133]],"id":"332","properties":{"name":"Haiti"}},{"type":"Polygon","arcs":[[-133,134]],"id":"214","properties":{"name":"Dominican Rep."}},{"type":"MultiPolygon","arcs":[[[135]],[[136]],[[137]],[[138]],[[139]],[[140]],[[141,142,143]],[[144]],[[145]],[[146,147,148,149,-66,150,151,152,153,154,155,156,157,158,159,160,161]],[[162]],[[163,164]]],"id":"643","properties":{"name":"Russia"}},{"type":"MultiPolygon","arcs":[[[165]],[[166]],[[167]]],"id":"044","properties":{"name":"Bahamas"}},{"type":"Polygon","arcs":[[168]],"id":"238","properties":{"name":"Falkland Is."}},{"type":"MultiPolygon","arcs":[[[169]],[[-161,170,171,172]],[[173]],[[174]]],"id":"578","properties":{"name":"Norway"}},{"type":"Polygon","arcs":[[175]],"id":"304","properties":{"name":"Greenland"}},{"type":"Polygon","arcs":[[176]],"id":"260","properties":{"name":"Fr. S. Antarctic Lands"}},{"type":"Polygon","arcs":[[177,-77]],"id":"626","properties":{"name":"Timor-Leste"}},{"type":"Polygon","arcs":[[178,179,180,181,182,183,184],[185]],"id":"710","properties":{"name":"South Africa"}},{"type":"Polygon","arcs":[[-186]],"id":"426","properties":{"name":"Lesotho"}},{"type":"Polygon","arcs":[[-50,186,187,188,189]],"id":"484","properties":{"name":"Mexico"}},{"type":"Polygon","arcs":[[190,191,-93]],"id":"858","properties":{"name":"Uruguay"}},{"type":"Polygon","arcs":[[-191,-98,192,193,194,195,196,197,198,199,200]],"id":"076","properties":{"name":"Brazil"}},{"type":"Polygon","arcs":[[-194,201,-96,-100,202]],"id":"068","properties":{"name":"Bolivia"}},{"type":"Polygon","arcs":[[-195,-203,-102,203,204,205]],"id":"604","properties":{"name":"Peru"}},{"type":"Polygon","arcs":[[-196,-206,206,207,208,209,210]],"id":"170","properties":{"name":"Colombia"}},{"type":"Polygon","arcs":[[-209,211,212,213]],"id":"591","properties":{"name":"Panama"}},{"type":"Polygon","arcs":[[-213,214,215,216]],"id":"188","properties":{"name":"Costa Rica"}},{"type":"Polygon","arcs":[[-216,217,218,219]],"id":"558","properties":{"name":"Nicaragua"}},{"type":"Polygon","arcs":[[-219,220,221,222,223]],"id":"340","properties":{"name":"Honduras"}},{"type":"Polygon","arcs":[[-222,224,225]],"id":"222","properties":{"name":"El Salvador"}},{"type":"Polygon","arcs":[[-189,226,227,-223,-226,228]],"id":"320","properties":{"name":"Guatemala"}},{"type":"Polygon","arcs":[[-188,229,-227]],"id":"084","properties":{"name":"Belize"}},{"type":"Polygon","arcs":[[-197,-211,230,231]],"id":"862","properties":{"name":"Venezuela"}},{"type":"Polygon","arcs":[[-198,-232,232,233]],"id":"328","properties":{"name":"Guyana"}},{"type":"Polygon","arcs":[[-199,-234,234,235]],"id":"740","properties":{"name":"Suriname"}},{"type":"MultiPolygon","arcs":[[[-200,-236,236]],[[237,238,239,240,241,242,243,244]],[[245]]],"id":"250","properties":{"name":"France"}},{"type":"Polygon","arcs":[[-205,246,-207]],"id":"218","properties":{"name":"Ecuador"}},{"type":"Polygon","arcs":[[247]],"id":"630","properties":{"name":"Puerto Rico"}},{"type":"Polygon","arcs":[[248]],"id":"388","properties":{"name":"Jamaica"}},{"type":"Polygon","arcs":[[249]],"id":"192","properties":{"name":"Cuba"}},{"type":"Polygon","arcs":[[-181,250,251,252]],"id":"716","properties":{"name":"Zimbabwe"}},{"type":"Polygon","arcs":[[-180,253,254,-251]],"id":"072","properties":{"name":"Botswana"}},{"type":"Polygon","arcs":[[-179,255,256,257,-254]],"id":"516","properties":{"name":"Namibia"}},{"type":"Polygon","arcs":[[258,259,260,261,262,263,264]],"id":"686","properties":{"name":"Senegal"}},{"type":"Polygon","arcs":[[-261,265,266,267,268,269,270]],"id":"466","properties":{"name":"Mali"}},{"type":"Polygon","arcs":[[-13,271,-266,-260,272]],"id":"478","properties":{"name":"Mauritania"}},{"type":"Polygon","arcs":[[273,274,275,276,277]],"id":"204","properties":{"name":"Benin"}},{"type":"Polygon","arcs":[[-131,278,279,-277,280,-268,281,282]],"id":"562","properties":{"name":"Niger"}},{"type":"Polygon","arcs":[[-278,-280,283,284]],"id":"566","properties":{"name":"Nigeria"}},{"type":"Polygon","arcs":[[-130,285,286,287,288,289,-284,-279]],"id":"120","properties":{"name":"Cameroon"}},{"type":"Polygon","arcs":[[-275,290,291,292]],"id":"768","properties":{"name":"Togo"}},{"type":"Polygon","arcs":[[-292,293,294,295]],"id":"288","properties":{"name":"Ghana"}},{"type":"Polygon","arcs":[[-270,296,-295,297,298,299]],"id":"384","properties":{"name":"Côte d'Ivoire"}},{"type":"Polygon","arcs":[[-262,-271,-300,300,301,302,303]],"id":"324","properties":{"name":"Guinea"}},{"type":"Polygon","arcs":[[-263,-304,304]],"id":"624","properties":{"name":"Guinea-Bissau"}},{"type":"Polygon","arcs":[[-299,305,306,-301]],"id":"430","properties":{"name":"Liberia"}},{"type":"Polygon","arcs":[[-302,-307,307]],"id":"694","properties":{"name":"Sierra Leone"}},{"type":"Polygon","arcs":[[-269,-281,-276,-293,-296,-297]],"id":"854","properties":{"name":"Burkina Faso"}},{"type":"Polygon","arcs":[[-108,308,-286,-129,-121,309]],"id":"140","properties":{"name":"Central African Rep."}},{"type":"Polygon","arcs":[[-107,310,311,312,-287,-309]],"id":"178","properties":{"name":"Congo"}},{"type":"Polygon","arcs":[[-288,-313,313,314]],"id":"266","properties":{"name":"Gabon"}},{"type":"Polygon","arcs":[[-289,-315,315]],"id":"226","properties":{"name":"Eq. Guinea"}},{"type":"Polygon","arcs":[[-7,316,317,-252,-255,-258,318,-103]],"id":"894","properties":{"name":"Zambia"}},{"type":"Polygon","arcs":[[-6,319,-317]],"id":"454","properties":{"name":"Malawi"}},{"type":"Polygon","arcs":[[-5,320,-184,321,-182,-253,-318,-320]],"id":"508","properties":{"name":"Mozambique"}},{"type":"Polygon","arcs":[[-183,-322]],"id":"748","properties":{"name":"eSwatini"}},{"type":"MultiPolygon","arcs":[[[-106,322,-311]],[[-104,-319,-257,323]]],"id":"024","properties":{"name":"Angola"}},{"type":"Polygon","arcs":[[-9,-112,324]],"id":"108","properties":{"name":"Burundi"}},{"type":"Polygon","arcs":[[325,326,327,328,329,330,331]],"id":"376","properties":{"name":"Israel"}},{"type":"Polygon","arcs":[[-331,332,333]],"id":"422","properties":{"name":"Lebanon"}},{"type":"Polygon","arcs":[[334]],"id":"450","properties":{"name":"Madagascar"}},{"type":"Polygon","arcs":[[-327,335]],"id":"275","properties":{"name":"Palestine"}},{"type":"Polygon","arcs":[[-265,336]],"id":"270","properties":{"name":"Gambia"}},{"type":"Polygon","arcs":[[337,338,339]],"id":"788","properties":{"name":"Tunisia"}},{"type":"Polygon","arcs":[[-12,340,341,-338,342,-282,-267,-272]],"id":"012","properties":{"name":"Algeria"}},{"type":"Polygon","arcs":[[-326,343,344,345,346,-328,-336]],"id":"400","properties":{"name":"Jordan"}},{"type":"Polygon","arcs":[[347,348,349,350,351]],"id":"784","properties":{"name":"United Arab Emirates"}},{"type":"Polygon","arcs":[[352,353]],"id":"634","properties":{"name":"Qatar"}},{"type":"Polygon","arcs":[[354,355,356]],"id":"414","properties":{"name":"Kuwait"}},{"type":"Polygon","arcs":[[-345,357,358,359,360,-357,361]],"id":"368","properties":{"name":"Iraq"}},{"type":"MultiPolygon","arcs":[[[-351,362,363,364]],[[-349,365]]],"id":"512","properties":{"name":"Oman"}},{"type":"MultiPolygon","arcs":[[[366]],[[367]]],"id":"548","properties":{"name":"Vanuatu"}},{"type":"Polygon","arcs":[[368,369,370,371]],"id":"116","properties":{"name":"Cambodia"}},{"type":"Polygon","arcs":[[-369,372,373,374,375,376]],"id":"764","properties":{"name":"Thailand"}},{"type":"Polygon","arcs":[[-370,-377,377,378,379]],"id":"418","properties":{"name":"Laos"}},{"type":"Polygon","arcs":[[-376,380,381,382,383,-378]],"id":"104","properties":{"name":"Myanmar"}},{"type":"Polygon","arcs":[[-371,-380,384,385]],"id":"704","properties":{"name":"Vietnam"}},{"type":"MultiPolygon","arcs":[[[386,386,386]],[[-147,387,388,389,390]]],"id":"408","properties":{"name":"North Korea"}},{"type":"Polygon","arcs":[[-389,391]],"id":"410","properties":{"name":"South Korea"}},{"type":"Polygon","arcs":[[-149,392]],"id":"496","properties":{"name":"Mongolia"}},{"type":"Polygon","arcs":[[-383,393,394,395,396,397,398,399,400]],"id":"356","properties":{"name":"India"}},{"type":"Polygon","arcs":[[-382,401,-394]],"id":"050","properties":{"name":"Bangladesh"}},{"type":"Polygon","arcs":[[-400,402]],"id":"064","properties":{"name":"Bhutan"}},{"type":"Polygon","arcs":[[-398,403]],"id":"524","properties":{"name":"Nepal"}},{"type":"Polygon","arcs":[[-396,404,405,406,407]],"id":"586","properties":{"name":"Pakistan"}},{"type":"Polygon","arcs":[[-69,408,409,-407,410,411]],"id":"004","properties":{"name":"Afghanistan"}},{"type":"Polygon","arcs":[[-68,412,413,-409]],"id":"762","properties":{"name":"Tajikistan"}},{"type":"Polygon","arcs":[[-62,414,-413,-67]],"id":"417","properties":{"name":"Kyrgyzstan"}},{"type":"Polygon","arcs":[[-64,-70,-412,415,416]],"id":"795","properties":{"name":"Turkmenistan"}},{"type":"Polygon","arcs":[[-360,417,418,419,420,421,-416,-411,-406,422]],"id":"364","properties":{"name":"Iran"}},{"type":"Polygon","arcs":[[-332,-334,423,424,-358,-344]],"id":"760","properties":{"name":"Syria"}},{"type":"Polygon","arcs":[[-420,425,426,427,428]],"id":"051","properties":{"name":"Armenia"}},{"type":"Polygon","arcs":[[-172,429,430]],"id":"752","properties":{"name":"Sweden"}},{"type":"Polygon","arcs":[[-156,431,432,433,434]],"id":"112","properties":{"name":"Belarus"}},{"type":"Polygon","arcs":[[-155,435,-164,436,437,438,439,440,441,442,-432]],"id":"804","properties":{"name":"Ukraine"}},{"type":"Polygon","arcs":[[-433,-443,443,444,445,446,-142,447]],"id":"616","properties":{"name":"Poland"}},{"type":"Polygon","arcs":[[448,449,450,451,452,453,454]],"id":"040","properties":{"name":"Austria"}},{"type":"Polygon","arcs":[[-441,455,456,457,458,-449,459]],"id":"348","properties":{"name":"Hungary"}},{"type":"Polygon","arcs":[[-439,460]],"id":"498","properties":{"name":"Moldova"}},{"type":"Polygon","arcs":[[-438,461,462,463,-456,-440,-461]],"id":"642","properties":{"name":"Romania"}},{"type":"Polygon","arcs":[[-434,-448,-144,464,465]],"id":"440","properties":{"name":"Lithuania"}},{"type":"Polygon","arcs":[[-157,-435,-466,466,467]],"id":"428","properties":{"name":"Latvia"}},{"type":"Polygon","arcs":[[-158,-468,468]],"id":"233","properties":{"name":"Estonia"}},{"type":"Polygon","arcs":[[-446,469,-453,470,-238,471,472,473,474,475,476]],"id":"276","properties":{"name":"Germany"}},{"type":"Polygon","arcs":[[-463,477,478,479,480,481]],"id":"100","properties":{"name":"Bulgaria"}},{"type":"MultiPolygon","arcs":[[[482]],[[-480,483,484,485,486]]],"id":"300","properties":{"name":"Greece"}},{"type":"MultiPolygon","arcs":[[[-359,-425,487,488,-427,-418]],[[-479,489,-484]]],"id":"792","properties":{"name":"Turkey"}},{"type":"Polygon","arcs":[[-486,490,491,492,493]],"id":"008","properties":{"name":"Albania"}},{"type":"Polygon","arcs":[[-458,494,495,496,497,498]],"id":"191","properties":{"name":"Croatia"}},{"type":"Polygon","arcs":[[-452,499,-239,-471]],"id":"756","properties":{"name":"Switzerland"}},{"type":"Polygon","arcs":[[-472,-245,500]],"id":"442","properties":{"name":"Luxembourg"}},{"type":"Polygon","arcs":[[-473,-501,-244,501,502]],"id":"056","properties":{"name":"Belgium"}},{"type":"Polygon","arcs":[[-474,-503,503]],"id":"528","properties":{"name":"Netherlands"}},{"type":"Polygon","arcs":[[504,505]],"id":"620","properties":{"name":"Portugal"}},{"type":"Polygon","arcs":[[-505,506,-242,507]],"id":"724","properties":{"name":"Spain"}},{"type":"Polygon","arcs":[[508,509]],"id":"372","properties":{"name":"Ireland"}},{"type":"Polygon","arcs":[[510]],"id":"540","properties":{"name":"New Caledonia"}},{"type":"MultiPolygon","arcs":[[[511]],[[512]],[[513]],[[514]],[[515]]],"id":"090","properties":{"name":"Solomon Is."}},{"type":"MultiPolygon","arcs":[[[516]],[[517]]],"id":"554","properties":{"name":"New Zealand"}},{"type":"MultiPolygon","arcs":[[[518]],[[519]]],"id":"036","properties":{"name":"Australia"}},{"type":"Polygon","arcs":[[520]],"id":"144","properties":{"name":"Sri Lanka"}},{"type":"MultiPolygon","arcs":[[[521]],[[-61,-150,-393,-148,-391,522,-385,-379,-384,-401,-403,-399,-404,-397,-408,-410,-414,-415]]],"id":"156","properties":{"name":"China"}},{"type":"Polygon","arcs":[[523]],"id":"158","properties":{"name":"Taiwan"}},{"type":"MultiPolygon","arcs":[[[-451,524,525,-240,-500]],[[526]],[[527]]],"id":"380","properties":{"name":"Italy"}},{"type":"MultiPolygon","arcs":[[[-476,528]],[[529]]],"id":"208","properties":{"name":"Denmark"}},{"type":"MultiPolygon","arcs":[[[-510,530]],[[531]]],"id":"826","properties":{"name":"United Kingdom"}},{"type":"Polygon","arcs":[[532]],"id":"352","properties":{"name":"Iceland"}},{"type":"MultiPolygon","arcs":[[[-152,533,-421,-429,534]],[[-419,-426]]],"id":"031","properties":{"name":"Azerbaijan"}},{"type":"Polygon","arcs":[[-153,-535,-428,-489,535]],"id":"268","properties":{"name":"Georgia"}},{"type":"MultiPolygon","arcs":[[[536]],[[537]],[[538]],[[539]],[[540]],[[541]],[[542]]],"id":"608","properties":{"name":"Philippines"}},{"type":"MultiPolygon","arcs":[[[-374,543]],[[-81,544,545,546]]],"id":"458","properties":{"name":"Malaysia"}},{"type":"Polygon","arcs":[[-546,547]],"id":"096","properties":{"name":"Brunei"}},{"type":"Polygon","arcs":[[-450,-459,-499,548,-525]],"id":"705","properties":{"name":"Slovenia"}},{"type":"Polygon","arcs":[[-160,549,-430,-171]],"id":"246","properties":{"name":"Finland"}},{"type":"Polygon","arcs":[[-442,-460,-455,550,-444]],"id":"703","properties":{"name":"Slovakia"}},{"type":"Polygon","arcs":[[-445,-551,-454,-470]],"id":"203","properties":{"name":"Czechia"}},{"type":"Polygon","arcs":[[-126,551,552,553]],"id":"232","properties":{"name":"Eritrea"}},{"type":"MultiPolygon","arcs":[[[554]],[[555]],[[556]]],"id":"392","properties":{"name":"Japan"}},{"type":"Polygon","arcs":[[-193,-97,-202]],"id":"600","properties":{"name":"Paraguay"}},{"type":"Polygon","arcs":[[-364,557,558]],"id":"887","properties":{"name":"Yemen"}},{"type":"Polygon","arcs":[[-346,-362,-356,559,-354,560,-352,-365,-559,561]],"id":"682","properties":{"name":"Saudi Arabia"}},{"type":"MultiPolygon","arcs":[[[562]],[[563]],[[564]],[[565]],[[566]],[[567]],[[568]],[[569]]],"id":"010","properties":{"name":"Antarctica"}},{"type":"Polygon","arcs":[[570,571]],"properties":{"name":"N. Cyprus"}},{"type":"Polygon","arcs":[[-572,572]],"id":"196","properties":{"name":"Cyprus"}},{"type":"Polygon","arcs":[[-341,-15,573]],"id":"504","properties":{"name":"Morocco"}},{"type":"Polygon","arcs":[[-124,574,575,-329,576]],"id":"818","properties":{"name":"Egypt"}},{"type":"Polygon","arcs":[[-123,-132,-283,-343,-340,577,-575]],"id":"434","properties":{"name":"Libya"}},{"type":"Polygon","arcs":[[-114,-119,578,-127,-554,579,580]],"id":"231","properties":{"name":"Ethiopia"}},{"type":"Polygon","arcs":[[-553,581,582,-580]],"id":"262","properties":{"name":"Djibouti"}},{"type":"Polygon","arcs":[[-115,-581,-583,583]],"properties":{"name":"Somaliland"}},{"type":"Polygon","arcs":[[-11,584,-110,585,-117]],"id":"800","properties":{"name":"Uganda"}},{"type":"Polygon","arcs":[[-10,-325,-111,-585]],"id":"646","properties":{"name":"Rwanda"}},{"type":"Polygon","arcs":[[-496,586,587]],"id":"070","properties":{"name":"Bosnia and Herz."}},{"type":"Polygon","arcs":[[-481,-487,-494,588,589]],"id":"807","properties":{"name":"Macedonia"}},{"type":"Polygon","arcs":[[-457,-464,-482,-590,590,591,-587,-495]],"id":"688","properties":{"name":"Serbia"}},{"type":"Polygon","arcs":[[-492,592,-497,-588,-592,593]],"id":"499","properties":{"name":"Montenegro"}},{"type":"Polygon","arcs":[[-493,-594,-591,-589]],"properties":{"name":"Kosovo"}},{"type":"Polygon","arcs":[[594]],"id":"780","properties":{"name":"Trinidad and Tobago"}},{"type":"Polygon","arcs":[[-109,-310,-128,-579,-118,-586]],"id":"728","properties":{"name":"S. Sudan"}}]},"land":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[0]],[[1]],[[3,320,184,255,323,104,322,311,313,315,289,284,273,290,293,297,305,307,302,304,263,336,258,272,13,573,341,338,577,575,329,332,423,487,535,153,435,164,436,461,477,489,484,490,592,497,548,525,240,507,505,506,242,501,503,474,528,476,446,142,464,466,468,158,549,430,172,161,387,391,389,522,385,371,372,543,374,380,401,394,404,422,360,354,559,352,560,347,365,349,362,557,561,346,576,124,551,581,583,115,119],[421,416,64,150,533]],[[17,48,186,229,227,223,219,216,213,209,230,232,234,236,200,191,93,100,203,246,207,211,214,217,220,224,228,189,50,15,58]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]],[[44]],[[45]],[[46]],[[47]],[[51]],[[52]],[[53]],[[54]],[[55]],[[56]],[[57]],[[59]],[[70,75]],[[72]],[[73]],[[74]],[[77,177]],[[78]],[[546,79,544,547]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90,98]],[[133,134]],[[135]],[[136]],[[137]],[[138]],[[139]],[[140]],[[144]],[[145]],[[162]],[[165]],[[166]],[[167]],[[168]],[[169]],[[173]],[[174]],[[175]],[[176]],[[245]],[[247]],[[248]],[[249]],[[334]],[[366]],[[367]],[[482]],[[508,530]],[[510]],[[511]],[[512]],[[513]],[[514]],[[515]],[[516]],[[517]],[[518]],[[519]],[[520]],[[521]],[[523]],[[526]],[[527]],[[529]],[[531]],[[532]],[[536]],[[537]],[[538]],[[539]],[[540]],[[541]],[[542]],[[554]],[[555]],[[556]],[[562]],[[563]],[[564]],[[565]],[[566]],[[567]],[[568]],[[569]],[[570,572]],[[594]]]}]}},"arcs":[[[99478,40237],[69,98],[96,-171],[-46,-308],[-172,-81],[-153,73],[-27,260],[107,203],[126,-74]],[[0,41087],[57,27],[-34,-284],[-23,-32],[99822,-145],[-177,-124],[-36,220],[139,121],[88,33],[163,184],[-99999,0]],[[59417,50018],[47,-65],[1007,-1203],[19,-343],[399,-590]],[[60889,47817],[-128,-728],[16,-335],[178,-216],[8,-153],[-76,-357],[16,-180],[-18,-282],[97,-370],[115,-583],[101,-129]],[[61198,44484],[-221,-342],[-303,-230],[-167,10],[-99,-177],[-193,-16],[-73,-74],[-334,166],[-209,-48]],[[59599,43773],[-77,804],[-95,275],[-55,164],[-273,110]],[[59099,45126],[-157,177],[-177,100],[-111,99],[-116,150]],[[58538,45652],[-150,745],[-161,330],[-55,343],[27,307],[-50,544]],[[58149,47921],[115,28],[101,214],[108,308],[69,124],[-3,192],[-60,134],[-16,233]],[[58463,49154],[80,74],[16,348],[-110,333]],[[58449,49909],[98,71],[304,-7],[566,45]],[[47592,66920],[1,-40],[-6,-114]],[[47587,66766],[-1,-895],[-911,31],[9,-1512],[-261,-53],[-68,-304],[53,-853],[-1088,4],[-60,-197]],[[45260,62987],[12,249]],[[45272,63236],[5,-1],[625,48],[33,213],[114,265],[92,816],[386,637],[131,745],[86,44],[91,460],[234,63],[100,-76],[126,0],[90,134],[172,19],[-7,317],[42,0]],[[15878,79530],[-38,1],[-537,581],[-199,255],[-503,244],[-155,523],[40,363],[-356,252],[-48,476],[-336,429],[-6,304]],[[13740,82958],[154,285],[-7,373],[-473,376],[-284,674],[-173,424],[-255,266],[-187,242],[-147,306],[-279,-192],[-270,-330],[-247,388],[-194,259],[-271,164],[-273,17],[1,3364],[2,2193]],[[10837,91767],[518,-142],[438,-285],[289,-54],[244,247],[336,184],[413,-72],[416,259],[455,148],[191,-245],[207,138],[62,278],[192,-63],[470,-530],[369,401],[38,-449],[341,97],[105,173],[337,-34],[424,-248],[650,-217],[383,-100],[272,38],[374,-300],[-390,-293],[502,-127],[750,70],[236,103],[296,-354],[302,299],[-283,251],[179,202],[338,27],[223,59],[224,-141],[279,-321],[310,47],[491,-266],[431,94],[405,-14],[-32,367],[247,103],[431,-200],[-2,-559],[177,471],[223,-16],[126,594],[-298,364],[-324,239],[22,653],[329,429],[366,-95],[281,-261],[378,-666],[-247,-290],[517,-120],[-1,-604],[371,463],[332,-380],[-83,-438],[269,-399],[290,427],[202,510],[16,649],[394,-46],[411,-87],[373,-293],[17,-293],[-207,-315],[196,-316],[-36,-288],[-544,-413],[-386,-91],[-287,178],[-83,-297],[-268,-498],[-81,-259],[-322,-399],[-397,-39],[-220,-250],[-18,-384],[-323,-74],[-340,-479],[-301,-665],[-108,-466],[-16,-686],[409,-99],[125,-553],[130,-448],[388,117],[517,-256],[277,-225],[199,-279],[348,-163],[294,-248],[459,-34],[302,-58],[-45,-511],[86,-594],[201,-661],[414,-561],[214,192],[150,607],[-145,934],[-196,311],[445,276],[314,415],[154,411],[-23,395],[-188,502],[-338,445],[328,619],[-121,535],[-93,922],[194,137],[476,-161],[286,-57],[230,155],[258,-200],[342,-343],[85,-229],[495,-45],[-8,-496],[92,-747],[254,-92],[201,-348],[402,328],[266,652],[184,274],[216,-527],[362,-754],[307,-709],[-112,-371],[370,-333],[250,-338],[442,-152],[179,-189],[110,-500],[216,-78],[112,-223],[20,-664],[-202,-222],[-199,-207],[-458,-210],[-349,-486],[-470,-96],[-594,125],[-417,4],[-287,-41],[-233,-424],[-354,-262],[-401,-782],[-320,-545],[236,97],[446,776],[583,493],[415,58],[246,-289],[-262,-397],[88,-637],[91,-446],[361,-295],[459,86],[278,664],[19,-429],[180,-214],[-344,-387],[-615,-351],[-276,-239],[-310,-426],[-211,44],[-11,500],[483,488],[-445,-19],[-309,-72]],[[31350,77248],[-181,334],[0,805],[-123,171],[-187,-100],[-92,155],[-212,-446],[-84,-460],[-99,-269],[-118,-91],[-89,-30],[-28,-146],[-512,0],[-422,-4],[-125,-109],[-294,-425],[-34,-46],[-89,-231],[-255,1],[-273,-3],[-125,-93],[44,-116],[25,-181],[-5,-60],[-363,-293],[-286,-93],[-323,-316],[-70,0],[-94,93],[-31,85],[6,61],[61,207],[131,325],[81,349],[-56,514],[-59,536],[-290,277],[35,105],[-41,73],[-76,0],[-56,93],[-14,140],[-54,-61],[-75,18],[17,59],[-65,58],[-27,155],[-216,189],[-224,197],[-272,229],[-261,214],[-248,-167],[-91,-6],[-342,154],[-225,-77],[-269,183],[-284,94],[-194,36],[-86,100],[-49,325],[-94,-3],[-1,-227],[-575,0],[-951,0],[-944,0],[-833,0],[-834,0],[-819,0],[-847,0],[-273,0],[-824,0],[-789,0]],[[26668,87478],[207,273],[381,-6],[-6,-114],[-325,-326],[-196,13],[-61,160]],[[27840,93593],[-306,313],[12,213],[133,39],[636,-63],[479,-325],[25,-163],[-296,17],[-299,13],[-304,-80],[-80,36]],[[27690,87261],[107,177],[114,-13],[70,-121],[-108,-310],[-123,50],[-73,176],[13,41]],[[23996,94879],[-151,-229],[-403,44],[-337,155],[148,266],[399,159],[243,-208],[101,-187]],[[23933,96380],[-126,-17],[-521,38],[-74,165],[559,-9],[195,-109],[-33,-68]],[[23124,97116],[332,-205],[-76,-214],[-411,-122],[-226,138],[-119,221],[-22,245],[360,-24],[162,-39]],[[25514,94532],[-449,73],[-738,190],[-96,325],[-34,293],[-279,258],[-574,72],[-322,183],[104,242],[573,-37],[308,-190],[547,1],[240,-194],[-64,-222],[319,-134],[177,-140],[374,-26],[406,-50],[441,128],[566,51],[451,-42],[298,-223],[62,-244],[-174,-157],[-414,-127],[-355,72],[-797,-91],[-570,-11]],[[19093,96754],[392,-92],[-93,-177],[-518,-170],[-411,191],[224,188],[406,60]],[[19177,97139],[361,-120],[-339,-115],[-461,1],[5,84],[285,177],[149,-27]],[[34555,80899],[-148,-372],[-184,-517],[181,199],[187,-126],[-98,-206],[247,-162],[128,144],[277,-182],[-86,-433],[194,101],[36,-313],[86,-367],[-117,-520],[-125,-22],[-183,111],[60,484],[-77,75],[-322,-513],[-166,21],[196,277],[-267,144],[-298,-35],[-539,18],[-43,175],[173,208],[-121,160],[234,356],[287,941],[172,336],[241,204],[129,-26],[-54,-160]],[[26699,89048],[304,-203],[318,-184],[25,-281],[204,46],[199,-196],[-247,-186],[-432,142],[-156,266],[-275,-314],[-396,-306],[-95,346],[-377,-57],[242,292],[35,465],[95,542],[201,-49],[51,-259],[143,91],[161,-155]],[[28119,93327],[263,235],[616,-299],[383,-282],[36,-258],[515,134],[290,-376],[670,-234],[242,-238],[263,-553],[-510,-275],[654,-386],[441,-130],[400,-543],[437,-39],[-87,-414],[-487,-687],[-342,253],[-437,568],[-359,-74],[-35,-338],[292,-344],[377,-272],[114,-157],[181,-584],[-96,-425],[-350,160],[-697,473],[393,-509],[289,-357],[45,-206],[-753,236],[-596,343],[-337,287],[97,167],[-414,304],[-405,286],[5,-171],[-803,-94],[-235,203],[183,435],[522,10],[571,76],[-92,211],[96,294],[360,576],[-77,261],[-107,203],[-425,286],[-563,201],[178,150],[-294,367],[-245,34],[-219,201],[-149,-175],[-503,-76],[-1011,132],[-588,174],[-450,89],[-231,207],[290,270],[-394,2],[-88,599],[213,528],[286,241],[717,158],[-204,-382],[219,-369],[256,477],[704,242],[477,-611],[-42,-387],[550,172]],[[23749,94380],[579,-20],[530,-144],[-415,-526],[-331,-115],[-298,-442],[-317,22],[-173,519],[4,294],[145,251],[276,161]],[[15873,95551],[472,442],[570,383],[426,-9],[381,87],[-38,-454],[-214,-205],[-259,-29],[-517,-252],[-444,-91],[-377,128]],[[13136,82508],[267,47],[-84,-671],[242,-475],[-111,1],[-167,270],[-103,272],[-140,184],[-51,260],[16,188],[131,-76]],[[20696,97433],[546,-81],[751,-215],[212,-281],[108,-247],[-453,66],[-457,192],[-619,21],[268,176],[-335,142],[-21,227]],[[15692,79240],[-140,-82],[-456,269],[-84,209],[-248,207],[-50,168],[-286,107],[-107,321],[24,137],[291,-129],[171,-89],[261,-63],[94,-204],[138,-280],[277,-244],[115,-327]],[[16239,94566],[397,-123],[709,-33],[270,-171],[298,-249],[-349,-149],[-681,-415],[-344,-414],[0,-257],[-731,-285],[-147,259],[-641,312],[119,250],[192,432],[241,388],[-272,362],[939,93]],[[20050,95391],[247,99],[291,-26],[49,-289],[-169,-281],[-940,-91],[-701,-256],[-423,-14],[-35,193],[577,261],[-1255,-70],[-389,106],[379,577],[262,165],[782,-199],[493,-350],[485,-45],[-397,565],[255,215],[286,-68],[94,-282],[109,-210]],[[20410,93755],[311,-239],[175,-575],[86,-417],[466,-293],[502,-279],[-31,-260],[-456,-48],[178,-227],[-94,-217],[-503,93],[-478,160],[-322,-36],[-522,-201],[-704,-88],[-494,-56],[-151,279],[-379,161],[-246,-66],[-343,468],[185,62],[429,101],[392,-26],[362,103],[-537,138],[-594,-47],[-394,12],[-146,217],[644,237],[-428,-9],[-485,156],[233,443],[193,235],[744,359],[284,-114],[-139,-277],[618,179],[386,-298],[314,302],[254,-194],[227,-580],[140,244],[-197,606],[244,86],[276,-94]],[[22100,93536],[-306,386],[329,286],[331,-124],[496,75],[72,-172],[-259,-283],[420,-254],[-50,-532],[-455,-229],[-268,50],[-192,225],[-690,456],[5,189],[567,-73]],[[20389,94064],[372,24],[211,-130],[-244,-390],[-434,413],[95,83]],[[22639,95907],[212,-273],[9,-303],[-127,-440],[-458,-60],[-298,94],[5,345],[-455,-46],[-18,457],[299,-18],[419,201],[390,-34],[22,77]],[[23329,98201],[192,180],[285,42],[-122,135],[646,30],[355,-315],[468,-127],[455,-112],[220,-390],[334,-190],[-381,-176],[-513,-445],[-492,-42],[-575,76],[-299,240],[4,215],[220,157],[-508,-4],[-306,196],[-176,268],[193,262]],[[24559,98965],[413,112],[324,19],[545,96],[409,220],[344,-30],[300,-166],[211,319],[367,95],[498,65],[849,24],[148,-63],[802,100],[601,-38],[602,-37],[742,-47],[597,-75],[508,-161],[-12,-157],[-678,-257],[-672,-119],[-251,-133],[605,3],[-656,-358],[-452,-167],[-476,-483],[-573,-98],[-177,-120],[-841,-64],[383,-74],[-192,-105],[230,-292],[-264,-202],[-429,-167],[-132,-232],[-388,-176],[39,-134],[475,23],[6,-144],[-742,-355],[-726,163],[-816,-91],[-414,71],[-525,31],[-35,284],[514,133],[-137,427],[170,41],[742,-255],[-379,379],[-450,113],[225,229],[492,141],[79,206],[-392,231],[-118,304],[759,-26],[220,-64],[433,216],[-625,68],[-972,-38],[-491,201],[-232,239],[-324,173],[-61,202]],[[29106,90427],[-180,-174],[-312,-30],[-69,289],[118,331],[255,82],[217,-163],[3,-253],[-32,-82]],[[23262,91636],[169,-226],[-173,-207],[-374,179],[-226,-65],[-380,266],[245,183],[194,256],[295,-168],[166,-106],[84,-112]],[[32078,80046],[96,49],[365,-148],[284,-247],[8,-108],[-135,-11],[-360,186],[-258,279]],[[32218,78370],[97,-288],[202,-79],[257,16],[-137,-242],[-102,-38],[-353,250],[-69,198],[105,183]],[[31350,77248],[48,-194],[-296,-286],[-286,-204],[-293,-175],[-147,-351],[-47,-133],[-3,-313],[92,-313],[115,-15],[-29,216],[83,-131],[-22,-169],[-188,-96],[-133,11],[-205,-103],[-121,-29],[-162,-29],[-231,-171],[408,111],[82,-112],[-389,-177],[-177,-1],[8,72],[-84,-164],[82,-27],[-60,-424],[-203,-455],[-20,152],[-61,30],[-91,148],[57,-318],[69,-105],[5,-223],[-89,-230],[-157,-472],[-25,24],[86,402],[-142,225],[-33,491],[-53,-255],[59,-375],[-183,93],[191,-191],[12,-562],[79,-41],[29,-204],[39,-591],[-176,-439],[-288,-175],[-182,-346],[-139,-38],[-141,-217],[-39,-199],[-305,-383],[-157,-281],[-131,-351],[-43,-419],[50,-411],[92,-505],[124,-418],[1,-256],[132,-685],[-9,-398],[-12,-230],[-69,-361],[-83,-75],[-137,72],[-44,259],[-105,136],[-148,508],[-129,452],[-42,231],[57,393],[-77,325],[-217,494],[-108,90],[-281,-268],[-49,30],[-135,275],[-174,147],[-314,-75],[-247,66],[-212,-41],[-114,-92],[50,-157],[-5,-240],[59,-117],[-53,-77],[-103,87],[-104,-112],[-202,18],[-207,312],[-242,-73],[-202,137],[-173,-42],[-234,-138],[-253,-438],[-276,-255],[-152,-282],[-63,-266],[-3,-407],[14,-284],[52,-201]],[[23016,65864],[-108,-18],[-197,130],[-217,184],[-78,277],[-61,414],[-164,337],[-96,346],[-139,404],[-196,236],[-227,-11],[-175,-467],[-230,177],[-144,178],[-69,325],[-92,309],[-165,260],[-142,186],[-102,210],[-481,0],[0,-244],[-221,0],[-552,-4],[-634,416],[-419,287],[26,116],[-353,-64],[-316,-46]],[[17464,69802],[-46,302],[-180,340],[-130,71],[-30,169],[-156,30],[-100,159],[-258,59],[-71,95],[-33,324],[-270,594],[-231,821],[10,137],[-123,195],[-215,495],[-38,482],[-148,323],[61,489],[-10,507],[-89,453],[109,557],[34,536],[33,536],[-50,792],[-88,506],[-80,274],[33,115],[402,-200],[148,-558],[69,156],[-45,484],[-94,485]],[[6833,62443],[49,-51],[45,-79],[71,-207],[-7,-33],[-108,-126],[-89,-92],[-41,-99],[-69,84],[8,165],[-46,216],[14,65],[48,97],[-19,116],[16,55],[21,-11],[107,-100]],[[6668,62848],[-23,-71],[-94,-43],[-47,125],[-32,48],[-3,37],[27,50],[99,-56],[73,-90]],[[6456,63091],[-9,-63],[-149,17],[21,72],[137,-26]],[[6104,63411],[23,-38],[80,-196],[-15,-34],[-19,8],[-97,21],[-35,133],[-11,24],[74,82]],[[5732,63705],[5,-138],[-33,-58],[-93,107],[14,43],[43,58],[64,-12]],[[3759,86256],[220,-54],[27,-226],[-171,-92],[-182,110],[-168,161],[274,101]],[[7436,84829],[185,-40],[117,-183],[-240,-281],[-277,-225],[-142,152],[-43,277],[252,210],[148,90]],[[13740,82958],[-153,223],[-245,188],[-78,515],[-358,478],[-150,558],[-267,38],[-441,15],[-326,170],[-574,613],[-266,112],[-486,211],[-385,-51],[-546,272],[-330,252],[-309,-125],[58,-411],[-154,-38],[-321,-123],[-245,-199],[-308,-126],[-39,348],[125,580],[295,182],[-76,148],[-354,-329],[-190,-394],[-400,-420],[203,-287],[-262,-424],[-299,-248],[-278,-180],[-69,-261],[-434,-305],[-87,-278],[-325,-252],[-191,45],[-259,-165],[-282,-201],[-231,-197],[-477,-169],[-43,99],[304,276],[271,182],[296,324],[345,66],[137,243],[385,353],[62,119],[205,208],[48,448],[141,349],[-320,-179],[-90,102],[-150,-215],[-181,300],[-75,-212],[-104,294],[-278,-236],[-170,0],[-24,352],[50,216],[-179,211],[-361,-113],[-235,277],[-190,142],[-1,334],[-214,252],[108,340],[226,330],[99,303],[225,43],[191,-94],[224,285],[201,-51],[212,183],[-52,270],[-155,106],[205,228],[-170,-7],[-295,-128],[-85,-131],[-219,131],[-392,-67],[-407,142],[-117,238],[-351,343],[390,247],[620,289],[228,0],[-38,-296],[586,23],[-225,366],[-342,225],[-197,296],[-267,252],[-381,187],[155,309],[493,19],[350,270],[66,287],[284,281],[271,68],[526,262],[256,-40],[427,315],[421,-124],[201,-266],[123,114],[469,-35],[-16,-136],[425,-101],[283,59],[585,-186],[534,-56],[214,-77],[370,96],[421,-177],[302,-83]],[[2297,88264],[171,-113],[173,61],[225,-156],[276,-79],[-23,-64],[-211,-125],[-211,128],[-106,107],[-245,-34],[-66,52],[17,223]],[[74266,79657],[-212,-393],[-230,-56],[-13,-592],[-155,-267],[-551,194],[-200,-1058],[-143,-131],[-550,-236],[250,-1026],[-190,-154],[22,-337]],[[72294,75601],[-171,87],[-140,212],[-412,62],[-461,16],[-100,-65],[-396,248],[-158,-122],[-43,-349],[-457,204],[-183,-84],[-62,-259]],[[69711,75551],[-159,-109],[-367,-412],[-121,-422],[-104,-4],[-76,280],[-353,19],[-57,484],[-135,4],[21,593],[-333,431],[-476,-46],[-326,-86],[-265,533],[-227,223],[-431,423],[-52,51],[-715,-349],[11,-2178]],[[65546,74986],[-142,-29],[-195,463],[-188,166],[-315,-123],[-123,-197]],[[64583,75266],[-15,144],[68,246],[-53,206],[-322,202],[-125,530],[-154,150],[-9,192],[270,-56],[11,432],[236,96],[243,-88],[50,576],[-50,365],[-278,-28],[-236,144],[-321,-260],[-259,-124]],[[63639,77993],[-142,96],[29,304],[-177,395],[-207,-17],[-235,401],[160,448],[-81,120],[222,649],[285,-342],[35,431],[573,643],[434,15],[612,-409],[329,-239],[295,249],[440,12],[356,-306],[80,175],[391,-25],[69,280],[-450,406],[267,288],[-52,161],[266,153],[-200,405],[127,202],[1039,205],[136,146],[695,218],[250,245],[499,-127],[88,-612],[290,144],[356,-202],[-23,-322],[267,33],[696,558],[-102,-185],[355,-457],[620,-1500],[148,309],[383,-340],[399,151],[154,-106],[133,-341],[194,-115],[119,-251],[358,79],[147,-361]],[[69711,75551],[83,-58],[-234,-382],[205,-223],[198,147],[329,-311],[-355,-425],[-212,58]],[[69725,74357],[-114,-15],[-40,164],[58,274],[-371,-137],[-89,-380],[-132,-326],[-232,28],[-72,-261],[204,-140],[60,-440],[-156,-598]],[[68841,72526],[-210,124],[-154,4]],[[68477,72654],[7,362],[-369,253],[-291,289],[-181,278],[-317,408],[-137,609],[-93,108],[-301,-27],[-106,121],[-30,471],[-374,312],[-234,-343],[-237,-204],[45,-297],[-313,-8]],[[89166,49043],[482,-407],[513,-338],[192,-302],[154,-297],[43,-349],[462,-365],[68,-313],[-256,-64],[62,-393],[248,-388],[180,-627],[159,20],[-11,-262],[215,-100],[-84,-111],[295,-249],[-30,-171],[-184,-41],[-69,153],[-238,66],[-281,89],[-216,377],[-158,325],[-144,517],[-362,259],[-235,-169],[-170,-195],[35,-436],[-218,-203],[-155,99],[-288,25]],[[89175,45193],[-4,1925],[-5,1925]],[[92399,48417],[106,-189],[33,-307],[-87,-157],[-52,348],[-65,229],[-126,193],[-158,252],[-200,174],[77,143],[150,-166],[94,-130],[117,-142],[111,-248]],[[92027,47129],[-152,-144],[-142,-138],[-148,1],[-228,171],[-158,165],[23,183],[249,-86],[152,46],[42,283],[40,15],[27,-314],[158,45],[78,202],[155,211],[-30,348],[166,11],[56,-97],[-5,-327],[-93,-361],[-146,-48],[-44,-166]],[[92988,47425],[84,-134],[135,-375],[131,-200],[-39,-166],[-78,-59],[-120,227],[-122,375],[-59,450],[38,57],[30,-175]],[[89175,45193],[-247,485],[-282,118],[-69,-168],[-352,-18],[118,481],[175,164],[-72,642],[-134,496],[-538,500],[-229,50],[-417,546],[-82,-287],[-107,-52],[-63,216],[-1,257],[-212,290],[299,213],[198,-11],[-23,156],[-407,1],[-110,352],[-248,109],[-117,293],[374,143],[142,192],[446,-242],[44,-220],[78,-955],[287,-354],[232,627],[319,356],[247,1],[238,-206],[206,-212],[298,-113]],[[84713,45326],[28,-117],[5,-179]],[[84746,45030],[-181,-441],[-238,-130],[-33,71],[25,201],[119,360],[275,235]],[[87280,46506],[-27,445],[49,212],[58,200],[63,-173],[0,-282],[-143,-402]],[[82744,53024],[-158,-533],[204,-560],[-48,-272],[312,-546],[-329,-70],[-93,-403],[12,-535],[-267,-404],[-7,-589],[-107,-903],[-41,210],[-316,-266],[-110,361],[-198,34],[-139,189],[-330,-212],[-101,285],[-182,-32],[-229,68],[-43,793],[-138,164],[-134,505],[-38,517],[32,548],[165,392]],[[80461,51765],[47,-395],[190,-334],[179,121],[177,-43],[162,299],[133,52],[263,-166],[226,126],[143,822],[107,205],[96,672],[319,0],[241,-100]],[[85936,48924],[305,-172],[101,-452],[-234,244],[-232,49],[-157,-39],[-192,21],[65,325],[344,24]],[[85242,48340],[-192,108],[-54,254],[281,29],[69,-195],[-104,-196]],[[85536,51864],[20,-322],[164,-52],[26,-241],[-15,-517],[-143,58],[-42,-359],[114,-312],[-78,-71],[-112,374],[-82,755],[56,472],[92,215]],[[84146,51097],[319,25],[275,429],[48,-132],[-223,-587],[-209,-113],[-267,115],[-463,-29],[-243,-85],[-39,-447],[248,-526],[150,268],[518,201],[-22,-272],[-121,86],[-121,-347],[-245,-229],[263,-757],[-50,-203],[249,-682],[-2,-388],[-148,-173],[-109,207],[134,484],[-273,-229],[-69,164],[36,228],[-200,346],[21,576],[-186,-179],[24,-689],[11,-846],[-176,-85],[-119,173],[79,544],[-43,570],[-117,4],[-86,405],[115,387],[40,469],[139,891],[58,243],[237,439],[217,-174],[350,-82]],[[83414,44519],[-368,414],[259,116],[146,-180],[97,-180],[-17,-159],[-117,-11]],[[83705,45536],[185,45],[249,216],[-41,-328],[-417,-168],[-370,73],[0,216],[220,123],[174,-177]],[[82849,45639],[172,48],[69,-251],[-321,-119],[-193,-79],[-149,5],[95,340],[153,5],[74,209],[100,-158]],[[80134,46785],[38,-210],[533,-59],[61,244],[515,-284],[101,-383],[417,-108],[341,-351],[-317,-225],[-306,238],[-251,-16],[-288,44],[-260,106],[-322,225],[-204,59],[-116,-74],[-506,243],[-48,254],[-255,44],[191,564],[337,-35],[224,-231],[115,-45]],[[78991,49939],[47,-412],[97,-330],[204,-52],[135,-374],[-70,-735],[-11,-914],[-308,-12],[-234,494],[-356,482],[-119,358],[-210,481],[-138,443],[-212,827],[-244,493],[-81,508],[-103,461],[-250,372],[-145,506],[-209,330],[-290,652],[-24,300],[178,-24],[430,-114],[246,-577],[215,-401],[153,-246],[263,-635],[283,-9],[233,-405],[161,-495],[211,-270],[-111,-482],[159,-205],[100,-15]],[[30935,19481],[106,-274],[139,-443],[361,-355],[389,-147],[-125,-296],[-264,-29],[-141,208]],[[31400,18145],[-168,16],[-297,1],[0,1319]],[[33993,32727],[-70,-473],[-74,-607],[3,-588],[-61,-132],[-21,-382]],[[33770,30545],[-19,-308],[353,-506],[-38,-408],[173,-257],[-14,-289],[-267,-757],[-412,-317],[-557,-123],[-305,59],[59,-352],[-57,-442],[51,-298],[-167,-208],[-284,-82],[-267,216],[-108,-155],[39,-587],[188,-178],[152,186],[82,-307],[-255,-183],[-223,-367],[-41,-595],[-66,-316],[-262,-2],[-218,-302],[-80,-443],[273,-433],[266,-119],[-96,-531],[-328,-333],[-180,-692],[-254,-234],[-113,-276],[89,-614],[185,-342],[-117,30]],[[30952,19680],[-257,93],[-672,79],[-115,344],[6,443],[-185,-38],[-98,214],[-24,626],[213,260],[88,375],[-33,299],[148,504],[101,782],[-30,347],[122,112],[-30,223],[-129,118],[92,248],[-126,224],[-65,682],[112,120],[-47,720],[65,605],[75,527],[166,215],[-84,576],[-1,543],[210,386],[-7,494],[159,576],[1,544],[-72,108],[-128,1020],[171,607],[-27,572],[100,537],[182,555],[196,367],[-83,232],[58,190],[-9,985],[302,291],[96,614],[-34,148]],[[31359,37147],[231,534],[364,-144],[163,-427],[109,475],[316,-24],[45,-127]],[[32587,37434],[511,-964],[227,-89],[339,-437],[286,-231],[40,-261],[-273,-898],[280,-160],[312,-91],[220,95],[252,453],[45,521]],[[34826,35372],[138,114],[139,-341],[-6,-472],[-234,-326],[-186,-241],[-314,-573],[-370,-806]],[[31400,18145],[-92,-239],[-238,-183],[-137,19],[-164,48],[-202,177],[-291,86],[-350,330],[-283,317],[-383,662],[229,-124],[390,-395],[369,-212],[143,271],[90,405],[256,244],[198,-70]],[[30669,40193],[136,-402],[37,-426],[146,-250],[-88,-572],[150,-663],[109,-814],[200,81]],[[30952,19680],[-247,4],[-134,-145],[-250,-213],[-45,-552],[-118,-14],[-313,192],[-318,412],[-346,338],[-87,374],[79,346],[-140,393],[-36,1007],[119,568],[293,457],[-422,172],[265,522],[94,982],[309,-208],[145,1224],[-186,157],[-87,-738],[-175,83],[87,845],[95,1095],[127,404],[-80,576],[-22,666],[117,19],[170,954],[192,945],[118,881],[-64,885],[83,487],[-34,730],[163,721],[50,1143],[89,1227],[87,1321],[-20,967],[-58,832]],[[30452,39739],[143,151],[74,303]],[[58538,45652],[-109,60],[-373,-99],[-75,-71],[-79,-377],[62,-261],[-49,-699],[-34,-593],[75,-105],[194,-230],[76,107],[23,-637],[-212,5],[-114,325],[-103,252],[-213,82],[-62,310],[-170,-187],[-222,83],[-93,268],[-176,55],[-131,-15],[-15,184],[-96,15]],[[56642,44124],[-127,35],[-172,-89],[-121,15],[-68,-54],[15,703],[-93,219],[-21,363],[41,356],[-56,228],[-5,372],[-337,-5],[24,213],[-142,-2],[-15,-103],[-172,-23],[-69,-344],[-42,-148],[-154,83],[-91,-83],[-184,-47],[-106,309],[-64,191],[-80,354],[-68,440],[-820,8],[-98,-71],[-80,11],[-115,-79]],[[53422,46976],[-39,183]],[[53383,47159],[71,62],[9,258],[45,152],[101,124]],[[53609,47755],[73,-60],[95,226],[152,-6],[17,-167],[104,-105],[164,370],[161,289],[71,189],[-10,486],[121,574],[127,304],[183,285],[32,189],[7,216],[45,205],[-14,335],[34,524],[55,368],[83,316],[16,357]],[[55125,52650],[25,412],[108,300],[149,190],[229,-200],[177,-218],[203,-59],[207,-115],[83,357],[38,46],[127,-60],[309,295],[110,-125],[90,18],[41,143],[104,51],[209,-62],[178,-14],[91,63]],[[57603,53672],[169,-488],[124,-71],[75,99],[128,-39],[155,125],[66,-252],[244,-393]],[[58564,52653],[-16,-691],[111,-80],[-89,-210],[-107,-157],[-106,-308],[-59,-274],[-15,-475],[-65,-225],[-2,-446]],[[58216,49787],[-80,-165],[-10,-351],[-38,-46],[-26,-323]],[[58062,48902],[70,-268],[17,-713]],[[61551,49585],[-165,488],[-3,2152],[243,670]],[[61626,52895],[76,186],[178,11],[247,417],[362,26],[785,1773]],[[63274,55308],[194,493],[125,363],[0,308],[0,596],[1,244],[2,9]],[[63596,57321],[89,12],[128,88],[147,59],[132,202],[105,2],[6,-163],[-25,-344],[1,-310],[-59,-214],[-78,-639],[-134,-659],[-172,-755],[-238,-866],[-237,-661],[-327,-806],[-278,-479],[-415,-586],[-259,-450],[-304,-715],[-64,-312],[-63,-140]],[[59417,50018],[-3,627],[80,239],[137,391],[101,431],[-123,678],[-32,296],[-132,411]],[[59445,53091],[171,352],[188,390]],[[59804,53833],[145,-99],[0,-332],[95,-194],[193,0],[352,-502],[87,-6],[65,16],[62,-68],[185,-47],[82,247],[254,247],[112,-200],[190,0]],[[61551,49585],[-195,-236],[-68,-246],[-104,-44],[-40,-416],[-89,-238],[-54,-393],[-112,-195]],[[56824,55442],[-212,258],[-96,170],[-18,184],[45,246],[-1,241],[-160,369],[-31,253]],[[56351,57163],[3,143],[-102,174],[-3,343],[-58,228],[-98,-34],[28,217],[72,246],[-32,245],[92,181],[-58,138],[73,365],[127,435],[240,-41],[-14,2345]],[[56621,62148],[3,248],[320,2],[0,1180]],[[56944,63578],[1117,0],[1077,0],[1102,0]],[[60240,63578],[90,-580],[-61,-107],[40,-608],[102,-706],[106,-145],[152,-219]],[[60669,61213],[-141,-337],[-204,-97],[-88,-181],[-27,-393],[-120,-868],[30,-236]],[[60119,59101],[-45,-508],[-112,-582],[-168,-293],[-119,-451],[-28,-241],[-132,-166],[-82,-618],[4,-531]],[[59437,55711],[-3,460],[-39,12],[5,294],[-33,203],[-143,233],[-34,426],[34,436],[-129,41],[-19,-132],[-167,-30],[67,-173],[23,-355],[-152,-324],[-138,-426],[-144,-61],[-233,345],[-105,-122],[-29,-172],[-143,-112],[-9,-122],[-277,0],[-38,122],[-200,20],[-100,-101],[-77,51],[-143,344],[-48,163],[-200,-81],[-76,-274],[-72,-528],[-95,-111],[-85,-65],[189,-230]],[[56351,57163],[-176,-101],[-141,-239],[-201,-645],[-261,-273],[-269,36],[-78,-54],[28,-208],[-145,-207],[-118,-230],[-350,-226],[-69,134],[-46,11],[-52,-152],[-229,-44]],[[54244,54965],[43,160],[-87,407],[-39,245],[-121,100],[-164,345],[60,279],[127,-60],[78,42],[155,-6],[-151,537],[10,393],[-18,392],[-111,378]],[[54026,58177],[28,279],[-178,13],[0,380],[-115,219],[120,778],[354,557],[15,769],[107,1199],[60,254],[-116,203],[-4,188],[-104,153],[-68,919]],[[54125,64088],[280,323],[1108,-1132],[1108,-1131]],[[30080,62227],[24,-321],[-21,-228],[-68,-99],[71,-177],[-5,-161]],[[30081,61241],[-185,100],[-131,-41],[-169,43],[-130,-110],[-149,184],[24,190],[256,-82],[210,-47],[100,131],[-127,256],[2,226],[-175,92],[62,163],[170,-26],[241,-93]],[[30080,62227],[34,101],[217,-3],[165,-152],[73,15],[50,-209],[152,11],[-9,-176],[124,-21],[136,-217],[-103,-240],[-132,128],[-127,-25],[-92,28],[-50,-107],[-106,-37],[-43,144],[-92,-85],[-111,-405],[-71,94],[-14,170]],[[76049,98451],[600,133],[540,-297],[640,-572],[-69,-531],[-606,-73],[-773,170],[-462,226],[-213,423],[-379,117],[722,404]],[[78565,97421],[704,-336],[-82,-240],[-1566,-228],[507,776],[229,66],[208,-38]],[[88563,95563],[734,-26],[1004,-313],[-219,-439],[-1023,16],[-461,-139],[-550,384],[149,406],[366,111]],[[91172,95096],[697,-155],[-321,-234],[-444,53],[-516,233],[66,192],[518,-89]],[[88850,93928],[263,234],[348,54],[394,-226],[34,-155],[-421,-4],[-569,66],[-49,31]],[[62457,98194],[542,107],[422,8],[57,-160],[159,142],[262,97],[412,-129],[-107,-90],[-373,-78],[-250,-45],[-39,-97],[-324,-98],[-301,140],[158,185],[-618,18]],[[56314,82678],[-511,-9],[-342,67]],[[55461,82736],[63,260],[383,191]],[[55907,83187],[291,-103],[123,-94],[-30,-162],[23,-150]],[[64863,94153],[665,518],[-75,268],[621,312],[917,380],[925,110],[475,220],[541,76],[193,-233],[-187,-184],[-984,-293],[-848,-282],[-863,-562],[-414,-577],[-435,-568],[56,-491],[531,-484],[-164,-52],[-907,77],[-74,262],[-503,158],[-40,320],[284,126],[-10,323],[551,503],[-255,73]],[[89698,82309],[96,-569],[-7,-581],[114,-597],[280,-1046],[-411,195],[-171,-854],[271,-605],[-8,-413],[-211,356],[-182,-457],[-51,496],[31,575],[-32,638],[64,446],[13,790],[-163,581],[24,808],[257,271],[-110,274],[123,83],[73,-391]],[[86327,75524],[-39,104]],[[86288,75628],[-2,300],[142,16],[40,698],[-73,506],[238,208],[338,-104],[186,575],[96,647],[107,216],[146,532],[-459,-175],[-240,-233],[-423,1],[-112,555],[-329,420],[-483,189],[-103,579],[-97,363],[-104,254],[-172,596],[-244,217],[-415,176],[-369,-16],[-345,-106],[-229,-294],[152,-141],[4,-326],[-155,-189],[-251,-627],[3,-260],[-392,-373],[-333,223]],[[82410,80055],[-331,-49],[-146,198],[-166,63],[-407,-416],[-366,-98],[-255,-146],[-350,96],[-258,-6],[-168,302],[-272,284],[-279,78],[-351,-78],[-263,-109],[-394,248],[-53,443],[-327,152],[-252,69],[-311,244],[-288,-612],[113,-348],[-270,-411],[-402,148],[-277,22],[-186,276],[-289,8],[-242,182],[-423,-278],[-530,-509],[-292,-102]],[[74375,79706],[-109,-49]],[[63639,77993],[-127,-350],[-269,-97],[-276,-610],[252,-561],[-27,-398],[303,-696]],[[63495,75281],[-166,-238],[-48,-150],[-122,40],[-191,359],[-78,20]],[[62890,75312],[-175,137],[-85,242],[-259,124],[-169,-93],[-48,110],[-378,283],[-409,96],[-235,101],[-34,-70]],[[61098,76242],[-354,499],[-317,223],[-240,347],[202,95],[231,494],[-156,234],[410,241],[-8,129],[-249,-95]],[[60617,78409],[9,262],[143,165],[269,43],[44,197],[-62,326],[113,310],[-3,173],[-410,192],[-162,-6],[-172,277],[-213,-94],[-352,208],[6,116],[-99,256],[-222,29],[-23,183],[70,120],[-178,334],[-288,-57],[-84,30],[-70,-134],[-104,23]],[[58829,81362],[-68,379],[-66,196],[54,55],[224,-20],[108,129],[-80,157],[-187,104],[16,107],[-113,108],[-174,387],[60,159],[-27,277],[-272,141],[-146,-70],[-39,146],[-293,149]],[[57826,83766],[-89,348],[-24,287],[-134,136]],[[57579,84537],[120,187],[-83,551],[198,341],[-42,103]],[[57772,85719],[316,327],[-291,280]],[[57797,86326],[594,755],[258,341],[105,301],[-411,405],[113,385],[-250,440],[187,506],[-323,673],[256,445],[-425,394],[41,414]],[[57942,91385],[224,54],[473,237]],[[58639,91676],[286,206],[456,-358],[761,-140],[1050,-668],[213,-281],[18,-393],[-308,-311],[-454,-157],[-1240,449],[-204,-75],[453,-433],[18,-274],[18,-604],[358,-180],[217,-153],[36,286],[-168,254],[177,224],[672,-368],[233,144],[-186,433],[647,578],[256,-34],[260,-206],[161,406],[-231,352],[136,353],[-204,367],[777,-190],[158,-331],[-351,-73],[1,-328],[219,-203],[429,128],[68,377],[580,282],[970,507],[209,-29],[-273,-359],[344,-61],[199,202],[521,16],[412,245],[317,-356],[315,391],[-291,343],[145,195],[820,-179],[385,-185],[1006,-675],[186,309],[-282,313],[-8,125],[-335,58],[92,280],[-149,461],[-8,189],[512,535],[183,537],[206,116],[736,-156],[57,-328],[-263,-479],[173,-189],[89,-413],[-63,-809],[307,-362],[-120,-395],[-544,-839],[318,-87],[110,213],[306,151],[74,293],[240,281],[-162,336],[130,390],[-304,49],[-67,328],[222,593],[-361,482],[497,398],[-64,421],[139,13],[145,-328],[-109,-570],[297,-108],[-127,426],[465,233],[577,31],[513,-337],[-247,492],[-28,630],[483,119],[669,-26],[602,77],[-226,309],[321,388],[319,16],[540,293],[734,79],[93,162],[729,55],[227,-133],[624,314],[510,-10],[77,255],[265,252],[656,242],[476,-191],[-378,-146],[629,-90],[75,-292],[254,143],[812,-7],[626,-289],[223,-221],[-69,-307],[-307,-175],[-730,-328],[-209,-175],[345,-83],[410,-149],[251,112],[141,-379],[122,153],[444,93],[892,-97],[67,-276],[1162,-88],[15,451],[590,-104],[443,4],[449,-312],[128,-378],[-165,-247],[349,-465],[437,-240],[268,620],[446,-266],[473,159],[538,-182],[204,166],[455,-83],[-201,549],[367,256],[2509,-384],[236,-351],[727,-451],[1122,112],[553,-98],[231,-244],[-33,-432],[342,-168],[372,121],[492,15],[525,-116],[526,66],[484,-526],[344,189],[-224,378],[123,262],[886,-165],[578,36],[799,-282],[-99610,-258],[681,-451],[728,-588],[-24,-367],[187,-147],[-64,429],[754,-88],[544,-553],[-276,-257],[-455,-61],[-7,-578],[-111,-122],[-260,17],[-212,206],[-369,172],[-62,257],[-283,96],[-315,-76],[-151,207],[60,219],[-333,-140],[126,-278],[-158,-251],[99997,-3],[-357,-260],[-360,44],[250,-315],[166,-487],[128,-159],[32,-244],[-71,-157],[-518,129],[-777,-445],[-247,-69],[-425,-415],[-403,-362],[-102,-269],[-397,409],[-724,-464],[-126,219],[-268,-253],[-371,81],[-90,-388],[-333,-572],[10,-239],[316,-132],[-37,-860],[-258,-22],[-119,-494],[116,-255],[-486,-302],[-96,-674],[-415,-144],[-83,-600],[-400,-551],[-103,407],[-119,862],[-155,1313],[134,819],[234,353],[14,276],[432,132],[496,744],[479,608],[499,471],[223,833],[-337,-50],[-167,-487],[-705,-649],[-227,727],[-717,-201],[-696,-990],[230,-362],[-620,-154],[-430,-61],[20,427],[-431,90],[-344,-291],[-850,102],[-914,-175],[-899,-1153],[-1065,-1394],[438,-74],[136,-370],[270,-132],[178,295],[305,-38],[401,-650],[9,-503],[-217,-590],[-23,-705],[-126,-945],[-418,-855],[-94,-409],[-377,-688],[-374,-682],[-179,-349],[-370,-346],[-175,-8],[-175,287],[-373,-432],[-43,-197]],[[0,92833],[36,24],[235,-1],[402,-169],[-24,-81],[-286,-141],[-363,-36],[99694,-30],[-49,187],[-99645,247]],[[59287,77741],[73,146],[198,-127],[89,-23],[36,-117],[42,-18]],[[59725,77602],[2,-51],[136,-142],[284,35],[-55,-210],[-304,-103],[-377,-342],[-154,121],[61,277],[-304,173],[50,113],[265,197],[-42,71]],[[28061,66408],[130,47],[184,-18],[8,-153],[-303,-95],[-19,219]],[[28391,66555],[220,-265],[-48,-420],[-51,75],[4,309],[-124,234],[-1,67]],[[28280,65474],[84,-23],[97,-491],[1,-343],[-68,-29],[-70,340],[-104,171],[60,375]],[[33000,19946],[333,354],[236,-148],[167,237],[222,-266],[-83,-207],[-375,-177],[-125,207],[-236,-266],[-139,266]],[[54206,97653],[105,202],[408,20],[350,-206],[915,-440],[-699,-233],[-155,-435],[-243,-111],[-132,-490],[-335,-23],[-598,361],[252,210],[-416,170],[-541,499],[-216,463],[757,212],[152,-207],[396,8]],[[57942,91385],[117,414],[-356,235],[-431,-200],[-137,-433],[-265,-262],[-298,143],[-362,-29],[-309,312],[-167,-156]],[[55734,91409],[-172,-24],[-41,-389],[-523,95],[-74,-329],[-267,2],[-183,-421],[-278,-655],[-431,-831],[101,-202],[-97,-234],[-275,10],[-180,-554],[17,-784],[177,-300],[-92,-694],[-231,-405],[-122,-341]],[[53063,85353],[-187,363],[-548,-684],[-371,-138],[-384,301],[-99,635],[-88,1363],[256,381],[733,496],[549,609],[508,824],[668,1141],[465,444],[763,741],[610,259],[457,-31],[423,489],[506,-26],[499,118],[869,-433],[-358,-158],[305,-371]],[[57613,97879],[-412,-318],[-806,-70],[-819,98],[-50,163],[-398,11],[-304,271],[858,165],[403,-142],[281,177],[702,-148],[545,-207]],[[56867,96577],[-620,-241],[-490,137],[191,152],[-167,189],[575,119],[110,-222],[401,-134]],[[37010,99398],[932,353],[975,-27],[354,218],[982,57],[2219,-74],[1737,-469],[-513,-227],[-1062,-26],[-1496,-58],[140,-105],[984,65],[836,-204],[540,181],[231,-212],[-305,-344],[707,220],[1348,229],[833,-114],[156,-253],[-1132,-420],[-157,-136],[-888,-102],[643,-28],[-324,-431],[-224,-383],[9,-658],[333,-386],[-434,-24],[-457,-187],[513,-313],[65,-502],[-297,-55],[360,-508],[-617,-42],[322,-241],[-91,-208],[-391,-91],[-388,-2],[348,-400],[4,-263],[-549,244],[-143,-158],[375,-148],[364,-361],[105,-476],[-495,-114],[-214,228],[-344,340],[95,-401],[-322,-311],[732,-25],[383,-32],[-745,-515],[-755,-466],[-813,-204],[-306,-2],[-288,-228],[-386,-624],[-597,-414],[-192,-24],[-370,-145],[-399,-138],[-238,-365],[-4,-415],[-141,-388],[-453,-472],[112,-462],[-125,-488],[-142,-577],[-391,-36],[-410,482],[-556,3],[-269,324],[-186,577],[-481,735],[-141,385],[-38,530],[-384,546],[100,435],[-186,208],[275,691],[418,220],[110,247],[58,461],[-318,-209],[-151,-88],[-249,-84],[-341,193],[-19,401],[109,314],[258,9],[567,-157],[-478,375],[-249,202],[-276,-83],[-232,147],[310,550],[-169,220],[-220,409],[-335,626],[-353,230],[3,247],[-745,346],[-590,43],[-743,-24],[-677,-44],[-323,188],[-482,372],[729,186],[559,31],[-1188,154],[-627,241],[39,229],[1051,285],[1018,284],[107,214],[-750,213],[243,235],[961,413],[404,63],[-115,265],[658,156],[854,93],[853,5],[303,-184],[737,325],[663,-221],[390,-46],[577,-192],[-660,318],[38,253]],[[69148,21851],[179,-186],[263,-74],[9,-112],[-77,-269],[-427,-38],[-7,314],[41,244],[19,121]],[[84713,45326],[32,139],[239,133],[194,20],[87,74],[105,-74],[-102,-160],[-289,-258],[-233,-170]],[[54540,33696],[133,292],[109,-162],[47,-252],[125,-43],[175,-112],[149,43],[248,302],[0,2182]],[[55526,35946],[75,-88],[165,-562],[-26,-360],[62,-207],[199,60],[139,264],[132,177],[68,283],[135,137],[117,-71],[133,-166],[226,-29],[178,138],[28,184],[48,283],[152,47],[83,222],[93,393],[249,442],[393,435]],[[58175,37528],[113,-7],[134,-100],[94,71],[148,-59]],[[58664,37433],[133,-832],[72,-419],[-49,-659],[23,-212]],[[58843,35311],[-140,108],[-80,-42],[-26,-172],[-76,-222],[2,-204],[166,-320],[163,63],[56,263]],[[58908,34785],[211,-5]],[[59119,34780],[-70,-430],[-32,-491],[-72,-267],[-190,-298],[-54,-86],[-118,-300],[-77,-303],[-158,-424],[-314,-609],[-196,-355],[-210,-269],[-290,-229],[-141,-31],[-36,-164],[-169,88],[-138,-113],[-301,114],[-168,-72],[-115,31],[-286,-233],[-238,-94],[-171,-223],[-127,-14],[-117,210],[-94,11],[-120,264],[-13,-82],[-37,159],[2,346],[-90,396],[89,108],[-7,453],[-182,553],[-139,501],[-1,1],[-199,768]],[[58049,33472],[-121,182],[-130,-120],[-151,-232],[-148,-374],[209,-454],[99,59],[51,188],[155,93],[47,192],[85,288],[-96,178]],[[23016,65864],[-107,-518],[-49,-426],[-20,-791],[-27,-289],[48,-322],[86,-288],[56,-458],[184,-440],[65,-337],[109,-291],[295,-157],[114,-247],[244,165],[212,60],[208,106],[175,101],[176,241],[67,345],[22,496],[48,173],[188,155],[294,137],[246,-21],[169,50],[66,-125],[-9,-285],[-149,-351],[-66,-360],[51,-103],[-42,-255],[-69,-461],[-71,152],[-58,-10]],[[25472,61510],[-53,-8],[-99,-357],[-51,70],[-33,-27],[2,-87]],[[25238,61101],[-257,7],[-259,-1],[-1,-333],[-125,-1],[103,-198],[103,-136],[31,-128],[45,-36],[-7,-201],[-357,-2],[-133,-481],[39,-111],[-32,-138],[-7,-172]],[[24381,59170],[-314,636],[-144,191],[-226,155],[-156,-43],[-223,-223],[-140,-58],[-196,156],[-208,112],[-260,271],[-208,83],[-314,275],[-233,282],[-70,158],[-155,35],[-284,187],[-116,270],[-299,335],[-139,373],[-66,288],[93,57],[-29,169],[64,153],[1,204],[-93,266],[-25,235],[-94,298],[-244,587],[-280,462],[-135,368],[-238,241],[-51,145],[42,365],[-142,138],[-164,287],[-69,412],[-149,48],[-162,311],[-130,288],[-12,184],[-149,446],[-99,452],[5,227],[-201,234],[-93,-25],[-159,163],[-44,-240],[46,-284],[27,-444],[95,-243],[206,-407],[46,-139],[42,-42],[37,-203],[49,8],[56,-381],[85,-150],[59,-210],[174,-300],[92,-550],[83,-259],[77,-277],[15,-311],[134,-20],[112,-268],[100,-264],[-6,-106],[-117,-217],[-49,3],[-74,359],[-181,337],[-201,286],[-142,150],[9,432],[-42,320],[-132,183],[-191,264],[-37,-76],[-70,154],[-171,143],[-164,343],[20,44],[115,-33],[103,221],[10,266],[-214,422],[-163,163],[-102,369],[-103,388],[-129,472],[-113,531]],[[33993,32727],[180,63],[279,-457],[103,18],[286,-379],[218,-327],[160,-402],[-122,-280],[77,-334]],[[35174,30629],[-121,-372],[-313,-328],[-205,118],[-151,-63],[-256,253],[-189,-19],[-169,327]],[[34826,35372],[54,341],[38,350],[0,325],[-100,107],[-104,-96],[-103,26],[-33,228],[-26,541],[-52,177],[-187,160],[-114,-116],[-293,113],[18,802],[-82,329]],[[33842,38659],[87,122],[-27,337],[77,259],[49,465],[-66,367],[-151,166],[-30,233],[41,342],[-533,24],[-107,688],[81,10],[-3,255],[-55,172],[-12,342],[-161,175],[-175,-6],[-115,172],[-188,117],[-109,220],[-311,98],[-302,529],[23,396],[-34,227],[29,443],[-363,-100],[-147,-222],[-243,-239],[-62,-179],[-143,-13],[-206,50]],[[30686,44109],[-157,-102],[-126,68],[18,898],[-228,-348],[-245,15],[-105,315],[-184,34],[59,254],[-155,359],[-115,532],[73,108],[0,250],[168,171],[-28,319],[71,206],[20,275],[318,402],[227,114],[37,89],[251,-28]],[[30585,48040],[125,1620],[6,256],[-43,339],[-123,215],[1,430],[156,97],[56,-61],[9,226],[-162,61],[-4,370],[541,-13],[92,203],[77,-187],[55,-349],[52,73]],[[31423,51320],[153,-312],[216,38],[54,181],[206,138],[115,97],[32,250],[198,168],[-15,124],[-235,51],[-39,372],[12,396],[-125,153],[52,55],[206,-76],[221,-148],[80,140],[200,92],[310,221],[102,225],[-37,167]],[[33129,53652],[145,26],[64,-136],[-36,-259],[96,-90],[63,-274],[-77,-209],[-44,-502],[71,-299],[20,-274],[171,-277],[137,-29],[30,116],[88,25],[126,104],[90,157],[154,-50],[67,21]],[[34294,51702],[151,-48],[25,120],[-46,118],[28,171],[112,-53],[131,61],[159,-125]],[[34854,51946],[121,-122],[86,160],[62,-25],[38,-166],[133,42],[107,224],[85,436],[164,540]],[[35650,53035],[95,28],[69,-327],[155,-1033],[149,-97],[7,-408],[-208,-487],[86,-178],[491,-92],[10,-593],[211,388],[349,-212],[462,-361],[135,-346],[-45,-327],[323,182],[540,-313],[415,23],[411,-489],[355,-662],[214,-170],[237,-24],[101,-186],[94,-752],[46,-358],[-110,-977],[-142,-385],[-391,-822],[-177,-668],[-206,-513],[-69,-11],[-78,-435],[20,-1107],[-77,-910],[-30,-390],[-88,-233],[-49,-790],[-282,-771],[-47,-610],[-225,-256],[-65,-355],[-302,2],[-437,-227],[-195,-263],[-311,-173],[-327,-470],[-235,-586],[-41,-441],[46,-326],[-51,-597],[-63,-289],[-195,-325],[-308,-1040],[-244,-468],[-189,-277],[-127,-562],[-183,-337]],[[33842,38659],[-4,182],[-259,302],[-258,9],[-484,-172],[-133,-520],[-7,-318],[-110,-708]],[[30669,40193],[175,638],[-119,496],[63,199],[-49,219],[108,295],[6,503],[13,415],[60,200],[-240,951]],[[30452,39739],[-279,340],[-24,242],[-551,593],[-498,646],[-214,365],[-115,488],[46,170],[-236,775],[-274,1090],[-262,1177],[-114,269],[-87,435],[-216,386],[-198,239],[90,264],[-134,563],[86,414],[221,373]],[[27693,48568],[33,-246],[-79,-141],[8,-216],[114,47],[113,-64],[116,-298],[157,243],[53,398],[170,514],[334,233],[303,619],[86,384],[-38,449]],[[29063,50490],[74,56],[184,-280],[89,-279],[129,-152],[163,-620],[207,-74],[153,157],[101,-103],[166,51],[213,-276],[-179,-602],[83,-14],[139,-314]],[[29063,50490],[-119,140],[-137,195],[-79,-94],[-235,82],[-68,255],[-52,-10],[-278,338]],[[28095,51396],[-37,183],[103,44],[-12,296],[65,214],[138,40],[117,371],[106,310],[-102,141],[52,343],[-62,540],[59,155],[-44,500],[-112,315]],[[28366,54848],[36,287],[89,-43],[52,176],[-64,348],[34,86]],[[28513,55702],[143,-18],[209,412],[114,63],[3,195],[51,500],[159,274],[175,11],[22,123],[218,-49],[218,298],[109,132],[134,285],[98,-36],[73,-156],[-54,-199]],[[30185,57537],[-178,-99],[-71,-295],[-107,-169],[-81,-220],[-34,-422],[-77,-345],[144,-40],[35,-271],[62,-130],[21,-238],[-33,-219],[10,-123],[69,-49],[66,-207],[357,57],[161,-75],[196,-508],[112,63],[200,-32],[158,68],[99,-102],[-50,-318],[-62,-199],[-22,-423],[56,-393],[79,-175],[9,-133],[-140,-294],[100,-130],[74,-207],[85,-589]],[[28366,54848],[-93,170],[-59,319],[68,158],[-70,40],[-52,196],[-138,164],[-122,-38],[-56,-205],[-112,-149],[-61,-20],[-27,-123],[132,-321],[-75,-76],[-40,-87],[-130,-30],[-48,353],[-36,-101],[-92,35],[-56,238],[-114,39],[-72,69],[-119,-1],[-8,-128],[-32,89]],[[26954,55439],[14,117],[23,120],[-10,107],[41,70],[-58,88],[-1,238],[107,53]],[[27070,56232],[100,-212],[-6,-126],[111,-26],[26,48],[77,-145],[136,42],[119,150],[168,119],[95,176],[153,-34],[-10,-58],[155,-21],[124,-102],[90,-177],[105,-164]],[[26954,55439],[-151,131],[-56,124],[32,103],[-11,130],[-77,142],[-109,116],[-95,76],[-19,173],[-73,105],[18,-172],[-55,-141],[-64,164],[-89,58],[-38,120],[2,179],[36,187],[-78,83],[64,114]],[[26191,57131],[42,76],[183,-156],[63,77],[89,-50],[46,-121],[82,-40],[66,126]],[[26762,57043],[70,-321],[108,-238],[130,-252]],[[26191,57131],[-96,186],[-130,238],[-61,200],[-117,185],[-140,267],[31,91],[46,-88],[21,41]],[[25745,58251],[86,25],[35,135],[41,5],[-6,290],[65,14],[58,-4],[60,158],[82,-120],[29,74],[51,70],[97,163],[4,121],[27,-5],[36,141],[29,17],[47,-90],[56,-27],[61,76],[70,0],[97,77],[38,81],[95,-12]],[[26903,59440],[-24,-57],[-14,-132],[29,-216],[-64,-202],[-30,-237],[-9,-261],[15,-152],[7,-266],[-43,-58],[-26,-253],[19,-156],[-56,-151],[12,-159],[43,-97]],[[25745,58251],[-48,185],[-84,51]],[[25613,58487],[19,237],[-38,64],[-57,42],[-122,-70],[-10,79],[-84,95],[-60,118],[-82,50]],[[25179,59102],[58,150],[-22,116],[20,113],[131,166],[127,225]],[[25493,59872],[29,-23],[61,104],[79,8],[26,-48],[43,29],[129,-53],[128,15],[90,66],[32,66],[89,-31],[66,-40],[73,14],[55,51],[127,-82],[44,-13],[85,-110],[80,-132],[101,-91],[73,-162]],[[25613,58487],[-31,-139],[-161,9],[-100,57],[-115,117],[-154,37],[-79,127]],[[24973,58695],[9,86],[95,149],[52,66],[-15,69],[65,37]],[[25238,61101],[-2,-468],[-22,-667],[83,0]],[[25297,59966],[90,-107],[24,88],[82,-75]],[[24973,58695],[-142,103],[-174,11],[-127,117],[-149,244]],[[25472,61510],[1,-87],[53,-3],[-5,-160],[-45,-256],[24,-91],[-29,-212],[18,-56],[-32,-299],[-55,-156],[-50,-19],[-55,-205]],[[30185,57537],[-8,-139],[-163,-69],[91,-268],[-3,-309],[-123,-344],[105,-468],[120,38],[62,427],[-86,208],[-14,447],[346,241],[-38,278],[97,186],[100,-415],[195,-9],[180,-330],[11,-195],[249,-6],[297,61],[159,-264],[213,-74],[155,185],[4,149],[344,35],[333,9],[-236,-175],[95,-279],[222,-44],[210,-291],[45,-473],[144,13],[109,-139]],[[33400,55523],[-220,-347],[-24,-215],[95,-220],[-69,-110],[-171,-95],[5,-273],[-75,-163],[188,-448]],[[33400,55523],[183,-217],[171,-385],[8,-304],[105,-14],[149,-289],[109,-205]],[[34125,54109],[-44,-532],[-169,-154],[15,-139],[-51,-305],[123,-429],[89,-1],[37,-333],[169,-514]],[[34125,54109],[333,-119],[30,107],[225,43],[298,-159]],[[35011,53981],[-144,-508],[22,-404],[109,-351],[-49,-254],[-24,-270],[-71,-248]],[[35011,53981],[95,-65],[204,-140],[294,-499],[46,-242]],[[51718,79804],[131,-155],[400,-109],[-140,-404],[-35,-421]],[[52074,78715],[-77,-101],[-126,54],[9,-150],[-203,-332],[-5,-267],[133,92],[95,-259]],[[51900,77752],[-11,-167],[82,-222],[-97,-180],[72,-457],[151,-75],[-32,-256]],[[52065,76395],[-252,-334],[-548,160],[-404,-192],[-32,-355]],[[50829,75674],[-322,-77],[-313,267],[-101,-127],[-511,268],[-111,230]],[[49471,76235],[144,354],[53,1177],[-287,620],[-205,299],[-424,227],[-28,431],[360,129],[466,-152],[-88,669],[263,-254],[646,461],[84,484],[243,119]],[[50698,80799],[40,-207],[129,-10],[129,-237],[194,-279],[143,46],[243,-269]],[[51576,79843],[62,-52],[80,13]],[[52429,75765],[179,226],[47,-507],[-92,-456],[-126,120],[-64,398],[56,219]],[[27693,48568],[148,442],[-60,258],[-106,-275],[-166,259],[56,167],[-47,536],[97,89],[52,368],[105,381],[-20,241],[153,126],[190,236]],[[31588,61519],[142,-52],[50,-118],[-71,-149],[-209,4],[-163,-21],[-16,253],[40,86],[227,-3]],[[28453,61504],[187,-53],[147,-142],[46,-161],[-195,-11],[-84,-99],[-156,95],[-159,215],[34,135],[116,41],[64,-20]],[[27147,64280],[240,-42],[219,-7],[261,-201],[110,-216],[260,66],[98,-138],[235,-366],[173,-267],[92,8],[165,-120],[-20,-167],[205,-24],[210,-242],[-33,-138],[-185,-75],[-187,-29],[-191,46],[-398,-57],[186,329],[-113,154],[-179,39],[-96,171],[-66,336],[-157,-23],[-259,159],[-83,124],[-362,91],[-97,115],[104,148],[-273,30],[-199,-307],[-115,-8],[-40,-144],[-138,-65],[-118,56],[146,183],[60,213],[126,131],[142,116],[210,56],[67,65]],[[58175,37528],[-177,267],[-215,90],[-82,375],[0,208],[-119,64],[-315,649],[-87,342],[-56,105],[-107,473]],[[57017,40101],[311,-65],[90,-68],[94,13],[154,383],[241,486],[100,46],[33,205],[159,235],[210,81]],[[58409,41417],[18,-220],[232,12],[128,-125],[60,-146],[132,-43],[145,-190],[0,-748],[-54,-409],[-12,-442],[45,-175],[-31,-348],[-42,-53],[-74,-426],[-292,-671]],[[55526,35946],[0,1725],[274,20],[8,2105],[207,19],[428,207],[106,-243],[177,231],[85,2],[156,133]],[[56967,40145],[50,-44]],[[54540,33696],[-207,446],[-108,432],[-62,575],[-68,428],[-93,910],[-7,707],[-35,322],[-108,243],[-144,489],[-146,708],[-60,371],[-226,577],[-17,453]],[[53259,40357],[134,113],[166,100],[180,-17],[166,-267],[42,41],[1126,26],[192,-284],[673,-83],[510,241]],[[56448,40227],[228,134],[180,-34],[109,-133],[2,-49]],[[45357,58612],[-115,460],[-138,210],[122,112],[134,415],[66,304]],[[45426,60113],[96,189],[138,-51],[135,129],[155,6],[133,-173],[184,-157],[168,-435],[184,-405]],[[46619,59216],[13,-368],[54,-338],[104,-166],[24,-229],[-13,-184]],[[46801,57931],[-40,-33],[-151,47],[-21,-66],[-61,-13],[-200,144],[-134,6]],[[46194,58016],[-513,25],[-75,-67],[-92,19],[-147,-96]],[[45367,57897],[-46,453]],[[45321,58350],[253,-13],[67,83],[50,5],[103,136],[119,-124],[121,-11],[120,133],[-56,170],[-92,-99],[-86,3],[-110,145],[-88,-9],[-63,-140],[-302,-17]],[[46619,59216],[93,107],[47,348],[88,14],[194,-165],[157,117],[107,-39],[42,131],[1114,9],[62,414],[-48,73],[-134,2550],[-134,2550],[425,10]],[[48632,65335],[937,-1289],[937,-1289],[66,-277],[173,-169],[129,-96],[3,-376],[308,58]],[[51185,61897],[1,-1361],[-152,-394],[-24,-364],[-247,-94],[-379,-51],[-102,-210],[-178,-23]],[[50104,59400],[-178,-3],[-70,114],[-153,-84],[-259,-246],[-53,-184],[-216,-265],[-38,-152],[-116,-120],[-134,79],[-76,-144],[-41,-405],[-221,-490],[7,-200],[-76,-250],[18,-343]],[[48498,56707],[-114,-88],[-65,-74],[-43,253],[-80,-67],[-48,11],[-51,-172],[-215,5],[-77,89],[-36,-54]],[[47769,56610],[-85,170],[15,176],[-35,69],[-59,-58],[11,192],[57,152],[-114,248],[-33,163],[-62,130],[-55,15],[-67,-83],[-90,-79],[-76,-128],[-119,48],[-77,150],[-46,19],[-73,-78],[-44,-1],[-16,216]],[[47587,66766],[1045,-1431]],[[45426,60113],[-24,318],[78,291],[34,557],[-30,583],[-34,294],[28,295],[-72,281],[-146,255]],[[50747,54278],[-229,-69]],[[50518,54209],[-69,407],[13,1357],[-56,122],[-11,290],[-96,207],[-85,174],[35,311]],[[50249,57077],[96,67],[56,258],[136,56],[61,176]],[[50598,57634],[93,173],[100,2],[212,-340]],[[51003,57469],[-11,-197],[62,-350],[-54,-238],[29,-159],[-135,-366],[-86,-181],[-52,-372],[7,-376],[-16,-952]],[[54026,58177],[-78,-34],[-9,-188]],[[53939,57955],[-52,-13],[-188,647],[-65,24],[-217,-331],[-215,173],[-150,34],[-80,-83],[-163,18],[-164,-252],[-141,-14],[-337,305],[-131,-145],[-142,10],[-104,223],[-279,221],[-298,-70],[-72,-128],[-39,-340],[-80,-238],[-19,-527]],[[50598,57634],[6,405],[-320,134],[-9,286],[-156,386],[-37,269],[22,286]],[[51185,61897],[392,263],[804,1161],[952,1126]],[[53333,64447],[439,-255],[156,-324],[197,220]],[[53939,57955],[110,-235],[-31,-107],[-14,-196],[-234,-457],[-74,-377],[-39,-307],[-59,-132],[-56,-414],[-148,-243],[-43,-299],[-63,-238],[-26,-246],[-191,-199],[-156,243],[-105,-10],[-165,-345],[-81,-6],[-132,-570],[-71,-418]],[[52361,53399],[-289,-213],[-105,31],[-107,-132],[-222,13],[-149,370],[-91,427],[-197,389],[-209,-7],[-245,1]],[[54244,54965],[-140,-599],[-67,-107],[-21,-458],[28,-249],[-23,-176],[132,-309],[23,-212],[103,-305],[127,-190],[12,-269],[29,-172]],[[54447,51919],[-20,-319],[-220,140],[-225,156],[-350,23]],[[53632,51919],[-35,32],[-164,-76],[-169,79],[-132,-38]],[[53132,51916],[-452,13]],[[52680,51929],[40,466],[-108,391],[-127,100],[-56,265],[-72,85],[4,163]],[[50518,54209],[-224,-126]],[[50294,54083],[-62,207],[-74,375],[-22,294],[61,532],[-69,215],[-27,466],[1,429],[-116,305],[20,184]],[[50006,57090],[243,-13]],[[50294,54083],[-436,-346],[-154,-203],[-250,-171],[-248,168]],[[49206,53531],[13,233],[-121,509],[73,667],[117,496],[-74,841]],[[49214,56277],[-38,444],[7,336],[482,27],[123,-43],[90,96],[128,-47]],[[48498,56707],[125,-129],[49,-195],[125,-125],[97,149],[130,22],[190,-152]],[[49206,53531],[-126,-7],[-194,116],[-178,-7],[-329,-103],[-193,-170],[-275,-217],[-54,15]],[[47857,53158],[22,487],[26,74],[-8,233],[-118,247],[-88,40],[-81,162],[60,262],[-28,286],[13,172]],[[47655,55121],[44,0],[17,258],[-22,114],[27,82],[103,71],[-69,473],[-64,245],[23,200],[55,46]],[[47655,55121],[-78,15],[-57,-238],[-78,3],[-55,126],[19,237],[-116,362],[-73,-67],[-59,-13]],[[47158,55546],[-77,-34],[3,217],[-44,155],[9,171],[-60,249],[-78,211],[-222,1],[-65,-112],[-76,-13],[-48,-128],[-32,-163],[-148,-260]],[[46320,55840],[-122,349],[-108,232],[-71,76],[-69,118],[-32,261],[-41,130],[-80,97]],[[45797,57103],[123,288],[84,-11],[73,99],[61,1],[44,78],[-24,196],[31,62],[5,200]],[[45797,57103],[-149,247],[-117,39],[-63,166],[1,90],[-84,125],[-18,127]],[[47857,53158],[-73,-5],[-286,282],[-252,449],[-237,324],[-187,381]],[[46822,54589],[66,189],[15,172],[126,320],[129,276]],[[46822,54589],[-75,44],[-200,238],[-144,316],[-49,216],[-34,437]],[[55125,52650],[-178,33],[-188,99],[-166,-313],[-146,-550]],[[56824,55442],[152,-239],[2,-192],[187,-308],[116,-255],[70,-355],[208,-234],[44,-187]],[[53609,47755],[-104,203],[-84,-100],[-112,-255]],[[53309,47603],[-228,626]],[[53081,48229],[212,326],[-105,391],[95,148],[187,73],[23,261],[148,-283],[245,-25],[85,279],[36,393],[-31,461],[-131,350],[120,684],[-69,117],[-207,-48],[-78,305],[21,258]],[[53081,48229],[-285,596],[-184,488],[-169,610],[9,196],[61,189],[67,430],[56,438]],[[52636,51176],[94,35],[404,-6],[-2,711]],[[52636,51176],[-52,90],[96,663]],[[59099,45126],[131,-264],[71,-501],[-47,-160],[-56,-479],[53,-490],[-87,-205],[-85,-549],[147,-153]],[[59226,42325],[-843,-487],[26,-421]],[[56448,40227],[-181,369],[-188,483],[13,1880],[579,-7],[-24,203],[41,222],[-49,277],[32,286],[-29,184]],[[59599,43773],[-77,-449],[77,-768],[97,9],[100,-191],[116,-427],[24,-760],[-120,-124],[-85,-410],[-181,365],[-21,417],[59,274],[-16,237],[-110,149],[-77,-54],[-159,284]],[[61198,44484],[45,-265],[-11,-588],[34,-519],[11,-923],[49,-290],[-83,-422],[-108,-410],[-177,-366],[-254,-225],[-313,-287],[-313,-634],[-107,-108],[-194,-420],[-115,-136],[-23,-421],[132,-448],[54,-346],[4,-177],[49,29],[-8,-579],[-45,-275],[65,-101],[-41,-245],[-116,-211],[-229,-199],[-334,-320],[-122,-219],[24,-248],[71,-40],[-24,-311]],[[58908,34785],[-24,261],[-41,265]],[[53383,47159],[-74,444]],[[53259,40357],[-26,372],[38,519],[96,541],[15,254],[90,532],[66,243],[159,386],[90,263],[29,438],[-15,335],[-83,211],[-74,358],[-68,355],[15,122],[85,235],[-84,570],[-57,396],[-139,374],[26,115]],[[58062,48902],[169,-46],[85,336],[147,-38]],[[59922,69905],[-49,-186]],[[59873,69719],[-100,82],[-58,-394],[69,-66],[-71,-81],[-12,-156],[131,80]],[[59832,69184],[7,-230],[-139,-944]],[[59700,68010],[-27,153],[-155,862]],[[59518,69025],[80,194],[-19,34],[74,276],[56,446],[40,149],[8,6]],[[59757,70130],[93,-1],[25,104],[75,8]],[[59950,70241],[4,-242],[-38,-90],[6,-4]],[[59757,70130],[99,482],[138,416],[5,21]],[[59999,71049],[125,-31],[45,-231],[-151,-223],[-68,-323]],[[63761,43212],[74,-251],[69,-390],[45,-711],[72,-276],[-28,-284],[-49,-174],[-94,347],[-53,-175],[53,-438],[-24,-250],[-77,-137],[-18,-500],[-109,-689],[-137,-814],[-172,-1120],[-106,-821],[-125,-685],[-226,-140],[-243,-250],[-160,151],[-220,211],[-77,312],[-18,524],[-98,471],[-26,425],[50,426],[128,102],[1,197],[133,447],[25,377],[-65,280],[-52,372],[-23,544],[97,331],[38,375],[138,22],[155,121],[103,107],[122,7],[158,337],[229,364],[83,297],[-38,253],[118,-71],[153,410],[6,356],[92,264],[96,-254]],[[59873,69719],[0,-362],[-41,-173]],[[45321,58350],[36,262]],[[52633,68486],[-118,1061],[-171,238],[-3,143],[-227,352],[-24,445],[171,330],[65,487],[-44,563],[57,303]],[[52339,72408],[302,239],[195,-71],[-9,-299],[236,217],[20,-113],[-139,-290],[-2,-273],[96,-147],[-36,-511],[-183,-297],[53,-322],[143,-10],[70,-281],[106,-92]],[[53191,70158],[-16,-454],[-135,-170],[-86,-189],[-191,-228],[30,-244],[-24,-250],[-136,-137]],[[47592,66920],[-2,700],[449,436],[277,90],[227,159],[107,295],[324,234],[12,438],[161,51],[126,219],[363,99],[51,230],[-73,125],[-96,624],[-17,359],[-104,379]],[[49397,71358],[267,323],[300,102],[175,244],[268,180],[471,105],[459,48],[140,-87],[262,232],[297,5],[113,-137],[190,35]],[[52633,68486],[90,-522],[15,-274],[-49,-482],[21,-270],[-36,-323],[24,-371],[-110,-247],[164,-431],[11,-253],[99,-330],[130,109],[219,-275],[122,-370]],[[59922,69905],[309,-234],[544,630]],[[60775,70301],[112,-720]],[[60887,69581],[-53,-89],[-556,-296],[277,-591],[-92,-101],[-46,-197],[-212,-82],[-66,-213],[-120,-182],[-310,94]],[[59709,67924],[-9,86]],[[64327,64904],[49,29],[11,-162],[217,93],[230,-15],[168,-18],[190,400],[207,379],[176,364]],[[65575,65974],[52,-202]],[[65627,65772],[38,-466]],[[65665,65306],[-142,-3],[-23,-384],[50,-82],[-126,-117],[-1,-241],[-81,-245],[-7,-238]],[[65335,63996],[-56,-125],[-835,298],[-106,599],[-11,136]],[[64113,65205],[-18,430],[75,310],[76,64],[84,-185],[5,-346],[-61,-348]],[[64274,65130],[-77,-42],[-84,117]],[[63326,68290],[58,-261],[-25,-135],[89,-445]],[[63448,67449],[-196,-16],[-69,282],[-248,57]],[[62935,67772],[204,567],[187,-49]],[[60775,70301],[615,614],[105,715],[-26,431],[152,146],[142,369]],[[61763,72576],[119,92],[324,-77],[97,-150],[133,100]],[[62436,72541],[180,-705],[182,-177],[21,-345],[-139,-204],[-65,-461],[193,-562],[340,-324],[143,-449],[-46,-428],[89,0],[3,-314],[153,-311]],[[63490,68261],[-164,29]],[[62935,67772],[-516,47],[-784,1188],[-413,414],[-335,160]],[[65665,65306],[125,-404],[155,-214],[203,-78],[165,-107],[125,-339],[75,-196],[100,-75],[-1,-132],[-101,-352],[-44,-166],[-117,-189],[-104,-404],[-126,31],[-58,-141],[-44,-300],[34,-395],[-26,-72],[-128,2],[-174,-221],[-27,-288],[-63,-125],[-173,5],[-109,-149],[1,-238],[-134,-165],[-153,56],[-186,-199],[-128,-34]],[[64752,60417],[-91,413],[-217,975]],[[64444,61805],[833,591],[185,1182],[-127,418]],[[65575,65974],[80,201],[35,-51],[-26,-244],[-37,-108]],[[96448,41190],[175,-339],[-92,-78],[-93,259],[10,158]],[[96330,41322],[-39,163],[-6,453],[133,-182],[45,-476],[-75,74],[-58,-32]],[[78495,57780],[-66,713],[178,492],[359,112],[261,-84]],[[79227,59013],[229,-232],[126,407],[246,-217]],[[79828,58971],[64,-394],[-34,-708],[-467,-455],[122,-358],[-292,-43],[-240,-238]],[[78981,56775],[-233,87],[-112,307],[-141,611]],[[78495,57780],[-249,271],[-238,-11],[41,464],[-245,-3],[-22,-650],[-150,-863],[-90,-522],[19,-428],[181,-18],[113,-539],[50,-512],[155,-338],[168,-69],[144,-306]],[[78372,54256],[-91,-243],[-183,-71],[-22,304],[-227,258],[-48,-105]],[[77801,54399],[-110,227],[-47,292],[-148,334],[-135,280],[-45,-347],[-53,328],[30,369],[82,566]],[[77375,56448],[135,607],[152,551],[-108,539],[4,274],[-32,330],[-185,470],[-66,296],[96,109],[101,514],[-113,390],[-177,431],[-134,519],[117,107],[127,639],[196,26],[162,256],[159,137]],[[77809,62643],[120,-182],[16,-355],[188,-27],[-68,-623],[6,-530],[293,353],[83,-104],[163,17],[56,205],[210,-40],[211,-480],[18,-583],[224,-515],[-12,-500],[-90,-266]],[[77809,62643],[59,218],[237,384]],[[78105,63245],[25,-139],[148,-16],[-42,676],[144,86]],[[78380,63852],[162,-466],[125,-537],[342,-5],[108,-515],[-178,-155],[-80,-212],[333,-353],[231,-699],[175,-520],[210,-411],[70,-418],[-50,-590]],[[77375,56448],[-27,439],[86,452],[-94,350],[23,644],[-113,306],[-90,707],[-50,746],[-121,490],[-183,-297],[-315,-421],[-156,53],[-172,138],[96,732],[-58,554],[-218,681],[34,213],[-163,76],[-197,481]],[[75657,62792],[-18,476],[97,-90],[6,424]],[[75742,63602],[137,140],[-30,251],[63,201],[11,612],[217,-135],[124,487],[14,288],[153,496],[-8,338],[359,408],[199,-107],[-23,364],[97,108],[-20,224]],[[77035,67277],[162,44],[93,-348],[121,-141],[8,-452],[-11,-487],[-263,-493],[-33,-701],[293,98],[66,-544],[176,-115],[-81,-490],[206,-222],[121,-109],[203,172],[9,-244]],[[78380,63852],[149,145],[221,-3],[271,68],[236,315],[134,-222],[254,-108],[-44,-340],[132,-240],[280,-154]],[[80013,63313],[-371,-505],[-231,-558],[-61,-410],[212,-623],[260,-772],[252,-365],[169,-475],[127,-1093],[-37,-1039],[-232,-389],[-318,-381],[-227,-492],[-346,-550],[-101,378],[78,401],[-206,335]],[[86327,75524],[0,0]],[[86327,75524],[-106,36],[-120,-200],[-83,-202],[10,-424],[-143,-130],[-50,-105],[-104,-174],[-185,-97],[-121,-159],[-9,-256],[-32,-65],[111,-96],[157,-259]],[[85652,73393],[-40,-143],[-118,-39],[-197,-29],[-108,-266],[-124,21],[-17,-54]],[[85048,72883],[-135,112],[-34,-111],[-81,-49],[-10,112],[-72,54],[-75,94],[76,260],[66,69],[-25,108],[71,319],[-18,96],[-163,65],[-131,158]],[[84517,74170],[227,379],[306,318],[191,419],[131,-185],[241,-22],[-44,312],[429,254],[111,331],[179,-348]],[[85652,73393],[240,-697],[68,-383],[3,-681],[-105,-325],[-252,-113],[-222,-245],[-250,-51],[-31,322],[51,443],[-122,615],[206,99],[-190,506]],[[82410,80055],[-135,-446],[-197,-590],[72,-241],[157,74],[274,-92],[214,219],[223,-189],[251,-413],[-30,-210],[-219,66],[-404,-78],[-195,-168],[-204,-391],[-423,-229],[-277,-313],[-286,120],[-156,53],[-146,-381],[89,-227],[45,-195],[-194,-199],[-200,-316],[-324,-208],[-417,-22],[-448,-205],[-324,-318],[-123,184],[-336,-1],[-411,359],[-274,88],[-369,-82],[-574,133],[-306,-14],[-163,351],[-127,544],[-171,66],[-336,368],[-374,83],[-330,101],[-100,256],[107,690],[-192,476],[-396,222],[-233,313],[-73,413]],[[75742,63602],[-147,937],[-76,-2],[-46,-377],[-152,306],[86,336],[124,34],[128,500],[-160,101],[-257,-8],[-265,81],[-24,410],[-133,30],[-220,255],[-98,-401],[200,-313],[-173,-220],[-62,-215],[171,-159],[-47,-356],[96,-444],[43,-486]],[[74730,63611],[-39,-216],[-189,7],[-343,-122],[16,-445],[-148,-349],[-400,-398],[-311,-695],[-209,-373],[-276,-387],[-1,-271],[-138,-146],[-251,-212],[-129,-31],[-84,-450],[58,-769],[15,-490],[-118,-561],[-1,-1004],[-144,-29],[-126,-450],[84,-195],[-253,-168],[-93,-401],[-112,-170],[-263,552],[-128,827],[-107,596],[-97,279],[-148,568],[-69,739],[-48,369],[-253,811],[-115,1145],[-83,756],[1,716],[-54,553],[-404,-353],[-196,70],[-362,716],[133,214],[-82,232],[-326,501]],[[68937,64577],[185,395],[612,-2],[-56,507],[-156,300],[-31,455],[-182,265],[306,619],[323,-45],[290,620],[174,599],[270,593],[-4,421],[236,342],[-224,292],[-96,400],[-99,517],[137,255],[421,-144],[310,88],[268,496]],[[71621,71550],[298,-692],[-28,-482],[111,-303],[-9,-301],[-200,79],[78,-651],[273,-374],[386,-413]],[[72530,68413],[-176,-268],[-108,-553],[269,-224],[262,-289],[362,-332],[381,-76],[160,-301],[215,-56],[334,-138],[231,10],[32,234],[-36,375],[21,255]],[[74477,67050],[170,124],[23,-465]],[[74670,66709],[6,-119],[252,-224],[175,92],[234,-39],[227,17],[20,363],[-113,189]],[[75471,66988],[224,74],[252,439],[321,376],[233,-145],[198,249],[130,-367],[-94,-248],[300,-89]],[[75657,62792],[-79,308],[-16,301],[-53,285],[-116,344],[-256,23],[25,-243],[-87,-329],[-118,120],[-41,-108],[-78,65],[-108,53]],[[74670,66709],[184,439],[150,150],[198,-137],[147,-14],[122,-159]],[[72530,68413],[115,141],[223,-182],[280,-385],[157,-84],[93,-284],[216,-117],[225,-259],[314,-136],[324,-57]],[[68937,64577],[-203,150],[-83,424],[-215,450],[-512,-111],[-451,-11],[-391,-83]],[[67082,65396],[105,687],[400,305],[-23,272],[-133,96],[-7,520],[-266,260],[-112,357],[-137,310]],[[66909,68203],[465,-301],[278,88],[166,-75],[56,129],[194,-52],[361,246],[10,503],[154,334],[207,-1],[31,166],[212,77],[103,-55],[108,166],[-15,355],[118,356],[177,150],[-110,390],[265,-18],[76,213],[-12,227],[139,248],[-32,294],[-66,250],[163,258],[298,124],[319,68],[141,109],[162,67]],[[70877,72519],[205,-276],[82,-454],[457,-239]],[[68841,72526],[85,-72],[201,189],[93,-114],[90,271],[166,-12],[43,86],[29,239],[120,205],[150,-134],[-30,-181],[84,-28],[-26,-496],[110,-194],[97,125],[123,58],[173,265],[192,-44],[286,-1]],[[70827,72688],[50,-169]],[[66909,68203],[252,536],[-23,380],[-210,100],[-22,375],[-91,472],[119,323],[-121,87],[76,430],[113,736]],[[67002,71642],[284,-224],[209,79],[58,268],[219,89],[157,180],[55,472],[234,114],[44,211],[131,-158],[84,-19]],[[69725,74357],[-101,-182],[-303,98],[-26,-340],[301,46],[343,-192],[526,89]],[[70465,73876],[70,-546],[91,59],[169,-134],[-10,-230],[42,-337]],[[72294,75601],[-39,-134],[-438,-320],[-99,-234],[-356,-70],[-105,-378],[-294,80],[-192,-116],[-266,-279],[39,-138],[-79,-136]],[[67002,71642],[-24,498],[-207,21],[-318,523],[-221,65],[-308,299],[-197,55],[-122,-110],[-186,17],[-197,-338],[-244,-114]],[[64978,72558],[-52,417],[40,618],[-216,200],[71,405],[-184,34],[61,498],[262,-145],[244,189],[-202,355],[-80,338],[-224,-151],[-28,-433],[-87,383]],[[62436,72541],[-152,473],[55,183],[-87,678],[190,168]],[[62442,74043],[44,-223],[141,-273],[190,-78]],[[62817,73469],[101,17]],[[62918,73486],[327,436],[104,44],[82,-174],[-95,-292],[173,-309],[69,29]],[[63578,73220],[88,-436],[263,-123],[193,-296],[395,-102],[434,156],[27,139]],[[67082,65396],[-523,179],[-303,136],[-313,76],[-118,725],[-133,105],[-214,-106],[-280,-286],[-339,196],[-281,454],[-267,168],[-186,561],[-205,788],[-149,-96],[-177,196],[-104,-231]],[[59999,71049],[-26,452],[68,243]],[[60041,71744],[74,129],[75,130],[15,329],[91,-115],[306,165],[147,-112],[229,2],[320,222],[149,-10],[316,92]],[[62817,73469],[-113,342],[1,91],[-123,-2],[-82,159],[-58,-16]],[[62442,74043],[-109,172],[-207,147],[27,288],[-47,208]],[[62106,74858],[386,92]],[[62492,74950],[57,-155],[106,-103],[-56,-148],[148,-202],[-78,-189],[118,-160],[124,-97],[7,-410]],[[55734,91409],[371,-289],[433,-402],[8,-910],[93,-230]],[[56639,89578],[-478,-167],[-269,-413],[43,-361],[-441,-475],[-537,-509],[-202,-832],[198,-416],[265,-328],[-255,-666],[-289,-138],[-106,-992],[-157,-554],[-337,57],[-158,-468],[-321,-27],[-89,558],[-232,671],[-211,835]],[[58829,81362],[-239,-35],[-85,-129],[-18,-298],[-111,57],[-250,-28],[-73,138],[-104,-103],[-105,86],[-218,12],[-310,141],[-281,47],[-215,-14],[-152,-160],[-133,-23]],[[56535,81053],[-6,263],[-85,274],[166,121],[2,235],[-77,225],[-12,261]],[[56523,82432],[268,-4],[302,223],[64,333],[228,190],[-26,264]],[[57359,83438],[169,100],[298,228]],[[60617,78409],[-222,-48],[-185,-191],[-260,-31],[-239,-220],[14,-317]],[[59287,77741],[-38,64],[-432,149],[-19,221],[-257,-73],[-103,-325],[-215,-437]],[[58223,77340],[-126,101],[-131,-95],[-124,109]],[[57842,77455],[70,64],[49,203],[76,188],[-20,106],[58,47],[27,-81],[164,-18],[74,44],[-52,60],[19,88],[-97,150],[-40,247],[-101,97],[20,200],[-125,159],[-115,22],[-204,184],[-185,-58],[-66,-87]],[[57394,79070],[-118,0],[-69,-139],[-205,-56],[-95,-91],[-129,144],[-178,3],[-172,65],[-120,-127]],[[56308,78869],[-19,159],[-155,161]],[[56134,79189],[55,238],[77,154]],[[56266,79581],[60,-35],[-71,266],[252,491],[138,69],[29,166],[-139,515]],[[56266,79581],[-264,227],[-200,-84],[-131,61],[-165,-127],[-140,210],[-114,-81],[-16,36]],[[55236,79823],[-127,291],[-207,36],[-26,185],[-191,66],[-41,-153],[-151,122],[17,163],[-207,51],[-132,191]],[[54171,80775],[-114,377],[22,204],[-69,316],[-101,210],[77,158],[-64,300]],[[53922,82340],[189,174],[434,273],[350,200],[277,-100],[21,-144],[268,-7]],[[56314,82678],[142,-64],[67,-182]],[[54716,79012],[-21,-241],[-156,-2],[53,-128],[-92,-380]],[[54500,78261],[-53,-100],[-243,-14],[-140,-134],[-229,45]],[[53835,78058],[-398,153],[-62,205],[-274,-102],[-32,-113],[-169,84]],[[52900,78285],[-142,16],[-125,108],[42,145],[-10,104]],[[52665,78658],[83,33],[141,-164],[39,156],[245,-25],[199,106],[133,-18],[87,-121],[26,100],[-40,385],[100,75],[98,272]],[[53776,79457],[206,-190],[157,242],[98,44],[215,-180],[131,30],[128,-111]],[[54711,79292],[-23,-75],[28,-205]],[[56308,78869],[-170,-123],[-131,-401],[-168,-401],[-223,-111]],[[55616,77833],[-173,26],[-213,-155]],[[55230,77704],[-104,-89],[-229,114],[-208,253],[-88,73]],[[54601,78055],[-54,200],[-47,6]],[[54716,79012],[141,-151],[103,-65],[233,73],[22,118],[111,18],[135,92],[30,-38],[130,74],[66,139],[91,36],[297,-180],[59,61]],[[57842,77455],[-50,270],[30,252],[-9,259],[-160,352],[-89,249],[-86,175],[-84,58]],[[58223,77340],[6,-152],[-135,-128],[-84,56],[-78,-713]],[[57932,76403],[-163,62],[-202,215],[-327,-138],[-138,-150],[-408,31],[-213,92],[-108,-43],[-80,243]],[[56293,76715],[-51,103],[65,99],[-69,74],[-87,-133],[-162,172],[-22,244],[-169,139],[-31,188],[-151,232]],[[55907,83187],[-59,497]],[[55848,83684],[318,181],[466,-38],[273,59],[39,-123],[148,-38],[267,-287]],[[55848,83684],[10,445],[136,371],[262,202],[221,-442],[223,12],[53,453]],[[56753,84725],[237,105],[121,-73],[239,-219],[229,-1]],[[56753,84725],[32,349],[-102,-75],[-176,210],[-24,340],[351,164],[350,86],[301,-97],[287,17]],[[54171,80775],[-124,-62],[-73,68],[-70,-113],[-200,-114],[-103,-147],[-202,-129],[49,-176],[30,-249],[141,-142],[157,-254]],[[52665,78658],[-298,181],[-57,-128],[-236,4]],[[51718,79804],[16,259],[-56,133]],[[51678,80196],[32,400]],[[51710,80596],[-47,619],[167,0],[70,222],[69,541],[-51,200]],[[51918,82178],[54,125],[232,32],[52,-130],[188,291],[-63,222],[-13,335]],[[52368,83053],[210,-78],[178,90]],[[52756,83065],[4,-228],[281,-138],[-3,-210],[283,111],[156,162],[313,-233],[132,-189]],[[57932,76403],[-144,-245],[-101,-422],[89,-337]],[[57776,75399],[-239,79],[-283,-186]],[[57254,75292],[-3,-294],[-252,-56],[-196,206],[-222,-162],[-206,17]],[[56375,75003],[-20,391],[-139,189]],[[56216,75583],[46,84],[-30,70],[47,188],[105,185],[-135,255],[-24,216],[68,134]],[[57302,71436],[-35,-175],[-400,-50],[3,98],[-339,115],[52,251],[152,-199],[216,34],[207,-42],[-7,-103],[151,71]],[[57254,75292],[135,-157],[-86,-369],[-66,-67]],[[57237,74699],[-169,17],[-145,56],[-336,-154],[192,-332],[-141,-96],[-154,-1],[-147,305],[-52,-130],[62,-353],[139,-277],[-105,-129],[155,-273],[137,-171],[4,-334],[-257,157],[82,-302],[-176,-62],[105,-521],[-184,-8],[-228,257],[-104,473],[-49,393],[-108,272],[-143,337],[-18,168]],[[55597,73991],[129,287],[16,192],[91,85],[5,155]],[[55838,74710],[182,53],[106,129],[150,-12],[46,103],[53,20]],[[60041,71744],[-102,268],[105,222],[-169,-51],[-233,136],[-191,-340],[-421,-66],[-225,317],[-300,20],[-64,-245],[-192,-70],[-268,314],[-303,-11],[-165,588],[-203,328],[135,459],[-176,283],[308,565],[428,23],[117,449],[529,-78],[334,383],[324,167],[459,13],[485,-417],[399,-228],[323,91],[239,-53],[328,309]],[[61542,75120],[296,28],[268,-290]],[[57776,75399],[33,-228],[243,-190],[-51,-145],[-330,-33],[-118,-182],[-232,-319],[-87,276],[3,121]],[[55597,73991],[-48,41],[-5,130],[-154,199],[-24,281],[23,403],[38,184],[-47,93]],[[55380,75322],[-18,188],[120,291],[18,-111],[75,52]],[[55575,75742],[59,-159],[66,-60],[19,-214]],[[55719,75309],[-35,-201],[39,-254],[115,-144]],[[55230,77704],[67,-229],[89,-169],[-107,-222]],[[55279,77084],[-126,131],[-192,-8],[-239,98],[-130,-13],[-60,-123],[-99,136],[-59,-245],[136,-277],[61,-183],[127,-221],[106,-130],[105,-247],[246,-224]],[[55155,75778],[-31,-100]],[[55124,75678],[-261,218],[-161,213],[-254,176],[-233,434],[56,45],[-127,248],[-5,200],[-179,93],[-85,-255],[-82,198],[6,205],[10,9]],[[53809,77462],[194,-20],[51,100],[94,-97],[109,-11],[-1,165],[97,60],[27,239],[221,157]],[[52900,78285],[-22,-242],[-122,-100],[-206,75],[-60,-239],[-132,-19],[-48,94],[-156,-200],[-134,-28],[-120,126]],[[51576,79843],[30,331],[72,22]],[[50698,80799],[222,117]],[[50920,80916],[204,-47],[257,123],[176,-258],[153,-138]],[[50920,80916],[143,162],[244,869],[380,248],[231,-17]],[[47490,75324],[101,150],[113,86],[70,-289],[164,0],[47,75],[162,-21],[78,-296],[-129,-160],[-3,-461],[-45,-86],[-11,-280],[-120,-48],[111,-355],[-77,-388],[96,-175],[-38,-161],[-103,-222],[23,-195]],[[47929,72498],[-112,-153],[-146,83],[-143,-65],[42,462],[-26,363],[-124,55],[-67,224],[22,386],[111,215],[20,239],[58,355],[-6,250],[-56,212],[-12,200]],[[47490,75324],[14,420],[-114,257],[393,426],[340,-106],[373,3],[296,-101],[230,31],[449,-19]],[[50829,75674],[15,-344],[-263,-393],[-356,-125],[-25,-199],[-171,-327],[-107,-481],[108,-338],[-160,-263],[-60,-384],[-210,-118],[-197,-454],[-352,-9],[-265,11],[-174,-209],[-106,-223],[-136,49],[-103,199],[-79,340],[-259,92]],[[48278,82406],[46,-422],[-210,-528],[-493,-349],[-393,89],[225,617],[-145,601],[378,463],[210,276]],[[47896,83153],[57,-317],[-57,-317],[172,9],[210,-122]],[[96049,38125],[228,-366],[144,-272],[-105,-142],[-153,160],[-199,266],[-179,313],[-184,416],[-38,201],[119,-9],[156,-201],[122,-200],[89,-166]],[[95032,44386],[78,-203],[-194,4],[-106,363],[166,-142],[56,-22]],[[94910,44908],[-42,-109],[-206,512],[-57,353],[94,0],[100,-473],[111,-283]],[[94680,44747],[-108,-14],[-170,60],[-58,91],[17,235],[183,-93],[91,-124],[45,-155]],[[94344,45841],[65,-187],[12,-119],[-218,251],[-152,212],[-104,197],[41,60],[128,-142],[228,-272]],[[93649,46431],[111,-193],[-56,-33],[-121,134],[-114,243],[14,99],[166,-250]],[[99134,26908],[-105,-319],[-138,-404],[-214,-236],[-48,155],[-116,85],[160,486],[-91,326],[-299,236],[8,214],[201,206],[47,455],[-13,382],[-113,396],[8,104],[-133,244],[-218,523],[-117,418],[104,46],[151,-328],[216,-153],[78,-526],[202,-622],[5,403],[126,-161],[41,-447],[224,-192],[188,-48],[158,226],[141,-69],[-67,-524],[-85,-345],[-212,12],[-74,-179],[26,-254],[-41,-110]],[[97129,24846],[238,310],[167,306],[123,441],[106,149],[41,330],[195,273],[61,-251],[63,-244],[198,239],[80,-249],[0,-249],[-103,-274],[-182,-435],[-142,-238],[103,-284],[-214,-7],[-238,-223],[-75,-387],[-157,-597],[-219,-264],[-138,-169],[-256,13],[-180,194],[-302,42],[-46,217],[149,438],[349,583],[179,111],[200,225]],[[91024,26469],[166,-39],[20,-702],[-95,-203],[-29,-476],[-97,162],[-193,-412],[-57,32],[-171,19],[-171,505],[-38,390],[-160,515],[7,271],[181,-52],[269,-204],[151,81],[217,113]],[[85040,31546],[-294,-303],[-241,-137],[-53,-309],[-103,-240],[-236,-15],[-174,-52],[-246,107],[-199,-64],[-191,-27],[-165,-315],[-81,26],[-140,-167],[-133,-187],[-203,23],[-186,0],[-295,377],[-149,113],[6,338],[138,81],[47,134],[-10,212],[34,411],[-31,350],[-147,598],[-45,337],[12,336],[-111,385],[-7,174],[-123,235],[-35,463],[-158,467],[-39,252],[122,-255],[-93,548],[137,-171],[83,-229],[-5,303],[-138,465],[-26,186],[-65,177],[31,341],[56,146],[38,295],[-29,346],[114,425],[21,-450],[118,406],[225,198],[136,252],[212,217],[126,46],[77,-73],[219,220],[168,66],[42,129],[74,54],[153,-14],[292,173],[151,262],[71,316],[163,300],[13,236],[7,321],[194,502],[117,-510],[119,118],[-99,279],[87,287],[122,-128],[34,449],[152,291],[67,233],[140,101],[4,165],[122,-69],[5,148],[122,85],[134,80],[205,-271],[155,-350],[173,-4],[177,-56],[-59,325],[133,473],[126,155],[-44,147],[121,338],[168,208],[142,-70],[234,111],[-5,302],[-204,195],[148,86],[184,-147],[148,-242],[234,-151],[79,60],[172,-182],[162,169],[105,-51],[65,113],[127,-292],[-74,-316],[-105,-239],[-96,-20],[32,-236],[-81,-295],[-99,-291],[20,-166],[221,-327],[214,-189],[143,-204],[201,-350],[78,1],[145,-151],[43,-183],[265,-200],[183,202],[55,317],[56,262],[34,324],[85,470],[-39,286],[20,171],[-32,339],[37,445],[53,120],[-43,197],[67,313],[52,325],[7,168],[104,222],[78,-289],[19,-371],[70,-71],[11,-249],[101,-300],[21,-335],[-10,-214],[100,-464],[179,223],[92,-250],[133,-231],[-29,-262],[60,-506],[42,-295],[70,-72],[75,-505],[-27,-307],[90,-400],[301,-309],[197,-281],[186,-257],[-37,-143],[159,-371],[108,-639],[111,130],[113,-256],[68,91],[48,-626],[197,-363],[129,-226],[217,-478],[78,-475],[7,-337],[-19,-365],[132,-502],[-16,-523],[-48,-274],[-75,-527],[6,-339],[-55,-423],[-123,-538],[-205,-290],[-102,-458],[-93,-292],[-82,-510],[-107,-294],[-70,-442],[-36,-407],[14,-187],[-159,-205],[-311,-22],[-257,-242],[-127,-229],[-168,-254],[-230,262],[-170,104],[43,308],[-152,-112],[-243,-428],[-240,160],[-158,94],[-159,42],[-269,171],[-179,364],[-52,449],[-64,298],[-137,240],[-267,71],[91,287],[-67,438],[-136,-408],[-247,-109],[146,327],[42,341],[107,289],[-22,438],[-226,-504],[-174,-202],[-106,-470],[-217,243],[9,313],[-174,429],[-147,221],[52,137],[-356,358],[-195,17],[-267,287],[-498,-56],[-359,-211],[-317,-197],[-265,39]],[[72718,55024],[-42,-615],[-116,-168],[-242,-135],[-132,470],[-49,849],[126,959],[192,-328],[129,-416],[134,-616]],[[80409,61331],[-228,183],[-8,509],[137,267],[304,166],[159,-14],[62,-226],[-122,-260],[-64,-341],[-240,-284]],[[84517,74170],[-388,-171],[-204,-277],[-300,-161],[148,274],[-58,230],[220,397],[-147,310],[-242,-209],[-314,-411],[-171,-381],[-272,-29],[-142,-275],[147,-400],[227,-97],[9,-265],[220,-173],[311,422],[247,-230],[179,-15],[45,-310],[-393,-165],[-130,-319],[-270,-296],[-142,-414],[299,-325],[109,-581],[169,-541],[189,-454],[-5,-439],[-174,-161],[66,-315],[164,-184],[-43,-481],[-71,-468],[-155,-53],[-203,-640],[-225,-775],[-258,-705],[-382,-545],[-386,-498],[-313,-68],[-170,-262],[-96,192],[-157,-294],[-388,-296],[-294,-90],[-95,-624],[-154,-35],[-73,429],[66,228],[-373,189],[-131,-96]],[[83826,64992],[-167,-947],[-119,-485],[-146,499],[-32,438],[163,581],[223,447],[127,-176],[-49,-357]],[[53835,78058],[-31,-291],[67,-251]],[[53871,77516],[-221,86],[-226,-210],[15,-293],[-34,-168],[91,-301],[261,-298],[140,-488],[309,-476],[217,3],[68,-130],[-78,-118],[249,-214],[204,-178],[238,-308],[29,-111],[-52,-211],[-154,276],[-242,97],[-116,-382],[200,-219],[-33,-309],[-116,-35],[-148,-506],[-116,-46],[1,181],[57,317],[60,126],[-108,342],[-85,298],[-115,74],[-82,255],[-179,107],[-120,238],[-206,38],[-217,267],[-254,384],[-189,340],[-86,585],[-138,68],[-226,195],[-128,-80],[-161,-274],[-115,-43]],[[54100,73116],[211,51],[-100,-465],[41,-183],[-58,-303],[-213,222],[-141,64],[-387,300],[38,304],[325,-54],[284,64]],[[52419,74744],[139,183],[166,-419],[-39,-782],[-126,38],[-113,-197],[-105,156],[-11,713],[-64,338],[153,-30]],[[52368,83053],[-113,328],[-8,604],[46,159],[80,177],[244,37],[98,163],[223,167],[-9,-304],[-82,-192],[33,-166],[151,-89],[-68,-223],[-83,64],[-200,-425],[76,-288]],[[53436,83731],[88,-296],[-166,-478],[-291,333],[-39,246],[408,195]],[[47896,83153],[233,24],[298,-365],[-149,-406]],[[49140,82132],[1,0],[40,343],[-186,364],[-4,8],[-337,104],[-66,160],[101,264],[-92,163],[-149,-279],[-17,569],[-140,301],[101,611],[216,480],[222,-47],[335,49],[-297,-639],[283,81],[304,-3],[-72,-481],[-250,-530],[287,-38],[22,-62],[248,-697],[190,-95],[171,-673],[79,-233],[337,-113],[-34,-378],[-142,-173],[111,-305],[-250,-310],[-371,6],[-473,-163],[-130,116],[-183,-276],[-257,67],[-195,-226],[-148,118],[407,621],[249,127],[-2,1],[-434,98],[-79,235],[291,183],[-152,319],[52,387],[413,-54]],[[45969,89843],[-64,-382],[314,-403],[-361,-451],[-801,-405],[-240,-107],[-365,87],[-775,187],[273,261],[-605,289],[492,114],[-12,174],[-583,137],[188,385],[421,87],[433,-400],[422,321],[349,-167],[453,315],[461,-42]],[[63495,75281],[146,-311],[141,-419],[130,-28],[85,-159],[-228,-47],[-49,-459],[-48,-207],[-101,-138],[7,-293]],[[62492,74950],[68,96],[207,-169],[149,-36],[38,70],[-136,319],[72,82]],[[61542,75120],[42,252],[-70,403],[-160,218],[-154,68],[-102,181]],[[83564,58086],[-142,450],[238,-22],[97,-213],[-74,-510],[-119,295]],[[84051,56477],[70,165],[30,367],[153,35],[-44,-398],[205,570],[-26,-563],[-100,-195],[-87,-373],[-87,-175],[-171,409],[57,158]],[[85104,55551],[28,-392],[16,-332],[-94,-540],[-102,602],[-130,-300],[89,-435],[-79,-277],[-327,343],[-78,428],[84,280],[-176,280],[-87,-245],[-131,23],[-205,-330],[-46,173],[109,498],[175,166],[151,223],[98,-268],[212,162],[45,264],[196,15],[-16,457],[225,-280],[23,-297],[20,-218]],[[82917,56084],[-369,-561],[136,414],[200,364],[167,409],[146,587],[49,-482],[-183,-325],[-146,-406]],[[83982,61347],[-46,-245],[95,-423],[-73,-491],[-164,-196],[-43,-476],[62,-471],[147,-65],[123,70],[347,-328],[-27,-321],[91,-142],[-29,-272],[-216,290],[-103,310],[-71,-217],[-177,354],[-253,-87],[-138,130],[14,244],[87,151],[-83,136],[-36,-213],[-137,340],[-41,257],[-11,566],[112,-195],[29,925],[90,535],[169,-1],[171,-168],[85,153],[26,-150]],[[83899,57324],[-43,282],[166,-183],[177,1],[-5,-247],[-129,-251],[-176,-178],[-10,275],[20,301]],[[84861,57766],[78,-660],[-214,157],[5,-199],[68,-364],[-132,-133],[-11,416],[-84,31],[-43,357],[163,-47],[-4,224],[-169,451],[266,-13],[77,-220]],[[78372,54256],[64,-56],[164,-356],[116,-396],[16,-398],[-29,-269],[27,-203],[20,-349],[98,-163],[109,-523],[-5,-199],[-197,-40],[-263,438],[-329,469],[-32,301],[-161,395],[-38,489],[-100,322],[30,431],[-61,250]],[[80461,51765],[204,-202],[214,110],[56,500],[119,112],[333,128],[199,467],[137,374]],[[81723,53254],[126,-307],[58,202],[133,-19],[16,377],[13,291]],[[82069,53798],[214,411],[140,462],[112,2],[143,-299],[13,-257],[183,-165],[231,-177],[-20,-232],[-186,-29],[50,-289],[-205,-201]],[[81723,53254],[110,221],[236,323]],[[53809,77462],[62,54]],[[57797,86326],[-504,-47],[-489,-216],[-452,-125],[-161,323],[-269,193],[62,582],[-135,533],[133,345],[252,371],[635,640],[185,124],[-28,250],[-387,279]],[[54711,79292],[39,130],[123,-10],[95,61],[7,55],[54,28],[18,134],[64,26],[43,106],[82,1]],[[60669,61213],[161,-684],[77,-542],[152,-288],[379,-558],[154,-336],[151,-341],[87,-203],[136,-178]],[[61966,58083],[-83,-144],[-119,51]],[[61764,57990],[-95,191],[-114,346],[-124,190],[-71,204],[-242,237],[-191,7],[-67,124],[-163,-139],[-168,268],[-87,-441],[-323,124]],[[89411,73729],[-256,-595],[4,-610],[-104,-472],[48,-296],[-145,-416],[-355,-278],[-488,-36],[-396,-675],[-186,227],[-12,442],[-483,-130],[-329,-279],[-325,-11],[282,-435],[-186,-1004],[-179,-248],[-135,229],[69,533],[-176,172],[-113,405],[263,182],[145,371],[280,306],[203,403],[553,177],[297,-121],[291,1050],[185,-282],[408,591],[158,229],[174,723],[-47,664],[117,374],[295,108],[152,-819],[-9,-479]],[[90169,76553],[197,250],[62,-663],[-412,-162],[-244,-587],[-436,404],[-152,-646],[-308,-9],[-39,587],[138,455],[296,33],[81,817],[83,460],[326,-615],[213,-198],[195,-126]],[[86769,70351],[154,352],[158,-68],[114,248],[204,-127],[35,-203],[-156,-357],[-114,189],[-143,-137],[-73,-346],[-181,168],[2,281]],[[64752,60417],[-201,-158],[-54,-263],[-6,-201],[-277,-249],[-444,-276],[-249,-417],[-122,-33],[-83,35],[-163,-245],[-177,-114],[-233,-30],[-70,-34],[-61,-156],[-73,-43],[-43,-150],[-137,13],[-89,-80],[-192,30],[-72,345],[8,323],[-46,174],[-54,437],[-80,243],[56,29],[-29,270],[34,114],[-12,257]],[[61883,60238],[121,189],[-28,249],[74,290],[114,-153],[75,53],[321,14],[50,-59],[269,-60],[106,30],[70,-197],[130,99],[199,620],[259,266],[801,226]],[[63448,67449],[109,-510],[137,-135],[47,-207],[190,-249],[16,-243],[-27,-197],[35,-199],[80,-165],[37,-194],[41,-145]],[[64274,65130],[53,-226]],[[61883,60238],[-37,252],[-83,178],[-22,236],[-143,212],[-148,495],[-79,482],[-192,406],[-124,97],[-184,563],[-32,411],[12,350],[-159,655],[-130,231],[-150,122],[-92,339],[15,133],[-77,306],[-81,132],[-108,440],[-170,476],[-141,406],[-139,-3],[44,325],[12,206],[34,236]],[[36483,4468],[141,0],[414,127],[419,-127],[342,-255],[120,-359],[33,-254],[11,-301],[-430,-186],[-452,-150],[-522,-139],[-582,-116],[-658,35],[-365,197],[49,243],[593,162],[239,197],[174,254],[126,220],[168,209],[180,243]],[[31586,3163],[625,-23],[599,-58],[207,243],[147,208],[288,-243],[-82,-301],[-81,-266],[-582,81],[-621,-35],[-348,197],[0,23],[-152,174]],[[29468,8472],[190,70],[321,-23],[82,301],[16,219],[-6,475],[158,278],[256,93],[147,-220],[65,-220],[120,-267],[92,-254],[76,-267],[33,-266],[-49,-231],[-76,-220],[-326,-81],[-311,-116],[-364,11],[136,232],[-327,-81],[-310,-81],[-212,174],[-16,243],[305,231]],[[21575,8103],[174,104],[353,-81],[403,-46],[305,-81],[304,69],[163,-335],[-217,46],[-337,-23],[-343,23],[-376,-35],[-283,116],[-146,243]],[[15938,7061],[60,197],[332,-104],[359,-93],[332,104],[-158,-208],[-261,-151],[-386,47],[-278,208]],[[14643,7177],[202,127],[277,-139],[425,-231],[-164,23],[-359,58],[-381,162]],[[4524,4144],[169,220],[517,-93],[277,-185],[212,-209],[76,-266],[-533,-81],[-364,208],[-163,209],[-11,35],[-180,162]],[[0,529],[16,-5],[245,344],[501,-185],[32,21],[294,188],[38,-7],[32,-4],[402,-246],[352,246],[63,34],[816,104],[265,-138],[130,-71],[419,-196],[789,-151],[625,-185],[1072,-139],[800,162],[1181,-116],[669,-185],[734,174],[773,162],[60,278],[-1094,23],[-898,139],[-234,231],[-745,128],[49,266],[103,243],[104,220],[-55,243],[-462,162],[-212,209],[-430,185],[675,-35],[642,93],[402,-197],[495,173],[457,220],[223,197],[-98,243],[-359,162],[-408,174],[-571,35],[-500,81],[-539,58],[-180,220],[-359,185],[-217,208],[-87,672],[136,-58],[250,-185],[457,58],[441,81],[228,-255],[441,58],[370,127],[348,162],[315,197],[419,58],[-11,220],[-97,220],[81,208],[359,104],[163,-196],[425,115],[321,151],[397,12],[375,57],[376,139],[299,128],[337,127],[218,-35],[190,-46],[414,81],[370,-104],[381,11],[364,81],[375,-57],[414,-58],[386,23],[403,-12],[413,-11],[381,23],[283,174],[337,92],[349,-127],[331,104],[300,208],[179,-185],[98,-208],[180,-197],[288,174],[332,-220],[375,-70],[321,-162],[392,35],[354,104],[418,-23],[376,-81],[381,-104],[147,254],[-180,197],[-136,209],[-359,46],[-158,220],[-60,220],[-98,440],[213,-81],[364,-35],[359,35],[327,-93],[283,-174],[119,-208],[376,-35],[359,81],[381,116],[342,70],[283,-139],[370,46],[239,451],[224,-266],[321,-104],[348,58],[228,-232],[365,-23],[337,-69],[332,-128],[218,220],[108,209],[278,-232],[381,58],[283,-127],[190,-197],[370,58],[288,127],[283,151],[337,81],[392,69],[354,81],[272,127],[163,186],[65,254],[-32,244],[-87,231],[-98,232],[-87,231],[-71,209],[-16,231],[27,232],[130,220],[109,243],[44,231],[-55,255],[-32,232],[136,266],[152,173],[180,220],[190,186],[223,173],[109,255],[152,162],[174,151],[267,34],[174,186],[196,115],[228,70],[202,150],[157,186],[218,69],[163,-151],[-103,-196],[-283,-174],[-120,-127],[-206,92],[-229,-58],[-190,-139],[-202,-150],[-136,-174],[-38,-231],[17,-220],[130,-197],[-190,-139],[-261,-46],[-153,-197],[-163,-185],[-174,-255],[-44,-220],[98,-243],[147,-185],[229,-139],[212,-185],[114,-232],[60,-220],[82,-232],[130,-196],[82,-220],[38,-544],[81,-220],[22,-232],[87,-231],[-38,-313],[-152,-243],[-163,-197],[-370,-81],[-125,-208],[-169,-197],[-419,-220],[-370,-93],[-348,-127],[-376,-128],[-223,-243],[-446,-23],[-489,23],[-441,-46],[-468,0],[87,-232],[424,-104],[311,-162],[174,-208],[-310,-185],[-479,58],[-397,-151],[-17,-243],[-11,-232],[327,-196],[60,-220],[353,-220],[588,-93],[500,-162],[398,-185],[506,-186],[690,-92],[681,-162],[473,-174],[517,-197],[272,-278],[136,-220],[337,209],[457,173],[484,186],[577,150],[495,162],[691,12],[680,-81],[560,-139],[180,255],[386,173],[702,12],[550,127],[522,128],[577,81],[614,104],[430,150],[-196,209],[-119,208],[0,220],[-539,-23],[-571,-93],[-544,0],[-77,220],[39,440],[125,128],[397,138],[468,139],[337,174],[337,174],[251,231],[380,104],[376,81],[190,47],[430,23],[408,81],[343,116],[337,139],[305,139],[386,185],[245,197],[261,173],[82,232],[-294,139],[98,243],[185,185],[288,116],[305,139],[283,185],[217,232],[136,277],[202,163],[331,-35],[136,-197],[332,-23],[11,220],[142,231],[299,-58],[71,-220],[331,-34],[360,104],[348,69],[315,-34],[120,-243],[305,196],[283,105],[315,81],[310,81],[283,139],[310,92],[240,128],[168,208],[207,-151],[288,81],[202,-277],[157,-209],[316,116],[125,232],[283,162],[365,-35],[108,-220],[229,220],[299,69],[326,23],[294,-11],[310,-70],[300,-34],[130,-197],[180,-174],[304,104],[327,24],[315,0],[310,11],[278,81],[294,70],[245,162],[261,104],[283,58],[212,162],[152,324],[158,197],[288,-93],[109,-208],[239,-139],[289,46],[196,-208],[206,-151],[283,139],[98,255],[250,104],[289,197],[272,81],[326,116],[218,127],[228,139],[218,127],[261,-69],[250,208],[180,162],[261,-11],[229,139],[54,208],[234,162],[228,116],[278,93],[256,46],[244,-35],[262,-58],[223,-162],[27,-254],[245,-197],[168,-162],[332,-70],[185,-162],[229,-162],[266,-35],[223,116],[240,243],[261,-127],[272,-70],[261,-69],[272,-46],[277,0],[229,-614],[-11,-150],[-33,-267],[-266,-150],[-218,-220],[38,-232],[310,12],[-38,-232],[-141,-220],[-131,-243],[212,-185],[321,-58],[321,104],[153,232],[92,220],[153,185],[174,174],[70,208],[147,289],[174,58],[316,24],[277,69],[283,93],[136,231],[82,220],[190,220],[272,151],[234,115],[153,197],[157,104],[202,93],[277,-58],[250,58],[272,69],[305,-34],[201,162],[142,393],[103,-162],[131,-278],[234,-115],[266,-47],[267,70],[283,-46],[261,-12],[174,58],[234,-35],[212,-127],[250,81],[300,0],[255,81],[289,-81],[185,197],[141,196],[191,163],[348,439],[179,-81],[212,-162],[185,-208],[354,-359],[272,-12],[256,0],[299,70],[299,81],[229,162],[190,174],[310,23],[207,127],[218,-116],[141,-185],[196,-185],[305,23],[190,-150],[332,-151],[348,-58],[288,47],[218,185],[185,185],[250,46],[251,-81],[288,-58],[261,93],[250,0],[245,-58],[256,-58],[250,104],[299,93],[283,23],[316,0],[255,58],[251,46],[76,290],[11,243],[174,-162],[49,-266],[92,-244],[115,-196],[234,-105],[315,35],[365,12],[250,35],[364,0],[262,11],[364,-23],[310,-46],[196,-186],[-54,-220],[179,-173],[299,-139],[310,-151],[360,-104],[375,-92],[283,-93],[315,-12],[180,197],[245,-162],[212,-185],[245,-139],[337,-58],[321,-69],[136,-232],[316,-139],[212,-208],[310,-93],[321,12],[299,-35],[332,12],[332,-47],[310,-81],[288,-139],[289,-116],[195,-173],[-32,-232],[-147,-208],[-125,-266],[-98,-209],[-131,-243],[-364,-93],[-163,-208],[-360,-127],[-125,-232],[-190,-220],[-201,-185],[-115,-243],[-70,-220],[-28,-266],[6,-220],[158,-232],[60,-220],[130,-208],[517,-81],[109,-255],[-501,-93],[-424,-127],[-528,-23],[-234,-336],[-49,-278],[-119,-220],[-147,-220],[370,-196],[141,-244],[239,-219],[338,-197],[386,-186],[419,-185],[636,-185],[142,-289],[800,-128],[53,-45],[208,-175],[767,151],[636,-186],[479,-142],[-99999,0]],[[59092,71341],[19,3],[40,143],[200,-8],[253,176],[-188,-251],[21,-111]],[[59437,71293],[-30,21],[-53,-45],[-42,12],[-14,-22],[-5,59],[-20,37],[-54,6],[-75,-51],[-52,31]],[[59437,71293],[8,-48],[-285,-240],[-136,77],[-64,237],[132,22]],[[45272,63236],[13,274],[106,161],[91,308],[-18,200],[96,417],[155,376],[93,95],[74,344],[6,315],[100,365],[185,216],[177,603],[5,8],[139,227],[259,65],[218,404],[140,158],[232,493],[-70,735],[106,508],[37,312],[179,399],[278,270],[206,244],[186,612],[87,362],[205,-2],[167,-251],[264,41],[288,-131],[121,-6]],[[56944,63578],[0,2175],[0,2101],[-83,476],[71,365],[-43,253],[101,283]],[[56990,69231],[369,10],[268,-156],[275,-175],[129,-92],[214,188],[114,169],[245,49],[198,-75],[75,-293],[65,193],[222,-140],[217,-33],[137,149]],[[59700,68010],[-78,-238],[-60,-446],[-75,-308],[-65,-103],[-93,191],[-125,263],[-198,847],[-29,-53],[115,-624],[171,-594],[210,-920],[102,-321],[90,-334],[249,-654],[-55,-103],[9,-384],[323,-530],[49,-121]],[[53191,70158],[326,-204],[117,51],[232,-98],[368,-264],[130,-526],[250,-114],[391,-248],[296,-293],[136,153],[133,272],[-65,452],[87,288],[200,277],[192,80],[375,-121],[95,-264],[104,-2],[88,-101],[276,-70],[68,-195]],[[59804,53833],[-164,643],[-127,137],[-48,236],[-141,288],[-171,42],[95,337],[147,14],[42,181]],[[61764,57990],[-98,-261],[-94,-277],[22,-163],[4,-180],[155,-10],[67,42],[62,-106]],[[61882,57035],[-61,-209],[103,-325],[102,-285],[106,-210],[909,-702],[233,4]],[[61966,58083],[66,-183],[-9,-245],[-158,-142],[119,-161]],[[61984,57352],[-102,-317]],[[61984,57352],[91,-109],[54,-245],[125,-247],[138,-2],[262,151],[302,70],[245,184],[138,39],[99,108],[158,20]],[[58449,49909],[-166,-182],[-67,60]],[[58564,52653],[115,161],[176,-132],[224,138],[195,-1],[171,272]],[[55279,77084],[100,2],[-69,-260],[134,-227],[-41,-278],[-65,-27]],[[55338,76294],[-52,-53],[-90,-138],[-41,-325]],[[55719,75309],[35,-5],[13,121],[164,91],[62,23]],[[55993,75539],[95,35],[128,9]],[[55993,75539],[-9,44],[33,71],[31,144],[-39,-4],[-54,110],[-46,28],[-36,94],[-52,36],[-40,84],[-50,-33],[-38,-196],[-66,-43]],[[55627,75874],[22,51],[-106,123],[-91,63],[-40,82],[-74,101]],[[55380,75322],[-58,46],[-78,192],[-120,118]],[[55627,75874],[-52,-132]],[[32866,56937],[160,77],[58,-21],[-11,-440],[-232,-65],[-50,53],[81,163],[-6,233]]],"bbox":[-180,-85.60903777459771,180,83.64513000000001],"transform":{"scale":[0.0036000360003600037,0.0016925586033320105],"translate":[-180,-85.60903777459771]}} diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/index.ts b/frontend/src/pages/secret-manager/InsightsPage/components/index.ts new file mode 100644 index 00000000000..d062302f056 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/index.ts @@ -0,0 +1,8 @@ +export { AuthMethodChart } from "./AuthMethodChart"; +export { CalendarCard } from "./CalendarCard"; +export { CalendarGrid } from "./CalendarGrid"; +export { CalendarLegend } from "./CalendarLegend"; +export { InsightsSummaryCards } from "./InsightsSummaryCards"; +export { SecretAccessChart } from "./SecretAccessChart"; +export type { CalendarEvent } from "./types"; +export { WorldMap } from "./WorldMap"; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/types.ts b/frontend/src/pages/secret-manager/InsightsPage/components/types.ts new file mode 100644 index 00000000000..d3974d55a0a --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/types.ts @@ -0,0 +1,5 @@ +import { TCalendarReminder, TCalendarRotation } from "@app/hooks/api/secretInsights/types"; + +export type CalendarEvent = + | { type: "rotation"; data: TCalendarRotation } + | { type: "reminder"; data: TCalendarReminder }; diff --git a/frontend/src/pages/secret-manager/InsightsPage/route.tsx b/frontend/src/pages/secret-manager/InsightsPage/route.tsx new file mode 100644 index 00000000000..3a492982903 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/route.tsx @@ -0,0 +1,19 @@ +import { createFileRoute } from "@tanstack/react-router"; + +import { InsightsPage } from "./InsightsPage"; + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights" +)({ + component: InsightsPage, + beforeLoad: ({ context }) => { + return { + breadcrumbs: [ + ...context.breadcrumbs, + { + label: "Insights" + } + ] + }; + } +}); diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index 948a8f60127..e7574aea931 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -110,6 +110,7 @@ import { Route as secretScanningSecretScanningFindingsPageRouteImport } from './ import { Route as secretManagerSettingsPageRouteImport } from './pages/secret-manager/SettingsPage/route' import { Route as secretManagerSecretRotationPageRouteImport } from './pages/secret-manager/SecretRotationPage/route' import { Route as secretManagerOverviewPageRouteImport } from './pages/secret-manager/OverviewPage/route' +import { Route as secretManagerInsightsPageRouteImport } from './pages/secret-manager/InsightsPage/route' import { Route as secretManagerSecretApprovalsPageRouteImport } from './pages/secret-manager/SecretApprovalsPage/route' import { Route as secretManagerIPAllowlistPageRouteImport } from './pages/secret-manager/IPAllowlistPage/route' import { Route as pamSettingsPageRouteImport } from './pages/pam/SettingsPage/route' @@ -1294,6 +1295,13 @@ const secretManagerOverviewPageRouteRoute = getParentRoute: () => secretManagerLayoutRoute, } as any) +const secretManagerInsightsPageRouteRoute = + secretManagerInsightsPageRouteImport.update({ + id: '/insights', + path: '/insights', + getParentRoute: () => secretManagerLayoutRoute, + } as any) + const secretManagerSecretApprovalsPageRouteRoute = secretManagerSecretApprovalsPageRouteImport.update({ id: '/approval', @@ -3228,6 +3236,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof secretManagerSecretApprovalsPageRouteImport parentRoute: typeof secretManagerLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights' + path: '/insights' + fullPath: '/organizations/$orgId/projects/secret-management/$projectId/insights' + preLoaderRoute: typeof secretManagerInsightsPageRouteImport + parentRoute: typeof secretManagerLayoutImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview' path: '/overview' @@ -5216,6 +5231,7 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManag interface secretManagerLayoutRouteChildren { secretManagerIPAllowlistPageRouteRoute: typeof secretManagerIPAllowlistPageRouteRoute secretManagerSecretApprovalsPageRouteRoute: typeof secretManagerSecretApprovalsPageRouteRoute + secretManagerInsightsPageRouteRoute: typeof secretManagerInsightsPageRouteRoute secretManagerOverviewPageRouteRoute: typeof secretManagerOverviewPageRouteRoute secretManagerSecretRotationPageRouteRoute: typeof secretManagerSecretRotationPageRouteRoute secretManagerSettingsPageRouteRoute: typeof secretManagerSettingsPageRouteRoute @@ -5236,6 +5252,7 @@ const secretManagerLayoutRouteChildren: secretManagerLayoutRouteChildren = { secretManagerIPAllowlistPageRouteRoute, secretManagerSecretApprovalsPageRouteRoute: secretManagerSecretApprovalsPageRouteRoute, + secretManagerInsightsPageRouteRoute: secretManagerInsightsPageRouteRoute, secretManagerOverviewPageRouteRoute: secretManagerOverviewPageRouteRoute, secretManagerSecretRotationPageRouteRoute: secretManagerSecretRotationPageRouteRoute, @@ -5839,6 +5856,7 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/pam/$projectId/settings': typeof pamSettingsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/approval': typeof secretManagerSecretApprovalsPageRouteRoute + '/organizations/$orgId/projects/secret-management/$projectId/insights': typeof secretManagerInsightsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/overview': typeof secretManagerOverviewPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/settings': typeof secretManagerSettingsPageRouteRoute @@ -6105,6 +6123,7 @@ export interface FileRoutesByTo { '/organizations/$orgId/projects/pam/$projectId/settings': typeof pamSettingsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/approval': typeof secretManagerSecretApprovalsPageRouteRoute + '/organizations/$orgId/projects/secret-management/$projectId/insights': typeof secretManagerInsightsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/overview': typeof secretManagerOverviewPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/settings': typeof secretManagerSettingsPageRouteRoute @@ -6377,6 +6396,7 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/settings': typeof pamSettingsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval': typeof secretManagerSecretApprovalsPageRouteRoute + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights': typeof secretManagerInsightsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview': typeof secretManagerOverviewPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings': typeof secretManagerSettingsPageRouteRoute @@ -6652,6 +6672,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/settings' | '/organizations/$orgId/projects/secret-management/$projectId/allowlist' | '/organizations/$orgId/projects/secret-management/$projectId/approval' + | '/organizations/$orgId/projects/secret-management/$projectId/insights' | '/organizations/$orgId/projects/secret-management/$projectId/overview' | '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation' | '/organizations/$orgId/projects/secret-management/$projectId/settings' @@ -6917,6 +6938,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/settings' | '/organizations/$orgId/projects/secret-management/$projectId/allowlist' | '/organizations/$orgId/projects/secret-management/$projectId/approval' + | '/organizations/$orgId/projects/secret-management/$projectId/insights' | '/organizations/$orgId/projects/secret-management/$projectId/overview' | '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation' | '/organizations/$orgId/projects/secret-management/$projectId/settings' @@ -7187,6 +7209,7 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/settings' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings' @@ -7943,6 +7966,7 @@ export const routeTree = rootRoute "children": [ "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings", @@ -8048,6 +8072,10 @@ export const routeTree = rootRoute "filePath": "secret-manager/SecretApprovalsPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights": { + "filePath": "secret-manager/InsightsPage/route.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview": { "filePath": "secret-manager/OverviewPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" diff --git a/frontend/src/routes.ts b/frontend/src/routes.ts index 9ef979376ec..5c69f11718f 100644 --- a/frontend/src/routes.ts +++ b/frontend/src/routes.ts @@ -23,6 +23,7 @@ const secretManagerRoutes = route("/organizations/$orgId/projects/secret-managem route("/allowlist", "secret-manager/IPAllowlistPage/route.tsx"), route("/approval", "secret-manager/SecretApprovalsPage/route.tsx"), route("/secret-rotation", "secret-manager/SecretRotationPage/route.tsx"), + route("/insights", "secret-manager/InsightsPage/route.tsx"), route("/settings", "secret-manager/SettingsPage/route.tsx"), route("/commits/$environment/$folderId", [ index("secret-manager/CommitsPage/route.tsx"), From 367e3b2dd3a28a9bd0e6b8c55026eb2dcba30ba8 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 8 Apr 2026 02:22:09 -0300 Subject: [PATCH 053/562] Add 47 days TLS limit graphs --- .../src/server/routes/v1/project-router.ts | 3 +- .../services/certificate/certificate-dal.ts | 23 ++ frontend/src/hooks/api/certificates/types.ts | 1 + .../DashboardPage/DashboardPage.tsx | 4 +- .../components/ValidityReadinessSection.tsx | 341 ++++++++++++++++++ .../DashboardPage/components/index.tsx | 1 + 6 files changed, 371 insertions(+), 2 deletions(-) create mode 100644 frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx diff --git a/backend/src/server/routes/v1/project-router.ts b/backend/src/server/routes/v1/project-router.ts index 6cf804fb9de..e2b6c1a1138 100644 --- a/backend/src/server/routes/v1/project-router.ts +++ b/backend/src/server/routes/v1/project-router.ts @@ -1392,7 +1392,8 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { byCA: z.array(z.object({ id: z.string(), label: z.string(), count: z.number() })), byStatus: z.array(z.object({ label: z.string(), count: z.number() })) }), - expirationBuckets: z.array(z.object({ bucket: z.string(), count: z.number() })) + expirationBuckets: z.array(z.object({ bucket: z.string(), count: z.number() })), + validityBuckets: z.array(z.object({ bucket: z.string(), count: z.number() })) }) } }, diff --git a/backend/src/services/certificate/certificate-dal.ts b/backend/src/services/certificate/certificate-dal.ts index 46b991b9dbf..e5a3927dfef 100644 --- a/backend/src/services/certificate/certificate-dal.ts +++ b/backend/src/services/certificate/certificate-dal.ts @@ -739,6 +739,25 @@ export const certificateDALFactory = (db: TDbClient) => { .select(db.raw("count(*)::int as count")) .groupBy("bucket"); + const validityBuckets = await db + .replicaNode()(TableName.Certificate) + .where(`${TableName.Certificate}.projectId`, projectId) + .where(`${TableName.Certificate}.status`, "!=", CertStatus.REVOKED) + .where(`${TableName.Certificate}.notAfter`, ">", now) + .whereRaw(`"${TableName.Certificate}"."extendedKeyUsages" @> ARRAY[?]::text[]`, ["serverAuth"]) + .select( + db.raw( + `CASE + WHEN EXTRACT(EPOCH FROM ("${TableName.Certificate}"."notAfter" - "${TableName.Certificate}"."notBefore")) / 86400 <= 47 THEN '<=47d' + WHEN EXTRACT(EPOCH FROM ("${TableName.Certificate}"."notAfter" - "${TableName.Certificate}"."notBefore")) / 86400 <= 99 THEN '48-99d' + WHEN EXTRACT(EPOCH FROM ("${TableName.Certificate}"."notAfter" - "${TableName.Certificate}"."notBefore")) / 86400 <= 199 THEN '100-199d' + ELSE '>=200d' + END as bucket` + ) + ) + .select(db.raw("count(*)::int as count")) + .groupBy("bucket"); + return { totals: { total: totals.total, @@ -768,6 +787,10 @@ export const certificateDALFactory = (db: TDbClient) => { expirationBuckets: (expirationBuckets as unknown as BucketCount[]).map((r) => ({ bucket: r.bucket, count: Number(r.count) + })), + validityBuckets: (validityBuckets as unknown as BucketCount[]).map((r) => ({ + bucket: r.bucket, + count: Number(r.count) })) }; } catch (error) { diff --git a/frontend/src/hooks/api/certificates/types.ts b/frontend/src/hooks/api/certificates/types.ts index b68ffed5bd8..58ef184eabf 100644 --- a/frontend/src/hooks/api/certificates/types.ts +++ b/frontend/src/hooks/api/certificates/types.ts @@ -269,6 +269,7 @@ export type TDashboardStats = { byStatus: TDashboardDistribution[]; }; expirationBuckets: TExpirationBucket[]; + validityBuckets?: TExpirationBucket[]; }; export type TActivityTrendPoint = { diff --git a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx index f5c0fddf868..14ebcaadca2 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx @@ -19,7 +19,8 @@ import { CodeSigningSection, DistributionCharts, ExpirationTimeline, - KpiCards + KpiCards, + ValidityReadinessSection } from "./components"; export const DashboardPage = () => { @@ -81,6 +82,7 @@ export const DashboardPage = () => { onNavigate={navigateToInventory} />
+ = + { + ">=200d": { + label: "> 200 days", + compliance: "Non-compliant (exceeds current limit)", + color: CHART_COLORS_HEX[7] + }, + "100-199d": { + label: "100\u2013199 days", + compliance: "Compliant until Mar 2027", + color: CHART_COLORS_HEX[1] + }, + "48-99d": { + label: "48\u201399 days", + compliance: "Compliant until Mar 2029", + color: CHART_COLORS_HEX[0] + }, + "<=47d": { + label: "\u2264 47 days", + compliance: "Fully compliant", + color: CHART_COLORS_HEX[5] + } + }; + +const BUCKET_ORDER = [">=200d", "100-199d", "48-99d", "<=47d"]; + +const MandateCountdown = () => { + const now = Date.now(); + const futurePhases = ALL_PHASES.filter( + (p) => Math.ceil((p.date.getTime() - now) / (1000 * 60 * 60 * 24)) > 0 + ); + + return ( + + + + CA/B Forum Mandate Deadlines + +

+ Upcoming reductions in maximum TLS certificate validity +

+
+ +
+ {futurePhases.map((phase) => { + const daysUntil = Math.ceil((phase.date.getTime() - now) / (1000 * 60 * 60 * 24)); + const isUrgent = daysUntil <= 90; + + const [, colorWarning, , , , colorSuccess] = CHART_COLORS; + const barColor = isUrgent ? colorWarning : colorSuccess; + + return ( +
+
+
+
+ {daysUntil} + days +
+

{phase.description}

+
+

+ {phase.date.toLocaleDateString("en-US", { + month: "short", + day: "numeric", + year: "numeric" + })} +

+
+ ); + })} +
+ + + ); +}; + +const ProjectedRenewals = ({ activeCerts }: { activeCerts: number }) => { + const data = useMemo(() => { + if (activeCerts === 0) return []; + return [ + { label: "Current", renewals: activeCerts, color: CHART_COLORS_HEX[0] }, + { + label: "200-day", + renewals: Math.ceil((365 / 200) * activeCerts), + color: CHART_COLORS_HEX[1] + }, + { + label: "100-day", + renewals: Math.ceil((365 / 100) * activeCerts), + color: CHART_COLORS_HEX[6] + }, + { + label: "47-day", + renewals: Math.ceil((365 / 47) * activeCerts), + color: CHART_COLORS_HEX[7] + } + ]; + }, [activeCerts]); + + if (activeCerts === 0) return null; + + return ( + + + + Projected Annual Renewals + +

+ Estimated yearly renewal volume under each validity regime +

+
+ + + + + + + [Number(value).toLocaleString(), "Renewals/year"]} + cursor={{ fill: "none" }} + /> + + {data.map((entry) => ( + + ))} + + + +

+ Based on {activeCerts.toLocaleString()} active certificate{activeCerts !== 1 ? "s" : ""} +

+
+
+ ); +}; + +const ValidityDistribution = ({ buckets }: { buckets: TDashboardStats["validityBuckets"] }) => { + const chartData = useMemo(() => { + if (!buckets) return []; + const bucketMap = new Map(buckets.map((b) => [b.bucket, b.count])); + return BUCKET_ORDER.map((key, idx) => ({ + bucket: key, + count: bucketMap.get(key) || 0, + segIdx: idx, + ...VALIDITY_BUCKET_CONFIG[key] + })).filter((d) => d.count > 0); + }, [buckets]); + + const total = chartData.reduce((sum, d) => sum + d.count, 0); + + if (total === 0) return null; + + return ( + + + + Certificates by Validity Period + +

+ Active certificates grouped by issuance-to-expiry duration +

+
+ +
+
+ + + + {chartData.map((item) => ( + + + + + ))} + + + {chartData.map((item) => ( + + ))} + + + + +
+
+
+ {chartData.map((item) => { + const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; + return ( +
+ + + + + {item.label} + + + {item.compliance} + + {pct}% + + {item.count} + +
+ ); + })} +
+
+ Total + {total} +
+
+
+
+
+ ); +}; + +export const ValidityReadinessSection = ({ stats }: Props) => { + const tlsActiveCerts = useMemo( + () => (stats.validityBuckets || []).reduce((sum, b) => sum + b.count, 0), + [stats.validityBuckets] + ); + + if (tlsActiveCerts === 0) return null; + + return ( +
+

47-Day Validity Readiness

+
+ + + +
+
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx index 3862c8a19c9..88efe0c3fb6 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx @@ -3,3 +3,4 @@ export { CodeSigningSection } from "./CodeSigningSection"; export { DistributionCharts } from "./DistributionCharts"; export { ExpirationTimeline } from "./ExpirationTimeline"; export { KpiCards } from "./KpiCards"; +export { ValidityReadinessSection } from "./ValidityReadinessSection"; From 489ec817afab58062c92a02e202a7510e1007c7a Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 8 Apr 2026 10:11:10 -0700 Subject: [PATCH 054/562] improvements: address feedback --- backend/package.json | 2 +- .../ee/services/audit-log/audit-log-dal.ts | 119 ++++++++++++++++- .../ee/services/insights/insights-service.ts | 123 ++++++++---------- backend/src/server/routes/index.ts | 2 +- .../components/CalendarEventDetail.tsx | 2 +- .../components/SecretAccessChart.tsx | 4 +- 6 files changed, 177 insertions(+), 75 deletions(-) diff --git a/backend/package.json b/backend/package.json index f4ee1977b6e..06caa52424f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -159,6 +159,7 @@ "@fastify/websocket": "^10.0.1", "@gitbeaker/rest": "^42.5.0", "@google-cloud/kms": "^4.5.0", + "@infisical/ldapjs": "3.0.11", "@infisical/pg-view-generator": "^1.1.0", "@infisical/quic": "^1.0.8", "@modelcontextprotocol/sdk": "^1.24.3", @@ -224,7 +225,6 @@ "jsrp": "^0.2.4", "jwks-rsa": "^3.1.0", "knex": "^3.0.1", - "@infisical/ldapjs": "3.0.11", "ldif": "0.5.1", "libsodium-wrappers": "^0.7.13", "lodash.isequal": "^4.5.0", diff --git a/backend/src/ee/services/audit-log/audit-log-dal.ts b/backend/src/ee/services/audit-log/audit-log-dal.ts index b2204553e45..41e66c6bbf4 100644 --- a/backend/src/ee/services/audit-log/audit-log-dal.ts +++ b/backend/src/ee/services/audit-log/audit-log-dal.ts @@ -13,6 +13,14 @@ import { ActorType } from "@app/services/auth/auth-type"; import { ACTOR_TYPE_TO_METADATA_ID_KEY, EventType, filterableSecretEvents } from "./audit-log-types"; +type TAggregateQuery = { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; +}; + export interface TAuditLogDALFactory extends Omit, "find"> { pruneAuditLog: () => Promise; find: ( @@ -26,6 +34,18 @@ export interface TAuditLogDALFactory extends Omit, " }, tx?: knex.Knex ) => Promise; + countByDateAndActor: ( + arg: TAggregateQuery, + tx?: knex.Knex + ) => Promise<{ date: string; actor: string; actorMetadata: unknown; count: number }[]>; + countByIpAddress: ( + arg: TAggregateQuery, + tx?: knex.Knex + ) => Promise<{ ipAddress: string; count: number }[]>; + countByAuthMethod: ( + arg: TAggregateQuery, + tx?: knex.Knex + ) => Promise<{ actor: string; actorMetadata: unknown; count: number }[]>; } type TFindQuery = { @@ -217,5 +237,102 @@ export const auditLogDALFactory = (db: TDbClient) => { return auditLogOrm.create(tx); }; - return { ...auditLogOrm, create, pruneAuditLog, find }; + const countByDateAndActor = async ( + { + orgId, + projectId, + eventTypes, + startDate, + endDate + }: { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; + }, + tx?: knex.Knex + ) => { + const rows = await (tx || db.replicaNode())(TableName.AuditLog) + .where(`${TableName.AuditLog}.orgId`, orgId) + .where(`${TableName.AuditLog}.projectId`, projectId) + .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) + .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) + .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) + .select( + db.raw(`DATE("${TableName.AuditLog}"."createdAt") as date`), + `${TableName.AuditLog}.actor`, + `${TableName.AuditLog}.actorMetadata` + ) + .groupByRaw( + `DATE("${TableName.AuditLog}"."createdAt"), "${TableName.AuditLog}"."actor", "${TableName.AuditLog}"."actorMetadata"` + ) + .select(db.raw("COUNT(*)::int as count")) + .timeout(1000 * 120); + + return rows as { date: string; actor: string; actorMetadata: unknown; count: number }[]; + }; + + const countByIpAddress = async ( + { + orgId, + projectId, + eventTypes, + startDate, + endDate + }: { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; + }, + tx?: knex.Knex + ) => { + const rows = await (tx || db.replicaNode())(TableName.AuditLog) + .where(`${TableName.AuditLog}.orgId`, orgId) + .where(`${TableName.AuditLog}.projectId`, projectId) + .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) + .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) + .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) + .whereNotNull(`${TableName.AuditLog}.ipAddress`) + .select(`${TableName.AuditLog}.ipAddress`) + .groupBy(`${TableName.AuditLog}.ipAddress`) + .select(db.raw("COUNT(*)::int as count")) + .timeout(1000 * 120); + + return rows as { ipAddress: string; count: number }[]; + }; + + const countByAuthMethod = async ( + { + orgId, + projectId, + eventTypes, + startDate, + endDate + }: { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; + }, + tx?: knex.Knex + ) => { + const rows = await (tx || db.replicaNode())(TableName.AuditLog) + .where(`${TableName.AuditLog}.orgId`, orgId) + .where(`${TableName.AuditLog}.projectId`, projectId) + .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) + .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) + .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) + .select(`${TableName.AuditLog}.actor`, `${TableName.AuditLog}.actorMetadata`) + .groupBy(`${TableName.AuditLog}.actor`, `${TableName.AuditLog}.actorMetadata`) + .select(db.raw("COUNT(*)::int as count")) + .timeout(1000 * 120); + + return rows as { actor: string; actorMetadata: unknown; count: number }[]; + }; + + return { ...auditLogOrm, create, pruneAuditLog, find, countByDateAndActor, countByIpAddress, countByAuthMethod }; }; diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index c4a2725b01c..5f0f6186ab3 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -2,7 +2,8 @@ import { ForbiddenError } from "@casl/ability"; import geoip from "geoip-lite"; import { ActionProjectType, IdentityAuthMethod } from "@app/db/schemas"; -import { EventType, TAuditLogServiceFactory } from "@app/ee/services/audit-log/audit-log-types"; +import { TAuditLogDALFactory } from "@app/ee/services/audit-log/audit-log-dal"; +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; @@ -23,7 +24,7 @@ import { type TInsightsServiceFactoryDep = { permissionService: Pick; - auditLogService: Pick; + auditLogDAL: Pick; secretRotationV2DAL: Pick; reminderDAL: Pick; folderDAL: Pick; @@ -61,7 +62,7 @@ const checkInsightsPermission = async ( export const insightsServiceFactory = ({ permissionService, - auditLogService, + auditLogDAL, secretRotationV2DAL, reminderDAL, folderDAL, @@ -131,43 +132,36 @@ export const insightsServiceFactory = ({ const startDate = new Date(`${todayStr}T00:00:00.000Z`); startDate.setUTCDate(startDate.getUTCDate() - 6); - const auditLogs = await auditLogService.listAuditLogs({ - filter: { - projectId: dto.projectId, - eventType: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString(), - limit: 9999 - }, - actorId: actorDto.id, - actorOrgId: actorDto.orgId, - actorAuthMethod: actorDto.authMethod, - actor: actorDto.type + const rows = await auditLogDAL.countByDateAndActor({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() }); + // Pre-populate the last 7 days const dayMap = new Map>(); - for (let i = 6; i >= 0; i -= 1) { const d = new Date(`${todayStr}T00:00:00.000Z`); d.setUTCDate(d.getUTCDate() - i); - const key = d.toISOString().slice(0, 10); - dayMap.set(key, new Map()); + dayMap.set(d.toISOString().slice(0, 10), new Map()); } - auditLogs.forEach((log) => { - const dateKey = log.createdAt.toISOString().slice(0, 10); + rows.forEach((row) => { + const dateKey = typeof row.date === "string" ? row.date : new Date(row.date).toISOString().slice(0, 10); const actorMap = dayMap.get(dateKey); if (!actorMap) return; - const actorMeta = log.actor.metadata as Record | null; + const actorMeta = row.actorMetadata as Record | null; const actorName = actorMeta?.email || actorMeta?.name || actorMeta?.identityId || actorMeta?.userId || "Unknown"; - const actorKey = `${log.actor.type}:${actorName}`; + const actorKey = `${row.actor}:${actorName}`; const existing = actorMap.get(actorKey); if (existing) { - existing.count += 1; + existing.count += row.count; } else { - actorMap.set(actorKey, { name: actorName, type: log.actor.type, count: 1 }); + actorMap.set(actorKey, { name: actorName, type: row.actor, count: row.count }); } }); @@ -187,26 +181,12 @@ export const insightsServiceFactory = ({ const startDate = new Date(); startDate.setUTCDate(startDate.getUTCDate() - dto.days); - const auditLogs = await auditLogService.listAuditLogs({ - filter: { - projectId: dto.projectId, - eventType: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString(), - limit: 9999 - }, - actorId: actorDto.id, - actorOrgId: actorDto.orgId, - actorAuthMethod: actorDto.authMethod, - actor: actorDto.type - }); - - const ipCounts = new Map(); - auditLogs.forEach((log) => { - const ip = (log as { ipAddress?: string | null }).ipAddress; - if (ip) { - ipCounts.set(ip, (ipCounts.get(ip) || 0) + 1); - } + const ipRows = await auditLogDAL.countByIpAddress({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() }); const locationMap = new Map(); @@ -220,12 +200,21 @@ export const insightsServiceFactory = ({ ip.startsWith("172.17.") || ip.startsWith("172.18.") || ip.startsWith("172.19.") || - ip.startsWith("172.2") || + ip.startsWith("172.20.") || + ip.startsWith("172.21.") || + ip.startsWith("172.22.") || + ip.startsWith("172.23.") || + ip.startsWith("172.24.") || + ip.startsWith("172.25.") || + ip.startsWith("172.26.") || + ip.startsWith("172.27.") || + ip.startsWith("172.28.") || + ip.startsWith("172.29.") || ip.startsWith("172.30.") || ip.startsWith("172.31.") || ip.startsWith("192.168."); - ipCounts.forEach((count, ip) => { + ipRows.forEach(({ ipAddress: ip, count }) => { if (isPrivateIp(ip)) { const key = "Local Network:LOCAL"; const existing = locationMap.get(key); @@ -268,18 +257,12 @@ export const insightsServiceFactory = ({ const startDate = new Date(); startDate.setUTCDate(startDate.getUTCDate() - dto.days); - const auditLogs = await auditLogService.listAuditLogs({ - filter: { - projectId: dto.projectId, - eventType: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString(), - limit: 10000 - }, - actorId: actorDto.id, - actorOrgId: actorDto.orgId, - actorAuthMethod: actorDto.authMethod, - actor: actorDto.type + const authRows = await auditLogDAL.countByAuthMethod({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() }); const methodCounts = new Map(); @@ -314,23 +297,23 @@ export const insightsServiceFactory = ({ [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" }; - auditLogs.forEach((log) => { - const actorMeta = log.actor.metadata as Record | null; + authRows.forEach((row) => { + const actorMeta = row.actorMetadata as Record | null; let method = "Unknown"; - if (log.actor.type === "user") { + if (row.actor === "user") { const raw = (actorMeta?.authMethod as string) || "Unknown"; method = authMethodLabels[raw] || raw; - } else if (log.actor.type === "identity") { + } else if (row.actor === "identity") { const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; - } else if (log.actor.type === "service") { + } else if (row.actor === "service") { method = "Service Token"; } else { - method = log.actor.type; + method = row.actor; } - methodCounts.set(method, (methodCounts.get(method) || 0) + 1); + methodCounts.set(method, (methodCounts.get(method) || 0) + (row.count || 0)); }); const methods = Array.from(methodCounts.entries()) @@ -349,18 +332,20 @@ export const insightsServiceFactory = ({ const now = new Date(); const in7Days = new Date(now); in7Days.setDate(now.getDate() + 7); - const staleThreshold = new Date(now); - staleThreshold.setDate(now.getDate() - 90); + const lookback90Days = new Date(now); + lookback90Days.setDate(now.getDate() - 90); + const staleThreshold = lookback90Days; // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel + // Use 90-day lookback to capture overdue items without unbounded historical queries const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, - startDate: new Date(0), + startDate: lookback90Days, endDate: in7Days }), secretRotationV2DAL.findByProject(dto.projectId), - fetchReminders(dto.projectId, new Date(0), in7Days) + fetchReminders(dto.projectId, lookback90Days, in7Days) ]); const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 0ac8ff65b91..1a424ac652d 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -2338,7 +2338,7 @@ export const registerRoutes = async ( const insightsService = insightsServiceFactory({ permissionService, - auditLogService, + auditLogDAL, secretRotationV2DAL, reminderDAL, folderDAL, diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx index 29dc8ac6bfd..878c60f8095 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx @@ -124,7 +124,7 @@ export const CalendarEventDetail = ({ event }: { event: CalendarEvent }) => { Secret Keys - {event.data.secretKeys.map((key) =>

{key}

) || "—"}
+ {event.data.secretKeys.map((key) =>

{key}

) || "—"}
)} diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx index 89d24dee2ad..4a0dd476d10 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx +++ b/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx @@ -62,13 +62,13 @@ export const SecretAccessChart = () => { {topActors.length > 0 && (
- + Top actors — {totalRequests.toLocaleString()} total requests
{topActors.map((actor) => ( - {actor.type}: {actor.name}{" "} + {actor.type}: {actor.name}{" "} ({actor.count.toLocaleString()}) ))} From 4d8f552be3ceabccdb5422f7d6b66e53109b4a35 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 8 Apr 2026 10:23:28 -0700 Subject: [PATCH 055/562] chore: fix lint --- .../InsightsPage/components/CalendarEventDetail.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx index 878c60f8095..7fc58e5d5b7 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx @@ -124,7 +124,9 @@ export const CalendarEventDetail = ({ event }: { event: CalendarEvent }) => { Secret Keys - {event.data.secretKeys.map((key) =>

{key}

) || "—"}
+ + {event.data.secretKeys.map((key) =>

{key}

) || "—"} +
)} From 3bcf86ed0f9147f9fb6ac5afd39c91e1b0eaa819 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 8 Apr 2026 11:49:53 -0700 Subject: [PATCH 056/562] improvement: address feedback --- backend/src/ee/routes/v1/insights-router.ts | 14 +- .../ee/services/insights/insights-service.ts | 20 +- .../ee/services/insights/insights-types.ts | 2 + .../secret-v2-bridge/secret-v2-bridge-dal.ts | 28 +- .../src/hooks/api/secretInsights/types.ts | 3 + .../components/InsightsSummaryCards.tsx | 468 +++++++++++------- 6 files changed, 335 insertions(+), 200 deletions(-) diff --git a/backend/src/ee/routes/v1/insights-router.ts b/backend/src/ee/routes/v1/insights-router.ts index 03045b3d3c0..551524c83db 100644 --- a/backend/src/ee/routes/v1/insights-router.ts +++ b/backend/src/ee/routes/v1/insights-router.ts @@ -173,7 +173,9 @@ export const registerInsightsRouter = async (server: FastifyZodProvider) => { "Get summary stats for the insights dashboard: upcoming rotations, upcoming reminders, and stale secrets", security: [{ bearerAuth: [] }], querystring: z.object({ - projectId: z.string().trim() + projectId: z.string().trim(), + staleSecretsOffset: z.coerce.number().min(0).default(0), + staleSecretsLimit: z.coerce.number().min(1).max(100).default(50) }), response: { 200: z.object({ @@ -213,14 +215,18 @@ export const registerInsightsRouter = async (server: FastifyZodProvider) => { ), staleSecrets: z.array( z.object({ key: z.string(), environment: z.string(), secretPath: z.string(), updatedAt: z.date() }) - ) + ), + totalStaleCount: z.number() }) } }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const { projectId } = req.query; - const result = await server.services.insights.getSummary({ projectId }, req.permission); + const { projectId, staleSecretsOffset, staleSecretsLimit } = req.query; + const result = await server.services.insights.getSummary( + { projectId, staleSecretsOffset, staleSecretsLimit }, + req.permission + ); await server.services.auditLog.createAuditLog({ projectId, event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY, metadata: { projectId } }, diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index 5f0f6186ab3..99d1bdd1d27 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -28,7 +28,7 @@ type TInsightsServiceFactoryDep = { secretRotationV2DAL: Pick; reminderDAL: Pick; folderDAL: Pick; - secretV2BridgeDAL: Pick; + secretV2BridgeDAL: Pick; projectBotService: Pick; }; @@ -363,18 +363,19 @@ export const insightsServiceFactory = ({ nextReminderDate: r.nextReminderDate }); - // Failed rotations with nextRotationAt set also count as upcoming (will be re-attempted) - const upcomingIds = new Set(upcomingRotationsRaw.map((r) => r.id)); - const failedWithRetry = allProjectRotations.filter( - (r) => r.rotationStatus === "failed" && r.nextRotationAt && !upcomingIds.has(r.id) - ); - const upcomingRotations = [...upcomingRotationsRaw, ...failedWithRetry].map(mapRotation); + const upcomingRotations = upcomingRotationsRaw.map(mapRotation); const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); - const rawStaleSecrets = await secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold); + const [rawStaleSecrets, totalStaleCount] = await Promise.all([ + secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold, { + offset: dto.staleSecretsOffset ?? 0, + limit: dto.staleSecretsLimit ?? 50 + }), + secretV2BridgeDAL.countStaleByProject(dto.projectId, staleThreshold) + ]); // Resolve folder paths for stale secrets const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; @@ -398,7 +399,8 @@ export const insightsServiceFactory = ({ failedRotations, upcomingReminders, overdueReminders, - staleSecrets + staleSecrets, + totalStaleCount }; }; diff --git a/backend/src/ee/services/insights/insights-types.ts b/backend/src/ee/services/insights/insights-types.ts index 68f9ac6dc22..4705b5c6093 100644 --- a/backend/src/ee/services/insights/insights-types.ts +++ b/backend/src/ee/services/insights/insights-types.ts @@ -20,4 +20,6 @@ export type TGetAuthMethodDistributionDTO = { export type TGetInsightsSummaryDTO = { projectId: string; + staleSecretsOffset?: number; + staleSecretsLimit?: number; }; diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts index e66c8d41a1e..c01fc9178c0 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts @@ -1128,7 +1128,12 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { } }; - const findStaleByProject = async (projectId: string, staleBeforeDate: Date, tx?: Knex) => { + const findStaleByProject = async ( + projectId: string, + staleBeforeDate: Date, + pagination?: { offset: number; limit: number }, + tx?: Knex + ) => { try { const result = await (tx || db.replicaNode())(TableName.SecretV2) .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) @@ -1143,7 +1148,8 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { `${TableName.Environment}.slug as environment` ) .orderBy(`${TableName.SecretV2}.updatedAt`, "asc") - .limit(50); + .offset(pagination?.offset ?? 0) + .limit(pagination?.limit ?? 50); return result as { key: string; updatedAt: Date; folderId: string; environment: string }[]; } catch (error) { @@ -1151,6 +1157,23 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { } }; + const countStaleByProject = async (projectId: string, staleBeforeDate: Date, tx?: Knex) => { + try { + const result = await (tx || db.replicaNode())(TableName.SecretV2) + .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .where(`${TableName.Environment}.projectId`, projectId) + .whereNull(`${TableName.SecretV2}.userId`) + .where(`${TableName.SecretV2}.updatedAt`, "<", staleBeforeDate) + .count("* as count") + .first(); + + return Number((result as { count?: string | number })?.count ?? 0); + } catch (error) { + throw new DatabaseError({ error, name: "countStaleByProject" }); + } + }; + return { ...secretOrm, update, @@ -1168,6 +1191,7 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { findAllProjectSecretValues, countByFolderIds, findStaleByProject, + countStaleByProject, findOne, find, invalidateSecretCacheByProjectId, diff --git a/frontend/src/hooks/api/secretInsights/types.ts b/frontend/src/hooks/api/secretInsights/types.ts index 4d4b210c74b..71f6909fa38 100644 --- a/frontend/src/hooks/api/secretInsights/types.ts +++ b/frontend/src/hooks/api/secretInsights/types.ts @@ -51,6 +51,8 @@ export type TGetSecretAccessVolumeDTO = { export type TGetInsightsSummaryDTO = { projectId: string; + staleSecretsOffset?: number; + staleSecretsLimit?: number; }; export type TInsightRotationItem = { @@ -81,6 +83,7 @@ export type TGetInsightsSummaryResponse = { upcomingReminders: TInsightReminderItem[]; overdueReminders: TInsightReminderItem[]; staleSecrets: TInsightStaleSecretItem[]; + totalStaleCount: number; }; export type TGetSecretAccessVolumeResponse = { diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx index 189879bef8d..3e748e5e4ba 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx +++ b/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx @@ -1,30 +1,35 @@ import { useState } from "react"; -import { Link, useParams } from "@tanstack/react-router"; +import { useNavigate, useParams } from "@tanstack/react-router"; import { formatDistanceToNow, parseISO } from "date-fns"; import { AlertTriangleIcon, BellIcon, CheckIcon, + ChevronLeftIcon, + ChevronRightIcon, ClockIcon, ExternalLinkIcon, RefreshCwIcon } from "lucide-react"; +import { twMerge } from "tailwind-merge"; import { Badge, Button, - Command, - CommandEmpty, - CommandGroup, - CommandItem, - CommandList, Skeleton, UnstableCard, UnstableCardAction, UnstableCardContent, UnstableCardHeader, UnstableCardTitle, - UnstableSeparator + UnstableIconButton, + UnstableSeparator, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow } from "@app/components/v3"; import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; import { cn } from "@app/components/v3/utils"; @@ -93,7 +98,7 @@ const StatCard = ({ {viewLabel} - + {popoverContent} @@ -107,204 +112,280 @@ const StatCard = ({ const overviewRoute = "/organizations/$orgId/projects/secret-management/$projectId/overview" as const; -const RotationCommandList = ({ +type RotationItem = { + name: string; + environment: string; + secretPath: string; + nextRotationAt: string | null; +}; + +const RotationTable = ({ failed, upcoming, orgId, projectId }: { - failed: { - name: string; - environment: string; - secretPath: string; - nextRotationAt: string | null; - }[]; - upcoming: { - name: string; - environment: string; - secretPath: string; - nextRotationAt: string | null; - }[]; + failed: RotationItem[]; + upcoming: RotationItem[]; orgId: string; projectId: string; -}) => ( - - - No rotations found - {failed.length > 0 && ( - - {failed.map((item) => ( - - -
-
{item.name}
-
- {item.nextRotationAt - ? `retries ${formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true })} — ` - : ""} - {item.environment} · {item.secretPath} -
-
- - -
- ))} -
- )} - {upcoming.length > 0 && ( - - {upcoming.map((item) => ( - - { + const navigate = useNavigate(); + const allItems = [ + ...failed.map((item) => ({ ...item, status: "failed" as const })), + ...upcoming.map((item) => ({ ...item, status: "upcoming" as const })) + ]; + + if (!allItems.length) return

No rotations

; + + return ( + + + + Name + Env + Path + Status + + + + + {allItems.map((item) => ( + + navigate({ + to: overviewRoute, + params: { orgId, projectId }, + search: { search: item.name, environments: [item.environment], filterBy: "rotation" - }} - > -
-
{item.name}
-
- {item.nextRotationAt && - `${formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true })} — `} - {item.environment} · {item.secretPath} -
-
- - -
- ))} -
- )} -
-
-); + } + }) + } + > + + {item.name} + + + {item.environment} + + + {item.secretPath} + + + {item.status === "failed" ? ( + + {item.nextRotationAt + ? `retries ${formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true })}` + : "failed"} + + ) : ( + + {item.nextRotationAt + ? formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true }) + : "scheduled"} + + )} + + + + + + ))} + + + ); +}; -const ReminderCommandList = ({ +type ReminderItem = { + secretKey: string; + environment: string; + secretPath: string; + nextReminderDate: string; +}; + +const ReminderTable = ({ overdue, upcoming, orgId, projectId }: { - overdue: { - secretKey: string; - environment: string; - secretPath: string; - nextReminderDate: string; - }[]; - upcoming: { - secretKey: string; - environment: string; - secretPath: string; - nextReminderDate: string; - }[]; + overdue: ReminderItem[]; + upcoming: ReminderItem[]; orgId: string; projectId: string; -}) => ( - - - No reminders found - {overdue.length > 0 && ( - - {overdue.map((item) => ( - - -
-
{item.secretKey}
-
- {formatDistanceToNow(parseISO(item.nextReminderDate), { addSuffix: true })} —{" "} - {item.environment} · {item.secretPath} -
-
- - -
- ))} -
- )} - {upcoming.length > 0 && ( - - {upcoming.map((item) => ( - - { + const navigate = useNavigate(); + const allItems = [ + ...overdue.map((item) => ({ ...item, status: "overdue" as const })), + ...upcoming.map((item) => ({ ...item, status: "upcoming" as const })) + ]; + + if (!allItems.length) return

No reminders

; + + return ( + + + + Secret + Env + Path + Due + + + + + {allItems.map((item) => ( + + navigate({ + to: overviewRoute, + params: { orgId, projectId }, + search: { search: item.secretKey, environments: [item.environment], filterBy: "secret" - }} - > -
-
{item.secretKey}
-
- {formatDistanceToNow(parseISO(item.nextReminderDate), { addSuffix: true })} —{" "} - {item.environment} · {item.secretPath} -
-
- - -
- ))} -
- )} -
-
-); + } + }) + } + > + + {item.secretKey} + + + {item.environment} + + + {item.secretPath} + + + + {formatDistanceToNow(parseISO(item.nextReminderDate), { addSuffix: true })} + + + + + + + ))} + + + ); +}; + +const PAGE_SIZE = 10; -const StaleSecretCommandList = ({ +const StaleSecretsTable = ({ items, + totalCount, + page, + onPageChange, orgId, projectId }: { items: { key: string; environment: string; secretPath: string; updatedAt: string }[]; + totalCount: number; + page: number; + onPageChange: (p: number) => void; orgId: string; projectId: string; -}) => ( - - - No stale secrets found - - {items.map((item) => ( - - { + const navigate = useNavigate(); + const totalPages = Math.ceil(totalCount / PAGE_SIZE); + + if (!totalCount) return

No stale secrets

; + + return ( +
+ + + + Secret + Env + Path + Last Modified + + + + + {items.map((item) => ( + + navigate({ + to: overviewRoute, + params: { orgId, projectId }, + search: { + search: item.key, + environments: [item.environment], + filterBy: "secret" + } + }) + } > -
-
{item.key}
-
- {formatDistanceToNow(parseISO(item.updatedAt), { addSuffix: true })} —{" "} - {item.environment} · {item.secretPath} -
-
- - - - ))} - - - -); + + {item.key} + + + {item.environment} + + + {item.secretPath} + + + {formatDistanceToNow(parseISO(item.updatedAt), { addSuffix: true })} + + + + +
+ ))} +
+
+ {totalPages > 1 && ( +
+ + {page * PAGE_SIZE + 1}–{Math.min((page + 1) * PAGE_SIZE, totalCount)} of{" "} + {totalCount} + +
+ onPageChange(page - 1)} + > + + + = totalPages - 1} + onClick={() => onPageChange(page + 1)} + > + + +
+
+ )} +
+ ); +}; export const InsightsSummaryCards = () => { const { projectId } = useProject(); @@ -313,7 +394,16 @@ export const InsightsSummaryCards = () => { select: (p) => ({ orgId: (p as Record).orgId }) }); - const { data, isPending } = useGetInsightsSummary({ projectId }, { enabled: !!projectId }); + const [stalePage, setStalePage] = useState(0); + + const { data, isPending } = useGetInsightsSummary( + { + projectId, + staleSecretsOffset: stalePage * PAGE_SIZE, + staleSecretsLimit: PAGE_SIZE + }, + { enabled: !!projectId, placeholderData: (prev) => prev } + ); if (isPending) { return ( @@ -330,6 +420,7 @@ export const InsightsSummaryCards = () => { const upcomingReminders = data?.upcomingReminders ?? []; const overdueReminders = data?.overdueReminders ?? []; const staleSecrets = data?.staleSecrets ?? []; + const totalStaleCount = data?.totalStaleCount ?? staleSecrets.length; return (
@@ -346,7 +437,7 @@ export const InsightsSummaryCards = () => { footnoteVariant={failedRotations.length ? "danger" : "success"} viewLabel={failedRotations.length ? "View Failed Rotations" : "View Rotations"} popoverContent={ - { footnoteVariant={overdueReminders.length ? "danger" : "success"} viewLabel={overdueReminders.length ? "View Overdue Reminders" : "View Upcoming Reminders"} popoverContent={ - { title="Stale Secrets" icon={} iconVariant="danger" - count={staleSecrets.length} - totalItems={staleSecrets.length} + count={totalStaleCount} + totalItems={totalStaleCount} subtitle="Unmodified > 90 days" footnote={ - staleSecrets.length - ? `${staleSecrets.length} need${staleSecrets.length === 1 ? "s" : ""} review` + totalStaleCount + ? `${totalStaleCount} need${totalStaleCount === 1 ? "s" : ""} review` : "All secrets up to date" } - footnoteVariant={staleSecrets.length ? "warning" : "success"} + footnoteVariant={totalStaleCount ? "warning" : "success"} viewLabel="View Stale Secrets" popoverContent={ - + } />
From fe5e2238356a3200967601b91bf6f0e269b6c1fb Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 8 Apr 2026 11:52:06 -0700 Subject: [PATCH 057/562] improvement: pad calendar days --- backend/src/ee/services/insights/insights-service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index 99d1bdd1d27..3d24753e952 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -98,8 +98,10 @@ export const insightsServiceFactory = ({ const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 1)); - const endDate = new Date(Date.UTC(dto.year, dto.month, 0, 23, 59, 59, 999)); + // Pad by 1 day on each side so events near month boundaries are captured + // regardless of the caller's timezone offset from UTC. + const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 0)); + const endDate = new Date(Date.UTC(dto.year, dto.month, 1, 23, 59, 59, 999)); const [rotations, reminders] = await Promise.all([ secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), From 500b676fe291df9bd5de61717654a44aed08b00c Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 9 Apr 2026 04:19:11 -0400 Subject: [PATCH 058/562] feat(pam): move ad server resources to dedicated domains section --- backend/src/@types/fastify.d.ts | 2 + backend/src/@types/knex.d.ts | 2 + .../migrations/20260408062748_pam-domains.ts | 222 +++++++ backend/src/db/schemas/index.ts | 1 + backend/src/db/schemas/models.ts | 1 + backend/src/db/schemas/pam-accounts.ts | 5 +- .../schemas/pam-discovery-source-resources.ts | 5 +- backend/src/db/schemas/pam-domains.ts | 27 + backend/src/db/schemas/pam-resources.ts | 4 +- backend/src/db/schemas/resource-metadata.ts | 3 +- backend/src/ee/routes/v1/index.ts | 27 +- .../ee/routes/v1/pam-account-routers/index.ts | 32 +- .../pam-account-endpoints.ts | 41 +- .../pam-account-routers/pam-account-router.ts | 68 ++- .../ee/routes/v1/pam-domain-routers/index.ts | 44 ++ .../pam-domain-endpoints.ts | 220 +++++++ .../pam-domain-routers/pam-domain-router.ts | 106 ++++ .../routes/v1/pam-resource-routers/index.ts | 16 - .../pam-resource-endpoints.ts | 29 - .../pam-resource-router.ts | 10 +- .../ee/services/audit-log/audit-log-types.ts | 75 ++- .../services/pam-account/pam-account-dal.ts | 164 +++-- .../services/pam-account/pam-account-enums.ts | 5 + .../services/pam-account/pam-account-fns.ts | 8 +- .../pam-account/pam-account-service.ts | 562 ++++++++++++------ .../services/pam-account/pam-account-types.ts | 5 +- .../active-directory-discovery-factory.ts | 78 +-- .../pam-discovery/pam-discovery-factory.ts | 2 + .../pam-discovery/pam-discovery-queue.ts | 4 + .../pam-discovery/pam-discovery-schemas.ts | 12 +- .../pam-discovery-source-accounts-dal.ts | 8 +- .../pam-discovery-source-service.ts | 32 +- .../active-directory-domain-enums.ts} | 0 .../active-directory-domain-factory.ts} | 43 +- .../active-directory-domain-schemas.ts | 74 +++ .../active-directory-domain-types.ts | 12 + .../ee/services/pam-domain/pam-domain-dal.ts | 119 ++++ .../services/pam-domain/pam-domain-enums.ts | 7 + .../services/pam-domain/pam-domain-factory.ts | 10 + .../ee/services/pam-domain/pam-domain-fns.ts | 46 ++ .../services/pam-domain/pam-domain-schemas.ts | 55 ++ .../services/pam-domain/pam-domain-service.ts | 411 +++++++++++++ .../services/pam-domain/pam-domain-types.ts | 89 +++ .../active-directory-resource-fns.ts | 8 - .../active-directory-resource-schemas.ts | 113 ---- .../active-directory-resource-types.ts | 18 - .../aws-iam/aws-iam-resource-schemas.ts | 2 +- .../kubernetes/kubernetes-resource-schemas.ts | 2 +- .../mongodb/mongodb-resource-schemas.ts | 2 +- .../mssql/mssql-resource-schemas.ts | 2 +- .../mysql/mysql-resource-schemas.ts | 2 +- .../services/pam-resource/pam-resource-dal.ts | 8 +- .../pam-resource/pam-resource-enums.ts | 3 +- .../pam-resource/pam-resource-factory.ts | 4 +- .../services/pam-resource/pam-resource-fns.ts | 2 - .../pam-resource/pam-resource-schemas.ts | 15 +- .../pam-resource/pam-resource-service.ts | 79 +-- .../pam-resource/pam-resource-types.ts | 20 +- .../postgres/postgres-resource-schemas.ts | 2 +- .../redis/redis-resource-schemas.ts | 2 +- .../pam-resource/ssh/ssh-resource-schemas.ts | 2 +- .../windows-server-resource-schemas.ts | 6 +- .../pam-web-access/pam-web-access-service.ts | 8 + .../ee/services/permission/default-roles.ts | 5 + .../services/permission/project-permission.ts | 96 ++- backend/src/server/routes/index.ts | 15 + .../src/services/telemetry/telemetry-types.ts | 5 +- .../context/ProjectPermissionContext/types.ts | 8 +- frontend/src/hooks/api/pam/enums.ts | 4 +- frontend/src/hooks/api/pam/maps.ts | 4 +- frontend/src/hooks/api/pam/mutations.tsx | 12 +- frontend/src/hooks/api/pam/queries.tsx | 32 +- .../src/hooks/api/pam/types/base-account.ts | 13 +- .../src/hooks/api/pam/types/base-resource.ts | 2 +- frontend/src/hooks/api/pam/types/index.ts | 20 +- .../active-directory-types.ts} | 25 +- frontend/src/hooks/api/pamDomain/enums.ts | 7 + frontend/src/hooks/api/pamDomain/index.ts | 6 + frontend/src/hooks/api/pamDomain/maps.ts | 8 + .../src/hooks/api/pamDomain/mutations.tsx | 53 ++ frontend/src/hooks/api/pamDomain/queries.tsx | 88 +++ frontend/src/hooks/api/pamDomain/types.ts | 61 ++ .../components/OrgSidebar/PamNav.tsx | 14 +- .../PamAccountAccessPage.tsx | 6 +- .../PamAccountByIDPage/PamAccountByIDPage.tsx | 160 ++--- .../PamAccountCredentialsSection.tsx | 43 +- .../PamAccountDependenciesSection.tsx | 15 +- .../components/PamAccountDetailsSection.tsx | 34 +- .../components/PamAccountMetadataSection.tsx | 4 +- .../PamAccountPropertiesSection.tsx | 31 +- .../components/PamAccountResourcesSection.tsx | 46 +- .../components/PamSelectResourceModal.tsx | 92 +++ .../PamAccountByIDPage/components/index.ts | 1 + .../pages/pam/PamAccountByIDPage/route.tsx | 17 +- .../components/PamAccessAccountModal.tsx | 18 +- .../ActiveDirectoryAccountForm.tsx | 8 +- .../PamAccountForm/PamAccountForm.tsx | 20 +- .../PamAccountForm/SshAccountForm.tsx | 2 +- .../components/PamDeleteAccountModal.tsx | 10 +- .../components/useAccessAwsIamAccount.tsx | 4 +- .../PamDiscoveryDetailPage.tsx | 71 ++- .../pam/PamDomainAccountByIDPage/route.tsx | 38 ++ .../PamDomainByIDPage/PamDomainByIDPage.tsx | 236 ++++++++ .../components/PamAddDomainAccountModal.tsx | 65 ++ .../components/PamDomainAccountsSection.tsx | 284 +++++++++ .../components/PamDomainConnectionSection.tsx | 71 +++ .../components/PamDomainDetailsSection.tsx | 45 ++ .../components/PamDomainMetadataSection.tsx | 149 +++++ .../PamDomainRelatedResourcesSection.tsx | 117 ++++ .../components/PamUpdateDomainModal.tsx | 34 ++ .../pam/PamDomainByIDPage/components/index.ts | 6 + .../src/pages/pam/PamDomainByIDPage/route.tsx | 40 ++ .../pam/PamDomainsPage/PamDomainsPage.tsx | 30 + .../components/DomainTypeSelect.tsx | 86 +++ .../components/PamAddDomainModal.tsx | 74 +++ .../ActiveDirectoryDomainForm.tsx} | 41 +- .../PamDomainForm/PamDomainForm.tsx | 127 ++++ .../components/PamDomainHeader.tsx | 35 ++ .../components/PamDomainsSection.tsx | 8 + .../components/PamDomainsTable.tsx | 246 ++++++++ .../src/pages/pam/PamDomainsPage/route.tsx | 26 + .../PamResourceByIDPage.tsx | 9 - .../components/PamResourceAccountsSection.tsx | 204 ++++--- .../PamResourceConnectionSection.tsx | 48 +- .../PamResourceRelatedResourcesSection.tsx | 112 ---- .../components/PamRotationPolicyModal.tsx | 15 +- .../PamResourceByIDPage/components/index.ts | 1 - .../pages/pam/PamResourceByIDPage/route.tsx | 3 +- .../components/PamResourceCard.tsx | 14 +- .../PamResourceForm/PamResourceForm.tsx | 15 +- .../PamResourceForm/WindowsResourceForm.tsx | 51 +- .../components/PamResourceHeader.tsx | 1 - .../components/PamResourcesTable.tsx | 14 +- .../components/ResourceTypeSelect.tsx | 13 +- .../PamAccountPermissionConditions.tsx | 12 +- .../ProjectRoleModifySection.utils.tsx | 40 ++ .../components/RolePermissionsSection.tsx | 5 +- frontend/src/routeTree.gen.ts | 226 +++++++ frontend/src/routes.ts | 7 + 139 files changed, 5192 insertions(+), 1402 deletions(-) create mode 100644 backend/src/db/migrations/20260408062748_pam-domains.ts create mode 100644 backend/src/db/schemas/pam-domains.ts create mode 100644 backend/src/ee/routes/v1/pam-domain-routers/index.ts create mode 100644 backend/src/ee/routes/v1/pam-domain-routers/pam-domain-endpoints.ts create mode 100644 backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts rename backend/src/ee/services/{pam-resource/active-directory/active-directory-resource-enums.ts => pam-domain/active-directory/active-directory-domain-enums.ts} (100%) rename backend/src/ee/services/{pam-resource/active-directory/active-directory-resource-factory.ts => pam-domain/active-directory/active-directory-domain-factory.ts} (90%) create mode 100644 backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts create mode 100644 backend/src/ee/services/pam-domain/active-directory/active-directory-domain-types.ts create mode 100644 backend/src/ee/services/pam-domain/pam-domain-dal.ts create mode 100644 backend/src/ee/services/pam-domain/pam-domain-enums.ts create mode 100644 backend/src/ee/services/pam-domain/pam-domain-factory.ts create mode 100644 backend/src/ee/services/pam-domain/pam-domain-fns.ts create mode 100644 backend/src/ee/services/pam-domain/pam-domain-schemas.ts create mode 100644 backend/src/ee/services/pam-domain/pam-domain-service.ts create mode 100644 backend/src/ee/services/pam-domain/pam-domain-types.ts delete mode 100644 backend/src/ee/services/pam-resource/active-directory/active-directory-resource-fns.ts delete mode 100644 backend/src/ee/services/pam-resource/active-directory/active-directory-resource-schemas.ts delete mode 100644 backend/src/ee/services/pam-resource/active-directory/active-directory-resource-types.ts rename frontend/src/hooks/api/{pam/types/active-directory-resource.ts => pamDomain/active-directory-types.ts} (59%) create mode 100644 frontend/src/hooks/api/pamDomain/enums.ts create mode 100644 frontend/src/hooks/api/pamDomain/index.ts create mode 100644 frontend/src/hooks/api/pamDomain/maps.ts create mode 100644 frontend/src/hooks/api/pamDomain/mutations.tsx create mode 100644 frontend/src/hooks/api/pamDomain/queries.tsx create mode 100644 frontend/src/hooks/api/pamDomain/types.ts create mode 100644 frontend/src/pages/pam/PamAccountByIDPage/components/PamSelectResourceModal.tsx create mode 100644 frontend/src/pages/pam/PamDomainAccountByIDPage/route.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/PamAddDomainAccountModal.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainAccountsSection.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainConnectionSection.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainDetailsSection.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainMetadataSection.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainRelatedResourcesSection.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/PamUpdateDomainModal.tsx create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/components/index.ts create mode 100644 frontend/src/pages/pam/PamDomainByIDPage/route.tsx create mode 100644 frontend/src/pages/pam/PamDomainsPage/PamDomainsPage.tsx create mode 100644 frontend/src/pages/pam/PamDomainsPage/components/DomainTypeSelect.tsx create mode 100644 frontend/src/pages/pam/PamDomainsPage/components/PamAddDomainModal.tsx rename frontend/src/pages/pam/{PamResourcesPage/components/PamResourceForm/ActiveDirectoryResourceForm.tsx => PamDomainsPage/components/PamDomainForm/ActiveDirectoryDomainForm.tsx} (87%) create mode 100644 frontend/src/pages/pam/PamDomainsPage/components/PamDomainForm/PamDomainForm.tsx create mode 100644 frontend/src/pages/pam/PamDomainsPage/components/PamDomainHeader.tsx create mode 100644 frontend/src/pages/pam/PamDomainsPage/components/PamDomainsSection.tsx create mode 100644 frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx create mode 100644 frontend/src/pages/pam/PamDomainsPage/route.tsx delete mode 100644 frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceRelatedResourcesSection.tsx diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 2a7dc22076e..02fa5e3e367 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -30,6 +30,7 @@ import { TLicenseServiceFactory } from "@app/ee/services/license/license-service import { TOidcConfigServiceFactory } from "@app/ee/services/oidc/oidc-config-service"; import { TPamAccountServiceFactory } from "@app/ee/services/pam-account/pam-account-service"; import { TPamDiscoverySourceServiceFactory } from "@app/ee/services/pam-discovery/pam-discovery-source-service"; +import { TPamDomainServiceFactory } from "@app/ee/services/pam-domain/pam-domain-service"; import { TPamFolderServiceFactory } from "@app/ee/services/pam-folder/pam-folder-service"; import { TPamResourceRotationRulesServiceFactory } from "@app/ee/services/pam-resource/pam-resource-rotation-rules-service"; import { TPamResourceServiceFactory } from "@app/ee/services/pam-resource/pam-resource-service"; @@ -380,6 +381,7 @@ declare module "fastify" { offlineUsageReport: TOfflineUsageReportServiceFactory; pamFolder: TPamFolderServiceFactory; pamResource: TPamResourceServiceFactory; + pamDomain: TPamDomainServiceFactory; pamResourceRotationRules: TPamResourceRotationRulesServiceFactory; pamAccount: TPamAccountServiceFactory; pamSession: TPamSessionServiceFactory; diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 354b77ea1aa..ed37511e952 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -700,6 +700,7 @@ import { TPamDiscoverySourcesInsert, TPamDiscoverySourcesUpdate } from "@app/db/schemas/pam-discovery-sources"; +import { TPamDomains, TPamDomainsInsert, TPamDomainsUpdate } from "@app/db/schemas/pam-domains"; import { TPamFolders, TPamFoldersInsert, TPamFoldersUpdate } from "@app/db/schemas/pam-folders"; import { TPamResourceFavorites, @@ -1590,6 +1591,7 @@ declare module "knex/types/tables" { TPamResourceFavoritesInsert, TPamResourceFavoritesUpdate >; + [TableName.PamDomain]: KnexOriginal.CompositeTableType; [TableName.PamAccount]: KnexOriginal.CompositeTableType; [TableName.PamSession]: KnexOriginal.CompositeTableType; [TableName.PamDiscoverySource]: KnexOriginal.CompositeTableType< diff --git a/backend/src/db/migrations/20260408062748_pam-domains.ts b/backend/src/db/migrations/20260408062748_pam-domains.ts new file mode 100644 index 00000000000..de4e86d623f --- /dev/null +++ b/backend/src/db/migrations/20260408062748_pam-domains.ts @@ -0,0 +1,222 @@ +/* eslint-disable no-await-in-loop, @typescript-eslint/no-explicit-any */ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; +import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; + +export async function up(knex: Knex): Promise { + // \Create pam_domains table + if (!(await knex.schema.hasTable(TableName.PamDomain))) { + await knex.schema.createTable(TableName.PamDomain, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + + t.string("projectId").notNullable(); + t.foreign("projectId").references("id").inTable(TableName.Project).onDelete("CASCADE"); + t.index("projectId"); + + t.string("name").notNullable(); + t.index("name"); + + t.string("domainType").notNullable(); + t.index("domainType"); + + t.uuid("gatewayId").nullable(); + t.foreign("gatewayId").references("id").inTable(TableName.GatewayV2); + t.index("gatewayId"); + + t.binary("encryptedConnectionDetails").notNullable(); + t.string("discoveryFingerprint").nullable(); + + t.unique(["projectId", "name"]); + + t.timestamps(true, true, true); + }); + + await createOnUpdateTrigger(knex, TableName.PamDomain); + } + + // Add domainId to pam_resources + if (await knex.schema.hasTable(TableName.PamResource)) { + const hasDomainId = await knex.schema.hasColumn(TableName.PamResource, "domainId"); + if (!hasDomainId) { + await knex.schema.alterTable(TableName.PamResource, (t) => { + t.uuid("domainId").nullable(); + t.foreign("domainId").references("id").inTable(TableName.PamDomain).onDelete("SET NULL"); + t.index("domainId"); + }); + } + } + + // Add domainId to pam_accounts (exactly one of resourceId/domainId must be set) + if (await knex.schema.hasTable(TableName.PamAccount)) { + const hasDomainId = await knex.schema.hasColumn(TableName.PamAccount, "domainId"); + if (!hasDomainId) { + await knex.schema.alterTable(TableName.PamAccount, (t) => { + t.uuid("domainId").nullable(); + t.foreign("domainId").references("id").inTable(TableName.PamDomain).onDelete("CASCADE"); + t.index("domainId"); + }); + + await knex.schema.alterTable(TableName.PamAccount, (t) => { + t.uuid("resourceId").nullable().alter(); + }); + + await knex.raw(` + ALTER TABLE ${TableName.PamAccount} + ADD CONSTRAINT chk_pam_account_parent + CHECK ( + (("resourceId" IS NOT NULL AND "domainId" IS NULL) OR ("resourceId" IS NULL AND "domainId" IS NOT NULL)) + ) + `); + } + } + + // Add pamDomainId to resource_metadata + if (await knex.schema.hasTable(TableName.ResourceMetadata)) { + const hasPamDomainId = await knex.schema.hasColumn(TableName.ResourceMetadata, "pamDomainId"); + if (!hasPamDomainId) { + await knex.schema.alterTable(TableName.ResourceMetadata, (t) => { + t.uuid("pamDomainId").nullable(); + t.foreign("pamDomainId").references("id").inTable(TableName.PamDomain).onDelete("CASCADE"); + }); + } + } + + // Migrate existing AD resources to domains (preserving IDs for referential integrity) + const adResources = await knex(TableName.PamResource).where("resourceType", "active-directory").select("*"); + + for (const adResource of adResources) { + await knex(TableName.PamDomain).insert({ + id: adResource.id, + projectId: adResource.projectId, + name: adResource.name, + domainType: "active-directory", + gatewayId: adResource.gatewayId, + encryptedConnectionDetails: adResource.encryptedConnectionDetails, + discoveryFingerprint: adResource.discoveryFingerprint + } as any); + + await knex(TableName.PamAccount) + .where("resourceId", adResource.id) + .update({ + domainId: adResource.id, + resourceId: null + } as any); + + await knex(TableName.PamResource) + .where("adServerResourceId", adResource.id) + .update({ + domainId: adResource.id, + adServerResourceId: null + } as any); + + await knex(TableName.PamResourceRotationRule).where("resourceId", adResource.id).delete(); + await knex(TableName.PamDiscoverySourceResource).where("resourceId", adResource.id).delete(); + + await knex(TableName.ResourceMetadata) + .where("pamResourceId", adResource.id) + .update({ + pamDomainId: adResource.id, + pamResourceId: null + } as any); + + await knex(TableName.PamResource).where("id", adResource.id).delete(); + } + + // Drop adServerResourceId column from pam_resources + if (await knex.schema.hasTable(TableName.PamResource)) { + const hasAdServerResourceId = await knex.schema.hasColumn(TableName.PamResource, "adServerResourceId"); + if (hasAdServerResourceId) { + await knex.schema.alterTable(TableName.PamResource, (t) => { + t.dropColumn("adServerResourceId"); + }); + } + } +} + +export async function down(knex: Knex): Promise { + if (await knex.schema.hasTable(TableName.PamResource)) { + const hasAdServerResourceId = await knex.schema.hasColumn(TableName.PamResource, "adServerResourceId"); + if (!hasAdServerResourceId) { + await knex.schema.alterTable(TableName.PamResource, (t) => { + t.uuid("adServerResourceId").nullable(); + t.foreign("adServerResourceId").references("id").inTable(TableName.PamResource).onDelete("SET NULL"); + }); + } + } + + if (await knex.schema.hasTable(TableName.PamDomain)) { + const domains = await knex(TableName.PamDomain).where("domainType", "active-directory").select("*"); + + for (const domain of domains) { + await knex(TableName.PamResource).insert({ + id: domain.id, + projectId: domain.projectId, + name: domain.name, + resourceType: "active-directory", + gatewayId: domain.gatewayId, + encryptedConnectionDetails: domain.encryptedConnectionDetails, + discoveryFingerprint: domain.discoveryFingerprint + } as any); + + await knex(TableName.PamAccount) + .where("domainId", domain.id) + .update({ + resourceId: domain.id, + domainId: null + } as any); + + await knex(TableName.PamResource) + .where("domainId", domain.id) + .update({ + adServerResourceId: domain.id, + domainId: null + } as any); + + await knex(TableName.ResourceMetadata) + .where("pamDomainId", domain.id) + .update({ + pamResourceId: domain.id, + pamDomainId: null + } as any); + + await knex(TableName.PamDomain).where("id", domain.id).delete(); + } + } + + await knex.raw(` + ALTER TABLE ${TableName.PamAccount} + DROP CONSTRAINT IF EXISTS chk_pam_account_parent + `); + + if (await knex.schema.hasTable(TableName.PamAccount)) { + const hasDomainId = await knex.schema.hasColumn(TableName.PamAccount, "domainId"); + if (hasDomainId) { + await knex.schema.alterTable(TableName.PamAccount, (t) => { + t.uuid("resourceId").notNullable().alter(); + t.dropColumn("domainId"); + }); + } + } + + if (await knex.schema.hasTable(TableName.ResourceMetadata)) { + const hasPamDomainId = await knex.schema.hasColumn(TableName.ResourceMetadata, "pamDomainId"); + if (hasPamDomainId) { + await knex.schema.alterTable(TableName.ResourceMetadata, (t) => { + t.dropColumn("pamDomainId"); + }); + } + } + + if (await knex.schema.hasTable(TableName.PamResource)) { + const hasDomainId = await knex.schema.hasColumn(TableName.PamResource, "domainId"); + if (hasDomainId) { + await knex.schema.alterTable(TableName.PamResource, (t) => { + t.dropColumn("domainId"); + }); + } + } + + await dropOnUpdateTrigger(knex, TableName.PamDomain); + await knex.schema.dropTableIfExists(TableName.PamDomain); +} diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 3dbfc57412d..9f12c27bce2 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -116,6 +116,7 @@ export * from "./pam-discovery-source-dependencies"; export * from "./pam-discovery-source-resources"; export * from "./pam-discovery-source-runs"; export * from "./pam-discovery-sources"; +export * from "./pam-domains"; export * from "./pam-folders"; export * from "./pam-resource-favorites"; export * from "./pam-resource-rotation-rules"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index 134cde6731c..3f291a285c7 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -235,6 +235,7 @@ export enum TableName { PamAccountDependency = "pam_account_dependencies", PamResourceRotationRule = "pam_resource_rotation_rules", PamResourceFavorite = "pam_resource_favorites", + PamDomain = "pam_domains", VaultExternalMigrationConfig = "vault_external_migration_configs", diff --git a/backend/src/db/schemas/pam-accounts.ts b/backend/src/db/schemas/pam-accounts.ts index f45ede29508..4c2e8ce690c 100644 --- a/backend/src/db/schemas/pam-accounts.ts +++ b/backend/src/db/schemas/pam-accounts.ts @@ -13,7 +13,7 @@ export const PamAccountsSchema = z.object({ id: z.string().uuid(), projectId: z.string(), folderId: z.string().uuid().nullable().optional(), - resourceId: z.string().uuid(), + resourceId: z.string().uuid().nullable().optional(), name: z.string(), description: z.string().nullable().optional(), encryptedCredentials: zodBuffer, @@ -24,7 +24,8 @@ export const PamAccountsSchema = z.object({ encryptedLastRotationMessage: zodBuffer.nullable().optional(), requireMfa: z.boolean().default(false).nullable().optional(), internalMetadata: z.unknown().nullable().optional(), - discoveryFingerprint: z.string().nullable().optional() + discoveryFingerprint: z.string().nullable().optional(), + domainId: z.string().uuid().nullable().optional() }); export type TPamAccounts = z.infer; diff --git a/backend/src/db/schemas/pam-discovery-source-resources.ts b/backend/src/db/schemas/pam-discovery-source-resources.ts index 12f5c2a4105..f17f7ce615f 100644 --- a/backend/src/db/schemas/pam-discovery-source-resources.ts +++ b/backend/src/db/schemas/pam-discovery-source-resources.ts @@ -10,11 +10,12 @@ import { TImmutableDBKeys } from "./models"; export const PamDiscoverySourceResourcesSchema = z.object({ id: z.string().uuid(), discoverySourceId: z.string().uuid(), - resourceId: z.string().uuid(), + resourceId: z.string().uuid().nullable().optional(), lastDiscoveredAt: z.date(), lastDiscoveredRunId: z.string().uuid().nullable().optional(), isStale: z.boolean().default(false).nullable().optional(), - createdAt: z.date().nullable().optional() + createdAt: z.date().nullable().optional(), + domainId: z.string().uuid().nullable().optional() }); export type TPamDiscoverySourceResources = z.infer; diff --git a/backend/src/db/schemas/pam-domains.ts b/backend/src/db/schemas/pam-domains.ts new file mode 100644 index 00000000000..99241c5bd45 --- /dev/null +++ b/backend/src/db/schemas/pam-domains.ts @@ -0,0 +1,27 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { zodBuffer } from "@app/lib/zod"; + +import { TImmutableDBKeys } from "./models"; + +export const PamDomainsSchema = z.object({ + id: z.string().uuid(), + projectId: z.string(), + name: z.string(), + domainType: z.string(), + gatewayId: z.string().uuid().nullable().optional(), + encryptedConnectionDetails: zodBuffer, + encryptedRotationAccountCredentials: zodBuffer.nullable().optional(), + discoveryFingerprint: z.string().nullable().optional(), + createdAt: z.date(), + updatedAt: z.date() +}); + +export type TPamDomains = z.infer; +export type TPamDomainsInsert = Omit, TImmutableDBKeys>; +export type TPamDomainsUpdate = Partial, TImmutableDBKeys>>; diff --git a/backend/src/db/schemas/pam-resources.ts b/backend/src/db/schemas/pam-resources.ts index b77d17eda09..7ca08df545c 100644 --- a/backend/src/db/schemas/pam-resources.ts +++ b/backend/src/db/schemas/pam-resources.ts @@ -20,8 +20,8 @@ export const PamResourcesSchema = z.object({ updatedAt: z.date(), encryptedRotationAccountCredentials: zodBuffer.nullable().optional(), encryptedResourceMetadata: zodBuffer.nullable().optional(), - adServerResourceId: z.string().uuid().nullable().optional(), - discoveryFingerprint: z.string().nullable().optional() + discoveryFingerprint: z.string().nullable().optional(), + domainId: z.string().uuid().nullable().optional() }); export type TPamResources = z.infer; diff --git a/backend/src/db/schemas/resource-metadata.ts b/backend/src/db/schemas/resource-metadata.ts index 4bb113d1391..c2f0acf01d8 100644 --- a/backend/src/db/schemas/resource-metadata.ts +++ b/backend/src/db/schemas/resource-metadata.ts @@ -25,7 +25,8 @@ export const ResourceMetadataSchema = z.object({ certificateRequestId: z.string().uuid().nullable().optional(), certificateRequestCreatedAt: z.date().nullable().optional(), pamResourceId: z.string().uuid().nullable().optional(), - pamAccountId: z.string().uuid().nullable().optional() + pamAccountId: z.string().uuid().nullable().optional(), + pamDomainId: z.string().uuid().nullable().optional() }); export type TResourceMetadata = z.infer; diff --git a/backend/src/ee/routes/v1/index.ts b/backend/src/ee/routes/v1/index.ts index e75e6871ac9..3349f6e78f9 100644 --- a/backend/src/ee/routes/v1/index.ts +++ b/backend/src/ee/routes/v1/index.ts @@ -31,6 +31,11 @@ import { PAM_ACCOUNT_REGISTER_ROUTER_MAP } from "./pam-account-routers"; import { registerPamAccountRouter } from "./pam-account-routers/pam-account-router"; import { PAM_DISCOVERY_REGISTER_ROUTER_MAP } from "./pam-discovery-routers"; import { registerPamDiscoveryRouter } from "./pam-discovery-routers/pam-discovery-router"; +import { + PAM_DOMAIN_ACCOUNT_REGISTER_ROUTER_MAP, + PAM_DOMAIN_REGISTER_ROUTER_MAP, + registerPamDomainRouter +} from "./pam-domain-routers"; import { registerPamFolderRouter } from "./pam-folder-router"; import { PAM_RESOURCE_REGISTER_ROUTER_MAP } from "./pam-resource-routers"; import { registerPamResourceRotationRulesRouter } from "./pam-resource-routers/pam-resource-rotation-rules-router"; @@ -202,6 +207,19 @@ export const registerV1EERoutes = async (server: FastifyZodProvider) => { async (pamRouter) => { await pamRouter.register(registerPamFolderRouter, { prefix: "/folders" }); await pamRouter.register(registerPamSessionRouter, { prefix: "/sessions" }); + await pamRouter.register( + async (pamDomainRouter) => { + await pamDomainRouter.register(registerPamDomainRouter); + + // Domain-type-specific endpoints + await Promise.all( + Object.entries(PAM_DOMAIN_REGISTER_ROUTER_MAP).map(([provider, router]) => + pamDomainRouter.register(router, { prefix: `/${provider}` }) + ) + ); + }, + { prefix: "/domains" } + ); await pamRouter.register( async (pamDiscoveryRouter) => { await pamDiscoveryRouter.register(registerPamDiscoveryRouter); @@ -220,12 +238,19 @@ export const registerV1EERoutes = async (server: FastifyZodProvider) => { async (pamAccountRouter) => { await pamAccountRouter.register(registerPamAccountRouter); - // Provider-specific endpoints + // Resource-type-specific account endpoints await Promise.all( Object.entries(PAM_ACCOUNT_REGISTER_ROUTER_MAP).map(([provider, router]) => pamAccountRouter.register(router, { prefix: `/${provider}` }) ) ); + + // Domain-type-specific account endpoints + await Promise.all( + Object.entries(PAM_DOMAIN_ACCOUNT_REGISTER_ROUTER_MAP).map(([provider, router]) => + pamAccountRouter.register(router, { prefix: `/${provider}` }) + ) + ); }, { prefix: "/accounts" } ); diff --git a/backend/src/ee/routes/v1/pam-account-routers/index.ts b/backend/src/ee/routes/v1/pam-account-routers/index.ts index 3f9eb4e1f45..d421df50a0c 100644 --- a/backend/src/ee/routes/v1/pam-account-routers/index.ts +++ b/backend/src/ee/routes/v1/pam-account-routers/index.ts @@ -1,8 +1,3 @@ -import { - CreateActiveDirectoryAccountSchema, - SanitizedActiveDirectoryAccountWithResourceSchema, - UpdateActiveDirectoryAccountSchema -} from "@app/ee/services/pam-resource/active-directory/active-directory-resource-schemas"; import { CreateAwsIamAccountSchema, SanitizedAwsIamAccountWithResourceSchema, @@ -56,7 +51,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.Postgres, + parentType: PamResource.Postgres, accountResponseSchema: SanitizedPostgresAccountWithResourceSchema, createAccountSchema: CreatePostgresAccountSchema, updateAccountSchema: UpdatePostgresAccountSchema @@ -65,7 +60,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.MySQL, + parentType: PamResource.MySQL, accountResponseSchema: SanitizedMySQLAccountWithResourceSchema, createAccountSchema: CreateMySQLAccountSchema, updateAccountSchema: UpdateMySQLAccountSchema @@ -74,7 +69,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.MsSQL, + parentType: PamResource.MsSQL, accountResponseSchema: SanitizedMsSQLAccountWithResourceSchema, createAccountSchema: CreateMsSQLAccountSchema, updateAccountSchema: UpdateMsSQLAccountSchema @@ -83,7 +78,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.Redis, + parentType: PamResource.Redis, accountResponseSchema: SanitizedRedisAccountWithResourceSchema, createAccountSchema: CreateRedisAccountSchema, updateAccountSchema: UpdateRedisAccountSchema @@ -92,7 +87,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.MongoDB, + parentType: PamResource.MongoDB, accountResponseSchema: SanitizedMongoDBAccountWithResourceSchema, createAccountSchema: CreateMongoDBAccountSchema, updateAccountSchema: UpdateMongoDBAccountSchema @@ -101,7 +96,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.SSH, + parentType: PamResource.SSH, accountResponseSchema: SanitizedSSHAccountWithResourceSchema, createAccountSchema: CreateSSHAccountSchema, updateAccountSchema: UpdateSSHAccountSchema @@ -110,7 +105,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.Kubernetes, + parentType: PamResource.Kubernetes, accountResponseSchema: SanitizedKubernetesAccountWithResourceSchema, createAccountSchema: CreateKubernetesAccountSchema, updateAccountSchema: UpdateKubernetesAccountSchema @@ -119,7 +114,7 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.AwsIam, + parentType: PamResource.AwsIam, accountResponseSchema: SanitizedAwsIamAccountWithResourceSchema, createAccountSchema: CreateAwsIamAccountSchema, updateAccountSchema: UpdateAwsIamAccountSchema @@ -128,19 +123,10 @@ export const PAM_ACCOUNT_REGISTER_ROUTER_MAP: Record { registerPamAccountEndpoints({ server, - resourceType: PamResource.Windows, + parentType: PamResource.Windows, accountResponseSchema: SanitizedWindowsAccountWithResourceSchema, createAccountSchema: CreateWindowsAccountSchema, updateAccountSchema: UpdateWindowsAccountSchema }); - }, - [PamResource.ActiveDirectory]: async (server: FastifyZodProvider) => { - registerPamAccountEndpoints({ - server, - resourceType: PamResource.ActiveDirectory, - accountResponseSchema: SanitizedActiveDirectoryAccountWithResourceSchema, - createAccountSchema: CreateActiveDirectoryAccountSchema, - updateAccountSchema: UpdateActiveDirectoryAccountSchema - }); } }; diff --git a/backend/src/ee/routes/v1/pam-account-routers/pam-account-endpoints.ts b/backend/src/ee/routes/v1/pam-account-routers/pam-account-endpoints.ts index 92bc6576f87..6e3747cc032 100644 --- a/backend/src/ee/routes/v1/pam-account-routers/pam-account-endpoints.ts +++ b/backend/src/ee/routes/v1/pam-account-routers/pam-account-endpoints.ts @@ -1,7 +1,7 @@ import { z } from "zod"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; -import { PamResource } from "@app/ee/services/pam-resource/pam-resource-enums"; +import { PamParentType } from "@app/ee/services/pam-account/pam-account-enums"; import { TPamAccount } from "@app/ee/services/pam-resource/pam-resource-types"; import { writeLimit } from "@app/server/config/rateLimiter"; import { getTelemetryDistinctId } from "@app/server/lib/telemetry"; @@ -12,16 +12,17 @@ import { PostHogEventTypes } from "@app/services/telemetry/telemetry-types"; export const registerPamAccountEndpoints = ({ server, - resourceType, + parentType, createAccountSchema, updateAccountSchema, accountResponseSchema }: { server: FastifyZodProvider; - resourceType: PamResource; + parentType: PamParentType; createAccountSchema: z.ZodType<{ credentials: C["credentials"]; - resourceId: C["resourceId"]; + resourceId?: C["resourceId"]; + domainId?: C["domainId"]; folderId?: C["folderId"]; name: C["name"]; description?: C["description"]; @@ -39,9 +40,9 @@ export const registerPamAccountEndpoints = ({ }>; accountResponseSchema: z.ZodTypeAny; }) => { - // Convert resource type enum value to PascalCase for operation IDs + // Convert parent type enum value to PascalCase for operation IDs // e.g., "postgres" -> "Postgres", "aws-iam" -> "AwsIam" - const resourceTypeId = resourceType + const parentTypeId = parentType .split("-") .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) .join(""); @@ -53,7 +54,7 @@ export const registerPamAccountEndpoints = ({ rateLimit: writeLimit }, schema: { - operationId: `create${resourceTypeId}PamAccount`, + operationId: `create${parentTypeId}PamAccount`, description: "Create PAM account", body: createAccountSchema, response: { @@ -64,7 +65,14 @@ export const registerPamAccountEndpoints = ({ }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const account = await server.services.pamAccount.create(req.body, req.permission); + const account = await server.services.pamAccount.create( + { + ...req.body, + resourceId: req.body.resourceId ?? undefined, + domainId: req.body.domainId ?? undefined + }, + req.permission + ); await server.services.auditLog.createAuditLog({ ...req.auditLogInfo, @@ -74,7 +82,8 @@ export const registerPamAccountEndpoints = ({ type: EventType.PAM_ACCOUNT_CREATE, metadata: { resourceId: req.body.resourceId, - resourceType, + domainId: req.body.domainId, + parentType, folderId: req.body.folderId, name: req.body.name, description: req.body.description, @@ -89,7 +98,7 @@ export const registerPamAccountEndpoints = ({ distinctId: getTelemetryDistinctId(req), organizationId: req.permission.orgId, properties: { - resourceType, + parentType, projectId: account.projectId } }) @@ -106,7 +115,7 @@ export const registerPamAccountEndpoints = ({ rateLimit: writeLimit }, schema: { - operationId: `update${resourceTypeId}PamAccount`, + operationId: `update${parentTypeId}PamAccount`, description: "Update PAM account", params: z.object({ accountId: z.string().uuid() @@ -137,7 +146,8 @@ export const registerPamAccountEndpoints = ({ metadata: { accountId: req.params.accountId, resourceId: account.resourceId, - resourceType, + domainId: account.domainId, + parentType, name: req.body.name, description: req.body.description, requireMfa: req.body.requireMfa @@ -156,7 +166,7 @@ export const registerPamAccountEndpoints = ({ rateLimit: writeLimit }, schema: { - operationId: `delete${resourceTypeId}PamAccount`, + operationId: `delete${parentTypeId}PamAccount`, description: "Delete PAM account", params: z.object({ accountId: z.string().uuid() @@ -181,7 +191,8 @@ export const registerPamAccountEndpoints = ({ accountId: req.params.accountId, accountName: account.name, resourceId: account.resourceId, - resourceType + domainId: account.domainId, + parentType } } }); @@ -192,7 +203,7 @@ export const registerPamAccountEndpoints = ({ distinctId: getTelemetryDistinctId(req), organizationId: req.permission.orgId, properties: { - resourceType, + parentType, projectId: account.projectId } }) diff --git a/backend/src/ee/routes/v1/pam-account-routers/pam-account-router.ts b/backend/src/ee/routes/v1/pam-account-routers/pam-account-router.ts index 2e4275c5504..3df62afbb09 100644 --- a/backend/src/ee/routes/v1/pam-account-routers/pam-account-router.ts +++ b/backend/src/ee/routes/v1/pam-account-routers/pam-account-router.ts @@ -1,13 +1,14 @@ import type WebSocket from "ws"; import { z } from "zod"; -import { PamAccountDependenciesSchema } from "@app/db/schemas"; +import { PamAccountDependenciesSchema, PamDomainsSchema, PamResourcesSchema } from "@app/db/schemas"; import { AuditLogInfo, EventType, UserAgentType } from "@app/ee/services/audit-log/audit-log-types"; -import { PamAccountOrderBy, PamAccountView } from "@app/ee/services/pam-account/pam-account-enums"; +import { PamAccountOrderBy, PamAccountView, PamParentType } from "@app/ee/services/pam-account/pam-account-enums"; import { ActiveDirectoryAccountCredentialsSchema, - SanitizedActiveDirectoryAccountWithResourceSchema -} from "@app/ee/services/pam-resource/active-directory/active-directory-resource-schemas"; + SanitizedActiveDirectoryAccountWithDomainSchema +} from "@app/ee/services/pam-domain/active-directory/active-directory-domain-schemas"; +import { PamDomainType } from "@app/ee/services/pam-domain/pam-domain-enums"; import { AwsIamAccountCredentialsSchema, SanitizedAwsIamAccountWithResourceSchema @@ -58,7 +59,7 @@ import { TokenType } from "@app/services/auth-token/auth-token-types"; import { PostHogEventTypes } from "@app/services/telemetry/telemetry-types"; const SanitizedAccountSchema = z - .discriminatedUnion("resourceType", [ + .discriminatedUnion("parentType", [ SanitizedKubernetesAccountWithResourceSchema, SanitizedSSHAccountWithResourceSchema, SanitizedPostgresAccountWithResourceSchema, @@ -68,7 +69,7 @@ const SanitizedAccountSchema = z SanitizedRedisAccountWithResourceSchema, SanitizedAwsIamAccountWithResourceSchema, SanitizedWindowsAccountWithResourceSchema, - SanitizedActiveDirectoryAccountWithResourceSchema + SanitizedActiveDirectoryAccountWithDomainSchema ]) .and( z.object({ @@ -85,49 +86,50 @@ const ListPamAccountsResponseSchema = z.object({ const AccountCredentialsBaseSchema = z.object({ accountId: z.string().uuid(), accountName: z.string(), - resourceName: z.string(), - projectId: z.string().uuid() + projectId: z.string().uuid(), + resource: PamResourcesSchema.pick({ id: true, name: true, resourceType: true }).nullable().optional(), + domain: PamDomainsSchema.pick({ id: true, name: true, domainType: true }).nullable().optional() }); -const AccountCredentialsResponseSchema = z.discriminatedUnion("resourceType", [ +const AccountCredentialsResponseSchema = z.discriminatedUnion("parentType", [ AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.Postgres), + parentType: z.literal(PamResource.Postgres), credentials: PostgresAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.MySQL), + parentType: z.literal(PamResource.MySQL), credentials: MySQLAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.MsSQL), + parentType: z.literal(PamResource.MsSQL), credentials: MsSQLAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.MongoDB), + parentType: z.literal(PamResource.MongoDB), credentials: MongoDBAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.SSH), - credentials: SSHAccountCredentialsSchema + parentType: z.literal(PamResource.Redis), + credentials: RedisAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.Redis), - credentials: RedisAccountCredentialsSchema + parentType: z.literal(PamResource.SSH), + credentials: SSHAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.Kubernetes), + parentType: z.literal(PamResource.Kubernetes), credentials: KubernetesAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.AwsIam), + parentType: z.literal(PamResource.AwsIam), credentials: AwsIamAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.Windows), + parentType: z.literal(PamResource.Windows), credentials: WindowsAccountCredentialsSchema }), AccountCredentialsBaseSchema.extend({ - resourceType: z.literal(PamResource.ActiveDirectory), + parentType: z.literal(PamDomainType.ActiveDirectory), credentials: ActiveDirectoryAccountCredentialsSchema }) ]); @@ -267,7 +269,7 @@ export const registerPamAccountRouter = async (server: FastifyZodProvider) => { distinctId: getTelemetryDistinctId(req), organizationId: req.permission.orgId, properties: { - resourceType: account.resourceType, + parentType: account.parentType as PamParentType, projectId: account.projectId } }) @@ -359,8 +361,10 @@ export const registerPamAccountRouter = async (server: FastifyZodProvider) => { metadata: { accountId: result.accountId, accountName: result.accountName, - resourceId: result.resourceId, - resourceType: result.resourceType + resourceId: result.resource?.id, + resourceType: result.resource?.resourceType, + domainId: result.domain?.id, + domainType: result.domain?.domainType } } }); @@ -451,6 +455,7 @@ export const registerPamAccountRouter = async (server: FastifyZodProvider) => { orderDirection: z.nativeEnum(OrderByDirection).default(OrderByDirection.ASC), search: z.string().trim().optional(), filterResourceIds: z.array(z.string().uuid()).optional(), + filterDomainIds: z.array(z.string().uuid()).optional(), metadata: z .array( z.object({ @@ -466,8 +471,18 @@ export const registerPamAccountRouter = async (server: FastifyZodProvider) => { }, onRequest: verifyAuth([AuthMode.JWT]), handler: async (req) => { - const { projectId, accountView, limit, offset, search, orderBy, orderDirection, filterResourceIds, metadata } = - req.body; + const { + projectId, + accountView, + limit, + offset, + search, + orderBy, + orderDirection, + filterResourceIds, + filterDomainIds, + metadata + } = req.body; const { accounts, totalCount } = await server.services.pamAccount.list({ actorId: req.permission.id, @@ -482,6 +497,7 @@ export const registerPamAccountRouter = async (server: FastifyZodProvider) => { orderBy, orderDirection, filterResourceIds, + filterDomainIds, metadataFilter: metadata }); diff --git a/backend/src/ee/routes/v1/pam-domain-routers/index.ts b/backend/src/ee/routes/v1/pam-domain-routers/index.ts new file mode 100644 index 00000000000..ab5f2eb4323 --- /dev/null +++ b/backend/src/ee/routes/v1/pam-domain-routers/index.ts @@ -0,0 +1,44 @@ +import { registerPamAccountEndpoints } from "@app/ee/routes/v1/pam-account-routers/pam-account-endpoints"; +import { + CreateActiveDirectoryAccountSchema, + SanitizedActiveDirectoryAccountWithDomainSchema, + UpdateActiveDirectoryAccountSchema +} from "@app/ee/services/pam-domain/active-directory/active-directory-domain-schemas"; +import { PamDomainType } from "@app/ee/services/pam-domain/pam-domain-enums"; +import { + CreateActiveDirectoryDomainSchema, + SanitizedActiveDirectoryDomainSchema, + UpdateActiveDirectoryDomainSchema +} from "@app/ee/services/pam-domain/pam-domain-schemas"; + +import { registerActiveDirectoryRelatedResourcesEndpoint, registerPamDomainEndpoints } from "./pam-domain-endpoints"; + +export { registerPamDomainRouter } from "./pam-domain-router"; + +export const PAM_DOMAIN_REGISTER_ROUTER_MAP: Record Promise> = { + [PamDomainType.ActiveDirectory]: async (server: FastifyZodProvider) => { + registerPamDomainEndpoints({ + server, + domainType: PamDomainType.ActiveDirectory, + domainResponseSchema: SanitizedActiveDirectoryDomainSchema, + createDomainSchema: CreateActiveDirectoryDomainSchema, + updateDomainSchema: UpdateActiveDirectoryDomainSchema + }); + registerActiveDirectoryRelatedResourcesEndpoint(server); + } +}; + +export const PAM_DOMAIN_ACCOUNT_REGISTER_ROUTER_MAP: Record< + PamDomainType, + (server: FastifyZodProvider) => Promise +> = { + [PamDomainType.ActiveDirectory]: async (server: FastifyZodProvider) => { + registerPamAccountEndpoints({ + server, + parentType: PamDomainType.ActiveDirectory, + accountResponseSchema: SanitizedActiveDirectoryAccountWithDomainSchema, + createAccountSchema: CreateActiveDirectoryAccountSchema, + updateAccountSchema: UpdateActiveDirectoryAccountSchema + }); + } +}; diff --git a/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-endpoints.ts b/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-endpoints.ts new file mode 100644 index 00000000000..54b6fbb61ce --- /dev/null +++ b/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-endpoints.ts @@ -0,0 +1,220 @@ +import { z } from "zod"; + +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { PamDomainType } from "@app/ee/services/pam-domain/pam-domain-enums"; +import { TPamDomain } from "@app/ee/services/pam-domain/pam-domain-types"; +import { SanitizedWindowsResourceSchema } from "@app/ee/services/pam-resource/windows-server/windows-server-resource-schemas"; +import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; +import { ResourceMetadataNonEncryptionSchema } from "@app/services/resource-metadata/resource-metadata-schema"; + +export const registerPamDomainEndpoints = ({ + server, + domainType, + createDomainSchema, + updateDomainSchema, + domainResponseSchema +}: { + server: FastifyZodProvider; + domainType: PamDomainType; + createDomainSchema: z.ZodType<{ + projectId: T["projectId"]; + connectionDetails: T["connectionDetails"]; + gatewayId?: string; + name: T["name"]; + metadata?: z.input; + }>; + updateDomainSchema: z.ZodType<{ + connectionDetails?: T["connectionDetails"]; + gatewayId?: string; + name?: T["name"]; + metadata?: z.input; + }>; + domainResponseSchema: z.ZodTypeAny; +}) => { + const domainTypeId = domainType + .split("-") + .map((word) => word.charAt(0).toUpperCase() + word.slice(1)) + .join(""); + + server.route({ + method: "GET", + url: "/:domainId", + config: { rateLimit: readLimit }, + schema: { + operationId: `get${domainTypeId}PamDomain`, + description: `Get ${domainTypeId} PAM domain`, + params: z.object({ domainId: z.string().uuid() }), + response: { + 200: z.object({ + domain: domainResponseSchema + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const domain = await server.services.pamDomain.getById(req.params.domainId, domainType, req.permission); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: domain.projectId, + event: { + type: EventType.PAM_DOMAIN_GET, + metadata: { + domainId: domain.id, + domainType: domain.domainType, + name: domain.name + } + } + }); + + return { domain }; + } + }); + + server.route({ + method: "POST", + url: "/", + config: { rateLimit: writeLimit }, + schema: { + operationId: `create${domainTypeId}PamDomain`, + description: `Create ${domainTypeId} PAM domain`, + body: createDomainSchema, + response: { + 200: z.object({ + domain: domainResponseSchema + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const domain = await server.services.pamDomain.create( + { + ...req.body, + domainType + }, + req.permission + ); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: req.body.projectId, + event: { + type: EventType.PAM_DOMAIN_CREATE, + metadata: { + domainType, + ...(req.body.gatewayId && { gatewayId: req.body.gatewayId }), + name: req.body.name + } + } + }); + + return { domain }; + } + }); + + server.route({ + method: "PATCH", + url: "/:domainId", + config: { rateLimit: writeLimit }, + schema: { + operationId: `update${domainTypeId}PamDomain`, + description: `Update ${domainTypeId} PAM domain`, + params: z.object({ domainId: z.string().uuid() }), + body: updateDomainSchema, + response: { + 200: z.object({ + domain: domainResponseSchema + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const domain = await server.services.pamDomain.updateById( + { + ...req.body, + domainId: req.params.domainId + }, + req.permission + ); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: domain.projectId, + event: { + type: EventType.PAM_DOMAIN_UPDATE, + metadata: { + domainId: req.params.domainId, + domainType, + ...(req.body.gatewayId && { gatewayId: req.body.gatewayId }), + ...(req.body.name && { name: req.body.name }) + } + } + }); + + return { domain }; + } + }); + + server.route({ + method: "DELETE", + url: "/:domainId", + config: { rateLimit: writeLimit }, + schema: { + operationId: `delete${domainTypeId}PamDomain`, + description: `Delete ${domainTypeId} PAM domain`, + params: z.object({ domainId: z.string().uuid() }), + response: { + 200: z.object({ + domain: domainResponseSchema + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const domain = await server.services.pamDomain.deleteById(req.params.domainId, req.permission); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId: domain.projectId, + event: { + type: EventType.PAM_DOMAIN_DELETE, + metadata: { + domainId: req.params.domainId, + domainType + } + } + }); + + return { domain }; + } + }); +}; + +export const registerActiveDirectoryRelatedResourcesEndpoint = (server: FastifyZodProvider) => { + server.route({ + method: "GET", + url: "/:domainId/related-resources", + config: { rateLimit: readLimit }, + schema: { + operationId: "listActiveDirectoryDomainRelatedResources", + description: "List resources related to an Active Directory domain", + params: z.object({ domainId: z.string().uuid() }), + response: { + 200: z.object({ + resources: SanitizedWindowsResourceSchema.array() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const resources = await server.services.pamDomain.listRelatedResources(req.params.domainId, req.permission); + return { resources }; + } + }); +}; diff --git a/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts b/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts new file mode 100644 index 00000000000..6b88bd8d933 --- /dev/null +++ b/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts @@ -0,0 +1,106 @@ +import { z } from "zod"; + +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { PamDomainOrderBy } from "@app/ee/services/pam-domain/pam-domain-enums"; +import { + ActiveDirectoryDomainListItemSchema, + SanitizedDomainSchema +} from "@app/ee/services/pam-domain/pam-domain-schemas"; +import { OrderByDirection } from "@app/lib/types"; +import { readLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; + +const DomainOptionsSchema = z.discriminatedUnion("domain", [ActiveDirectoryDomainListItemSchema]); + +export const registerPamDomainRouter = async (server: FastifyZodProvider) => { + server.route({ + method: "GET", + url: "/options", + config: { + rateLimit: readLimit + }, + schema: { + operationId: "listPamDomainOptions", + description: "List available PAM domain types", + response: { + 200: z.object({ + options: DomainOptionsSchema.array() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: () => { + const options = server.services.pamDomain.listDomainOptions(); + return { options }; + } + }); + + server.route({ + method: "GET", + url: "/", + config: { + rateLimit: readLimit + }, + schema: { + operationId: "listPamDomains", + description: "List PAM domains", + querystring: z.object({ + projectId: z.string().uuid(), + search: z.string().optional(), + limit: z.coerce.number().int().min(1).max(100).optional(), + offset: z.coerce.number().int().min(0).optional(), + orderBy: z.nativeEnum(PamDomainOrderBy).default(PamDomainOrderBy.Name), + orderDirection: z.nativeEnum(OrderByDirection).default(OrderByDirection.ASC), + filterDomainTypes: z + .string() + .transform((val) => + val + .split(",") + .map((s) => s.trim()) + .filter(Boolean) + ) + .optional(), + discoveryFingerprint: z.string().optional() + }), + response: { + 200: z.object({ + domains: SanitizedDomainSchema.array(), + totalCount: z.number() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const { projectId, search, limit, offset, orderBy, orderDirection, filterDomainTypes } = req.query; + + const { domains, totalCount } = await server.services.pamDomain.list({ + projectId, + search, + limit, + offset, + orderBy, + orderDirection, + filterDomainTypes, + actor: req.permission.type, + actorId: req.permission.id, + actorAuthMethod: req.permission.authMethod, + actorOrgId: req.permission.orgId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + projectId, + event: { + type: EventType.PAM_DOMAIN_LIST, + metadata: { + count: domains.length + } + } + }); + + return { domains, totalCount }; + } + }); +}; diff --git a/backend/src/ee/routes/v1/pam-resource-routers/index.ts b/backend/src/ee/routes/v1/pam-resource-routers/index.ts index 0fdc50ca5ce..ef58df57d7e 100644 --- a/backend/src/ee/routes/v1/pam-resource-routers/index.ts +++ b/backend/src/ee/routes/v1/pam-resource-routers/index.ts @@ -1,8 +1,3 @@ -import { - CreateActiveDirectoryResourceSchema, - SanitizedActiveDirectoryResourceSchema, - UpdateActiveDirectoryResourceSchema -} from "@app/ee/services/pam-resource/active-directory/active-directory-resource-schemas"; import { CreateAwsIamResourceSchema, SanitizedAwsIamResourceSchema, @@ -51,7 +46,6 @@ import { } from "@app/ee/services/pam-resource/windows-server/windows-server-resource-schemas"; import { - registerActiveDirectoryRelatedResourcesEndpoint, registerPamResourceEndpoints, registerSshCaPublicKeyEndpoint, registerSshCaSetupEndpoint @@ -140,15 +134,5 @@ export const PAM_RESOURCE_REGISTER_ROUTER_MAP: Record { - registerPamResourceEndpoints({ - server, - resourceType: PamResource.ActiveDirectory, - resourceResponseSchema: SanitizedActiveDirectoryResourceSchema, - createResourceSchema: CreateActiveDirectoryResourceSchema, - updateResourceSchema: UpdateActiveDirectoryResourceSchema - }); - registerActiveDirectoryRelatedResourcesEndpoint(server); } }; diff --git a/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-endpoints.ts b/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-endpoints.ts index a9d89327b95..486a6a13ee0 100644 --- a/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-endpoints.ts +++ b/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-endpoints.ts @@ -3,7 +3,6 @@ import { z } from "zod"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { PamResource } from "@app/ee/services/pam-resource/pam-resource-enums"; import { TPamResource } from "@app/ee/services/pam-resource/pam-resource-types"; -import { SanitizedWindowsResourceSchema } from "@app/ee/services/pam-resource/windows-server/windows-server-resource-schemas"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { getTelemetryDistinctId } from "@app/server/lib/telemetry"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; @@ -360,31 +359,3 @@ echo "" } }); }; - -export const registerActiveDirectoryRelatedResourcesEndpoint = (server: FastifyZodProvider) => { - server.route({ - method: "GET", - url: "/:resourceId/related-resources", - config: { - rateLimit: readLimit - }, - schema: { - operationId: "getActiveDirectoryRelatedResources", - description: "List resources that belong to this Active Directory domain", - params: z.object({ - resourceId: z.string().uuid() - }), - response: { - 200: z.object({ - resources: SanitizedWindowsResourceSchema.array() - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const resources = await server.services.pamResource.listRelatedResources(req.params.resourceId, req.permission); - - return { resources }; - } - }); -}; diff --git a/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-router.ts b/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-router.ts index 838eb308db8..ff3e11bae94 100644 --- a/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-router.ts +++ b/backend/src/ee/routes/v1/pam-resource-routers/pam-resource-router.ts @@ -2,10 +2,6 @@ import { z } from "zod"; import { PamAccountDependenciesSchema } from "@app/db/schemas"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; -import { - ActiveDirectoryResourceListItemSchema, - SanitizedActiveDirectoryResourceSchema -} from "@app/ee/services/pam-resource/active-directory/active-directory-resource-schemas"; import { AwsIamResourceListItemSchema, SanitizedAwsIamResourceSchema @@ -57,8 +53,7 @@ const SanitizedResourceSchema = z.discriminatedUnion("resourceType", [ SanitizedAwsIamResourceSchema, SanitizedMongoDBResourceSchema, SanitizedRedisResourceSchema, - SanitizedWindowsResourceSchema, - SanitizedActiveDirectoryResourceSchema + SanitizedWindowsResourceSchema ]); const SanitizedResourceWithFavoriteSchema = z.intersection( @@ -75,8 +70,7 @@ const ResourceOptionsSchema = z.discriminatedUnion("resource", [ AwsIamResourceListItemSchema, MongoDBResourceListItemSchema, RedisResourceListItemSchema, - WindowsResourceListItemSchema, - ActiveDirectoryResourceListItemSchema + WindowsResourceListItemSchema ]); export const registerPamResourceRouter = async (server: FastifyZodProvider) => { diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 3e0144513ee..6a31277e86b 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -1,4 +1,5 @@ import { ProjectType } from "@app/db/schemas"; +import { PamParentType } from "@app/ee/services/pam-account/pam-account-enums"; import { TCreateProjectTemplateDTO, TUpdateProjectTemplateDTO @@ -614,6 +615,11 @@ export enum EventType { PAM_RESOURCE_CREATE = "pam-resource-create", PAM_RESOURCE_UPDATE = "pam-resource-update", PAM_RESOURCE_DELETE = "pam-resource-delete", + PAM_DOMAIN_LIST = "pam-domain-list", + PAM_DOMAIN_GET = "pam-domain-get", + PAM_DOMAIN_CREATE = "pam-domain-create", + PAM_DOMAIN_UPDATE = "pam-domain-update", + PAM_DOMAIN_DELETE = "pam-domain-delete", PAM_DISCOVERY_SOURCE_LIST = "pam-discovery-source-list", PAM_DISCOVERY_SOURCE_GET = "pam-discovery-source-get", PAM_DISCOVERY_SOURCE_CREATE = "pam-discovery-source-create", @@ -4810,8 +4816,9 @@ interface PamWebAccessSessionTicketCreatedEvent { interface PamAccountCreateEvent { type: EventType.PAM_ACCOUNT_CREATE; metadata: { - resourceId: string; - resourceType: string; + resourceId?: string | null; + domainId?: string | null; + parentType: PamParentType; folderId?: string | null; name: string; description?: string | null; @@ -4823,8 +4830,9 @@ interface PamAccountUpdateEvent { type: EventType.PAM_ACCOUNT_UPDATE; metadata: { accountId: string; - resourceId: string; - resourceType: string; + resourceId?: string | null; + domainId?: string | null; + parentType: PamParentType; name?: string; description?: string | null; requireMfa?: boolean | null; @@ -4836,8 +4844,9 @@ interface PamAccountDeleteEvent { metadata: { accountName: string; accountId: string; - resourceId: string; - resourceType: string; + resourceId?: string | null; + domainId?: string | null; + parentType: PamParentType; }; } @@ -4867,8 +4876,10 @@ interface PamAccountReadCredentialsEvent { metadata: { accountId: string; accountName: string; - resourceId: string; - resourceType: string; + resourceId?: string | null; + resourceType?: string | null; + domainId?: string | null; + domainType?: string | null; }; } @@ -4915,6 +4926,49 @@ interface PamResourceDeleteEvent { }; } +interface PamDomainListEvent { + type: EventType.PAM_DOMAIN_LIST; + metadata: { + count: number; + }; +} + +interface PamDomainGetEvent { + type: EventType.PAM_DOMAIN_GET; + metadata: { + domainId: string; + domainType: string; + name: string; + }; +} + +interface PamDomainCreateEvent { + type: EventType.PAM_DOMAIN_CREATE; + metadata: { + domainType: string; + gatewayId?: string; + name: string; + }; +} + +interface PamDomainUpdateEvent { + type: EventType.PAM_DOMAIN_UPDATE; + metadata: { + domainId: string; + domainType: string; + gatewayId?: string; + name?: string; + }; +} + +interface PamDomainDeleteEvent { + type: EventType.PAM_DOMAIN_DELETE; + metadata: { + domainId: string; + domainType: string; + }; +} + interface PamDiscoverySourceListEvent { type: EventType.PAM_DISCOVERY_SOURCE_LIST; metadata: { @@ -6181,6 +6235,11 @@ export type Event = | PamResourceCreateEvent | PamResourceUpdateEvent | PamResourceDeleteEvent + | PamDomainListEvent + | PamDomainGetEvent + | PamDomainCreateEvent + | PamDomainUpdateEvent + | PamDomainDeleteEvent | PamDiscoverySourceListEvent | PamDiscoverySourceGetEvent | PamDiscoverySourceCreateEvent diff --git a/backend/src/ee/services/pam-account/pam-account-dal.ts b/backend/src/ee/services/pam-account/pam-account-dal.ts index fedf2ac2ab1..491cec74fe6 100644 --- a/backend/src/ee/services/pam-account/pam-account-dal.ts +++ b/backend/src/ee/services/pam-account/pam-account-dal.ts @@ -15,7 +15,7 @@ export type TPamAccountDALFactory = ReturnType; export const pamAccountDALFactory = (db: TDbClient) => { const orm = ormify(db, TableName.PamAccount); - const findByProjectIdWithResourceDetails = async ( + const findByProjectIdWithParentDetails = async ( { projectId, folderId, @@ -26,6 +26,7 @@ export const pamAccountDALFactory = (db: TDbClient) => { orderBy = PamAccountOrderBy.Name, orderDirection = OrderByDirection.ASC, filterResourceIds, + filterDomainIds, metadataFilter }: { projectId: string; @@ -37,6 +38,7 @@ export const pamAccountDALFactory = (db: TDbClient) => { orderBy?: PamAccountOrderBy; orderDirection?: OrderByDirection; filterResourceIds?: string[]; + filterDomainIds?: string[]; metadataFilter?: Array<{ key: string; value?: string }>; }, tx?: Knex @@ -45,6 +47,7 @@ export const pamAccountDALFactory = (db: TDbClient) => { const dbInstance = tx || db.replicaNode(); const query = dbInstance(TableName.PamAccount) .leftJoin(TableName.PamResource, `${TableName.PamAccount}.resourceId`, `${TableName.PamResource}.id`) + .leftJoin(TableName.PamDomain, `${TableName.PamAccount}.domainId`, `${TableName.PamDomain}.id`) .where(`${TableName.PamAccount}.projectId`, projectId); if (accountView === PamAccountView.Nested) { @@ -66,12 +69,24 @@ export const pamAccountDALFactory = (db: TDbClient) => { void q .whereRaw(`??.?? ILIKE ? ESCAPE '\\'`, [TableName.PamAccount, "name", pattern]) .orWhereRaw(`??.?? ILIKE ? ESCAPE '\\'`, [TableName.PamResource, "name", pattern]) + .orWhereRaw(`??.?? ILIKE ? ESCAPE '\\'`, [TableName.PamDomain, "name", pattern]) .orWhereRaw(`??.?? ILIKE ? ESCAPE '\\'`, [TableName.PamAccount, "description", pattern]); }); } - if (filterResourceIds && filterResourceIds.length) { + const hasResourceFilter = filterResourceIds && filterResourceIds.length > 0; + const hasDomainFilter = filterDomainIds && filterDomainIds.length > 0; + + if (hasResourceFilter && hasDomainFilter) { + void query.where((qb) => { + void qb + .whereIn(`${TableName.PamAccount}.resourceId`, filterResourceIds) + .orWhereIn(`${TableName.PamAccount}.domainId`, filterDomainIds); + }); + } else if (hasResourceFilter) { void query.whereIn(`${TableName.PamAccount}.resourceId`, filterResourceIds); + } else if (hasDomainFilter) { + void query.whereIn(`${TableName.PamAccount}.domainId`, filterDomainIds); } if (metadataFilter && metadataFilter.length > 0) { @@ -81,10 +96,20 @@ export const pamAccountDALFactory = (db: TDbClient) => { const countQuery = query.clone().count("*", { as: "count" }).first(); void query.select(selectAllTableCols(TableName.PamAccount)).select( - // resource + // resource (may be null for domain accounts) db.ref("name").withSchema(TableName.PamResource).as("resourceName"), db.ref("resourceType").withSchema(TableName.PamResource), - db.ref("encryptedRotationAccountCredentials").withSchema(TableName.PamResource) + db + .ref("encryptedRotationAccountCredentials") + .withSchema(TableName.PamResource) + .as("resourceEncryptedRotationAccountCredentials"), + // domain (may be null for resource accounts) + db.ref("name").withSchema(TableName.PamDomain).as("domainName"), + db.ref("domainType").withSchema(TableName.PamDomain), + db + .ref("encryptedRotationAccountCredentials") + .withSchema(TableName.PamDomain) + .as("domainEncryptedRotationAccountCredentials") ); const direction = orderDirection === OrderByDirection.ASC ? "ASC" : "DESC"; @@ -98,60 +123,103 @@ export const pamAccountDALFactory = (db: TDbClient) => { const [results, countResult] = await Promise.all([query, countQuery]); const totalCount = Number(countResult?.count || 0); - const accounts = results.map( - // @ts-expect-error resourceName, resourceType, encryptedRotationAccountCredentials are from joined table - ({ resourceId, resourceName, resourceType, encryptedRotationAccountCredentials, ...account }) => ({ - ...account, - resourceId, - resource: { - id: resourceId, - name: resourceName as string, - resourceType, - encryptedRotationAccountCredentials - } - }) - ); + const accounts = results.map((row) => { + const r = row as Record; + const rId = row.resourceId as string | null; + const dId = row.domainId as string | null; + + return { + ...row, + resourceId: rId, + domainId: dId, + resource: rId + ? { + id: rId, + name: r.resourceName as string, + resourceType: r.resourceType as string, + encryptedRotationAccountCredentials: r.resourceEncryptedRotationAccountCredentials as Buffer | null + } + : null, + domain: dId + ? { + id: dId, + name: r.domainName as string, + domainType: r.domainType as string, + encryptedRotationAccountCredentials: r.domainEncryptedRotationAccountCredentials as Buffer | null + } + : null + }; + }); + return { accounts, totalCount }; } catch (error) { - throw new DatabaseError({ error, name: "Find PAM accounts with resource details" }); + throw new DatabaseError({ error, name: "Find PAM accounts with parent details" }); } }; - const findByIdWithResourceDetails = async (accountId: string, tx?: Knex) => { + const findByIdWithParentDetails = async (accountId: string, tx?: Knex) => { try { const dbInstance = tx || db.replicaNode(); const result = await dbInstance(TableName.PamAccount) .leftJoin(TableName.PamResource, `${TableName.PamAccount}.resourceId`, `${TableName.PamResource}.id`) + .leftJoin(TableName.PamDomain, `${TableName.PamAccount}.domainId`, `${TableName.PamDomain}.id`) .where(`${TableName.PamAccount}.id`, accountId) .select(selectAllTableCols(TableName.PamAccount)) .select( + // resource (may be null for domain accounts) db.ref("name").withSchema(TableName.PamResource).as("resourceName"), db.ref("resourceType").withSchema(TableName.PamResource), - db.ref("encryptedRotationAccountCredentials").withSchema(TableName.PamResource) + db + .ref("encryptedRotationAccountCredentials") + .withSchema(TableName.PamResource) + .as("resourceEncryptedRotationAccountCredentials"), + // domain (may be null for resource accounts) + db.ref("name").withSchema(TableName.PamDomain).as("domainName"), + db.ref("domainType").withSchema(TableName.PamDomain), + db + .ref("encryptedRotationAccountCredentials") + .withSchema(TableName.PamDomain) + .as("domainEncryptedRotationAccountCredentials") ) .first(); if (!result) return null; - const { resourceId, resourceName, resourceType, encryptedRotationAccountCredentials, ...account } = result as { - resourceId: string; - resourceName: string; - resourceType: string; - encryptedRotationAccountCredentials: Buffer | null; - } & typeof result; + const { + resourceId, + domainId, + resourceName, + resourceType, + resourceEncryptedRotationAccountCredentials, + domainName, + domainType, + domainEncryptedRotationAccountCredentials, + ...account + } = result; return { ...account, resourceId, - resource: { - id: resourceId, - name: resourceName, - resourceType, - encryptedRotationAccountCredentials - } + domainId, + resource: resourceId + ? { + id: resourceId, + name: resourceName, + resourceType, + encryptedRotationAccountCredentials: resourceEncryptedRotationAccountCredentials + } + : null, + domain: domainId + ? { + id: domainId, + name: domainName, + domainType, + encryptedRotationAccountCredentials: domainEncryptedRotationAccountCredentials + } + : null }; } catch (error) { - throw new DatabaseError({ error, name: "Find PAM account by ID with resource details" }); + throw new DatabaseError({ error, name: "Find PAM account by ID with parent details" }); } }; @@ -170,14 +238,34 @@ export const pamAccountDALFactory = (db: TDbClient) => { return byAccountId; }; - const findRotationCandidates = async (resourceIds: string[], minIntervalSeconds: number, tx?: Knex) => { - if (!resourceIds.length) return []; + const findRotationCandidates = async ( + { + resourceIds, + domainIds, + minIntervalSeconds + }: { + resourceIds?: string[]; + domainIds?: string[]; + minIntervalSeconds: number; + }, + tx?: Knex + ) => { + const hasResourceIds = resourceIds && resourceIds.length > 0; + const hasDomainIds = domainIds && domainIds.length > 0; + if (!hasResourceIds && !hasDomainIds) return []; try { const cutoff = new Date(Date.now() - minIntervalSeconds * 1000); return await (tx || db.replicaNode())(TableName.PamAccount) - .whereIn("resourceId", resourceIds) + .where((qb) => { + if (hasResourceIds) { + void qb.whereIn("resourceId", resourceIds); + } + if (hasDomainIds) { + void qb.orWhereIn("domainId", domainIds); + } + }) .where((qb) => { void qb.whereNot("rotationStatus", "rotating").orWhereNull("rotationStatus"); }) @@ -194,8 +282,8 @@ export const pamAccountDALFactory = (db: TDbClient) => { return { ...orm, - findByProjectIdWithResourceDetails, - findByIdWithResourceDetails, + findByProjectIdWithParentDetails, + findByIdWithParentDetails, findMetadataByAccountIds, findRotationCandidates }; diff --git a/backend/src/ee/services/pam-account/pam-account-enums.ts b/backend/src/ee/services/pam-account/pam-account-enums.ts index 0c39e81bb67..dbaddeab206 100644 --- a/backend/src/ee/services/pam-account/pam-account-enums.ts +++ b/backend/src/ee/services/pam-account/pam-account-enums.ts @@ -1,3 +1,8 @@ +import { PamDomainType } from "../pam-domain/pam-domain-enums"; +import { PamResource } from "../pam-resource/pam-resource-enums"; + +export type PamParentType = PamResource | PamDomainType; + export enum PamAccountOrderBy { Name = "name" } diff --git a/backend/src/ee/services/pam-account/pam-account-fns.ts b/backend/src/ee/services/pam-account/pam-account-fns.ts index 679710e0ba7..2edd336761c 100644 --- a/backend/src/ee/services/pam-account/pam-account-fns.ts +++ b/backend/src/ee/services/pam-account/pam-account-fns.ts @@ -69,11 +69,11 @@ export const decryptAccountMessage = async ({ }; // Returns false for account types where all credential fields are already visible in the sanitized view -export const hasSensitiveCredentials = (resourceType: string, credentials: TPamAccountCredentials): boolean => { - if (resourceType === PamResource.AwsIam) return false; - if (resourceType === PamResource.Kubernetes) return false; +export const hasSensitiveCredentials = (parentType: string, credentials: TPamAccountCredentials): boolean => { + if (parentType === PamResource.AwsIam) return false; + if (parentType === PamResource.Kubernetes) return false; if ( - resourceType === PamResource.SSH && + parentType === PamResource.SSH && "authMethod" in credentials && credentials.authMethod === SSHAuthMethod.Certificate ) diff --git a/backend/src/ee/services/pam-account/pam-account-service.ts b/backend/src/ee/services/pam-account/pam-account-service.ts index 28b8bdcc541..d2107c023b2 100644 --- a/backend/src/ee/services/pam-account/pam-account-service.ts +++ b/backend/src/ee/services/pam-account/pam-account-service.ts @@ -2,6 +2,7 @@ import { ForbiddenError, subject } from "@casl/ability"; import picomatch from "picomatch"; import { ActionProjectType, OrganizationActionScope, TableName, TPamAccounts, TPamResources } from "@app/db/schemas"; +import { decryptDomainConnectionDetails } from "@app/ee/services/pam-domain/pam-domain-fns"; import { extractAwsAccountIdFromArn, generateConsoleFederationUrl, @@ -53,6 +54,9 @@ import { TUserDALFactory } from "@app/services/user/user-dal"; import { EventType, TAuditLogServiceFactory } from "../audit-log/audit-log-types"; import { TGatewayV2ServiceFactory } from "../gateway-v2/gateway-v2-service"; import { TPamAccountDependenciesDALFactory } from "../pam-discovery/pam-account-dependencies-dal"; +import { TPamDomainDALFactory } from "../pam-domain/pam-domain-dal"; +import { PamDomainType } from "../pam-domain/pam-domain-enums"; +import { PAM_DOMAIN_FACTORY_MAP } from "../pam-domain/pam-domain-factory"; import { TPamResourceDALFactory } from "../pam-resource/pam-resource-dal"; import { PamResource } from "../pam-resource/pam-resource-enums"; import { TPamResourceRotationRulesDALFactory } from "../pam-resource/pam-resource-rotation-rules-dal"; @@ -82,6 +86,7 @@ import { type TPamAccountServiceFactoryDep = { pamResourceDAL: TPamResourceDALFactory; + pamDomainDAL: TPamDomainDALFactory; pamSessionDAL: TPamSessionDALFactory; pamAccountDAL: TPamAccountDALFactory; pamResourceRotationRulesDAL: Pick; @@ -114,6 +119,7 @@ const ROTATION_CONCURRENCY_LIMIT = 10; export const pamAccountServiceFactory = ({ pamResourceDAL, + pamDomainDAL, pamSessionDAL, pamAccountDAL, pamResourceRotationRulesDAL, @@ -131,60 +137,123 @@ export const pamAccountServiceFactory = ({ resourceMetadataDAL, pamAccountDependenciesDAL }: TPamAccountServiceFactoryDep) => { + // Helper to resolve account parent (resource or domain) + const resolveAccountParent = async ({ + resourceId, + domainId + }: { + resourceId?: string | null; + domainId?: string | null; + }) => { + if (resourceId) { + const resource = await pamResourceDAL.findById(resourceId); + if (!resource) throw new NotFoundError({ message: `Resource with ID '${resourceId}' not found` }); + return { + projectId: resource.projectId, + name: resource.name, + resourceType: resource.resourceType, + domainType: null as string | null, + gatewayId: resource.gatewayId, + encryptedConnectionDetails: resource.encryptedConnectionDetails, + encryptedResourceMetadata: resource.encryptedResourceMetadata, + encryptedRotationAccountCredentials: resource.encryptedRotationAccountCredentials, + isResource: true as const, + raw: resource + }; + } + if (!domainId) throw new BadRequestError({ message: "Either resourceId or domainId must be provided" }); + const domain = await pamDomainDAL.findById(domainId); + if (!domain) throw new NotFoundError({ message: `Domain with ID '${domainId}' not found` }); + return { + projectId: domain.projectId, + name: domain.name, + resourceType: null as string | null, + domainType: domain.domainType, + gatewayId: domain.gatewayId, + encryptedConnectionDetails: domain.encryptedConnectionDetails, + encryptedResourceMetadata: null as Buffer | null, + encryptedRotationAccountCredentials: null as Buffer | null, + isResource: false as const, + raw: domain + }; + }; + const create = async ( - { credentials, resourceId, name, description, folderId, requireMfa, internalMetadata, metadata }: TCreateAccountDTO, + { + credentials, + resourceId, + domainId, + name, + description, + folderId, + requireMfa, + internalMetadata, + metadata + }: TCreateAccountDTO, actor: OrgServiceActor ) => { - const resource = await pamResourceDAL.findById(resourceId); - if (!resource) throw new NotFoundError({ message: `Resource with ID '${resourceId}' not found` }); + const parent = await resolveAccountParent({ resourceId, domainId }); const { permission } = await permissionService.getProjectPermission({ actor: actor.type, actorAuthMethod: actor.authMethod, actorId: actor.id, actorOrgId: actor.orgId, - projectId: resource.projectId, + projectId: parent.projectId, actionProjectType: ActionProjectType.PAM }); ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionPamAccountActions.Create, subject(ProjectPermissionSub.PamAccounts, { - resourceName: resource.name, accountName: name, - resourceType: resource.resourceType, + ...(parent.isResource && { resourceName: parent.name, resourceType: parent.resourceType }), + ...(!parent.isResource && { domainName: parent.name, domainType: parent.domainType }), metadata: (metadata || []).map(({ key, value }) => ({ key, value: value ?? "" })) }) ); - const connectionDetails = await decryptResourceConnectionDetails({ - projectId: resource.projectId, - encryptedConnectionDetails: resource.encryptedConnectionDetails, - kmsService - }); - - // Decrypt resource metadata if available - const resourceInternalMetadata = resource.encryptedResourceMetadata - ? await decryptResourceMetadata({ - encryptedMetadata: resource.encryptedResourceMetadata, - projectId: resource.projectId, - kmsService - }) - : undefined; - - const factory = PAM_RESOURCE_FACTORY_MAP[resource.resourceType as PamResource]( - resource.resourceType as PamResource, - connectionDetails, - resource.gatewayId, - gatewayV2Service, - resource.projectId, - resourceInternalMetadata - ); + let factory; + if (parent.isResource) { + const connectionDetails = await decryptResourceConnectionDetails({ + projectId: parent.projectId, + encryptedConnectionDetails: parent.encryptedConnectionDetails, + kmsService + }); + const resourceInternalMetadata = parent.encryptedResourceMetadata + ? await decryptResourceMetadata({ + encryptedMetadata: parent.encryptedResourceMetadata, + projectId: parent.projectId, + kmsService + }) + : undefined; + factory = PAM_RESOURCE_FACTORY_MAP[parent.resourceType as PamResource]( + parent.resourceType as PamResource, + connectionDetails, + parent.gatewayId, + gatewayV2Service, + parent.projectId, + resourceInternalMetadata + ); + } else { + const connectionDetails = await decryptDomainConnectionDetails({ + projectId: parent.projectId, + encryptedConnectionDetails: parent.encryptedConnectionDetails, + kmsService + }); + factory = PAM_DOMAIN_FACTORY_MAP[parent.domainType as PamDomainType]( + parent.domainType as PamDomainType, + connectionDetails, + parent.gatewayId, + gatewayV2Service, + parent.projectId + ); + } const validatedCredentials = await factory.validateAccountCredentials(credentials); const encryptedCredentials = await encryptAccountCredentials({ credentials: validatedCredentials, - projectId: resource.projectId, + projectId: parent.projectId, kmsService }); @@ -192,8 +261,9 @@ export const pamAccountServiceFactory = ({ const { account, insertedMetadata } = await pamAccountDAL.transaction(async (tx) => { const newAccount = await pamAccountDAL.create( { - projectId: resource.projectId, - resourceId: resource.id, + projectId: parent.projectId, + resourceId: resourceId || null, + domainId: domainId || null, encryptedCredentials, name, description, @@ -221,20 +291,29 @@ export const pamAccountServiceFactory = ({ }); return { - ...(await decryptAccount(account, resource.projectId, kmsService)), + ...(await decryptAccount(account, parent.projectId, kmsService)), + parentType: (parent.resourceType || parent.domainType)!, metadata: insertedMetadata?.map(({ id, key, value }) => ({ id, key, value: value ?? "" })) ?? [], - resourceType: resource.resourceType, - resource: { - id: resource.id, - name: resource.name, - resourceType: resource.resourceType, - rotationCredentialsConfigured: !!resource.encryptedRotationAccountCredentials - } + resource: parent.isResource + ? { + id: parent.raw.id, + name: parent.name, + resourceType: parent.resourceType, + rotationCredentialsConfigured: !!parent.encryptedRotationAccountCredentials + } + : null, + domain: !parent.isResource + ? { + id: parent.raw.id, + name: parent.name, + domainType: parent.domainType + } + : null }; } catch (err) { if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { throw new BadRequestError({ - message: `Account with name '${name}' already exists for this resource` + message: `Account with name '${name}' already exists` }); } @@ -249,8 +328,8 @@ export const pamAccountServiceFactory = ({ const account = await pamAccountDAL.findById(accountId); if (!account) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); - const resource = await pamResourceDAL.findById(account.resourceId); - if (!resource) throw new NotFoundError({ message: `Resource with ID '${account.resourceId}' not found` }); + const parent = await resolveAccountParent(account); + const resource = parent.isResource ? (parent.raw as TPamResources) : null; const { permission } = await permissionService.getProjectPermission({ actor: actor.type, @@ -268,9 +347,9 @@ export const pamAccountServiceFactory = ({ ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionPamAccountActions.Edit, subject(ProjectPermissionSub.PamAccounts, { - resourceName: resource.name, accountName: account.name, - resourceType: resource.resourceType, + ...(parent.isResource && { resourceName: parent.name, resourceType: parent.resourceType }), + ...(!parent.isResource && { domainName: parent.name, domainType: parent.domainType }), metadata: currentMetadata }) ); @@ -280,9 +359,9 @@ export const pamAccountServiceFactory = ({ ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionPamAccountActions.Edit, subject(ProjectPermissionSub.PamAccounts, { - resourceName: resource.name, accountName: name ?? account.name, - resourceType: resource.resourceType, + ...(parent.isResource && { resourceName: parent.name, resourceType: parent.resourceType }), + ...(!parent.isResource && { domainName: parent.name, domainType: parent.domainType }), metadata: metadata ? metadata.map(({ key, value }) => ({ key, value: value ?? "" })) : currentMetadata }) ); @@ -307,29 +386,42 @@ export const pamAccountServiceFactory = ({ } if (credentials !== undefined) { - const connectionDetails = await decryptResourceConnectionDetails({ - projectId: account.projectId, - encryptedConnectionDetails: resource.encryptedConnectionDetails, - kmsService - }); - - // Decrypt resource metadata if available - const resourceInternalMetadata = resource.encryptedResourceMetadata - ? await decryptResourceMetadata({ - encryptedMetadata: resource.encryptedResourceMetadata, - projectId: account.projectId, - kmsService - }) - : undefined; - - const factory = PAM_RESOURCE_FACTORY_MAP[resource.resourceType as PamResource]( - resource.resourceType as PamResource, - connectionDetails, - resource.gatewayId, - gatewayV2Service, - account.projectId, - resourceInternalMetadata - ); + let factory; + if (parent.isResource) { + const connectionDetails = await decryptResourceConnectionDetails({ + projectId: account.projectId, + encryptedConnectionDetails: parent.encryptedConnectionDetails, + kmsService + }); + const resourceInternalMetadata = parent.encryptedResourceMetadata + ? await decryptResourceMetadata({ + encryptedMetadata: parent.encryptedResourceMetadata, + projectId: account.projectId, + kmsService + }) + : undefined; + factory = PAM_RESOURCE_FACTORY_MAP[parent.resourceType as PamResource]( + parent.resourceType as PamResource, + connectionDetails, + parent.gatewayId, + gatewayV2Service, + account.projectId, + resourceInternalMetadata + ); + } else { + const connectionDetails = await decryptDomainConnectionDetails({ + projectId: account.projectId, + encryptedConnectionDetails: parent.encryptedConnectionDetails, + kmsService + }); + factory = PAM_DOMAIN_FACTORY_MAP[parent.domainType as PamDomainType]( + parent.domainType as PamDomainType, + connectionDetails, + parent.gatewayId, + gatewayV2Service, + account.projectId + ); + } const decryptedCredentials = await decryptAccountCredentials({ encryptedCredentials: account.encryptedCredentials, @@ -357,14 +449,23 @@ export const pamAccountServiceFactory = ({ const existingMeta = await pamAccountDAL.findMetadataByAccountIds([accountId]); return { ...(await decryptAccount(account, account.projectId, kmsService)), + parentType: resource?.resourceType || (!parent.isResource ? parent.domainType : "") || "", metadata: existingMeta[accountId] || [], - resourceType: resource.resourceType, - resource: { - id: resource.id, - name: resource.name, - resourceType: resource.resourceType, - rotationCredentialsConfigured: !!resource.encryptedRotationAccountCredentials - } + resource: resource + ? { + id: resource.id, + name: resource.name, + resourceType: resource.resourceType, + rotationCredentialsConfigured: !!resource.encryptedRotationAccountCredentials + } + : null, + domain: !parent.isResource + ? { + id: parent.raw.id, + name: parent.name, + domainType: parent.domainType + } + : null }; } @@ -394,14 +495,23 @@ export const pamAccountServiceFactory = ({ return { ...(await decryptAccount(updatedAccount, account.projectId, kmsService)), + parentType: resource?.resourceType || (!parent.isResource ? parent.domainType : "") || "", metadata: freshMeta[accountId] || [], - resourceType: resource.resourceType, - resource: { - id: resource.id, - name: resource.name, - resourceType: resource.resourceType, - rotationCredentialsConfigured: !!resource.encryptedRotationAccountCredentials - } + resource: resource + ? { + id: resource.id, + name: resource.name, + resourceType: resource.resourceType, + rotationCredentialsConfigured: !!resource.encryptedRotationAccountCredentials + } + : null, + domain: !parent.isResource + ? { + id: parent.raw.id, + name: parent.name, + domainType: parent.domainType + } + : null }; } catch (err) { if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { @@ -418,8 +528,7 @@ export const pamAccountServiceFactory = ({ const account = await pamAccountDAL.findById(id); if (!account) throw new NotFoundError({ message: `Account with ID '${id}' not found` }); - const resource = await pamResourceDAL.findById(account.resourceId); - if (!resource) throw new NotFoundError({ message: `Resource with ID '${account.resourceId}' not found` }); + const parent = await resolveAccountParent(account); const { permission } = await permissionService.getProjectPermission({ actor: actor.type, @@ -435,9 +544,9 @@ export const pamAccountServiceFactory = ({ ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionPamAccountActions.Delete, subject(ProjectPermissionSub.PamAccounts, { - resourceName: resource.name, accountName: account.name, - resourceType: resource.resourceType, + ...(parent.isResource && { resourceName: parent.name, resourceType: parent.resourceType }), + ...(!parent.isResource && { domainName: parent.name, domainType: parent.domainType }), metadata: accountMeta[id] || [] }) ); @@ -446,13 +555,22 @@ export const pamAccountServiceFactory = ({ return { ...(await decryptAccount(deletedAccount, account.projectId, kmsService)), - resourceType: resource.resourceType, - resource: { - id: resource.id, - name: resource.name, - resourceType: resource.resourceType, - rotationCredentialsConfigured: !!resource.encryptedRotationAccountCredentials - } + parentType: (parent.resourceType || parent.domainType)!, + resource: parent.isResource + ? { + id: parent.raw.id, + name: parent.name, + resourceType: parent.resourceType, + rotationCredentialsConfigured: !!parent.encryptedRotationAccountCredentials + } + : null, + domain: !parent.isResource + ? { + id: parent.raw.id, + name: parent.name, + domainType: parent.domainType + } + : null }; }; @@ -477,58 +595,75 @@ export const pamAccountServiceFactory = ({ const limit = params.limit || 20; const offset = params.offset || 0; - const { accounts: accountsWithResourceDetails, totalCount } = - await pamAccountDAL.findByProjectIdWithResourceDetails({ - projectId, - accountView, - offset, - limit, - search: params.search, - orderBy: params.orderBy, - orderDirection: params.orderDirection, - filterResourceIds: params.filterResourceIds, - metadataFilter: params.metadataFilter - }); + const { accounts: accountsWithParentDetails, totalCount } = await pamAccountDAL.findByProjectIdWithParentDetails({ + projectId, + accountView, + offset, + limit, + search: params.search, + orderBy: params.orderBy, + orderDirection: params.orderDirection, + filterResourceIds: params.filterResourceIds, + filterDomainIds: params.filterDomainIds, + metadataFilter: params.metadataFilter + }); const decryptedAndPermittedAccounts: Array< Omit & { - resource: Pick & { rotationCredentialsConfigured: boolean }; + resource: + | (Pick & { rotationCredentialsConfigured: boolean }) + | null; + domain: { id: string; name: string; domainType: string } | null; credentials: TPamAccountCredentials; lastRotationMessage: string | null; - resourceType: string; } > = []; // Fetch metadata for all accounts before permission loop - const allAccountIds = accountsWithResourceDetails.map((a) => a.id); + const allAccountIds = accountsWithParentDetails.map((a) => a.id); const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds(allAccountIds); - for await (const account of accountsWithResourceDetails) { - // Check permission for each individual account + for await (const account of accountsWithParentDetails) { if ( permission.can( ProjectPermissionPamAccountActions.Read, subject(ProjectPermissionSub.PamAccounts, { - resourceName: account.resource.name, accountName: account.name, - resourceType: account.resource.resourceType, + ...(account.resource && { + resourceName: account.resource.name, + resourceType: account.resource.resourceType + }), + ...(account.domain && { domainName: account.domain.name, domainType: account.domain.domainType }), metadata: metadataByAccountId[account.id] || [] }) ) ) { // Decrypt the account only if the user has permission to read it - const decryptedAccount = await decryptAccount(account, account.projectId, kmsService); + const decryptedAccount = await decryptAccount( + account as Parameters[0], + account.projectId, + kmsService + ); decryptedAndPermittedAccounts.push({ ...decryptedAccount, - resourceType: account.resource.resourceType, - resource: { - id: account.resource.id, - name: account.resource.name, - resourceType: account.resource.resourceType, - rotationCredentialsConfigured: !!account.resource.encryptedRotationAccountCredentials - } - }); + parentType: account.resource?.resourceType || account.domain?.domainType || "", + resource: account.resource + ? { + id: account.resource.id, + name: account.resource.name, + resourceType: account.resource.resourceType, + rotationCredentialsConfigured: !!account.resource.encryptedRotationAccountCredentials + } + : null, + domain: account.domain + ? { + id: account.domain.id, + name: account.domain.name, + domainType: account.domain.domainType + } + : null + } as unknown as (typeof decryptedAndPermittedAccounts)[0]); } } @@ -548,43 +683,58 @@ export const pamAccountServiceFactory = ({ }; const getById = async ({ accountId, actor, actorId, actorAuthMethod, actorOrgId }: TGetAccountByIdDTO) => { - const accountWithResource = await pamAccountDAL.findByIdWithResourceDetails(accountId); - if (!accountWithResource) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + const accountWithParent = await pamAccountDAL.findByIdWithParentDetails(accountId); + if (!accountWithParent) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); const { permission } = await permissionService.getProjectPermission({ actor, actorId, - projectId: accountWithResource.projectId, + projectId: accountWithParent.projectId, actorAuthMethod, actorOrgId, actionProjectType: ActionProjectType.PAM }); - const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([accountWithResource.id]); - const accountMetadata = metadataByAccountId[accountWithResource.id] || []; + const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([accountWithParent.id]); + const accountMetadata = metadataByAccountId[accountWithParent.id] || []; ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionPamAccountActions.Read, subject(ProjectPermissionSub.PamAccounts, { - resourceName: accountWithResource.resource.name, - accountName: accountWithResource.name, - resourceType: accountWithResource.resource.resourceType, + accountName: accountWithParent.name, + ...(accountWithParent.resource && { + resourceName: accountWithParent.resource.name, + resourceType: accountWithParent.resource.resourceType + }), + ...(accountWithParent.domain && { + domainName: accountWithParent.domain.name, + domainType: accountWithParent.domain.domainType + }), metadata: accountMetadata }) ); - const decryptedAccount = await decryptAccount(accountWithResource, accountWithResource.projectId, kmsService); + const decryptedAccount = await decryptAccount(accountWithParent, accountWithParent.projectId, kmsService); return { ...decryptedAccount, + parentType: accountWithParent.resource?.resourceType || accountWithParent.domain?.domainType || "", metadata: accountMetadata, - resourceType: accountWithResource.resource.resourceType, - resource: { - id: accountWithResource.resource.id, - name: accountWithResource.resource.name, - resourceType: accountWithResource.resource.resourceType, - rotationCredentialsConfigured: !!accountWithResource.resource.encryptedRotationAccountCredentials - } + resource: accountWithParent.resource + ? { + id: accountWithParent.resource.id, + name: accountWithParent.resource.name, + resourceType: accountWithParent.resource.resourceType, + rotationCredentialsConfigured: !!accountWithParent.resource.encryptedRotationAccountCredentials + } + : null, + domain: accountWithParent.domain + ? { + id: accountWithParent.domain.id, + name: accountWithParent.domain.name, + domainType: accountWithParent.domain.domainType + } + : null }; }; @@ -745,10 +895,6 @@ export const pamAccountServiceFactory = ({ kmsService ); - // Disable access to Active Directory - if (resourceType === PamResource.ActiveDirectory) - throw new BadRequestError({ message: `Active Directory resources cannot be accessed` }); - // Temporarily disable access to Windows Server if (resourceType === PamResource.Windows) throw new BadRequestError({ message: `Windows resources cannot be accessed at this time` }); @@ -980,7 +1126,7 @@ export const pamAccountServiceFactory = ({ const account = await pamAccountDAL.findById(session.accountId); if (!account) throw new NotFoundError({ message: `Account with ID '${session.accountId}' not found` }); - const resource = await pamResourceDAL.findById(account.resourceId); + const resource = await pamResourceDAL.findById(account.resourceId!); if (!resource) throw new NotFoundError({ message: `Resource with ID '${account.resourceId}' not found` }); if (resource.gatewayId && resource.gatewayIdentityId !== actor.id) { @@ -1093,13 +1239,16 @@ export const pamAccountServiceFactory = ({ if (minIntervalSeconds === Infinity) return []; const resourceIdsWithRules = Object.keys(rulesByResource); - const accounts = await pamAccountDAL.findRotationCandidates(resourceIdsWithRules, minIntervalSeconds); + const accounts = await pamAccountDAL.findRotationCandidates({ + resourceIds: resourceIdsWithRules, + minIntervalSeconds + }); const now = Date.now(); const dueAccounts: TPamAccounts[] = []; for (const account of accounts) { - const rules = rulesByResource[account.resourceId]; + const rules = rulesByResource[account.resourceId!]; // eslint-disable-next-line no-continue if (!rules) continue; @@ -1142,7 +1291,7 @@ export const pamAccountServiceFactory = ({ if (!claimed) return; // Read resource - const resource = await pamResourceDAL.findById(account.resourceId); + const resource = await pamResourceDAL.findById(account.resourceId!); if (!resource || !resource.encryptedRotationAccountCredentials) { logger.warn( `[Rotation] Resource or rotation credentials missing for account [accountId=${account.id}], releasing lock` @@ -1310,7 +1459,7 @@ export const pamAccountServiceFactory = ({ metadata: { accountId: account.id, accountName: account.name, - resourceId: account.resourceId, + resourceId: account.resourceId!, resourceType: logResourceType, errorMessage } @@ -1333,60 +1482,65 @@ export const pamAccountServiceFactory = ({ }; const triggerManualRotation = async (accountId: string, actor: OrgServiceActor) => { - const accountWithResource = await pamAccountDAL.findByIdWithResourceDetails(accountId); - if (!accountWithResource) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + const accountWithParent = await pamAccountDAL.findByIdWithParentDetails(accountId); + if (!accountWithParent) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + if (!accountWithParent.resource) + throw new NotFoundError({ message: `Resource not found for account '${accountId}'` }); const { permission } = await permissionService.getProjectPermission({ actor: actor.type, actorAuthMethod: actor.authMethod, actorId: actor.id, actorOrgId: actor.orgId, - projectId: accountWithResource.projectId, + projectId: accountWithParent.projectId, actionProjectType: ActionProjectType.PAM }); ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionPamAccountActions.TriggerRotation, subject(ProjectPermissionSub.PamAccounts, { - resourceName: accountWithResource.resource.name, - accountName: accountWithResource.name, - resourceType: accountWithResource.resource.resourceType + resourceName: accountWithParent.resource.name, + accountName: accountWithParent.name, + resourceType: accountWithParent.resource.resourceType }) ); - if (!accountWithResource.resource.encryptedRotationAccountCredentials) { + if (!accountWithParent.resource.encryptedRotationAccountCredentials) { throw new BadRequestError({ message: "Rotation credentials are not configured on this resource" }); } // Immediate check. There's an actual atomic lock in rotateAccount - if (accountWithResource.rotationStatus === PamAccountRotationStatus.Rotating) { + if (accountWithParent.rotationStatus === PamAccountRotationStatus.Rotating) { throw new BadRequestError({ message: "Account is already being rotated" }); } - await rotateAccount(accountWithResource); + await rotateAccount(accountWithParent); - const updatedAccountWithResource = await pamAccountDAL.findByIdWithResourceDetails(accountId); - if (!updatedAccountWithResource) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + const updatedAccountWithParent = await pamAccountDAL.findByIdWithParentDetails(accountId); + if (!updatedAccountWithParent) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + if (!updatedAccountWithParent.resource) + throw new NotFoundError({ message: `Resource not found for account '${accountId}'` }); - const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([updatedAccountWithResource.id]); - const accountMetadata = metadataByAccountId[updatedAccountWithResource.id] || []; + const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([updatedAccountWithParent.id]); + const accountMetadata = metadataByAccountId[updatedAccountWithParent.id] || []; const decryptedAccount = await decryptAccount( - updatedAccountWithResource, - updatedAccountWithResource.projectId, + updatedAccountWithParent, + updatedAccountWithParent.projectId, kmsService ); return { ...decryptedAccount, metadata: accountMetadata, - resourceType: updatedAccountWithResource.resource.resourceType, + parentType: updatedAccountWithParent.resource.resourceType, resource: { - id: updatedAccountWithResource.resource.id, - name: updatedAccountWithResource.resource.name, - resourceType: updatedAccountWithResource.resource.resourceType, - rotationCredentialsConfigured: !!updatedAccountWithResource.resource.encryptedRotationAccountCredentials - } + id: updatedAccountWithParent.resource.id, + name: updatedAccountWithParent.resource.name, + resourceType: updatedAccountWithParent.resource.resourceType, + rotationCredentialsConfigured: !!updatedAccountWithParent.resource.encryptedRotationAccountCredentials + }, + domain: null }; }; @@ -1398,46 +1552,54 @@ export const pamAccountServiceFactory = ({ actorAuthMethod, actorOrgId }: TViewAccountCredentialsDTO) => { - const accountWithResource = await pamAccountDAL.findByIdWithResourceDetails(accountId); - if (!accountWithResource) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + const accountWithParent = await pamAccountDAL.findByIdWithParentDetails(accountId); + if (!accountWithParent) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + if (!accountWithParent.resource && !accountWithParent.domain) + throw new NotFoundError({ message: `Parent not found for account '${accountId}'` }); const { permission } = await permissionService.getProjectPermission({ actor, actorId, - projectId: accountWithResource.projectId, + projectId: accountWithParent.projectId, actorAuthMethod, actorOrgId, actionProjectType: ActionProjectType.PAM }); - const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([accountWithResource.id]); - const accountMetadata = metadataByAccountId[accountWithResource.id] || []; + const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([accountWithParent.id]); + const accountMetadata = metadataByAccountId[accountWithParent.id] || []; ForbiddenError.from(permission).throwUnlessCan( ProjectPermissionPamAccountActions.ReadCredentials, subject(ProjectPermissionSub.PamAccounts, { - resourceName: accountWithResource.resource.name, - resourceType: accountWithResource.resource.resourceType, - accountName: accountWithResource.name, + accountName: accountWithParent.name, + ...(accountWithParent.resource && { + resourceName: accountWithParent.resource.name, + resourceType: accountWithParent.resource.resourceType + }), + ...(accountWithParent.domain && { + domainName: accountWithParent.domain.name, + domainType: accountWithParent.domain.domainType + }), metadata: accountMetadata }) ); - // Decrypt early so we can check if there are sensitive fields before triggering MFA + const parentType = accountWithParent.resource?.resourceType || accountWithParent.domain?.domainType || ""; + const credentials = await decryptAccountCredentials({ - encryptedCredentials: accountWithResource.encryptedCredentials, + encryptedCredentials: accountWithParent.encryptedCredentials, kmsService, - projectId: accountWithResource.projectId + projectId: accountWithParent.projectId }); - if (!hasSensitiveCredentials(accountWithResource.resource.resourceType, credentials)) { + if (!hasSensitiveCredentials(parentType, credentials)) { throw new BadRequestError({ message: "This account has no sensitive credentials to view" }); } - if (!mfaSessionId && accountWithResource.requireMfa) { - const project = await projectDAL.findById(accountWithResource.projectId); - if (!project) - throw new NotFoundError({ message: `Project with ID '${accountWithResource.projectId}' not found` }); + if (!mfaSessionId && accountWithParent.requireMfa) { + const project = await projectDAL.findById(accountWithParent.projectId); + if (!project) throw new NotFoundError({ message: `Project with ID '${accountWithParent.projectId}' not found` }); const actorUser = await userDAL.findById(actorId); if (!actorUser) throw new NotFoundError({ message: `User with ID '${actorId}' not found` }); @@ -1449,7 +1611,7 @@ export const pamAccountServiceFactory = ({ const userMfaMethod = actorUser.isMfaEnabled ? (actorUser.selectedMfaMethod as MfaMethod | null) : undefined; const mfaMethod = (orgMfaMethod ?? userMfaMethod ?? MfaMethod.EMAIL) as MfaMethod; - const newMfaSessionId = await mfaSessionService.createMfaSession(actorUser.id, accountWithResource.id, mfaMethod); + const newMfaSessionId = await mfaSessionService.createMfaSession(actorUser.id, accountWithParent.id, mfaMethod); if (mfaMethod === MfaMethod.EMAIL && actorUser.email) { await mfaSessionService.sendMfaCode(actorUser.id, actorUser.email); @@ -1465,7 +1627,7 @@ export const pamAccountServiceFactory = ({ }); } - if (mfaSessionId && accountWithResource.requireMfa) { + if (mfaSessionId && accountWithParent.requireMfa) { const mfaSession = await mfaSessionService.getMfaSession(mfaSessionId); if (!mfaSession) { throw new BadRequestError({ message: "MFA session not found or expired" }); @@ -1475,7 +1637,7 @@ export const pamAccountServiceFactory = ({ throw new BadRequestError({ message: "MFA session does not belong to current user" }); } - if (mfaSession.resourceId !== accountWithResource.id) { + if (mfaSession.resourceId !== accountWithParent.id) { throw new BadRequestError({ message: "MFA session is for a different account" }); } @@ -1488,12 +1650,24 @@ export const pamAccountServiceFactory = ({ return { credentials, - resourceType: accountWithResource.resource.resourceType, - accountId: accountWithResource.id, - accountName: accountWithResource.name, - resourceId: accountWithResource.resource.id, - resourceName: accountWithResource.resource.name, - projectId: accountWithResource.projectId + parentType, + accountId: accountWithParent.id, + accountName: accountWithParent.name, + projectId: accountWithParent.projectId, + resource: accountWithParent.resource + ? { + id: accountWithParent.resource.id, + name: accountWithParent.resource.name, + resourceType: accountWithParent.resource.resourceType + } + : null, + domain: accountWithParent.domain + ? { + id: accountWithParent.domain.id, + name: accountWithParent.domain.name, + domainType: accountWithParent.domain.domainType + } + : null }; }; diff --git a/backend/src/ee/services/pam-account/pam-account-types.ts b/backend/src/ee/services/pam-account/pam-account-types.ts index 5b1d033ed77..94e82c1f83a 100644 --- a/backend/src/ee/services/pam-account/pam-account-types.ts +++ b/backend/src/ee/services/pam-account/pam-account-types.ts @@ -9,8 +9,10 @@ import { PamAccountOrderBy, PamAccountView } from "./pam-account-enums"; // DTOs export type TCreateAccountDTO = Pick< TPamAccount, - "name" | "description" | "credentials" | "folderId" | "resourceId" | "requireMfa" + "name" | "description" | "credentials" | "folderId" | "requireMfa" > & { + resourceId?: string; + domainId?: string; internalMetadata?: Record; metadata?: z.input; }; @@ -39,6 +41,7 @@ export type TListAccountsDTO = { limit?: number; offset?: number; filterResourceIds?: string[]; + filterDomainIds?: string[]; metadataFilter?: Array<{ key: string; value?: string }>; } & TProjectPermission; diff --git a/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts b/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts index d25b83719bc..e97d89e8924 100644 --- a/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts +++ b/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts @@ -20,9 +20,11 @@ import { TPamAccountDALFactory } from "../../pam-account/pam-account-dal"; import { encryptAccountCredentials } from "../../pam-account/pam-account-fns"; import { TActiveDirectoryAccountCredentials, - TActiveDirectoryAccountInternalMetadata, - TActiveDirectoryResourceConnectionDetails -} from "../../pam-resource/active-directory/active-directory-resource-types"; + TActiveDirectoryAccountInternalMetadata +} from "../../pam-domain/active-directory/active-directory-domain-types"; +import { TPamDomainDALFactory } from "../../pam-domain/pam-domain-dal"; +import { PamDomainType } from "../../pam-domain/pam-domain-enums"; +import { encryptDomainConnectionDetails } from "../../pam-domain/pam-domain-fns"; import { TPamResourceDALFactory } from "../../pam-resource/pam-resource-dal"; import { PamResource } from "../../pam-resource/pam-resource-enums"; import { encryptResourceConnectionDetails, encryptResourceInternalMetadata } from "../../pam-resource/pam-resource-fns"; @@ -453,32 +455,32 @@ const executeLdapEnumeration = async ( ); }; -const upsertAdServerResource = async ( +const upsertDomain = async ( projectId: string, configuration: TAdDiscoveryConfiguration, gatewayId: string, kmsService: Pick, - pamResourceDAL: Pick, + pamDomainDAL: Pick, tx: Knex ) => { const fingerprint = configuration.domainFQDN.toLowerCase(); - const existing = await pamResourceDAL.find( + const existing = await pamDomainDAL.find( { projectId, - resourceType: PamResource.ActiveDirectory, + domainType: PamDomainType.ActiveDirectory, discoveryFingerprint: fingerprint }, { tx } ); if (existing.length > 0) { - return { resource: existing[0], isNew: false }; + return { domain: existing[0], isNew: false }; } const domainResourceName = toSlugName(configuration.domainFQDN); - const encryptedConnectionDetails = await encryptResourceConnectionDetails({ + const encryptedConnectionDetails = await encryptDomainConnectionDetails({ projectId, connectionDetails: { domain: configuration.domainFQDN, @@ -488,15 +490,15 @@ const upsertAdServerResource = async ( ldapRejectUnauthorized: configuration.ldapRejectUnauthorized, ldapCaCert: configuration.ldapCaCert, ldapTlsServerName: configuration.ldapTlsServerName - } as TActiveDirectoryResourceConnectionDetails, + }, kmsService }); - const resource = await pamResourceDAL.create( + const domain = await pamDomainDAL.create( { projectId, name: domainResourceName, - resourceType: PamResource.ActiveDirectory, + domainType: PamDomainType.ActiveDirectory, gatewayId, encryptedConnectionDetails, discoveryFingerprint: fingerprint @@ -504,13 +506,13 @@ const upsertAdServerResource = async ( tx ); - return { resource, isNew: true }; + return { domain, isNew: true }; }; const upsertWindowsServerResource = async ( projectId: string, computer: TLdapComputer, - adServerResourceId: string, + domainId: string, gatewayId: string, winrmConfig: { winrmPort: number; @@ -529,7 +531,7 @@ const upsertWindowsServerResource = async ( projectId, resourceType: PamResource.Windows, discoveryFingerprint: fingerprint, - adServerResourceId + domainId }, { tx } ); @@ -570,8 +572,7 @@ const upsertWindowsServerResource = async ( gatewayId, encryptedConnectionDetails, encryptedResourceMetadata, - adServerResourceId, - discoveryFingerprint: fingerprint + domainId }, tx ); @@ -582,7 +583,7 @@ const upsertWindowsServerResource = async ( const upsertDomainAccount = async ( projectId: string, user: TLdapUser, - adServerResourceId: string, + domainId: string, kmsService: Pick, pamAccountDAL: Pick, tx: Knex @@ -591,7 +592,7 @@ const upsertDomainAccount = async ( const existing = await pamAccountDAL.find( { - resourceId: adServerResourceId, + domainId, discoveryFingerprint: fingerprint }, { tx } @@ -634,7 +635,7 @@ const upsertDomainAccount = async ( const account = await pamAccountDAL.create( { projectId, - resourceId: adServerResourceId, + domainId, name: accountName, encryptedCredentials, internalMetadata, @@ -932,6 +933,7 @@ export const activeDirectoryDiscoveryFactory: TPamDiscoveryFactory< pamDiscoverySourceAccountsDAL, pamDiscoverySourceDependenciesDAL, pamAccountDependenciesDAL, + pamDomainDAL, pamResourceDAL, pamAccountDAL, kmsService @@ -985,30 +987,11 @@ export const activeDirectoryDiscoveryFactory: TPamDiscoveryFactory< } as TActiveDirectoryDiscoverySourceRunProgress }); - // Auto-import AD Server resource - const { resource: adServerResource, isNew: isAdServerNew } = await pamResourceDAL.transaction(async (tx) => { - const result = await upsertAdServerResource( - projectId, - configuration, - gatewayId, - kmsService, - pamResourceDAL, - tx - ); - - await pamDiscoverySourceResourcesDAL.upsertJunction( - { - discoverySourceId, - resourceId: result.resource.id, - lastDiscoveredRunId: run.id - }, - tx - ); - + // Auto-import AD domain + const { domain } = await pamDomainDAL.transaction(async (tx) => { + const result = await upsertDomain(projectId, configuration, gatewayId, kmsService, pamDomainDAL, tx); return result; }); - resourcesDiscoveredCount += 1; - if (isAdServerNew) newResourcesCount += 1; // Auto-import Windows Server resources and build mapping for local account discovery const computerResourceMap = new Map(); // objectGUID -> resourceId @@ -1019,7 +1002,7 @@ export const activeDirectoryDiscoveryFactory: TPamDiscoveryFactory< const result = await upsertWindowsServerResource( projectId, computer, - adServerResource.id, + domain.id, gatewayId, { winrmPort: configuration.winrmPort, @@ -1063,14 +1046,7 @@ export const activeDirectoryDiscoveryFactory: TPamDiscoveryFactory< for await (const user of users) { try { const { account, isNew } = await pamAccountDAL.transaction(async (tx) => { - const result = await upsertDomainAccount( - projectId, - user, - adServerResource.id, - kmsService, - pamAccountDAL, - tx - ); + const result = await upsertDomainAccount(projectId, user, domain.id, kmsService, pamAccountDAL, tx); await pamDiscoverySourceAccountsDAL.upsertJunction( { diff --git a/backend/src/ee/services/pam-discovery/pam-discovery-factory.ts b/backend/src/ee/services/pam-discovery/pam-discovery-factory.ts index 4c6a12110e2..1c39e3136e6 100644 --- a/backend/src/ee/services/pam-discovery/pam-discovery-factory.ts +++ b/backend/src/ee/services/pam-discovery/pam-discovery-factory.ts @@ -14,6 +14,7 @@ import { TPamDiscoveryCredentials, TPamDiscoveryFactory } from "@app/ee/services/pam-discovery/pam-discovery-types"; +import { TPamDomainDALFactory } from "@app/ee/services/pam-domain/pam-domain-dal"; import { TPamResourceDALFactory } from "@app/ee/services/pam-resource/pam-resource-dal"; import { TKmsServiceFactory } from "@app/services/kms/kms-service"; @@ -27,6 +28,7 @@ export type TPamDiscoveryScanDeps = { "upsertJunction" | "markStaleForRun" >; pamAccountDependenciesDAL: Pick; + pamDomainDAL: Pick; pamResourceDAL: Pick; pamAccountDAL: Pick; kmsService: Pick; diff --git a/backend/src/ee/services/pam-discovery/pam-discovery-queue.ts b/backend/src/ee/services/pam-discovery/pam-discovery-queue.ts index ae4cc4d87da..fe6979c2d68 100644 --- a/backend/src/ee/services/pam-discovery/pam-discovery-queue.ts +++ b/backend/src/ee/services/pam-discovery/pam-discovery-queue.ts @@ -5,6 +5,7 @@ import { JOB_SCHEDULER_PREFIX, QueueJobs, QueueName, TQueueServiceFactory } from import { TKmsServiceFactory } from "@app/services/kms/kms-service"; import { TPamAccountDALFactory } from "../pam-account/pam-account-dal"; +import { TPamDomainDALFactory } from "../pam-domain/pam-domain-dal"; import { TPamResourceDALFactory } from "../pam-resource/pam-resource-dal"; import { TPamAccountDependenciesDALFactory } from "./pam-account-dependencies-dal"; import { PamDiscoverySourceRunTrigger, PamDiscoveryType } from "./pam-discovery-enums"; @@ -27,6 +28,7 @@ type TPamDiscoveryQueueFactoryDep = { "upsertJunction" | "markStaleForRun" >; pamAccountDependenciesDAL: Pick; + pamDomainDAL: Pick; pamResourceDAL: Pick; pamAccountDAL: Pick; kmsService: Pick; @@ -44,6 +46,7 @@ export const pamDiscoveryQueueFactory = ({ pamDiscoverySourceAccountsDAL, pamDiscoverySourceDependenciesDAL, pamAccountDependenciesDAL, + pamDomainDAL, pamResourceDAL, pamAccountDAL, kmsService, @@ -92,6 +95,7 @@ export const pamDiscoveryQueueFactory = ({ pamDiscoverySourceAccountsDAL, pamDiscoverySourceDependenciesDAL, pamAccountDependenciesDAL, + pamDomainDAL, pamResourceDAL, pamAccountDAL, kmsService, diff --git a/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts b/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts index 1d5ddbb862b..ce8a9cc98cf 100644 --- a/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts +++ b/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts @@ -8,7 +8,8 @@ import { } from "@app/db/schemas"; import { slugSchema } from "@app/server/lib/schemas"; -import { ActiveDirectoryAccountMetadataSchema } from "../pam-resource/active-directory/active-directory-resource-schemas"; +import { ActiveDirectoryAccountMetadataSchema } from "../pam-domain/active-directory/active-directory-domain-schemas"; +import { PamDomainType } from "../pam-domain/pam-domain-enums"; import { PamResource } from "../pam-resource/pam-resource-enums"; import { SSHResourceInternalMetadataSchema } from "../pam-resource/ssh/ssh-resource-schemas"; import { @@ -63,9 +64,12 @@ export const DiscoveredResourceSchema = PamDiscoverySourceResourcesSchema.extend }); export const DiscoveredAccountSchema = PamDiscoverySourceAccountsSchema.extend({ - resourceType: z.nativeEnum(PamResource), - resourceName: z.string(), - resourceId: z.string().uuid(), + resourceType: z.nativeEnum(PamResource).nullable().optional(), + resourceName: z.string().nullable().optional(), + resourceId: z.string().uuid().nullable().optional(), + domainType: z.nativeEnum(PamDomainType).nullable().optional(), + domainName: z.string().nullable().optional(), + domainId: z.string().uuid().nullable().optional(), accountName: z.string(), internalMetadata: z.union([ActiveDirectoryAccountMetadataSchema, WindowsAccountMetadataSchema]), dependencyCount: z.number().default(0) diff --git a/backend/src/ee/services/pam-discovery/pam-discovery-source-accounts-dal.ts b/backend/src/ee/services/pam-discovery/pam-discovery-source-accounts-dal.ts index f0c9e508cae..8160e25833d 100644 --- a/backend/src/ee/services/pam-discovery/pam-discovery-source-accounts-dal.ts +++ b/backend/src/ee/services/pam-discovery/pam-discovery-source-accounts-dal.ts @@ -21,7 +21,8 @@ export const pamDiscoverySourceAccountsDALFactory = (db: TDbClient) => { const dbInstance = tx || db.replicaNode(); const query = dbInstance(TableName.PamDiscoverySourceAccount) .join(TableName.PamAccount, `${TableName.PamDiscoverySourceAccount}.accountId`, `${TableName.PamAccount}.id`) - .join(TableName.PamResource, `${TableName.PamAccount}.resourceId`, `${TableName.PamResource}.id`) + .leftJoin(TableName.PamResource, `${TableName.PamAccount}.resourceId`, `${TableName.PamResource}.id`) + .leftJoin(TableName.PamDomain, `${TableName.PamAccount}.domainId`, `${TableName.PamDomain}.id`) .where(`${TableName.PamDiscoverySourceAccount}.discoverySourceId`, discoverySourceId); const countQuery = query.clone().count("*", { as: "count" }).first(); @@ -30,9 +31,12 @@ export const pamDiscoverySourceAccountsDALFactory = (db: TDbClient) => { selectAllTableCols(TableName.PamDiscoverySourceAccount), db.ref("name").withSchema(TableName.PamAccount).as("accountName"), db.ref("resourceId").withSchema(TableName.PamAccount).as("resourceId"), + db.ref("domainId").withSchema(TableName.PamAccount).as("domainId"), db.ref("resourceType").withSchema(TableName.PamResource).as("resourceType"), + db.ref("domainType").withSchema(TableName.PamDomain).as("domainType"), db.ref("internalMetadata").withSchema(TableName.PamAccount).as("internalMetadata"), - db.ref("name").withSchema(TableName.PamResource).as("resourceName") + db.ref("name").withSchema(TableName.PamResource).as("resourceName"), + db.ref("name").withSchema(TableName.PamDomain).as("domainName") ); void query.orderBy(`${TableName.PamAccount}.name`, "asc"); diff --git a/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts b/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts index f79b1970700..ca1bbd8be59 100644 --- a/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts +++ b/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts @@ -76,7 +76,7 @@ type TPamDiscoverySourceServiceFactoryDep = { | "updateById" | "deleteById" >; - pamAccountDAL: Pick; + pamAccountDAL: Pick; pamResourceDAL: Pick; permissionService: Pick; kmsService: Pick; @@ -571,7 +571,7 @@ export const pamDiscoverySourceServiceFactory = ({ ); // Add dependency counts per resource - const resourceIds = decryptedResources.map((r) => r.resourceId).filter(Boolean); + const resourceIds = decryptedResources.map((r) => r.resourceId).filter(Boolean) as string[]; const depCountsByResource = resourceIds.length ? await pamAccountDependenciesDAL.countByResourceIds(resourceIds) : {}; @@ -632,32 +632,38 @@ export const pamDiscoverySourceServiceFactory = ({ actorAuthMethod: ActorAuthMethod, actorOrgId: string ) => { - const accountWithResource = await pamAccountDAL.findByIdWithResourceDetails(accountId); - if (!accountWithResource) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); + const accountWithParent = await pamAccountDAL.findByIdWithParentDetails(accountId); + if (!accountWithParent) throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); const { permission } = await permissionService.getProjectPermission({ actor, actorId, - projectId: accountWithResource.projectId, + projectId: accountWithParent.projectId, actorAuthMethod, actorOrgId, actionProjectType: ActionProjectType.PAM }); - const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([accountWithResource.id]); - const accountMetadata = metadataByAccountId[accountWithResource.id] || []; + const metadataByAccountId = await pamAccountDAL.findMetadataByAccountIds([accountWithParent.id]); + const accountMetadata = metadataByAccountId[accountWithParent.id] || []; ForbiddenError.from(permission).throwUnlessCan( action, subject(ProjectPermissionSub.PamAccounts, { - resourceName: accountWithResource.resource.name, - accountName: accountWithResource.name, - resourceType: accountWithResource.resource.resourceType, + accountName: accountWithParent.name, + ...(accountWithParent.resource && { + resourceName: accountWithParent.resource.name, + resourceType: accountWithParent.resource.resourceType + }), + ...(accountWithParent.domain && { + domainName: accountWithParent.domain.name, + domainType: accountWithParent.domain.domainType + }), metadata: accountMetadata }) ); - return accountWithResource; + return accountWithParent; }; const decryptDependencySyncMessages = async ( @@ -697,7 +703,7 @@ export const pamDiscoverySourceServiceFactory = ({ actorAuthMethod: ActorAuthMethod; actorOrgId: string; }) => { - const accountWithResource = await verifyAccountPermission( + const accountWithParent = await verifyAccountPermission( accountId, ProjectPermissionPamAccountActions.Read, actor, @@ -706,7 +712,7 @@ export const pamDiscoverySourceServiceFactory = ({ actorOrgId ); const deps = await pamAccountDependenciesDAL.findByAccountId(accountId); - return decryptDependencySyncMessages(deps, accountWithResource.projectId); + return decryptDependencySyncMessages(deps, accountWithParent.projectId); }; const getResourceDependencies = async ({ diff --git a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-enums.ts b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-enums.ts similarity index 100% rename from backend/src/ee/services/pam-resource/active-directory/active-directory-resource-enums.ts rename to backend/src/ee/services/pam-domain/active-directory/active-directory-domain-enums.ts diff --git a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-factory.ts b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-factory.ts similarity index 90% rename from backend/src/ee/services/pam-resource/active-directory/active-directory-resource-factory.ts rename to backend/src/ee/services/pam-domain/active-directory/active-directory-domain-factory.ts index d852809a8f7..2f3f8caff65 100644 --- a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-factory.ts +++ b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-factory.ts @@ -7,27 +7,23 @@ import { logger } from "@app/lib/logger"; import { verifyHostInputValidity } from "../../dynamic-secret/dynamic-secret-fns"; import { TGatewayV2ServiceFactory } from "../../gateway-v2/gateway-v2-service"; -import { generatePassword } from "../../secret-rotation-v2/shared/utils"; -import { PamResource } from "../pam-resource-enums"; +import { PamResource } from "../../pam-resource/pam-resource-enums"; import { - TPamResourceFactory, TPamResourceFactoryRotateAccountCredentials, TPamResourceFactoryValidateAccountCredentials, - TPamResourceInternalMetadata, TPostRotateContext -} from "../pam-resource-types"; -import { syncDependenciesAfterRotation } from "../shared/dependency-sync-fns"; -import { resolveDnsTcp } from "../shared/dns-over-dc"; -import { - TActiveDirectoryAccountCredentials, - TActiveDirectoryResourceConnectionDetails -} from "./active-directory-resource-types"; +} from "../../pam-resource/pam-resource-types"; +import { syncDependenciesAfterRotation } from "../../pam-resource/shared/dependency-sync-fns"; +import { resolveDnsTcp } from "../../pam-resource/shared/dns-over-dc"; +import { generatePassword } from "../../secret-rotation-v2/shared/utils"; +import { TPamDomainFactory } from "../pam-domain-types"; +import { TActiveDirectoryAccountCredentials, TActiveDirectoryConnectionDetails } from "./active-directory-domain-types"; const EXTERNAL_REQUEST_TIMEOUT = 10 * 1000; const executeWithGateway = async ( config: { - connectionDetails: TActiveDirectoryResourceConnectionDetails; + connectionDetails: TActiveDirectoryConnectionDetails; resourceType: PamResource; gatewayId: string; targetPortOverride?: number; @@ -64,11 +60,11 @@ const executeWithGateway = async ( ); }; -export const activeDirectoryResourceFactory: TPamResourceFactory< - TActiveDirectoryResourceConnectionDetails, - TActiveDirectoryAccountCredentials, - TPamResourceInternalMetadata -> = (resourceType, connectionDetails, gatewayId, gatewayV2Service) => { +export const activeDirectoryDomainFactory: TPamDomainFactory< + TActiveDirectoryConnectionDetails, + TActiveDirectoryAccountCredentials +> = (domainType, connectionDetails, gatewayId, gatewayV2Service) => { + const resourceType = domainType as unknown as PamResource; const ldapProtocol = connectionDetails.useLdaps ? "ldaps" : "ldap"; const buildLdapTlsOptions = () => { @@ -113,15 +109,18 @@ export const activeDirectoryResourceFactory: TPamResourceFactory< if (clientError) return; if (err) { - // Even if anonymous bind is rejected, an LDAP error response means the server is an LDAP server - // Only reject if it's a connection-level error (not an LDAP protocol error) + // Connection-level errors mean the server is unreachable + // Any other LDAP error (e.g. InvalidCredentialsError) means the server responded with a protocol-level rejection if (err.name === "ConnectionError" || err.name === "TimeoutError") { client.unbind(); reject(err); - } else { - logger.info("[Active Directory Resource Factory] LDAP connection validated (server responded)"); + } else if ("lde_message" in err) { + logger.info("[Active Directory Domain Factory] LDAP connection validated (server responded)"); client.unbind(); resolve(); + } else { + client.unbind(); + reject(err); } } else { logger.info("[Active Directory Resource Factory] LDAP anonymous bind successful"); @@ -238,7 +237,7 @@ export const activeDirectoryResourceFactory: TPamResourceFactory< // Search for target user's DN by sAMAccountName const searchBase = connectionDetails.domain .split(".") - .map((dc) => `DC=${dc}`) + .map((dc: string) => `DC=${dc}`) .join(","); client.search( diff --git a/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts new file mode 100644 index 00000000000..8bdc1144e06 --- /dev/null +++ b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts @@ -0,0 +1,74 @@ +import { z } from "zod"; + +import { + BaseCreatePamAccountSchema, + BasePamAccountSchema, + BasePamAccountSchemaWithResource, + BaseUpdatePamAccountSchema +} from "../../pam-resource/pam-resource-schemas"; +import { PamDomainType } from "../pam-domain-enums"; +import { ActiveDirectoryAccountType } from "./active-directory-domain-enums"; + +export const ActiveDirectoryConnectionDetailsSchema = z.object({ + domain: z.string().trim().min(1).max(255), + dcAddress: z.string().trim().min(1).max(255), + port: z.coerce.number().int().min(1).max(65535), + useLdaps: z.boolean(), + ldapRejectUnauthorized: z.boolean(), + ldapCaCert: z + .string() + .trim() + .transform((val) => val || undefined) + .optional(), + ldapTlsServerName: z + .string() + .trim() + .transform((val) => val || undefined) + .optional() +}); + +export const ActiveDirectoryAccountCredentialsSchema = z.object({ + username: z.string().trim().min(1).max(255), + password: z.string().trim().min(1).max(255) +}); + +export const ActiveDirectoryAccountMetadataSchema = z.object({ + accountType: z.nativeEnum(ActiveDirectoryAccountType), + adGuid: z.string().optional(), + displayName: z.string().optional(), + userPrincipalName: z.string().optional(), + servicePrincipalName: z.string().array().optional(), + userAccountControl: z.number().optional(), + passwordLastSet: z.string().optional(), + lastLogon: z.string().optional() +}); + +export const ActiveDirectoryAccountSchema = BasePamAccountSchema.extend({ + credentials: ActiveDirectoryAccountCredentialsSchema, + internalMetadata: ActiveDirectoryAccountMetadataSchema +}); + +export const CreateActiveDirectoryAccountSchema = BaseCreatePamAccountSchema + .omit({ resourceId: true }) + .extend({ + domainId: z.string().uuid(), + credentials: ActiveDirectoryAccountCredentialsSchema, + internalMetadata: ActiveDirectoryAccountMetadataSchema + }); + +export const UpdateActiveDirectoryAccountSchema = BaseUpdatePamAccountSchema.extend({ + credentials: ActiveDirectoryAccountCredentialsSchema.optional(), + internalMetadata: ActiveDirectoryAccountMetadataSchema.optional() +}); + +export const SanitizedActiveDirectoryAccountWithDomainSchema = BasePamAccountSchemaWithResource.extend({ + parentType: z.literal(PamDomainType.ActiveDirectory), + credentials: z.object({ + username: z.string() + }), + internalMetadata: ActiveDirectoryAccountMetadataSchema +}); + +export const ActiveDirectorySessionCredentialsSchema = ActiveDirectoryConnectionDetailsSchema.and( + ActiveDirectoryAccountCredentialsSchema +); diff --git a/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-types.ts b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-types.ts new file mode 100644 index 00000000000..113bc4e95ab --- /dev/null +++ b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-types.ts @@ -0,0 +1,12 @@ +import { z } from "zod"; + +import { + ActiveDirectoryAccountCredentialsSchema, + ActiveDirectoryAccountMetadataSchema, + ActiveDirectoryConnectionDetailsSchema +} from "./active-directory-domain-schemas"; + +export type TActiveDirectoryConnectionDetails = z.infer; + +export type TActiveDirectoryAccountCredentials = z.infer; +export type TActiveDirectoryAccountInternalMetadata = z.infer; diff --git a/backend/src/ee/services/pam-domain/pam-domain-dal.ts b/backend/src/ee/services/pam-domain/pam-domain-dal.ts new file mode 100644 index 00000000000..c773cad1567 --- /dev/null +++ b/backend/src/ee/services/pam-domain/pam-domain-dal.ts @@ -0,0 +1,119 @@ +import { Knex } from "knex"; +import RE2 from "re2"; + +import { TDbClient } from "@app/db"; +import { TableName } from "@app/db/schemas"; +import { DatabaseError } from "@app/lib/errors"; +import { ormify, selectAllTableCols } from "@app/lib/knex"; +import { OrderByDirection } from "@app/lib/types"; + +import { PamDomainOrderBy } from "./pam-domain-enums"; + +export type TPamDomainDALFactory = ReturnType; + +export const pamDomainDALFactory = (db: TDbClient) => { + const orm = ormify(db, TableName.PamDomain); + + const findById = async (id: string, tx?: Knex) => { + try { + const result = await (tx || db.replicaNode())(TableName.PamDomain) + .leftJoin(TableName.GatewayV2, `${TableName.PamDomain}.gatewayId`, `${TableName.GatewayV2}.id`) + .where(`${TableName.PamDomain}.id`, id) + .select(selectAllTableCols(TableName.PamDomain)) + .select( + db.ref("name").withSchema(TableName.GatewayV2).as("gatewayName"), + db.ref("identityId").withSchema(TableName.GatewayV2).as("gatewayIdentityId") + ) + .first(); + + return result || null; + } catch (error) { + throw new DatabaseError({ error, name: "Find PAM domain by ID" }); + } + }; + + const findByProjectId = async ( + { + projectId, + search, + limit, + offset = 0, + orderBy = PamDomainOrderBy.Name, + orderDirection = OrderByDirection.ASC, + filterDomainTypes, + discoveryFingerprint + }: { + projectId: string; + search?: string; + limit?: number; + offset?: number; + orderBy?: PamDomainOrderBy; + orderDirection?: OrderByDirection; + filterDomainTypes?: string[]; + discoveryFingerprint?: string; + }, + tx?: Knex + ) => { + try { + const dbInstance = tx || db.replicaNode(); + const query = dbInstance(TableName.PamDomain).where(`${TableName.PamDomain}.projectId`, projectId); + + if (search) { + const escapedSearch = search + .replace(new RE2(/\\/g), "\\\\") + .replace(new RE2(/%/g), "\\%") + .replace(new RE2(/_/g), "\\_"); + const pattern = `%${escapedSearch}%`; + void query.whereRaw(`??.?? ILIKE ? ESCAPE '\\'`, [TableName.PamDomain, "name", pattern]); + } + + if (filterDomainTypes && filterDomainTypes.length) { + void query.whereIn(`${TableName.PamDomain}.domainType`, filterDomainTypes); + } + + if (discoveryFingerprint) { + void query.where(`${TableName.PamDomain}.discoveryFingerprint`, discoveryFingerprint); + } + + const countQuery = query.clone().count("*", { as: "count" }).first(); + + void query.select(selectAllTableCols(TableName.PamDomain)); + + const direction = orderDirection === OrderByDirection.ASC ? "ASC" : "DESC"; + void query.orderByRaw(`${TableName.PamDomain}.?? COLLATE "en-x-icu" ${direction}`, [orderBy]); + + if (typeof limit === "number") { + void query.limit(limit).offset(offset); + } + + const [results, countResult] = await Promise.all([query, countQuery]); + const totalCount = Number(countResult?.count || 0); + + return { domains: results, totalCount }; + } catch (error) { + throw new DatabaseError({ error, name: "Find PAM domains by project" }); + } + }; + + const findMetadataByDomainIds = async (domainIds: string[], tx?: Knex) => { + if (!domainIds.length) return {}; + const rows = await (tx || db.replicaNode())(TableName.ResourceMetadata) + .select("id", "key", "value", "pamDomainId") + .whereIn("pamDomainId", domainIds); + const byDomainId: Record> = {}; + for (const row of rows) { + if (row.pamDomainId) { + if (!byDomainId[row.pamDomainId]) byDomainId[row.pamDomainId] = []; + byDomainId[row.pamDomainId].push({ id: row.id, key: row.key, value: row.value || "" }); + } + } + return byDomainId; + }; + + return { + ...orm, + findById, + findByProjectId, + findMetadataByDomainIds + }; +}; diff --git a/backend/src/ee/services/pam-domain/pam-domain-enums.ts b/backend/src/ee/services/pam-domain/pam-domain-enums.ts new file mode 100644 index 00000000000..03fcd18cad1 --- /dev/null +++ b/backend/src/ee/services/pam-domain/pam-domain-enums.ts @@ -0,0 +1,7 @@ +export enum PamDomainType { + ActiveDirectory = "active-directory" +} + +export enum PamDomainOrderBy { + Name = "name" +} diff --git a/backend/src/ee/services/pam-domain/pam-domain-factory.ts b/backend/src/ee/services/pam-domain/pam-domain-factory.ts new file mode 100644 index 00000000000..1ab6a8a2e3e --- /dev/null +++ b/backend/src/ee/services/pam-domain/pam-domain-factory.ts @@ -0,0 +1,10 @@ +import { TPamAccountCredentials } from "../pam-resource/pam-resource-types"; +import { activeDirectoryDomainFactory } from "./active-directory/active-directory-domain-factory"; +import { PamDomainType } from "./pam-domain-enums"; +import { TPamDomainConnectionDetails, TPamDomainFactory } from "./pam-domain-types"; + +type TPamDomainFactoryImplementation = TPamDomainFactory; + +export const PAM_DOMAIN_FACTORY_MAP: Record = { + [PamDomainType.ActiveDirectory]: activeDirectoryDomainFactory as TPamDomainFactoryImplementation +}; diff --git a/backend/src/ee/services/pam-domain/pam-domain-fns.ts b/backend/src/ee/services/pam-domain/pam-domain-fns.ts new file mode 100644 index 00000000000..bd2d4b40327 --- /dev/null +++ b/backend/src/ee/services/pam-domain/pam-domain-fns.ts @@ -0,0 +1,46 @@ +import { TKmsServiceFactory } from "@app/services/kms/kms-service"; +import { KmsDataKey } from "@app/services/kms/kms-types"; + +import { TPamDomainConnectionDetails } from "./pam-domain-types"; + +export const encryptDomainConnectionDetails = async ({ + projectId, + connectionDetails, + kmsService +}: { + projectId: string; + connectionDetails: TPamDomainConnectionDetails; + kmsService: Pick; +}) => { + const { encryptor } = await kmsService.createCipherPairWithDataKey({ + type: KmsDataKey.SecretManager, + projectId + }); + + const { cipherTextBlob } = encryptor({ + plainText: Buffer.from(JSON.stringify(connectionDetails)) + }); + + return cipherTextBlob; +}; + +export const decryptDomainConnectionDetails = async ({ + projectId, + encryptedConnectionDetails, + kmsService +}: { + projectId: string; + encryptedConnectionDetails: Buffer; + kmsService: Pick; +}) => { + const { decryptor } = await kmsService.createCipherPairWithDataKey({ + type: KmsDataKey.SecretManager, + projectId + }); + + const decryptedPlainTextBlob = decryptor({ + cipherTextBlob: encryptedConnectionDetails + }); + + return JSON.parse(decryptedPlainTextBlob.toString()) as TPamDomainConnectionDetails; +}; diff --git a/backend/src/ee/services/pam-domain/pam-domain-schemas.ts b/backend/src/ee/services/pam-domain/pam-domain-schemas.ts new file mode 100644 index 00000000000..40d9378337e --- /dev/null +++ b/backend/src/ee/services/pam-domain/pam-domain-schemas.ts @@ -0,0 +1,55 @@ +import { z } from "zod"; + +import { PamDomainsSchema, ResourceMetadataSchema } from "@app/db/schemas"; +import { slugSchema } from "@app/server/lib/schemas"; +import { ResourceMetadataNonEncryptionSchema } from "@app/services/resource-metadata/resource-metadata-schema"; + +import { ActiveDirectoryConnectionDetailsSchema } from "./active-directory/active-directory-domain-schemas"; +import { PamDomainType } from "./pam-domain-enums"; + +export const BasePamDomainSchema = PamDomainsSchema.omit({ + encryptedConnectionDetails: true, + domainType: true +}).extend({ + metadata: ResourceMetadataSchema.pick({ id: true, key: true, value: true }).array().optional() +}); + +export const ActiveDirectoryDomainListItemSchema = z.object({ + name: z.literal("Active Directory"), + domain: z.literal(PamDomainType.ActiveDirectory) +}); + +const BaseActiveDirectoryDomainSchema = BasePamDomainSchema.extend({ + domainType: z.literal(PamDomainType.ActiveDirectory) +}); + +export const ActiveDirectoryDomainSchema = BaseActiveDirectoryDomainSchema.extend({ + connectionDetails: ActiveDirectoryConnectionDetailsSchema +}); + +export const SanitizedActiveDirectoryDomainSchema = BaseActiveDirectoryDomainSchema.extend({ + connectionDetails: ActiveDirectoryConnectionDetailsSchema +}); + +const CoreCreatePamDomainSchema = z.object({ + projectId: z.string().uuid(), + name: slugSchema({ field: "name" }), + metadata: ResourceMetadataNonEncryptionSchema.optional() +}); + +export const CreateActiveDirectoryDomainSchema = CoreCreatePamDomainSchema.extend({ + gatewayId: z.string().uuid(), + connectionDetails: ActiveDirectoryConnectionDetailsSchema +}); + +const CoreUpdatePamDomainSchema = z.object({ + name: slugSchema({ field: "name" }).optional(), + metadata: ResourceMetadataNonEncryptionSchema.optional() +}); + +export const UpdateActiveDirectoryDomainSchema = CoreUpdatePamDomainSchema.extend({ + gatewayId: z.string().uuid().optional(), + connectionDetails: ActiveDirectoryConnectionDetailsSchema.optional() +}); + +export const SanitizedDomainSchema = z.discriminatedUnion("domainType", [SanitizedActiveDirectoryDomainSchema]); diff --git a/backend/src/ee/services/pam-domain/pam-domain-service.ts b/backend/src/ee/services/pam-domain/pam-domain-service.ts new file mode 100644 index 00000000000..d01fe50ec25 --- /dev/null +++ b/backend/src/ee/services/pam-domain/pam-domain-service.ts @@ -0,0 +1,411 @@ +import { ForbiddenError, subject } from "@casl/ability"; + +import { ActionProjectType, TPamDomains } from "@app/db/schemas"; +import { ProjectPermissionActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; +import { DatabaseErrorCode } from "@app/lib/error-codes"; +import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; +import { OrgServiceActor } from "@app/lib/types"; + +import { decryptAccountCredentials } from "../pam-account/pam-account-fns"; +import { decryptResourceConnectionDetails } from "../pam-resource/pam-resource-fns"; +import { TPamResourceConnectionDetails } from "../pam-resource/pam-resource-types"; +import { decryptDomainConnectionDetails, encryptDomainConnectionDetails } from "./pam-domain-fns"; +import { TWindowsResource } from "../pam-resource/windows-server/windows-server-resource-types"; +import { PamDomainType } from "./pam-domain-enums"; +import { PAM_DOMAIN_FACTORY_MAP } from "./pam-domain-factory"; +import { + TCreateDomainDTO, + TListDomainsDTO, + TPamDomain, + TPamDomainServiceFactoryDep, + TUpdateDomainDTO +} from "./pam-domain-types"; + +export type TPamDomainServiceFactory = ReturnType; + +const decryptDomain = async ( + domain: TPamDomains, + projectId: string, + kmsService: TPamDomainServiceFactoryDep["kmsService"] +): Promise => { + const connectionDetails = await decryptDomainConnectionDetails({ + encryptedConnectionDetails: domain.encryptedConnectionDetails, + projectId, + kmsService + }); + + return { + ...domain, + domainType: domain.domainType as PamDomainType, + connectionDetails + } as TPamDomain; +}; + +export const pamDomainServiceFactory = ({ + pamDomainDAL, + pamResourceDAL, + permissionService, + kmsService, + gatewayV2Service, + resourceMetadataDAL +}: TPamDomainServiceFactoryDep) => { + const getById = async (id: string, domainType: PamDomainType, actor: OrgServiceActor) => { + const domain = await pamDomainDAL.findById(id); + if (!domain) throw new NotFoundError({ message: `Domain with ID '${id}' not found` }); + + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorAuthMethod: actor.authMethod, + actorId: actor.id, + actorOrgId: actor.orgId, + projectId: domain.projectId, + actionProjectType: ActionProjectType.PAM + }); + + const metadataByDomainId = await pamDomainDAL.findMetadataByDomainIds([domain.id]); + const domainMetadata = metadataByDomainId[domain.id] || []; + + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionActions.Read, + subject(ProjectPermissionSub.PamDomains, { + name: domain.name, + domainType: domain.domainType, + metadata: domainMetadata + }) + ); + + if (domain.domainType !== domainType) { + throw new BadRequestError({ + message: `Domain with ID '${id}' is not of type '${domainType}'` + }); + } + + return { + ...(await decryptDomain(domain, domain.projectId, kmsService)), + metadata: domainMetadata + }; + }; + + const create = async ( + { domainType, connectionDetails, gatewayId, name, projectId, metadata }: TCreateDomainDTO, + actor: OrgServiceActor + ) => { + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorAuthMethod: actor.authMethod, + actorId: actor.id, + actorOrgId: actor.orgId, + projectId, + actionProjectType: ActionProjectType.PAM + }); + + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionActions.Create, + subject(ProjectPermissionSub.PamDomains, { + name, + domainType, + metadata: (metadata || []).map(({ key, value }) => ({ key, value: value ?? "" })) + }) + ); + + const factory = PAM_DOMAIN_FACTORY_MAP[domainType]( + domainType, + connectionDetails, + gatewayId, + gatewayV2Service, + projectId + ); + + const validatedConnectionDetails = await factory.validateConnection(); + const encryptedConnectionDetails = await encryptDomainConnectionDetails({ + connectionDetails: validatedConnectionDetails, + projectId, + kmsService + }); + + try { + const { domain: newDomain, insertedMetadata } = await pamDomainDAL.transaction(async (tx) => { + const created = await pamDomainDAL.create( + { + domainType, + encryptedConnectionDetails, + gatewayId, + name, + projectId + }, + tx + ); + let metadataRows: Awaited> | undefined; + if (metadata && metadata.length > 0) { + metadataRows = await resourceMetadataDAL.insertMany( + metadata.map(({ key, value }) => ({ + key, + value: value ?? "", + pamDomainId: created.id, + orgId: actor.orgId + })), + tx + ); + } + return { domain: created, insertedMetadata: metadataRows }; + }); + + return { + ...(await decryptDomain(newDomain, projectId, kmsService)), + metadata: insertedMetadata?.map(({ id, key, value }) => ({ id, key, value: value ?? "" })) ?? [] + }; + } catch (err) { + if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { + throw new BadRequestError({ + message: `Domain with name '${name}' already exists in this project` + }); + } + throw err; + } + }; + + const updateById = async ( + { domainId, connectionDetails, name, gatewayId, metadata }: TUpdateDomainDTO, + actor: OrgServiceActor + ) => { + const domain = await pamDomainDAL.findById(domainId); + if (!domain) throw new NotFoundError({ message: `Domain with ID '${domainId}' not found` }); + + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorAuthMethod: actor.authMethod, + actorId: actor.id, + actorOrgId: actor.orgId, + projectId: domain.projectId, + actionProjectType: ActionProjectType.PAM + }); + + const existingMetadata = await pamDomainDAL.findMetadataByDomainIds([domainId]); + const currentMetadata = existingMetadata[domainId] || []; + + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionActions.Edit, + subject(ProjectPermissionSub.PamDomains, { + name: domain.name, + domainType: domain.domainType, + metadata: currentMetadata + }) + ); + + if (metadata || name) { + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionActions.Edit, + subject(ProjectPermissionSub.PamDomains, { + name: name ?? domain.name, + domainType: domain.domainType, + metadata: metadata ? metadata.map(({ key, value }) => ({ key, value: value ?? "" })) : currentMetadata + }) + ); + } + + const updateDoc: Partial = {}; + const effectiveGatewayId = gatewayId !== undefined ? gatewayId : domain.gatewayId; + + if (gatewayId !== undefined) { + updateDoc.gatewayId = gatewayId; + } + + if (name !== undefined) { + updateDoc.name = name; + } + + if (connectionDetails !== undefined) { + const factory = PAM_DOMAIN_FACTORY_MAP[domain.domainType as PamDomainType]( + domain.domainType as PamDomainType, + connectionDetails, + effectiveGatewayId, + gatewayV2Service, + domain.projectId + ); + const validatedConnectionDetails = await factory.validateConnection(); + const encryptedConnectionDetails = await encryptDomainConnectionDetails({ + connectionDetails: validatedConnectionDetails, + projectId: domain.projectId, + kmsService + }); + updateDoc.encryptedConnectionDetails = encryptedConnectionDetails; + } + + if (Object.keys(updateDoc).length === 0 && metadata === undefined) { + const existingMeta = await pamDomainDAL.findMetadataByDomainIds([domainId]); + return { + ...(await decryptDomain(domain, domain.projectId, kmsService)), + metadata: existingMeta[domainId] || [] + }; + } + + try { + const updatedDomain = await pamDomainDAL.transaction(async (tx) => { + if (metadata) { + await resourceMetadataDAL.delete({ pamDomainId: domainId }, tx); + if (metadata.length > 0) { + await resourceMetadataDAL.insertMany( + metadata.map(({ key, value }) => ({ + key, + value: value ?? "", + pamDomainId: domainId, + orgId: actor.orgId + })), + tx + ); + } + } + if (Object.keys(updateDoc).length > 0) { + return pamDomainDAL.updateById(domainId, updateDoc, tx); + } + return domain; + }); + + const freshMeta = await pamDomainDAL.findMetadataByDomainIds([domainId]); + + return { + ...(await decryptDomain(updatedDomain, domain.projectId, kmsService)), + metadata: freshMeta[domainId] || [] + }; + } catch (err) { + if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { + throw new BadRequestError({ + message: `Domain with name '${name}' already exists in this project` + }); + } + throw err; + } + }; + + const deleteById = async (id: string, actor: OrgServiceActor) => { + const domain = await pamDomainDAL.findById(id); + if (!domain) throw new NotFoundError({ message: `Domain with ID '${id}' not found` }); + + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorAuthMethod: actor.authMethod, + actorId: actor.id, + actorOrgId: actor.orgId, + projectId: domain.projectId, + actionProjectType: ActionProjectType.PAM + }); + + const metadataByDomainId = await pamDomainDAL.findMetadataByDomainIds([id]); + + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionActions.Delete, + subject(ProjectPermissionSub.PamDomains, { + name: domain.name, + domainType: domain.domainType, + metadata: metadataByDomainId[id] || [] + }) + ); + + try { + const deletedDomain = await pamDomainDAL.deleteById(id); + return await decryptDomain(deletedDomain, domain.projectId, kmsService); + } catch (err) { + if ( + err instanceof DatabaseError && + (err.error as { code: string })?.code === DatabaseErrorCode.ForeignKeyViolation + ) { + throw new BadRequestError({ + message: "Failed to delete domain because it is attached to active PAM accounts or resources" + }); + } + throw err; + } + }; + + const list = async ({ projectId, actor, actorId, actorAuthMethod, actorOrgId, ...params }: TListDomainsDTO) => { + const { permission } = await permissionService.getProjectPermission({ + actor, + actorId, + actorAuthMethod, + actorOrgId, + projectId, + actionProjectType: ActionProjectType.PAM + }); + + ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionActions.Read, ProjectPermissionSub.PamDomains); + + const { domains, totalCount } = await pamDomainDAL.findByProjectId({ + projectId, + ...params + }); + + const domainIds = domains.map((d) => d.id); + const metadataByDomainId = await pamDomainDAL.findMetadataByDomainIds(domainIds); + + return { + domains: await Promise.all( + domains.map(async (d) => ({ + ...(await decryptDomain(d, projectId, kmsService)), + metadata: metadataByDomainId[d.id] || [] + })) + ), + totalCount + }; + }; + + const listRelatedResources = async (domainId: string, actor: OrgServiceActor) => { + const domain = await pamDomainDAL.findById(domainId); + if (!domain) throw new NotFoundError({ message: `Domain with ID '${domainId}' not found` }); + + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorAuthMethod: actor.authMethod, + actorId: actor.id, + actorOrgId: actor.orgId, + projectId: domain.projectId, + actionProjectType: ActionProjectType.PAM + }); + + const metadataByDomainId = await pamDomainDAL.findMetadataByDomainIds([domainId]); + + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionActions.Read, + subject(ProjectPermissionSub.PamDomains, { + name: domain.name, + domainType: domain.domainType, + metadata: metadataByDomainId[domainId] || [] + }) + ); + + const relatedResources = await pamResourceDAL.find({ domainId }); + + return Promise.all( + relatedResources.map(async (r) => { + const rConnectionDetails = await decryptResourceConnectionDetails({ + encryptedConnectionDetails: r.encryptedConnectionDetails, + projectId: domain.projectId, + kmsService + }); + const rotationAccountCredentials = r.encryptedRotationAccountCredentials + ? await decryptAccountCredentials({ + encryptedCredentials: r.encryptedRotationAccountCredentials, + projectId: domain.projectId, + kmsService + }) + : null; + return { ...r, connectionDetails: rConnectionDetails, rotationAccountCredentials } as TWindowsResource; + }) + ); + }; + + const listDomainOptions = () => { + return [{ name: "Active Directory" as const, domain: PamDomainType.ActiveDirectory }].sort((a, b) => + a.name.localeCompare(b.name) + ); + }; + + return { + getById, + create, + updateById, + deleteById, + list, + listRelatedResources, + listDomainOptions + }; +}; diff --git a/backend/src/ee/services/pam-domain/pam-domain-types.ts b/backend/src/ee/services/pam-domain/pam-domain-types.ts new file mode 100644 index 00000000000..827467d9c21 --- /dev/null +++ b/backend/src/ee/services/pam-domain/pam-domain-types.ts @@ -0,0 +1,89 @@ +import { z } from "zod"; + +import { OrderByDirection, TProjectPermission } from "@app/lib/types"; +import { TKmsServiceFactory } from "@app/services/kms/kms-service"; +import { TResourceMetadataDALFactory } from "@app/services/resource-metadata/resource-metadata-dal"; +import { ResourceMetadataNonEncryptionSchema } from "@app/services/resource-metadata/resource-metadata-schema"; + +import { TGatewayV2ServiceFactory } from "../gateway-v2/gateway-v2-service"; +import { TPamResourceDALFactory } from "../pam-resource/pam-resource-dal"; +import { TPostRotateContext } from "../pam-resource/pam-resource-types"; +import { TPermissionServiceFactory } from "../permission/permission-service-types"; +import { TActiveDirectoryConnectionDetails } from "./active-directory/active-directory-domain-types"; +import { TPamDomainDALFactory } from "./pam-domain-dal"; +import { PamDomainOrderBy, PamDomainType } from "./pam-domain-enums"; + +export type TPamDomainConnectionDetails = TActiveDirectoryConnectionDetails; + +export type TPamDomain = { + id: string; + projectId: string; + name: string; + domainType: PamDomainType; + gatewayId?: string | null; + discoveryFingerprint?: string | null; + createdAt: Date; + updatedAt: Date; + connectionDetails: TPamDomainConnectionDetails; + metadata?: Array<{ id: string; key: string; value: string }>; +}; + +export type TCreateDomainDTO = { + projectId: string; + name: string; + domainType: PamDomainType; + gatewayId?: string | null; + connectionDetails: TPamDomainConnectionDetails; + metadata?: z.input; +}; + +export type TUpdateDomainDTO = { + domainId: string; + name?: string; + gatewayId?: string | null; + connectionDetails?: TPamDomainConnectionDetails; + metadata?: z.input; +}; + +export type TListDomainsDTO = { + search?: string; + orderBy?: PamDomainOrderBy; + orderDirection?: OrderByDirection; + limit?: number; + offset?: number; + discoveryFingerprint?: string; + filterDomainTypes?: string[]; +} & TProjectPermission; + +export type TDeleteDomainDTO = { + domainId: string; +}; + +export type TPamDomainServiceFactoryDep = { + pamDomainDAL: TPamDomainDALFactory; + pamResourceDAL: Pick; + permissionService: Pick; + kmsService: Pick; + gatewayV2Service: Pick; + resourceMetadataDAL: Pick; +}; + +export type TPamDomainFactory = ( + domainType: PamDomainType, + connectionDetails: T, + gatewayId: string | null | undefined, + gatewayV2Service: Pick, + projectId: string | null | undefined +) => { + validateConnection: () => Promise; + validateAccountCredentials: (credentials: C) => Promise; + rotateAccountCredentials: (rotationAccountCredentials: C, currentCredentials: C) => Promise; + postRotate?: ( + accountId: string, + newCredentials: C, + projectId: string, + ctx: TPostRotateContext, + rotationAccountCredentials: C + ) => Promise; + handleOverwritePreventionForCensoredValues: (updatedAccountCredentials: C, currentCredentials: C) => Promise; +}; diff --git a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-fns.ts b/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-fns.ts deleted file mode 100644 index 5b4ad8a2991..00000000000 --- a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-fns.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ActiveDirectoryResourceListItemSchema } from "./active-directory-resource-schemas"; - -export const getActiveDirectoryResourceListItem = () => { - return { - name: ActiveDirectoryResourceListItemSchema.shape.name.value, - resource: ActiveDirectoryResourceListItemSchema.shape.resource.value - }; -}; diff --git a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-schemas.ts b/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-schemas.ts deleted file mode 100644 index de81a0e798f..00000000000 --- a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-schemas.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { z } from "zod"; - -import { PamResource } from "../pam-resource-enums"; -import { - BaseCreateGatewayPamResourceSchema, - BaseCreatePamAccountSchema, - BasePamAccountSchema, - BasePamAccountSchemaWithResource, - BasePamResourceSchema, - BaseUpdateGatewayPamResourceSchema, - BaseUpdatePamAccountSchema -} from "../pam-resource-schemas"; -import { ActiveDirectoryAccountType } from "./active-directory-resource-enums"; - -// Resources -const BaseActiveDirectoryResourceSchema = BasePamResourceSchema.extend({ - resourceType: z.literal(PamResource.ActiveDirectory) -}); - -export const ActiveDirectoryResourceListItemSchema = z.object({ - name: z.literal("Active Directory"), - resource: z.literal(PamResource.ActiveDirectory) -}); - -export const ActiveDirectoryResourceConnectionDetailsSchema = z.object({ - domain: z.string().trim().min(1).max(255), - dcAddress: z.string().trim().min(1).max(255), - port: z.coerce.number().int().min(1).max(65535), - useLdaps: z.boolean(), - ldapRejectUnauthorized: z.boolean(), - ldapCaCert: z - .string() - .trim() - .transform((val) => val || undefined) - .optional(), - ldapTlsServerName: z - .string() - .trim() - .transform((val) => val || undefined) - .optional() -}); - -// Credentials (username + password for AD) -export const ActiveDirectoryAccountCredentialsSchema = z.object({ - username: z.string().trim().min(1).max(255), - password: z.string().trim().min(1).max(255) -}); - -// Account metadata -export const ActiveDirectoryAccountMetadataSchema = z.object({ - accountType: z.nativeEnum(ActiveDirectoryAccountType), - adGuid: z.string().optional(), - displayName: z.string().optional(), - userPrincipalName: z.string().optional(), - servicePrincipalName: z.string().array().optional(), - userAccountControl: z.number().optional(), - passwordLastSet: z.string().optional(), - lastLogon: z.string().optional() -}); - -export const ActiveDirectoryResourceSchema = BaseActiveDirectoryResourceSchema.extend({ - connectionDetails: ActiveDirectoryResourceConnectionDetailsSchema, - rotationAccountCredentials: ActiveDirectoryAccountCredentialsSchema.nullable().optional() -}); - -export const SanitizedActiveDirectoryResourceSchema = BaseActiveDirectoryResourceSchema.extend({ - connectionDetails: ActiveDirectoryResourceConnectionDetailsSchema, - rotationAccountCredentials: z - .object({ - username: z.string() - }) - .nullable() - .optional() -}); - -export const CreateActiveDirectoryResourceSchema = BaseCreateGatewayPamResourceSchema.extend({ - connectionDetails: ActiveDirectoryResourceConnectionDetailsSchema, - rotationAccountCredentials: ActiveDirectoryAccountCredentialsSchema.nullable().optional() -}); - -export const UpdateActiveDirectoryResourceSchema = BaseUpdateGatewayPamResourceSchema.extend({ - connectionDetails: ActiveDirectoryResourceConnectionDetailsSchema.optional(), - rotationAccountCredentials: ActiveDirectoryAccountCredentialsSchema.nullable().optional() -}); - -// Accounts -export const ActiveDirectoryAccountSchema = BasePamAccountSchema.extend({ - credentials: ActiveDirectoryAccountCredentialsSchema, - internalMetadata: ActiveDirectoryAccountMetadataSchema -}); - -export const CreateActiveDirectoryAccountSchema = BaseCreatePamAccountSchema.extend({ - credentials: ActiveDirectoryAccountCredentialsSchema, - internalMetadata: ActiveDirectoryAccountMetadataSchema -}); - -export const UpdateActiveDirectoryAccountSchema = BaseUpdatePamAccountSchema.extend({ - credentials: ActiveDirectoryAccountCredentialsSchema.optional(), - internalMetadata: ActiveDirectoryAccountMetadataSchema.optional() -}); - -export const SanitizedActiveDirectoryAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.ActiveDirectory), - credentials: z.object({ - username: z.string() - }), - internalMetadata: ActiveDirectoryAccountMetadataSchema -}); - -// Sessions -export const ActiveDirectorySessionCredentialsSchema = ActiveDirectoryResourceConnectionDetailsSchema.and( - ActiveDirectoryAccountCredentialsSchema -); diff --git a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-types.ts b/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-types.ts deleted file mode 100644 index df6e1033d2a..00000000000 --- a/backend/src/ee/services/pam-resource/active-directory/active-directory-resource-types.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { z } from "zod"; - -import { - ActiveDirectoryAccountCredentialsSchema, - ActiveDirectoryAccountMetadataSchema, - ActiveDirectoryAccountSchema, - ActiveDirectoryResourceConnectionDetailsSchema, - ActiveDirectoryResourceSchema -} from "./active-directory-resource-schemas"; - -// Resources -export type TActiveDirectoryResource = z.infer; -export type TActiveDirectoryResourceConnectionDetails = z.infer; - -// Accounts -export type TActiveDirectoryAccount = z.infer; -export type TActiveDirectoryAccountCredentials = z.infer; -export type TActiveDirectoryAccountInternalMetadata = z.infer; diff --git a/backend/src/ee/services/pam-resource/aws-iam/aws-iam-resource-schemas.ts b/backend/src/ee/services/pam-resource/aws-iam/aws-iam-resource-schemas.ts index cc79f17d8c2..8b6f8cfc666 100644 --- a/backend/src/ee/services/pam-resource/aws-iam/aws-iam-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/aws-iam/aws-iam-resource-schemas.ts @@ -72,7 +72,7 @@ export const UpdateAwsIamAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedAwsIamAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.AwsIam), + parentType: z.literal(PamResource.AwsIam), credentials: AwsIamAccountCredentialsSchema.pick({ targetRoleArn: true, defaultSessionDuration: true diff --git a/backend/src/ee/services/pam-resource/kubernetes/kubernetes-resource-schemas.ts b/backend/src/ee/services/pam-resource/kubernetes/kubernetes-resource-schemas.ts index aa60e91fb45..0d32cbc7153 100644 --- a/backend/src/ee/services/pam-resource/kubernetes/kubernetes-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/kubernetes/kubernetes-resource-schemas.ts @@ -81,7 +81,7 @@ export const UpdateKubernetesAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedKubernetesAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.Kubernetes), + parentType: z.literal(PamResource.Kubernetes), credentials: z.discriminatedUnion("authMethod", [ z.object({ authMethod: z.literal(KubernetesAuthMethod.ServiceAccountToken) diff --git a/backend/src/ee/services/pam-resource/mongodb/mongodb-resource-schemas.ts b/backend/src/ee/services/pam-resource/mongodb/mongodb-resource-schemas.ts index eb2eea7b8da..dc4f3be59ca 100644 --- a/backend/src/ee/services/pam-resource/mongodb/mongodb-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/mongodb/mongodb-resource-schemas.ts @@ -117,7 +117,7 @@ export const UpdateMongoDBAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedMongoDBAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.MongoDB), + parentType: z.literal(PamResource.MongoDB), credentials: MongoDBAccountCredentialsSchema.pick({ username: true }) diff --git a/backend/src/ee/services/pam-resource/mssql/mssql-resource-schemas.ts b/backend/src/ee/services/pam-resource/mssql/mssql-resource-schemas.ts index d865563b619..b7f15197be0 100644 --- a/backend/src/ee/services/pam-resource/mssql/mssql-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/mssql/mssql-resource-schemas.ts @@ -64,7 +64,7 @@ export const UpdateMsSQLAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedMsSQLAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.MsSQL), + parentType: z.literal(PamResource.MsSQL), credentials: MsSQLAccountCredentialsSchema.pick({ username: true }) diff --git a/backend/src/ee/services/pam-resource/mysql/mysql-resource-schemas.ts b/backend/src/ee/services/pam-resource/mysql/mysql-resource-schemas.ts index 61a88246cda..9f6604c2cc5 100644 --- a/backend/src/ee/services/pam-resource/mysql/mysql-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/mysql/mysql-resource-schemas.ts @@ -67,7 +67,7 @@ export const UpdateMySQLAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedMySQLAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.MySQL), + parentType: z.literal(PamResource.MySQL), credentials: MySQLAccountCredentialsSchema.pick({ username: true }) diff --git a/backend/src/ee/services/pam-resource/pam-resource-dal.ts b/backend/src/ee/services/pam-resource/pam-resource-dal.ts index 6a35aff50c2..8429700c5be 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-dal.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-dal.ts @@ -135,16 +135,16 @@ export const pamResourceDALFactory = (db: TDbClient) => { return byResourceId; }; - const findByAdServerResourceId = async (adServerResourceId: string, tx?: Knex) => { + const findByDomainId = async (domainId: string, tx?: Knex) => { try { const resources = await (tx || db.replicaNode())(TableName.PamResource) .select(selectAllTableCols(TableName.PamResource)) - .where(`${TableName.PamResource}.adServerResourceId`, adServerResourceId) + .where(`${TableName.PamResource}.domainId`, domainId) .orderBy(`${TableName.PamResource}.name`, "asc"); return resources; } catch (error) { - throw new DatabaseError({ error, name: "Find PAM resources by AD server resource ID" }); + throw new DatabaseError({ error, name: "Find PAM resources by domain ID" }); } }; @@ -177,7 +177,7 @@ export const pamResourceDALFactory = (db: TDbClient) => { findById, findByProjectId, findMetadataByResourceIds, - findByAdServerResourceId, + findByDomainId, findByGatewayId, countByGatewayId }; diff --git a/backend/src/ee/services/pam-resource/pam-resource-enums.ts b/backend/src/ee/services/pam-resource/pam-resource-enums.ts index bb7476b62e8..6fdeb10fb3d 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-enums.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-enums.ts @@ -7,8 +7,7 @@ export enum PamResource { AwsIam = "aws-iam", Redis = "redis", MongoDB = "mongodb", - Windows = "windows", - ActiveDirectory = "active-directory" + Windows = "windows" } export enum PamResourceOrderBy { diff --git a/backend/src/ee/services/pam-resource/pam-resource-factory.ts b/backend/src/ee/services/pam-resource/pam-resource-factory.ts index 06f9020431c..6cbbbc23aca 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-factory.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-factory.ts @@ -1,4 +1,3 @@ -import { activeDirectoryResourceFactory } from "./active-directory/active-directory-resource-factory"; import { awsIamResourceFactory } from "./aws-iam/aws-iam-resource-factory"; import { kubernetesResourceFactory } from "./kubernetes/kubernetes-resource-factory"; import { mongodbResourceFactory } from "./mongodb/mongodb-resource-factory"; @@ -29,6 +28,5 @@ export const PAM_RESOURCE_FACTORY_MAP: Record { getRedisResourceListItem(), getMongoDBResourceListItem(), getWindowsResourceListItem(), - getActiveDirectoryResourceListItem(), getSshResourceListItem() ].sort((a, b) => a.name.localeCompare(b.name)); }; diff --git a/backend/src/ee/services/pam-resource/pam-resource-schemas.ts b/backend/src/ee/services/pam-resource/pam-resource-schemas.ts index 8e8d7e4ea09..f20e5fda626 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-schemas.ts @@ -1,6 +1,8 @@ import { z } from "zod"; -import { PamAccountsSchema, PamResourcesSchema, ResourceMetadataSchema } from "@app/db/schemas"; +import { PamAccountsSchema, PamDomainsSchema, PamResourcesSchema, ResourceMetadataSchema } from "@app/db/schemas"; +import { PamDomainType } from "@app/ee/services/pam-domain/pam-domain-enums"; +import { PamResource } from "@app/ee/services/pam-resource/pam-resource-enums"; import { slugSchema } from "@app/server/lib/schemas"; import { ResourceMetadataNonEncryptionSchema } from "@app/services/resource-metadata/resource-metadata-schema"; @@ -56,13 +58,18 @@ export const BasePamAccountSchema = PamAccountsSchema.omit({ }); export const BasePamAccountSchemaWithResource = BasePamAccountSchema.extend({ + parentType: z.union([z.nativeEnum(PamResource), z.nativeEnum(PamDomainType)]), resource: PamResourcesSchema.pick({ id: true, name: true, resourceType: true - }).extend({ - rotationCredentialsConfigured: z.boolean() - }), + }) + .extend({ + rotationCredentialsConfigured: z.boolean() + }) + .nullable() + .optional(), + domain: PamDomainsSchema.pick({ id: true, name: true, domainType: true }).nullable().optional(), lastRotationMessage: z.string().nullable().optional(), rotationStatus: z.string().nullable().optional() }); diff --git a/backend/src/ee/services/pam-resource/pam-resource-service.ts b/backend/src/ee/services/pam-resource/pam-resource-service.ts index 958624ac142..f0220dde511 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-service.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-service.ts @@ -34,12 +34,11 @@ import { } from "./pam-resource-fns"; import { TCreateResourceDTO, TListResourcesDTO, TUpdateResourceDTO } from "./pam-resource-types"; import { TSSHResourceInternalMetadata } from "./ssh/ssh-resource-types"; -import { TWindowsResource } from "./windows-server/windows-server-resource-types"; type TPamResourceServiceFactoryDep = { pamResourceDAL: TPamResourceDALFactory; pamResourceFavoriteDAL: TPamResourceFavoriteDALFactory; - pamAccountDAL: Pick; + pamAccountDAL: Pick; permissionService: Pick; kmsService: Pick; gatewayV2Service: Pick< @@ -88,7 +87,7 @@ export const pamResourceServiceFactory = ({ if (!canReadResources) { // Check if user can read at least one account in this resource - const { accounts } = await pamAccountDAL.findByProjectIdWithResourceDetails({ + const { accounts } = await pamAccountDAL.findByProjectIdWithParentDetails({ projectId: resource.projectId, accountView: PamAccountView.Flat, filterResourceIds: [id] @@ -141,7 +140,7 @@ export const pamResourceServiceFactory = ({ name, projectId, rotationAccountCredentials, - adServerResourceId, + domainId, metadata }: TCreateResourceDTO, actor: OrgServiceActor @@ -179,15 +178,6 @@ export const pamResourceServiceFactory = ({ kmsService }); - if (adServerResourceId) { - const adResource = await pamResourceDAL.findById(adServerResourceId); - if (!adResource) - throw new NotFoundError({ message: `AD Server resource with ID '${adServerResourceId}' not found` }); - if (adResource.projectId !== projectId) { - throw new BadRequestError({ message: "AD Server resource must belong to the same project" }); - } - } - let encryptedRotationAccountCredentials: Buffer | null = null; if (rotationAccountCredentials) { @@ -210,7 +200,7 @@ export const pamResourceServiceFactory = ({ name, projectId, encryptedRotationAccountCredentials, - adServerResourceId: adServerResourceId ?? null + domainId: domainId ?? null }, tx ); @@ -250,7 +240,7 @@ export const pamResourceServiceFactory = ({ name, rotationAccountCredentials, gatewayId, - adServerResourceId, + domainId, metadata }: TUpdateResourceDTO, actor: OrgServiceActor @@ -305,16 +295,8 @@ export const pamResourceServiceFactory = ({ updateDoc.name = name; } - if (adServerResourceId !== undefined) { - if (adServerResourceId) { - const adResource = await pamResourceDAL.findById(adServerResourceId); - if (!adResource) - throw new NotFoundError({ message: `AD Server resource with ID '${adServerResourceId}' not found` }); - if (adResource.projectId !== resource.projectId) { - throw new BadRequestError({ message: "AD Server resource must belong to the same project" }); - } - } - updateDoc.adServerResourceId = adServerResourceId; + if (domainId !== undefined) { + updateDoc.domainId = domainId; } if (connectionDetails !== undefined) { @@ -566,7 +548,7 @@ export const pamResourceServiceFactory = ({ } // Fetch all accounts for the project (flat view, no pagination) for permission checking - const { accounts: allAccounts } = await pamAccountDAL.findByProjectIdWithResourceDetails({ + const { accounts: allAccounts } = await pamAccountDAL.findByProjectIdWithParentDetails({ projectId, accountView: PamAccountView.Flat }); @@ -585,9 +567,12 @@ export const pamResourceServiceFactory = ({ Array<{ accountName: string; metadata: Array<{ id: string; key: string; value: string }> }> >(); for (const account of allAccounts) { - const existing = accountsByResourceId.get(account.resourceId) || []; - existing.push({ accountName: account.name, metadata: accountMetadata[account.id] || [] }); - accountsByResourceId.set(account.resourceId, existing); + if (account.resourceId) { + // Skip domain accounts for resource-level permission check + const existing = accountsByResourceId.get(account.resourceId) || []; + existing.push({ accountName: account.name, metadata: accountMetadata[account.id] || [] }); + accountsByResourceId.set(account.resourceId, existing); + } } // Filter to only resources where the user can read at least one account @@ -703,41 +688,6 @@ export const pamResourceServiceFactory = ({ return { caPublicKey }; }; - const listRelatedResources = async (adServerResourceId: string, actor: OrgServiceActor) => { - const resource = await pamResourceDAL.findById(adServerResourceId); - if (!resource) throw new NotFoundError({ message: `Resource with ID '${adServerResourceId}' not found` }); - - if (resource.resourceType !== PamResource.ActiveDirectory) { - throw new BadRequestError({ message: "Related resources can only be listed for Active Directory resources" }); - } - - const { permission } = await permissionService.getProjectPermission({ - actor: actor.type, - actorAuthMethod: actor.authMethod, - actorId: actor.id, - actorOrgId: actor.orgId, - projectId: resource.projectId, - actionProjectType: ActionProjectType.PAM - }); - - const metadataByResourceId = await pamResourceDAL.findMetadataByResourceIds([adServerResourceId]); - - ForbiddenError.from(permission).throwUnlessCan( - ProjectPermissionActions.Read, - subject(ProjectPermissionSub.PamResources, { - name: resource.name, - resourceType: resource.resourceType, - metadata: metadataByResourceId[adServerResourceId] || [] - }) - ); - - const relatedResources = await pamResourceDAL.findByAdServerResourceId(adServerResourceId); - - return Promise.all( - relatedResources.map((r) => decryptResource(r, resource.projectId, kmsService) as Promise) - ); - }; - const setUserResourceFavorite = async ({ projectId, resourceId, @@ -794,7 +744,6 @@ export const pamResourceServiceFactory = ({ list, listResourceOptions, getOrCreateSshCa, - listRelatedResources, setUserResourceFavorite }; }; diff --git a/backend/src/ee/services/pam-resource/pam-resource-types.ts b/backend/src/ee/services/pam-resource/pam-resource-types.ts index dbb356ac724..9ce0a1a0348 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-types.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-types.ts @@ -8,12 +8,6 @@ import { ResourceMetadataNonEncryptionSchema } from "@app/services/resource-meta import { TGatewayV2ServiceFactory } from "../gateway-v2/gateway-v2-service"; import { TPamAccountDependenciesDALFactory } from "../pam-discovery/pam-account-dependencies-dal"; -import { - TActiveDirectoryAccount, - TActiveDirectoryAccountCredentials, - TActiveDirectoryResource, - TActiveDirectoryResourceConnectionDetails -} from "./active-directory/active-directory-resource-types"; import { TAwsIamAccount, TAwsIamAccountCredentials, @@ -83,8 +77,7 @@ export type TPamResource = | TKubernetesResource | TRedisResource | TMongoDBResource - | TWindowsResource - | TActiveDirectoryResource; + | TWindowsResource; export type TPamResourceWithFavorite = TPamResources & { isFavorite: boolean }; export type TPamResourceConnectionDetails = | TPostgresResourceConnectionDetails @@ -95,8 +88,7 @@ export type TPamResourceConnectionDetails = | TAwsIamResourceConnectionDetails | TRedisResourceConnectionDetails | TMongoDBResourceConnectionDetails - | TWindowsResourceConnectionDetails - | TActiveDirectoryResourceConnectionDetails; + | TWindowsResourceConnectionDetails; export type TPamResourceInternalMetadata = TSSHResourceInternalMetadata | TWindowsResourceInternalMetadata; // Account types @@ -109,8 +101,7 @@ export type TPamAccount = | TKubernetesAccount | TRedisAccount | TMongoDBAccount - | TWindowsAccount - | TActiveDirectoryAccount; + | TWindowsAccount; export type TPamAccountCredentials = | TPostgresAccountCredentials @@ -121,14 +112,13 @@ export type TPamAccountCredentials = | TAwsIamAccountCredentials | TRedisAccountCredentials | TMongoDBAccountCredentials - | TWindowsAccountCredentials - | TActiveDirectoryAccountCredentials; + | TWindowsAccountCredentials; // Resource DTOs export type TCreateResourceDTO = Pick & { gatewayId?: string | null; rotationAccountCredentials?: TPamAccountCredentials | null; - adServerResourceId?: string | null; + domainId?: string | null; metadata?: z.input; }; diff --git a/backend/src/ee/services/pam-resource/postgres/postgres-resource-schemas.ts b/backend/src/ee/services/pam-resource/postgres/postgres-resource-schemas.ts index 554a414c9a3..4d6e3c945c8 100644 --- a/backend/src/ee/services/pam-resource/postgres/postgres-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/postgres/postgres-resource-schemas.ts @@ -64,7 +64,7 @@ export const UpdatePostgresAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedPostgresAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.Postgres), + parentType: z.literal(PamResource.Postgres), credentials: PostgresAccountCredentialsSchema.pick({ username: true }) diff --git a/backend/src/ee/services/pam-resource/redis/redis-resource-schemas.ts b/backend/src/ee/services/pam-resource/redis/redis-resource-schemas.ts index 99c578e730a..2070498612b 100644 --- a/backend/src/ee/services/pam-resource/redis/redis-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/redis/redis-resource-schemas.ts @@ -83,7 +83,7 @@ export const UpdateRedisAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedRedisAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.Redis), + parentType: z.literal(PamResource.Redis), credentials: RedisAccountCredentialsSchema.pick({ username: true }) diff --git a/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts b/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts index fa06bfb3534..ea01eb3b05c 100644 --- a/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts @@ -114,7 +114,7 @@ export const UpdateSSHAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedSSHAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.SSH), + parentType: z.literal(PamResource.SSH), credentials: z.discriminatedUnion("authMethod", [ z.object({ authMethod: z.literal(SSHAuthMethod.Password), diff --git a/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts b/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts index 29385e2f613..cdd1890edf7 100644 --- a/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts @@ -82,13 +82,13 @@ export const SanitizedWindowsResourceSchema = BaseWindowsResourceSchema.extend({ export const CreateWindowsResourceSchema = BaseCreateGatewayPamResourceSchema.extend({ connectionDetails: WindowsResourceConnectionDetailsSchema, rotationAccountCredentials: WindowsAccountCredentialsSchema.nullable().optional(), - adServerResourceId: z.string().uuid().nullable().optional() + domainId: z.string().uuid().nullable().optional() }); export const UpdateWindowsResourceSchema = BaseUpdateGatewayPamResourceSchema.extend({ connectionDetails: WindowsResourceConnectionDetailsSchema.optional(), rotationAccountCredentials: WindowsAccountCredentialsSchema.nullable().optional(), - adServerResourceId: z.string().uuid().nullable().optional() + domainId: z.string().uuid().nullable().optional() }); // Accounts @@ -108,7 +108,7 @@ export const UpdateWindowsAccountSchema = BaseUpdatePamAccountSchema.extend({ }); export const SanitizedWindowsAccountWithResourceSchema = BasePamAccountSchemaWithResource.extend({ - resourceType: z.literal(PamResource.Windows), + parentType: z.literal(PamResource.Windows), credentials: z.object({ username: z.string() }), diff --git a/backend/src/ee/services/pam-web-access/pam-web-access-service.ts b/backend/src/ee/services/pam-web-access/pam-web-access-service.ts index 8629edb994b..00f3101cb72 100644 --- a/backend/src/ee/services/pam-web-access/pam-web-access-service.ts +++ b/backend/src/ee/services/pam-web-access/pam-web-access-service.ts @@ -172,6 +172,10 @@ export const pamWebAccessServiceFactory = ({ throw new NotFoundError({ message: `Account with ID '${accountId}' not found` }); } + if (!account.resourceId) { + throw new BadRequestError({ message: "Web access is only available for resource-backed accounts" }); + } + const resource = await pamResourceDAL.findById(account.resourceId); if (!resource) { @@ -420,6 +424,10 @@ export const pamWebAccessServiceFactory = ({ throw new BadRequestError({ message: "Invalid account or project" }); } + if (!account.resourceId) { + throw new BadRequestError({ message: "Web access is only available for resource-backed accounts" }); + } + const resource = await pamResourceDAL.findById(account.resourceId); if (!resource) { throw new BadRequestError({ message: "Resource not found" }); diff --git a/backend/src/ee/services/permission/default-roles.ts b/backend/src/ee/services/permission/default-roles.ts index fa3d43f8a01..605958d3b6f 100644 --- a/backend/src/ee/services/permission/default-roles.ts +++ b/backend/src/ee/services/permission/default-roles.ts @@ -63,6 +63,7 @@ const buildAdminPermissionRules = () => { ProjectPermissionSub.SshHostGroups, ProjectPermissionSub.PamFolders, ProjectPermissionSub.PamResources, + ProjectPermissionSub.PamDomains, ProjectPermissionSub.McpServers, ProjectPermissionSub.McpActivityLogs ].forEach((el) => { @@ -687,6 +688,8 @@ const buildMemberPermissionRules = () => { can([ProjectPermissionActions.Read], ProjectPermissionSub.PamResources); + can([ProjectPermissionActions.Read], ProjectPermissionSub.PamDomains); + can( [ProjectPermissionPamAccountActions.Access, ProjectPermissionPamAccountActions.Read], ProjectPermissionSub.PamAccounts @@ -769,6 +772,8 @@ const buildViewerPermissionRules = () => { can([ProjectPermissionActions.Read], ProjectPermissionSub.PamResources); + can([ProjectPermissionActions.Read], ProjectPermissionSub.PamDomains); + can([ProjectPermissionPamAccountActions.Read], ProjectPermissionSub.PamAccounts); can([ProjectPermissionPamDiscoveryActions.Read], ProjectPermissionSub.PamDiscovery); diff --git a/backend/src/ee/services/permission/project-permission.ts b/backend/src/ee/services/permission/project-permission.ts index f0e4ecf2ac9..c759b612cdf 100644 --- a/backend/src/ee/services/permission/project-permission.ts +++ b/backend/src/ee/services/permission/project-permission.ts @@ -345,6 +345,7 @@ export enum ProjectPermissionSub { AppConnections = "app-connections", PamFolders = "pam-folders", PamResources = "pam-resources", + PamDomains = "pam-domains", PamAccounts = "pam-accounts", PamSessions = "pam-sessions", PamDiscovery = "pam-discovery", @@ -514,9 +515,11 @@ export type McpEndpointSubjectFields = { }; export type PamAccountSubjectFields = { - resourceName: string; + resourceName?: string; + resourceType?: string; + domainName?: string; + domainType?: string; accountName: string; - resourceType: string; metadata?: { key: string; value: string }[]; }; @@ -526,6 +529,12 @@ export type PamResourceSubjectFields = { metadata?: { key: string; value: string }[]; }; +export type PamDomainSubjectFields = { + name: string; + domainType: string; + metadata?: { key: string; value: string }[]; +}; + export type ProjectPermissionSet = | [ ProjectPermissionSecretActions, @@ -657,6 +666,10 @@ export type ProjectPermissionSet = ProjectPermissionActions, ProjectPermissionSub.PamResources | (ForcedSubject & PamResourceSubjectFields) ] + | [ + ProjectPermissionActions, + ProjectPermissionSub.PamDomains | (ForcedSubject & PamDomainSubjectFields) + ] | [ ProjectPermissionPamAccountActions, ProjectPermissionSub.PamAccounts | (ForcedSubject & PamAccountSubjectFields) @@ -1247,6 +1260,28 @@ const PamAccountConditionSchema = z }) .partial() ]), + domainName: z.union([ + z.string(), + z + .object({ + [PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ], + [PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ], + [PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN], + [PermissionConditionOperators.$GLOB]: PermissionConditionSchema[PermissionConditionOperators.$GLOB] + }) + .partial() + ]), + domainType: z.union([ + z.string(), + z + .object({ + [PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ], + [PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ], + [PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN], + [PermissionConditionOperators.$GLOB]: PermissionConditionSchema[PermissionConditionOperators.$GLOB] + }) + .partial() + ]), metadata: z.object({ [PermissionConditionOperators.$ELEMENTMATCH]: z .object({ @@ -1317,6 +1352,53 @@ const PamResourceConditionSchema = z }) .partial(); +const PamDomainConditionSchema = z + .object({ + name: z.union([ + z.string(), + z + .object({ + [PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ], + [PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ], + [PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN], + [PermissionConditionOperators.$GLOB]: PermissionConditionSchema[PermissionConditionOperators.$GLOB] + }) + .partial() + ]), + domainType: z.union([ + z.string(), + z + .object({ + [PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ], + [PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ], + [PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN], + [PermissionConditionOperators.$GLOB]: PermissionConditionSchema[PermissionConditionOperators.$GLOB] + }) + .partial() + ]), + metadata: z.object({ + [PermissionConditionOperators.$ELEMENTMATCH]: z + .object({ + key: z + .object({ + [PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ], + [PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ], + [PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN] + }) + .partial(), + value: z + .object({ + [PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ], + [PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ], + [PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN] + }) + .partial() + }) + .partial() + }) + }) + .partial(); + const CertificateAuthorityConditionSchema = z .object({ name: z.union([ @@ -1650,6 +1732,16 @@ const GeneralPermissionSchema = [ "When specified, only matching conditions will be allowed to access given resource." ).optional() }), + z.object({ + subject: z.literal(ProjectPermissionSub.PamDomains).describe("The entity this permission pertains to."), + inverted: z.boolean().optional().describe("Whether rule allows or forbids."), + action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionActions).describe( + "Describe what action an entity can take." + ), + conditions: PamDomainConditionSchema.describe( + "When specified, only matching conditions will be allowed to access given domain." + ).optional() + }), z.object({ subject: z.literal(ProjectPermissionSub.PamAccounts).describe("The entity this permission pertains to."), inverted: z.boolean().optional().describe("Whether rule allows or forbids."), diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index aca5ed3e16c..52364a662f6 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -92,6 +92,8 @@ import { pamDiscoverySourceDependenciesDALFactory } from "@app/ee/services/pam-d import { pamDiscoverySourceResourcesDALFactory } from "@app/ee/services/pam-discovery/pam-discovery-source-resources-dal"; import { pamDiscoveryRunDALFactory } from "@app/ee/services/pam-discovery/pam-discovery-source-run-dal"; import { pamDiscoverySourceServiceFactory } from "@app/ee/services/pam-discovery/pam-discovery-source-service"; +import { pamDomainDALFactory } from "@app/ee/services/pam-domain/pam-domain-dal"; +import { pamDomainServiceFactory } from "@app/ee/services/pam-domain/pam-domain-service"; import { pamFolderDALFactory } from "@app/ee/services/pam-folder/pam-folder-dal"; import { pamFolderServiceFactory } from "@app/ee/services/pam-folder/pam-folder-service"; import { pamResourceDALFactory } from "@app/ee/services/pam-resource/pam-resource-dal"; @@ -2784,6 +2786,7 @@ export const registerRoutes = async ( }); const pamFolderDAL = pamFolderDALFactory(db); + const pamDomainDAL = pamDomainDALFactory(db); const pamResourceFavoriteDAL = pamResourceFavoriteDALFactory(db); const pamAccountDAL = pamAccountDALFactory(db); const pamSessionDAL = pamSessionDALFactory(db); @@ -2816,6 +2819,15 @@ export const registerRoutes = async ( resourceMetadataDAL }); + const pamDomainService = pamDomainServiceFactory({ + pamDomainDAL, + pamResourceDAL, + permissionService, + kmsService, + gatewayV2Service, + resourceMetadataDAL + }); + const pamResourceRotationRulesService = pamResourceRotationRulesServiceFactory({ pamResourceRotationRulesDAL, pamResourceDAL, @@ -2836,6 +2848,7 @@ export const registerRoutes = async ( const pamAccountService = pamAccountServiceFactory({ pamAccountDAL, + pamDomainDAL, pamResourceRotationRulesDAL, gatewayV2Service, kmsService, @@ -2895,6 +2908,7 @@ export const registerRoutes = async ( pamDiscoverySourceAccountsDAL, pamDiscoverySourceDependenciesDAL, pamAccountDependenciesDAL, + pamDomainDAL, pamResourceDAL, pamAccountDAL, kmsService, @@ -3149,6 +3163,7 @@ export const registerRoutes = async ( notification: notificationService, pamFolder: pamFolderService, pamResource: pamResourceService, + pamDomain: pamDomainService, pamResourceRotationRules: pamResourceRotationRulesService, pamAccount: pamAccountService, pamSession: pamSessionService, diff --git a/backend/src/services/telemetry/telemetry-types.ts b/backend/src/services/telemetry/telemetry-types.ts index 9a72395185b..5ddc175a37b 100644 --- a/backend/src/services/telemetry/telemetry-types.ts +++ b/backend/src/services/telemetry/telemetry-types.ts @@ -12,6 +12,7 @@ import { UnknownUserActor, UserActor } from "@app/ee/services/audit-log/audit-log-types"; +import { PamParentType } from "@app/ee/services/pam-account/pam-account-enums"; import { SecretRotation } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-enums"; import { EnforcementLevel, SecretSharingAccessType } from "@app/lib/types"; import { AppConnection } from "@app/services/app-connection/app-connection-enums"; @@ -737,7 +738,7 @@ export type TPamResourceEvent = { export type TPamAccountEvent = { event: PostHogEventTypes.PamAccountCreated | PostHogEventTypes.PamAccountDeleted; properties: { - resourceType: string; + parentType: PamParentType; projectId: string; }; }; @@ -754,7 +755,7 @@ export type TPamAccountAccessedEvent = { export type TPamAccountRotatedEvent = { event: PostHogEventTypes.PamAccountRotated; properties: { - resourceType: string; + parentType: PamParentType; projectId: string; }; }; diff --git a/frontend/src/context/ProjectPermissionContext/types.ts b/frontend/src/context/ProjectPermissionContext/types.ts index d1125848a7b..8711e8637b9 100644 --- a/frontend/src/context/ProjectPermissionContext/types.ts +++ b/frontend/src/context/ProjectPermissionContext/types.ts @@ -426,6 +426,7 @@ export enum ProjectPermissionSub { AppConnections = "app-connections", PamFolders = "pam-folders", PamResources = "pam-resources", + PamDomains = "pam-domains", PamAccounts = "pam-accounts", PamSessions = "pam-sessions", PamDiscovery = "pam-discovery", @@ -517,8 +518,10 @@ export type CertificatePolicySubjectFields = { }; export type PamAccountSubjectFields = { - resourceName: string; - resourceType: string; + resourceName?: string; + resourceType?: string; + domainName?: string; + domainType?: string; accountName: string; metadata?: { key: string; value: string }[]; }; @@ -706,6 +709,7 @@ export type ProjectPermissionSet = | (ForcedSubject & PamResourceSubjectFields) ) ] + | [ProjectPermissionActions, ProjectPermissionSub.PamDomains] | [ ProjectPermissionPamAccountActions, ( diff --git a/frontend/src/hooks/api/pam/enums.ts b/frontend/src/hooks/api/pam/enums.ts index d8f4e18d005..7a00c644a69 100644 --- a/frontend/src/hooks/api/pam/enums.ts +++ b/frontend/src/hooks/api/pam/enums.ts @@ -2,7 +2,6 @@ export enum PamResourceType { Postgres = "postgres", MySQL = "mysql", - RDP = "rdp", SSH = "ssh", Kubernetes = "kubernetes", OracleDB = "oracledb", @@ -18,8 +17,7 @@ export enum PamResourceType { Snowflake = "snowflake", DynamoDB = "dynamodb", AwsIam = "aws-iam", - Windows = "windows", - ActiveDirectory = "active-directory" + Windows = "windows" } export enum PamResourceOrderBy { diff --git a/frontend/src/hooks/api/pam/maps.ts b/frontend/src/hooks/api/pam/maps.ts index 5cba0f893e1..1f1148164b2 100644 --- a/frontend/src/hooks/api/pam/maps.ts +++ b/frontend/src/hooks/api/pam/maps.ts @@ -6,7 +6,6 @@ export const PAM_RESOURCE_TYPE_MAP: Record< > = { [PamResourceType.Postgres]: { name: "PostgreSQL", image: "Postgres.png" }, [PamResourceType.MySQL]: { name: "MySQL", image: "MySql.png" }, - [PamResourceType.RDP]: { name: "RDP", image: "RDP.png" }, [PamResourceType.SSH]: { name: "SSH", image: "SSH.png" }, [PamResourceType.Kubernetes]: { name: "Kubernetes", image: "Kubernetes.png" }, [PamResourceType.OracleDB]: { name: "OracleDB", image: "Oracle.png", size: 55 }, @@ -22,6 +21,5 @@ export const PAM_RESOURCE_TYPE_MAP: Record< [PamResourceType.Snowflake]: { name: "Snowflake", image: "Snowflake.png" }, [PamResourceType.DynamoDB]: { name: "DynamoDB", image: "DynamoDB.png", size: 55 }, [PamResourceType.AwsIam]: { name: "AWS IAM", image: "Amazon Web Services.png" }, - [PamResourceType.Windows]: { name: "Windows Server", image: "Windows.png" }, - [PamResourceType.ActiveDirectory]: { name: "Active Directory", image: "ActiveDirectory.png" } + [PamResourceType.Windows]: { name: "Windows Server", image: "Windows.png" } }; diff --git a/frontend/src/hooks/api/pam/mutations.tsx b/frontend/src/hooks/api/pam/mutations.tsx index 31fb9f424a9..4a346142d6d 100644 --- a/frontend/src/hooks/api/pam/mutations.tsx +++ b/frontend/src/hooks/api/pam/mutations.tsx @@ -133,9 +133,9 @@ export const useSetPamResourceFavorite = () => { export const useCreatePamAccount = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ resourceType, ...params }: TCreatePamAccountDTO) => { + mutationFn: async ({ parentType, ...params }: TCreatePamAccountDTO) => { const { data } = await apiRequest.post<{ account: TPamAccount }>( - `/api/v1/pam/accounts/${resourceType}`, + `/api/v1/pam/accounts/${parentType}`, params ); @@ -150,9 +150,9 @@ export const useCreatePamAccount = () => { export const useUpdatePamAccount = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ resourceType, accountId, ...params }: TUpdatePamAccountDTO) => { + mutationFn: async ({ parentType, accountId, ...params }: TUpdatePamAccountDTO) => { const { data } = await apiRequest.patch<{ account: TPamAccount }>( - `/api/v1/pam/accounts/${resourceType}/${accountId}`, + `/api/v1/pam/accounts/${parentType}/${accountId}`, params ); @@ -168,9 +168,9 @@ export const useUpdatePamAccount = () => { export const useDeletePamAccount = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ resourceType, accountId }: TDeletePamAccountDTO) => { + mutationFn: async ({ parentType, accountId }: TDeletePamAccountDTO) => { const { data } = await apiRequest.delete<{ account: TPamAccount }>( - `/api/v1/pam/accounts/${resourceType}/${accountId}` + `/api/v1/pam/accounts/${parentType}/${accountId}` ); return data.account; diff --git a/frontend/src/hooks/api/pam/queries.tsx b/frontend/src/hooks/api/pam/queries.tsx index db79ce84fb7..57d1c9d6f90 100644 --- a/frontend/src/hooks/api/pam/queries.tsx +++ b/frontend/src/hooks/api/pam/queries.tsx @@ -141,32 +141,6 @@ export const useGetPamResourceById = ( }); }; -export const useListRelatedResources = ( - resourceId?: string, - options?: Omit< - UseQueryOptions< - TPamResource[], - unknown, - TPamResource[], - ReturnType - >, - "queryKey" | "queryFn" - > -) => { - return useQuery({ - queryKey: pamKeys.listRelatedResources(resourceId || ""), - queryFn: async () => { - const { data } = await apiRequest.get<{ resources: TPamResource[] }>( - `/api/v1/pam/resources/active-directory/${resourceId}/related-resources` - ); - - return data.resources; - }, - enabled: !!resourceId && (options?.enabled ?? true), - ...options - }); -}; - export const useGetPamResourceDependencies = ( resourceType?: PamResourceType, resourceId?: string @@ -204,13 +178,17 @@ export const useListPamAccounts = ( return useQuery({ queryKey: pamKeys.listAccounts(params), queryFn: async () => { - const { metadataFilter, filterResourceIds, ...rest } = params; + const { metadataFilter, filterResourceIds, filterDomainIds, ...rest } = params; const { data } = await apiRequest.post( "/api/v1/pam/accounts/search", { ...rest, metadata: metadataFilter, filterResourceIds: filterResourceIds + ?.split(",") + .map((s) => s.trim()) + .filter(Boolean), + filterDomainIds: filterDomainIds ?.split(",") .map((s) => s.trim()) .filter(Boolean) diff --git a/frontend/src/hooks/api/pam/types/base-account.ts b/frontend/src/hooks/api/pam/types/base-account.ts index eb8178e05cf..a758db33507 100644 --- a/frontend/src/hooks/api/pam/types/base-account.ts +++ b/frontend/src/hooks/api/pam/types/base-account.ts @@ -3,14 +3,21 @@ import { PamResourceType } from "../enums"; export interface TBasePamAccount { id: string; projectId: string; + parentType: string; folderId?: string | null; - resourceId: string; - resource: { + resourceId?: string | null; + domainId?: string | null; + resource?: { id: string; name: string; resourceType: PamResourceType; rotationCredentialsConfigured: boolean; - }; + } | null; + domain?: { + id: string; + name: string; + domainType: string; + } | null; name: string; description?: string | null; credentialsConfigured: boolean; diff --git a/frontend/src/hooks/api/pam/types/base-resource.ts b/frontend/src/hooks/api/pam/types/base-resource.ts index 9c4f664dc5d..fe3c784e085 100644 --- a/frontend/src/hooks/api/pam/types/base-resource.ts +++ b/frontend/src/hooks/api/pam/types/base-resource.ts @@ -3,7 +3,7 @@ export interface TBasePamResource { projectId: string; name: string; gatewayId: string; - adServerResourceId?: string | null; + domainId?: string | null; metadata?: { key: string; value: string }[]; isFavorite?: boolean; createdAt: string; diff --git a/frontend/src/hooks/api/pam/types/index.ts b/frontend/src/hooks/api/pam/types/index.ts index 3e49bb535c6..a38c207245d 100644 --- a/frontend/src/hooks/api/pam/types/index.ts +++ b/frontend/src/hooks/api/pam/types/index.ts @@ -7,7 +7,6 @@ import { PamSessionStatus, TerminalChannelType } from "../enums"; -import { TActiveDirectoryAccount, TActiveDirectoryResource } from "./active-directory-resource"; import { TAwsIamAccount, TAwsIamResource } from "./aws-iam-resource"; import { TKubernetesAccount, TKubernetesResource } from "./kubernetes-resource"; import { TMongoDBAccount, TMongoDBResource } from "./mongodb-resource"; @@ -18,7 +17,6 @@ import { TRedisAccount, TRedisResource } from "./redis-resource"; import { TSSHAccount, TSSHResource } from "./ssh-resource"; import { TWindowsAccount, TWindowsResource } from "./windows-server-resource"; -export * from "./active-directory-resource"; export * from "./aws-iam-resource"; export * from "./kubernetes-resource"; export * from "./mongodb-resource"; @@ -38,8 +36,7 @@ export type TPamResource = | TSSHResource | TAwsIamResource | TKubernetesResource - | TWindowsResource - | TActiveDirectoryResource; + | TWindowsResource; export type TPamAccount = | TPostgresAccount @@ -50,8 +47,7 @@ export type TPamAccount = | TSSHAccount | TAwsIamAccount | TKubernetesAccount - | TWindowsAccount - | TActiveDirectoryAccount; + | TWindowsAccount; export type TPamFolder = { id: string; @@ -139,7 +135,7 @@ export type TCreatePamResourceDTO = Pick< TPamResource, "name" | "connectionDetails" | "resourceType" | "gatewayId" | "projectId" > & { - adServerResourceId?: string | null; + domainId?: string | null; metadata?: { key: string; value: string }[]; }; @@ -148,7 +144,7 @@ export type TUpdatePamResourceDTO = Partial< > & { resourceId: string; resourceType: PamResourceType; - adServerResourceId?: string | null; + domainId?: string | null; metadata?: { key: string; value: string }[]; rotationAccountCredentials?: { username: string; password: string } | null; }; @@ -168,6 +164,7 @@ export type TListPamAccountsDTO = { orderDirection?: OrderByDirection; search?: string; filterResourceIds?: string; + filterDomainIds?: string; metadataFilter?: Array<{ key: string; value?: string }>; }; @@ -175,7 +172,8 @@ export type TCreatePamAccountDTO = Pick< TPamAccount, "name" | "description" | "credentials" | "projectId" | "resourceId" | "folderId" | "requireMfa" > & { - resourceType: PamResourceType; + parentType: string; + domainId?: string; internalMetadata?: Record; metadata?: { key: string; value: string }[]; }; @@ -184,14 +182,14 @@ export type TUpdatePamAccountDTO = Partial< Pick > & { accountId: string; - resourceType: PamResourceType; + parentType: string; internalMetadata?: Record; metadata?: { key: string; value: string }[]; }; export type TDeletePamAccountDTO = { accountId: string; - resourceType: PamResourceType; + parentType: string; }; // Folder DTOs diff --git a/frontend/src/hooks/api/pam/types/active-directory-resource.ts b/frontend/src/hooks/api/pamDomain/active-directory-types.ts similarity index 59% rename from frontend/src/hooks/api/pam/types/active-directory-resource.ts rename to frontend/src/hooks/api/pamDomain/active-directory-types.ts index 9e627f8bc0e..5a8a26c90a7 100644 --- a/frontend/src/hooks/api/pam/types/active-directory-resource.ts +++ b/frontend/src/hooks/api/pamDomain/active-directory-types.ts @@ -1,7 +1,3 @@ -import { PamResourceType } from "../enums"; -import { TBasePamAccount } from "./base-account"; -import { TBasePamResource } from "./base-resource"; - export enum ActiveDirectoryAccountType { User = "user", Service = "service" @@ -30,16 +26,17 @@ export type TActiveDirectoryAccountInternalMetadata = { lastLogon?: string; }; -// Resources -export type TActiveDirectoryResource = TBasePamResource & { - resourceType: PamResourceType.ActiveDirectory; -} & { - connectionDetails: TActiveDirectoryConnectionDetails; - rotationAccountCredentials?: TActiveDirectoryCredentials | null; -}; - -// Accounts -export type TActiveDirectoryAccount = TBasePamAccount & { +export type TActiveDirectoryAccount = { + id: string; + name: string; + description?: string | null; + projectId: string; + resourceId?: string | null; + domainId?: string | null; + folderId?: string | null; + requireMfa: boolean; + createdAt: string; + updatedAt: string; credentials: TActiveDirectoryCredentials; internalMetadata: TActiveDirectoryAccountInternalMetadata; }; diff --git a/frontend/src/hooks/api/pamDomain/enums.ts b/frontend/src/hooks/api/pamDomain/enums.ts new file mode 100644 index 00000000000..03fcd18cad1 --- /dev/null +++ b/frontend/src/hooks/api/pamDomain/enums.ts @@ -0,0 +1,7 @@ +export enum PamDomainType { + ActiveDirectory = "active-directory" +} + +export enum PamDomainOrderBy { + Name = "name" +} diff --git a/frontend/src/hooks/api/pamDomain/index.ts b/frontend/src/hooks/api/pamDomain/index.ts new file mode 100644 index 00000000000..01197819d00 --- /dev/null +++ b/frontend/src/hooks/api/pamDomain/index.ts @@ -0,0 +1,6 @@ +export * from "./active-directory-types"; +export * from "./enums"; +export * from "./maps"; +export * from "./mutations"; +export * from "./queries"; +export * from "./types"; diff --git a/frontend/src/hooks/api/pamDomain/maps.ts b/frontend/src/hooks/api/pamDomain/maps.ts new file mode 100644 index 00000000000..b64baec6064 --- /dev/null +++ b/frontend/src/hooks/api/pamDomain/maps.ts @@ -0,0 +1,8 @@ +import { PamDomainType } from "./enums"; + +export const PAM_DOMAIN_TYPE_MAP: Record = { + [PamDomainType.ActiveDirectory]: { + name: "Active Directory", + image: "ActiveDirectory.png" + } +}; diff --git a/frontend/src/hooks/api/pamDomain/mutations.tsx b/frontend/src/hooks/api/pamDomain/mutations.tsx new file mode 100644 index 00000000000..ad55891fb2d --- /dev/null +++ b/frontend/src/hooks/api/pamDomain/mutations.tsx @@ -0,0 +1,53 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { pamDomainKeys } from "./queries"; +import { TCreatePamDomainDTO, TDeletePamDomainDTO, TPamDomain, TUpdatePamDomainDTO } from "./types"; + +export const useCreatePamDomain = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ domainType, ...body }: TCreatePamDomainDTO) => { + const { data } = await apiRequest.post<{ domain: TPamDomain }>( + `/api/v1/pam/domains/${domainType}`, + body + ); + return data.domain; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: pamDomainKeys.domain() }); + } + }); +}; + +export const useUpdatePamDomain = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ domainType, domainId, ...body }: TUpdatePamDomainDTO) => { + const { data } = await apiRequest.patch<{ domain: TPamDomain }>( + `/api/v1/pam/domains/${domainType}/${domainId}`, + body + ); + return data.domain; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: pamDomainKeys.domain() }); + } + }); +}; + +export const useDeletePamDomain = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ domainType, domainId }: TDeletePamDomainDTO) => { + const { data } = await apiRequest.delete<{ domain: TPamDomain }>( + `/api/v1/pam/domains/${domainType}/${domainId}` + ); + return data.domain; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: pamDomainKeys.domain() }); + } + }); +}; diff --git a/frontend/src/hooks/api/pamDomain/queries.tsx b/frontend/src/hooks/api/pamDomain/queries.tsx new file mode 100644 index 00000000000..5e71ad4f20b --- /dev/null +++ b/frontend/src/hooks/api/pamDomain/queries.tsx @@ -0,0 +1,88 @@ +import { useQuery, UseQueryOptions } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { PamDomainType } from "./enums"; +import { TListPamDomainsDTO, TPamDomain, TPamDomainRelatedResource } from "./types"; + +export const pamDomainKeys = { + all: ["pam-domain"] as const, + domain: () => [...pamDomainKeys.all, "domain"] as const, + listDomainOptions: () => [...pamDomainKeys.domain(), "options"] as const, + listDomains: ({ projectId, ...params }: TListPamDomainsDTO) => [ + ...pamDomainKeys.domain(), + "list", + projectId, + params + ], + getDomain: (domainType: string, domainId: string) => [ + ...pamDomainKeys.domain(), + "get", + domainType, + domainId + ], + listRelatedResources: (domainId: string) => [...pamDomainKeys.domain(), "related", domainId] +}; + +export const useListPamDomainOptions = () => { + return useQuery({ + queryKey: pamDomainKeys.listDomainOptions(), + queryFn: async () => { + const { data } = await apiRequest.get<{ + options: Array<{ name: string; domain: string }>; + }>("/api/v1/pam/domains/options"); + + return data.options; + } + }); +}; + +export const useListPamDomains = (params: TListPamDomainsDTO) => { + return useQuery({ + queryKey: pamDomainKeys.listDomains(params), + queryFn: async () => { + const { data } = await apiRequest.get<{ + domains: TPamDomain[]; + totalCount: number; + }>("/api/v1/pam/domains", { params }); + return data; + }, + enabled: !!params.projectId + }); +}; + +export const useGetPamDomainById = ( + domainType: PamDomainType | string, + domainId: string | undefined, + options?: Omit, "queryKey" | "queryFn"> +) => { + return useQuery({ + queryKey: pamDomainKeys.getDomain(domainType, domainId || ""), + queryFn: async () => { + const { data } = await apiRequest.get<{ domain: TPamDomain }>( + `/api/v1/pam/domains/${domainType}/${domainId}` + ); + return data.domain; + }, + enabled: !!domainId && !!domainType, + ...options + }); +}; + +export const useListDomainRelatedResources = ( + domainType: PamDomainType | string, + domainId: string | undefined, + options?: Omit, "queryKey" | "queryFn"> +) => { + return useQuery({ + queryKey: pamDomainKeys.listRelatedResources(domainId || ""), + queryFn: async () => { + const { data } = await apiRequest.get<{ resources: TPamDomainRelatedResource[] }>( + `/api/v1/pam/domains/${domainType}/${domainId}/related-resources` + ); + return data.resources; + }, + enabled: !!domainId && !!domainType, + ...options + }); +}; diff --git a/frontend/src/hooks/api/pamDomain/types.ts b/frontend/src/hooks/api/pamDomain/types.ts new file mode 100644 index 00000000000..ac718071870 --- /dev/null +++ b/frontend/src/hooks/api/pamDomain/types.ts @@ -0,0 +1,61 @@ +import { TActiveDirectoryConnectionDetails } from "./active-directory-types"; +import { PamDomainType } from "./enums"; + +export type TBasePamDomain = { + id: string; + projectId: string; + name: string; + domainType: PamDomainType; + gatewayId?: string | null; + createdAt: string; + updatedAt: string; + metadata?: Array<{ id: string; key: string; value: string }>; +}; + +export type TActiveDirectoryDomain = TBasePamDomain & { + domainType: PamDomainType.ActiveDirectory; + connectionDetails: TActiveDirectoryConnectionDetails; +}; + +export type TPamDomain = TActiveDirectoryDomain; + +export type TListPamDomainsDTO = { + projectId: string; + search?: string; + limit?: number; + offset?: number; + orderBy?: string; + orderDirection?: "asc" | "desc"; + filterDomainTypes?: string; + discoveryFingerprint?: string; +}; + +export type TCreatePamDomainDTO = { + domainType: PamDomainType; + projectId: string; + name: string; + gatewayId: string; + connectionDetails: TActiveDirectoryConnectionDetails; + metadata?: Array<{ key: string; value?: string }>; +}; + +export type TUpdatePamDomainDTO = { + domainType: PamDomainType; + domainId: string; + name?: string; + gatewayId?: string; + connectionDetails?: TActiveDirectoryConnectionDetails; + metadata?: Array<{ key: string; value?: string }>; +}; + +export type TDeletePamDomainDTO = { + domainType: PamDomainType; + domainId: string; +}; + +export type TPamDomainRelatedResource = { + id: string; + name: string; + resourceType: string; + projectId: string; +}; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/PamNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/PamNav.tsx index e3d07304dcb..1019d2b5bbe 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/PamNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/PamNav.tsx @@ -1,4 +1,13 @@ -import { BookCheck, Database, FileText, Search, Settings, Shield, Video } from "lucide-react"; +import { + BookCheck, + Database, + FileText, + Globe, + Search, + Settings, + Shield, + Video +} from "lucide-react"; import { ProjectNavList } from "./ProjectNavLink"; import { PAM_APPROVALS_SUBMENU, PROJECT_ACCESS_CONTROL_SUBMENU } from "./submenus"; @@ -7,8 +16,9 @@ import type { NavItem, Submenu } from "./types"; export const PamNav = ({ onSubmenuOpen }: { onSubmenuOpen: (submenu: Submenu) => void }) => { const items: NavItem[] = [ { label: "Resources", icon: Database, pathSuffix: "resources" }, - { label: "Sessions", icon: Video, pathSuffix: "sessions" }, { label: "Discovery", icon: Search, pathSuffix: "discovery", activeMatch: /\/discovery\// }, + { label: "Sessions", icon: Video, pathSuffix: "sessions" }, + { label: "Domains", icon: Globe, pathSuffix: "domains" }, { label: "Approvals", icon: BookCheck, diff --git a/frontend/src/pages/pam/PamAccountAccessPage/PamAccountAccessPage.tsx b/frontend/src/pages/pam/PamAccountAccessPage/PamAccountAccessPage.tsx index 128a2522c45..bc121fd236e 100644 --- a/frontend/src/pages/pam/PamAccountAccessPage/PamAccountAccessPage.tsx +++ b/frontend/src/pages/pam/PamAccountAccessPage/PamAccountAccessPage.tsx @@ -27,9 +27,9 @@ const PageContent = () => { accountId: accountId!, projectId: projectId!, orgId: orgId!, - resourceName: account?.resource.name ?? "", + resourceName: account?.resource?.name ?? "", accountName: account?.name ?? "", - resourceType: account?.resource.resourceType ?? "", + resourceType: account?.resource?.resourceType ?? "", onSessionEnd: () => setSessionEnded(true) }); @@ -98,7 +98,7 @@ const PageContent = () => {
Resource:{" "} - {account.resource.name} + {account.resource?.name} | diff --git a/frontend/src/pages/pam/PamAccountByIDPage/PamAccountByIDPage.tsx b/frontend/src/pages/pam/PamAccountByIDPage/PamAccountByIDPage.tsx index 9bf4db39503..e32ac43fd5d 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/PamAccountByIDPage.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/PamAccountByIDPage.tsx @@ -3,7 +3,7 @@ import { Helmet } from "react-helmet"; import { faChevronLeft } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useQueryClient } from "@tanstack/react-query"; -import { useNavigate, useParams, useSearch } from "@tanstack/react-router"; +import { useNavigate, useParams } from "@tanstack/react-router"; import { BanIcon, EllipsisVerticalIcon, @@ -15,7 +15,6 @@ import { import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; -import { Tab, TabList, TabPanel, Tabs } from "@app/components/v2"; import { Button, UnstableDropdownMenu, @@ -40,6 +39,7 @@ import { } from "@app/hooks/api/pam"; import { useManualRotateAccount } from "@app/hooks/api/pam/mutations"; import { pamKeys } from "@app/hooks/api/pam/queries"; +import { PAM_DOMAIN_TYPE_MAP, PamDomainType } from "@app/hooks/api/pamDomain"; import { PamAccessAccountModal } from "../PamAccountsPage/components/PamAccessAccountModal"; import { PamDeleteAccountModal } from "../PamAccountsPage/components/PamDeleteAccountModal"; @@ -52,7 +52,7 @@ import { PamAccountDetailsSection, PamAccountMetadataSection, PamAccountPropertiesSection, - PamAccountResourcesSection + PamSelectResourceModal } from "./components"; const PageContent = () => { @@ -66,35 +66,20 @@ const PageContent = () => { orgId?: string; resourceType?: string; resourceId?: string; + domainType?: string; + domainId?: string; }; - const { accountId, projectId, resourceType, resourceId } = params; - - const selectedTab = useSearch({ - strict: false, - select: (el) => el.selectedTab - }); - - const handleTabChange = (tab: string) => { - navigate({ - to: "/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId", - search: (prev) => ({ ...prev, selectedTab: tab }), - params: { - orgId: currentOrg.id, - projectId: projectId!, - resourceType: resourceType!, - resourceId: resourceId!, - accountId: accountId! - } - }); - }; + const { accountId, projectId, resourceType, resourceId, domainType, domainId } = params; + const isDomainAccount = !!domainId; const [isEditModalOpen, setIsEditModalOpen] = useState(false); const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ "accessAccount", "requestAccount", - "deleteAccount" + "deleteAccount", + "selectResource" ] as const); const queryClient = useQueryClient(); @@ -123,40 +108,65 @@ const PageContent = () => { ); } - const resourceTypeInfo = PAM_RESOURCE_TYPE_MAP[account.resource.resourceType]; + const resourceTypeInfo = account.resource + ? PAM_RESOURCE_TYPE_MAP[account.resource.resourceType] + : null; + + const domainTypeInfo = account.domain + ? PAM_DOMAIN_TYPE_MAP[account.domain.domainType as PamDomainType] + : null; + + const parentTypeInfo = resourceTypeInfo || domainTypeInfo; const handleBack = () => { - navigate({ - to: "/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId", - params: { - orgId: currentOrg.id, - projectId: projectId!, - resourceType: resourceType!, - resourceId: resourceId! - } - }); + if (isDomainAccount) { + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId", + params: { + orgId: currentOrg.id, + projectId: projectId!, + domainType: domainType!, + domainId: domainId! + } + }); + } else { + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId", + params: { + orgId: currentOrg.id, + projectId: projectId!, + resourceType: resourceType!, + resourceId: resourceId! + } + }); + } }; const handleAccess = async () => { + if (isDomainAccount && account.domain) { + handlePopUpOpen("selectResource"); + return; + } + const { requiresApproval } = await checkPolicyMatch({ policyType: ApprovalPolicyType.PamAccess, projectId: projectId!, inputs: { - resourceName: account.resource.name, + resourceName: account.resource?.name ?? "", accountName: account.name } }); if (requiresApproval) { handlePopUpOpen("requestAccount", { - resourceName: account.resource.name, + resourceName: account.resource?.name ?? "", accountName: account.name, accountAccessed: true }); return; } - if (account.resource.resourceType === PamResourceType.AwsIam) { + if (account.resource?.resourceType === PamResourceType.AwsIam) { accessAwsIam(account); } else { handlePopUpOpen("accessAccount", { account }); @@ -197,40 +207,42 @@ const PageContent = () => { className="mb-4 flex items-center gap-1 text-sm text-bunker-300 hover:text-primary-400" > - Back to resource + {isDomainAccount ? "Back to domain" : "Back to resource"}
-
- {resourceTypeInfo.name} -
+ {parentTypeInfo && ( +
+ {parentTypeInfo.name} +
+ )}

{account.name}

- {resourceTypeInfo.name} Account on {account.resource.name} + {account.domain + ? `${account.domain.domainType === "active-directory" ? "Active Directory" : account.domain.domainType} Account on ${account.domain.name}` + : `${resourceTypeInfo?.name ?? ""} Account on ${account.resource?.name ?? ""}`}

- {/* Windows Server accounts cannot be accessed temporarily */} - {/* Active Directory accounts cannot be accessed */} - {account.resource.resourceType !== PamResourceType.Windows && - account.resource.resourceType !== PamResourceType.ActiveDirectory && ( - - - - )} + {/* TODO: Disabled for Windows Server and Active Directory accounts until RDP is implemented */} + {!isDomainAccount && account.resource?.resourceType !== PamResourceType.Windows && ( + + + + )}
- {/* Right Column - Tabbed Content */}
- - - Resources - Dependencies - - - - - - - - +
@@ -343,6 +343,18 @@ const PageContent = () => { account={popUp.deleteAccount.data} onDeleted={handleBack} /> + + {isDomainAccount && account.domain && ( + handlePopUpToggle("selectResource", isOpen)} + domainType={account.domain.domainType} + domainId={account.domain.id} + onSelect={(resource) => { + handlePopUpOpen("accessAccount", { account, resource }); + }} + /> + )}
); }; diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountCredentialsSection.tsx b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountCredentialsSection.tsx index c6f96a9ac32..d61f76b4ffe 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountCredentialsSection.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountCredentialsSection.tsx @@ -13,16 +13,12 @@ import { import { ProjectPermissionSub } from "@app/context"; import { ProjectPermissionPamAccountActions } from "@app/context/ProjectPermissionContext/types"; import { useTimedReset } from "@app/hooks"; -import { - PamResourceType, - TActiveDirectoryAccount, - TPamAccount, - TWindowsAccount -} from "@app/hooks/api/pam"; +import { PamResourceType, TPamAccount, TWindowsAccount } from "@app/hooks/api/pam"; import { TPamAccountCredentialsResponse } from "@app/hooks/api/pam/queries"; import { TAwsIamCredentials } from "@app/hooks/api/pam/types/aws-iam-resource"; import { TBaseSqlCredentials } from "@app/hooks/api/pam/types/shared/sql-resource"; import { SSHAuthMethod, TSSHCredentials } from "@app/hooks/api/pam/types/ssh-resource"; +import { TActiveDirectoryAccount } from "@app/hooks/api/pamDomain/active-directory-types"; import { SensitiveCredentialsGate } from "./SensitiveCredentialsGate"; import { useCredentialsReveal } from "./useCredentialsReveal"; @@ -100,7 +96,7 @@ const ActiveDirectoryCredentialsContent = ({ account }: { account: TActiveDirect <> Account Type - {account.internalMetadata.accountType} + {account.internalMetadata?.accountType} @@ -108,6 +104,20 @@ const ActiveDirectoryCredentialsContent = ({ account }: { account: TActiveDirect }; const CredentialsContent = ({ account }: { account: TPamAccount }) => { + if (account.domain) { + switch (account.domain.domainType) { + case "active-directory": + return ( + + ); + default: + return null; + } + } + + if (!account.resource) return null; const { resourceType } = account.resource; switch (resourceType) { @@ -123,8 +133,6 @@ const CredentialsContent = ({ account }: { account: TPamAccount }) => { return ; case PamResourceType.Windows: return ; - case PamResourceType.ActiveDirectory: - return ; default: return null; } @@ -212,6 +220,16 @@ type SensitiveFieldDef = { // Non-sensitive fields (username, auth method, etc.) are already shown by CredentialsContent above. // When adding a new resource type, add a case here if it has credentials hidden from the sanitized view. const getSensitiveFieldDefs = (account: TPamAccount): SensitiveFieldDef[] => { + if (account.domain) { + switch (account.domain.domainType) { + case "active-directory": + return [{ key: "password", label: "Password" }]; + default: + return []; + } + } + + if (!account.resource) return []; const { resourceType } = account.resource; switch (resourceType) { @@ -221,7 +239,6 @@ const getSensitiveFieldDefs = (account: TPamAccount): SensitiveFieldDef[] => { case PamResourceType.MongoDB: case PamResourceType.Redis: case PamResourceType.Windows: - case PamResourceType.ActiveDirectory: return [{ key: "password", label: "Password" }]; case PamResourceType.SSH: { @@ -279,7 +296,7 @@ export const PamAccountCredentialsSection = ({ account, onEdit }: Props) => { if ( Object.keys(account.credentials).length <= 0 || - [PamResourceType.Kubernetes].includes(account.resource.resourceType) + [PamResourceType.Kubernetes].includes(account.resource?.resourceType as PamResourceType) ) return null; @@ -306,8 +323,8 @@ export const PamAccountCredentialsSection = ({ account, onEdit }: Props) => { { if (!account.credentialsConfigured) { diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDependenciesSection.tsx b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDependenciesSection.tsx index 5a4d46de4ad..c57920d30ba 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDependenciesSection.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDependenciesSection.tsx @@ -7,11 +7,14 @@ export const PamAccountDependenciesSection = ({ account }: { account: TPamAccoun const { data: dependencies, isPending } = useGetPamAccountDependencies(account.id); return ( - dep.resourceName} - /> +
+

Services & Tasks

+ dep.resourceName} + /> +
); }; diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDetailsSection.tsx b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDetailsSection.tsx index 5bf31541306..fe68cc55318 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDetailsSection.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountDetailsSection.tsx @@ -51,7 +51,9 @@ const rotationStatusLabel = (status?: string | null) => { }; export const PamAccountDetailsSection = ({ account, onEdit }: Props) => { - const resourceTypeInfo = PAM_RESOURCE_TYPE_MAP[account.resource.resourceType]; + const resourceTypeInfo = account.resource + ? PAM_RESOURCE_TYPE_MAP[account.resource.resourceType] + : null; const isRotating = account.rotationStatus === PamAccountRotationStatus.Rotating; // Poll for status updates while rotation is in progress @@ -83,22 +85,24 @@ export const PamAccountDetailsSection = ({ account, onEdit }: Props) => { Description {account.description || "-"} - - Type - -
- {resourceTypeInfo.name} - {resourceTypeInfo.name} Account -
-
-
+ {resourceTypeInfo && ( + + Type + +
+ {resourceTypeInfo.name} + {resourceTypeInfo.name} Account +
+
+
+ )} Parent Resource - {account.resource.name} + {account.resource?.name ?? "—"} Created diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountMetadataSection.tsx b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountMetadataSection.tsx index 0756725d2ee..04a28f48607 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountMetadataSection.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountMetadataSection.tsx @@ -56,7 +56,7 @@ export const PamAccountMetadataSection = ({ account }: Props) => { try { await updateAccount({ accountId: account.id, - resourceType: account.resource.resourceType, + parentType: account.parentType, metadata: formData.metadata || [] }); createNotification({ @@ -71,7 +71,7 @@ export const PamAccountMetadataSection = ({ account }: Props) => { }); } }, - [account.id, account.resource.resourceType, updateAccount] + [account.id, account.resource?.resourceType, updateAccount] ); return ( diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountPropertiesSection.tsx b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountPropertiesSection.tsx index a695937f613..97c9038ee29 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountPropertiesSection.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountPropertiesSection.tsx @@ -9,12 +9,7 @@ import { UnstableIconButton, UnstableInput } from "@app/components/v3"; -import { - PamResourceType, - TActiveDirectoryAccount, - TPamAccount, - TWindowsAccount -} from "@app/hooks/api/pam"; +import { PamResourceType, TPamAccount, TWindowsAccount } from "@app/hooks/api/pam"; const CopyableField = ({ label, value }: { label: string; value: string }) => { const handleCopy = () => { @@ -47,30 +42,8 @@ type TPropertyField = { }; const getAccountProperties = (account: TPamAccount): TPropertyField[] => { + if (!account.resource) return []; switch (account.resource.resourceType) { - case PamResourceType.ActiveDirectory: { - const { internalMetadata } = account as TActiveDirectoryAccount; - const fields: TPropertyField[] = []; - - if (internalMetadata.userPrincipalName) { - fields.push({ label: "User Principal Name", value: internalMetadata.userPrincipalName }); - } - if (internalMetadata.adGuid) { - fields.push({ label: "AD GUID", value: internalMetadata.adGuid }); - } - if (internalMetadata.passwordLastSet) { - fields.push({ - label: "Password Last Set", - value: internalMetadata.passwordLastSet, - type: "date" - }); - } - if (internalMetadata.lastLogon) { - fields.push({ label: "Last Logon", value: internalMetadata.lastLogon, type: "date" }); - } - - return fields; - } case PamResourceType.Windows: { const { internalMetadata } = account as TWindowsAccount; const fields: TPropertyField[] = []; diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountResourcesSection.tsx b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountResourcesSection.tsx index ffd23e19389..e382c80f25e 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountResourcesSection.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/PamAccountResourcesSection.tsx @@ -1,7 +1,7 @@ import { MonitorIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; -import { PamResourceType, TPamAccount, useListRelatedResources } from "@app/hooks/api/pam"; +import { PamResourceType, TPamAccount } from "@app/hooks/api/pam"; type Props = { account: TPamAccount; @@ -34,52 +34,10 @@ const ResourceCard = ({ name, resourceId, onAccess }: ResourceCardProps) => { ); }; -const ActiveDirectoryAccountResources = ({ account, onAccessResource }: Props) => { - const { resource } = account; - - // For AD accounts, show all domain member resources (excluding the AD server itself) - const { data: relatedResources, isPending } = useListRelatedResources(resource.id); - - return ( -
-
-

Resources

-

Domain machines this account can access

-
-
- {isPending &&

Loading resources...

} - {!isPending && (!relatedResources || relatedResources.length === 0) && ( -

No domain resources found

- )} - {relatedResources && relatedResources.length > 0 && ( - // Temporarily disable connecting to AD accounts -
- {relatedResources.map((relatedResource) => { - return ( - onAccessResource(relatedResource.id)} - /> - ); - })} -
- )} -
-
- ); -}; - export const PamAccountResourcesSection = ({ account, onAccessResource }: Props) => { const { resource } = account; - // For Active Directory accounts, show related domain resources instead - if (resource.resourceType === PamResourceType.ActiveDirectory) { - return ( - - ); - } + if (!resource) return null; return (
diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/PamSelectResourceModal.tsx b/frontend/src/pages/pam/PamAccountByIDPage/components/PamSelectResourceModal.tsx new file mode 100644 index 00000000000..01a5736a5db --- /dev/null +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/PamSelectResourceModal.tsx @@ -0,0 +1,92 @@ +import { useState } from "react"; + +import { Button, Modal, ModalContent, Select, SelectItem } from "@app/components/v2"; +import { PAM_RESOURCE_TYPE_MAP, PamResourceType } from "@app/hooks/api/pam"; +import { TPamDomainRelatedResource, useListDomainRelatedResources } from "@app/hooks/api/pamDomain"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + domainType: string; + domainId: string; + onSelect: (resource: TPamDomainRelatedResource) => void; +}; + +export const PamSelectResourceModal = ({ + isOpen, + onOpenChange, + domainType, + domainId, + onSelect +}: Props) => { + const [selectedResourceId, setSelectedResourceId] = useState(""); + const { data: resources } = useListDomainRelatedResources(domainType, domainId, { + enabled: isOpen + }); + + const handleAccess = () => { + const resource = resources?.find((r) => r.id === selectedResourceId); + if (resource) { + onSelect(resource); + onOpenChange(false); + setSelectedResourceId(""); + } + }; + + return ( + { + onOpenChange(open); + if (!open) setSelectedResourceId(""); + }} + > + +
+ +
+
+ + +
+
+
+ ); +}; diff --git a/frontend/src/pages/pam/PamAccountByIDPage/components/index.ts b/frontend/src/pages/pam/PamAccountByIDPage/components/index.ts index 6e665fc588d..f22b6ae9a86 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/components/index.ts +++ b/frontend/src/pages/pam/PamAccountByIDPage/components/index.ts @@ -4,3 +4,4 @@ export { PamAccountDetailsSection } from "./PamAccountDetailsSection"; export { PamAccountMetadataSection } from "./PamAccountMetadataSection"; export { PamAccountPropertiesSection } from "./PamAccountPropertiesSection"; export { PamAccountResourcesSection } from "./PamAccountResourcesSection"; +export { PamSelectResourceModal } from "./PamSelectResourceModal"; diff --git a/frontend/src/pages/pam/PamAccountByIDPage/route.tsx b/frontend/src/pages/pam/PamAccountByIDPage/route.tsx index 7ae205c6366..1e89f2526f5 100644 --- a/frontend/src/pages/pam/PamAccountByIDPage/route.tsx +++ b/frontend/src/pages/pam/PamAccountByIDPage/route.tsx @@ -1,26 +1,11 @@ -import { createFileRoute, linkOptions, stripSearchParams } from "@tanstack/react-router"; -import { zodValidator } from "@tanstack/zod-adapter"; -import { z } from "zod"; +import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { PamAccountByIDPage } from "./PamAccountByIDPage"; -export enum AccountDetailTab { - Resources = "resources", - Dependencies = "dependencies" -} - -const AccountDetailSearchSchema = z.object({ - selectedTab: z.nativeEnum(AccountDetailTab).catch(AccountDetailTab.Resources) -}); - export const Route = createFileRoute( "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId/" )({ - validateSearch: zodValidator(AccountDetailSearchSchema), component: PamAccountByIDPage, - search: { - middlewares: [stripSearchParams({ selectedTab: AccountDetailTab.Resources })] - }, beforeLoad: ({ context, params }) => { return { breadcrumbs: [ diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx index 1c60cf568cf..501c394f61a 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccessAccountModal.tsx @@ -70,6 +70,8 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account, projectId const command = useMemo(() => { if (!account) return ""; + if (!account.resource) return ""; + switch (account.resource.resourceType) { case PamResourceType.Postgres: case PamResourceType.MySQL: @@ -90,11 +92,11 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account, projectId if (!account) return null; const showWebAccess = - account.resource.resourceType === PamResourceType.Postgres || - account.resource.resourceType === PamResourceType.SSH || - account.resource.resourceType === PamResourceType.Redis; + account.resource?.resourceType === PamResourceType.Postgres || + account.resource?.resourceType === PamResourceType.SSH || + account.resource?.resourceType === PamResourceType.Redis; - const showDataExplorer = account.resource.resourceType === PamResourceType.Postgres; + const showDataExplorer = account.resource?.resourceType === PamResourceType.Postgres; return ( @@ -168,8 +170,8 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account, projectId params={{ orgId: currentOrg.id, projectId, - resourceType: account.resource.resourceType, - resourceId: account.resource.id, + resourceType: account.resource?.resourceType ?? "", + resourceId: account.resource?.id ?? "", accountId: account.id }} target="_blank" @@ -184,8 +186,8 @@ export const PamAccessAccountModal = ({ isOpen, onOpenChange, account, projectId params={{ orgId: currentOrg.id, projectId, - resourceType: account.resource.resourceType, - resourceId: account.resource.id, + resourceType: account.resource?.resourceType ?? "", + resourceId: account.resource?.id ?? "", accountId: account.id }} target="_blank" diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/ActiveDirectoryAccountForm.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/ActiveDirectoryAccountForm.tsx index 9d88c426c9d..04da5834ebe 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/ActiveDirectoryAccountForm.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/ActiveDirectoryAccountForm.tsx @@ -5,9 +5,11 @@ import { z } from "zod"; import { FormControl, Input, Select, SelectItem } from "@app/components/v2"; import { Button, SheetFooter } from "@app/components/v3"; -import { PamResourceType, TActiveDirectoryAccount } from "@app/hooks/api/pam"; import { UNCHANGED_PASSWORD_SENTINEL } from "@app/hooks/api/pam/constants"; -import { ActiveDirectoryAccountType } from "@app/hooks/api/pam/types/active-directory-resource"; +import { + ActiveDirectoryAccountType, + TActiveDirectoryAccount +} from "@app/hooks/api/pamDomain/active-directory-types"; import { GenericAccountFields, genericAccountFieldsSchema } from "./GenericAccountFields"; import { MetadataFields } from "./MetadataFields"; @@ -15,8 +17,6 @@ import { RequireMfaField } from "./RequireMfaField"; type Props = { account?: TActiveDirectoryAccount; - resourceId?: string; - resourceType?: PamResourceType; onSubmit: (formData: FormData) => Promise; closeSheet: () => void; }; diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/PamAccountForm.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/PamAccountForm.tsx index e440e6afd6a..192bf5fb86b 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/PamAccountForm.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/PamAccountForm.tsx @@ -5,6 +5,7 @@ import { useCreatePamAccount, useUpdatePamAccount } from "@app/hooks/api/pam"; +import { PamDomainType } from "@app/hooks/api/pamDomain"; import { DiscriminativePick } from "@app/types"; import { ActiveDirectoryAccountForm } from "./ActiveDirectoryAccountForm"; @@ -56,7 +57,7 @@ const CreateForm = ({ ...rest, folderId, resourceId, - resourceType, + parentType: resourceType, projectId, internalMetadata }); @@ -149,15 +150,6 @@ const CreateForm = ({ resourceType={resourceType} /> ); - case PamResourceType.ActiveDirectory: - return ( - - ); default: throw new Error(`Unhandled resource: ${resourceType}`); } @@ -178,7 +170,7 @@ const UpdateForm = ({ account, closeSheet }: UpdateFormProps) => { const { internalMetadata, ...rest } = formData; const updatedAccount = await updatePamAccount.mutateAsync({ accountId: account.id, - resourceType: account.resource.resourceType, + parentType: account.parentType, ...rest, internalMetadata }); @@ -189,7 +181,7 @@ const UpdateForm = ({ account, closeSheet }: UpdateFormProps) => { closeSheet(updatedAccount); }; - switch (account.resource.resourceType) { + switch (account.parentType) { case PamResourceType.Postgres: return ( @@ -234,7 +226,7 @@ const UpdateForm = ({ account, closeSheet }: UpdateFormProps) => { return ( ); - case PamResourceType.ActiveDirectory: + case PamDomainType.ActiveDirectory: return ( { /> ); default: - throw new Error(`Unhandled resource: ${account.resource.resourceType}`); + throw new Error(`Unhandled account type: ${account.parentType}`); } }; diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/SshAccountForm.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/SshAccountForm.tsx index 5c1ca707d9b..c15dbcf8c75 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/SshAccountForm.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamAccountForm/SshAccountForm.tsx @@ -187,7 +187,7 @@ const SshAccountFields = ({ isUpdate, resourceId }: { isUpdate: boolean; resourc export const SshAccountForm = ({ account, resourceId, onSubmit, closeSheet }: Props) => { const isUpdate = Boolean(account); - const effectiveResourceId = resourceId || account?.resource.id || ""; + const effectiveResourceId = resourceId || account?.resource?.id || ""; const getDefaultCredentials = () => { if (!account) return undefined; diff --git a/frontend/src/pages/pam/PamAccountsPage/components/PamDeleteAccountModal.tsx b/frontend/src/pages/pam/PamAccountsPage/components/PamDeleteAccountModal.tsx index 734c3a69f8c..c89751b73a7 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/PamDeleteAccountModal.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/PamDeleteAccountModal.tsx @@ -12,18 +12,14 @@ type Props = { export const PamDeleteAccountModal = ({ isOpen, onOpenChange, account, onDeleted }: Props) => { const deletePamAccount = useDeletePamAccount(); - if (!account) return null; + if (!account || !account.parentType) return null; - const { - id: accountId, - name, - resource: { resourceType } - } = account; + const { id: accountId, name, parentType } = account; const handleDelete = async () => { await deletePamAccount.mutateAsync({ accountId, - resourceType + parentType }); createNotification({ diff --git a/frontend/src/pages/pam/PamAccountsPage/components/useAccessAwsIamAccount.tsx b/frontend/src/pages/pam/PamAccountsPage/components/useAccessAwsIamAccount.tsx index 4d9cd9b642e..bda8e617332 100644 --- a/frontend/src/pages/pam/PamAccountsPage/components/useAccessAwsIamAccount.tsx +++ b/frontend/src/pages/pam/PamAccountsPage/components/useAccessAwsIamAccount.tsx @@ -9,7 +9,7 @@ export const useAccessAwsIamAccount = () => { const [loadingAccountId, setLoadingAccountId] = useState(null); const accessAwsIam = async (account: TPamAccount) => { - if (account.resource.resourceType !== PamResourceType.AwsIam) { + if (account.resource?.resourceType !== PamResourceType.AwsIam) { return false; } @@ -18,7 +18,7 @@ export const useAccessAwsIamAccount = () => { try { const response = await accessPamAccount.mutateAsync({ accountId: account.id, - resourceName: account.resource.name, + resourceName: account.resource?.name ?? "", accountName: account.name, projectId: account.projectId, duration: `${(account.credentials as TAwsIamCredentials).defaultSessionDuration}s` diff --git a/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx b/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx index 4ef0ac44864..a051dbeaaf0 100644 --- a/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx +++ b/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx @@ -55,7 +55,6 @@ import { ProjectPermissionSub, useOrganization } from "@app/context"; import { ProjectPermissionPamDiscoveryActions } from "@app/context/ProjectPermissionContext/types"; import { usePagination } from "@app/hooks"; import { gatewaysQueryKeys } from "@app/hooks/api"; -import { PamResourceType } from "@app/hooks/api/pam"; import type { TPamDiscoverySource, TPamDiscoverySourceRunProgress @@ -70,6 +69,7 @@ import { useListPamDiscoverySourceRuns, useTriggerPamDiscoveryScan } from "@app/hooks/api/pamDiscovery"; +import { PAM_DOMAIN_TYPE_MAP, PamDomainType, useListPamDomains } from "@app/hooks/api/pamDomain"; import { PamUpdateDiscoverySourceModal } from "../PamDiscoveryPage/components/PamUpdateDiscoverySourceModal"; @@ -266,6 +266,72 @@ const DiscoveryCredentialsSection = ({ ); }; +const DiscoveryDomainSection = ({ + source, + projectId, + orgId +}: { + source: TPamDiscoverySource; + projectId: string; + orgId: string; +}) => { + const navigate = useNavigate(); + const domainFQDN = source.discoveryConfiguration?.domainFQDN as string | undefined; + const fingerprint = domainFQDN?.toLowerCase(); + + const { data: domainsData } = useListPamDomains({ + projectId, + discoveryFingerprint: fingerprint + }); + + const domain = domainsData?.domains[0]; + + const domainTypeInfo = domain + ? PAM_DOMAIN_TYPE_MAP[domain.domainType as keyof typeof PAM_DOMAIN_TYPE_MAP] + : null; + + return ( +
+
+

Domain

+
+ {domain ? ( + + ) : ( +

+ No domain has been created yet. Run a scan to automatically create the domain. +

+ )} +
+ ); +}; + const formatDuration = (startedAt?: string | null, completedAt?: string | null): string => { if (!startedAt) return "-"; const end = completedAt ? new Date(completedAt) : new Date(); @@ -861,7 +927,7 @@ const AccountsTab = ({
- {account.resourceType === PamResourceType.ActiveDirectory && ( + {account.resourceType === PamDomainType.ActiveDirectory && ( AD )} @@ -1074,6 +1140,7 @@ const PageContent = () => { {/* Left Column */}
setIsEditModalOpen(true)} /> + setIsEditModalOpen(true)} /> setIsEditModalOpen(true)} />
diff --git a/frontend/src/pages/pam/PamDomainAccountByIDPage/route.tsx b/frontend/src/pages/pam/PamDomainAccountByIDPage/route.tsx new file mode 100644 index 00000000000..84900c7f861 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainAccountByIDPage/route.tsx @@ -0,0 +1,38 @@ +import { createFileRoute, linkOptions } from "@tanstack/react-router"; + +import { PamAccountByIDPage } from "../PamAccountByIDPage/PamAccountByIDPage"; + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId/" +)({ + component: PamAccountByIDPage, + beforeLoad: ({ context, params }) => { + return { + breadcrumbs: [ + ...context.breadcrumbs, + { + label: "Domains", + link: linkOptions({ + to: "/organizations/$orgId/projects/pam/$projectId/domains", + params: { orgId: params.orgId, projectId: params.projectId } + }) + }, + { + label: "Domain", + link: linkOptions({ + to: "/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId", + params: { + orgId: params.orgId, + projectId: params.projectId, + domainType: params.domainType, + domainId: params.domainId + } + }) + }, + { + label: "Account Details" + } + ] + }; + } +}); diff --git a/frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx b/frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx new file mode 100644 index 00000000000..b465791cadf --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx @@ -0,0 +1,236 @@ +import { useState } from "react"; +import { Helmet } from "react-helmet"; +import { faChevronLeft } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useNavigate, useParams, useSearch } from "@tanstack/react-router"; +import { BanIcon, EllipsisVerticalIcon } from "lucide-react"; + +import { createNotification } from "@app/components/notifications"; +import { ProjectPermissionCan } from "@app/components/permissions"; +import { DeleteActionModal, Tab, TabList, TabPanel, Tabs } from "@app/components/v2"; +import { + Button, + UnstableDropdownMenu, + UnstableDropdownMenuContent, + UnstableDropdownMenuItem, + UnstableDropdownMenuTrigger, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle, + UnstablePageLoader +} from "@app/components/v3"; +import { ProjectPermissionActions, ProjectPermissionSub, useOrganization } from "@app/context"; +import { + PAM_DOMAIN_TYPE_MAP, + PamDomainType, + useDeletePamDomain, + useGetPamDomainById +} from "@app/hooks/api/pamDomain"; + +import { + PamDomainAccountsSection, + PamDomainConnectionSection, + PamDomainDetailsSection, + PamDomainMetadataSection, + PamDomainRelatedResourcesSection, + PamUpdateDomainModal +} from "./components"; + +const PageContent = () => { + const navigate = useNavigate(); + const { currentOrg } = useOrganization(); + const params = useParams({ + strict: false + }) as { domainId?: string; domainType?: string; projectId?: string; orgId?: string }; + + const { domainId, domainType, projectId } = params; + + const selectedTab = useSearch({ + strict: false, + select: (el) => el.selectedTab + }); + + const handleTabChange = (tab: string) => { + navigate({ + to: ".", + search: { selectedTab: tab } + }); + }; + + const [isEditModalOpen, setIsEditModalOpen] = useState(false); + const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); + + const { data: domain, isPending } = useGetPamDomainById(domainType as PamDomainType, domainId, { + enabled: Boolean(domainId) && Boolean(domainType) + }); + + const deleteDomain = useDeletePamDomain(); + + if (isPending) { + return ; + } + + if (!domain) { + return ( +
+ + + + + Could not find PAM Domain with ID {domainId} + + + +
+ ); + } + + const domainTypeInfo = PAM_DOMAIN_TYPE_MAP[domain.domainType]; + + const handleBack = () => { + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/domains", + params: { orgId: currentOrg.id, projectId: projectId! } + }); + }; + + const handleDeleteConfirm = async () => { + if (!domain) return; + + try { + await deleteDomain.mutateAsync({ + domainId: domain.id, + domainType: domain.domainType + }); + createNotification({ + text: `Domain "${domain.name}" deleted successfully`, + type: "success" + }); + handleBack(); + } catch (error) { + console.error("Failed to delete domain:", error); + createNotification({ + text: "Failed to delete domain", + type: "error" + }); + } + }; + + return ( +
+ + +
+
+
+ {domainTypeInfo.name} +
+
+

{domain.name}

+

{domainTypeInfo.name} Domain

+
+
+
+ + + + + + + {(isAllowed) => ( + setIsEditModalOpen(true)} + isDisabled={!isAllowed} + > + Edit Domain + + )} + + + {(isAllowed) => ( + setIsDeleteModalOpen(true)} + variant="danger" + isDisabled={!isAllowed} + > + Delete Domain + + )} + + + +
+
+ +
+ {/* Left Column */} +
+ setIsEditModalOpen(true)} /> + setIsEditModalOpen(true)} /> + +
+ + {/* Right Column - Tabbed Content */} +
+ + + Accounts + Resources + + + + + + + + +
+
+ + + + setIsDeleteModalOpen(isOpen)} + deleteKey={domain.name} + onDeleteApproved={handleDeleteConfirm} + /> +
+ ); +}; + +export const PamDomainByIDPage = () => { + return ( + <> + + PAM Domain | Infisical + + + + + ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/PamAddDomainAccountModal.tsx b/frontend/src/pages/pam/PamDomainByIDPage/components/PamAddDomainAccountModal.tsx new file mode 100644 index 00000000000..c604b8d5079 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/PamAddDomainAccountModal.tsx @@ -0,0 +1,65 @@ +import { createNotification } from "@app/components/notifications"; +import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@app/components/v3"; +import { useCreatePamAccount } from "@app/hooks/api/pam"; +import { PAM_DOMAIN_TYPE_MAP, PamDomainType, TPamDomain } from "@app/hooks/api/pamDomain"; + +import { ActiveDirectoryAccountForm } from "../../PamAccountsPage/components/PamAccountForm/ActiveDirectoryAccountForm"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + projectId: string; + domain: TPamDomain; +}; + +export const PamAddDomainAccountModal = ({ isOpen, onOpenChange, projectId, domain }: Props) => { + const createPamAccount = useCreatePamAccount(); + const domainTypeInfo = PAM_DOMAIN_TYPE_MAP[domain.domainType]; + + const handleSubmit = async (formData: Record) => { + try { + await createPamAccount.mutateAsync({ + ...formData, + parentType: domain.domainType, + domainId: domain.id, + projectId + } as any); + createNotification({ + text: "Successfully created account", + type: "success" + }); + onOpenChange(false); + } catch { + createNotification({ + text: "Failed to create account", + type: "error" + }); + } + }; + + const renderForm = () => { + switch (domain.domainType) { + case PamDomainType.ActiveDirectory: + return ( + onOpenChange(false)} + /> + ); + default: + throw new Error(`Unhandled domain type: ${domain.domainType}`); + } + }; + + return ( + + + + Create Domain Account + Add an account to this {domainTypeInfo?.name} domain + +
{renderForm()}
+
+
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainAccountsSection.tsx b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainAccountsSection.tsx new file mode 100644 index 00000000000..e53a2b62dfd --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainAccountsSection.tsx @@ -0,0 +1,284 @@ +import { useCallback, useState } from "react"; +import { faMagnifyingGlass } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useNavigate, useParams } from "@tanstack/react-router"; +import { + CheckIcon, + CopyIcon, + EllipsisVerticalIcon, + KeyRoundIcon, + PencilIcon, + PlusIcon, + TrashIcon +} from "lucide-react"; + +import { createNotification } from "@app/components/notifications"; +import { ProjectPermissionCan } from "@app/components/permissions"; +import { Input as V2Input } from "@app/components/v2"; +import { + Badge, + Button, + UnstableDropdownMenu, + UnstableDropdownMenuContent, + UnstableDropdownMenuItem, + UnstableDropdownMenuTrigger, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle, + UnstableIconButton, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow +} from "@app/components/v3"; +import { ProjectPermissionSub, useOrganization } from "@app/context"; +import { ProjectPermissionPamAccountActions } from "@app/context/ProjectPermissionContext/types"; +import { useDebounce, usePopUp, useToggle } from "@app/hooks"; +import { TPamAccount, useListPamAccounts } from "@app/hooks/api/pam"; +import { TPamDomain } from "@app/hooks/api/pamDomain"; + +import { PamDeleteAccountModal } from "../../PamAccountsPage/components/PamDeleteAccountModal"; +import { PamUpdateAccountModal } from "../../PamAccountsPage/components/PamUpdateAccountModal"; +import { PamAddDomainAccountModal } from "./PamAddDomainAccountModal"; + +type Props = { + domain: TPamDomain; +}; + +export const PamDomainAccountsSection = ({ domain }: Props) => { + const navigate = useNavigate(); + const { currentOrg } = useOrganization(); + const params = useParams({ strict: false }) as { projectId?: string }; + const { projectId } = params; + + const [search, setSearch] = useState(""); + const [debouncedSearch] = useDebounce(search); + + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ + "addAccount", + "updateAccount", + "deleteAccount" + ] as const); + + const [copiedAccountId, setCopiedAccountId] = useToggle(false); + + const handleCopyId = useCallback( + (id: string) => { + setCopiedAccountId.on(); + navigator.clipboard.writeText(id); + createNotification({ text: "Account ID copied to clipboard", type: "info" }); + setTimeout(() => setCopiedAccountId.off(), 2000); + }, + [setCopiedAccountId] + ); + + const { data: accountsData, isPending } = useListPamAccounts({ + projectId: projectId || "", + search: debouncedSearch || undefined, + filterDomainIds: domain.id + }); + + const accounts = accountsData?.accounts || []; + + const handleAccountClick = (accountId: string) => { + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId", + params: { + orgId: currentOrg.id, + projectId: projectId!, + domainType: domain.domainType, + domainId: domain.id, + accountId + } + }); + }; + + return ( +
+
+
+

Domain Accounts

+

+ Accounts associated with this domain that can be used for access +

+
+ + {(isAllowed) => ( + + )} + +
+
+
+ setSearch(e.target.value)} + leftIcon={} + placeholder="Search accounts..." + className="h-full flex-1" + containerClassName="h-9" + /> +
+ + + + + Account Name + Type + Created + + + + + {isPending && ( + + + Loading accounts... + + + )} + {!isPending && accounts.length === 0 && ( + + + + + + {search ? "No accounts match search" : "No accounts"} + + + + + + )} + {!isPending && + accounts.map((account) => { + const internalMeta = (account as Record).internalMetadata as + | Record + | undefined; + return ( + handleAccountClick(account.id)} + > + +
+ {account.name} + {!account.credentialsConfigured && ( + + + No password + + )} +
+
+ + {internalMeta?.accountType || "-"} + + + {new Date(account.createdAt).toLocaleDateString()} + + + + + e.stopPropagation()} + > + + + + + { + e.stopPropagation(); + handleCopyId(account.id); + }} + > + {copiedAccountId ? ( + + ) : ( + + )} + Copy Account ID + + + {(isAllowed: boolean) => ( + { + e.stopPropagation(); + handlePopUpOpen("updateAccount", account); + }} + > + + Edit Account + + )} + + + {(isAllowed: boolean) => ( + { + e.stopPropagation(); + handlePopUpOpen("deleteAccount", account); + }} + > + + Delete Account + + )} + + + + +
+ ); + })} +
+
+
+ + handlePopUpToggle("addAccount", isOpen)} + projectId={projectId!} + domain={domain} + /> + + handlePopUpToggle("updateAccount", isOpen)} + account={popUp.updateAccount.data as TPamAccount} + /> + + handlePopUpToggle("deleteAccount", isOpen)} + account={popUp.deleteAccount.data as TPamAccount} + /> +
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainConnectionSection.tsx b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainConnectionSection.tsx new file mode 100644 index 00000000000..cb0d01f9611 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainConnectionSection.tsx @@ -0,0 +1,71 @@ +import { useQuery } from "@tanstack/react-query"; +import { PencilIcon } from "lucide-react"; + +import { ProjectPermissionCan } from "@app/components/permissions"; +import { + Detail, + DetailGroup, + DetailLabel, + DetailValue, + UnstableIconButton +} from "@app/components/v3"; +import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context"; +import { gatewaysQueryKeys } from "@app/hooks/api"; +import { PamDomainType, TPamDomain } from "@app/hooks/api/pamDomain"; + +type Props = { + domain: TPamDomain; + onEdit: VoidFunction; +}; + +const ActiveDirectoryConnectionDetails = ({ + connectionDetails +}: { + connectionDetails: { domain: string; dcAddress: string; port: number }; +}) => ( + + + Domain + {connectionDetails.domain} + + + DC Address + {connectionDetails.dcAddress} + + + Port + {connectionDetails.port} + + +); + +export const PamDomainConnectionSection = ({ domain, onEdit }: Props) => { + const { data: gateways } = useQuery(gatewaysQueryKeys.list()); + const gateway = gateways?.find((g) => g.id === domain.gatewayId); + + return ( +
+
+

Connection

+ + {(isAllowed) => ( + + + + )} + +
+
+ {domain.gatewayId && ( + + Gateway + {gateway?.name ?? "Unknown"} + + )} + {domain.domainType === PamDomainType.ActiveDirectory && ( + + )} +
+
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainDetailsSection.tsx b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainDetailsSection.tsx new file mode 100644 index 00000000000..8730cd442db --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainDetailsSection.tsx @@ -0,0 +1,45 @@ +import { format } from "date-fns"; +import { PencilIcon } from "lucide-react"; + +import { ProjectPermissionCan } from "@app/components/permissions"; +import { + Detail, + DetailGroup, + DetailLabel, + DetailValue, + UnstableIconButton +} from "@app/components/v3"; +import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context"; +import { TPamDomain } from "@app/hooks/api/pamDomain"; + +type Props = { + domain: TPamDomain; + onEdit: VoidFunction; +}; + +export const PamDomainDetailsSection = ({ domain, onEdit }: Props) => { + return ( +
+
+

Details

+ + {(isAllowed) => ( + + + + )} + +
+ + + Name + {domain.name} + + + Created + {format(new Date(domain.createdAt), "MM/dd/yyyy, hh:mm a")} + + +
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainMetadataSection.tsx b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainMetadataSection.tsx new file mode 100644 index 00000000000..425dc9f6940 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainMetadataSection.tsx @@ -0,0 +1,149 @@ +import { useCallback, useEffect, useState } from "react"; +import { useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { PencilIcon } from "lucide-react"; +import { z } from "zod"; + +import { createNotification } from "@app/components/notifications"; +import { ProjectPermissionCan } from "@app/components/permissions"; +import { Button, Modal, ModalContent } from "@app/components/v2"; +import { Badge, UnstableButtonGroup, UnstableIconButton } from "@app/components/v3"; +import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context"; +import { TPamDomain, useUpdatePamDomain } from "@app/hooks/api/pamDomain"; +import { MetadataForm } from "@app/pages/secret-manager/SecretDashboardPage/components/DynamicSecretListView/MetadataForm"; + +type Props = { + domain: TPamDomain; +}; + +const metadataFormSchema = z.object({ + metadata: z + .object({ + key: z.string().trim().min(1, "Key is required"), + value: z.string().trim().default("") + }) + .array() +}); + +type MetadataFormData = z.infer; + +export const PamDomainMetadataSection = ({ domain }: Props) => { + const metadata = domain.metadata || []; + const { mutateAsync: updateDomain } = useUpdatePamDomain(); + const [isModalOpen, setIsModalOpen] = useState(false); + + const { control, handleSubmit, reset, formState } = useForm({ + resolver: zodResolver(metadataFormSchema), + defaultValues: { + metadata: metadata.length > 0 ? metadata : [] + } + }); + + useEffect(() => { + if (metadata) { + reset({ metadata: metadata.length > 0 ? metadata : [] }); + } + }, [metadata, reset]); + + const handleCancel = useCallback(() => { + reset({ metadata: metadata.length > 0 ? metadata : [] }); + setIsModalOpen(false); + }, [metadata, reset]); + + const onSubmit = useCallback( + async (formData: MetadataFormData) => { + try { + await updateDomain({ + domainId: domain.id, + domainType: domain.domainType, + metadata: formData.metadata || [] + }); + createNotification({ + text: "Domain metadata updated successfully", + type: "success" + }); + setIsModalOpen(false); + } catch (error) { + createNotification({ + text: `Failed to update metadata: ${(error as Error)?.message || "Unknown error"}`, + type: "error" + }); + } + }, + [domain.id, domain.domainType, updateDomain] + ); + + return ( + <> +
+
+

Metadata

+ + {(isAllowed) => ( + { + reset({ metadata: metadata.length > 0 ? metadata : [] }); + setIsModalOpen(true); + }} + isDisabled={!isAllowed} + > + + + )} + +
+ {metadata.length > 0 ? ( +
+ {metadata.map((item) => + item.value ? ( + + + {item.key} + + + {item.value} + + + ) : ( + + {item.key} + + ) + )} +
+ ) : ( +

No metadata attached to this domain.

+ )} +
+ + + + +
+ + +
+
+
+ + ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainRelatedResourcesSection.tsx b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainRelatedResourcesSection.tsx new file mode 100644 index 00000000000..e482bbc6ff2 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/PamDomainRelatedResourcesSection.tsx @@ -0,0 +1,117 @@ +import { useNavigate, useParams } from "@tanstack/react-router"; + +import { + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow +} from "@app/components/v3"; +import { useOrganization } from "@app/context"; +import { PAM_RESOURCE_TYPE_MAP, PamResourceType } from "@app/hooks/api/pam"; +import { + PAM_DOMAIN_TYPE_MAP, + TPamDomain, + useListDomainRelatedResources +} from "@app/hooks/api/pamDomain"; + +type Props = { + domain: TPamDomain; +}; + +export const PamDomainRelatedResourcesSection = ({ domain }: Props) => { + const navigate = useNavigate(); + const { currentOrg } = useOrganization(); + const params = useParams({ strict: false }) as { projectId?: string }; + const { projectId } = params; + + const { data: relatedResources, isPending } = useListDomainRelatedResources( + domain.domainType, + domain.id + ); + + const resources = relatedResources || []; + const domainTypeInfo = PAM_DOMAIN_TYPE_MAP[domain.domainType as keyof typeof PAM_DOMAIN_TYPE_MAP]; + + return ( +
+
+

Domain Resources

+

+ Resources that belong to this {domainTypeInfo?.name || domain.domainType} domain +

+
+
+ + + + Resource + Type + + + + {isPending && ( + + + Loading resources... + + + )} + {!isPending && resources.length === 0 && ( + + + + + No domain resources found + + + + + )} + {!isPending && + resources.map((resource) => { + const typeInfo = PAM_RESOURCE_TYPE_MAP[resource.resourceType as PamResourceType]; + return ( + + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId", + params: { + orgId: currentOrg.id, + projectId: projectId!, + resourceType: resource.resourceType, + resourceId: resource.id + } + }) + } + > + +
+ {typeInfo?.image && ( + {typeInfo.name} + )} + {resource.name} +
+
+ + {typeInfo?.name || resource.resourceType} + +
+ ); + })} +
+
+
+
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/PamUpdateDomainModal.tsx b/frontend/src/pages/pam/PamDomainByIDPage/components/PamUpdateDomainModal.tsx new file mode 100644 index 00000000000..40881d91b39 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/PamUpdateDomainModal.tsx @@ -0,0 +1,34 @@ +import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@app/components/v3"; +import { PAM_DOMAIN_TYPE_MAP, TPamDomain } from "@app/hooks/api/pamDomain"; + +import { PamDomainForm } from "../../PamDomainsPage/components/PamDomainForm/PamDomainForm"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + domain?: TPamDomain; +}; + +export const PamUpdateDomainModal = ({ isOpen, onOpenChange, domain }: Props) => { + if (!domain) return null; + + const domainTypeInfo = PAM_DOMAIN_TYPE_MAP[domain.domainType]; + + return ( + + + + Edit Domain + + Update details for this {domainTypeInfo?.name} domain. + + + onOpenChange(false)} + domain={domain} + projectId={domain.projectId} + /> + + + ); +}; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/components/index.ts b/frontend/src/pages/pam/PamDomainByIDPage/components/index.ts new file mode 100644 index 00000000000..ce8e6fbce57 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/components/index.ts @@ -0,0 +1,6 @@ +export { PamDomainAccountsSection } from "./PamDomainAccountsSection"; +export { PamDomainConnectionSection } from "./PamDomainConnectionSection"; +export { PamDomainDetailsSection } from "./PamDomainDetailsSection"; +export { PamDomainMetadataSection } from "./PamDomainMetadataSection"; +export { PamDomainRelatedResourcesSection } from "./PamDomainRelatedResourcesSection"; +export { PamUpdateDomainModal } from "./PamUpdateDomainModal"; diff --git a/frontend/src/pages/pam/PamDomainByIDPage/route.tsx b/frontend/src/pages/pam/PamDomainByIDPage/route.tsx new file mode 100644 index 00000000000..9ff8f49e379 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainByIDPage/route.tsx @@ -0,0 +1,40 @@ +import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { zodValidator } from "@tanstack/zod-adapter"; +import { z } from "zod"; + +import { PamDomainByIDPage } from "./PamDomainByIDPage"; + +enum DomainDetailTab { + Accounts = "accounts", + RelatedResources = "related-resources" +} + +const domainDetailSearchSchema = z.object({ + selectedTab: z.nativeEnum(DomainDetailTab).optional().default(DomainDetailTab.Accounts) +}); + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/" +)({ + validateSearch: zodValidator(domainDetailSearchSchema), + beforeLoad: ({ context, params }) => { + return { + breadcrumbs: [ + ...context.breadcrumbs, + { + label: "Domains", + link: linkOptions({ + to: "/organizations/$orgId/projects/pam/$projectId/domains", + params: { orgId: params.orgId, projectId: params.projectId } + }) + }, + { + label: "Domain Details" + } + ] + }; + }, + component: PamDomainByIDPage +}); + +export { DomainDetailTab }; diff --git a/frontend/src/pages/pam/PamDomainsPage/PamDomainsPage.tsx b/frontend/src/pages/pam/PamDomainsPage/PamDomainsPage.tsx new file mode 100644 index 00000000000..5800d199a4d --- /dev/null +++ b/frontend/src/pages/pam/PamDomainsPage/PamDomainsPage.tsx @@ -0,0 +1,30 @@ +import { Helmet } from "react-helmet"; +import { useTranslation } from "react-i18next"; + +import { PageHeader } from "@app/components/v2"; +import { ProjectType } from "@app/hooks/api/projects/types"; + +import { PamDomainsSection } from "./components/PamDomainsSection"; + +export const PamDomainsPage = () => { + const { t } = useTranslation(); + return ( + <> + + {t("common.head-title", { title: "PAM Domains" })} + +
+
+
+ + +
+
+
+ + ); +}; diff --git a/frontend/src/pages/pam/PamDomainsPage/components/DomainTypeSelect.tsx b/frontend/src/pages/pam/PamDomainsPage/components/DomainTypeSelect.tsx new file mode 100644 index 00000000000..dcdc9c17000 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainsPage/components/DomainTypeSelect.tsx @@ -0,0 +1,86 @@ +import { useMemo, useState } from "react"; +import { SearchIcon } from "lucide-react"; + +import { Button, InputGroup, InputGroupAddon, InputGroupInput, Label } from "@app/components/v3"; +import { + PAM_DOMAIN_TYPE_MAP, + PamDomainType, + useListPamDomainOptions +} from "@app/hooks/api/pamDomain"; + +type Props = { + onSelect: (domainType: PamDomainType) => void; +}; + +export const DomainTypeSelect = ({ onSelect }: Props) => { + const { isPending, data: domainOptions } = useListPamDomainOptions(); + const [search, setSearch] = useState(""); + + const allOptions = useMemo(() => { + if (!domainOptions) return []; + return domainOptions.sort((a, b) => a.name.localeCompare(b.name)); + }, [domainOptions]); + + const filteredOptions = useMemo(() => { + if (!search.trim()) return allOptions; + const searchLower = search.toLowerCase(); + return allOptions.filter((option) => option.name.toLowerCase().includes(searchLower)); + }, [allOptions, search]); + + if (isPending) { + return ( +
+ +
+ ); + } + + return ( +
+
+ + + + + setSearch(e.target.value)} + placeholder="Search domain types..." + /> + +
+
+
+ {filteredOptions.length === 0 ? ( +
+ No domain types found +
+ ) : ( + filteredOptions.map((option) => { + const details = PAM_DOMAIN_TYPE_MAP[option.domain as PamDomainType]; + + return ( + + ); + }) + )} +
+
+
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainsPage/components/PamAddDomainModal.tsx b/frontend/src/pages/pam/PamDomainsPage/components/PamAddDomainModal.tsx new file mode 100644 index 00000000000..5086ecd19c2 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainsPage/components/PamAddDomainModal.tsx @@ -0,0 +1,74 @@ +import { Dispatch, SetStateAction, useState } from "react"; + +import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "@app/components/v3"; +import { PamDomainType, TPamDomain } from "@app/hooks/api/pamDomain"; + +import { PamDomainForm } from "./PamDomainForm/PamDomainForm"; +import { DomainTypeSelect } from "./DomainTypeSelect"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + projectId: string; + onComplete?: (domain: TPamDomain) => void; +}; + +type ContentProps = { + closeSheet: (domain?: TPamDomain) => void; + projectId: string; + selectedDomainType: PamDomainType | null; + setSelectedDomainType: Dispatch>; +}; + +const Content = ({ + closeSheet, + projectId, + selectedDomainType, + setSelectedDomainType +}: ContentProps) => { + if (selectedDomainType) { + return ( + setSelectedDomainType(null)} + domainType={selectedDomainType} + projectId={projectId} + /> + ); + } + + return ; +}; + +export const PamAddDomainModal = ({ isOpen, onOpenChange, projectId, onComplete }: Props) => { + const [selectedDomainType, setSelectedDomainType] = useState(null); + + return ( + { + onOpenChange(e); + setSelectedDomainType(null); + }} + > + + + Create Domain + + {selectedDomainType ? "Input domain connection details" : "Select a domain type"} + + + { + if (domain && onComplete) onComplete(domain); + onOpenChange(false); + setSelectedDomainType(null); + }} + selectedDomainType={selectedDomainType} + setSelectedDomainType={setSelectedDomainType} + /> + + + ); +}; diff --git a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/ActiveDirectoryResourceForm.tsx b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainForm/ActiveDirectoryDomainForm.tsx similarity index 87% rename from frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/ActiveDirectoryResourceForm.tsx rename to frontend/src/pages/pam/PamDomainsPage/components/PamDomainForm/ActiveDirectoryDomainForm.tsx index 47bf877c4b3..bedb922734c 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/ActiveDirectoryResourceForm.tsx +++ b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainForm/ActiveDirectoryDomainForm.tsx @@ -18,24 +18,26 @@ import { TooltipTrigger, UnstableInput } from "@app/components/v3"; -import { PamResourceType, TActiveDirectoryResource } from "@app/hooks/api/pam"; +import { TPamDomain } from "@app/hooks/api/pamDomain"; -import { GenericResourceFields, genericResourceFieldsSchema } from "./GenericResourceFields"; -import { MetadataFields } from "./MetadataFields"; +import { + GenericResourceFields, + genericResourceFieldsSchema +} from "../../../PamResourcesPage/components/PamResourceForm/GenericResourceFields"; +import { MetadataFields } from "../../../PamResourcesPage/components/PamResourceForm/MetadataFields"; type Props = { - resource?: TActiveDirectoryResource; + domain?: TPamDomain; onSubmit: (formData: FormData) => Promise; closeSheet: () => void; }; const formSchema = genericResourceFieldsSchema.extend({ - resourceType: z.literal(PamResourceType.ActiveDirectory), connectionDetails: z.object({ domain: z.string().trim().min(1, "Domain is required"), dcAddress: z.string().trim().min(1, "DC address is required"), port: z.coerce.number().int().min(1).max(65535), - useLdaps: z.boolean().default(false), + useLdaps: z.boolean().default(true), ldapRejectUnauthorized: z.boolean().default(true), ldapCaCert: z .string() @@ -52,31 +54,30 @@ const formSchema = genericResourceFieldsSchema.extend({ type FormData = z.infer; -export const ActiveDirectoryResourceForm = ({ resource, onSubmit, closeSheet }: Props) => { - const isUpdate = Boolean(resource); +export const ActiveDirectoryDomainForm = ({ domain, onSubmit, closeSheet }: Props) => { + const isUpdate = Boolean(domain); const form = useForm({ resolver: zodResolver(formSchema), - defaultValues: resource + defaultValues: domain ? { - ...resource, - gateway: resource.gatewayId ? { id: resource.gatewayId, name: "" } : undefined, + name: domain.name, + gateway: domain.gatewayId ? { id: domain.gatewayId, name: "" } : undefined, connectionDetails: { - ...resource.connectionDetails, - useLdaps: resource.connectionDetails.useLdaps ?? false, - ldapRejectUnauthorized: resource.connectionDetails.ldapRejectUnauthorized ?? true, - ldapCaCert: resource.connectionDetails.ldapCaCert ?? "", - ldapTlsServerName: resource.connectionDetails.ldapTlsServerName ?? "" + ...domain.connectionDetails, + useLdaps: domain.connectionDetails.useLdaps ?? false, + ldapRejectUnauthorized: domain.connectionDetails.ldapRejectUnauthorized ?? true, + ldapCaCert: domain.connectionDetails.ldapCaCert ?? "", + ldapTlsServerName: domain.connectionDetails.ldapTlsServerName ?? "" } } : { - resourceType: PamResourceType.ActiveDirectory, gateway: undefined, connectionDetails: { domain: "", dcAddress: "", - port: 389, - useLdaps: false, + port: 636, + useLdaps: true, ldapRejectUnauthorized: true, ldapCaCert: "", ldapTlsServerName: "" @@ -257,7 +258,7 @@ export const ActiveDirectoryResourceForm = ({ resource, onSubmit, closeSheet }: variant="neutral" type="submit" > - {isUpdate ? "Update Details" : "Create Resource"} + {isUpdate ? "Update Details" : "Create Domain"} + )} +
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsSection.tsx b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsSection.tsx new file mode 100644 index 00000000000..5f39bd013a3 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsSection.tsx @@ -0,0 +1,8 @@ +import { useProject } from "@app/context"; + +import { PamDomainsTable } from "./PamDomainsTable"; + +export const PamDomainsSection = () => { + const { currentProject } = useProject(); + return ; +}; diff --git a/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx new file mode 100644 index 00000000000..7a0ba2ce3e8 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx @@ -0,0 +1,246 @@ +import { faMagnifyingGlass } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useNavigate } from "@tanstack/react-router"; +import { format } from "date-fns"; +import { EllipsisVerticalIcon, PlusIcon, TrashIcon } from "lucide-react"; + +import { createNotification } from "@app/components/notifications"; +import { ProjectPermissionCan } from "@app/components/permissions"; +import { DeleteActionModal, Input } from "@app/components/v2"; +import { + Button, + UnstableDropdownMenu, + UnstableDropdownMenuContent, + UnstableDropdownMenuItem, + UnstableDropdownMenuTrigger, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle, + UnstableIconButton, + UnstablePagination, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow +} from "@app/components/v3"; +import { ProjectPermissionActions, ProjectPermissionSub, useOrganization } from "@app/context"; +import { usePagination, usePopUp, useResetPageHelper } from "@app/hooks"; +import { + PAM_DOMAIN_TYPE_MAP, + type TPamDomain, + useDeletePamDomain, + useListPamDomains +} from "@app/hooks/api/pamDomain"; + +import { PamAddDomainModal } from "./PamAddDomainModal"; + +type Props = { + projectId: string; +}; + +export const PamDomainsTable = ({ projectId }: Props) => { + const navigate = useNavigate(); + const { currentOrg } = useOrganization(); + + const { popUp, handlePopUpOpen, handlePopUpToggle, handlePopUpClose } = usePopUp([ + "addDomain", + "deleteDomain" + ] as const); + + const { search, debouncedSearch, setSearch, setPage, page, perPage, setPerPage, offset } = + usePagination("", { initPerPage: 20 }); + + const { data, isPending } = useListPamDomains({ + projectId, + offset, + limit: perPage, + search: debouncedSearch || undefined + }); + + const domains = data?.domains || []; + const totalCount = data?.totalCount || 0; + + useResetPageHelper({ totalCount, offset, setPage }); + + const deleteMutation = useDeletePamDomain(); + + const handleDelete = async () => { + const domain = popUp.deleteDomain.data as TPamDomain; + if (!domain) return; + try { + await deleteMutation.mutateAsync({ + domainId: domain.id, + domainType: domain.domainType + }); + createNotification({ text: "Domain deleted", type: "success" }); + handlePopUpClose("deleteDomain"); + } catch { + createNotification({ text: "Failed to delete domain", type: "error" }); + } + }; + + return ( +
+
+ setSearch(e.target.value)} + leftIcon={} + placeholder="Search domains..." + className="h-full flex-1" + containerClassName="h-9" + /> + + {(isAllowed) => ( + + )} + +
+ +
+ + + + Name + Type + Created + + + + + {isPending && ( + + + Loading domains... + + + )} + {!isPending && domains.length === 0 && ( + + + + + + {search ? "No domains match search" : "No domains"} + + + + + + )} + {!isPending && + domains.map((domain) => { + const typeInfo = + PAM_DOMAIN_TYPE_MAP[domain.domainType as keyof typeof PAM_DOMAIN_TYPE_MAP]; + return ( + + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId", + params: { + orgId: currentOrg.id, + projectId, + domainType: domain.domainType, + domainId: domain.id + } + }) + } + > + +
+ {typeInfo?.image && ( + {typeInfo.name} + )} + {domain.name} +
+
+ + {typeInfo?.name || domain.domainType} + + + {format(new Date(domain.createdAt), "MMM d, yyyy HH:mm")} + + + + + e.stopPropagation()} + > + + + + + + {(isAllowed) => ( + { + e.stopPropagation(); + handlePopUpOpen("deleteDomain", domain); + }} + > + + Delete + + )} + + + + +
+ ); + })} +
+
+ {Boolean(totalCount) && !isPending && ( + + )} +
+ + handlePopUpToggle("addDomain", isOpen)} + projectId={projectId} + /> + + handlePopUpToggle("deleteDomain", isOpen)} + deleteKey="confirm" + onDeleteApproved={handleDelete} + /> +
+ ); +}; diff --git a/frontend/src/pages/pam/PamDomainsPage/route.tsx b/frontend/src/pages/pam/PamDomainsPage/route.tsx new file mode 100644 index 00000000000..86fd067f4f8 --- /dev/null +++ b/frontend/src/pages/pam/PamDomainsPage/route.tsx @@ -0,0 +1,26 @@ +import { createFileRoute } from "@tanstack/react-router"; +import { zodValidator } from "@tanstack/zod-adapter"; +import { z } from "zod"; + +import { PamDomainsPage } from "./PamDomainsPage"; + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/" +)({ + validateSearch: zodValidator( + z.object({ + search: z.string().optional() + }) + ), + beforeLoad: ({ context }) => { + return { + breadcrumbs: [ + ...context.breadcrumbs, + { + label: "Domains" + } + ] + }; + }, + component: PamDomainsPage +}); diff --git a/frontend/src/pages/pam/PamResourceByIDPage/PamResourceByIDPage.tsx b/frontend/src/pages/pam/PamResourceByIDPage/PamResourceByIDPage.tsx index 5793282c394..cdfd97dac13 100644 --- a/frontend/src/pages/pam/PamResourceByIDPage/PamResourceByIDPage.tsx +++ b/frontend/src/pages/pam/PamResourceByIDPage/PamResourceByIDPage.tsx @@ -34,7 +34,6 @@ import { PamResourceDependenciesSection, PamResourceDetailsSection, PamResourceMetadataSection, - PamResourceRelatedResourcesSection, PamResourceRotationPolicySection, PamRotationPolicyModal } from "./components"; @@ -218,9 +217,6 @@ const PageContent = () => { {resource.resourceType === PamResourceType.Windows && ( Dependencies )} - {resource.resourceType === PamResourceType.ActiveDirectory && ( - Related Resources - )} @@ -230,11 +226,6 @@ const PageContent = () => { )} - {resource.resourceType === PamResourceType.ActiveDirectory && ( - - - - )}
diff --git a/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceAccountsSection.tsx b/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceAccountsSection.tsx index 8452da8951d..ede826ba21b 100644 --- a/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceAccountsSection.tsx +++ b/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceAccountsSection.tsx @@ -55,13 +55,13 @@ import { ApprovalPolicyType, useCheckPolicyMatch } from "@app/hooks/api/approval import { PamAccountRotationStatus, PamResourceType, - TActiveDirectoryAccount, TPamAccount, TPamResource, TWindowsAccount, useListPamAccounts } from "@app/hooks/api/pam"; import { useManualRotateAccount } from "@app/hooks/api/pam/mutations"; +import { PamDomainType, useGetPamDomainById } from "@app/hooks/api/pamDomain"; import { MetadataFilterEntry, MetadataFilterSection @@ -78,19 +78,15 @@ type Props = { resource: TPamResource; }; -const hasAccountType = (resourceType: PamResourceType) => - resourceType === PamResourceType.Windows || resourceType === PamResourceType.ActiveDirectory; +const hasAccountType = (resourceType: PamResourceType) => resourceType === PamResourceType.Windows; const hasAccountsWithDependencies = (resourceType: PamResourceType) => - resourceType === PamResourceType.Windows || resourceType === PamResourceType.ActiveDirectory; + resourceType === PamResourceType.Windows; const getAccountType = (account: TPamAccount): string | undefined => { - if (account.resource.resourceType === PamResourceType.Windows) { + if (account.resource?.resourceType === PamResourceType.Windows) { return (account as TWindowsAccount).internalMetadata?.accountType; } - if (account.resource.resourceType === PamResourceType.ActiveDirectory) { - return (account as TActiveDirectoryAccount).internalMetadata?.accountType; - } return undefined; }; @@ -134,12 +130,19 @@ export const PamResourceAccountsSection = ({ resource }: Props) => { setAppliedMetadataEntries([]); }; + const { data: domainData } = useGetPamDomainById( + PamDomainType.ActiveDirectory, + resource.domainId || undefined, + { enabled: !!resource.domainId } + ); + const hasRotatingAccounts = rotatingAccountIds.size > 0; const { data: accountsData, isPending } = useListPamAccounts( { projectId: projectId!, filterResourceIds: resource.id, + filterDomainIds: resource.domainId || undefined, search: debouncedSearch || undefined, metadataFilter: appliedMetadataEntries.filter((e) => e.key.trim()).length ? appliedMetadataEntries @@ -195,16 +198,29 @@ export const PamResourceAccountsSection = ({ resource }: Props) => { ); const handleAccountClick = (account: TPamAccount) => { - navigate({ - to: "/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId", - params: { - orgId: currentOrg.id, - projectId: projectId!, - resourceType: resource.resourceType, - resourceId: resource.id, - accountId: account.id - } - }); + if (account.domainId && account.domain) { + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId", + params: { + orgId: currentOrg.id, + projectId: projectId!, + domainType: account.domain.domainType, + domainId: account.domainId, + accountId: account.id + } + }); + } else { + navigate({ + to: "/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId", + params: { + orgId: currentOrg.id, + projectId: projectId!, + resourceType: resource.resourceType, + resourceId: resource.id, + accountId: account.id + } + }); + } }; const handleRotateAccount = async (accountId: string) => { @@ -258,7 +274,7 @@ export const PamResourceAccountsSection = ({ resource }: Props) => { return; } - if (account.resource.resourceType === PamResourceType.AwsIam) { + if (account.resource?.resourceType === PamResourceType.AwsIam) { accessAwsIam(account); } else { handlePopUpOpen("accessAccount", { account }); @@ -439,6 +455,12 @@ export const PamResourceAccountsSection = ({ resource }: Props) => { )} + {account.resourceId !== resource.id && domainData && ( + + {domainData.connectionDetails.domain} + + )} + {!account.credentialsConfigured && ( @@ -508,29 +530,27 @@ export const PamResourceAccountsSection = ({ resource }: Props) => {
- {/* Temporarily disable accessing Windows Server accounts */} - {/* Disable accessing Active Directory accounts */} - {resource.resourceType !== PamResourceType.Windows && - resource.resourceType !== PamResourceType.ActiveDirectory && ( - + - - )} + + Connect + + + )} @@ -551,58 +571,62 @@ export const PamResourceAccountsSection = ({ resource }: Props) => { )} Copy Account ID - - {(isAllowed: boolean) => ( - { - e.stopPropagation(); - handleRotateAccount(account.id); - }} + {!account.domainId && ( + <> + - - Rotate Account - - )} - - - {(isAllowed: boolean) => ( - { - e.stopPropagation(); - handlePopUpOpen("updateAccount", account); - }} + {(isAllowed: boolean) => ( + { + e.stopPropagation(); + handleRotateAccount(account.id); + }} + > + + Rotate Account + + )} + + - - Edit Account - - )} - - - {(isAllowed: boolean) => ( - { - e.stopPropagation(); - handlePopUpOpen("deleteAccount", account); - }} + {(isAllowed: boolean) => ( + { + e.stopPropagation(); + handlePopUpOpen("updateAccount", account); + }} + > + + Edit Account + + )} + + - - Delete Account - - )} - + {(isAllowed: boolean) => ( + { + e.stopPropagation(); + handlePopUpOpen("deleteAccount", account); + }} + > + + Delete Account + + )} + + + )}
diff --git a/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceConnectionSection.tsx b/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceConnectionSection.tsx index d5b69a210a2..d1648557d73 100644 --- a/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceConnectionSection.tsx +++ b/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceConnectionSection.tsx @@ -5,7 +5,7 @@ import { ProjectPermissionCan } from "@app/components/permissions"; import { Detail, DetailLabel, DetailValue, UnstableIconButton } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context"; import { gatewaysQueryKeys } from "@app/hooks/api"; -import { PamResourceType, TPamResource, useGetPamResourceById } from "@app/hooks/api/pam"; +import { PamResourceType, TPamResource } from "@app/hooks/api/pam"; type Props = { resource: TPamResource; @@ -152,18 +152,10 @@ const AwsIamConnectionDetails = ({ ); const WindowsConnectionDetails = ({ - connectionDetails, - adServerResourceId + connectionDetails }: { connectionDetails: { protocol: string; hostname: string; port: number }; - adServerResourceId?: string | null; }) => { - const { data: adResource } = useGetPamResourceById( - PamResourceType.ActiveDirectory, - adServerResourceId || undefined, - { enabled: !!adServerResourceId } - ); - return ( <> @@ -178,37 +170,10 @@ const WindowsConnectionDetails = ({ Port {connectionDetails.port} - {adResource && ( - - AD Resource - {adResource.name} - - )} ); }; -const ActiveDirectoryConnectionDetails = ({ - connectionDetails -}: { - connectionDetails: { domain: string; dcAddress: string; port: number }; -}) => ( - <> - - Domain - {connectionDetails.domain} - - - DC Address - {connectionDetails.dcAddress} - - - Port - {connectionDetails.port} - - -); - const ConnectionDetailsContent = ({ resource }: Props) => { switch (resource.resourceType) { case PamResourceType.Postgres: @@ -226,14 +191,7 @@ const ConnectionDetailsContent = ({ resource }: Props) => { case PamResourceType.AwsIam: return ; case PamResourceType.Windows: - return ( - - ); - case PamResourceType.ActiveDirectory: - return ; + return ; default: return null; } diff --git a/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceRelatedResourcesSection.tsx b/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceRelatedResourcesSection.tsx deleted file mode 100644 index 13d8ea2e212..00000000000 --- a/frontend/src/pages/pam/PamResourceByIDPage/components/PamResourceRelatedResourcesSection.tsx +++ /dev/null @@ -1,112 +0,0 @@ -import { useNavigate, useParams } from "@tanstack/react-router"; -import { MonitorIcon } from "lucide-react"; - -import { - UnstableEmpty, - UnstableEmptyHeader, - UnstableEmptyTitle, - UnstableTable, - UnstableTableBody, - UnstableTableCell, - UnstableTableHead, - UnstableTableHeader, - UnstableTableRow -} from "@app/components/v3"; -import { useOrganization } from "@app/context"; -import { PAM_RESOURCE_TYPE_MAP, TPamResource, useListRelatedResources } from "@app/hooks/api/pam"; - -type Props = { - resource: TPamResource; -}; - -export const PamResourceRelatedResourcesSection = ({ resource }: Props) => { - const navigate = useNavigate(); - const { currentOrg } = useOrganization(); - const params = useParams({ strict: false }) as { projectId?: string }; - const { projectId } = params; - - const { data: relatedResources, isPending } = useListRelatedResources(resource.id); - - const handleResourceClick = (relatedResource: TPamResource) => { - navigate({ - to: "/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId", - params: { - orgId: currentOrg.id, - projectId: projectId!, - resourceType: relatedResource.resourceType, - resourceId: relatedResource.id - } - }); - }; - - return ( -
-
-

Related Resources

-

Resources that belong to this Active Directory domain

-
-
- - - - Resource - Type - - - - {isPending && ( - - - Loading resources... - - - )} - {!isPending && (!relatedResources || relatedResources.length === 0) && ( - - - - - No related resources found - - - - - )} - {relatedResources?.map((relatedResource) => { - const typeInfo = PAM_RESOURCE_TYPE_MAP[relatedResource.resourceType]; - return ( - handleResourceClick(relatedResource)} - > - -
-
- {typeInfo ? ( - {typeInfo.name} - ) : ( - - )} -
- {relatedResource.name} -
-
- - - {typeInfo?.name ?? relatedResource.resourceType} - - -
- ); - })} -
-
-
-
- ); -}; diff --git a/frontend/src/pages/pam/PamResourceByIDPage/components/PamRotationPolicyModal.tsx b/frontend/src/pages/pam/PamResourceByIDPage/components/PamRotationPolicyModal.tsx index 8516d7f2310..ac45c4a825a 100644 --- a/frontend/src/pages/pam/PamResourceByIDPage/components/PamRotationPolicyModal.tsx +++ b/frontend/src/pages/pam/PamResourceByIDPage/components/PamRotationPolicyModal.tsx @@ -1,7 +1,7 @@ import { useCallback, useEffect, useState } from "react"; import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; -import { InfoIcon, PlusIcon, TriangleAlertIcon, XIcon } from "lucide-react"; +import { InfoIcon, PlusIcon, XIcon } from "lucide-react"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -298,19 +298,6 @@ export const PamRotationPolicyModal = ({ isOpen, onOpenChange, resource }: Props
- {/* LDAPS warning for AD resources */} - {resource.resourceType === PamResourceType.ActiveDirectory && - !(resource.connectionDetails as { useLdaps?: boolean }).useLdaps && ( - - - LDAPS Required for Rotation - - Active Directory requires LDAPS (TLS) to change passwords. Enable LDAPS in the - resource connection settings before configuring rotation. - - - )} - {/* Local account warning for Windows Server resources */} {resource.resourceType === PamResourceType.Windows && ( diff --git a/frontend/src/pages/pam/PamResourceByIDPage/components/index.ts b/frontend/src/pages/pam/PamResourceByIDPage/components/index.ts index c240ad334e3..0abf74ba4ad 100644 --- a/frontend/src/pages/pam/PamResourceByIDPage/components/index.ts +++ b/frontend/src/pages/pam/PamResourceByIDPage/components/index.ts @@ -3,6 +3,5 @@ export { PamResourceConnectionSection } from "./PamResourceConnectionSection"; export { PamResourceDependenciesSection } from "./PamResourceDependenciesSection"; export { PamResourceDetailsSection } from "./PamResourceDetailsSection"; export { PamResourceMetadataSection } from "./PamResourceMetadataSection"; -export { PamResourceRelatedResourcesSection } from "./PamResourceRelatedResourcesSection"; export { PamResourceRotationPolicySection } from "./PamResourceRotationPolicySection"; export { PamRotationPolicyModal } from "./PamRotationPolicyModal"; diff --git a/frontend/src/pages/pam/PamResourceByIDPage/route.tsx b/frontend/src/pages/pam/PamResourceByIDPage/route.tsx index 35b8af2e4b1..2b964d9b715 100644 --- a/frontend/src/pages/pam/PamResourceByIDPage/route.tsx +++ b/frontend/src/pages/pam/PamResourceByIDPage/route.tsx @@ -6,8 +6,7 @@ import { PamResourceByIDPage } from "./PamResourceByIDPage"; export enum ResourceDetailTab { Accounts = "accounts", - Dependencies = "dependencies", - RelatedResources = "related-resources" + Dependencies = "dependencies" } const ResourceDetailSearchSchema = z.object({ diff --git a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceCard.tsx b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceCard.tsx index 81b8534770e..f74a3b8c93f 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceCard.tsx +++ b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceCard.tsx @@ -16,6 +16,7 @@ import { Badge, UnstableIconButton } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub, useOrganization } from "@app/context"; import { useToggle } from "@app/hooks"; import { PAM_RESOURCE_TYPE_MAP, TPamResource } from "@app/hooks/api/pam"; +import { PamDomainType, useGetPamDomainById } from "@app/hooks/api/pamDomain"; type Props = { resource: TPamResource; @@ -38,6 +39,12 @@ export const PamResourceCard = ({ const { id, name, resourceType, projectId } = resource; const { image, name: resourceTypeName } = PAM_RESOURCE_TYPE_MAP[resourceType]; + const { data: domain } = useGetPamDomainById( + PamDomainType.ActiveDirectory, + resource.domainId || undefined, + { enabled: !!resource.domainId } + ); + const [isIdCopied, setIsIdCopied] = useToggle(false); const handleCopyId = () => { @@ -158,9 +165,10 @@ export const PamResourceCard = ({
- - {resourceTypeName} - +
+ {resourceTypeName} + {domain && {domain.connectionDetails.domain}} +
diff --git a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/PamResourceForm.tsx b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/PamResourceForm.tsx index efca8f24be9..7d84cbe1bb9 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/PamResourceForm.tsx +++ b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/PamResourceForm.tsx @@ -9,7 +9,6 @@ import { import { DiscriminativePick } from "@app/types"; import { PamResourceHeader } from "../PamResourceHeader"; -import { ActiveDirectoryResourceForm } from "./ActiveDirectoryResourceForm"; import { AwsIamResourceForm } from "./AwsIamResourceForm"; import { KubernetesResourceForm } from "./KubernetesResourceForm"; import { MongoDBResourceForm } from "./MongoDBResourceForm"; @@ -40,7 +39,7 @@ const CreateForm = ({ resourceType, closeSheet, projectId }: CreateFormProps) => const onSubmit = async ( formData: DiscriminativePick< TPamResource, - "name" | "resourceType" | "connectionDetails" | "adServerResourceId" + "name" | "resourceType" | "connectionDetails" | "domainId" > & { gateway?: { id: string; name: string } | null; gatewayId?: string; @@ -79,8 +78,6 @@ const CreateForm = ({ resourceType, closeSheet, projectId }: CreateFormProps) => return ; case PamResourceType.Windows: return ; - case PamResourceType.ActiveDirectory: - return ; default: throw new Error(`Unhandled resource: ${resourceType}`); } @@ -93,7 +90,7 @@ const UpdateForm = ({ resource, closeSheet }: UpdateFormProps) => { const onSubmit = async ( formData: DiscriminativePick< TPamResource, - "name" | "resourceType" | "connectionDetails" | "adServerResourceId" + "name" | "resourceType" | "connectionDetails" | "domainId" > & { gateway?: { id: string; name: string } | null; gatewayId?: string; @@ -140,14 +137,6 @@ const UpdateForm = ({ resource, closeSheet }: UpdateFormProps) => { return ( ); - case PamResourceType.ActiveDirectory: - return ( - - ); default: throw new Error(`Unhandled resource: ${(resource as any).resourceType}`); } diff --git a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/WindowsResourceForm.tsx b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/WindowsResourceForm.tsx index f6f1249d2c4..0776442693e 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/WindowsResourceForm.tsx +++ b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceForm/WindowsResourceForm.tsx @@ -10,11 +10,6 @@ import { FieldError, FieldLabel, Label, - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, SheetFooter, Switch, TextArea, @@ -23,8 +18,7 @@ import { TooltipTrigger, UnstableInput } from "@app/components/v3"; -import { useProject } from "@app/context"; -import { PamResourceType, TWindowsResource, useListPamResources } from "@app/hooks/api/pam"; +import { PamResourceType, TWindowsResource } from "@app/hooks/api/pam"; import { WindowsProtocol } from "@app/hooks/api/pam/types/windows-server-resource"; import { GenericResourceFields, genericResourceFieldsSchema } from "./GenericResourceFields"; @@ -56,19 +50,13 @@ const formSchema = genericResourceFieldsSchema.extend({ .transform((val) => val || undefined) .optional() }), - adServerResourceId: z.string().uuid().nullable().optional() + domainId: z.string().uuid().nullable().optional() }); type FormData = z.infer; export const WindowsResourceForm = ({ resource, onSubmit, closeSheet }: Props) => { const isUpdate = Boolean(resource); - const { projectId } = useProject(); - - const { data: adResources, isPending: isAdResourcesLoading } = useListPamResources({ - projectId, - filterResourceTypes: PamResourceType.ActiveDirectory - }); const form = useForm({ resolver: zodResolver(formSchema), @@ -76,7 +64,7 @@ export const WindowsResourceForm = ({ resource, onSubmit, closeSheet }: Props) = ? { ...resource, gateway: resource.gatewayId ? { id: resource.gatewayId, name: "" } : undefined, - adServerResourceId: resource.adServerResourceId ?? null, + domainId: resource.domainId ?? null, connectionDetails: { ...(resource.connectionDetails as FormData["connectionDetails"]), winrmPort: (resource.connectionDetails as any).winrmPort ?? 5986, @@ -100,7 +88,7 @@ export const WindowsResourceForm = ({ resource, onSubmit, closeSheet }: Props) = winrmCaCert: "", winrmTlsServerName: "" }, - adServerResourceId: null + domainId: null } }); @@ -124,37 +112,6 @@ export const WindowsResourceForm = ({ resource, onSubmit, closeSheet }: Props) = >
- ( - - Active Directory Resource - - -

- Optionally associate this server with an AD domain -

- -
-
- )} - /> {/* RDP Connection */}
diff --git a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceHeader.tsx b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceHeader.tsx index bc459db80cd..94b3a98ad19 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/PamResourceHeader.tsx +++ b/frontend/src/pages/pam/PamResourcesPage/components/PamResourceHeader.tsx @@ -4,7 +4,6 @@ import { Button, DocumentationLinkBadge, Label } from "@app/components/v3"; import { PAM_RESOURCE_TYPE_MAP, PamResourceType } from "@app/hooks/api/pam"; const PAM_RESOURCE_DOCS_MAP: Partial> = { - [PamResourceType.ActiveDirectory]: "active-directory#create-the-pam-resource", [PamResourceType.AwsIam]: "aws-iam#create-the-pam-resource", [PamResourceType.Kubernetes]: "kubernetes#create-the-pam-resource", [PamResourceType.MySQL]: "mysql#create-the-pam-resource", diff --git a/frontend/src/pages/pam/PamResourcesPage/components/PamResourcesTable.tsx b/frontend/src/pages/pam/PamResourcesPage/components/PamResourcesTable.tsx index 5be6bab8a33..739cc99f2f9 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/PamResourcesTable.tsx +++ b/frontend/src/pages/pam/PamResourcesPage/components/PamResourcesTable.tsx @@ -142,19 +142,13 @@ export const PamResourcesTable = ({ projectId }: Props) => { setPendingResourceTypes([]); }; - // TODO: Temporary - hide Active Directory and RDP from resource type filter - const TEMPORARILY_HIDDEN_RESOURCE_TYPES = new Set([ - PamResourceType.ActiveDirectory, - PamResourceType.RDP - ]); - - const resourceTypeOptions = Object.entries(PAM_RESOURCE_TYPE_MAP) - .filter(([type]) => !TEMPORARILY_HIDDEN_RESOURCE_TYPES.has(type as PamResourceType)) - .map(([type, { name, image }]) => ({ + const resourceTypeOptions = Object.entries(PAM_RESOURCE_TYPE_MAP).map( + ([type, { name, image }]) => ({ value: type as PamResourceType, label: name, image - })); + }) + ); const isContentEmpty = !resources.length; const isSearchEmpty = isContentEmpty && (Boolean(search) || isTableFiltered); diff --git a/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx b/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx index fc8ec6d17b5..f2d1fef604e 100644 --- a/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx +++ b/frontend/src/pages/pam/PamResourcesPage/components/ResourceTypeSelect.tsx @@ -22,19 +22,12 @@ const COMING_SOON_RESOURCES = [ { name: "DynamoDB", resource: PamResourceType.DynamoDB }, { name: "Snowflake", resource: PamResourceType.Snowflake }, { name: "Elasticsearch", resource: PamResourceType.Elasticsearch }, - { name: "RDP", resource: PamResourceType.RDP }, { name: "MCP", resource: PamResourceType.MCP }, { name: "Web Application", resource: PamResourceType.WebApp } ]; const COMING_SOON_SET = new Set(COMING_SOON_RESOURCES.map((r) => r.resource)); -// TODO: Temporary - hide Active Directory and RDP from resource selection -const TEMPORARILY_HIDDEN_RESOURCES = new Set([ - PamResourceType.ActiveDirectory, - PamResourceType.RDP -]); - export const ResourceTypeSelect = ({ onSelect }: Props) => { const { isPending, data: resourceOptions } = useListPamResourceOptions(); const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["upgradePlan"] as const); @@ -42,9 +35,9 @@ export const ResourceTypeSelect = ({ onSelect }: Props) => { const allOptions = useMemo(() => { if (!resourceOptions) return []; - return [...resourceOptions, ...COMING_SOON_RESOURCES] - .filter((option) => !TEMPORARILY_HIDDEN_RESOURCES.has(option.resource)) - .sort((a, b) => a.name.localeCompare(b.name)); + return [...resourceOptions, ...COMING_SOON_RESOURCES].sort((a, b) => + a.name.localeCompare(b.name) + ); }, [resourceOptions]); const filteredOptions = useMemo(() => { diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PamAccountPermissionConditions.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PamAccountPermissionConditions.tsx index 736ff1a7dbb..e0c0da1f688 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/PamAccountPermissionConditions.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/PamAccountPermissionConditions.tsx @@ -32,12 +32,22 @@ export const PamAccountPermissionConditions = ({ position = 0, isDisabled }: Pro { value: "resourceName", label: "Resource Name", - description: "PAM resource name" + description: "Name of the PAM resource this account belongs to" }, { value: "resourceType", label: "Resource Type", description: "PAM resource type (e.g. postgres, mysql, ssh)" + }, + { + value: "domainName", + label: "Domain Name", + description: "Name of the PAM domain this account belongs to" + }, + { + value: "domainType", + label: "Domain Type", + description: "PAM domain type (e.g. active-directory)" } ]} /> diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx index 74f754f064c..1fa2e6a6257 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx @@ -791,6 +791,12 @@ export const projectRoleFormSchema = z.object({ }) .array() .default([]), + [ProjectPermissionSub.PamDomains]: GeneralPolicyActionSchema.extend({ + inverted: z.boolean().optional(), + conditions: ConditionSchema + }) + .array() + .default([]), [ProjectPermissionSub.PamAccounts]: PamAccountPolicyActionSchema.extend({ inverted: z.boolean().optional(), conditions: ConditionSchema @@ -863,6 +869,7 @@ type TConditionalFields = | ProjectPermissionSub.AppConnections | ProjectPermissionSub.PamAccounts | ProjectPermissionSub.PamResources + | ProjectPermissionSub.PamDomains | ProjectPermissionSub.McpEndpoints | ProjectPermissionSub.Member | ProjectPermissionSub.Groups; @@ -889,6 +896,7 @@ export const isConditionalSubjects = ( subject === ProjectPermissionSub.AppConnections || subject === ProjectPermissionSub.PamAccounts || subject === ProjectPermissionSub.PamResources || + subject === ProjectPermissionSub.PamDomains || subject === ProjectPermissionSub.McpEndpoints || subject === ProjectPermissionSub.Member || subject === ProjectPermissionSub.Groups; @@ -1033,6 +1041,7 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => { ProjectPermissionSub.AppConnections, ProjectPermissionSub.PamFolders, ProjectPermissionSub.PamResources, + ProjectPermissionSub.PamDomains, ProjectPermissionSub.McpEndpoints, ProjectPermissionSub.McpServers, ProjectPermissionSub.McpActivityLogs @@ -3112,6 +3121,28 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = { } ] }, + [ProjectPermissionSub.PamDomains]: { + title: "Domains", + description: "Manage PAM domains such as Active Directory", + actions: [ + { label: "Read", value: ProjectPermissionActions.Read, description: "View PAM domains" }, + { + label: "Create", + value: ProjectPermissionActions.Create, + description: "Add new domains to PAM" + }, + { + label: "Modify", + value: ProjectPermissionActions.Edit, + description: "Update domain configuration" + }, + { + label: "Remove", + value: ProjectPermissionActions.Delete, + description: "Remove PAM domains" + } + ] + }, [ProjectPermissionSub.PamAccounts]: { title: "Accounts", description: "Manage privileged account credentials", @@ -3370,6 +3401,7 @@ const SecretScanningSubject = (enabled = false) => ({ const PamPermissionSubjects = (enabled = false) => ({ [ProjectPermissionSub.PamFolders]: enabled, [ProjectPermissionSub.PamResources]: enabled, + [ProjectPermissionSub.PamDomains]: enabled, [ProjectPermissionSub.PamAccounts]: enabled, [ProjectPermissionSub.PamSessions]: enabled, [ProjectPermissionSub.PamDiscovery]: enabled @@ -3891,6 +3923,10 @@ export const RoleTemplates: Record = { subject: ProjectPermissionSub.PamResources, actions: [ProjectPermissionActions.Read] }, + { + subject: ProjectPermissionSub.PamDomains, + actions: [ProjectPermissionActions.Read] + }, { subject: ProjectPermissionSub.PamAccounts, actions: [ProjectPermissionPamAccountActions.Read] @@ -3924,6 +3960,10 @@ export const RoleTemplates: Record = { subject: ProjectPermissionSub.PamResources, actions: Object.values(ProjectPermissionActions) }, + { + subject: ProjectPermissionSub.PamDomains, + actions: Object.values(ProjectPermissionActions) + }, { subject: ProjectPermissionSub.PamAccounts, actions: [ diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx index 07b858e73a9..48476857667 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/RolePermissionsSection.tsx @@ -101,7 +101,10 @@ export const renderConditionalComponents = ( return ; } - if (subject === ProjectPermissionSub.PamResources) { + if ( + subject === ProjectPermissionSub.PamResources || + subject === ProjectPermissionSub.PamDomains + ) { return ; } diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index 948a8f60127..5693e29fb5d 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -173,6 +173,7 @@ import { Route as secretScanningSecretScanningDataSourcesPageRouteImport } from import { Route as secretManagerIntegrationsListPageRouteImport } from './pages/secret-manager/IntegrationsListPage/route' import { Route as pamPamSessionsPageRouteImport } from './pages/pam/PamSessionsPage/route' import { Route as pamPamResourcesPageRouteImport } from './pages/pam/PamResourcesPage/route' +import { Route as pamPamDomainsPageRouteImport } from './pages/pam/PamDomainsPage/route' import { Route as pamPamDiscoveryPageRouteImport } from './pages/pam/PamDiscoveryPage/route' import { Route as certManagerPkiSubscribersPageRouteImport } from './pages/cert-manager/PkiSubscribersPage/route' import { Route as certManagerIntegrationsListPageRouteImport } from './pages/cert-manager/IntegrationsListPage/route' @@ -261,9 +262,11 @@ import { Route as secretManagerIntegrationsAzureKeyVaultOauthCallbackPageRouteIm import { Route as secretManagerIntegrationsAzureAppConfigurationOauthCallbackPageRouteImport } from './pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route' import { Route as secretManagerCommitsPageRouteImport } from './pages/secret-manager/CommitsPage/route' import { Route as pamPamResourceByIDPageRouteImport } from './pages/pam/PamResourceByIDPage/route' +import { Route as pamPamDomainByIDPageRouteImport } from './pages/pam/PamDomainByIDPage/route' import { Route as secretManagerCommitDetailsPageComponentsRollbackPreviewTabRouteImport } from './pages/secret-manager/CommitDetailsPage/components/RollbackPreviewTab/route' import { Route as secretManagerCommitDetailsPageRouteImport } from './pages/secret-manager/CommitDetailsPage/route' import { Route as pamPamAccountByIDPageRouteImport } from './pages/pam/PamAccountByIDPage/route' +import { Route as pamPamDomainAccountByIDPageRouteImport } from './pages/pam/PamDomainAccountByIDPage/route' // Create Virtual Routes @@ -346,6 +349,10 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectI createFileRoute( '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources', )() +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsImport = + createFileRoute( + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains', + )() const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryImport = createFileRoute( '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery', @@ -378,6 +385,10 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectI createFileRoute( '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId', )() +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdImport = + createFileRoute( + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId', + )() const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManagementProjectIdSecretManagerLayoutCommitsEnvironmentFolderIdCommitIdImport = createFileRoute( '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId', @@ -386,6 +397,10 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectI createFileRoute( '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId', )() +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdImport = + createFileRoute( + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId', + )() // Create/Update Routes @@ -1118,6 +1133,15 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectI } as any, ) +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRoute = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsImport.update( + { + id: '/domains', + path: '/domains', + getParentRoute: () => pamLayoutRoute, + } as any, + ) + const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRoute = AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryImport.update( { @@ -1737,6 +1761,13 @@ const pamPamResourcesPageRouteRoute = pamPamResourcesPageRouteImport.update({ AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesRoute, } as any) +const pamPamDomainsPageRouteRoute = pamPamDomainsPageRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRoute, +} as any) + const pamPamDiscoveryPageRouteRoute = pamPamDiscoveryPageRouteImport.update({ id: '/', path: '/', @@ -1803,6 +1834,16 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectI } as any, ) +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRoute = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdImport.update( + { + id: '/$domainType/$domainId', + path: '/$domainType/$domainId', + getParentRoute: () => + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRoute, + } as any, + ) + const secretScanningSecretScanningDataSourceByIdPageRouteRoute = secretScanningSecretScanningDataSourceByIdPageRouteImport.update({ id: '/$type/$dataSourceId', @@ -2475,6 +2516,13 @@ const pamPamResourceByIDPageRouteRoute = AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdRoute, } as any) +const pamPamDomainByIDPageRouteRoute = pamPamDomainByIDPageRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRoute, +} as any) + const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdAccountsAccountIdRoute = AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdAccountsAccountIdImport.update( { @@ -2485,6 +2533,16 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectI } as any, ) +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRoute = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdImport.update( + { + id: '/accounts/$accountId', + path: '/accounts/$accountId', + getParentRoute: () => + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRoute, + } as any, + ) + const secretManagerCommitDetailsPageComponentsRollbackPreviewTabRouteRoute = secretManagerCommitDetailsPageComponentsRollbackPreviewTabRouteImport.update({ id: '/restore', @@ -2510,6 +2568,14 @@ const pamPamAccountByIDPageRouteRoute = pamPamAccountByIDPageRouteImport.update( } as any, ) +const pamPamDomainAccountByIDPageRouteRoute = + pamPamDomainAccountByIDPageRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRoute, + } as any) + // Populate the FileRoutesByPath interface declare module '@tanstack/react-router' { @@ -3396,6 +3462,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryImport parentRoute: typeof pamLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains' + path: '/domains' + fullPath: '/organizations/$orgId/projects/pam/$projectId/domains' + preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsImport + parentRoute: typeof pamLayoutImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources' path: '/resources' @@ -3522,6 +3595,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof pamPamDiscoveryPageRouteImport parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/' + path: '/' + fullPath: '/organizations/$orgId/projects/pam/$projectId/domains/' + preLoaderRoute: typeof pamPamDomainsPageRouteImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/' path: '/' @@ -4341,6 +4421,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof secretScanningSecretScanningDataSourceByIdPageRouteImport parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretScanningProjectIdSecretScanningLayoutDataSourcesImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId' + path: '/$domainType/$domainId' + fullPath: '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId' + preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId' path: '/$resourceType/$resourceId' @@ -4355,6 +4442,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManagementProjectIdSecretManagerLayoutCommitsEnvironmentFolderIdImport parentRoute: typeof secretManagerLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/' + path: '/' + fullPath: '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/' + preLoaderRoute: typeof pamPamDomainByIDPageRouteImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/' path: '/' @@ -4474,6 +4568,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof secretManagerCommitDetailsPageComponentsRollbackPreviewTabRouteImport parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManagementProjectIdSecretManagerLayoutCommitsEnvironmentFolderIdCommitIdImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId' + path: '/accounts/$accountId' + fullPath: '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId' + preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId' path: '/accounts/$accountId' @@ -4481,6 +4582,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdAccountsAccountIdImport parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId/': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId/' + path: '/' + fullPath: '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId/' + preLoaderRoute: typeof pamPamDomainAccountByIDPageRouteImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId/': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId/' path: '/' @@ -4812,6 +4920,55 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectI AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRouteChildren, ) +interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteChildren { + pamPamDomainAccountByIDPageRouteRoute: typeof pamPamDomainAccountByIDPageRouteRoute +} + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteChildren: AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteChildren = + { + pamPamDomainAccountByIDPageRouteRoute: + pamPamDomainAccountByIDPageRouteRoute, + } + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteWithChildren = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRoute._addFileChildren( + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteChildren, + ) + +interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteChildren { + pamPamDomainByIDPageRouteRoute: typeof pamPamDomainByIDPageRouteRoute + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteWithChildren +} + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteChildren: AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteChildren = + { + pamPamDomainByIDPageRouteRoute: pamPamDomainByIDPageRouteRoute, + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRoute: + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteWithChildren, + } + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteWithChildren = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRoute._addFileChildren( + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteChildren, + ) + +interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteChildren { + pamPamDomainsPageRouteRoute: typeof pamPamDomainsPageRouteRoute + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteWithChildren +} + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteChildren: AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteChildren = + { + pamPamDomainsPageRouteRoute: pamPamDomainsPageRouteRoute, + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRoute: + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteWithChildren, + } + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteWithChildren = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRoute._addFileChildren( + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteChildren, + ) + interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdAccountsAccountIdRouteChildren { pamPamAccountByIDPageRouteRoute: typeof pamPamAccountByIDPageRouteRoute } @@ -4882,6 +5039,7 @@ interface pamLayoutRouteChildren { projectAccessControlPageRoutePamRoute: typeof projectAccessControlPageRoutePamRoute projectAuditLogsPageRoutePamRoute: typeof projectAuditLogsPageRoutePamRoute AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRouteWithChildren + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteWithChildren AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesRouteWithChildren AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutSessionsRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutSessionsRouteWithChildren pamApprovalRequestDetailPageRouteRoute: typeof pamApprovalRequestDetailPageRouteRoute @@ -4898,6 +5056,8 @@ const pamLayoutRouteChildren: pamLayoutRouteChildren = { projectAuditLogsPageRoutePamRoute: projectAuditLogsPageRoutePamRoute, AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRoute: AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRouteWithChildren, + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRoute: + AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteWithChildren, AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesRoute: AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesRouteWithChildren, AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutSessionsRoute: @@ -5863,6 +6023,7 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/pam/$projectId/access-management': typeof projectAccessControlPageRoutePamRoute '/organizations/$orgId/projects/pam/$projectId/audit-logs': typeof projectAuditLogsPageRoutePamRoute '/organizations/$orgId/projects/pam/$projectId/discovery': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRouteWithChildren + '/organizations/$orgId/projects/pam/$projectId/domains': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteWithChildren '/organizations/$orgId/projects/pam/$projectId/resources': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesRouteWithChildren '/organizations/$orgId/projects/pam/$projectId/sessions': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutSessionsRouteWithChildren '/organizations/$orgId/projects/secret-management/$projectId/access-management': typeof projectAccessControlPageRouteSecretManagerRoute @@ -5881,6 +6042,7 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/cert-manager/$projectId/integrations/': typeof certManagerIntegrationsListPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/subscribers/': typeof certManagerPkiSubscribersPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/discovery/': typeof pamPamDiscoveryPageRouteRoute + '/organizations/$orgId/projects/pam/$projectId/domains/': typeof pamPamDomainsPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/resources/': typeof pamPamResourcesPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/sessions/': typeof pamPamSessionsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/integrations/': typeof secretManagerIntegrationsListPageRouteRoute @@ -5998,8 +6160,10 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/authorize': typeof secretManagerIntegrationsWindmillAuthorizePageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/create': typeof secretManagerIntegrationsWindmillConfigurePageRouteRoute '/organizations/$orgId/projects/secret-scanning/$projectId/data-sources/$type/$dataSourceId': typeof secretScanningSecretScanningDataSourceByIdPageRouteRoute + '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteWithChildren '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdRouteWithChildren '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManagementProjectIdSecretManagerLayoutCommitsEnvironmentFolderIdRouteWithChildren + '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/': typeof pamPamDomainByIDPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/': typeof pamPamResourceByIDPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/': typeof secretManagerCommitsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-app-configuration/oauth2/callback': typeof secretManagerIntegrationsAzureAppConfigurationOauthCallbackPageRouteRoute @@ -6017,7 +6181,9 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManagementProjectIdSecretManagerLayoutCommitsEnvironmentFolderIdCommitIdRouteWithChildren '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/': typeof secretManagerCommitDetailsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/restore': typeof secretManagerCommitDetailsPageComponentsRollbackPreviewTabRouteRoute + '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteWithChildren '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdAccountsAccountIdRouteWithChildren + '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId/': typeof pamPamDomainAccountByIDPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId/': typeof pamPamAccountByIDPageRouteRoute } @@ -6137,6 +6303,7 @@ export interface FileRoutesByTo { '/organizations/$orgId/projects/cert-manager/$projectId/integrations': typeof certManagerIntegrationsListPageRouteRoute '/organizations/$orgId/projects/cert-manager/$projectId/subscribers': typeof certManagerPkiSubscribersPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/discovery': typeof pamPamDiscoveryPageRouteRoute + '/organizations/$orgId/projects/pam/$projectId/domains': typeof pamPamDomainsPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/resources': typeof pamPamResourcesPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/sessions': typeof pamPamSessionsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/integrations': typeof secretManagerIntegrationsListPageRouteRoute @@ -6254,6 +6421,7 @@ export interface FileRoutesByTo { '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/authorize': typeof secretManagerIntegrationsWindmillAuthorizePageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/create': typeof secretManagerIntegrationsWindmillConfigurePageRouteRoute '/organizations/$orgId/projects/secret-scanning/$projectId/data-sources/$type/$dataSourceId': typeof secretScanningSecretScanningDataSourceByIdPageRouteRoute + '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId': typeof pamPamDomainByIDPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId': typeof pamPamResourceByIDPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId': typeof secretManagerCommitsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-app-configuration/oauth2/callback': typeof secretManagerIntegrationsAzureAppConfigurationOauthCallbackPageRouteRoute @@ -6270,6 +6438,7 @@ export interface FileRoutesByTo { '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId/data-explorer': typeof pamPamDataExplorerPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId': typeof secretManagerCommitDetailsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/restore': typeof secretManagerCommitDetailsPageComponentsRollbackPreviewTabRouteRoute + '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId': typeof pamPamDomainAccountByIDPageRouteRoute '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId': typeof pamPamAccountByIDPageRouteRoute } @@ -6401,6 +6570,7 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/access-management': typeof projectAccessControlPageRoutePamRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/audit-logs': typeof projectAuditLogsPageRoutePamRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDiscoveryRouteWithChildren + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutSessionsRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/access-management': typeof projectAccessControlPageRouteSecretManagerRoute @@ -6419,6 +6589,7 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/integrations/': typeof certManagerIntegrationsListPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/subscribers/': typeof certManagerPkiSubscribersPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery/': typeof pamPamDiscoveryPageRouteRoute + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/': typeof pamPamDomainsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/': typeof pamPamResourcesPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions/': typeof pamPamSessionsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/': typeof secretManagerIntegrationsListPageRouteRoute @@ -6536,8 +6707,10 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/windmill/authorize': typeof secretManagerIntegrationsWindmillAuthorizePageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/windmill/create': typeof secretManagerIntegrationsWindmillConfigurePageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/data-sources/$type/$dataSourceId': typeof secretScanningSecretScanningDataSourceByIdPageRouteRoute + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManagementProjectIdSecretManagerLayoutCommitsEnvironmentFolderIdRouteWithChildren + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/': typeof pamPamDomainByIDPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/': typeof pamPamResourceByIDPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/': typeof secretManagerCommitsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback': typeof secretManagerIntegrationsAzureAppConfigurationOauthCallbackPageRouteRoute @@ -6555,7 +6728,9 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManagementProjectIdSecretManagerLayoutCommitsEnvironmentFolderIdCommitIdRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId/': typeof secretManagerCommitDetailsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId/restore': typeof secretManagerCommitDetailsPageComponentsRollbackPreviewTabRouteRoute + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutDomainsDomainTypeDomainIdAccountsAccountIdRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsPamProjectIdPamLayoutResourcesResourceTypeResourceIdAccountsAccountIdRouteWithChildren + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId/': typeof pamPamDomainAccountByIDPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId/': typeof pamPamAccountByIDPageRouteRoute } @@ -6676,6 +6851,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/access-management' | '/organizations/$orgId/projects/pam/$projectId/audit-logs' | '/organizations/$orgId/projects/pam/$projectId/discovery' + | '/organizations/$orgId/projects/pam/$projectId/domains' | '/organizations/$orgId/projects/pam/$projectId/resources' | '/organizations/$orgId/projects/pam/$projectId/sessions' | '/organizations/$orgId/projects/secret-management/$projectId/access-management' @@ -6694,6 +6870,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/cert-manager/$projectId/integrations/' | '/organizations/$orgId/projects/cert-manager/$projectId/subscribers/' | '/organizations/$orgId/projects/pam/$projectId/discovery/' + | '/organizations/$orgId/projects/pam/$projectId/domains/' | '/organizations/$orgId/projects/pam/$projectId/resources/' | '/organizations/$orgId/projects/pam/$projectId/sessions/' | '/organizations/$orgId/projects/secret-management/$projectId/integrations/' @@ -6811,8 +6988,10 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/authorize' | '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/create' | '/organizations/$orgId/projects/secret-scanning/$projectId/data-sources/$type/$dataSourceId' + | '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId' | '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId' | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId' + | '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/' | '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/' | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/' | '/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-app-configuration/oauth2/callback' @@ -6830,7 +7009,9 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId' | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/' | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/restore' + | '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId' | '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId' + | '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId/' | '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId/' fileRoutesByTo: FileRoutesByTo to: @@ -6949,6 +7130,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/cert-manager/$projectId/integrations' | '/organizations/$orgId/projects/cert-manager/$projectId/subscribers' | '/organizations/$orgId/projects/pam/$projectId/discovery' + | '/organizations/$orgId/projects/pam/$projectId/domains' | '/organizations/$orgId/projects/pam/$projectId/resources' | '/organizations/$orgId/projects/pam/$projectId/sessions' | '/organizations/$orgId/projects/secret-management/$projectId/integrations' @@ -7066,6 +7248,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/authorize' | '/organizations/$orgId/projects/secret-management/$projectId/integrations/windmill/create' | '/organizations/$orgId/projects/secret-scanning/$projectId/data-sources/$type/$dataSourceId' + | '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId' | '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId' | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId' | '/organizations/$orgId/projects/secret-management/$projectId/integrations/azure-app-configuration/oauth2/callback' @@ -7082,6 +7265,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId/data-explorer' | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId' | '/organizations/$orgId/projects/secret-management/$projectId/commits/$environment/$folderId/$commitId/restore' + | '/organizations/$orgId/projects/pam/$projectId/domains/$domainType/$domainId/accounts/$accountId' | '/organizations/$orgId/projects/pam/$projectId/resources/$resourceType/$resourceId/accounts/$accountId' id: | '__root__' @@ -7211,6 +7395,7 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/access-management' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/audit-logs' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/access-management' @@ -7229,6 +7414,7 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/integrations/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/cert-manager/$projectId/_cert-manager-layout/subscribers/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery/' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/' @@ -7346,8 +7532,10 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/windmill/authorize' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/windmill/create' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/data-sources/$type/$dataSourceId' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/azure-app-configuration/oauth2/callback' @@ -7365,7 +7553,9 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId/restore' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId/' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId/' fileRoutesById: FileRoutesById } @@ -7928,6 +8118,7 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/access-management", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/audit-logs", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/sessions", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/approval-requests/$approvalRequestId", @@ -8168,6 +8359,14 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery/$discoveryType/$discoverySourceId" ] }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains": { + "filePath": "", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout", + "children": [ + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId" + ] + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources": { "filePath": "", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout", @@ -8332,6 +8531,10 @@ export const routeTree = rootRoute "filePath": "pam/PamDiscoveryPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/discovery" }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/": { + "filePath": "pam/PamDomainsPage/route.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains" + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/": { "filePath": "pam/PamResourcesPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources" @@ -8800,6 +9003,14 @@ export const routeTree = rootRoute "filePath": "secret-scanning/SecretScanningDataSourceByIdPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-scanning/$projectId/_secret-scanning-layout/data-sources" }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId": { + "filePath": "", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains", + "children": [ + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId" + ] + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId": { "filePath": "", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources", @@ -8816,6 +9027,10 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId" ] }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/": { + "filePath": "pam/PamDomainByIDPage/route.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId" + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/": { "filePath": "pam/PamResourceByIDPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId" @@ -8888,6 +9103,13 @@ export const routeTree = rootRoute "filePath": "secret-manager/CommitDetailsPage/components/RollbackPreviewTab/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/commits/$environment/$folderId/$commitId" }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId": { + "filePath": "", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId", + "children": [ + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId/" + ] + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId": { "filePath": "", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId", @@ -8895,6 +9117,10 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId/" ] }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId/": { + "filePath": "pam/PamDomainAccountByIDPage/route.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/domains/$domainType/$domainId/accounts/$accountId" + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId/": { "filePath": "pam/PamAccountByIDPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/resources/$resourceType/$resourceId/accounts/$accountId" diff --git a/frontend/src/routes.ts b/frontend/src/routes.ts index 9ef979376ec..30e4a934bdf 100644 --- a/frontend/src/routes.ts +++ b/frontend/src/routes.ts @@ -391,6 +391,13 @@ const pamRoutes = route("/organizations/$orgId/projects/pam/$projectId", [ route("/accounts/$accountId", [index("pam/PamAccountByIDPage/route.tsx")]) ]) ]), + route("/domains", [ + index("pam/PamDomainsPage/route.tsx"), + route("/$domainType/$domainId", [ + index("pam/PamDomainByIDPage/route.tsx"), + route("/accounts/$accountId", [index("pam/PamDomainAccountByIDPage/route.tsx")]) + ]) + ]), route("/discovery", [ index("pam/PamDiscoveryPage/route.tsx"), route("/$discoveryType/$discoverySourceId", "pam/PamDiscoveryDetailPage/route.tsx") From ae886ede5d5c294b5e577ccadc9e58de2b5128da Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 9 Apr 2026 04:19:30 -0400 Subject: [PATCH 059/562] lint --- .../active-directory-domain-schemas.ts | 12 +++++------- .../src/ee/services/pam-domain/pam-domain-service.ts | 3 +-- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts index 8bdc1144e06..14629f16cd6 100644 --- a/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts +++ b/backend/src/ee/services/pam-domain/active-directory/active-directory-domain-schemas.ts @@ -48,13 +48,11 @@ export const ActiveDirectoryAccountSchema = BasePamAccountSchema.extend({ internalMetadata: ActiveDirectoryAccountMetadataSchema }); -export const CreateActiveDirectoryAccountSchema = BaseCreatePamAccountSchema - .omit({ resourceId: true }) - .extend({ - domainId: z.string().uuid(), - credentials: ActiveDirectoryAccountCredentialsSchema, - internalMetadata: ActiveDirectoryAccountMetadataSchema - }); +export const CreateActiveDirectoryAccountSchema = BaseCreatePamAccountSchema.omit({ resourceId: true }).extend({ + domainId: z.string().uuid(), + credentials: ActiveDirectoryAccountCredentialsSchema, + internalMetadata: ActiveDirectoryAccountMetadataSchema +}); export const UpdateActiveDirectoryAccountSchema = BaseUpdatePamAccountSchema.extend({ credentials: ActiveDirectoryAccountCredentialsSchema.optional(), diff --git a/backend/src/ee/services/pam-domain/pam-domain-service.ts b/backend/src/ee/services/pam-domain/pam-domain-service.ts index d01fe50ec25..9fc93af52cd 100644 --- a/backend/src/ee/services/pam-domain/pam-domain-service.ts +++ b/backend/src/ee/services/pam-domain/pam-domain-service.ts @@ -8,11 +8,10 @@ import { OrgServiceActor } from "@app/lib/types"; import { decryptAccountCredentials } from "../pam-account/pam-account-fns"; import { decryptResourceConnectionDetails } from "../pam-resource/pam-resource-fns"; -import { TPamResourceConnectionDetails } from "../pam-resource/pam-resource-types"; -import { decryptDomainConnectionDetails, encryptDomainConnectionDetails } from "./pam-domain-fns"; import { TWindowsResource } from "../pam-resource/windows-server/windows-server-resource-types"; import { PamDomainType } from "./pam-domain-enums"; import { PAM_DOMAIN_FACTORY_MAP } from "./pam-domain-factory"; +import { decryptDomainConnectionDetails, encryptDomainConnectionDetails } from "./pam-domain-fns"; import { TCreateDomainDTO, TListDomainsDTO, From ceffc78b0e379b830b99f75038a81e8f7f803082 Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 9 Apr 2026 04:55:57 -0400 Subject: [PATCH 060/562] address reviews --- .../pam-domain-routers/pam-domain-router.ts | 6 ++++-- .../services/pam-account/pam-account-dal.ts | 19 ++++--------------- .../active-directory-discovery-factory.ts | 3 ++- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts b/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts index 6b88bd8d933..f88eb9fc09a 100644 --- a/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts +++ b/backend/src/ee/routes/v1/pam-domain-routers/pam-domain-router.ts @@ -72,7 +72,8 @@ export const registerPamDomainRouter = async (server: FastifyZodProvider) => { }, onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), handler: async (req) => { - const { projectId, search, limit, offset, orderBy, orderDirection, filterDomainTypes } = req.query; + const { projectId, search, limit, offset, orderBy, orderDirection, filterDomainTypes, discoveryFingerprint } = + req.query; const { domains, totalCount } = await server.services.pamDomain.list({ projectId, @@ -85,7 +86,8 @@ export const registerPamDomainRouter = async (server: FastifyZodProvider) => { actor: req.permission.type, actorId: req.permission.id, actorAuthMethod: req.permission.authMethod, - actorOrgId: req.permission.orgId + actorOrgId: req.permission.orgId, + discoveryFingerprint }); await server.services.auditLog.createAuditLog({ diff --git a/backend/src/ee/services/pam-account/pam-account-dal.ts b/backend/src/ee/services/pam-account/pam-account-dal.ts index 491cec74fe6..03b5fe3ec00 100644 --- a/backend/src/ee/services/pam-account/pam-account-dal.ts +++ b/backend/src/ee/services/pam-account/pam-account-dal.ts @@ -105,11 +105,7 @@ export const pamAccountDALFactory = (db: TDbClient) => { .as("resourceEncryptedRotationAccountCredentials"), // domain (may be null for resource accounts) db.ref("name").withSchema(TableName.PamDomain).as("domainName"), - db.ref("domainType").withSchema(TableName.PamDomain), - db - .ref("encryptedRotationAccountCredentials") - .withSchema(TableName.PamDomain) - .as("domainEncryptedRotationAccountCredentials") + db.ref("domainType").withSchema(TableName.PamDomain) ); const direction = orderDirection === OrderByDirection.ASC ? "ASC" : "DESC"; @@ -144,8 +140,7 @@ export const pamAccountDALFactory = (db: TDbClient) => { ? { id: dId, name: r.domainName as string, - domainType: r.domainType as string, - encryptedRotationAccountCredentials: r.domainEncryptedRotationAccountCredentials as Buffer | null + domainType: r.domainType as string } : null }; @@ -175,11 +170,7 @@ export const pamAccountDALFactory = (db: TDbClient) => { .as("resourceEncryptedRotationAccountCredentials"), // domain (may be null for resource accounts) db.ref("name").withSchema(TableName.PamDomain).as("domainName"), - db.ref("domainType").withSchema(TableName.PamDomain), - db - .ref("encryptedRotationAccountCredentials") - .withSchema(TableName.PamDomain) - .as("domainEncryptedRotationAccountCredentials") + db.ref("domainType").withSchema(TableName.PamDomain) ) .first(); @@ -193,7 +184,6 @@ export const pamAccountDALFactory = (db: TDbClient) => { resourceEncryptedRotationAccountCredentials, domainName, domainType, - domainEncryptedRotationAccountCredentials, ...account } = result; @@ -213,8 +203,7 @@ export const pamAccountDALFactory = (db: TDbClient) => { ? { id: domainId, name: domainName, - domainType, - encryptedRotationAccountCredentials: domainEncryptedRotationAccountCredentials + domainType } : null }; diff --git a/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts b/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts index e97d89e8924..20110e89e95 100644 --- a/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts +++ b/backend/src/ee/services/pam-discovery/active-directory/active-directory-discovery-factory.ts @@ -572,7 +572,8 @@ const upsertWindowsServerResource = async ( gatewayId, encryptedConnectionDetails, encryptedResourceMetadata, - domainId + domainId, + discoveryFingerprint: fingerprint }, tx ); From e1a8d2e23affef1c349e18f81e3d731a80f9ee19 Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 9 Apr 2026 05:13:14 -0400 Subject: [PATCH 061/562] fix db schema --- backend/src/db/migrations/20260408062748_pam-domains.ts | 5 +---- backend/src/db/schemas/pam-discovery-source-resources.ts | 3 +-- backend/src/db/schemas/pam-domains.ts | 1 - 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/backend/src/db/migrations/20260408062748_pam-domains.ts b/backend/src/db/migrations/20260408062748_pam-domains.ts index de4e86d623f..3de691870ba 100644 --- a/backend/src/db/migrations/20260408062748_pam-domains.ts +++ b/backend/src/db/migrations/20260408062748_pam-domains.ts @@ -184,10 +184,7 @@ export async function down(knex: Knex): Promise { } } - await knex.raw(` - ALTER TABLE ${TableName.PamAccount} - DROP CONSTRAINT IF EXISTS chk_pam_account_parent - `); + await knex.raw(`ALTER TABLE ${TableName.PamAccount} DROP CONSTRAINT IF EXISTS chk_pam_account_parent`); if (await knex.schema.hasTable(TableName.PamAccount)) { const hasDomainId = await knex.schema.hasColumn(TableName.PamAccount, "domainId"); diff --git a/backend/src/db/schemas/pam-discovery-source-resources.ts b/backend/src/db/schemas/pam-discovery-source-resources.ts index f17f7ce615f..af252954416 100644 --- a/backend/src/db/schemas/pam-discovery-source-resources.ts +++ b/backend/src/db/schemas/pam-discovery-source-resources.ts @@ -14,8 +14,7 @@ export const PamDiscoverySourceResourcesSchema = z.object({ lastDiscoveredAt: z.date(), lastDiscoveredRunId: z.string().uuid().nullable().optional(), isStale: z.boolean().default(false).nullable().optional(), - createdAt: z.date().nullable().optional(), - domainId: z.string().uuid().nullable().optional() + createdAt: z.date().nullable().optional() }); export type TPamDiscoverySourceResources = z.infer; diff --git a/backend/src/db/schemas/pam-domains.ts b/backend/src/db/schemas/pam-domains.ts index 99241c5bd45..da1a63a99e9 100644 --- a/backend/src/db/schemas/pam-domains.ts +++ b/backend/src/db/schemas/pam-domains.ts @@ -16,7 +16,6 @@ export const PamDomainsSchema = z.object({ domainType: z.string(), gatewayId: z.string().uuid().nullable().optional(), encryptedConnectionDetails: zodBuffer, - encryptedRotationAccountCredentials: zodBuffer.nullable().optional(), discoveryFingerprint: z.string().nullable().optional(), createdAt: z.date(), updatedAt: z.date() From 725da22bc78efe09967922cd4e5d77a4cc762dbd Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 9 Apr 2026 14:12:57 -0400 Subject: [PATCH 062/562] fix schema --- backend/src/db/schemas/pam-discovery-source-resources.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/db/schemas/pam-discovery-source-resources.ts b/backend/src/db/schemas/pam-discovery-source-resources.ts index af252954416..12f5c2a4105 100644 --- a/backend/src/db/schemas/pam-discovery-source-resources.ts +++ b/backend/src/db/schemas/pam-discovery-source-resources.ts @@ -10,7 +10,7 @@ import { TImmutableDBKeys } from "./models"; export const PamDiscoverySourceResourcesSchema = z.object({ id: z.string().uuid(), discoverySourceId: z.string().uuid(), - resourceId: z.string().uuid().nullable().optional(), + resourceId: z.string().uuid(), lastDiscoveredAt: z.date(), lastDiscoveredRunId: z.string().uuid().nullable().optional(), isStale: z.boolean().default(false).nullable().optional(), From 76c688eb911ff2d222a04f30d87de222c2696441 Mon Sep 17 00:00:00 2001 From: x032205 Date: Thu, 9 Apr 2026 15:03:05 -0400 Subject: [PATCH 063/562] lint --- .../ee/services/pam-discovery/pam-discovery-source-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts b/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts index ca1bbd8be59..fae4bc71e1d 100644 --- a/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts +++ b/backend/src/ee/services/pam-discovery/pam-discovery-source-service.ts @@ -571,7 +571,7 @@ export const pamDiscoverySourceServiceFactory = ({ ); // Add dependency counts per resource - const resourceIds = decryptedResources.map((r) => r.resourceId).filter(Boolean) as string[]; + const resourceIds = decryptedResources.map((r) => r.resourceId).filter(Boolean); const depCountsByResource = resourceIds.length ? await pamAccountDependenciesDAL.countByResourceIds(resourceIds) : {}; From ed96e34e9fce903f2f12850301f6534e8272656e Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Fri, 10 Apr 2026 17:16:55 -0300 Subject: [PATCH 064/562] docs: update React Query global defaults in CLAUDE.md and add staleTime configuration --- frontend/CLAUDE.md | 12 ++++++++++++ frontend/src/hooks/api/reactQuery.tsx | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index 3b277b39592..c46e5f4752c 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -48,6 +48,18 @@ Each API domain in `src/hooks/api/` (100+ domain folders) follows this structure HTTP client in `src/config/request.ts`: Axios instance with automatic token injection and 401/403 interceptors. +#### React Query Global Defaults (`src/hooks/api/reactQuery.tsx`) + +The `QueryClient` sets these global defaults for all queries: +- **`staleTime: 60_000`** (60 seconds) — data fetched within the last 60s is considered fresh and won't be refetched on component mount/remount. This prevents redundant API calls during normal page navigation. Queries that need real-time data (e.g., identity auth configs, dynamic secret leases) override this with `staleTime: 0`. +- **`refetchOnWindowFocus: false`** — queries do not refetch when the browser tab regains focus. +- **`retry: 1`** — failed queries retry once. + +When adding new queries, consider whether the default 60s staleTime is appropriate: +- For data that changes only on explicit user action (secrets, folders, org metadata): the 60s default is fine or could be longer. +- For data that must always be fresh (auth configs, lease TTLs): override with `staleTime: 0, gcTime: 0`. +- For rarely-changing data (server config, user profile): use `staleTime: Infinity` as the context providers do. + ### State Management - **Server state**: TanStack React Query (query key factories in each API domain) diff --git a/frontend/src/hooks/api/reactQuery.tsx b/frontend/src/hooks/api/reactQuery.tsx index b80393cf51f..b7a558dad27 100644 --- a/frontend/src/hooks/api/reactQuery.tsx +++ b/frontend/src/hooks/api/reactQuery.tsx @@ -220,7 +220,8 @@ export const queryClient = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, - retry: 1 + retry: 1, + staleTime: 60_000 // 60s — prevents refetch on every component mount/remount } } }); From 5b9ab4d146db0d62a4340ed8c81b4a6505b94666 Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Fri, 10 Apr 2026 18:33:57 -0300 Subject: [PATCH 065/562] fix(auth): invalidate auth token query on organization selection success --- frontend/src/hooks/api/auth/queries.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/hooks/api/auth/queries.tsx b/frontend/src/hooks/api/auth/queries.tsx index 9f88e71e4be..6f0ce35a070 100644 --- a/frontend/src/hooks/api/auth/queries.tsx +++ b/frontend/src/hooks/api/auth/queries.tsx @@ -103,6 +103,7 @@ export const useSelectOrganization = () => { return data; }, onSuccess: () => { + queryClient.invalidateQueries({ queryKey: authKeys.getAuthToken }); queryClient.invalidateQueries({ queryKey: [organizationKeys.getUserOrganizations, projectKeys.getAllUserProjects] }); From e779b346cb02c97fb48dac3bf87d722a645c73b6 Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Fri, 10 Apr 2026 18:43:09 -0300 Subject: [PATCH 066/562] fix(auth): refine query invalidation on organization selection success --- frontend/src/hooks/api/auth/queries.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/frontend/src/hooks/api/auth/queries.tsx b/frontend/src/hooks/api/auth/queries.tsx index 6f0ce35a070..42d5e145b20 100644 --- a/frontend/src/hooks/api/auth/queries.tsx +++ b/frontend/src/hooks/api/auth/queries.tsx @@ -104,9 +104,8 @@ export const useSelectOrganization = () => { }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: authKeys.getAuthToken }); - queryClient.invalidateQueries({ - queryKey: [organizationKeys.getUserOrganizations, projectKeys.getAllUserProjects] - }); + queryClient.invalidateQueries({ queryKey: organizationKeys.getUserOrganizations }); + queryClient.invalidateQueries({ queryKey: projectKeys.getAllUserProjects() }); } }); }; From 4849bbc765b3a3e122db16c9de9113f072eaed4d Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Fri, 10 Apr 2026 19:26:14 -0300 Subject: [PATCH 067/562] fix(api): set staleTime and gcTime to 0 for auth and dynamic secret lease queries --- frontend/src/hooks/api/auth/queries.tsx | 2 ++ frontend/src/hooks/api/dynamicSecretLease/queries.ts | 2 ++ 2 files changed, 4 insertions(+) diff --git a/frontend/src/hooks/api/auth/queries.tsx b/frontend/src/hooks/api/auth/queries.tsx index 42d5e145b20..1501e3c2dbb 100644 --- a/frontend/src/hooks/api/auth/queries.tsx +++ b/frontend/src/hooks/api/auth/queries.tsx @@ -300,6 +300,8 @@ export const useGetAuthToken = () => useQuery({ queryKey: authKeys.getAuthToken, queryFn: fetchAuthToken, + staleTime: 0, + gcTime: 0, retry: 0 }); diff --git a/frontend/src/hooks/api/dynamicSecretLease/queries.ts b/frontend/src/hooks/api/dynamicSecretLease/queries.ts index 095ece0f73f..c7e64dbd369 100644 --- a/frontend/src/hooks/api/dynamicSecretLease/queries.ts +++ b/frontend/src/hooks/api/dynamicSecretLease/queries.ts @@ -24,6 +24,8 @@ export const useGetDynamicSecretLeases = ({ dynamicSecretName }), enabled: Boolean(projectSlug && environmentSlug && path && dynamicSecretName && enabled), + staleTime: 0, + gcTime: 0, queryFn: async () => { const { data } = await apiRequest.get<{ leases: TDynamicSecretLease[] }>( `/api/v1/dynamic-secrets/${dynamicSecretName}/leases`, From 2f5899d87802511376a97a02e8c95bfd2c9ee42c Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Fri, 10 Apr 2026 20:04:03 -0300 Subject: [PATCH 068/562] fix(refetch-intervals): increase refetch intervals for cache status, workspace integrations, and secret approval request count --- frontend/src/hooks/api/admin/queries.ts | 2 +- frontend/src/hooks/api/projects/queries.tsx | 2 +- frontend/src/hooks/api/secretApprovalRequest/queries.tsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/hooks/api/admin/queries.ts b/frontend/src/hooks/api/admin/queries.ts index ea7226ad601..9defee1d350 100644 --- a/frontend/src/hooks/api/admin/queries.ts +++ b/frontend/src/hooks/api/admin/queries.ts @@ -153,7 +153,7 @@ export const useGetInvalidatingCacheStatus = (enabled = true) => { return data.invalidating; }, enabled, - refetchInterval: (data) => (data ? 3000 : false) + refetchInterval: (data) => (data ? 10_000 : false) }); }; diff --git a/frontend/src/hooks/api/projects/queries.tsx b/frontend/src/hooks/api/projects/queries.tsx index 0cd378d1175..fad846dd11d 100644 --- a/frontend/src/hooks/api/projects/queries.tsx +++ b/frontend/src/hooks/api/projects/queries.tsx @@ -199,7 +199,7 @@ export const useGetWorkspaceIntegrations = ( queryKey: projectKeys.getProjectIntegrations(projectId), queryFn: () => fetchWorkspaceIntegrations(projectId), enabled: Boolean(projectId) && (options?.enabled ?? true), - refetchInterval: options?.refetchInterval ?? 4000 + refetchInterval: options?.refetchInterval ?? 30_000 }); export const createWorkspace = ( diff --git a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx index 63cdd455e21..857b0e02135 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx +++ b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx @@ -155,7 +155,7 @@ export const useGetSecretApprovalRequestCount = ({ }) => useQuery({ queryKey: secretApprovalRequestKeys.count({ projectId, policyId }), - refetchInterval: 15000, + refetchInterval: 30_000, queryFn: () => fetchSecretApprovalRequestCount({ projectId, policyId }), enabled: Boolean(projectId) && (options?.enabled ?? true) }); From ef1bf9e4247e5a3ed4ea19f178a6eb066f41424b Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Fri, 10 Apr 2026 20:27:47 -0300 Subject: [PATCH 069/562] fix(refetch-interval): update refetch interval logic to use query state data --- frontend/src/hooks/api/admin/queries.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/hooks/api/admin/queries.ts b/frontend/src/hooks/api/admin/queries.ts index 9defee1d350..72a3c4a3bca 100644 --- a/frontend/src/hooks/api/admin/queries.ts +++ b/frontend/src/hooks/api/admin/queries.ts @@ -153,7 +153,7 @@ export const useGetInvalidatingCacheStatus = (enabled = true) => { return data.invalidating; }, enabled, - refetchInterval: (data) => (data ? 10_000 : false) + refetchInterval: (query) => (query.state.data ? 10_000 : false) }); }; From bbfa783a8bd9fbb5a1423e8456634a3dfad96bf3 Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Fri, 10 Apr 2026 20:28:58 -0300 Subject: [PATCH 070/562] fix(refetch-interval): enhance refetch interval handling by incorporating options --- frontend/src/hooks/api/secretApprovalRequest/queries.tsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx index 857b0e02135..4c8d77371b4 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx +++ b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx @@ -155,7 +155,8 @@ export const useGetSecretApprovalRequestCount = ({ }) => useQuery({ queryKey: secretApprovalRequestKeys.count({ projectId, policyId }), - refetchInterval: 30_000, queryFn: () => fetchSecretApprovalRequestCount({ projectId, policyId }), - enabled: Boolean(projectId) && (options?.enabled ?? true) + enabled: Boolean(projectId) && (options?.enabled ?? true), + ...options, + refetchInterval: options?.refetchInterval ?? 30_000 }); From 7173e6d0dfeb0237ad246000a24d903f42b145e9 Mon Sep 17 00:00:00 2001 From: x032205 Date: Sat, 11 Apr 2026 05:02:05 -0400 Subject: [PATCH 071/562] some review fixes --- .../services/pam-domain/pam-domain-service.ts | 17 +++++++++++++---- .../services/pam-resource/pam-resource-fns.ts | 11 +++++++---- .../pam-resource/pam-resource-schemas.ts | 1 + .../components/PamDomainsTable.tsx | 2 +- 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/backend/src/ee/services/pam-domain/pam-domain-service.ts b/backend/src/ee/services/pam-domain/pam-domain-service.ts index 9fc93af52cd..bdeeda3a192 100644 --- a/backend/src/ee/services/pam-domain/pam-domain-service.ts +++ b/backend/src/ee/services/pam-domain/pam-domain-service.ts @@ -107,6 +107,13 @@ export const pamDomainServiceFactory = ({ }) ); + const existingDomain = await pamDomainDAL.findOne({ name, projectId }); + if (existingDomain) { + throw new BadRequestError({ + message: `Domain with name '${name}' already exists in this project` + }); + } + const factory = PAM_DOMAIN_FACTORY_MAP[domainType]( domainType, connectionDetails, @@ -375,19 +382,21 @@ export const pamDomainServiceFactory = ({ return Promise.all( relatedResources.map(async (r) => { + const { encryptedConnectionDetails, encryptedRotationAccountCredentials, encryptedResourceMetadata, ...rest } = + r; const rConnectionDetails = await decryptResourceConnectionDetails({ - encryptedConnectionDetails: r.encryptedConnectionDetails, + encryptedConnectionDetails, projectId: domain.projectId, kmsService }); - const rotationAccountCredentials = r.encryptedRotationAccountCredentials + const rotationAccountCredentials = encryptedRotationAccountCredentials ? await decryptAccountCredentials({ - encryptedCredentials: r.encryptedRotationAccountCredentials, + encryptedCredentials: encryptedRotationAccountCredentials, projectId: domain.projectId, kmsService }) : null; - return { ...r, connectionDetails: rConnectionDetails, rotationAccountCredentials } as TWindowsResource; + return { ...rest, connectionDetails: rConnectionDetails, rotationAccountCredentials } as TWindowsResource; }) ); }; diff --git a/backend/src/ee/services/pam-resource/pam-resource-fns.ts b/backend/src/ee/services/pam-resource/pam-resource-fns.ts index c0be4813a33..93c0bdce9b1 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-fns.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-fns.ts @@ -119,16 +119,19 @@ export const decryptResource = async ( projectId: string, kmsService: Pick ) => { + const { encryptedConnectionDetails, encryptedRotationAccountCredentials, encryptedResourceMetadata, ...rest } = + resource; + return { - ...resource, + ...rest, connectionDetails: await decryptResourceConnectionDetails({ - encryptedConnectionDetails: resource.encryptedConnectionDetails, + encryptedConnectionDetails, projectId, kmsService }), - rotationAccountCredentials: resource.encryptedRotationAccountCredentials + rotationAccountCredentials: encryptedRotationAccountCredentials ? await decryptAccountCredentials({ - encryptedCredentials: resource.encryptedRotationAccountCredentials, + encryptedCredentials: encryptedRotationAccountCredentials, projectId, kmsService }) diff --git a/backend/src/ee/services/pam-resource/pam-resource-schemas.ts b/backend/src/ee/services/pam-resource/pam-resource-schemas.ts index f20e5fda626..83c7dc689e7 100644 --- a/backend/src/ee/services/pam-resource/pam-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/pam-resource-schemas.ts @@ -22,6 +22,7 @@ export const GatewayAccessResponseSchema = z.object({ export const BasePamResourceSchema = PamResourcesSchema.omit({ encryptedConnectionDetails: true, encryptedRotationAccountCredentials: true, + encryptedResourceMetadata: true, resourceType: true }).extend({ metadata: ResourceMetadataSchema.pick({ id: true, key: true, value: true }).array().optional() diff --git a/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx index 7a0ba2ce3e8..39a1c7de317 100644 --- a/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx +++ b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx @@ -236,7 +236,7 @@ export const PamDomainsTable = ({ projectId }: Props) => { handlePopUpToggle("deleteDomain", isOpen)} deleteKey="confirm" onDeleteApproved={handleDelete} From 786b9c6bbc26ed8e05c50440f00ebe84e7662728 Mon Sep 17 00:00:00 2001 From: x032205 Date: Sat, 11 Apr 2026 05:15:00 -0400 Subject: [PATCH 072/562] delete modal tweaks --- frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx | 3 ++- .../pages/pam/PamDomainsPage/components/PamDomainsTable.tsx | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx b/frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx index b465791cadf..907d48dea7c 100644 --- a/frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx +++ b/frontend/src/pages/pam/PamDomainByIDPage/PamDomainByIDPage.tsx @@ -214,7 +214,8 @@ const PageContent = () => { setIsDeleteModalOpen(isOpen)} deleteKey={domain.name} onDeleteApproved={handleDeleteConfirm} diff --git a/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx index 39a1c7de317..ece3b291bad 100644 --- a/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx +++ b/frontend/src/pages/pam/PamDomainsPage/components/PamDomainsTable.tsx @@ -238,7 +238,7 @@ export const PamDomainsTable = ({ projectId }: Props) => { title={`Delete domain "${(popUp.deleteDomain.data as TPamDomain)?.name}"?`} subTitle="This will permanently remove this domain. Associated resources will be unlinked but not deleted." onChange={(isOpen) => handlePopUpToggle("deleteDomain", isOpen)} - deleteKey="confirm" + deleteKey={(popUp.deleteDomain.data as TPamDomain)?.name || "confirm"} onDeleteApproved={handleDelete} />
From cf6a55282a3d75d8b8fd22bb356e29f607750dd2 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Mon, 13 Apr 2026 14:35:53 -0400 Subject: [PATCH 073/562] feat: gateway enrollment token flow Add enrollment token-based gateway registration that decouples gateways from machine identities. Gateways can now be registered using a one-time enrollment token instead of requiring a pre-configured machine identity. Backend: - Add GATEWAY_ACCESS_TOKEN auth mode and GATEWAY actor type - Add enrollment token CRUD endpoints (create, list, delete, enroll) - Migration to make gateways_v2.identityId nullable and add gateway_enrollment_tokens table - Update PAM session, account, and gateway services to accept GATEWAY actors - Add GatewayActor to audit log and telemetry types Frontend: - Show pending enrollment tokens as "Pending" gateways in the gateway list - Invalidate gateway list on token create/delete - Deploy modal generates enrollment CLI command - Skip pending items in network health banner --- backend/src/@types/knex.d.ts | 8 + ...0260413000001_gateway-enrollment-tokens.ts | 37 ++ .../db/schemas/gateway-enrollment-tokens.ts | 26 + backend/src/db/schemas/gateways-v2.ts | 2 +- backend/src/db/schemas/index.ts | 1 + backend/src/db/schemas/models.ts | 1 + .../src/ee/routes/v1/pam-session-router.ts | 8 +- backend/src/ee/routes/v2/gateway-router.ts | 134 ++++- .../ee/services/audit-log/audit-log-types.ts | 16 +- .../gateway-enrollment-token-dal.ts | 9 + .../ee/services/gateway-v2/gateway-v2-dal.ts | 4 +- .../services/gateway-v2/gateway-v2-service.ts | 502 ++++++++++++++---- .../pam-account/pam-account-service.ts | 44 +- .../pam-session/pam-session-service.ts | 84 +-- backend/src/server/plugins/audit-log.ts | 7 + .../server/plugins/auth/inject-identity.ts | 47 +- .../server/plugins/auth/inject-permission.ts | 13 + backend/src/server/routes/index.ts | 3 + backend/src/services/auth/auth-type.ts | 15 +- .../src/services/telemetry/telemetry-types.ts | 4 +- .../src/hooks/api/gateways-v2/mutations.tsx | 31 ++ frontend/src/hooks/api/gateways-v2/types.ts | 19 +- frontend/src/hooks/api/gateways/queries.tsx | 30 +- .../NetworkHealthBanner.tsx | 3 +- .../components/GatewayTab/GatewayTab.tsx | 98 +++- .../components/GatewayCliDeploymentMethod.tsx | 268 ++-------- .../GatewayCliSystemdDeploymentMethod.tsx | 268 ++-------- 27 files changed, 1013 insertions(+), 669 deletions(-) create mode 100644 backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts create mode 100644 backend/src/db/schemas/gateway-enrollment-tokens.ts create mode 100644 backend/src/ee/services/gateway-v2/gateway-enrollment-token-dal.ts diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 27f5c05471c..0db144ddbe6 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -164,6 +164,9 @@ import { TGatewaysV2, TGatewaysV2Insert, TGatewaysV2Update, + TGatewayEnrollmentTokens, + TGatewayEnrollmentTokensInsert, + TGatewayEnrollmentTokensUpdate, TGitAppInstallSessions, TGitAppInstallSessionsInsert, TGitAppInstallSessionsUpdate, @@ -1578,6 +1581,11 @@ declare module "knex/types/tables" { TOrgGatewayConfigV2Update >; [TableName.GatewayV2]: KnexOriginal.CompositeTableType; + [TableName.GatewayEnrollmentTokens]: KnexOriginal.CompositeTableType< + TGatewayEnrollmentTokens, + TGatewayEnrollmentTokensInsert, + TGatewayEnrollmentTokensUpdate + >; [TableName.UserNotifications]: KnexOriginal.CompositeTableType< TUserNotifications, TUserNotificationsInsert, diff --git a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts new file mode 100644 index 00000000000..05b6f2b9623 --- /dev/null +++ b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts @@ -0,0 +1,37 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; +import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; + +export async function up(knex: Knex): Promise { + // Make identityId nullable on gateways_v2 to support enrollment-token-based gateways + await knex.schema.alterTable(TableName.GatewayV2, (t) => { + t.uuid("identityId").nullable().alter(); + }); + + if (!(await knex.schema.hasTable(TableName.GatewayEnrollmentTokens))) { + await knex.schema.createTable(TableName.GatewayEnrollmentTokens, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + t.uuid("orgId").notNullable(); + t.foreign("orgId").references("id").inTable(TableName.Organization).onDelete("CASCADE"); + t.string("name", 64).notNullable(); + t.string("tokenHash", 128).notNullable().unique(); + t.integer("ttl").notNullable().defaultTo(3600); + t.timestamp("expiresAt").notNullable(); + t.timestamp("usedAt").nullable(); + t.timestamps(true, true, true); + }); + + await createOnUpdateTrigger(knex, TableName.GatewayEnrollmentTokens); + } +} + +export async function down(knex: Knex): Promise { + await dropOnUpdateTrigger(knex, TableName.GatewayEnrollmentTokens); + await knex.schema.dropTableIfExists(TableName.GatewayEnrollmentTokens); + + // Restore identityId to not-null (only safe if no null rows exist) + await knex.schema.alterTable(TableName.GatewayV2, (t) => { + t.uuid("identityId").notNullable().alter(); + }); +} diff --git a/backend/src/db/schemas/gateway-enrollment-tokens.ts b/backend/src/db/schemas/gateway-enrollment-tokens.ts new file mode 100644 index 00000000000..80649a9875c --- /dev/null +++ b/backend/src/db/schemas/gateway-enrollment-tokens.ts @@ -0,0 +1,26 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { TImmutableDBKeys } from "./models"; + +export const GatewayEnrollmentTokensSchema = z.object({ + id: z.string().uuid(), + createdAt: z.date(), + updatedAt: z.date(), + orgId: z.string().uuid(), + name: z.string(), + tokenHash: z.string(), + ttl: z.number().int(), + expiresAt: z.date(), + usedAt: z.date().nullable().optional() +}); + +export type TGatewayEnrollmentTokens = z.infer; +export type TGatewayEnrollmentTokensInsert = Omit, TImmutableDBKeys>; +export type TGatewayEnrollmentTokensUpdate = Partial< + Omit, TImmutableDBKeys> +>; diff --git a/backend/src/db/schemas/gateways-v2.ts b/backend/src/db/schemas/gateways-v2.ts index a133fa2acec..1127bf3ccb2 100644 --- a/backend/src/db/schemas/gateways-v2.ts +++ b/backend/src/db/schemas/gateways-v2.ts @@ -14,7 +14,7 @@ export const GatewaysV2Schema = z.object({ createdAt: z.date(), updatedAt: z.date(), orgId: z.string().uuid(), - identityId: z.string().uuid(), + identityId: z.string().uuid().nullable().optional(), relayId: z.string().uuid().nullable().optional(), name: z.string(), heartbeat: z.date().nullable().optional(), diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 1ee9a97033b..15af09ffd02 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -53,6 +53,7 @@ export * from "./folder-tree-checkpoint-resources"; export * from "./folder-tree-checkpoints"; export * from "./gateways"; export * from "./gateways-v2"; +export * from "./gateway-enrollment-tokens"; export * from "./git-app-install-sessions"; export * from "./git-app-org"; export * from "./github-org-sync-configs"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index 33752dd9ef4..db1d12d5081 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -219,6 +219,7 @@ export enum TableName { OrgGatewayConfigV2 = "org_gateway_config_v2", Relay = "relays", GatewayV2 = "gateways_v2", + GatewayEnrollmentTokens = "gateway_enrollment_tokens", KeyValueStore = "key_value_store", diff --git a/backend/src/ee/routes/v1/pam-session-router.ts b/backend/src/ee/routes/v1/pam-session-router.ts index e88d20c9677..58201043d5a 100644 --- a/backend/src/ee/routes/v1/pam-session-router.ts +++ b/backend/src/ee/routes/v1/pam-session-router.ts @@ -54,7 +54,7 @@ export const registerPamSessionRouter = async (server: FastifyZodProvider) => { }) } }, - onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { const { credentials, projectId, account, sessionStarted } = await server.services.pamAccount.getSessionCredentials(req.params.sessionId, req.permission); @@ -125,7 +125,7 @@ export const registerPamSessionRouter = async (server: FastifyZodProvider) => { }) } }, - onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { const { session, projectId } = await server.services.pamSession.updateLogsById( { @@ -172,7 +172,7 @@ export const registerPamSessionRouter = async (server: FastifyZodProvider) => { }) } }, - onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { const { session, projectId, alreadyEnded } = await server.services.pamSession.endSessionById( req.params.sessionId, @@ -379,7 +379,7 @@ export const registerPamSessionRouter = async (server: FastifyZodProvider) => { 200: z.object({ ok: z.literal(true) }) } }, - onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { const EventBatchSchema = z.array(z.union([PamSessionCommandLogSchema, TerminalEventSchema, HttpEventSchema])); try { diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index f72ec9b3f46..bd022d82515 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -1,11 +1,14 @@ import z from "zod"; -import { GatewaysV2Schema } from "@app/db/schemas"; +import { GatewayEnrollmentTokensSchema, GatewaysV2Schema } from "@app/db/schemas"; import { zodBuffer } from "@app/lib/zod"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { slugSchema } from "@app/server/lib/schemas"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; -import { AuthMode } from "@app/services/auth/auth-type"; +import { ActorType, AuthMode } from "@app/services/auth/auth-type"; + +// Stricter rate limit for the unauthenticated enroll endpoint +const enrollRateLimit = { windowMs: 60 * 1000, max: 10 }; const SanitizedGatewayV2Schema = GatewaysV2Schema.pick({ id: true, @@ -17,6 +20,15 @@ const SanitizedGatewayV2Schema = GatewaysV2Schema.pick({ lastHealthCheckStatus: true }); +const SanitizedEnrollmentTokenSchema = GatewayEnrollmentTokensSchema.pick({ + id: true, + name: true, + ttl: true, + expiresAt: true, + usedAt: true, + createdAt: true +}); + export const registerGatewayV2Router = async (server: FastifyZodProvider) => { server.route({ method: "POST", @@ -24,8 +36,8 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { schema: { operationId: "registerGateway", body: z.object({ - relayName: slugSchema({ min: 1, max: 32, field: "relayName" }), - name: slugSchema({ min: 1, max: 32, field: "name" }) + relayName: slugSchema({ min: 1, max: 32, field: "relayName" }).optional(), + name: slugSchema({ min: 1, max: 32, field: "name" }).optional() }), response: { 200: z.object({ @@ -47,17 +59,16 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { config: { rateLimit: writeLimit }, - onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { - const gateway = await server.services.gatewayV2.registerGateway({ + return server.services.gatewayV2.registerGateway({ orgId: req.permission.orgId, relayName: req.body.relayName, actorId: req.permission.id, + actorType: req.permission.type, actorAuthMethod: req.permission.authMethod, name: req.body.name }); - - return gateway; } }); @@ -75,7 +86,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { }) } }, - onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { await server.services.gatewayV2.heartbeat({ orgPermission: req.permission @@ -92,10 +103,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { operationId: "listGateways", response: { 200: SanitizedGatewayV2Schema.extend({ - identity: z.object({ - name: z.string(), - id: z.string() - }), + identity: z.object({ name: z.string(), id: z.string() }).nullable(), connectedResourcesCount: z.number() }).array() } @@ -178,7 +186,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { 200: zodBuffer } }, - onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { const pamSessionKey = await server.services.gatewayV2.getPamSessionKey({ orgPermission: req.permission @@ -274,4 +282,102 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { return resources; } }); + + // Enrollment token management + server.route({ + method: "POST", + url: "/enrollment-tokens", + config: { rateLimit: writeLimit }, + schema: { + operationId: "createGatewayEnrollmentToken", + body: z.object({ + name: slugSchema({ min: 1, max: 64, field: "name" }), + ttlSeconds: z.number().int().min(60).max(86400).default(3600).optional() + }), + response: { + 200: SanitizedEnrollmentTokenSchema.extend({ token: z.string() }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + return server.services.gatewayV2.createEnrollmentToken({ + orgId: req.permission.orgId, + actorId: req.permission.id, + actorType: req.permission.type, + actorAuthMethod: req.permission.authMethod, + name: req.body.name, + ttlSeconds: req.body.ttlSeconds + }); + } + }); + + server.route({ + method: "GET", + url: "/enrollment-tokens", + config: { rateLimit: readLimit }, + schema: { + operationId: "listGatewayEnrollmentTokens", + response: { 200: SanitizedEnrollmentTokenSchema.array() } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + return server.services.gatewayV2.listEnrollmentTokens({ orgPermission: req.permission }); + } + }); + + server.route({ + method: "DELETE", + url: "/enrollment-tokens/:tokenId", + config: { rateLimit: writeLimit }, + schema: { + operationId: "deleteGatewayEnrollmentToken", + params: z.object({ tokenId: z.string().uuid() }), + response: { 200: z.object({ message: z.string() }) } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + await server.services.gatewayV2.deleteEnrollmentToken({ + orgPermission: req.permission, + tokenId: req.params.tokenId + }); + return { message: "Enrollment token deleted" }; + } + }); + + // Enrollment endpoint — no standard auth; enrollment token in body is the credential + server.route({ + method: "POST", + url: "/enroll", + config: { rateLimit: enrollRateLimit }, + schema: { + operationId: "enrollGateway", + body: z.object({ + token: z.string().min(1), + relayName: slugSchema({ min: 1, max: 32, field: "relayName" }).optional() + }), + response: { + 200: z.object({ + accessToken: z.string(), + gatewayId: z.string(), + relayHost: z.string(), + pki: z.object({ + serverCertificate: z.string(), + serverPrivateKey: z.string(), + clientCertificateChain: z.string() + }), + ssh: z.object({ + clientCertificate: z.string(), + clientPrivateKey: z.string(), + serverCAPublicKey: z.string() + }) + }) + } + }, + handler: async (req) => { + return server.services.gatewayV2.enrollGateway({ + token: req.body.token, + relayName: req.body.relayName + }); + } + }); }; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 3fd49133994..b57443a67c9 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -88,7 +88,8 @@ export type TCreateAuditLogDTO = { | AcmeProfileActor | AcmeAccountActor | EstAccountActor - | ScepAccountActor; + | ScepAccountActor + | GatewayActor; orgId?: string; projectId?: string; } & BaseAuthData; @@ -810,6 +811,10 @@ interface ScepAccountActorMetadata { interface UnknownUserActorMetadata {} +interface GatewayActorMetadata { + gatewayId: string; +} + export interface UserActor { type: ActorType.USER; metadata: UserActorMetadata; @@ -863,6 +868,12 @@ export interface ScepAccountActor { type: ActorType.SCEP_ACCOUNT; metadata: ScepAccountActorMetadata; } + +export interface GatewayActor { + type: ActorType.GATEWAY; + metadata: GatewayActorMetadata; +} + export type Actor = | UserActor | ServiceActor @@ -873,7 +884,8 @@ export type Actor = | AcmeProfileActor | AcmeAccountActor | EstAccountActor - | ScepAccountActor; + | ScepAccountActor + | GatewayActor; interface GetSecretsEvent { type: EventType.GET_SECRETS; diff --git a/backend/src/ee/services/gateway-v2/gateway-enrollment-token-dal.ts b/backend/src/ee/services/gateway-v2/gateway-enrollment-token-dal.ts new file mode 100644 index 00000000000..18bbecc4515 --- /dev/null +++ b/backend/src/ee/services/gateway-v2/gateway-enrollment-token-dal.ts @@ -0,0 +1,9 @@ +import { TDbClient } from "@app/db"; +import { TableName } from "@app/db/schemas"; +import { ormify } from "@app/lib/knex"; + +export type TGatewayEnrollmentTokenDALFactory = ReturnType; + +export const gatewayEnrollmentTokenDALFactory = (db: TDbClient) => { + return ormify(db, TableName.GatewayEnrollmentTokens); +}; diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts b/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts index a5534e0e3f2..3a7b4862ee9 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts @@ -22,7 +22,7 @@ export const gatewayV2DalFactory = (db: TDbClient) => { const query = (tx || db.replicaNode())(TableName.GatewayV2) // eslint-disable-next-line @typescript-eslint/no-misused-promises .where(buildFindFilter(regularFilter, TableName.GatewayV2)) - .join(TableName.Identity, `${TableName.Identity}.id`, `${TableName.GatewayV2}.identityId`) + .leftJoin(TableName.Identity, `${TableName.Identity}.id`, `${TableName.GatewayV2}.identityId`) .select(selectAllTableCols(TableName.GatewayV2)) .select(db.ref("name").withSchema(TableName.Identity).as("identityName")); @@ -54,7 +54,7 @@ export const gatewayV2DalFactory = (db: TDbClient) => { return docs.map((el) => ({ ...GatewaysV2Schema.parse(el), - identity: { id: el.identityId, name: el.identityName } + identity: el.identityId ? { id: el.identityId, name: el.identityName as string } : null })); } catch (error) { throw new DatabaseError({ error, name: `${TableName.GatewayV2}: Find` }); diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index c1f8d81c743..7c9a354ea29 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -5,6 +5,7 @@ import * as x509 from "@peculiar/x509"; import { OrganizationActionScope, OrgMembershipRole, OrgMembershipStatus, TRelays } from "@app/db/schemas"; import { PgSqlLock } from "@app/keystore/keystore"; +import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto"; import { DatabaseErrorCode } from "@app/lib/error-codes"; import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; @@ -14,7 +15,7 @@ import { withGatewayV2Proxy } from "@app/lib/gateway-v2/gateway-v2"; import { logger } from "@app/lib/logger"; import { OrgServiceActor } from "@app/lib/types"; import { TAppConnectionDALFactory } from "@app/services/app-connection/app-connection-dal"; -import { ActorAuthMethod, ActorType } from "@app/services/auth/auth-type"; +import { ActorAuthMethod, ActorType, AuthTokenType } from "@app/services/auth/auth-type"; import { constructPemChainFromCerts } from "@app/services/certificate/certificate-fns"; import { CertExtendedKeyUsage, CertKeyAlgorithm, CertKeyUsage } from "@app/services/certificate/certificate-types"; import { @@ -30,6 +31,7 @@ import { TOrgDALFactory } from "@app/services/org/org-dal"; import { TSmtpService } from "@app/services/smtp/smtp-service"; import { TAiMcpServerDALFactory } from "../ai-mcp-server/ai-mcp-server-dal"; +import { TGatewayEnrollmentTokenDALFactory } from "./gateway-enrollment-token-dal"; import { TDynamicSecretDALFactory } from "../dynamic-secret/dynamic-secret-dal"; import { TPamDiscoverySourceDALFactory } from "../pam-discovery/pam-discovery-source-dal"; import { TPamResourceDALFactory } from "../pam-resource/pam-resource-dal"; @@ -49,6 +51,7 @@ type TGatewayV2ServiceFactoryDep = { kmsService: TKmsServiceFactory; relayService: TRelayServiceFactory; gatewayV2DAL: TGatewayV2DALFactory; + gatewayEnrollmentTokenDAL: TGatewayEnrollmentTokenDALFactory; relayDAL: TRelayDALFactory; permissionService: TPermissionServiceFactory; orgDAL: Pick; @@ -70,6 +73,7 @@ export const gatewayV2ServiceFactory = ({ kmsService, relayService, gatewayV2DAL, + gatewayEnrollmentTokenDAL, relayDAL, permissionService, orgDAL, @@ -648,31 +652,148 @@ export const gatewayV2ServiceFactory = ({ }; }; + const $issueGatewayCerts = async ({ + orgId, + orgCAs, + relayName, + gateway + }: { + orgId: string; + orgCAs: Awaited>; + relayName: string; + gateway: { id: string; name: string }; + }) => { + const alg = keyAlgorithmToAlgCfg(CertKeyAlgorithm.RSA_2048); + const gatewayServerCaCert = new x509.X509Certificate(orgCAs.gatewayServerCaCertificate); + const rootGatewayCaCert = new x509.X509Certificate(orgCAs.rootGatewayCaCertificate); + const gatewayClientCaCert = new x509.X509Certificate(orgCAs.gatewayClientCaCertificate); + + const gatewayServerCaSkObj = crypto.nativeCrypto.createPrivateKey({ + key: orgCAs.gatewayServerCaPrivateKey, + format: "der", + type: "pkcs8" + }); + const gatewayServerCaPrivateKey = await crypto.nativeCrypto.subtle.importKey( + "pkcs8", + gatewayServerCaSkObj.export({ format: "der", type: "pkcs8" }), + alg, + true, + ["sign"] + ); + + const gatewayServerKeys = await crypto.nativeCrypto.subtle.generateKey(alg, true, ["sign", "verify"]); + const gatewayServerCertIssuedAt = new Date(); + const gatewayServerCertExpireAt = new Date(new Date().setDate(new Date().getDate() + 1)); + const gatewayServerCertPrivateKey = crypto.nativeCrypto.KeyObject.from(gatewayServerKeys.privateKey); + + const gatewayServerCertExtensions: x509.Extension[] = [ + new x509.BasicConstraintsExtension(false), + await x509.AuthorityKeyIdentifierExtension.create(gatewayServerCaCert, false), + await x509.SubjectKeyIdentifierExtension.create(gatewayServerKeys.publicKey), + new x509.CertificatePolicyExtension(["2.5.29.32.0"]), // anyPolicy + new x509.KeyUsagesExtension( + // eslint-disable-next-line no-bitwise + x509.KeyUsageFlags[CertKeyUsage.DIGITAL_SIGNATURE] | x509.KeyUsageFlags[CertKeyUsage.KEY_ENCIPHERMENT], + true + ), + new x509.ExtendedKeyUsageExtension([x509.ExtendedKeyUsage[CertExtendedKeyUsage.SERVER_AUTH]], true), + new x509.SubjectAlternativeNameExtension([ + { type: "dns", value: "localhost" }, + { type: "ip", value: "127.0.0.1" }, + { type: "ip", value: "::1" } + ]) + ]; + + const gatewayServerSerialNumber = createSerialNumber(); + const gatewayServerCertificate = await x509.X509CertificateGenerator.create({ + serialNumber: gatewayServerSerialNumber, + subject: `O=${orgId},CN=Gateway`, + issuer: gatewayServerCaCert.subject, + notBefore: gatewayServerCertIssuedAt, + notAfter: gatewayServerCertExpireAt, + signingKey: gatewayServerCaPrivateKey, + publicKey: gatewayServerKeys.publicKey, + signingAlgorithm: alg, + extensions: gatewayServerCertExtensions + }); + + const relayCredentials = await relayService.getCredentialsForGateway({ + relayName, + orgId, + gatewayId: gateway.id, + gatewayName: gateway.name + }); + + return { + gatewayId: gateway.id, + relayHost: relayCredentials.relayHost, + pki: { + serverCertificate: gatewayServerCertificate.toString("pem"), + serverPrivateKey: gatewayServerCertPrivateKey.export({ format: "pem", type: "pkcs8" }).toString(), + clientCertificateChain: constructPemChainFromCerts([gatewayClientCaCert, rootGatewayCaCert]) + }, + ssh: { + clientCertificate: relayCredentials.clientSshCert, + clientPrivateKey: relayCredentials.clientSshPrivateKey, + serverCAPublicKey: relayCredentials.serverCAPublicKey + } + }; + }; + const registerGateway = async ({ orgId, actorId, + actorType, actorAuthMethod, relayName, name }: { orgId: string; actorId: string; + actorType: ActorType; actorAuthMethod: ActorAuthMethod; - relayName: string; - name: string; + relayName?: string; + name?: string; }) => { - await $validateIdentityAccessToGateway(orgId, actorId, actorAuthMethod); const orgCAs = await $getOrgCAs(orgId); - let relay: TRelays = await relayDAL.findOne({ orgId, name: relayName }); - if (!relay) { - relay = await relayDAL.findOne({ name: relayName, orgId: null }); + // Enrollment-flow gateways authenticate with GATEWAY_ACCESS_TOKEN — the gateway row + // already exists, so we just look it up and issue fresh certs using its stored relay. + if (actorType === ActorType.GATEWAY) { + const gateway = await gatewayV2DAL.findById(actorId); + if (!gateway || gateway.orgId !== orgId) { + throw new NotFoundError({ message: `Gateway ${actorId} not found` }); + } + + let resolvedRelay: TRelays | undefined; + if (relayName) { + resolvedRelay = await relayDAL.findOne({ orgId, name: relayName }); + if (!resolvedRelay) resolvedRelay = await relayDAL.findOne({ name: relayName, orgId: null }); + if (!resolvedRelay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); + } else { + if (!gateway.relayId) throw new NotFoundError({ message: "No relay associated with this gateway" }); + resolvedRelay = await relayDAL.findById(gateway.relayId); + if (!resolvedRelay) throw new NotFoundError({ message: "No relay associated with this gateway" }); + } + + return $issueGatewayCerts({ orgId, orgCAs, relayName: resolvedRelay.name, gateway }); } - if (!relay) { - throw new NotFoundError({ message: `Relay ${relayName} not found` }); + // Identity-based flow: upsert the gateway row then issue certs. + await $validateIdentityAccessToGateway(orgId, actorId, actorAuthMethod); + + if (!name) { + throw new BadRequestError({ message: "Gateway name is required" }); } + if (!relayName) { + throw new BadRequestError({ message: "Relay name is required" }); + } + + let relay: TRelays = await relayDAL.findOne({ orgId, name: relayName }); + if (!relay) relay = await relayDAL.findOne({ name: relayName, orgId: null }); + if (!relay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); + try { const [gateway] = await gatewayV2DAL.upsert( [ @@ -686,81 +807,7 @@ export const gatewayV2ServiceFactory = ({ ["identityId"] ); - const alg = keyAlgorithmToAlgCfg(CertKeyAlgorithm.RSA_2048); - const gatewayServerCaCert = new x509.X509Certificate(orgCAs.gatewayServerCaCertificate); - const rootGatewayCaCert = new x509.X509Certificate(orgCAs.rootGatewayCaCertificate); - const gatewayClientCaCert = new x509.X509Certificate(orgCAs.gatewayClientCaCertificate); - - const gatewayServerCaSkObj = crypto.nativeCrypto.createPrivateKey({ - key: orgCAs.gatewayServerCaPrivateKey, - format: "der", - type: "pkcs8" - }); - const gatewayServerCaPrivateKey = await crypto.nativeCrypto.subtle.importKey( - "pkcs8", - gatewayServerCaSkObj.export({ format: "der", type: "pkcs8" }), - alg, - true, - ["sign"] - ); - - const gatewayServerKeys = await crypto.nativeCrypto.subtle.generateKey(alg, true, ["sign", "verify"]); - const gatewayServerCertIssuedAt = new Date(); - const gatewayServerCertExpireAt = new Date(new Date().setDate(new Date().getDate() + 1)); - const gatewayServerCertPrivateKey = crypto.nativeCrypto.KeyObject.from(gatewayServerKeys.privateKey); - - const gatewayServerCertExtensions: x509.Extension[] = [ - new x509.BasicConstraintsExtension(false), - await x509.AuthorityKeyIdentifierExtension.create(gatewayServerCaCert, false), - await x509.SubjectKeyIdentifierExtension.create(gatewayServerKeys.publicKey), - new x509.CertificatePolicyExtension(["2.5.29.32.0"]), // anyPolicy - new x509.KeyUsagesExtension( - // eslint-disable-next-line no-bitwise - x509.KeyUsageFlags[CertKeyUsage.DIGITAL_SIGNATURE] | x509.KeyUsageFlags[CertKeyUsage.KEY_ENCIPHERMENT], - true - ), - new x509.ExtendedKeyUsageExtension([x509.ExtendedKeyUsage[CertExtendedKeyUsage.SERVER_AUTH]], true), - new x509.SubjectAlternativeNameExtension([ - { type: "dns", value: "localhost" }, - { type: "ip", value: "127.0.0.1" }, - { type: "ip", value: "::1" } - ]) - ]; - - const gatewayServerSerialNumber = createSerialNumber(); - const gatewayServerCertificate = await x509.X509CertificateGenerator.create({ - serialNumber: gatewayServerSerialNumber, - subject: `O=${orgId},CN=Gateway`, - issuer: gatewayServerCaCert.subject, - notBefore: gatewayServerCertIssuedAt, - notAfter: gatewayServerCertExpireAt, - signingKey: gatewayServerCaPrivateKey, - publicKey: gatewayServerKeys.publicKey, - signingAlgorithm: alg, - extensions: gatewayServerCertExtensions - }); - - const relayCredentials = await relayService.getCredentialsForGateway({ - relayName, - orgId, - gatewayId: gateway.id, - gatewayName: gateway.name - }); - - return { - gatewayId: gateway.id, - relayHost: relayCredentials.relayHost, - pki: { - serverCertificate: gatewayServerCertificate.toString("pem"), - serverPrivateKey: gatewayServerCertPrivateKey.export({ format: "pem", type: "pkcs8" }).toString(), - clientCertificateChain: constructPemChainFromCerts([gatewayClientCaCert, rootGatewayCaCert]) - }, - ssh: { - clientCertificate: relayCredentials.clientSshCert, - clientPrivateKey: relayCredentials.clientSshPrivateKey, - serverCAPublicKey: relayCredentials.serverCAPublicKey - } - }; + return $issueGatewayCerts({ orgId, orgCAs, relayName, gateway }); } catch (err) { if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { throw new BadRequestError({ message: `Gateway with name "${name}" already exists` }); @@ -888,6 +935,15 @@ export const gatewayV2ServiceFactory = ({ }; const heartbeat = async ({ orgPermission }: { orgPermission: OrgServiceActor }) => { + if (orgPermission.type === ActorType.GATEWAY) { + const gateway = await gatewayV2DAL.findById(orgPermission.id); + if (!gateway || gateway.orgId !== orgPermission.orgId) { + throw new NotFoundError({ message: `Gateway ${orgPermission.id} not found.` }); + } + await $checkGatewayHealth(gateway.id); + return; + } + await $validateIdentityAccessToGateway(orgPermission.orgId, orgPermission.id, orgPermission.authMethod); const gateway = await gatewayV2DAL.findOne({ @@ -939,25 +995,26 @@ export const gatewayV2ServiceFactory = ({ }; const getPamSessionKey = async ({ orgPermission }: { orgPermission: OrgServiceActor }) => { - const { permission } = await permissionService.getOrgPermission({ - actor: orgPermission.type, - actorId: orgPermission.id, - orgId: orgPermission.orgId, - actorAuthMethod: orgPermission.authMethod, - actorOrgId: orgPermission.orgId, - scope: OrganizationActionScope.Any - }); + // Gateway actors are already authenticated via GATEWAY_ACCESS_TOKEN JWT — skip org permission check. + if (orgPermission.type !== ActorType.GATEWAY) { + const { permission } = await permissionService.getOrgPermission({ + actor: orgPermission.type, + actorId: orgPermission.id, + orgId: orgPermission.orgId, + actorAuthMethod: orgPermission.authMethod, + actorOrgId: orgPermission.orgId, + scope: OrganizationActionScope.Any + }); - ForbiddenError.from(permission).throwUnlessCan( - OrgPermissionGatewayActions.CreateGateways, - OrgPermissionSubjects.Gateway - ); + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.CreateGateways, + OrgPermissionSubjects.Gateway + ); + } return gatewayV2DAL.transaction(async (tx) => { const gateway = await gatewayV2DAL.findOne( - { - identityId: orgPermission.id - }, + orgPermission.type === ActorType.GATEWAY ? { id: orgPermission.id } : { identityId: orgPermission.id }, tx ); @@ -1098,6 +1155,246 @@ export const gatewayV2ServiceFactory = ({ }; }; + const getGatewayById = async ({ gatewayId }: { gatewayId: string }) => { + const gateway = await gatewayV2DAL.findById(gatewayId); + if (!gateway) { + throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); + } + return gateway; + }; + + const createEnrollmentToken = async ({ + orgId, + actorId, + actorType, + actorAuthMethod, + name, + ttlSeconds = 3600 + }: { + orgId: string; + actorId: string; + actorType: ActorType; + actorAuthMethod: ActorAuthMethod; + name: string; + ttlSeconds?: number; + }) => { + const { permission } = await permissionService.getOrgPermission({ + actor: actorType, + actorId, + orgId, + actorAuthMethod, + actorOrgId: orgId, + scope: OrganizationActionScope.Any + }); + + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.CreateGateways, + OrgPermissionSubjects.Gateway + ); + + const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; + const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); + const expiresAt = new Date(Date.now() + ttlSeconds * 1000); + + const record = await gatewayEnrollmentTokenDAL.create({ + orgId, + name, + tokenHash, + ttl: ttlSeconds, + expiresAt + }); + + return { ...record, token: plainToken }; + }; + + const listEnrollmentTokens = async ({ orgPermission }: { orgPermission: OrgServiceActor }) => { + const { permission } = await permissionService.getOrgPermission({ + actor: orgPermission.type, + actorId: orgPermission.id, + orgId: orgPermission.orgId, + actorAuthMethod: orgPermission.authMethod, + actorOrgId: orgPermission.orgId, + scope: OrganizationActionScope.Any + }); + + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.ListGateways, + OrgPermissionSubjects.Gateway + ); + + const now = new Date(); + const tokens = await gatewayEnrollmentTokenDAL.find({ orgId: orgPermission.orgId }); + return tokens.filter((t) => t.expiresAt > now && !t.usedAt).map(({ tokenHash: _, ...rest }) => rest); + }; + + const deleteEnrollmentToken = async ({ + orgPermission, + tokenId + }: { + orgPermission: OrgServiceActor; + tokenId: string; + }) => { + const { permission } = await permissionService.getOrgPermission({ + actor: orgPermission.type, + actorId: orgPermission.id, + orgId: orgPermission.orgId, + actorAuthMethod: orgPermission.authMethod, + actorOrgId: orgPermission.orgId, + scope: OrganizationActionScope.Any + }); + + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.DeleteGateways, + OrgPermissionSubjects.Gateway + ); + + const token = await gatewayEnrollmentTokenDAL.findOne({ id: tokenId, orgId: orgPermission.orgId }); + if (!token) { + throw new NotFoundError({ message: `Enrollment token ${tokenId} not found` }); + } + + await gatewayEnrollmentTokenDAL.deleteById(tokenId); + }; + + const enrollGateway = async ({ token, relayName }: { token: string; relayName?: string }) => { + const tokenHash = crypto.nativeCrypto.createHash("sha256").update(token).digest("hex"); + + const tokenRecord = await gatewayEnrollmentTokenDAL.findOne({ tokenHash }); + if (!tokenRecord) { + throw new BadRequestError({ message: "Invalid enrollment token" }); + } + + if (tokenRecord.expiresAt < new Date()) { + throw new BadRequestError({ message: "Enrollment token has expired" }); + } + + const { orgId, name } = tokenRecord; + + // Resolve the relay before consuming the token so a missing relay doesn't burn it. + let relay: TRelays | undefined; + if (relayName) { + relay = await relayDAL.findOne({ orgId, name: relayName }); + if (!relay) relay = await relayDAL.findOne({ name: relayName, orgId: null }); + if (!relay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); + } else { + // Auto-select: prefer an org-specific relay, fall back to a global one + const orgRelays = await relayDAL.find({ orgId }); + relay = orgRelays[0] ?? (await relayDAL.find({ orgId: null }))[0]; + if (!relay) throw new NotFoundError({ message: "No relay available for auto-selection" }); + } + + // Single-use check inside a transaction — re-read to guard against races + await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + const locked = await gatewayEnrollmentTokenDAL.findOne({ id: tokenRecord.id }, tx); + if (!locked || locked.usedAt) { + throw new BadRequestError({ message: "Enrollment token has already been used" }); + } + await gatewayEnrollmentTokenDAL.updateById(tokenRecord.id, { usedAt: new Date() }, tx); + }); + + const orgCAs = await $getOrgCAs(orgId); + + try { + const gateway = await gatewayV2DAL.create({ + orgId, + name, + relayId: relay.id + }); + + const alg = keyAlgorithmToAlgCfg(CertKeyAlgorithm.RSA_2048); + const gatewayServerCaCert = new x509.X509Certificate(orgCAs.gatewayServerCaCertificate); + const rootGatewayCaCert = new x509.X509Certificate(orgCAs.rootGatewayCaCertificate); + const gatewayClientCaCert = new x509.X509Certificate(orgCAs.gatewayClientCaCertificate); + + const gatewayServerCaSkObj = crypto.nativeCrypto.createPrivateKey({ + key: orgCAs.gatewayServerCaPrivateKey, + format: "der", + type: "pkcs8" + }); + const gatewayServerCaPrivateKey = await crypto.nativeCrypto.subtle.importKey( + "pkcs8", + gatewayServerCaSkObj.export({ format: "der", type: "pkcs8" }), + alg, + true, + ["sign"] + ); + + const gatewayServerKeys = await crypto.nativeCrypto.subtle.generateKey(alg, true, ["sign", "verify"]); + const gatewayServerCertIssuedAt = new Date(); + const gatewayServerCertExpireAt = new Date(new Date().setDate(new Date().getDate() + 1)); + const gatewayServerCertPrivateKey = crypto.nativeCrypto.KeyObject.from(gatewayServerKeys.privateKey); + + const gatewayServerCertExtensions: x509.Extension[] = [ + new x509.BasicConstraintsExtension(false), + await x509.AuthorityKeyIdentifierExtension.create(gatewayServerCaCert, false), + await x509.SubjectKeyIdentifierExtension.create(gatewayServerKeys.publicKey), + new x509.CertificatePolicyExtension(["2.5.29.32.0"]), + new x509.KeyUsagesExtension( + // eslint-disable-next-line no-bitwise + x509.KeyUsageFlags[CertKeyUsage.DIGITAL_SIGNATURE] | x509.KeyUsageFlags[CertKeyUsage.KEY_ENCIPHERMENT], + true + ), + new x509.ExtendedKeyUsageExtension([x509.ExtendedKeyUsage[CertExtendedKeyUsage.SERVER_AUTH]], true), + new x509.SubjectAlternativeNameExtension([ + { type: "dns", value: "localhost" }, + { type: "ip", value: "127.0.0.1" }, + { type: "ip", value: "::1" } + ]) + ]; + + const gatewayServerSerialNumber = createSerialNumber(); + const gatewayServerCertificate = await x509.X509CertificateGenerator.create({ + serialNumber: gatewayServerSerialNumber, + subject: `O=${orgId},CN=Gateway`, + issuer: gatewayServerCaCert.subject, + notBefore: gatewayServerCertIssuedAt, + notAfter: gatewayServerCertExpireAt, + signingKey: gatewayServerCaPrivateKey, + publicKey: gatewayServerKeys.publicKey, + signingAlgorithm: alg, + extensions: gatewayServerCertExtensions + }); + + const relayCredentials = await relayService.getCredentialsForGateway({ + relayName: relay.name, + orgId, + gatewayId: gateway.id, + gatewayName: gateway.name + }); + + const appCfg = getConfig(); + const accessToken = crypto.jwt().sign( + { + gatewayId: gateway.id, + orgId, + authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN + }, + appCfg.AUTH_SECRET + ); + + return { + accessToken, + gatewayId: gateway.id, + relayHost: relayCredentials.relayHost, + pki: { + serverCertificate: gatewayServerCertificate.toString("pem"), + serverPrivateKey: gatewayServerCertPrivateKey.export({ format: "pem", type: "pkcs8" }).toString(), + clientCertificateChain: constructPemChainFromCerts([gatewayClientCaCert, rootGatewayCaCert]) + }, + ssh: { + clientCertificate: relayCredentials.clientSshCert, + clientPrivateKey: relayCredentials.clientSshPrivateKey, + serverCAPublicKey: relayCredentials.serverCAPublicKey + } + }; + } catch (err) { + if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { + throw new BadRequestError({ message: `Gateway with name "${name}" already exists` }); + } + throw err; + } + }; + return { listGateways, registerGateway, @@ -1108,6 +1405,11 @@ export const gatewayV2ServiceFactory = ({ triggerHeartbeat, getPamSessionKey, healthcheckNotify, - getConnectedResources + getConnectedResources, + getGatewayById, + createEnrollmentToken, + listEnrollmentTokens, + deleteEnrollmentToken, + enrollGateway }; }; diff --git a/backend/src/ee/services/pam-account/pam-account-service.ts b/backend/src/ee/services/pam-account/pam-account-service.ts index 28b8bdcc541..74adcfe6b2d 100644 --- a/backend/src/ee/services/pam-account/pam-account-service.ts +++ b/backend/src/ee/services/pam-account/pam-account-service.ts @@ -945,8 +945,8 @@ export const pamAccountServiceFactory = ({ }; const getSessionCredentials = async (sessionId: string, actor: OrgServiceActor) => { - // To be hit by gateways only - if (actor.type !== ActorType.IDENTITY) { + // To be hit by gateways only (identity-based or enrollment-flow) + if (actor.type !== ActorType.IDENTITY && actor.type !== ActorType.GATEWAY) { throw new ForbiddenRequestError({ message: "Only gateways can perform this action" }); } @@ -956,19 +956,21 @@ export const pamAccountServiceFactory = ({ const project = await projectDAL.findById(session.projectId); if (!project) throw new NotFoundError({ message: `Project with ID '${session.projectId}' not found` }); - const { permission } = await permissionService.getOrgPermission({ - actor: actor.type, - actorId: actor.id, - orgId: project.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId, - scope: OrganizationActionScope.Any - }); + if (actor.type === ActorType.IDENTITY) { + const { permission } = await permissionService.getOrgPermission({ + actor: actor.type, + actorId: actor.id, + orgId: project.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + scope: OrganizationActionScope.Any + }); - ForbiddenError.from(permission).throwUnlessCan( - OrgPermissionGatewayActions.CreateGateways, - OrgPermissionSubjects.Gateway - ); + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.CreateGateways, + OrgPermissionSubjects.Gateway + ); + } if (!session.accountId) throw new NotFoundError({ message: "Session is missing accountId column" }); @@ -983,10 +985,16 @@ export const pamAccountServiceFactory = ({ const resource = await pamResourceDAL.findById(account.resourceId); if (!resource) throw new NotFoundError({ message: `Resource with ID '${account.resourceId}' not found` }); - if (resource.gatewayId && resource.gatewayIdentityId !== actor.id) { - throw new ForbiddenRequestError({ - message: "Identity does not have access to fetch the PAM session credentials" - }); + if (resource.gatewayId) { + const authorized = + actor.type === ActorType.GATEWAY + ? resource.gatewayId === actor.id + : resource.gatewayIdentityId === actor.id; + if (!authorized) { + throw new ForbiddenRequestError({ + message: "Gateway does not have access to fetch the PAM session credentials" + }); + } } const decryptedAccount = await decryptAccount(account, session.projectId, kmsService); diff --git a/backend/src/ee/services/pam-session/pam-session-service.ts b/backend/src/ee/services/pam-session/pam-session-service.ts index ec5f681b7e8..a9f3a79a392 100644 --- a/backend/src/ee/services/pam-session/pam-session-service.ts +++ b/backend/src/ee/services/pam-session/pam-session-service.ts @@ -122,8 +122,8 @@ export const pamSessionServiceFactory = ({ }; const updateLogsById = async ({ sessionId, logs }: TUpdateSessionLogsDTO, actor: OrgServiceActor) => { - // To be hit by gateways only - if (actor.type !== ActorType.IDENTITY) { + // To be hit by gateways only (identity-based or enrollment-flow) + if (actor.type !== ActorType.IDENTITY && actor.type !== ActorType.GATEWAY) { throw new ForbiddenRequestError({ message: "Only gateways can perform this action" }); } @@ -137,19 +137,21 @@ export const pamSessionServiceFactory = ({ const project = await projectDAL.findById(session.projectId); if (!project) throw new NotFoundError({ message: `Project with ID '${session.projectId}' not found` }); - const { permission } = await permissionService.getOrgPermission({ - actor: actor.type, - actorId: actor.id, - orgId: project.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId, - scope: OrganizationActionScope.Any - }); + if (actor.type === ActorType.IDENTITY) { + const { permission } = await permissionService.getOrgPermission({ + actor: actor.type, + actorId: actor.id, + orgId: project.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + scope: OrganizationActionScope.Any + }); - ForbiddenError.from(permission).throwUnlessCan( - OrgPermissionGatewayActions.CreateGateways, - OrgPermissionSubjects.Gateway - ); + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.CreateGateways, + OrgPermissionSubjects.Gateway + ); + } if (session.gatewayIdentityId && session.gatewayIdentityId !== actor.id) { throw new ForbiddenRequestError({ message: "Identity does not have access to update logs for this session" }); @@ -178,16 +180,16 @@ export const pamSessionServiceFactory = ({ const project = await projectDAL.findById(session.projectId); if (!project) throw new NotFoundError({ message: `Project with ID '${session.projectId}' not found` }); - const { permission } = await permissionService.getOrgPermission({ - actor: actor.type, - actorId: actor.id, - orgId: project.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId, - scope: OrganizationActionScope.Any - }); - if (actor.type === ActorType.IDENTITY) { + const { permission } = await permissionService.getOrgPermission({ + actor: actor.type, + actorId: actor.id, + orgId: project.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + scope: OrganizationActionScope.Any + }); + ForbiddenError.from(permission).throwUnlessCan( OrgPermissionGatewayActions.CreateGateways, OrgPermissionSubjects.Gateway @@ -196,12 +198,17 @@ export const pamSessionServiceFactory = ({ if (session.gatewayIdentityId && session.gatewayIdentityId !== actor.id) { throw new ForbiddenRequestError({ message: "Identity does not have access to end this session" }); } + } else if (actor.type === ActorType.GATEWAY) { + // Enrollment-flow gateways authenticate directly; JWT proves org membership. + if (session.gatewayIdentityId && session.gatewayIdentityId !== actor.id) { + throw new ForbiddenRequestError({ message: "Gateway does not have access to end this session" }); + } } else if (actor.type === ActorType.USER) { if (session.userId !== actor.id) { throw new ForbiddenRequestError({ message: "You are not authorized to end this session" }); } } else { - throw new ForbiddenRequestError({ message: "Only identities and users can perform this action" }); + throw new ForbiddenRequestError({ message: "Only gateways and users can perform this action" }); } const updatedSession = await pamSessionDAL.endSessionById(sessionId); @@ -337,7 +344,8 @@ export const pamSessionServiceFactory = ({ }; const uploadEventBatch = async ({ sessionId, startOffset, events }: TUploadEventBatchDTO, actor: OrgServiceActor) => { - if (actor.type !== ActorType.IDENTITY) { + // To be hit by gateways only (identity-based or enrollment-flow) + if (actor.type !== ActorType.IDENTITY && actor.type !== ActorType.GATEWAY) { throw new ForbiddenRequestError({ message: "Only gateways can perform this action" }); } @@ -347,19 +355,21 @@ export const pamSessionServiceFactory = ({ const project = await projectDAL.findById(session.projectId); if (!project) throw new NotFoundError({ message: `Project with ID '${session.projectId}' not found` }); - const { permission } = await permissionService.getOrgPermission({ - actor: actor.type, - actorId: actor.id, - orgId: project.orgId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId, - scope: OrganizationActionScope.Any - }); + if (actor.type === ActorType.IDENTITY) { + const { permission } = await permissionService.getOrgPermission({ + actor: actor.type, + actorId: actor.id, + orgId: project.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + scope: OrganizationActionScope.Any + }); - ForbiddenError.from(permission).throwUnlessCan( - OrgPermissionGatewayActions.CreateGateways, - OrgPermissionSubjects.Gateway - ); + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.CreateGateways, + OrgPermissionSubjects.Gateway + ); + } if (session.gatewayIdentityId && session.gatewayIdentityId !== actor.id) { throw new ForbiddenRequestError({ message: "Identity does not have access to upload events for this session" }); diff --git a/backend/src/server/plugins/audit-log.ts b/backend/src/server/plugins/audit-log.ts index 9fb14e97cb1..839d83d175f 100644 --- a/backend/src/server/plugins/audit-log.ts +++ b/backend/src/server/plugins/audit-log.ts @@ -84,6 +84,13 @@ export const injectAuditLogInfo = fp(async (server: FastifyZodProvider) => { type: ActorType.SCIM_CLIENT, metadata: {} }; + } else if (req.auth.actor === ActorType.GATEWAY) { + payload.actor = { + type: ActorType.GATEWAY, + metadata: { + gatewayId: req.permission.id + } + }; } else { throw new BadRequestError({ message: "Invalid actor type provided" }); } diff --git a/backend/src/server/plugins/auth/inject-identity.ts b/backend/src/server/plugins/auth/inject-identity.ts index b155a12dfb4..0b911f8d1d7 100644 --- a/backend/src/server/plugins/auth/inject-identity.ts +++ b/backend/src/server/plugins/auth/inject-identity.ts @@ -8,7 +8,14 @@ import { TScimTokenJwtPayload } from "@app/ee/services/scim/scim-types"; import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto"; import { BadRequestError } from "@app/lib/errors"; -import { ActorType, AuthMethod, AuthMode, AuthModeJwtTokenPayload, AuthTokenType } from "@app/services/auth/auth-type"; +import { + ActorType, + AuthMethod, + AuthMode, + AuthModeJwtTokenPayload, + AuthTokenType, + TGatewayAccessTokenJwtPayload +} from "@app/services/auth/auth-type"; import { TIdentityAccessTokenJwtPayload } from "@app/services/identity-access-token/identity-access-token-types"; import { getServerCfg } from "@app/services/super-admin/super-admin-service"; @@ -68,6 +75,16 @@ export type TAuthMode = rootOrgId: string; parentOrgId: string; authMethod: null; + } + | { + authMode: AuthMode.GATEWAY_ACCESS_TOKEN; + actor: ActorType.GATEWAY; + gatewayId: string; + orgId: string; + rootOrgId: string; + parentOrgId: string; + authMethod: null; + token: TGatewayAccessTokenJwtPayload; }; export const extractAuth = async (req: FastifyRequest, jwtSecret: string) => { @@ -120,6 +137,12 @@ export const extractAuth = async (req: FastifyRequest, jwtSecret: string) => { token: decodedToken as TScimTokenJwtPayload, actor: ActorType.SCIM_CLIENT } as const; + case AuthTokenType.GATEWAY_ACCESS_TOKEN: + return { + authMode: AuthMode.GATEWAY_ACCESS_TOKEN, + token: decodedToken as TGatewayAccessTokenJwtPayload, + actor: ActorType.GATEWAY + } as const; default: return { authMode: null, token: null } as const; } @@ -163,6 +186,11 @@ export const injectIdentity = fp( return; } + // Authentication is handled on a route-level (enrollment token in body) + if (req.url === "/api/v2/gateways/enroll") { + return; + } + // Authentication is handled on a route-level if (req.url === "/api/v1/relays/heartbeat-instance-relay") { return; @@ -307,6 +335,23 @@ export const injectIdentity = fp( }; break; } + case AuthMode.GATEWAY_ACCESS_TOKEN: { + // Validate gateway exists — deletion is the revocation mechanism + const gateway = await server.services.gatewayV2.getGatewayById({ gatewayId: token.gatewayId }); + requestContext.set("orgId", token.orgId); + + req.auth = { + authMode: AuthMode.GATEWAY_ACCESS_TOKEN, + actor, + gatewayId: token.gatewayId, + orgId: token.orgId, + rootOrgId: token.orgId, + parentOrgId: token.orgId, + authMethod: null, + token + }; + break; + } default: throw new BadRequestError({ message: "Invalid token strategy provided" }); } diff --git a/backend/src/server/plugins/auth/inject-permission.ts b/backend/src/server/plugins/auth/inject-permission.ts index 827a055d3cb..b19f7cd97ab 100644 --- a/backend/src/server/plugins/auth/inject-permission.ts +++ b/backend/src/server/plugins/auth/inject-permission.ts @@ -61,6 +61,19 @@ export const injectPermission = fp(async (server) => { logger.info( `injectPermission: Injecting permissions for [permissionsForIdentity=${req.auth.scimTokenId}] [type=${ActorType.SCIM_CLIENT}]` ); + } else if (req.auth.actor === ActorType.GATEWAY) { + req.permission = { + type: ActorType.GATEWAY, + id: req.auth.gatewayId, + orgId: req.auth.orgId, + rootOrgId: req.auth.rootOrgId, + parentOrgId: req.auth.parentOrgId, + authMethod: null + }; + + logger.info( + `injectPermission: Injecting permissions for [permissionsForGateway=${req.auth.gatewayId}] [type=${ActorType.GATEWAY}]` + ); } }); }); diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 7d514083440..2dc1558307c 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -56,6 +56,7 @@ import { externalKmsServiceFactory } from "@app/ee/services/external-kms/externa import { gatewayDALFactory } from "@app/ee/services/gateway/gateway-dal"; import { gatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; import { orgGatewayConfigDALFactory } from "@app/ee/services/gateway/org-gateway-config-dal"; +import { gatewayEnrollmentTokenDALFactory } from "@app/ee/services/gateway-v2/gateway-enrollment-token-dal"; import { gatewayV2DalFactory } from "@app/ee/services/gateway-v2/gateway-v2-dal"; import { gatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2-service"; import { orgGatewayConfigV2DalFactory } from "@app/ee/services/gateway-v2/org-gateway-config-v2-dal"; @@ -1271,6 +1272,7 @@ export const registerRoutes = async ( const orgRelayConfigDAL = orgRelayConfigDalFactory(db); const relayDAL = relayDalFactory(db); const gatewayV2DAL = gatewayV2DalFactory(db); + const gatewayEnrollmentTokenDAL = gatewayEnrollmentTokenDALFactory(db); const approvalPolicyDAL = approvalPolicyDALFactory(db); @@ -1429,6 +1431,7 @@ export const registerRoutes = async ( relayService, orgGatewayConfigV2DAL, gatewayV2DAL, + gatewayEnrollmentTokenDAL, relayDAL, permissionService, orgDAL, diff --git a/backend/src/services/auth/auth-type.ts b/backend/src/services/auth/auth-type.ts index 280433ffa41..a3e46f29323 100644 --- a/backend/src/services/auth/auth-type.ts +++ b/backend/src/services/auth/auth-type.ts @@ -22,7 +22,8 @@ export enum AuthTokenType { SERVICE_ACCESS_TOKEN = "serviceAccessToken", SERVICE_REFRESH_TOKEN = "serviceRefreshToken", IDENTITY_ACCESS_TOKEN = "identityAccessToken", - SCIM_TOKEN = "scimToken" + SCIM_TOKEN = "scimToken", + GATEWAY_ACCESS_TOKEN = "gatewayAccessToken" } export enum AuthMode { @@ -31,7 +32,8 @@ export enum AuthMode { API_KEY = "apiKey", IDENTITY_ACCESS_TOKEN = "identityAccessToken", SCIM_TOKEN = "scimToken", - MCP_JWT = "mcpJwt" + MCP_JWT = "mcpJwt", + GATEWAY_ACCESS_TOKEN = "gatewayAccessToken" } export enum ActorType { // would extend to AWS, Azure, ... @@ -45,9 +47,16 @@ export enum ActorType { // would extend to AWS, Azure, ... ACME_ACCOUNT = "acmeAccount", EST_ACCOUNT = "estAccount", SCEP_ACCOUNT = "scepAccount", - UNKNOWN_USER = "unknownUser" + UNKNOWN_USER = "unknownUser", + GATEWAY = "gateway" } +export type TGatewayAccessTokenJwtPayload = { + authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN; + gatewayId: string; + orgId: string; +}; + // This will be null unless the token-type is JWT export type ActorAuthMethod = AuthMethod | null; diff --git a/backend/src/services/telemetry/telemetry-types.ts b/backend/src/services/telemetry/telemetry-types.ts index 9a72395185b..5e0b3547a9f 100644 --- a/backend/src/services/telemetry/telemetry-types.ts +++ b/backend/src/services/telemetry/telemetry-types.ts @@ -3,6 +3,7 @@ import { AcmeAccountActor, AcmeProfileActor, EstAccountActor, + GatewayActor, IdentityActor, KmipClientActor, PlatformActor, @@ -132,7 +133,8 @@ export type TSecretModifiedEvent = { | AcmeProfileActor | KmipClientActor | EstAccountActor - | ScepAccountActor; + | ScepAccountActor + | GatewayActor; }; }; diff --git a/frontend/src/hooks/api/gateways-v2/mutations.tsx b/frontend/src/hooks/api/gateways-v2/mutations.tsx index 574f15c7377..47674722cad 100644 --- a/frontend/src/hooks/api/gateways-v2/mutations.tsx +++ b/frontend/src/hooks/api/gateways-v2/mutations.tsx @@ -3,6 +3,9 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { apiRequest } from "@app/config/request"; import { gatewaysQueryKeys } from "../gateways/queries"; +import { TCreateGatewayEnrollmentTokenResponse } from "./types"; + +export const gatewayEnrollmentTokenQueryKey = () => ["gateway-enrollment-tokens"]; export const useDeleteGatewayV2ById = () => { const queryClient = useQueryClient(); @@ -27,3 +30,31 @@ export const useTriggerGatewayV2Heartbeat = () => { } }); }; + +export const useCreateGatewayEnrollmentToken = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ name, ttlSeconds }: { name: string; ttlSeconds?: number }) => { + const { data } = await apiRequest.post( + "/api/v2/gateways/enrollment-tokens", + { name, ttlSeconds } + ); + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries(gatewaysQueryKeys.list()); + } + }); +}; + +export const useDeleteGatewayEnrollmentToken = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async (tokenId: string) => { + await apiRequest.delete(`/api/v2/gateways/enrollment-tokens/${tokenId}`); + }, + onSuccess: () => { + queryClient.invalidateQueries(gatewaysQueryKeys.list()); + } + }); +}; diff --git a/frontend/src/hooks/api/gateways-v2/types.ts b/frontend/src/hooks/api/gateways-v2/types.ts index 33d13345aaf..e69ae6a4624 100644 --- a/frontend/src/hooks/api/gateways-v2/types.ts +++ b/frontend/src/hooks/api/gateways-v2/types.ts @@ -5,17 +5,30 @@ export enum GatewayHealthCheckStatus { export type TGatewayV2 = { id: string; - identityId: string; + identityId: string | null; name: string; createdAt: string; updatedAt: string; - heartbeat: string; + heartbeat: string | null; lastHealthCheckStatus: GatewayHealthCheckStatus | null; connectedResourcesCount: number; identity: { name: string; id: string; - }; + } | null; +}; + +export type TGatewayEnrollmentToken = { + id: string; + name: string; + ttl: number; + expiresAt: string; + usedAt: string | null; + createdAt: string; +}; + +export type TCreateGatewayEnrollmentTokenResponse = TGatewayEnrollmentToken & { + token: string; }; export type TGatewayConnectedAppConnection = { diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index ef4dafb75b7..9c19ba6c754 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -2,7 +2,7 @@ import { queryOptions } from "@tanstack/react-query"; import { apiRequest } from "@app/config/request"; -import { TGatewayV2 } from "../gateways-v2/types"; +import { TGatewayEnrollmentToken, TGatewayV2 } from "../gateways-v2/types"; import { TGateway } from "./types"; export const gatewaysQueryKeys = { @@ -12,19 +12,39 @@ export const gatewaysQueryKeys = { queryOptions({ queryKey: gatewaysQueryKeys.listKey(), queryFn: async () => { - const [{ data }, { data: dataV2 }] = await Promise.all([ + const [{ data }, { data: dataV2 }, { data: enrollmentTokens }] = await Promise.all([ apiRequest.get<{ gateways: TGateway[] }>("/api/v1/gateways"), - apiRequest.get("/api/v2/gateways") + apiRequest.get("/api/v2/gateways"), + apiRequest.get("/api/v2/gateways/enrollment-tokens") ]); + // Build a set of names that already have a real gateway (enrolled + registered) + const enrolledNames = new Set(dataV2.map((g) => g.name)); + + // Pending tokens: unused, not expired, and not already enrolled as a gateway + const now = new Date(); + const pendingTokens = enrollmentTokens.filter( + (t) => !t.usedAt && new Date(t.expiresAt) > now && !enrolledNames.has(t.name) + ); + return [ ...data.gateways.map((g) => ({ ...g, - isV1: true + isV1: true as const, + isPending: false as const })), ...dataV2.map((g) => ({ ...g, - isV1: false + isV1: false as const, + isPending: false as const + })), + ...pendingTokens.map((t) => ({ + id: t.id, + name: t.name, + createdAt: t.createdAt, + expiresAt: t.expiresAt, + isV1: false as const, + isPending: true as const })) ]; } diff --git a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx index e63dc7e328f..44acddee8b8 100644 --- a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx @@ -64,13 +64,14 @@ export const NetworkHealthBanner = () => { const unreachableGateways = useMemo( () => gateways?.filter((g) => { + if (g.isPending) return false; if ( "lastHealthCheckStatus" in g && g.lastHealthCheckStatus === GatewayHealthCheckStatus.Failed ) { return true; } - return isHeartbeatStale(g.heartbeat); + return "heartbeat" in g && isHeartbeatStale(g.heartbeat); }).length ?? 0, [gateways] ); diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 7c1a5e5d597..f514841615e 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; import { + faClock, faCopy, faDoorClosed, faEdit, @@ -46,7 +47,11 @@ import { import { withPermission } from "@app/hoc"; import { usePopUp } from "@app/hooks"; import { gatewaysQueryKeys, useDeleteGatewayById } from "@app/hooks/api/gateways"; -import { useDeleteGatewayV2ById, useTriggerGatewayV2Heartbeat } from "@app/hooks/api/gateways-v2"; +import { + useDeleteGatewayEnrollmentToken, + useDeleteGatewayV2ById, + useTriggerGatewayV2Heartbeat +} from "@app/hooks/api/gateways-v2"; import { GatewayHealthCheckStatus } from "@app/hooks/api/gateways-v2/types"; import { EditGatewayDetailsModal } from "./components/EditGatewayDetailsModal"; @@ -55,11 +60,32 @@ import { GatewayDeployModal } from "./components/GatewayDeployModal"; const GatewayHealthStatus = ({ heartbeat, - lastHealthCheckStatus + lastHealthCheckStatus, + isPending }: { - heartbeat?: string; + heartbeat?: string | null; lastHealthCheckStatus?: GatewayHealthCheckStatus | null; + isPending?: boolean; }) => { + if (isPending) { + return ( + + + + Pending + + + ); + } + + if (!heartbeat && !lastHealthCheckStatus) { + return ( + + Unregistered + + ); + } + const heartbeatDate = heartbeat ? new Date(heartbeat) : null; const isHealthy = lastHealthCheckStatus === GatewayHealthCheckStatus.Healthy; @@ -123,6 +149,7 @@ export const GatewayTab = withPermission( const deleteGatewayById = useDeleteGatewayById(); const deleteGatewayV2ById = useDeleteGatewayV2ById(); + const deleteEnrollmentToken = useDeleteGatewayEnrollmentToken(); const triggerGatewayV2Heartbeat = useTriggerGatewayV2Heartbeat(); const handleTriggerHealthCheck = async (id: string) => { @@ -141,8 +168,14 @@ export const GatewayTab = withPermission( }; const handleDeleteGateway = async () => { - const data = popUp.deleteGateway.data as { id: string; isV1: boolean }; - if (data.isV1) { + const data = popUp.deleteGateway.data as { + id: string; + isV1: boolean; + isPending: boolean; + }; + if (data.isPending) { + await deleteEnrollmentToken.mutateAsync(data.id); + } else if (data.isV1) { await deleteGatewayById.mutateAsync(data.id); } else { await deleteGatewayV2ById.mutateAsync(data.id); @@ -151,7 +184,9 @@ export const GatewayTab = withPermission( handlePopUpToggle("deleteGateway"); createNotification({ type: "success", - text: "Successfully deleted gateway" + text: data.isPending + ? "Successfully deleted enrollment token" + : "Successfully deleted gateway" }); }; @@ -216,29 +251,40 @@ export const GatewayTab = withPermission(
{el.name} - - Gateway v{el.isV1 ? "1" : "2"} - + {el.isPending ? ( + + Pending + + ) : ( + + Gateway v{el.isV1 ? "1" : "2"} + + )}
- { - setSelectedGateway({ id: el.id, name: el.name }); - handlePopUpOpen("connectedResources"); - }} - /> + {el.isPending ? ( + + ) : ( + { + setSelectedGateway({ id: el.id, name: el.name }); + handlePopUpOpen("connectedResources"); + }} + /> + )} @@ -261,7 +307,7 @@ export const GatewayTab = withPermission( > Copy ID - {!el.isV1 && ( + {!el.isV1 && !el.isPending && ( } onClick={() => handleTriggerHealthCheck(el.id)} @@ -296,7 +342,7 @@ export const GatewayTab = withPermission( className="text-red" onClick={() => handlePopUpOpen("deleteGateway", el)} > - Delete Gateway + {el.isPending ? "Delete Token" : "Delete Gateway"} )} @@ -331,9 +377,11 @@ export const GatewayTab = withPermission( )} handlePopUpToggle("deleteGateway", isOpen)} deleteKey="confirm" onDeleteApproved={() => handleDeleteGateway()} diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx index 4a654dc9d35..016a46da908 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from "react"; import { SingleValue } from "react-select"; -import { faCopy, faQuestionCircle, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; +import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; import { z } from "zod"; @@ -8,188 +8,88 @@ import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, - Checkbox, FilterableSelect, FormLabel, IconButton, Input, - ModalClose, - Tooltip + ModalClose } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; -import { - OrgPermissionIdentityActions, - OrgPermissionSubjects, - useOrganization, - useOrgPermission -} from "@app/context"; -import { - useAddIdentityTokenAuth, - useCreateTokenIdentityTokenAuth, - useGetIdentityMembershipOrgs, - useGetIdentityTokenAuth, - useGetRelays -} from "@app/hooks/api"; -import { safeJWTSchema, slugSchema } from "@app/lib/schemas"; +import { useCreateGatewayEnrollmentToken } from "@app/hooks/api/gateways-v2"; +import { useGetRelays } from "@app/hooks/api/relays/queries"; +import { slugSchema } from "@app/lib/schemas"; import { RelayOption } from "./RelayOption"; -const baseFormSchema = z.object({ +const formSchema = z.object({ name: slugSchema({ field: "name" }), relay: z - .object( - { - id: z.string(), - name: z.string() - }, - { required_error: "Relay is required" } - ) + .object({ id: z.string(), name: z.string() }, { required_error: "Relay is required" }) .nullable() .refine((val) => val !== null, { message: "Relay is required" }) }); -const formSchemaWithIdentity = baseFormSchema.extend({ - identity: z - .object( - { - id: z.string(), - name: z.string() - }, - { required_error: "Machine identity is required" } - ) - .nullable() - .refine((val) => val !== null, { message: "Machine identity is required" }) -}); - -const formSchemaWithToken = baseFormSchema.extend({ - identityToken: safeJWTSchema -}); - export const GatewayCliDeploymentMethod = () => { const { protocol, hostname, port } = window.location; const portSuffix = port && port !== "80" ? `:${port}` : ""; const siteURL = `${protocol}//${hostname}${portSuffix}`; - const navigate = useNavigate({ - from: ROUTE_PATHS.Organization.NetworkingPage.path - }); + const navigate = useNavigate({ from: ROUTE_PATHS.Organization.NetworkingPage.path }); - const [autogenerateToken, setAutogenerateToken] = useState(true); const [step, setStep] = useState<"form" | "command">("form"); const [name, setName] = useState(""); - const [relay, setRelay] = useState({ id: "_auto", name: "Auto Select Relay" }); - const [identity, setIdentity] = useState(null); - const [identityToken, setIdentityToken] = useState(""); + const [relay, setRelay] = useState({ + id: "_auto", + name: "Auto Select Relay" + }); + const [enrollmentToken, setEnrollmentToken] = useState(""); + const [resolvedRelayName, setResolvedRelayName] = useState(""); const [formErrors, setFormErrors] = useState([]); const errors = useMemo(() => { const errorMap: Record = {}; formErrors.forEach((issue) => { - if (issue.path.length > 0) { - errorMap[String(issue.path[0])] = issue.message; - } + if (issue.path.length > 0) errorMap[String(issue.path[0])] = issue.message; }); return errorMap; }, [formErrors]); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); + const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = + useCreateGatewayEnrollmentToken(); - const { currentOrg } = useOrganization(); - const organizationId = currentOrg?.id || ""; - - const { permission } = useOrgPermission(); - const canCreateToken = permission.can( - OrgPermissionIdentityActions.CreateToken, - OrgPermissionSubjects.Identity - ); - - const { data: identityMembershipOrgsData, isPending: isIdentitiesLoading } = - useGetIdentityMembershipOrgs({ - organizationId, - limit: 20000 - }); - const identityMembershipOrgs = identityMembershipOrgsData?.identityMemberships || []; - - const { mutateAsync: createToken, isPending: isCreatingToken } = - useCreateTokenIdentityTokenAuth(); - const { mutateAsync: addIdentityTokenAuth, isPending: isAddingTokenAuth } = - useAddIdentityTokenAuth(); - const { refetch } = useGetIdentityTokenAuth(identity?.id ?? ""); - - const handleGenerateCommand = async () => { + const handleContinue = async () => { setFormErrors([]); + const validation = formSchema.safeParse({ name, relay }); + if (!validation.success) { + setFormErrors(validation.error.issues); + return; + } - if (canCreateToken && autogenerateToken) { - const validation = formSchemaWithIdentity.safeParse({ - name, - relay, - identity - }); - if (!validation.success) { - setFormErrors(validation.error.issues); - return; - } - - const validatedIdentity = validation.data.identity; - - try { - const { data: identityTokenAuth } = await refetch(); - if (!identityTokenAuth) { - await addIdentityTokenAuth({ - identityId: validatedIdentity.id, - organizationId, - accessTokenTTL: 2592000, - accessTokenMaxTTL: 2592000, - accessTokenNumUsesLimit: 0, - accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }] - }); - createNotification({ - text: "Token authentication has been automatically enabled for the selected identity. By default, it is configured to allow all IP addresses with a default token TTL of 30 days. You can manage these settings in Access Control.", - type: "warning" - }); - } + try { + const result = await createEnrollmentToken({ name }); + setEnrollmentToken(result.token); - const token = await createToken({ - identityId: validatedIdentity.id, - name: `gateway token for ${name} (autogenerated)` - }); - setIdentityToken(token.accessToken); - createNotification({ - text: "Automatically generated a token for the selected identity.", - type: "info" - }); - setStep("command"); - } catch { - setIdentityToken(""); - } - } else { - const validation = formSchemaWithToken.safeParse({ - name, - relay, - identityToken - }); - if (!validation.success) { - setFormErrors(validation.error.issues); - return; - } + const relayName = relay?.id === "_auto" ? "" : relay?.name ?? ""; + setResolvedRelayName(relayName); setStep("command"); + } catch { + createNotification({ type: "error", text: "Failed to create enrollment token" }); } }; const command = useMemo(() => { - const relayPart = relay?.id !== "_auto" ? ` --target-relay-name=${relay?.name || ""}` : ""; - return `sudo infisical gateway start --name=${name}${relayPart} --domain=${siteURL} --token=${identityToken}`; - }, [name, relay, identityToken, siteURL]); + const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; + return `infisical gateway start --enroll-method=static --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; + }, [enrollmentToken, resolvedRelayName, siteURL]); if (step === "command") { return ( <> +

+ Run the following command on the machine where you want to deploy the gateway. The token + expires in 1 hour and can only be used once. +

@@ -199,10 +99,7 @@ export const GatewayCliDeploymentMethod = () => { colorSchema="secondary" onClick={() => { navigator.clipboard.writeText(command); - createNotification({ - text: "Command copied to clipboard", - type: "info" - }); + createNotification({ text: "Command copied to clipboard", type: "info" }); }} className="w-10" > @@ -250,19 +147,12 @@ export const GatewayCliDeploymentMethod = () => { }); return; } - setRelay(newValue as SingleValue<{ id: string; name: string }>); }} isLoading={isRelaysLoading} options={[ - { - id: "_auto", - name: "Auto Select Relay" - }, - { - id: "_create", - name: "Deploy New Relay" - }, + { id: "_auto", name: "Auto Select Relay" }, + { id: "_create", name: "Deploy New Relay" }, ...(relays || []) ]} placeholder="Select relay..." @@ -272,87 +162,13 @@ export const GatewayCliDeploymentMethod = () => { /> {errors.relay &&

{errors.relay}

} - {canCreateToken && autogenerateToken ? ( - <> - - - setIdentity( - e as SingleValue<{ - id: string; - name: string; - }> - ) - } - isLoading={isIdentitiesLoading} - placeholder="Select machine identity..." - options={identityMembershipOrgs.map((membership) => membership.identity)} - getOptionValue={(option) => option.id} - getOptionLabel={(option) => option.name} - /> - {errors.identity &&

{errors.identity}

} - - ) : ( - <> - - setIdentityToken(e.target.value)} - placeholder="Enter machine identity token..." - isError={Boolean(errors.identityToken)} - /> - {errors.identityToken &&

{errors.identityToken}

} - - )} - - {canCreateToken && ( -
- { - setAutogenerateToken(Boolean(e)); - }} - id="autogenerate-token" - className="mr-2" - > -
- Automatically enable token auth and generate a token for machine identity - - Token authentication will be automatically enabled for the selected machine - identity if it isn't already configured. By default, it will be configured - to allow all IP addresses with a token TTL of 30 days. You can manage these - settings in Access Control. -
-
A token will automatically be generated to be used with the CLI command. - - } - > - -
-
-
-
- )} -
diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx index 3b0c458f96c..0125bde58fb 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx @@ -1,6 +1,6 @@ import { useMemo, useState } from "react"; import { SingleValue } from "react-select"; -import { faCopy, faQuestionCircle, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; +import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; import { z } from "zod"; @@ -8,190 +8,90 @@ import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, - Checkbox, FilterableSelect, FormLabel, IconButton, Input, - ModalClose, - Tooltip + ModalClose } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; -import { - OrgPermissionIdentityActions, - OrgPermissionSubjects, - useOrganization, - useOrgPermission -} from "@app/context"; -import { - useAddIdentityTokenAuth, - useCreateTokenIdentityTokenAuth, - useGetIdentityMembershipOrgs, - useGetIdentityTokenAuth, - useGetRelays -} from "@app/hooks/api"; -import { safeJWTSchema, slugSchema } from "@app/lib/schemas"; +import { useCreateGatewayEnrollmentToken } from "@app/hooks/api/gateways-v2"; +import { useGetRelays } from "@app/hooks/api/relays/queries"; +import { slugSchema } from "@app/lib/schemas"; import { RelayOption } from "./RelayOption"; -const baseFormSchema = z.object({ +const formSchema = z.object({ name: slugSchema({ field: "name" }), relay: z - .object( - { - id: z.string(), - name: z.string() - }, - { required_error: "Relay is required" } - ) + .object({ id: z.string(), name: z.string() }, { required_error: "Relay is required" }) .nullable() .refine((val) => val !== null, { message: "Relay is required" }) }); -const formSchemaWithIdentity = baseFormSchema.extend({ - identity: z - .object( - { - id: z.string(), - name: z.string() - }, - { required_error: "Machine identity is required" } - ) - .nullable() - .refine((val) => val !== null, { message: "Machine identity is required" }) -}); - -const formSchemaWithToken = baseFormSchema.extend({ - identityToken: safeJWTSchema -}); - export const GatewayCliSystemdDeploymentMethod = () => { const { protocol, hostname, port } = window.location; const portSuffix = port && port !== "80" ? `:${port}` : ""; const siteURL = `${protocol}//${hostname}${portSuffix}`; - const navigate = useNavigate({ - from: ROUTE_PATHS.Organization.NetworkingPage.path - }); + const navigate = useNavigate({ from: ROUTE_PATHS.Organization.NetworkingPage.path }); - const [autogenerateToken, setAutogenerateToken] = useState(true); const [step, setStep] = useState<"form" | "command">("form"); const [name, setName] = useState(""); - const [relay, setRelay] = useState({ id: "_auto", name: "Auto Select Relay" }); - const [identity, setIdentity] = useState(null); - const [identityToken, setIdentityToken] = useState(""); + const [relay, setRelay] = useState({ + id: "_auto", + name: "Auto Select Relay" + }); + const [enrollmentToken, setEnrollmentToken] = useState(""); + const [resolvedRelayName, setResolvedRelayName] = useState(""); const [formErrors, setFormErrors] = useState([]); const errors = useMemo(() => { const errorMap: Record = {}; formErrors.forEach((issue) => { - if (issue.path.length > 0) { - errorMap[String(issue.path[0])] = issue.message; - } + if (issue.path.length > 0) errorMap[String(issue.path[0])] = issue.message; }); return errorMap; }, [formErrors]); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); + const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = + useCreateGatewayEnrollmentToken(); - const { currentOrg } = useOrganization(); - const organizationId = currentOrg?.id || ""; - - const { permission } = useOrgPermission(); - const canCreateToken = permission.can( - OrgPermissionIdentityActions.CreateToken, - OrgPermissionSubjects.Identity - ); - - const { data: identityMembershipOrgsData, isPending: isIdentitiesLoading } = - useGetIdentityMembershipOrgs({ - organizationId, - limit: 20000 - }); - const identityMembershipOrgs = identityMembershipOrgsData?.identityMemberships || []; - - const { mutateAsync: createToken, isPending: isCreatingToken } = - useCreateTokenIdentityTokenAuth(); - const { mutateAsync: addIdentityTokenAuth, isPending: isAddingTokenAuth } = - useAddIdentityTokenAuth(); - const { refetch } = useGetIdentityTokenAuth(identity?.id ?? ""); - - const handleGenerateCommand = async () => { + const handleContinue = async () => { setFormErrors([]); + const validation = formSchema.safeParse({ name, relay }); + if (!validation.success) { + setFormErrors(validation.error.issues); + return; + } - if (canCreateToken && autogenerateToken) { - const validation = formSchemaWithIdentity.safeParse({ - name, - relay, - identity - }); - if (!validation.success) { - setFormErrors(validation.error.issues); - return; - } - - const validatedIdentity = validation.data.identity; - - try { - const { data: identityTokenAuth } = await refetch(); - if (!identityTokenAuth) { - await addIdentityTokenAuth({ - identityId: validatedIdentity.id, - organizationId, - accessTokenTTL: 2592000, - accessTokenMaxTTL: 2592000, - accessTokenNumUsesLimit: 0, - accessTokenTrustedIps: [{ ipAddress: "0.0.0.0/0" }, { ipAddress: "::/0" }] - }); - createNotification({ - text: "Token authentication has been automatically enabled for the selected identity. By default, it is configured to allow all IP addresses with a default token TTL of 30 days. You can manage these settings in Access Control.", - type: "warning" - }); - } + try { + const result = await createEnrollmentToken({ name }); + setEnrollmentToken(result.token); - const token = await createToken({ - identityId: validatedIdentity.id, - name: `gateway token for ${name} (autogenerated)` - }); - setIdentityToken(token.accessToken); - createNotification({ - text: "Automatically generated a token for the selected identity.", - type: "info" - }); - setStep("command"); - } catch { - setIdentityToken(""); - } - } else { - const validation = formSchemaWithToken.safeParse({ - name, - relay, - identityToken - }); - if (!validation.success) { - setFormErrors(validation.error.issues); - return; - } + const relayName = relay?.id === "_auto" ? "" : relay?.name ?? ""; + setResolvedRelayName(relayName); setStep("command"); + } catch { + createNotification({ type: "error", text: "Failed to create enrollment token" }); } }; const installCommand = useMemo(() => { - const relayPart = relay?.id !== "_auto" ? ` --target-relay-name=${relay?.name || ""}` : ""; - return `sudo infisical gateway systemd install --name=${name}${relayPart} --domain=${siteURL} --token=${identityToken}`; - }, [name, relay, identityToken, siteURL]); + const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; + return `sudo infisical gateway systemd install --enroll-method=static --token=${enrollmentToken} --name=${name}${relayPart} --domain=${siteURL}`; + }, [enrollmentToken, name, resolvedRelayName, siteURL]); const startServiceCommand = "sudo systemctl start infisical-gateway"; if (step === "command") { return ( <> +

+ Run the following commands on the machine where you want to deploy the gateway. The token + expires in 1 hour and can only be used once. +

@@ -201,10 +101,7 @@ export const GatewayCliSystemdDeploymentMethod = () => { colorSchema="secondary" onClick={() => { navigator.clipboard.writeText(installCommand); - createNotification({ - text: "Installation command copied to clipboard", - type: "info" - }); + createNotification({ text: "Installation command copied to clipboard", type: "info" }); }} className="w-10" > @@ -272,19 +169,12 @@ export const GatewayCliSystemdDeploymentMethod = () => { }); return; } - setRelay(newValue as SingleValue<{ id: string; name: string }>); }} isLoading={isRelaysLoading} options={[ - { - id: "_auto", - name: "Auto Select Relay" - }, - { - id: "_create", - name: "Deploy New Relay" - }, + { id: "_auto", name: "Auto Select Relay" }, + { id: "_create", name: "Deploy New Relay" }, ...(relays || []) ]} placeholder="Select relay..." @@ -294,87 +184,13 @@ export const GatewayCliSystemdDeploymentMethod = () => { /> {errors.relay &&

{errors.relay}

} - {canCreateToken && autogenerateToken ? ( - <> - - - setIdentity( - e as SingleValue<{ - id: string; - name: string; - }> - ) - } - isLoading={isIdentitiesLoading} - placeholder="Select machine identity..." - options={identityMembershipOrgs.map((membership) => membership.identity)} - getOptionValue={(option) => option.id} - getOptionLabel={(option) => option.name} - /> - {errors.identity &&

{errors.identity}

} - - ) : ( - <> - - setIdentityToken(e.target.value)} - placeholder="Enter machine identity token..." - isError={Boolean(errors.identityToken)} - /> - {errors.identityToken &&

{errors.identityToken}

} - - )} - - {canCreateToken && ( -
- { - setAutogenerateToken(Boolean(e)); - }} - id="autogenerate-token" - className="mr-2" - > -
- Automatically enable token auth and generate a token for machine identity - - Token authentication will be automatically enabled for the selected machine - identity if it isn't already configured. By default, it will be configured - to allow all IP addresses with a token TTL of 30 days. You can manage these - settings in Access Control. -
-
A token will automatically be generated to be used with the CLI command. - - } - > - -
-
-
-
- )} -
From 80f626e993c8b5fdddd5ea62e66fdce421a357fc Mon Sep 17 00:00:00 2001 From: bernie-g Date: Mon, 13 Apr 2026 18:08:55 -0400 Subject: [PATCH 074/562] feat: gateway re-enrollment with token version revocation Add re-enroll flow that lets admins create a new enrollment token for existing gateways, invalidating the old JWT via tokenVersion. Backend: - Add tokenVersion column to gateways_v2, gatewayId FK to enrollment tokens - Include tokenVersion in gateway JWT, verify on auth - Add POST /re-enroll endpoint handling both pending tokens and enrolled gateways - Bump tokenVersion and clear health status on re-enroll - enrollGateway reuses existing gateway record when tokenRecord.gatewayId is set - Add audit log events for enrollment token CRUD and re-enroll Frontend: - Add Re-enroll button in kebab menu (enrollment-based gateways only) - ReEnrollGatewayModal with confirmation step and CLI command output - Distinguish isTokenOnly vs isPending for correct delete/re-enroll behavior - Re-enrolled gateways show as Pending until CLI command is run --- ...0260413000001_gateway-enrollment-tokens.ts | 9 +- .../db/schemas/gateway-enrollment-tokens.ts | 3 +- backend/src/db/schemas/gateways-v2.ts | 1 + backend/src/ee/routes/v2/gateway-router.ts | 94 +++++++++++++- .../ee/services/audit-log/audit-log-types.ts | 47 ++++++- .../services/gateway-v2/gateway-v2-service.ts | 122 +++++++++++++++++- .../server/plugins/auth/inject-identity.ts | 11 +- backend/src/services/auth/auth-type.ts | 1 + .../src/hooks/api/gateways-v2/mutations.tsx | 16 +++ frontend/src/hooks/api/gateways-v2/types.ts | 1 + frontend/src/hooks/api/gateways/queries.tsx | 28 ++-- .../components/GatewayTab/GatewayTab.tsx | 64 +++++++-- .../components/ReEnrollGatewayModal.tsx | 120 +++++++++++++++++ 13 files changed, 480 insertions(+), 37 deletions(-) create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx diff --git a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts index 05b6f2b9623..bf06cf03852 100644 --- a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts +++ b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts @@ -4,9 +4,10 @@ import { TableName } from "../schemas"; import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; export async function up(knex: Knex): Promise { - // Make identityId nullable on gateways_v2 to support enrollment-token-based gateways + // Make identityId nullable and add tokenVersion to support enrollment-token-based gateways await knex.schema.alterTable(TableName.GatewayV2, (t) => { t.uuid("identityId").nullable().alter(); + t.integer("tokenVersion").notNullable().defaultTo(1); }); if (!(await knex.schema.hasTable(TableName.GatewayEnrollmentTokens))) { @@ -19,6 +20,9 @@ export async function up(knex: Knex): Promise { t.integer("ttl").notNullable().defaultTo(3600); t.timestamp("expiresAt").notNullable(); t.timestamp("usedAt").nullable(); + // When set, enrolling with this token updates the existing gateway instead of creating a new one + t.uuid("gatewayId").nullable(); + t.foreign("gatewayId").references("id").inTable(TableName.GatewayV2).onDelete("CASCADE"); t.timestamps(true, true, true); }); @@ -30,8 +34,9 @@ export async function down(knex: Knex): Promise { await dropOnUpdateTrigger(knex, TableName.GatewayEnrollmentTokens); await knex.schema.dropTableIfExists(TableName.GatewayEnrollmentTokens); - // Restore identityId to not-null (only safe if no null rows exist) + // Restore identityId to not-null and remove tokenVersion (only safe if no null rows exist) await knex.schema.alterTable(TableName.GatewayV2, (t) => { t.uuid("identityId").notNullable().alter(); + t.dropColumn("tokenVersion"); }); } diff --git a/backend/src/db/schemas/gateway-enrollment-tokens.ts b/backend/src/db/schemas/gateway-enrollment-tokens.ts index 80649a9875c..d88067ea2e9 100644 --- a/backend/src/db/schemas/gateway-enrollment-tokens.ts +++ b/backend/src/db/schemas/gateway-enrollment-tokens.ts @@ -16,7 +16,8 @@ export const GatewayEnrollmentTokensSchema = z.object({ tokenHash: z.string(), ttl: z.number().int(), expiresAt: z.date(), - usedAt: z.date().nullable().optional() + usedAt: z.date().nullable().optional(), + gatewayId: z.string().uuid().nullable().optional() }); export type TGatewayEnrollmentTokens = z.infer; diff --git a/backend/src/db/schemas/gateways-v2.ts b/backend/src/db/schemas/gateways-v2.ts index 1127bf3ccb2..a770be68d35 100644 --- a/backend/src/db/schemas/gateways-v2.ts +++ b/backend/src/db/schemas/gateways-v2.ts @@ -17,6 +17,7 @@ export const GatewaysV2Schema = z.object({ identityId: z.string().uuid().nullable().optional(), relayId: z.string().uuid().nullable().optional(), name: z.string(), + tokenVersion: z.number().default(1), heartbeat: z.date().nullable().optional(), encryptedPamSessionKey: zodBuffer.nullable().optional(), healthAlertedAt: z.date().nullable().optional(), diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index bd022d82515..09ef405f2ce 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -1,6 +1,7 @@ import z from "zod"; import { GatewayEnrollmentTokensSchema, GatewaysV2Schema } from "@app/db/schemas"; +import { EventType, UserAgentType } from "@app/ee/services/audit-log/audit-log-types"; import { zodBuffer } from "@app/lib/zod"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { slugSchema } from "@app/server/lib/schemas"; @@ -26,6 +27,7 @@ const SanitizedEnrollmentTokenSchema = GatewayEnrollmentTokensSchema.pick({ ttl: true, expiresAt: true, usedAt: true, + gatewayId: true, createdAt: true }); @@ -300,7 +302,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { }, onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), handler: async (req) => { - return server.services.gatewayV2.createEnrollmentToken({ + const result = await server.services.gatewayV2.createEnrollmentToken({ orgId: req.permission.orgId, actorId: req.permission.id, actorType: req.permission.type, @@ -308,6 +310,20 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { name: req.body.name, ttlSeconds: req.body.ttlSeconds }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE, + metadata: { + tokenId: result.id, + name: req.body.name + } + } + }); + + return result; } }); @@ -336,14 +352,66 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { }, onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), handler: async (req) => { - await server.services.gatewayV2.deleteEnrollmentToken({ + const { name } = await server.services.gatewayV2.deleteEnrollmentToken({ orgPermission: req.permission, tokenId: req.params.tokenId }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_ENROLLMENT_TOKEN_DELETE, + metadata: { + tokenId: req.params.tokenId, + name + } + } + }); + return { message: "Enrollment token deleted" }; } }); + server.route({ + method: "POST", + url: "/re-enroll", + config: { rateLimit: writeLimit }, + schema: { + operationId: "reEnrollGateway", + body: z.object({ + gatewayId: z.string().uuid().optional(), + tokenId: z.string().uuid().optional() + }), + response: { + 200: SanitizedEnrollmentTokenSchema.extend({ token: z.string() }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const result = await server.services.gatewayV2.reEnrollGateway({ + orgPermission: req.permission, + gatewayId: req.body.gatewayId, + tokenId: req.body.tokenId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_RE_ENROLL, + metadata: { + gatewayId: req.body.gatewayId, + tokenId: result.id, + name: result.name + } + } + }); + + return result; + } + }); + // Enrollment endpoint — no standard auth; enrollment token in body is the credential server.route({ method: "POST", @@ -374,10 +442,30 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { } }, handler: async (req) => { - return server.services.gatewayV2.enrollGateway({ + const result = await server.services.gatewayV2.enrollGateway({ token: req.body.token, relayName: req.body.relayName }); + + await server.services.auditLog.createAuditLog({ + orgId: result.orgId, + actor: { + type: ActorType.GATEWAY, + metadata: { gatewayId: result.gatewayId } + }, + event: { + type: EventType.GATEWAY_ENROLL, + metadata: { + gatewayId: result.gatewayId, + name: result.gatewayName + } + }, + ipAddress: req.ip, + userAgent: req.headers["user-agent"] ?? "", + userAgentType: UserAgentType.CLI + }); + + return result; } }); }; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index b57443a67c9..e2afd8adff5 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -732,7 +732,13 @@ export enum EventType { // Secret Validation Rules SECRET_VALIDATION_RULE_CREATE = "secret-validation-rule-create", SECRET_VALIDATION_RULE_UPDATE = "secret-validation-rule-update", - SECRET_VALIDATION_RULE_DELETE = "secret-validation-rule-delete" + SECRET_VALIDATION_RULE_DELETE = "secret-validation-rule-delete", + + // Gateway Enrollment Tokens + GATEWAY_ENROLLMENT_TOKEN_CREATE = "gateway-enrollment-token-create", + GATEWAY_ENROLLMENT_TOKEN_DELETE = "gateway-enrollment-token-delete", + GATEWAY_ENROLL = "gateway-enroll", + GATEWAY_RE_ENROLL = "gateway-re-enroll" } // Maps each actor type to the JSONB key that holds the actor's primary ID in actorMetadata. @@ -5776,6 +5782,39 @@ interface SecretValidationRuleDeleteEvent { }; } +interface GatewayEnrollmentTokenCreateEvent { + type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE; + metadata: { + tokenId: string; + name: string; + }; +} + +interface GatewayEnrollmentTokenDeleteEvent { + type: EventType.GATEWAY_ENROLLMENT_TOKEN_DELETE; + metadata: { + tokenId: string; + name: string; + }; +} + +interface GatewayEnrollEvent { + type: EventType.GATEWAY_ENROLL; + metadata: { + gatewayId: string; + name: string; + }; +} + +interface GatewayReEnrollEvent { + type: EventType.GATEWAY_RE_ENROLL; + metadata: { + gatewayId?: string; + tokenId?: string; + name: string; + }; +} + export type Event = | CreateSubOrganizationEvent | UpdateSubOrganizationEvent @@ -6297,4 +6336,8 @@ export type Event = | ScepRenewalEvent | SecretValidationRuleCreateEvent | SecretValidationRuleUpdateEvent - | SecretValidationRuleDeleteEvent; + | SecretValidationRuleDeleteEvent + | GatewayEnrollmentTokenCreateEvent + | GatewayEnrollmentTokenDeleteEvent + | GatewayEnrollEvent + | GatewayReEnrollEvent; diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 7c9a354ea29..2f1ba0ff48e 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1254,6 +1254,8 @@ export const gatewayV2ServiceFactory = ({ } await gatewayEnrollmentTokenDAL.deleteById(tokenId); + + return { name: token.name }; }; const enrollGateway = async ({ token, relayName }: { token: string; relayName?: string }) => { @@ -1295,11 +1297,23 @@ export const gatewayV2ServiceFactory = ({ const orgCAs = await $getOrgCAs(orgId); try { - const gateway = await gatewayV2DAL.create({ - orgId, - name, - relayId: relay.id - }); + let gateway; + if (tokenRecord.gatewayId) { + // Re-enrollment: reuse existing gateway record, update relay if changed + const existing = await gatewayV2DAL.findById(tokenRecord.gatewayId); + if (!existing) throw new NotFoundError({ message: `Gateway ${tokenRecord.gatewayId} not found` }); + if (relay.id !== existing.relayId) { + await gatewayV2DAL.updateById(existing.id, { relayId: relay.id }); + } + gateway = { ...existing, relayId: relay.id }; + } else { + // Fresh enrollment: create new gateway record + gateway = await gatewayV2DAL.create({ + orgId, + name, + relayId: relay.id + }); + } const alg = keyAlgorithmToAlgCfg(CertKeyAlgorithm.RSA_2048); const gatewayServerCaCert = new x509.X509Certificate(orgCAs.gatewayServerCaCertificate); @@ -1367,7 +1381,8 @@ export const gatewayV2ServiceFactory = ({ { gatewayId: gateway.id, orgId, - authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN + authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN, + tokenVersion: gateway.tokenVersion ?? 1 }, appCfg.AUTH_SECRET ); @@ -1375,6 +1390,8 @@ export const gatewayV2ServiceFactory = ({ return { accessToken, gatewayId: gateway.id, + gatewayName: gateway.name, + orgId, relayHost: relayCredentials.relayHost, pki: { serverCertificate: gatewayServerCertificate.toString("pem"), @@ -1395,6 +1412,96 @@ export const gatewayV2ServiceFactory = ({ } }; + const reEnrollGateway = async ({ + orgPermission, + gatewayId, + tokenId, + ttlSeconds = 3600 + }: { + orgPermission: OrgServiceActor; + gatewayId?: string; + tokenId?: string; + ttlSeconds?: number; + }) => { + const { permission } = await permissionService.getOrgPermission({ + actor: orgPermission.type, + actorId: orgPermission.id, + orgId: orgPermission.orgId, + actorAuthMethod: orgPermission.authMethod, + actorOrgId: orgPermission.orgId, + scope: OrganizationActionScope.Any + }); + + ForbiddenError.from(permission).throwUnlessCan( + OrgPermissionGatewayActions.EditGateways, + OrgPermissionSubjects.Gateway + ); + + if (gatewayId) { + // Re-enroll an existing (enrolled) gateway + const gateway = await gatewayV2DAL.findById(gatewayId); + if (!gateway || gateway.orgId !== orgPermission.orgId) { + throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); + } + + // Bump tokenVersion to invalidate the current JWT and clear health status + await gatewayV2DAL.updateById(gatewayId, { + $incr: { tokenVersion: 1 }, + heartbeat: null, + lastHealthCheckStatus: null + }); + + // Delete any existing unused enrollment tokens for this gateway + const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }); + const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); + if (unusedTokenIds.length > 0) { + await gatewayEnrollmentTokenDAL.delete({ $in: { id: unusedTokenIds } }); + } + + // Create a new enrollment token linked to the existing gateway + const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; + const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); + const expiresAt = new Date(Date.now() + ttlSeconds * 1000); + + const record = await gatewayEnrollmentTokenDAL.create({ + orgId: orgPermission.orgId, + name: gateway.name, + tokenHash, + ttl: ttlSeconds, + expiresAt, + gatewayId + }); + + return { ...record, token: plainToken }; + } + + if (tokenId) { + // Re-enroll a pending gateway (replace the enrollment token) + const oldToken = await gatewayEnrollmentTokenDAL.findOne({ id: tokenId, orgId: orgPermission.orgId }); + if (!oldToken) { + throw new NotFoundError({ message: `Enrollment token ${tokenId} not found` }); + } + + await gatewayEnrollmentTokenDAL.deleteById(tokenId); + + const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; + const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); + const expiresAt = new Date(Date.now() + ttlSeconds * 1000); + + const record = await gatewayEnrollmentTokenDAL.create({ + orgId: orgPermission.orgId, + name: oldToken.name, + tokenHash, + ttl: ttlSeconds, + expiresAt + }); + + return { ...record, token: plainToken }; + } + + throw new BadRequestError({ message: "Either gatewayId or tokenId must be provided" }); + }; + return { listGateways, registerGateway, @@ -1410,6 +1517,7 @@ export const gatewayV2ServiceFactory = ({ createEnrollmentToken, listEnrollmentTokens, deleteEnrollmentToken, - enrollGateway + enrollGateway, + reEnrollGateway }; }; diff --git a/backend/src/server/plugins/auth/inject-identity.ts b/backend/src/server/plugins/auth/inject-identity.ts index 0b911f8d1d7..41207aa932b 100644 --- a/backend/src/server/plugins/auth/inject-identity.ts +++ b/backend/src/server/plugins/auth/inject-identity.ts @@ -7,7 +7,7 @@ import { TServiceTokens, TUsers } from "@app/db/schemas"; import { TScimTokenJwtPayload } from "@app/ee/services/scim/scim-types"; import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto"; -import { BadRequestError } from "@app/lib/errors"; +import { BadRequestError, UnauthorizedError } from "@app/lib/errors"; import { ActorType, AuthMethod, @@ -336,8 +336,15 @@ export const injectIdentity = fp( break; } case AuthMode.GATEWAY_ACCESS_TOKEN: { - // Validate gateway exists — deletion is the revocation mechanism const gateway = await server.services.gatewayV2.getGatewayById({ gatewayId: token.gatewayId }); + + // Reject JWTs whose tokenVersion doesn't match the gateway's current version. + // Tokens issued before the tokenVersion field existed lack the claim, so treat undefined as version 1. + const jwtVersion = token.tokenVersion ?? 1; + if (gateway.tokenVersion !== undefined && gateway.tokenVersion !== jwtVersion) { + throw new UnauthorizedError({ message: "Gateway token has been revoked" }); + } + requestContext.set("orgId", token.orgId); req.auth = { diff --git a/backend/src/services/auth/auth-type.ts b/backend/src/services/auth/auth-type.ts index a3e46f29323..5a64a53052e 100644 --- a/backend/src/services/auth/auth-type.ts +++ b/backend/src/services/auth/auth-type.ts @@ -55,6 +55,7 @@ export type TGatewayAccessTokenJwtPayload = { authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN; gatewayId: string; orgId: string; + tokenVersion: number; }; // This will be null unless the token-type is JWT diff --git a/frontend/src/hooks/api/gateways-v2/mutations.tsx b/frontend/src/hooks/api/gateways-v2/mutations.tsx index 47674722cad..24214423fce 100644 --- a/frontend/src/hooks/api/gateways-v2/mutations.tsx +++ b/frontend/src/hooks/api/gateways-v2/mutations.tsx @@ -47,6 +47,22 @@ export const useCreateGatewayEnrollmentToken = () => { }); }; +export const useReEnrollGateway = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ gatewayId, tokenId }: { gatewayId?: string; tokenId?: string }) => { + const { data } = await apiRequest.post( + "/api/v2/gateways/re-enroll", + { gatewayId, tokenId } + ); + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries(gatewaysQueryKeys.list()); + } + }); +}; + export const useDeleteGatewayEnrollmentToken = () => { const queryClient = useQueryClient(); return useMutation({ diff --git a/frontend/src/hooks/api/gateways-v2/types.ts b/frontend/src/hooks/api/gateways-v2/types.ts index e69ae6a4624..10ce07795d9 100644 --- a/frontend/src/hooks/api/gateways-v2/types.ts +++ b/frontend/src/hooks/api/gateways-v2/types.ts @@ -24,6 +24,7 @@ export type TGatewayEnrollmentToken = { ttl: number; expiresAt: string; usedAt: string | null; + gatewayId: string | null; createdAt: string; }; diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index 9c19ba6c754..989a7e753c9 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -18,25 +18,34 @@ export const gatewaysQueryKeys = { apiRequest.get("/api/v2/gateways/enrollment-tokens") ]); - // Build a set of names that already have a real gateway (enrolled + registered) - const enrolledNames = new Set(dataV2.map((g) => g.name)); - - // Pending tokens: unused, not expired, and not already enrolled as a gateway const now = new Date(); - const pendingTokens = enrollmentTokens.filter( - (t) => !t.usedAt && new Date(t.expiresAt) > now && !enrolledNames.has(t.name) + const activeTokens = enrollmentTokens.filter( + (t) => !t.usedAt && new Date(t.expiresAt) > now + ); + + // Gateways that have a pending re-enrollment token + const reEnrollGatewayIds = new Set( + activeTokens.filter((t) => t.gatewayId).map((t) => t.gatewayId) + ); + + // Fresh pending tokens (no gateway record yet) + const enrolledNames = new Set(dataV2.map((g) => g.name)); + const pendingTokens = activeTokens.filter( + (t) => !t.gatewayId && !enrolledNames.has(t.name) ); return [ ...data.gateways.map((g) => ({ ...g, isV1: true as const, - isPending: false as const + isPending: false as const, + isTokenOnly: false as const })), ...dataV2.map((g) => ({ ...g, isV1: false as const, - isPending: false as const + isPending: reEnrollGatewayIds.has(g.id) as boolean, + isTokenOnly: false as const })), ...pendingTokens.map((t) => ({ id: t.id, @@ -44,7 +53,8 @@ export const gatewaysQueryKeys = { createdAt: t.createdAt, expiresAt: t.expiresAt, isV1: false as const, - isPending: true as const + isPending: true as const, + isTokenOnly: true as const })) ]; } diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index f514841615e..59c3e5c6faf 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -1,5 +1,6 @@ import { useState } from "react"; import { + faArrowsRotate, faClock, faCopy, faDoorClosed, @@ -57,6 +58,7 @@ import { GatewayHealthCheckStatus } from "@app/hooks/api/gateways-v2/types"; import { EditGatewayDetailsModal } from "./components/EditGatewayDetailsModal"; import { GatewayConnectedResourcesDrawer } from "./components/GatewayConnectedResourcesDrawer"; import { GatewayDeployModal } from "./components/GatewayDeployModal"; +import { ReEnrollGatewayModal } from "./components/ReEnrollGatewayModal"; const GatewayHealthStatus = ({ heartbeat, @@ -144,7 +146,8 @@ export const GatewayTab = withPermission( "deployGateway", "deleteGateway", "editDetails", - "connectedResources" + "connectedResources", + "reEnrollGateway" ] as const); const deleteGatewayById = useDeleteGatewayById(); @@ -172,8 +175,9 @@ export const GatewayTab = withPermission( id: string; isV1: boolean; isPending: boolean; + isTokenOnly: boolean; }; - if (data.isPending) { + if (data.isTokenOnly) { await deleteEnrollmentToken.mutateAsync(data.id); } else if (data.isV1) { await deleteGatewayById.mutateAsync(data.id); @@ -184,7 +188,7 @@ export const GatewayTab = withPermission( handlePopUpToggle("deleteGateway"); createNotification({ type: "success", - text: data.isPending + text: data.isTokenOnly ? "Successfully deleted enrollment token" : "Successfully deleted gateway" }); @@ -201,13 +205,21 @@ export const GatewayTab = withPermission(

Gateways

- + {(isAllowed: boolean) => ( + + )} +

@@ -331,6 +343,24 @@ export const GatewayTab = withPermission( )} )} + {!el.isV1 && + (el.isPending || + ("identityId" in el && !el.identityId)) && ( + + {(isAllowed: boolean) => ( + } + onClick={() => handlePopUpOpen("reEnrollGateway", el)} + > + Re-enroll + + )} + + )} handlePopUpOpen("deleteGateway", el)} > - {el.isPending ? "Delete Token" : "Delete Gateway"} + {el.isTokenOnly ? "Delete Token" : "Delete Gateway"} )} @@ -378,7 +408,7 @@ export const GatewayTab = withPermission( handlePopUpToggle("deployGateway", isOpen)} /> + handlePopUpToggle("reEnrollGateway", isOpen)} + gatewayData={ + popUp.reEnrollGateway.data as { + id: string; + name: string; + isPending: boolean; + isTokenOnly: boolean; + } | null + } + /> {selectedGateway && ( void; + gatewayData: { id: string; name: string; isPending: boolean; isTokenOnly: boolean } | null; +}; + +export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Props) => { + const { protocol, hostname, port } = window.location; + const portSuffix = port && port !== "80" ? `:${port}` : ""; + const siteURL = `${protocol}//${hostname}${portSuffix}`; + + const [step, setStep] = useState<"confirm" | "command">("confirm"); + const [enrollmentToken, setEnrollmentToken] = useState(""); + + const { mutateAsync: reEnroll, isPending: isReEnrolling } = useReEnrollGateway(); + + const handleReEnroll = async () => { + if (!gatewayData) return; + + try { + const result = await reEnroll( + gatewayData.isTokenOnly ? { tokenId: gatewayData.id } : { gatewayId: gatewayData.id } + ); + setEnrollmentToken(result.token); + setStep("command"); + } catch { + createNotification({ type: "error", text: "Failed to re-enroll gateway" }); + } + }; + + const command = useMemo(() => { + return `infisical gateway start --enroll-method=static --token=${enrollmentToken} --domain=${siteURL}`; + }, [enrollmentToken, siteURL]); + + const handleClose = (open: boolean) => { + if (!open) { + setStep("confirm"); + setEnrollmentToken(""); + } + onOpenChange(open); + }; + + if (!gatewayData) return null; + + return ( + + + {step === "confirm" && ( + <> +

+ + + + +
+ + )} + {step === "command" && ( + <> +

+ Run the following command on the machine where you want to deploy the gateway. The + token expires in 1 hour and can only be used once. +

+ +
+ + { + navigator.clipboard.writeText(command); + createNotification({ text: "Command copied to clipboard", type: "info" }); + }} + className="w-10" + > + + +
+
+ + + +
+ + )} + + + ); +}; From eef7a3057553fd8ba914196987d24680508b5b3c Mon Sep 17 00:00:00 2001 From: bernie-g Date: Mon, 13 Apr 2026 19:17:27 -0400 Subject: [PATCH 075/562] feat: positional gateway name, expired token UI, duplicate name checks CLI: - Gateway name is now a positional arg instead of --name flag - --name flag kept as deprecated alias for backwards compatibility - Name is required for both enrollment and identity flows Backend: - Reject creating enrollment tokens with duplicate names - Reject creating tokens when a gateway with that name exists - Remove ttlSeconds parameter, hardcode 1-hour TTL - Return expired unused tokens from list endpoint for UI display Frontend: - Show expired standalone tokens with red "Expired" badge and status - Client-side duplicate name check before creating tokens - Generated CLI commands use positional name arg - Use isTokenOnly instead of isPending for delete/re-enroll logic --- backend/src/ee/routes/v2/gateway-router.ts | 6 ++-- .../services/gateway-v2/gateway-v2-service.ts | 36 +++++++++++-------- .../src/hooks/api/gateways-v2/mutations.tsx | 4 +-- frontend/src/hooks/api/gateways/queries.tsx | 21 ++++++----- .../components/GatewayTab/GatewayTab.tsx | 21 +++++++++-- .../components/GatewayCliDeploymentMethod.tsx | 16 +++++++-- .../GatewayCliSystemdDeploymentMethod.tsx | 14 +++++++- .../components/ReEnrollGatewayModal.tsx | 5 +-- 8 files changed, 87 insertions(+), 36 deletions(-) diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index 09ef405f2ce..b701049b23e 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -293,8 +293,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { schema: { operationId: "createGatewayEnrollmentToken", body: z.object({ - name: slugSchema({ min: 1, max: 64, field: "name" }), - ttlSeconds: z.number().int().min(60).max(86400).default(3600).optional() + name: slugSchema({ min: 1, max: 64, field: "name" }) }), response: { 200: SanitizedEnrollmentTokenSchema.extend({ token: z.string() }) @@ -307,8 +306,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { actorId: req.permission.id, actorType: req.permission.type, actorAuthMethod: req.permission.authMethod, - name: req.body.name, - ttlSeconds: req.body.ttlSeconds + name: req.body.name }); await server.services.auditLog.createAuditLog({ diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 2f1ba0ff48e..cfffa8a5002 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1168,15 +1168,13 @@ export const gatewayV2ServiceFactory = ({ actorId, actorType, actorAuthMethod, - name, - ttlSeconds = 3600 + name }: { orgId: string; actorId: string; actorType: ActorType; actorAuthMethod: ActorAuthMethod; name: string; - ttlSeconds?: number; }) => { const { permission } = await permissionService.getOrgPermission({ actor: actorType, @@ -1192,15 +1190,26 @@ export const gatewayV2ServiceFactory = ({ OrgPermissionSubjects.Gateway ); + const existingGateway = await gatewayV2DAL.find({ orgId, name }); + if (existingGateway.length > 0) { + throw new BadRequestError({ message: `A gateway named "${name}" already exists` }); + } + + const existingTokens = await gatewayEnrollmentTokenDAL.find({ orgId, name }); + if (existingTokens.length > 0) { + throw new BadRequestError({ message: `An enrollment token named "${name}" already exists` }); + } + + const TTL_SECONDS = 3600; const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); - const expiresAt = new Date(Date.now() + ttlSeconds * 1000); + const expiresAt = new Date(Date.now() + TTL_SECONDS * 1000); const record = await gatewayEnrollmentTokenDAL.create({ orgId, name, tokenHash, - ttl: ttlSeconds, + ttl: TTL_SECONDS, expiresAt }); @@ -1222,9 +1231,8 @@ export const gatewayV2ServiceFactory = ({ OrgPermissionSubjects.Gateway ); - const now = new Date(); const tokens = await gatewayEnrollmentTokenDAL.find({ orgId: orgPermission.orgId }); - return tokens.filter((t) => t.expiresAt > now && !t.usedAt).map(({ tokenHash: _, ...rest }) => rest); + return tokens.filter((t) => !t.usedAt).map(({ tokenHash: _, ...rest }) => rest); }; const deleteEnrollmentToken = async ({ @@ -1415,13 +1423,11 @@ export const gatewayV2ServiceFactory = ({ const reEnrollGateway = async ({ orgPermission, gatewayId, - tokenId, - ttlSeconds = 3600 + tokenId }: { orgPermission: OrgServiceActor; gatewayId?: string; tokenId?: string; - ttlSeconds?: number; }) => { const { permission } = await permissionService.getOrgPermission({ actor: orgPermission.type, @@ -1459,15 +1465,16 @@ export const gatewayV2ServiceFactory = ({ } // Create a new enrollment token linked to the existing gateway + const TTL_SECONDS = 3600; const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); - const expiresAt = new Date(Date.now() + ttlSeconds * 1000); + const expiresAt = new Date(Date.now() + TTL_SECONDS * 1000); const record = await gatewayEnrollmentTokenDAL.create({ orgId: orgPermission.orgId, name: gateway.name, tokenHash, - ttl: ttlSeconds, + ttl: TTL_SECONDS, expiresAt, gatewayId }); @@ -1484,15 +1491,16 @@ export const gatewayV2ServiceFactory = ({ await gatewayEnrollmentTokenDAL.deleteById(tokenId); + const TTL_SECONDS = 3600; const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); - const expiresAt = new Date(Date.now() + ttlSeconds * 1000); + const expiresAt = new Date(Date.now() + TTL_SECONDS * 1000); const record = await gatewayEnrollmentTokenDAL.create({ orgId: orgPermission.orgId, name: oldToken.name, tokenHash, - ttl: ttlSeconds, + ttl: TTL_SECONDS, expiresAt }); diff --git a/frontend/src/hooks/api/gateways-v2/mutations.tsx b/frontend/src/hooks/api/gateways-v2/mutations.tsx index 24214423fce..e2a1160debb 100644 --- a/frontend/src/hooks/api/gateways-v2/mutations.tsx +++ b/frontend/src/hooks/api/gateways-v2/mutations.tsx @@ -34,10 +34,10 @@ export const useTriggerGatewayV2Heartbeat = () => { export const useCreateGatewayEnrollmentToken = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ name, ttlSeconds }: { name: string; ttlSeconds?: number }) => { + mutationFn: async ({ name }: { name: string }) => { const { data } = await apiRequest.post( "/api/v2/gateways/enrollment-tokens", - { name, ttlSeconds } + { name } ); return data; }, diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index 989a7e753c9..eb116f48013 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -19,18 +19,18 @@ export const gatewaysQueryKeys = { ]); const now = new Date(); - const activeTokens = enrollmentTokens.filter( - (t) => !t.usedAt && new Date(t.expiresAt) > now - ); + const unusedTokens = enrollmentTokens.filter((t) => !t.usedAt); - // Gateways that have a pending re-enrollment token + // Gateways that have a pending (non-expired) re-enrollment token const reEnrollGatewayIds = new Set( - activeTokens.filter((t) => t.gatewayId).map((t) => t.gatewayId) + unusedTokens + .filter((t) => t.gatewayId && new Date(t.expiresAt) > now) + .map((t) => t.gatewayId) ); - // Fresh pending tokens (no gateway record yet) + // Standalone tokens (no gateway record yet), both active and expired const enrolledNames = new Set(dataV2.map((g) => g.name)); - const pendingTokens = activeTokens.filter( + const standaloneTokens = unusedTokens.filter( (t) => !t.gatewayId && !enrolledNames.has(t.name) ); @@ -39,21 +39,24 @@ export const gatewaysQueryKeys = { ...g, isV1: true as const, isPending: false as const, + isExpired: false as const, isTokenOnly: false as const })), ...dataV2.map((g) => ({ ...g, isV1: false as const, isPending: reEnrollGatewayIds.has(g.id) as boolean, + isExpired: false as const, isTokenOnly: false as const })), - ...pendingTokens.map((t) => ({ + ...standaloneTokens.map((t) => ({ id: t.id, name: t.name, createdAt: t.createdAt, expiresAt: t.expiresAt, isV1: false as const, - isPending: true as const, + isPending: new Date(t.expiresAt) > now, + isExpired: new Date(t.expiresAt) <= now, isTokenOnly: true as const })) ]; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 59c3e5c6faf..1ec8eceaef9 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -63,12 +63,24 @@ import { ReEnrollGatewayModal } from "./components/ReEnrollGatewayModal"; const GatewayHealthStatus = ({ heartbeat, lastHealthCheckStatus, - isPending + isPending, + isExpired }: { heartbeat?: string | null; lastHealthCheckStatus?: GatewayHealthCheckStatus | null; isPending?: boolean; + isExpired?: boolean; }) => { + if (isExpired) { + return ( + + + Expired + + + ); + } + if (isPending) { return ( @@ -263,7 +275,11 @@ export const GatewayTab = withPermission(
{el.name} - {el.isPending ? ( + {"isExpired" in el && el.isExpired ? ( + + Expired + + ) : el.isPending ? ( Pending @@ -297,6 +313,7 @@ export const GatewayTab = withPermission( "lastHealthCheckStatus" in el ? el.lastHealthCheckStatus : null } isPending={el.isPending} + isExpired={"isExpired" in el ? el.isExpired : false} /> diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx index 016a46da908..22c7e913fa8 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx @@ -3,6 +3,7 @@ import { SingleValue } from "react-select"; import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; +import { useQuery } from "@tanstack/react-query"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -15,6 +16,7 @@ import { ModalClose } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; +import { gatewaysQueryKeys } from "@app/hooks/api/gateways"; import { useCreateGatewayEnrollmentToken } from "@app/hooks/api/gateways-v2"; import { useGetRelays } from "@app/hooks/api/relays/queries"; import { slugSchema } from "@app/lib/schemas"; @@ -54,6 +56,7 @@ export const GatewayCliDeploymentMethod = () => { return errorMap; }, [formErrors]); + const { data: gateways } = useQuery(gatewaysQueryKeys.list()); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = useCreateGatewayEnrollmentToken(); @@ -66,6 +69,15 @@ export const GatewayCliDeploymentMethod = () => { return; } + const existingNames = gateways?.map((g) => g.name) || []; + if (existingNames.includes(name.trim())) { + createNotification({ + type: "error", + text: "A gateway or enrollment token with this name already exists." + }); + return; + } + try { const result = await createEnrollmentToken({ name }); setEnrollmentToken(result.token); @@ -80,8 +92,8 @@ export const GatewayCliDeploymentMethod = () => { const command = useMemo(() => { const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; - return `infisical gateway start --enroll-method=static --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; - }, [enrollmentToken, resolvedRelayName, siteURL]); + return `infisical gateway start ${name} --enroll-method=static --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; + }, [name, enrollmentToken, resolvedRelayName, siteURL]); if (step === "command") { return ( diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx index 0125bde58fb..b601f7e84e8 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx @@ -3,6 +3,7 @@ import { SingleValue } from "react-select"; import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useNavigate } from "@tanstack/react-router"; +import { useQuery } from "@tanstack/react-query"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -15,6 +16,7 @@ import { ModalClose } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; +import { gatewaysQueryKeys } from "@app/hooks/api/gateways"; import { useCreateGatewayEnrollmentToken } from "@app/hooks/api/gateways-v2"; import { useGetRelays } from "@app/hooks/api/relays/queries"; import { slugSchema } from "@app/lib/schemas"; @@ -54,6 +56,7 @@ export const GatewayCliSystemdDeploymentMethod = () => { return errorMap; }, [formErrors]); + const { data: gateways } = useQuery(gatewaysQueryKeys.list()); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = useCreateGatewayEnrollmentToken(); @@ -66,6 +69,15 @@ export const GatewayCliSystemdDeploymentMethod = () => { return; } + const existingNames = gateways?.map((g) => g.name) || []; + if (existingNames.includes(name.trim())) { + createNotification({ + type: "error", + text: "A gateway or enrollment token with this name already exists." + }); + return; + } + try { const result = await createEnrollmentToken({ name }); setEnrollmentToken(result.token); @@ -80,7 +92,7 @@ export const GatewayCliSystemdDeploymentMethod = () => { const installCommand = useMemo(() => { const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; - return `sudo infisical gateway systemd install --enroll-method=static --token=${enrollmentToken} --name=${name}${relayPart} --domain=${siteURL}`; + return `sudo infisical gateway systemd install ${name} --enroll-method=static --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; }, [enrollmentToken, name, resolvedRelayName, siteURL]); const startServiceCommand = "sudo systemctl start infisical-gateway"; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index 85daa635ecb..59ab574cda9 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -37,8 +37,9 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop }; const command = useMemo(() => { - return `infisical gateway start --enroll-method=static --token=${enrollmentToken} --domain=${siteURL}`; - }, [enrollmentToken, siteURL]); + const gatewayName = gatewayData?.name ?? ""; + return `infisical gateway start ${gatewayName} --enroll-method=static --token=${enrollmentToken} --domain=${siteURL}`; + }, [gatewayData?.name, enrollmentToken, siteURL]); const handleClose = (open: boolean) => { if (!open) { From 17f4ff85f85c2429aaf6a53e5e74c26d72ed35f8 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Mon, 13 Apr 2026 19:26:01 -0400 Subject: [PATCH 076/562] chore: remove accidentally staged worktree --- .claude/worktrees/pam-ai-session-insights-v3 | 1 - 1 file changed, 1 deletion(-) delete mode 160000 .claude/worktrees/pam-ai-session-insights-v3 diff --git a/.claude/worktrees/pam-ai-session-insights-v3 b/.claude/worktrees/pam-ai-session-insights-v3 deleted file mode 160000 index 2faf2381201..00000000000 --- a/.claude/worktrees/pam-ai-session-insights-v3 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2faf23812015e52a74d92c243b6758ac54e72e83 From 32876a8fc007b46b4f0bac3b6385f5ee59f32599 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Mon, 13 Apr 2026 19:53:10 -0400 Subject: [PATCH 077/562] chore: regenerate DB schemas and rename Deploy to Create Gateway --- backend/src/db/schemas/gateway-enrollment-tokens.ts | 6 +++--- backend/src/db/schemas/gateways-v2.ts | 4 ++-- backend/src/db/schemas/index.ts | 2 +- .../NetworkingPage/components/GatewayTab/GatewayTab.tsx | 2 +- .../components/GatewayTab/components/GatewayDeployModal.tsx | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/backend/src/db/schemas/gateway-enrollment-tokens.ts b/backend/src/db/schemas/gateway-enrollment-tokens.ts index d88067ea2e9..032ef42ddc3 100644 --- a/backend/src/db/schemas/gateway-enrollment-tokens.ts +++ b/backend/src/db/schemas/gateway-enrollment-tokens.ts @@ -9,14 +9,14 @@ import { TImmutableDBKeys } from "./models"; export const GatewayEnrollmentTokensSchema = z.object({ id: z.string().uuid(), - createdAt: z.date(), - updatedAt: z.date(), orgId: z.string().uuid(), name: z.string(), tokenHash: z.string(), - ttl: z.number().int(), + ttl: z.number().default(3600), expiresAt: z.date(), usedAt: z.date().nullable().optional(), + createdAt: z.date(), + updatedAt: z.date(), gatewayId: z.string().uuid().nullable().optional() }); diff --git a/backend/src/db/schemas/gateways-v2.ts b/backend/src/db/schemas/gateways-v2.ts index a770be68d35..cd1d69fd138 100644 --- a/backend/src/db/schemas/gateways-v2.ts +++ b/backend/src/db/schemas/gateways-v2.ts @@ -17,11 +17,11 @@ export const GatewaysV2Schema = z.object({ identityId: z.string().uuid().nullable().optional(), relayId: z.string().uuid().nullable().optional(), name: z.string(), - tokenVersion: z.number().default(1), heartbeat: z.date().nullable().optional(), encryptedPamSessionKey: zodBuffer.nullable().optional(), healthAlertedAt: z.date().nullable().optional(), - lastHealthCheckStatus: z.string().nullable().optional() + lastHealthCheckStatus: z.string().nullable().optional(), + tokenVersion: z.number().default(1) }); export type TGatewaysV2 = z.infer; diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 15af09ffd02..0244527913e 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -51,9 +51,9 @@ export * from "./folder-commit-changes"; export * from "./folder-commits"; export * from "./folder-tree-checkpoint-resources"; export * from "./folder-tree-checkpoints"; +export * from "./gateway-enrollment-tokens"; export * from "./gateways"; export * from "./gateways-v2"; -export * from "./gateway-enrollment-tokens"; export * from "./git-app-install-sessions"; export * from "./git-app-org"; export * from "./github-org-sync-configs"; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 1ec8eceaef9..1684aee8c55 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -228,7 +228,7 @@ export const GatewayTab = withPermission( onClick={() => handlePopUpOpen("deployGateway")} isDisabled={!isAllowed} > - Deploy Gateway + Create Gateway )} diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx index dacd08e749e..2c6fa1f0c0d 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx @@ -36,7 +36,7 @@ export const GatewayDeployModal = ({ isOpen, onOpenChange }: Props) => { From d8db81cb4ac0f7926c55d75e2784797af72cf29b Mon Sep 17 00:00:00 2001 From: bernie-g Date: Mon, 13 Apr 2026 20:12:52 -0400 Subject: [PATCH 078/562] refactor: extract enrollment token helper, healthy relay auto-select, simplify token version check --- .../services/gateway-v2/gateway-v2-service.ts | 55 +++++++++++-------- .../server/plugins/auth/inject-identity.ts | 5 +- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index cfffa8a5002..f64ee10481a 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -86,6 +86,15 @@ export const gatewayV2ServiceFactory = ({ aiMcpServerDAL, pkiDiscoveryConfigDAL }: TGatewayV2ServiceFactoryDep) => { + const ENROLLMENT_TOKEN_TTL_SECONDS = 3600; + + const $generateEnrollmentToken = () => { + const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; + const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); + const expiresAt = new Date(Date.now() + ENROLLMENT_TOKEN_TTL_SECONDS * 1000); + return { plainToken, tokenHash, expiresAt }; + }; + const $validateIdentityAccessToGateway = async (orgId: string, actorId: string, actorAuthMethod: ActorAuthMethod) => { const { permission } = await permissionService.getOrgPermission({ scope: OrganizationActionScope.Any, @@ -1200,16 +1209,13 @@ export const gatewayV2ServiceFactory = ({ throw new BadRequestError({ message: `An enrollment token named "${name}" already exists` }); } - const TTL_SECONDS = 3600; - const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; - const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); - const expiresAt = new Date(Date.now() + TTL_SECONDS * 1000); + const { plainToken, tokenHash, expiresAt } = $generateEnrollmentToken(); const record = await gatewayEnrollmentTokenDAL.create({ orgId, name, tokenHash, - ttl: TTL_SECONDS, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, expiresAt }); @@ -1287,9 +1293,18 @@ export const gatewayV2ServiceFactory = ({ if (!relay) relay = await relayDAL.findOne({ name: relayName, orgId: null }); if (!relay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); } else { - // Auto-select: prefer an org-specific relay, fall back to a global one + // Auto-select: prefer a healthy org-specific relay, fall back to a healthy global one + const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000); + const isHealthy = (r: TRelays) => r.heartbeat && r.heartbeat > oneHourAgo; + const orgRelays = await relayDAL.find({ orgId }); - relay = orgRelays[0] ?? (await relayDAL.find({ orgId: null }))[0]; + relay = orgRelays.find(isHealthy) ?? orgRelays[0]; + + if (!relay) { + const globalRelays = await relayDAL.find({ orgId: null }); + relay = globalRelays.find(isHealthy) ?? globalRelays[0]; + } + if (!relay) throw new NotFoundError({ message: "No relay available for auto-selection" }); } @@ -1465,21 +1480,18 @@ export const gatewayV2ServiceFactory = ({ } // Create a new enrollment token linked to the existing gateway - const TTL_SECONDS = 3600; - const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; - const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); - const expiresAt = new Date(Date.now() + TTL_SECONDS * 1000); + const gatewayToken = $generateEnrollmentToken(); const record = await gatewayEnrollmentTokenDAL.create({ orgId: orgPermission.orgId, name: gateway.name, - tokenHash, - ttl: TTL_SECONDS, - expiresAt, + tokenHash: gatewayToken.tokenHash, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, + expiresAt: gatewayToken.expiresAt, gatewayId }); - return { ...record, token: plainToken }; + return { ...record, token: gatewayToken.plainToken }; } if (tokenId) { @@ -1491,20 +1503,17 @@ export const gatewayV2ServiceFactory = ({ await gatewayEnrollmentTokenDAL.deleteById(tokenId); - const TTL_SECONDS = 3600; - const plainToken = `gwe_${crypto.randomBytes(32).toString("base64url")}`; - const tokenHash = crypto.nativeCrypto.createHash("sha256").update(plainToken).digest("hex"); - const expiresAt = new Date(Date.now() + TTL_SECONDS * 1000); + const pendingToken = $generateEnrollmentToken(); const record = await gatewayEnrollmentTokenDAL.create({ orgId: orgPermission.orgId, name: oldToken.name, - tokenHash, - ttl: TTL_SECONDS, - expiresAt + tokenHash: pendingToken.tokenHash, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, + expiresAt: pendingToken.expiresAt }); - return { ...record, token: plainToken }; + return { ...record, token: pendingToken.plainToken }; } throw new BadRequestError({ message: "Either gatewayId or tokenId must be provided" }); diff --git a/backend/src/server/plugins/auth/inject-identity.ts b/backend/src/server/plugins/auth/inject-identity.ts index 5ca55da9973..d9926a8c208 100644 --- a/backend/src/server/plugins/auth/inject-identity.ts +++ b/backend/src/server/plugins/auth/inject-identity.ts @@ -339,10 +339,7 @@ export const injectIdentity = fp( case AuthMode.GATEWAY_ACCESS_TOKEN: { const gateway = await server.services.gatewayV2.getGatewayById({ gatewayId: token.gatewayId }); - // Reject JWTs whose tokenVersion doesn't match the gateway's current version. - // Tokens issued before the tokenVersion field existed lack the claim, so treat undefined as version 1. - const jwtVersion = token.tokenVersion ?? 1; - if (gateway.tokenVersion !== undefined && gateway.tokenVersion !== jwtVersion) { + if (gateway.tokenVersion !== token.tokenVersion) { throw new UnauthorizedError({ message: "Gateway token has been revoked" }); } From d467970550adeedd74a04790e9a37297fd51ea6c Mon Sep 17 00:00:00 2001 From: bernie-g Date: Mon, 13 Apr 2026 20:25:14 -0400 Subject: [PATCH 079/562] chore: fix lint errors, schema ordering, and import sorting --- backend/src/@types/knex.d.ts | 6 +- .../db/schemas/gateway-enrollment-tokens.ts | 4 +- .../ee/services/gateway-v2/gateway-v2-dal.ts | 2 +- .../services/gateway-v2/gateway-v2-service.ts | 4 +- .../pam-account/pam-account-service.ts | 4 +- .../components/GatewayTab/GatewayTab.tsx | 67 ++++++++++--------- .../components/GatewayCliDeploymentMethod.tsx | 4 +- .../GatewayCliSystemdDeploymentMethod.tsx | 9 ++- .../components/ReEnrollGatewayModal.tsx | 55 ++++++++------- 9 files changed, 84 insertions(+), 71 deletions(-) diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 0db144ddbe6..8b257a61029 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -158,15 +158,15 @@ import { TFolderTreeCheckpoints, TFolderTreeCheckpointsInsert, TFolderTreeCheckpointsUpdate, + TGatewayEnrollmentTokens, + TGatewayEnrollmentTokensInsert, + TGatewayEnrollmentTokensUpdate, TGateways, TGatewaysInsert, TGatewaysUpdate, TGatewaysV2, TGatewaysV2Insert, TGatewaysV2Update, - TGatewayEnrollmentTokens, - TGatewayEnrollmentTokensInsert, - TGatewayEnrollmentTokensUpdate, TGitAppInstallSessions, TGitAppInstallSessionsInsert, TGitAppInstallSessionsUpdate, diff --git a/backend/src/db/schemas/gateway-enrollment-tokens.ts b/backend/src/db/schemas/gateway-enrollment-tokens.ts index 032ef42ddc3..11d1d7c8fa0 100644 --- a/backend/src/db/schemas/gateway-enrollment-tokens.ts +++ b/backend/src/db/schemas/gateway-enrollment-tokens.ts @@ -15,9 +15,9 @@ export const GatewayEnrollmentTokensSchema = z.object({ ttl: z.number().default(3600), expiresAt: z.date(), usedAt: z.date().nullable().optional(), + gatewayId: z.string().uuid().nullable().optional(), createdAt: z.date(), - updatedAt: z.date(), - gatewayId: z.string().uuid().nullable().optional() + updatedAt: z.date() }); export type TGatewayEnrollmentTokens = z.infer; diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts b/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts index 3a7b4862ee9..68898b00cf8 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts @@ -54,7 +54,7 @@ export const gatewayV2DalFactory = (db: TDbClient) => { return docs.map((el) => ({ ...GatewaysV2Schema.parse(el), - identity: el.identityId ? { id: el.identityId, name: el.identityName as string } : null + identity: el.identityId ? { id: el.identityId, name: el.identityName } : null })); } catch (error) { throw new DatabaseError({ error, name: `${TableName.GatewayV2}: Find` }); diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index f64ee10481a..e414038363c 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -31,7 +31,6 @@ import { TOrgDALFactory } from "@app/services/org/org-dal"; import { TSmtpService } from "@app/services/smtp/smtp-service"; import { TAiMcpServerDALFactory } from "../ai-mcp-server/ai-mcp-server-dal"; -import { TGatewayEnrollmentTokenDALFactory } from "./gateway-enrollment-token-dal"; import { TDynamicSecretDALFactory } from "../dynamic-secret/dynamic-secret-dal"; import { TPamDiscoverySourceDALFactory } from "../pam-discovery/pam-discovery-source-dal"; import { TPamResourceDALFactory } from "../pam-resource/pam-resource-dal"; @@ -41,6 +40,7 @@ import { TPermissionServiceFactory } from "../permission/permission-service-type import { TPkiDiscoveryConfigDALFactory } from "../pki-discovery/pki-discovery-config-dal"; import { TRelayDALFactory } from "../relay/relay-dal"; import { TRelayServiceFactory } from "../relay/relay-service"; +import { TGatewayEnrollmentTokenDALFactory } from "./gateway-enrollment-token-dal"; import { GATEWAY_ACTOR_OID, GATEWAY_ROUTING_INFO_OID, PAM_INFO_OID } from "./gateway-v2-constants"; import { TGatewayV2DALFactory } from "./gateway-v2-dal"; import { GatewayHealthCheckStatus, TGatewayV2ConnectionDetails } from "./gateway-v2-types"; @@ -816,7 +816,7 @@ export const gatewayV2ServiceFactory = ({ ["identityId"] ); - return $issueGatewayCerts({ orgId, orgCAs, relayName, gateway }); + return await $issueGatewayCerts({ orgId, orgCAs, relayName, gateway }); } catch (err) { if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { throw new BadRequestError({ message: `Gateway with name "${name}" already exists` }); diff --git a/backend/src/ee/services/pam-account/pam-account-service.ts b/backend/src/ee/services/pam-account/pam-account-service.ts index 5e485898e50..106529cd436 100644 --- a/backend/src/ee/services/pam-account/pam-account-service.ts +++ b/backend/src/ee/services/pam-account/pam-account-service.ts @@ -989,9 +989,7 @@ export const pamAccountServiceFactory = ({ if (resource.gatewayId) { const authorized = - actor.type === ActorType.GATEWAY - ? resource.gatewayId === actor.id - : resource.gatewayIdentityId === actor.id; + actor.type === ActorType.GATEWAY ? resource.gatewayId === actor.id : resource.gatewayIdentityId === actor.id; if (!authorized) { throw new ForbiddenRequestError({ message: "Gateway does not have access to fetch the PAM session credentials" diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 1684aee8c55..3d2ebb198e3 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -275,19 +275,27 @@ export const GatewayTab = withPermission(
{el.name} - {"isExpired" in el && el.isExpired ? ( - - Expired - - ) : el.isPending ? ( - - Pending - - ) : ( - - Gateway v{el.isV1 ? "1" : "2"} - - )} + {(() => { + if ("isExpired" in el && el.isExpired) { + return ( + + Expired + + ); + } + if (el.isPending) { + return ( + + Pending + + ); + } + return ( + + Gateway v{el.isV1 ? "1" : "2"} + + ); + })()}
@@ -361,23 +369,22 @@ export const GatewayTab = withPermission( )} {!el.isV1 && - (el.isPending || - ("identityId" in el && !el.identityId)) && ( - - {(isAllowed: boolean) => ( - } - onClick={() => handlePopUpOpen("reEnrollGateway", el)} - > - Re-enroll - - )} - - )} + (el.isPending || ("identityId" in el && !el.identityId)) && ( + + {(isAllowed: boolean) => ( + } + onClick={() => handlePopUpOpen("reEnrollGateway", el)} + > + Re-enroll + + )} + + )} { const result = await createEnrollmentToken({ name }); setEnrollmentToken(result.token); - const relayName = relay?.id === "_auto" ? "" : relay?.name ?? ""; + const relayName = relay?.id === "_auto" ? "" : (relay?.name ?? ""); setResolvedRelayName(relayName); setStep("command"); } catch { diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx index b601f7e84e8..63fc170c562 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx @@ -2,8 +2,8 @@ import { useMemo, useState } from "react"; import { SingleValue } from "react-select"; import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { useNavigate } from "@tanstack/react-router"; import { useQuery } from "@tanstack/react-query"; +import { useNavigate } from "@tanstack/react-router"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -82,7 +82,7 @@ export const GatewayCliSystemdDeploymentMethod = () => { const result = await createEnrollmentToken({ name }); setEnrollmentToken(result.token); - const relayName = relay?.id === "_auto" ? "" : relay?.name ?? ""; + const relayName = relay?.id === "_auto" ? "" : (relay?.name ?? ""); setResolvedRelayName(relayName); setStep("command"); } catch { @@ -113,7 +113,10 @@ export const GatewayCliSystemdDeploymentMethod = () => { colorSchema="secondary" onClick={() => { navigator.clipboard.writeText(installCommand); - createNotification({ text: "Installation command copied to clipboard", type: "info" }); + createNotification({ + text: "Installation command copied to clipboard", + type: "info" + }); }} className="w-10" > diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index 59ab574cda9..47dee573018 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -3,7 +3,15 @@ import { faCopy } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { createNotification } from "@app/components/notifications"; -import { Button, FormLabel, IconButton, Input, Modal, ModalClose, ModalContent } from "@app/components/v2"; +import { + Button, + FormLabel, + IconButton, + Input, + Modal, + ModalClose, + ModalContent +} from "@app/components/v2"; import { useReEnrollGateway } from "@app/hooks/api/gateways-v2"; type Props = { @@ -56,33 +64,30 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop { + if (step !== "confirm") return undefined; + if (gatewayData.isTokenOnly) + return "This will create a new enrollment token, replacing the expired one."; + return "This will create a new enrollment token and invalidate the current gateway credentials. The gateway will stop working until re-enrolled."; + })()} > {step === "confirm" && ( - <> -
- + + - - - -
- + +
)} {step === "command" && ( <> From e655d770fd77d16657e5b38f17c91a1563f1c224 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Mon, 13 Apr 2026 23:09:05 -0300 Subject: [PATCH 080/562] Add dynamic challenges to SCEP --- backend/src/@types/knex.d.ts | 8 + ...60413325231_add-scep-dynamic-challenges.ts | 66 ++++++ backend/src/db/schemas/index.ts | 1 + backend/src/db/schemas/models.ts | 1 + .../db/schemas/pki-scep-dynamic-challenges.ts | 25 +++ .../db/schemas/pki-scep-enrollment-configs.ts | 5 +- backend/src/ee/routes/scep/pki-scep-router.ts | 33 +++ .../ee/services/audit-log/audit-log-types.ts | 15 +- .../ee/services/pki-scep/challenge/index.ts | 29 +++ .../challenge/scep-challenge-dynamic.ts | 30 +++ .../challenge/scep-challenge-static.ts | 21 ++ .../challenge/scep-challenge-types.ts | 8 + .../pki-scep-dynamic-challenge-dal.ts | 75 +++++++ .../ee/services/pki-scep/pki-scep-service.ts | 125 ++++++++++- .../ee/services/pki-scep/pki-scep-types.ts | 11 + .../server/plugins/auth/inject-identity.ts | 6 +- backend/src/server/routes/index.ts | 6 +- .../routes/v1/certificate-profiles-router.ts | 34 ++- .../certificate-profile-dal.ts | 32 ++- .../certificate-profile-service.ts | 59 ++++- .../certificate-profile-types.ts | 7 + .../enrollment-config-types.ts | 5 +- .../platform/pki/enrollment-methods/scep.mdx | 194 ++++++++++++----- .../pki/integration-guides/jamf-pro-scep.mdx | 39 +++- .../jamf-pro/jamf-webhook-config.png | Bin 0 -> 138483 bytes .../scep-config-challenge-dynamic.png | Bin 0 -> 504877 bytes .../hooks/api/certificateProfiles/types.ts | 17 +- .../CreateProfileModal.tsx | 202 ++++++++++++++++-- .../ScepDetailsModal.tsx | 35 ++- 29 files changed, 977 insertions(+), 112 deletions(-) create mode 100644 backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts create mode 100644 backend/src/db/schemas/pki-scep-dynamic-challenges.ts create mode 100644 backend/src/ee/services/pki-scep/challenge/index.ts create mode 100644 backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts create mode 100644 backend/src/ee/services/pki-scep/challenge/scep-challenge-static.ts create mode 100644 backend/src/ee/services/pki-scep/challenge/scep-challenge-types.ts create mode 100644 backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts create mode 100644 docs/images/platform/pki/integrations/jamf-pro/jamf-webhook-config.png create mode 100644 docs/images/platform/pki/integrations/jamf-pro/scep-config-challenge-dynamic.png diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 27f5c05471c..395d0a8e0fd 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -368,6 +368,9 @@ import { TPkiEstEnrollmentConfigs, TPkiEstEnrollmentConfigsInsert, TPkiEstEnrollmentConfigsUpdate, + TPkiScepDynamicChallenges, + TPkiScepDynamicChallengesInsert, + TPkiScepDynamicChallengesUpdate, TPkiScepEnrollmentConfigs, TPkiScepEnrollmentConfigsInsert, TPkiScepEnrollmentConfigsUpdate, @@ -875,6 +878,11 @@ declare module "knex/types/tables" { TPkiScepTransactionsInsert, TPkiScepTransactionsUpdate >; + [TableName.PkiScepDynamicChallenge]: KnexOriginal.CompositeTableType< + TPkiScepDynamicChallenges, + TPkiScepDynamicChallengesInsert, + TPkiScepDynamicChallengesUpdate + >; [TableName.PkiApiEnrollmentConfig]: KnexOriginal.CompositeTableType< TPkiApiEnrollmentConfigs, TPkiApiEnrollmentConfigsInsert, diff --git a/backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts b/backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts new file mode 100644 index 00000000000..744318b29b2 --- /dev/null +++ b/backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts @@ -0,0 +1,66 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; +import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; + +export async function up(knex: Knex): Promise { + if (!(await knex.schema.hasTable(TableName.PkiScepDynamicChallenge))) { + await knex.schema.createTable(TableName.PkiScepDynamicChallenge, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + + t.uuid("scepConfigId").notNullable(); + t.foreign("scepConfigId").references("id").inTable(TableName.PkiScepEnrollmentConfig).onDelete("CASCADE"); + t.index("scepConfigId"); + + t.text("hashedChallenge").notNullable(); + + t.timestamp("expiresAt").notNullable(); + t.index("expiresAt"); + + t.timestamp("usedAt").nullable(); + + t.string("clientIp", 45).nullable(); + + t.timestamps(true, true, true); + }); + + await createOnUpdateTrigger(knex, TableName.PkiScepDynamicChallenge); + } + + if (!(await knex.schema.hasColumn(TableName.PkiScepEnrollmentConfig, "challengeType"))) { + await knex.schema.alterTable(TableName.PkiScepEnrollmentConfig, (t) => { + t.string("challengeType", 32).notNullable().defaultTo("static"); + t.integer("dynamicChallengeExpiryMinutes").notNullable().defaultTo(60); + t.integer("dynamicChallengeMaxPending").notNullable().defaultTo(100); + }); + } + + if (await knex.schema.hasColumn(TableName.PkiScepEnrollmentConfig, "hashedChallengePassword")) { + await knex.schema.alterTable(TableName.PkiScepEnrollmentConfig, (t) => { + t.text("hashedChallengePassword").nullable().alter(); + }); + } +} + +export async function down(knex: Knex): Promise { + if (await knex.schema.hasTable(TableName.PkiScepDynamicChallenge)) { + await dropOnUpdateTrigger(knex, TableName.PkiScepDynamicChallenge); + await knex.schema.dropTable(TableName.PkiScepDynamicChallenge); + } + + if (await knex.schema.hasColumn(TableName.PkiScepEnrollmentConfig, "challengeType")) { + await knex.schema.alterTable(TableName.PkiScepEnrollmentConfig, (t) => { + t.dropColumn("challengeType"); + t.dropColumn("dynamicChallengeExpiryMinutes"); + t.dropColumn("dynamicChallengeMaxPending"); + }); + } + + if (await knex.schema.hasColumn(TableName.PkiScepEnrollmentConfig, "hashedChallengePassword")) { + await knex(TableName.PkiScepEnrollmentConfig).whereNull("hashedChallengePassword").delete(); + + await knex.schema.alterTable(TableName.PkiScepEnrollmentConfig, (t) => { + t.text("hashedChallengePassword").notNullable().alter(); + }); + } +} diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index 1ee9a97033b..432971065a3 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -145,6 +145,7 @@ export * from "./pki-discovery-configs"; export * from "./pki-discovery-installations"; export * from "./pki-discovery-scan-history"; export * from "./pki-est-enrollment-configs"; +export * from "./pki-scep-dynamic-challenges"; export * from "./pki-scep-enrollment-configs"; export * from "./pki-scep-transactions"; export * from "./pki-signers"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index 33752dd9ef4..5ef2824fefd 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -32,6 +32,7 @@ export enum TableName { PkiAcmeEnrollmentConfig = "pki_acme_enrollment_configs", PkiScepEnrollmentConfig = "pki_scep_enrollment_configs", PkiScepTransaction = "pki_scep_transactions", + PkiScepDynamicChallenge = "pki_scep_dynamic_challenges", PkiSubscriber = "pki_subscribers", PkiAlert = "pki_alerts", PkiAlertsV2 = "pki_alerts_v2", diff --git a/backend/src/db/schemas/pki-scep-dynamic-challenges.ts b/backend/src/db/schemas/pki-scep-dynamic-challenges.ts new file mode 100644 index 00000000000..d990e0c07d3 --- /dev/null +++ b/backend/src/db/schemas/pki-scep-dynamic-challenges.ts @@ -0,0 +1,25 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { TImmutableDBKeys } from "./models"; + +export const PkiScepDynamicChallengesSchema = z.object({ + id: z.string().uuid(), + scepConfigId: z.string().uuid(), + hashedChallenge: z.string(), + expiresAt: z.date(), + usedAt: z.date().nullable().optional(), + clientIp: z.string().nullable().optional(), + createdAt: z.date(), + updatedAt: z.date() +}); + +export type TPkiScepDynamicChallenges = z.infer; +export type TPkiScepDynamicChallengesInsert = Omit, TImmutableDBKeys>; +export type TPkiScepDynamicChallengesUpdate = Partial< + Omit, TImmutableDBKeys> +>; diff --git a/backend/src/db/schemas/pki-scep-enrollment-configs.ts b/backend/src/db/schemas/pki-scep-enrollment-configs.ts index 22dd50fd39c..9c0cfb18a2c 100644 --- a/backend/src/db/schemas/pki-scep-enrollment-configs.ts +++ b/backend/src/db/schemas/pki-scep-enrollment-configs.ts @@ -14,9 +14,12 @@ export const PkiScepEnrollmentConfigsSchema = z.object({ encryptedRaPrivateKey: zodBuffer, raCertificate: z.string(), raCertExpiresAt: z.date(), - hashedChallengePassword: z.string(), + hashedChallengePassword: z.string().nullable().optional(), includeCaCertInResponse: z.boolean().default(true), allowCertBasedRenewal: z.boolean().default(true), + challengeType: z.string().default("static"), + dynamicChallengeExpiryMinutes: z.number().default(60), + dynamicChallengeMaxPending: z.number().default(100), createdAt: z.date(), updatedAt: z.date() }); diff --git a/backend/src/ee/routes/scep/pki-scep-router.ts b/backend/src/ee/routes/scep/pki-scep-router.ts index e68b6e6dfe4..d308fc98347 100644 --- a/backend/src/ee/routes/scep/pki-scep-router.ts +++ b/backend/src/ee/routes/scep/pki-scep-router.ts @@ -2,6 +2,8 @@ import { z } from "zod"; import { BadRequestError } from "@app/lib/errors"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; const MAX_SCEP_MESSAGE_SIZE = 64 * 1024; // 64KB @@ -18,6 +20,7 @@ export const registerPkiScepRouter = async (server: FastifyZodProvider) => { server.addHook("onRequest", async (req) => { if ( req.method === "POST" && + req.url.includes("/pkiclient.exe") && (!req.headers["content-type"] || req.headers["content-type"] === "application/octet-stream") ) { // eslint-disable-next-line no-param-reassign @@ -113,4 +116,34 @@ export const registerPkiScepRouter = async (server: FastifyZodProvider) => { return res.send(response); } }); + + server.route({ + method: "POST", + url: "/:profileId/challenge", + config: { + rateLimit: writeLimit + }, + schema: { + params: z.object({ + profileId: z.string().uuid() + }) + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req, res) => { + const { profileId } = req.params; + const clientIp = req.ip || "unknown"; + + const result = await server.services.pkiScep.generateDynamicChallenge({ + profileId, + clientIp, + actor: req.permission.type, + actorId: req.permission.id, + actorAuthMethod: req.permission.authMethod, + actorOrgId: req.permission.orgId + }); + + void res.header("Content-Type", "text/plain"); + return res.send(result.challenge); + } + }); }; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 3fd49133994..ba5c6d008cb 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -1,4 +1,5 @@ import { ProjectType } from "@app/db/schemas"; +import { ScepChallengeType } from "@app/ee/services/pki-scep/challenge"; import { TCreateProjectTemplateDTO, TUpdateProjectTemplateDTO @@ -727,6 +728,7 @@ export enum EventType { PKI_SIGNER_SIGN = "pki-signer-sign", SCEP_ENROLLMENT = "scep-enrollment", SCEP_RENEWAL = "scep-renewal", + SCEP_DYNAMIC_CHALLENGE_GENERATED = "scep-dynamic-challenge-generated", // Secret Validation Rules SECRET_VALIDATION_RULE_CREATE = "secret-validation-rule-create", @@ -5708,7 +5710,7 @@ interface ScepEnrollmentEvent { profileSlug: string; transactionId: string; csrSubject: string; - challengeType: "static"; + challengeType: ScepChallengeType; status: "success" | "pending" | "failure"; failReason?: string; issuedCertificateId?: string; @@ -5733,6 +5735,16 @@ interface ScepRenewalEvent { }; } +interface ScepDynamicChallengeGeneratedEvent { + type: EventType.SCEP_DYNAMIC_CHALLENGE_GENERATED; + metadata: { + profileId: string; + profileSlug: string; + expiresAt: string; + clientIp: string; + }; +} + interface SecretValidationRuleCreateEvent { type: EventType.SECRET_VALIDATION_RULE_CREATE; metadata: { @@ -6283,6 +6295,7 @@ export type Event = | CertificateCleanupCompletedEvent | ScepEnrollmentEvent | ScepRenewalEvent + | ScepDynamicChallengeGeneratedEvent | SecretValidationRuleCreateEvent | SecretValidationRuleUpdateEvent | SecretValidationRuleDeleteEvent; diff --git a/backend/src/ee/services/pki-scep/challenge/index.ts b/backend/src/ee/services/pki-scep/challenge/index.ts new file mode 100644 index 00000000000..62e862b0a11 --- /dev/null +++ b/backend/src/ee/services/pki-scep/challenge/index.ts @@ -0,0 +1,29 @@ +import { BadRequestError } from "@app/lib/errors"; +import { TScepEnrollmentConfigDALFactory } from "@app/services/enrollment-config/scep-enrollment-config-dal"; + +import { TScepDynamicChallengeDALFactory } from "../pki-scep-dynamic-challenge-dal"; +import { dynamicChallengeValidator } from "./scep-challenge-dynamic"; +import { staticChallengeValidator } from "./scep-challenge-static"; +import { IScepChallengeValidator, ScepChallengeType } from "./scep-challenge-types"; + +export type { IScepChallengeValidator } from "./scep-challenge-types"; +export { ScepChallengeType } from "./scep-challenge-types"; + +type TScepChallengeValidatorFactoryDep = { + scepEnrollmentConfigDAL: Pick; + scepDynamicChallengeDAL: Pick; +}; + +export const getScepChallengeValidator = ( + challengeType: ScepChallengeType, + deps: TScepChallengeValidatorFactoryDep +): IScepChallengeValidator => { + switch (challengeType) { + case ScepChallengeType.DYNAMIC: + return dynamicChallengeValidator({ scepDynamicChallengeDAL: deps.scepDynamicChallengeDAL }); + case ScepChallengeType.STATIC: + return staticChallengeValidator({ scepEnrollmentConfigDAL: deps.scepEnrollmentConfigDAL }); + default: + throw new BadRequestError({ message: `Unsupported SCEP challenge type: ${String(challengeType)}` }); + } +}; diff --git a/backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts b/backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts new file mode 100644 index 00000000000..33c11a7e255 --- /dev/null +++ b/backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts @@ -0,0 +1,30 @@ +import { crypto } from "@app/lib/crypto/cryptography"; + +import { TScepDynamicChallengeDALFactory } from "../pki-scep-dynamic-challenge-dal"; +import { IScepChallengeValidator } from "./scep-challenge-types"; + +type TDynamicChallengeValidatorDep = { + scepDynamicChallengeDAL: Pick; +}; + +export const dynamicChallengeValidator = ({ + scepDynamicChallengeDAL +}: TDynamicChallengeValidatorDep): IScepChallengeValidator => ({ + validate: async (challengePassword: string, scepConfigId: string): Promise => { + if (!challengePassword) return false; + + const pendingChallenges = await scepDynamicChallengeDAL.findUnusedByConfigId(scepConfigId); + + for (const challenge of pendingChallenges) { + // eslint-disable-next-line no-await-in-loop + const matches = await crypto.hashing().compareHash(challengePassword, challenge.hashedChallenge); + if (matches) { + // eslint-disable-next-line no-await-in-loop + const claimed = await scepDynamicChallengeDAL.markUsed(challenge.id); + if (claimed) return true; + } + } + + return false; + } +}); diff --git a/backend/src/ee/services/pki-scep/challenge/scep-challenge-static.ts b/backend/src/ee/services/pki-scep/challenge/scep-challenge-static.ts new file mode 100644 index 00000000000..538842d40da --- /dev/null +++ b/backend/src/ee/services/pki-scep/challenge/scep-challenge-static.ts @@ -0,0 +1,21 @@ +import { crypto } from "@app/lib/crypto/cryptography"; +import { TScepEnrollmentConfigDALFactory } from "@app/services/enrollment-config/scep-enrollment-config-dal"; + +import { IScepChallengeValidator } from "./scep-challenge-types"; + +type TStaticChallengeValidatorDep = { + scepEnrollmentConfigDAL: Pick; +}; + +export const staticChallengeValidator = ({ + scepEnrollmentConfigDAL +}: TStaticChallengeValidatorDep): IScepChallengeValidator => ({ + validate: async (challengePassword: string, scepConfigId: string): Promise => { + if (!challengePassword) return false; + + const scepConfig = await scepEnrollmentConfigDAL.findById(scepConfigId); + if (!scepConfig?.hashedChallengePassword) return false; + + return crypto.hashing().compareHash(challengePassword, scepConfig.hashedChallengePassword); + } +}); diff --git a/backend/src/ee/services/pki-scep/challenge/scep-challenge-types.ts b/backend/src/ee/services/pki-scep/challenge/scep-challenge-types.ts new file mode 100644 index 00000000000..18fe9f5e448 --- /dev/null +++ b/backend/src/ee/services/pki-scep/challenge/scep-challenge-types.ts @@ -0,0 +1,8 @@ +export enum ScepChallengeType { + STATIC = "static", + DYNAMIC = "dynamic" +} + +export interface IScepChallengeValidator { + validate(challengePassword: string, scepConfigId: string): Promise; +} diff --git a/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts b/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts new file mode 100644 index 00000000000..aea087704b3 --- /dev/null +++ b/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts @@ -0,0 +1,75 @@ +import { Knex } from "knex"; + +import { TDbClient } from "@app/db"; +import { TableName } from "@app/db/schemas"; +import { DatabaseError } from "@app/lib/errors"; +import { ormify } from "@app/lib/knex"; + +export type TScepDynamicChallengeDALFactory = ReturnType; + +export const scepDynamicChallengeDALFactory = (db: TDbClient) => { + const orm = ormify(db, TableName.PkiScepDynamicChallenge); + + const findUnusedByConfigId = async (scepConfigId: string, tx?: Knex) => { + try { + const results = await (tx || db.replicaNode())(TableName.PkiScepDynamicChallenge) + .where({ scepConfigId }) + .whereNull("usedAt") + .where("expiresAt", ">", new Date()); + + return results; + } catch (error) { + throw new DatabaseError({ error, name: "Find unused SCEP dynamic challenges" }); + } + }; + + const countPending = async (scepConfigId: string, tx?: Knex) => { + try { + const result = await (tx || db.replicaNode())(TableName.PkiScepDynamicChallenge) + .where({ scepConfigId }) + .whereNull("usedAt") + .where("expiresAt", ">", new Date()) + .count("id as count") + .first(); + + return Number((result as { count?: string | number })?.count ?? 0); + } catch (error) { + throw new DatabaseError({ error, name: "Count pending SCEP dynamic challenges" }); + } + }; + + const markUsed = async (id: string, tx?: Knex) => { + try { + const [result] = await (tx || db)(TableName.PkiScepDynamicChallenge) + .where({ id }) + .whereNull("usedAt") + .update({ usedAt: new Date() }) + .returning("*"); + + return result; + } catch (error) { + throw new DatabaseError({ error, name: "Mark SCEP dynamic challenge as used" }); + } + }; + + const pruneExpired = async (scepConfigId: string, tx?: Knex) => { + try { + const deletedCount = await (tx || db)(TableName.PkiScepDynamicChallenge) + .where({ scepConfigId }) + .where("expiresAt", "<", new Date()) + .delete(); + + return deletedCount; + } catch (error) { + throw new DatabaseError({ error, name: "Prune expired SCEP dynamic challenges" }); + } + }; + + return { + ...orm, + findUnusedByConfigId, + countPending, + markUsed, + pruneExpired + }; +}; diff --git a/backend/src/ee/services/pki-scep/pki-scep-service.ts b/backend/src/ee/services/pki-scep/pki-scep-service.ts index 4c19006425e..0d70404e704 100644 --- a/backend/src/ee/services/pki-scep/pki-scep-service.ts +++ b/backend/src/ee/services/pki-scep/pki-scep-service.ts @@ -1,6 +1,15 @@ +import { ForbiddenError, subject } from "@casl/ability"; import * as x509 from "@peculiar/x509"; +import { randomBytes } from "crypto"; +import { ActionProjectType } from "@app/db/schemas"; +import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; +import { + ProjectPermissionCertificateProfileActions, + ProjectPermissionSub +} from "@app/ee/services/permission/project-permission"; import { extractX509CertFromChain } from "@app/lib/certificates/extract-certificate"; +import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto/cryptography"; import { BadRequestError, NotFoundError } from "@app/lib/errors"; import { ActorType } from "@app/services/auth/auth-type"; @@ -31,6 +40,8 @@ import { getProjectKmsCertificateKeyId } from "@app/services/project/project-fns import { EventType, TAuditLogServiceFactory } from "../audit-log/audit-log-types"; import { convertRawCertsToPkcs7 } from "../certificate-est/certificate-est-fns"; import { TLicenseServiceFactory } from "../license/license-service"; +import { getScepChallengeValidator, ScepChallengeType } from "./challenge"; +import { TScepDynamicChallengeDALFactory } from "./pki-scep-dynamic-challenge-dal"; import { getScepCapabilities, isSignerCertIssuedByCa } from "./pki-scep-fns"; import { buildCertRepFailure, buildCertRepPending, buildCertRepSuccess } from "./pki-scep-message-builder"; import { parseScepMessage } from "./pki-scep-message-parser"; @@ -38,6 +49,7 @@ import { TScepTransactionDALFactory } from "./pki-scep-transaction-dal"; import { ScepFailInfo, ScepMessageType, + TGenerateDynamicChallengeDTO, TGetCaCapsDTO, TGetCaCertDTO, THandlePkiOperationDTO, @@ -48,6 +60,7 @@ type TPkiScepServiceFactoryDep = { certificateV3Service: Pick; certificateProfileDAL: Pick; scepEnrollmentConfigDAL: Pick; + scepDynamicChallengeDAL: TScepDynamicChallengeDALFactory; scepTransactionDAL: TScepTransactionDALFactory; certificateAuthorityDAL: Pick; certificateAuthorityCertDAL: Pick; @@ -61,6 +74,7 @@ type TPkiScepServiceFactoryDep = { certificateRequestService: Pick; certificateIssuanceQueue: Pick; auditLogService: Pick; + permissionService: Pick; }; export type TPkiScepServiceFactory = ReturnType; @@ -71,6 +85,7 @@ export const pkiScepServiceFactory = ({ certificateV3Service, certificateProfileDAL, scepEnrollmentConfigDAL, + scepDynamicChallengeDAL, scepTransactionDAL, certificateAuthorityDAL, certificateAuthorityCertDAL, @@ -83,7 +98,8 @@ export const pkiScepServiceFactory = ({ certificatePolicyService, certificateRequestService, certificateIssuanceQueue, - auditLogService + auditLogService, + permissionService }: TPkiScepServiceFactoryDep) => { const loadScepContext = async (profileId: string) => { const profile = await certificateProfileDAL.findByIdWithConfigs(profileId); @@ -303,9 +319,11 @@ export const pkiScepServiceFactory = ({ } } - const isValid = challengePassword - ? await crypto.hashing().compareHash(challengePassword, scepConfig.hashedChallengePassword) - : false; + const challengeValidator = getScepChallengeValidator(scepConfig.challengeType as ScepChallengeType, { + scepEnrollmentConfigDAL, + scepDynamicChallengeDAL + }); + const isValid = await challengeValidator.validate(challengePassword, scepConfig.id); if (!isValid) { // Many SCEP clients (including sscep) send PKCSReq for both initial enrollment @@ -350,7 +368,7 @@ export const pkiScepServiceFactory = ({ profileSlug: profile.slug, transactionId: parsed.transactionId, csrSubject: csrObj.subject, - challengeType: "static" as const, + challengeType: scepConfig.challengeType as ScepChallengeType, status: "failure" as const, failReason: "Invalid challenge password", clientIp @@ -385,7 +403,7 @@ export const pkiScepServiceFactory = ({ profileSlug: profile.slug, transactionId: parsed.transactionId, csrSubject: csrObj.subject, - challengeType: "static" as const, + challengeType: scepConfig.challengeType as ScepChallengeType, clientIp }; @@ -838,9 +856,102 @@ export const pkiScepServiceFactory = ({ } }; + const generateDynamicChallenge = async ({ + profileId, + clientIp, + actor, + actorId, + actorAuthMethod, + actorOrgId + }: TGenerateDynamicChallengeDTO) => { + const profile = await certificateProfileDAL.findByIdWithConfigs(profileId); + if (!profile || profile.enrollmentType !== EnrollmentType.SCEP) { + throw new NotFoundError({ message: "SCEP profile not found" }); + } + + const { permission } = await permissionService.getProjectPermission({ + actor, + actorId, + projectId: profile.projectId, + actorAuthMethod, + actorOrgId, + actionProjectType: ActionProjectType.CertificateManager + }); + ForbiddenError.from(permission).throwUnlessCan( + ProjectPermissionCertificateProfileActions.Edit, + subject(ProjectPermissionSub.CertificateProfiles, { slug: profile.slug }) + ); + + if (!profile.scepConfigId) { + throw new BadRequestError({ message: "SCEP enrollment not configured for this profile" }); + } + + const scepConfig = await scepEnrollmentConfigDAL.findById(profile.scepConfigId); + if (!scepConfig) { + throw new NotFoundError({ message: "SCEP configuration not found" }); + } + + if (scepConfig.challengeType !== ScepChallengeType.DYNAMIC) { + throw new BadRequestError({ message: "Dynamic challenges are not enabled for this SCEP profile" }); + } + + const project = await projectDAL.findOne({ id: profile.projectId }); + if (!project) { + throw new NotFoundError({ message: "Project not found" }); + } + + const plan = await licenseService.getPlan(project.orgId); + if (!plan.pkiScep) { + throw new BadRequestError({ + message: "Failed to generate SCEP challenge due to plan restriction. Upgrade to the Enterprise plan." + }); + } + + const pendingCount = await scepDynamicChallengeDAL.countPending(scepConfig.id); + if (pendingCount >= scepConfig.dynamicChallengeMaxPending) { + throw new BadRequestError({ + message: `Maximum number of pending challenges (${scepConfig.dynamicChallengeMaxPending}) reached. Wait for existing challenges to expire or be used.` + }); + } + + const challengePlaintext = randomBytes(32).toString("hex"); + + const appCfg = getConfig(); + const hashedChallenge = await crypto.hashing().createHash(challengePlaintext, appCfg.SALT_ROUNDS); + + const expiresAt = new Date(); + expiresAt.setMinutes(expiresAt.getMinutes() + scepConfig.dynamicChallengeExpiryMinutes); + + await scepDynamicChallengeDAL.create({ + scepConfigId: scepConfig.id, + hashedChallenge, + expiresAt, + clientIp: clientIp || null + }); + + void scepDynamicChallengeDAL.pruneExpired(scepConfig.id); + + void auditLogService.createAuditLog({ + projectId: profile.projectId, + actor: { type: ActorType.SCEP_ACCOUNT, metadata: { profileId: profile.id } }, + event: { + type: EventType.SCEP_DYNAMIC_CHALLENGE_GENERATED, + metadata: { + profileId: profile.id, + profileSlug: profile.slug, + expiresAt: expiresAt.toISOString(), + clientIp: clientIp || "unknown" + } + } + }); + + return { challenge: challengePlaintext }; + }; + return { getCaCaps, getCaCert, - handlePkiOperation + handlePkiOperation, + generateDynamicChallenge }; }; diff --git a/backend/src/ee/services/pki-scep/pki-scep-types.ts b/backend/src/ee/services/pki-scep/pki-scep-types.ts index f752fb81c6a..f343c815066 100644 --- a/backend/src/ee/services/pki-scep/pki-scep-types.ts +++ b/backend/src/ee/services/pki-scep/pki-scep-types.ts @@ -1,3 +1,5 @@ +import { ActorAuthMethod, ActorType } from "@app/services/auth/auth-type"; + export enum ScepMessageType { CertRep = "3", RenewalReq = "17", @@ -63,3 +65,12 @@ export type THandlePkiOperationDTO = { message: Buffer; clientIp: string; }; + +export type TGenerateDynamicChallengeDTO = { + profileId: string; + clientIp: string; + actor: ActorType; + actorId: string; + actorAuthMethod: ActorAuthMethod; + actorOrgId: string; +}; diff --git a/backend/src/server/plugins/auth/inject-identity.ts b/backend/src/server/plugins/auth/inject-identity.ts index b155a12dfb4..b8ccda18ec1 100644 --- a/backend/src/server/plugins/auth/inject-identity.ts +++ b/backend/src/server/plugins/auth/inject-identity.ts @@ -150,7 +150,11 @@ export const injectIdentity = fp( return; } - if (req.url.includes(".well-known/est") || req.url.includes("/scep/") || req.url.includes("/api/v3/auth/")) { + if (req.url.includes(".well-known/est") || req.url.includes("/api/v3/auth/")) { + return; + } + + if (req.url.includes("/scep/") && !req.url.includes("/challenge")) { return; } diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 7d514083440..2141ae0d712 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -122,6 +122,7 @@ import { pkiDiscoveryQueueFactory } from "@app/ee/services/pki-discovery/pki-dis import { pkiDiscoveryScanHistoryDALFactory } from "@app/ee/services/pki-discovery/pki-discovery-scan-history-dal"; import { pkiDiscoveryServiceFactory } from "@app/ee/services/pki-discovery/pki-discovery-service"; import { pkiInstallationServiceFactory } from "@app/ee/services/pki-discovery/pki-installation-service"; +import { scepDynamicChallengeDALFactory } from "@app/ee/services/pki-scep/pki-scep-dynamic-challenge-dal"; import { pkiScepServiceFactory } from "@app/ee/services/pki-scep/pki-scep-service"; import { scepTransactionDALFactory } from "@app/ee/services/pki-scep/pki-scep-transaction-dal"; import { projectEventsServiceFactory } from "@app/ee/services/project-events/project-events-service"; @@ -1240,6 +1241,7 @@ export const registerRoutes = async ( const acmeEnrollmentConfigDAL = acmeEnrollmentConfigDALFactory(db); const scepEnrollmentConfigDAL = scepEnrollmentConfigDALFactory(db); const scepTransactionDAL = scepTransactionDALFactory(db); + const scepDynamicChallengeDAL = scepDynamicChallengeDALFactory(db); const acmeAccountDAL = pkiAcmeAccountDALFactory(db); const acmeOrderDAL = pkiAcmeOrderDALFactory(db); const acmeAuthDAL = pkiAcmeAuthDALFactory(db); @@ -2610,6 +2612,7 @@ export const registerRoutes = async ( certificateV3Service, certificateProfileDAL, scepEnrollmentConfigDAL, + scepDynamicChallengeDAL, scepTransactionDAL, certificateAuthorityDAL, certificateAuthorityCertDAL, @@ -2622,7 +2625,8 @@ export const registerRoutes = async ( certificatePolicyService, certificateRequestService, certificateIssuanceQueue, - auditLogService + auditLogService, + permissionService }); const acmeChallengeService = pkiAcmeChallengeServiceFactory({ diff --git a/backend/src/server/routes/v1/certificate-profiles-router.ts b/backend/src/server/routes/v1/certificate-profiles-router.ts index 37a53e8c75d..0d2f8ef1793 100644 --- a/backend/src/server/routes/v1/certificate-profiles-router.ts +++ b/backend/src/server/routes/v1/certificate-profiles-router.ts @@ -3,6 +3,7 @@ import { z } from "zod"; import { PkiCertificateProfilesSchema } from "@app/db/schemas"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { ScepChallengeType } from "@app/ee/services/pki-scep/challenge"; import { ApiDocsTags } from "@app/lib/api-docs"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; @@ -87,9 +88,12 @@ export const registerCertificateProfilesRouter = async ( .optional(), scepConfig: z .object({ - challengePassword: z.string().min(8), + challengeType: z.nativeEnum(ScepChallengeType).default(ScepChallengeType.STATIC), + challengePassword: z.string().optional(), includeCaCertInResponse: z.boolean().optional(), - allowCertBasedRenewal: z.boolean().optional() + allowCertBasedRenewal: z.boolean().optional(), + dynamicChallengeExpiryMinutes: z.number().int().min(1).max(1440).default(60), + dynamicChallengeMaxPending: z.number().int().min(1).max(1000).default(100) }) .optional(), externalConfigs: ExternalConfigUnionSchema, @@ -195,12 +199,15 @@ export const registerCertificateProfilesRouter = async ( .refine( (data) => { if (data.enrollmentType === EnrollmentType.SCEP) { - return !!data.scepConfig?.challengePassword; + if (!data.scepConfig) return false; + // Static mode requires a challenge password with min 8 chars; dynamic mode does not + if (data.scepConfig.challengeType === ScepChallengeType.DYNAMIC) return true; + return !!data.scepConfig.challengePassword && data.scepConfig.challengePassword.length >= 8; } return true; }, { - message: "SCEP enrollment type requires SCEP configuration with a challenge password" + message: "SCEP static challenge requires a challenge password with at least 8 characters" } ) .refine( @@ -357,7 +364,11 @@ export const registerCertificateProfilesRouter = async ( raCertificatePem: z.string(), raCertExpiresAt: z.date(), includeCaCertInResponse: z.boolean(), - allowCertBasedRenewal: z.boolean() + allowCertBasedRenewal: z.boolean(), + challengeType: z.string(), + challengeEndpointUrl: z.string().optional(), + dynamicChallengeExpiryMinutes: z.number(), + dynamicChallengeMaxPending: z.number() }) .optional(), externalConfigs: ExternalConfigUnionSchema, @@ -459,7 +470,11 @@ export const registerCertificateProfilesRouter = async ( raCertificatePem: z.string(), raCertExpiresAt: z.date(), includeCaCertInResponse: z.boolean(), - allowCertBasedRenewal: z.boolean() + allowCertBasedRenewal: z.boolean(), + challengeType: z.string(), + challengeEndpointUrl: z.string().optional(), + dynamicChallengeExpiryMinutes: z.number(), + dynamicChallengeMaxPending: z.number() }) .optional(), externalConfigs: ExternalConfigUnionSchema @@ -578,9 +593,12 @@ export const registerCertificateProfilesRouter = async ( .optional(), scepConfig: z .object({ - challengePassword: z.string().min(8).optional(), + challengeType: z.nativeEnum(ScepChallengeType).optional(), + challengePassword: z.string().optional(), includeCaCertInResponse: z.boolean().optional(), - allowCertBasedRenewal: z.boolean().optional() + allowCertBasedRenewal: z.boolean().optional(), + dynamicChallengeExpiryMinutes: z.number().int().min(1).max(1440).optional(), + dynamicChallengeMaxPending: z.number().int().min(1).max(1000).optional() }) .optional(), externalConfigs: ExternalConfigUnionSchema, diff --git a/backend/src/services/certificate-profile/certificate-profile-dal.ts b/backend/src/services/certificate-profile/certificate-profile-dal.ts index b0ba1f02c75..2276483277a 100644 --- a/backend/src/services/certificate-profile/certificate-profile-dal.ts +++ b/backend/src/services/certificate-profile/certificate-profile-dal.ts @@ -205,7 +205,16 @@ export const certificateProfileDALFactory = (db: TDbClient) => { db .ref("allowCertBasedRenewal") .withSchema(TableName.PkiScepEnrollmentConfig) - .as("scepConfigAllowCertBasedRenewal") + .as("scepConfigAllowCertBasedRenewal"), + db.ref("challengeType").withSchema(TableName.PkiScepEnrollmentConfig).as("scepConfigChallengeType"), + db + .ref("dynamicChallengeExpiryMinutes") + .withSchema(TableName.PkiScepEnrollmentConfig) + .as("scepConfigDynamicChallengeExpiryMinutes"), + db + .ref("dynamicChallengeMaxPending") + .withSchema(TableName.PkiScepEnrollmentConfig) + .as("scepConfigDynamicChallengeMaxPending") ) .where(`${TableName.PkiCertificateProfile}.id`, id) .first(); @@ -247,7 +256,10 @@ export const certificateProfileDALFactory = (db: TDbClient) => { raCertificatePem: result.scepConfigRaCertificate, raCertExpiresAt: result.scepConfigRaCertExpiresAt, includeCaCertInResponse: result.scepConfigIncludeCaCertInResponse ?? true, - allowCertBasedRenewal: result.scepConfigAllowCertBasedRenewal ?? true + allowCertBasedRenewal: result.scepConfigAllowCertBasedRenewal ?? true, + challengeType: result.scepConfigChallengeType, + dynamicChallengeExpiryMinutes: result.scepConfigDynamicChallengeExpiryMinutes, + dynamicChallengeMaxPending: result.scepConfigDynamicChallengeMaxPending } as TCertificateProfileWithConfigs["scepConfig"]) : undefined; @@ -430,7 +442,16 @@ export const certificateProfileDALFactory = (db: TDbClient) => { .ref("includeCaCertInResponse") .withSchema(TableName.PkiScepEnrollmentConfig) .as("scepIncludeCaCertInResponse"), - db.ref("allowCertBasedRenewal").withSchema(TableName.PkiScepEnrollmentConfig).as("scepAllowCertBasedRenewal") + db.ref("allowCertBasedRenewal").withSchema(TableName.PkiScepEnrollmentConfig).as("scepAllowCertBasedRenewal"), + db.ref("challengeType").withSchema(TableName.PkiScepEnrollmentConfig).as("scepChallengeType"), + db + .ref("dynamicChallengeExpiryMinutes") + .withSchema(TableName.PkiScepEnrollmentConfig) + .as("scepDynamicChallengeExpiryMinutes"), + db + .ref("dynamicChallengeMaxPending") + .withSchema(TableName.PkiScepEnrollmentConfig) + .as("scepDynamicChallengeMaxPending") ); if (processedRules) { @@ -479,7 +500,10 @@ export const certificateProfileDALFactory = (db: TDbClient) => { raCertificatePem: result.scepRaCertificate as string, raCertExpiresAt: result.scepRaCertExpiresAt as Date, includeCaCertInResponse: (result.scepIncludeCaCertInResponse as boolean) ?? true, - allowCertBasedRenewal: (result.scepAllowCertBasedRenewal as boolean) ?? true + allowCertBasedRenewal: (result.scepAllowCertBasedRenewal as boolean) ?? true, + challengeType: result.scepChallengeType as string, + dynamicChallengeExpiryMinutes: result.scepDynamicChallengeExpiryMinutes as number, + dynamicChallengeMaxPending: result.scepDynamicChallengeMaxPending as number } : undefined; diff --git a/backend/src/services/certificate-profile/certificate-profile-service.ts b/backend/src/services/certificate-profile/certificate-profile-service.ts index dc392b5c8e5..b52cb862bb6 100644 --- a/backend/src/services/certificate-profile/certificate-profile-service.ts +++ b/backend/src/services/certificate-profile/certificate-profile-service.ts @@ -9,6 +9,7 @@ import { ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; import { buildUrl } from "@app/ee/services/pki-acme/pki-acme-fns"; +import { ScepChallengeType } from "@app/ee/services/pki-scep/challenge"; import { generateRaCertificate } from "@app/ee/services/pki-scep/pki-scep-fns"; import { getProcessedPermissionRules } from "@app/lib/casl/permission-filter-utils"; import { extractX509CertFromChain } from "@app/lib/certificates/extract-certificate"; @@ -414,9 +415,12 @@ export const certificateProfileServiceFactory = ({ encryptedRaPrivateKey: Buffer; raCertificatePem: string; raCertExpiresAt: Date; - hashedChallengePassword: string; + hashedChallengePassword: string | null; + challengeType: string; includeCaCertInResponse: boolean; allowCertBasedRenewal: boolean; + dynamicChallengeExpiryMinutes: number; + dynamicChallengeMaxPending: number; } | undefined; @@ -433,18 +437,26 @@ export const certificateProfileServiceFactory = ({ plainText: Buffer.from(raCert.privateKeyDer) }); - const appCfg = getConfig(); - const hashedChallengePassword = await crypto - .hashing() - .createHash(data.scepConfig.challengePassword, appCfg.SALT_ROUNDS); + const challengeType = (data.scepConfig.challengeType as ScepChallengeType) || ScepChallengeType.STATIC; + let hashedChallengePassword: string | null = null; + + if (challengeType === ScepChallengeType.STATIC && data.scepConfig.challengePassword) { + const appCfg = getConfig(); + hashedChallengePassword = await crypto + .hashing() + .createHash(data.scepConfig.challengePassword, appCfg.SALT_ROUNDS); + } precomputedScepConfig = { encryptedRaPrivateKey, raCertificatePem: raCert.certificatePem, raCertExpiresAt: raCert.expiresAt, hashedChallengePassword, + challengeType, includeCaCertInResponse: data.scepConfig.includeCaCertInResponse ?? true, - allowCertBasedRenewal: data.scepConfig.allowCertBasedRenewal ?? true + allowCertBasedRenewal: data.scepConfig.allowCertBasedRenewal ?? true, + dynamicChallengeExpiryMinutes: data.scepConfig.dynamicChallengeExpiryMinutes ?? 60, + dynamicChallengeMaxPending: data.scepConfig.dynamicChallengeMaxPending ?? 100 }; } @@ -507,8 +519,11 @@ export const certificateProfileServiceFactory = ({ raCertificate: precomputedScepConfig.raCertificatePem, raCertExpiresAt: precomputedScepConfig.raCertExpiresAt, hashedChallengePassword: precomputedScepConfig.hashedChallengePassword, + challengeType: precomputedScepConfig.challengeType, includeCaCertInResponse: precomputedScepConfig.includeCaCertInResponse, - allowCertBasedRenewal: precomputedScepConfig.allowCertBasedRenewal + allowCertBasedRenewal: precomputedScepConfig.allowCertBasedRenewal, + dynamicChallengeExpiryMinutes: precomputedScepConfig.dynamicChallengeExpiryMinutes, + dynamicChallengeMaxPending: precomputedScepConfig.dynamicChallengeMaxPending }, tx ); @@ -711,12 +726,21 @@ export const certificateProfileServiceFactory = ({ if (scepConfig && existingProfile.scepConfigId) { const scepUpdateData: { - hashedChallengePassword?: string; + hashedChallengePassword?: string | null; + challengeType?: string; includeCaCertInResponse?: boolean; allowCertBasedRenewal?: boolean; + dynamicChallengeExpiryMinutes?: number; + dynamicChallengeMaxPending?: number; } = {}; - if (scepConfig.challengePassword) { + if (scepConfig.challengeType !== undefined) { + scepUpdateData.challengeType = scepConfig.challengeType; + if (scepConfig.challengeType === ScepChallengeType.DYNAMIC) { + scepUpdateData.hashedChallengePassword = null; + } + } + if (scepConfig.challengePassword && scepUpdateData.challengeType !== ScepChallengeType.DYNAMIC) { scepUpdateData.hashedChallengePassword = await crypto .hashing() .createHash(scepConfig.challengePassword, getConfig().SALT_ROUNDS); @@ -727,6 +751,12 @@ export const certificateProfileServiceFactory = ({ if (scepConfig.allowCertBasedRenewal !== undefined) { scepUpdateData.allowCertBasedRenewal = scepConfig.allowCertBasedRenewal; } + if (scepConfig.dynamicChallengeExpiryMinutes !== undefined) { + scepUpdateData.dynamicChallengeExpiryMinutes = scepConfig.dynamicChallengeExpiryMinutes; + } + if (scepConfig.dynamicChallengeMaxPending !== undefined) { + scepUpdateData.dynamicChallengeMaxPending = scepConfig.dynamicChallengeMaxPending; + } if (Object.keys(scepUpdateData).length > 0) { await scepEnrollmentConfigDAL.updateById(existingProfile.scepConfigId, scepUpdateData, tx); } @@ -839,6 +869,9 @@ export const certificateProfileServiceFactory = ({ const appCfg = getConfig(); const siteUrl = appCfg.SITE_URL ?? ""; profile.scepConfig.scepEndpointUrl = `${siteUrl}/scep/${profile.id}/pkiclient.exe`; + if (profile.scepConfig.challengeType === ScepChallengeType.DYNAMIC) { + profile.scepConfig.challengeEndpointUrl = `${siteUrl}/scep/${profile.id}/challenge`; + } } // Parse externalConfigs from JSON string to object if it exists @@ -1017,7 +1050,13 @@ export const certificateProfileServiceFactory = ({ ? { ...profileWithConfigs.acmeConfig, directoryUrl: buildUrl(profile.id, "/directory") } : undefined, scepConfig: profileWithConfigs.scepConfig - ? { ...profileWithConfigs.scepConfig, scepEndpointUrl: `${siteUrl}/scep/${profile.id}/pkiclient.exe` } + ? { + ...profileWithConfigs.scepConfig, + scepEndpointUrl: `${siteUrl}/scep/${profile.id}/pkiclient.exe`, + ...(profileWithConfigs.scepConfig.challengeType === ScepChallengeType.DYNAMIC + ? { challengeEndpointUrl: `${siteUrl}/scep/${profile.id}/challenge` } + : {}) + } : undefined }; diff --git a/backend/src/services/certificate-profile/certificate-profile-types.ts b/backend/src/services/certificate-profile/certificate-profile-types.ts index 5d38505e466..b8bf90f4cc3 100644 --- a/backend/src/services/certificate-profile/certificate-profile-types.ts +++ b/backend/src/services/certificate-profile/certificate-profile-types.ts @@ -80,9 +80,12 @@ export type TCertificateProfileUpdate = Omit< skipEabBinding?: boolean; }; scepConfig?: { + challengeType?: string; challengePassword?: string; includeCaCertInResponse?: boolean; allowCertBasedRenewal?: boolean; + dynamicChallengeExpiryMinutes?: number; + dynamicChallengeMaxPending?: number; }; }; @@ -130,6 +133,10 @@ export type TCertificateProfileWithConfigs = TCertificateProfile & { raCertExpiresAt: Date; includeCaCertInResponse: boolean; allowCertBasedRenewal: boolean; + challengeType: string; + challengeEndpointUrl?: string; + dynamicChallengeExpiryMinutes: number; + dynamicChallengeMaxPending: number; }; }; diff --git a/backend/src/services/enrollment-config/enrollment-config-types.ts b/backend/src/services/enrollment-config/enrollment-config-types.ts index badf981a17a..afc31220b99 100644 --- a/backend/src/services/enrollment-config/enrollment-config-types.ts +++ b/backend/src/services/enrollment-config/enrollment-config-types.ts @@ -52,7 +52,10 @@ export type TScepEnrollmentConfigInsert = TPkiScepEnrollmentConfigsInsert; export type TScepEnrollmentConfigUpdate = TPkiScepEnrollmentConfigsUpdate; export interface TScepConfigData { - challengePassword: string; + challengeType?: string; + challengePassword?: string; includeCaCertInResponse?: boolean; allowCertBasedRenewal?: boolean; + dynamicChallengeExpiryMinutes?: number; + dynamicChallengeMaxPending?: number; } diff --git a/docs/documentation/platform/pki/enrollment-methods/scep.mdx b/docs/documentation/platform/pki/enrollment-methods/scep.mdx index ba27c3aac56..ba6ec25ebda 100644 --- a/docs/documentation/platform/pki/enrollment-methods/scep.mdx +++ b/docs/documentation/platform/pki/enrollment-methods/scep.mdx @@ -27,6 +27,43 @@ For self-hosted Infisical instances, replace `app.infisical.com` with your insta - A SCEP-compatible client (e.g., [sscep](https://github.com/certnanny/sscep)) or a network device with built-in SCEP support. - A certificate profile with a **CA-issued** issuer type. +## Challenge Types + +Infisical supports two challenge authentication modes for SCEP enrollment: + + + + A single shared secret password is configured on the certificate profile. All SCEP clients must include this password in their certificate signing request (CSR) to authenticate. + + This is the simplest option and works well when the same challenge password is acceptable for all devices enrolling through the profile. + + - The challenge password must be at least 8 characters. + - The password is hashed before storage and cannot be retrieved after creation. + + + One-time-use challenge passwords are generated on demand via an authenticated API endpoint. Each challenge can only be used once and expires after a configurable time period. + + This mode is designed for MDM tools like **Jamf Pro** that support fetching a challenge from an external webhook before delivering the SCEP profile to a device. + + When dynamic challenges are enabled, Infisical exposes a challenge endpoint at: + + ``` + https://app.infisical.com/scep/{profile_id}/challenge + ``` + + The endpoint accepts authenticated `POST` requests and returns a plain-text one-time challenge password. The caller must authenticate using a [Machine Identity](/documentation/platform/identities/machine-identities) access token. + + Configuration options for dynamic challenges: + + - **Challenge Expiry (minutes)**: How long each generated challenge remains valid before expiring. Default: 60 minutes. Maximum: 1440 minutes (24 hours). + - **Max Pending Challenges**: Maximum number of unused challenges that can exist at once. Default: 100. Maximum: 1000. + + + Dynamic challenges are consumed on first use. Once a device successfully enrolls with a challenge, that challenge cannot be reused. Expired and used challenges are automatically cleaned up. + + + + ## Guide to Certificate Enrollment via SCEP In the following steps, we walk through how to issue an X.509 certificate using the SCEP enrollment method. @@ -37,7 +74,10 @@ In the following steps, we walk through how to issue an X.509 certificate using Here's some guidance on each SCEP-specific configuration field: - - **Challenge Password**: A shared secret that SCEP clients must include in their certificate signing request (CSR) to authenticate with Infisical's SCEP server. Must be at least 8 characters. + - **Challenge Type**: Select **Static** for a shared password or **Dynamic** for one-time-use challenges generated via API. See [Challenge Types](#challenge-types) above. + - **Challenge Password** (static only): A shared secret that SCEP clients must include in their certificate signing request (CSR) to authenticate with Infisical's SCEP server. Must be at least 8 characters. + - **Challenge Expiry** (dynamic only): How long each generated challenge remains valid, in minutes. + - **Max Pending Challenges** (dynamic only): Maximum number of unused challenges that can exist at once. - **Include CA Cert in Response**: When enabled, the CA certificate chain is included alongside the RA certificate in the GetCACert response. Most SCEP clients expect this to be enabled (default: enabled). - **Allow Certificate-Based Renewal**: When enabled, devices that already hold a valid certificate issued by the same CA can renew their certificate without providing the challenge password (default: enabled). @@ -53,79 +93,114 @@ In the following steps, we walk through how to issue an X.509 certificate using Where `{profile_id}` is the UUID of the certificate profile. This is the URL you provide to your SCEP clients as the SCEP server URL. + For profiles with **dynamic challenges** enabled, you will also see a **Challenge Endpoint URL**: + + ``` + https://app.infisical.com/scep/{profile_id}/challenge + ``` + + This is the URL your MDM tool or automation calls to generate one-time challenge passwords. + Provide the **SCEP endpoint URL** and **challenge password** from the previous steps to your SCEP client. - Below is an example using [sscep](https://github.com/certnanny/sscep), an open-source SCEP client. + + + Below is an example using [sscep](https://github.com/certnanny/sscep), an open-source SCEP client. - **1. Retrieve the CA/RA certificates:** + **1. Retrieve the CA/RA certificates:** - ```bash - sscep getca \ - -u https://app.infisical.com/scep/{profile_id}/pkiclient.exe \ - -c ca.pem - ``` + ```bash + sscep getca \ + -u https://app.infisical.com/scep/{profile_id}/pkiclient.exe \ + -c ca.pem + ``` - This writes the RA certificate to `ca.pem-0` and the CA certificate to `ca.pem-1` (when "Include CA Cert in Response" is enabled). + This writes the RA certificate to `ca.pem-0` and the CA certificate to `ca.pem-1` (when "Include CA Cert in Response" is enabled). - **2. Generate a device key and CSR with the challenge password:** + **2. Generate a device key and CSR with the challenge password:** - The challenge password must be embedded in the CSR as a PKCS#9 attribute. Create an OpenSSL config file to include it: + The challenge password must be embedded in the CSR as a PKCS#9 attribute. Create an OpenSSL config file to include it: - ```bash - cat > device-csr.cnf << 'EOF' - [req] - default_bits = 2048 - prompt = no - distinguished_name = dn - attributes = req_attributes - - [dn] - CN = my-device.example.com - - [req_attributes] - challengePassword = your-challenge-password - EOF - - # Generate the key and CSR - openssl genrsa -out device.key 2048 - openssl req -new -key device.key -out device.csr -config device-csr.cnf - ``` + ```bash + cat > device-csr.cnf << 'EOF' + [req] + default_bits = 2048 + prompt = no + distinguished_name = dn + attributes = req_attributes - **3. Create a self-signed certificate for the sscep signing identity:** + [dn] + CN = my-device.example.com - sscep requires a local signing certificate to sign the SCEP request envelope: + [req_attributes] + challengePassword = your-challenge-password + EOF - ```bash - openssl x509 -req -in device.csr -signkey device.key \ - -out device-selfsigned.pem -days 1 - ``` + # Generate the key and CSR + openssl genrsa -out device.key 2048 + openssl req -new -key device.key -out device.csr -config device-csr.cnf + ``` - **4. Enroll via SCEP:** + **3. Create a self-signed certificate for the sscep signing identity:** - ```bash - sscep enroll \ - -u https://app.infisical.com/scep/{profile_id}/pkiclient.exe \ - -c ca.pem-0 \ - -k device.key \ - -r device.csr \ - -l device-cert.pem \ - -K device.key \ - -O device-selfsigned.pem \ - -E aes256 \ - -S sha256 - ``` + sscep requires a local signing certificate to sign the SCEP request envelope: - On success, the issued certificate is written to `device-cert.pem`. + ```bash + openssl x509 -req -in device.csr -signkey device.key \ + -out device-selfsigned.pem -days 1 + ``` - - Flag reference for the enroll command: - - `-c ca.pem-0` is the RA certificate from step 1 - - `-K` / `-O` are the signing key and self-signed certificate used to sign the SCEP message envelope - - `-E aes256` selects AES-256-CBC encryption - - `-S sha256` selects SHA-256 for the message digest - + **4. Enroll via SCEP:** + + ```bash + sscep enroll \ + -u https://app.infisical.com/scep/{profile_id}/pkiclient.exe \ + -c ca.pem-0 \ + -k device.key \ + -r device.csr \ + -l device-cert.pem \ + -K device.key \ + -O device-selfsigned.pem \ + -E aes256 \ + -S sha256 + ``` + + On success, the issued certificate is written to `device-cert.pem`. + + + Flag reference for the enroll command: + - `-c ca.pem-0` is the RA certificate from step 1 + - `-K` / `-O` are the signing key and self-signed certificate used to sign the SCEP message envelope + - `-E aes256` selects AES-256-CBC encryption + - `-S sha256` selects SHA-256 for the message digest + + + + For dynamic challenges, you first generate a one-time challenge password via the API, then use it as the challenge password in the SCEP enrollment. + + **1. Generate a dynamic challenge:** + + ```bash + curl -s -X POST \ + https://app.infisical.com/scep/{profile_id}/challenge \ + -H "Authorization: Bearer " + ``` + + The response body is the plain-text challenge password. Save it for use in the enrollment. + + **2. Use the challenge in your SCEP enrollment:** + + Follow the same steps as the static challenge flow above, but use the dynamically generated challenge password instead of a fixed one. + + + Each dynamic challenge can only be used once. If enrollment fails, generate a new challenge and retry. + + + For MDM integrations (Jamf Pro, Ivanti, etc.), the MDM tool handles this automatically via webhook. See the [Jamf Pro integration guide](/documentation/platform/pki/integration-guides/jamf-pro-scep) for details. + + SCEP uses CMS/PKCS#7 encrypted messages to protect the certificate request in transit. The challenge password is included inside the encrypted envelope and is never sent in plaintext over the network. @@ -173,6 +248,11 @@ Infisical's SCEP server supports the following algorithms for the CMS message ex The RA (Registration Authority) certificate is automatically generated when you create a SCEP-enabled certificate profile. It is used to encrypt and sign the SCEP message exchange between the client and server. The RA certificate has a 10-year validity and is separate from your CA certificate. + + Use **static challenges** for simple setups where a shared password is acceptable, such as network devices or test environments. + + Use **dynamic challenges** when integrating with MDM tools (Jamf Pro, Ivanti, Workspace ONE) that support fetching one-time challenges via webhook. Dynamic challenges provide stronger security since each challenge can only be used once and expires automatically. + Yes, if **Allow Certificate-Based Renewal** is enabled on the certificate profile. Devices that already hold a valid certificate issued by the same CA can submit a renewal request (RenewalReq) signed with their existing certificate, without needing the challenge password. diff --git a/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx b/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx index fcaea5d1aac..2a47e759c39 100644 --- a/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx +++ b/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx @@ -7,6 +7,8 @@ This guide demonstrates how to use Infisical to issue and distribute certificate With this integration, Jamf Pro acts as the SCEP client on behalf of your managed devices, once a configuration profile is saved and scoped, enrolled devices automatically receive certificates issued by your Infisical Certificate Manager without any manual intervention on the device. +Infisical supports both **static** and **dynamic** SCEP challenges with Jamf Pro. Dynamic challenges provide stronger security by generating a unique, one-time-use challenge password for each device enrollment. + ## Prerequisites Before you begin, make sure you have: @@ -14,6 +16,7 @@ Before you begin, make sure you have: - A [Jamf Pro](https://www.jamf.com/products/jamf-pro/) instance with administrative access. - A [certificate profile](/documentation/platform/pki/certificates/profiles) configured with the [SCEP enrollment method](/documentation/platform/pki/enrollment-methods/scep) in Infisical. Refer to the [SCEP enrollment guide](/documentation/platform/pki/enrollment-methods/scep) for setup instructions. - One or more computers or mobile devices enrolled in Jamf Pro. +- For **dynamic challenges**: A [Machine Identity](/documentation/platform/identities/machine-identities) with access to the project containing the certificate profile. ## Guide @@ -24,7 +27,34 @@ Before you begin, make sure you have: From the certificate profile, gather the following values: - **SCEP URL**: The SCEP endpoint URL for your certificate profile. This takes the form `https://app.infisical.com/scep/{profile_id}/pkiclient.exe`. For self-hosted instances, replace `app.infisical.com` with your instance's domain. - - **Challenge Password**: The shared secret configured on the SCEP enrollment method. + + + + - **Challenge Password**: The shared secret configured on the SCEP enrollment method. + + + - **Challenge Endpoint URL**: The authenticated endpoint for generating one-time challenges. This takes the form `https://app.infisical.com/scep/{profile_id}/challenge`. + - **Machine Identity Access Token**: An access token for a Machine Identity with permissions on the project. You can obtain this by authenticating a [Machine Identity](/documentation/platform/identities/machine-identities) configured with [Token Auth](/documentation/platform/identities/token-auth). + + With dynamic challenges, Jamf Pro calls a webhook to fetch a one-time challenge password for each device enrollment. Configure this webhook now: + + ![Jamf Pro webhook configuration for SCEP challenges](/images/platform/pki/integrations/jamf-pro/jamf-webhook-config.png) + + 1. In Jamf Pro, navigate to **Settings** > **Global Management** > **Webhooks**. + 2. Click **+ New** to create a new webhook. + 3. Configure the webhook with the following settings: + - **Display Name**: A descriptive name (e.g., `Infisical SCEP Challenge`). + - **Enabled**: Check this box. + - **Webhook URL**: Enter the **Challenge Endpoint URL** from above. + - **Authentication Type**: Select **Header Authentication**. + - **Header Name**: Enter `Authorization`. + - **Header Value**: Enter `Bearer `. + - **Content Type**: Select **JSON**. + - **Webhook Event**: Select **SCEPChallenge**. + 4. Click **Save**. + + + @@ -70,6 +100,13 @@ Before you begin, make sure you have: ![SCEP configuration — Challenge and certificate options](/images/platform/pki/integrations/jamf-pro/scep-config-challenge.png) + + - **Challenge Type**: Select **Dynamic** from the dropdown. + + No manual challenge password entry is needed, Jamf Pro automatically calls the webhook configured in step 1 to fetch a one-time challenge for each device enrollment. + + ![SCEP configuration — Dynamic challenge type selected](/images/platform/pki/integrations/jamf-pro/scep-config-challenge-dynamic.png) + Finally, configure the remaining certificate options: diff --git a/docs/images/platform/pki/integrations/jamf-pro/jamf-webhook-config.png b/docs/images/platform/pki/integrations/jamf-pro/jamf-webhook-config.png new file mode 100644 index 0000000000000000000000000000000000000000..1169a466b8b3f2d5c9b922aec8d16263fec620a9 GIT binary patch literal 138483 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 z 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
( + name="scepConfig.challengeType" + render={({ field: { value, onChange }, fieldState: { error } }) => ( - { + onChange(val); + if (val === ScepChallengeType.DYNAMIC) { + setValue("scepConfig.challengePassword", ""); + } + }} className="w-full" - /> + > + + Static Challenge + + + Dynamic Challenge + + )} /> + {watchedChallengeType !== ScepChallengeType.DYNAMIC && ( + ( + + + + )} + /> + )} + + {watchedChallengeType === ScepChallengeType.DYNAMIC && ( + <> + ( + + { + const val = e.target.value; + field.onChange(val === "" ? undefined : Number(val)); + }} + value={field.value ?? ""} + /> + + )} + /> + ( + + { + const val = e.target.value; + field.onChange(val === "" ? undefined : Number(val)); + }} + value={field.value ?? ""} + /> + + )} + /> + + )} + { const [isUrlCopied, setIsUrlCopied] = useToggle(false); + const [isChallengeUrlCopied, setIsChallengeUrlCopied] = useToggle(false); const { scepConfig } = profile; const scepEndpointUrl = scepConfig?.scepEndpointUrl ?? ""; @@ -77,6 +81,35 @@ export const ScepDetailsModal = ({ isOpen, onClose, profile }: Props) => {
+ {scepConfig.challengeType === ScepChallengeType.DYNAMIC && + scepConfig.challengeEndpointUrl && ( + <> + +
+ + { + navigator.clipboard.writeText(scepConfig.challengeEndpointUrl!); + setIsChallengeUrlCopied.on(); + setTimeout(() => { + setIsChallengeUrlCopied.off(); + }, RESET_COPIED_DELAY); + }} + className="w-10" + > + + +
+ + )} + Date: Tue, 14 Apr 2026 00:49:26 -0300 Subject: [PATCH 081/562] Address PR comments --- .../db/schemas/pki-scep-enrollment-configs.ts | 6 +-- backend/src/ee/routes/scep/pki-scep-router.ts | 15 ++++++ .../pki-scep-dynamic-challenge-dal.ts | 4 +- .../ee/services/pki-scep/pki-scep-service.ts | 48 +++++++++---------- .../routes/v1/certificate-profiles-router.ts | 23 +++++++++ 5 files changed, 65 insertions(+), 31 deletions(-) diff --git a/backend/src/db/schemas/pki-scep-enrollment-configs.ts b/backend/src/db/schemas/pki-scep-enrollment-configs.ts index 9c0cfb18a2c..dced3b93885 100644 --- a/backend/src/db/schemas/pki-scep-enrollment-configs.ts +++ b/backend/src/db/schemas/pki-scep-enrollment-configs.ts @@ -17,11 +17,11 @@ export const PkiScepEnrollmentConfigsSchema = z.object({ hashedChallengePassword: z.string().nullable().optional(), includeCaCertInResponse: z.boolean().default(true), allowCertBasedRenewal: z.boolean().default(true), + createdAt: z.date(), + updatedAt: z.date(), challengeType: z.string().default("static"), dynamicChallengeExpiryMinutes: z.number().default(60), - dynamicChallengeMaxPending: z.number().default(100), - createdAt: z.date(), - updatedAt: z.date() + dynamicChallengeMaxPending: z.number().default(100) }); export type TPkiScepEnrollmentConfigs = z.infer; diff --git a/backend/src/ee/routes/scep/pki-scep-router.ts b/backend/src/ee/routes/scep/pki-scep-router.ts index d308fc98347..5de4b84f265 100644 --- a/backend/src/ee/routes/scep/pki-scep-router.ts +++ b/backend/src/ee/routes/scep/pki-scep-router.ts @@ -1,5 +1,6 @@ import { z } from "zod"; +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { BadRequestError } from "@app/lib/errors"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; @@ -142,6 +143,20 @@ export const registerPkiScepRouter = async (server: FastifyZodProvider) => { actorOrgId: req.permission.orgId }); + void server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + projectId: result.projectId, + event: { + type: EventType.SCEP_DYNAMIC_CHALLENGE_GENERATED, + metadata: { + profileId, + profileSlug: result.profileSlug, + expiresAt: result.expiresAt, + clientIp: clientIp || "unknown" + } + } + }); + void res.header("Content-Type", "text/plain"); return res.send(result.challenge); } diff --git a/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts b/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts index aea087704b3..6862627c6d0 100644 --- a/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts +++ b/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts @@ -12,7 +12,7 @@ export const scepDynamicChallengeDALFactory = (db: TDbClient) => { const findUnusedByConfigId = async (scepConfigId: string, tx?: Knex) => { try { - const results = await (tx || db.replicaNode())(TableName.PkiScepDynamicChallenge) + const results = await (tx || db)(TableName.PkiScepDynamicChallenge) .where({ scepConfigId }) .whereNull("usedAt") .where("expiresAt", ">", new Date()); @@ -25,7 +25,7 @@ export const scepDynamicChallengeDALFactory = (db: TDbClient) => { const countPending = async (scepConfigId: string, tx?: Knex) => { try { - const result = await (tx || db.replicaNode())(TableName.PkiScepDynamicChallenge) + const result = await (tx || db)(TableName.PkiScepDynamicChallenge) .where({ scepConfigId }) .whereNull("usedAt") .where("expiresAt", ">", new Date()) diff --git a/backend/src/ee/services/pki-scep/pki-scep-service.ts b/backend/src/ee/services/pki-scep/pki-scep-service.ts index 0d70404e704..07a62e19d32 100644 --- a/backend/src/ee/services/pki-scep/pki-scep-service.ts +++ b/backend/src/ee/services/pki-scep/pki-scep-service.ts @@ -907,13 +907,6 @@ export const pkiScepServiceFactory = ({ }); } - const pendingCount = await scepDynamicChallengeDAL.countPending(scepConfig.id); - if (pendingCount >= scepConfig.dynamicChallengeMaxPending) { - throw new BadRequestError({ - message: `Maximum number of pending challenges (${scepConfig.dynamicChallengeMaxPending}) reached. Wait for existing challenges to expire or be used.` - }); - } - const challengePlaintext = randomBytes(32).toString("hex"); const appCfg = getConfig(); @@ -922,30 +915,33 @@ export const pkiScepServiceFactory = ({ const expiresAt = new Date(); expiresAt.setMinutes(expiresAt.getMinutes() + scepConfig.dynamicChallengeExpiryMinutes); - await scepDynamicChallengeDAL.create({ - scepConfigId: scepConfig.id, - hashedChallenge, - expiresAt, - clientIp: clientIp || null + await scepDynamicChallengeDAL.transaction(async (tx) => { + const pendingCount = await scepDynamicChallengeDAL.countPending(scepConfig.id, tx); + if (pendingCount >= scepConfig.dynamicChallengeMaxPending) { + throw new BadRequestError({ + message: `Maximum number of pending challenges (${scepConfig.dynamicChallengeMaxPending}) reached. Wait for existing challenges to expire or be used.` + }); + } + + await scepDynamicChallengeDAL.create( + { + scepConfigId: scepConfig.id, + hashedChallenge, + expiresAt, + clientIp: clientIp || null + }, + tx + ); }); void scepDynamicChallengeDAL.pruneExpired(scepConfig.id); - void auditLogService.createAuditLog({ + return { + challenge: challengePlaintext, projectId: profile.projectId, - actor: { type: ActorType.SCEP_ACCOUNT, metadata: { profileId: profile.id } }, - event: { - type: EventType.SCEP_DYNAMIC_CHALLENGE_GENERATED, - metadata: { - profileId: profile.id, - profileSlug: profile.slug, - expiresAt: expiresAt.toISOString(), - clientIp: clientIp || "unknown" - } - } - }); - - return { challenge: challengePlaintext }; + profileSlug: profile.slug, + expiresAt: expiresAt.toISOString() + }; }; return { diff --git a/backend/src/server/routes/v1/certificate-profiles-router.ts b/backend/src/server/routes/v1/certificate-profiles-router.ts index 0d2f8ef1793..f78a6099c8e 100644 --- a/backend/src/server/routes/v1/certificate-profiles-router.ts +++ b/backend/src/server/routes/v1/certificate-profiles-router.ts @@ -652,6 +652,29 @@ export const registerCertificateProfilesRouter = async ( { message: "Cannot skip both External Account Binding (EAB) and DNS ownership verification at the same time." } + ) + .refine( + (data) => { + if (data.scepConfig?.challengePassword) { + if (data.scepConfig.challengeType === ScepChallengeType.DYNAMIC) return true; + return data.scepConfig.challengePassword.length >= 8; + } + return true; + }, + { + message: "SCEP static challenge requires a challenge password with at least 8 characters" + } + ) + .refine( + (data) => { + if (data.scepConfig?.challengeType === ScepChallengeType.STATIC) { + return !!data.scepConfig.challengePassword; + } + return true; + }, + { + message: "Switching to static challenge type requires providing a challenge password" + } ), response: { 200: z.object({ From c5262d5f9118222a87e3fd9c747ce2ed90dcf974 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 09:16:13 -0400 Subject: [PATCH 082/562] fix: check gatewayId instead of gatewayIdentityId for GATEWAY actors GATEWAY actors carry a gateway ID, not an identity ID. The session authorization checks in updateLogsById, endSessionById, and uploadEventBatch were comparing actor.id against gatewayIdentityId, which would never match for enrollment-flow gateways. --- .../pam-session/pam-session-service.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/backend/src/ee/services/pam-session/pam-session-service.ts b/backend/src/ee/services/pam-session/pam-session-service.ts index 582eba3b24a..f5532937005 100644 --- a/backend/src/ee/services/pam-session/pam-session-service.ts +++ b/backend/src/ee/services/pam-session/pam-session-service.ts @@ -173,8 +173,12 @@ export const pamSessionServiceFactory = ({ ); } - if (session.gatewayIdentityId && session.gatewayIdentityId !== actor.id) { - throw new ForbiddenRequestError({ message: "Identity does not have access to update logs for this session" }); + const authorized = + actor.type === ActorType.GATEWAY + ? !session.gatewayId || session.gatewayId === actor.id + : !session.gatewayIdentityId || session.gatewayIdentityId === actor.id; + if (!authorized) { + throw new ForbiddenRequestError({ message: "Gateway does not have access to update logs for this session" }); } const { encryptor } = await kmsService.createCipherPairWithDataKey({ @@ -219,8 +223,7 @@ export const pamSessionServiceFactory = ({ throw new ForbiddenRequestError({ message: "Identity does not have access to end this session" }); } } else if (actor.type === ActorType.GATEWAY) { - // Enrollment-flow gateways authenticate directly; JWT proves org membership. - if (session.gatewayIdentityId && session.gatewayIdentityId !== actor.id) { + if (session.gatewayId && session.gatewayId !== actor.id) { throw new ForbiddenRequestError({ message: "Gateway does not have access to end this session" }); } } else if (actor.type === ActorType.USER) { @@ -409,8 +412,12 @@ export const pamSessionServiceFactory = ({ ); } - if (session.gatewayIdentityId && session.gatewayIdentityId !== actor.id) { - throw new ForbiddenRequestError({ message: "Identity does not have access to upload events for this session" }); + const authorized = + actor.type === ActorType.GATEWAY + ? !session.gatewayId || session.gatewayId === actor.id + : !session.gatewayIdentityId || session.gatewayIdentityId === actor.id; + if (!authorized) { + throw new ForbiddenRequestError({ message: "Gateway does not have access to upload events for this session" }); } const { encryptor } = await kmsService.createCipherPairWithDataKey({ From 35f6a57fed1af2648c76c75c16b2eda1a8b1e666 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 09:19:38 -0400 Subject: [PATCH 083/562] fix: atomic enrollment token consumption to prevent race condition Replace findOne + updateById with a single UPDATE WHERE usedAt IS NULL so concurrent enrollment requests can't both consume the same token. --- .../services/gateway-v2/gateway-v2-service.ts | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index e414038363c..d4dc44baa11 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -3,7 +3,7 @@ import net from "node:net"; import { ForbiddenError } from "@casl/ability"; import * as x509 from "@peculiar/x509"; -import { OrganizationActionScope, OrgMembershipRole, OrgMembershipStatus, TRelays } from "@app/db/schemas"; +import { OrganizationActionScope, OrgMembershipRole, OrgMembershipStatus, TableName, TRelays } from "@app/db/schemas"; import { PgSqlLock } from "@app/keystore/keystore"; import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto"; @@ -1308,14 +1308,19 @@ export const gatewayV2ServiceFactory = ({ if (!relay) throw new NotFoundError({ message: "No relay available for auto-selection" }); } - // Single-use check inside a transaction — re-read to guard against races - await gatewayEnrollmentTokenDAL.transaction(async (tx) => { - const locked = await gatewayEnrollmentTokenDAL.findOne({ id: tokenRecord.id }, tx); - if (!locked || locked.usedAt) { - throw new BadRequestError({ message: "Enrollment token has already been used" }); - } - await gatewayEnrollmentTokenDAL.updateById(tokenRecord.id, { usedAt: new Date() }, tx); + // Atomic single-use consumption: only marks the token as used if usedAt is still null. + // The WHERE usedAt IS NULL ensures concurrent requests can't both succeed. + const consumed = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + const rows = await tx(TableName.GatewayEnrollmentTokens) + .where({ id: tokenRecord.id }) + .whereNull("usedAt") + .update({ usedAt: new Date() }) + .returning("*"); + return rows.length > 0; }); + if (!consumed) { + throw new BadRequestError({ message: "Enrollment token has already been used" }); + } const orgCAs = await $getOrgCAs(orgId); From 0ddcd1674b8a6ef2d2c46a86e4c309ebd87b3d59 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 09:26:38 -0400 Subject: [PATCH 084/562] fix: separate shared gateway query from token-aware query, transactional re-enroll - Split gatewaysQueryKeys.list() (shared, no tokens) from listWithTokens() (Gateway tab only) so gateway pickers in other forms don't show enrollment tokens as selectable gateways - Wrap both re-enroll branches in transactions so tokenVersion bump, old token cleanup, and new token creation are atomic --- .../services/gateway-v2/gateway-v2-service.ts | 72 +++++++++++-------- .../src/hooks/api/gateways-v2/mutations.tsx | 15 ++-- frontend/src/hooks/api/gateways/queries.tsx | 22 ++++++ .../NetworkHealthBanner.tsx | 1 - .../components/GatewayTab/GatewayTab.tsx | 4 +- .../components/GatewayCliDeploymentMethod.tsx | 2 +- .../GatewayCliSystemdDeploymentMethod.tsx | 2 +- 7 files changed, 78 insertions(+), 40 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index d4dc44baa11..a9d78b9f55f 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1464,58 +1464,68 @@ export const gatewayV2ServiceFactory = ({ ); if (gatewayId) { - // Re-enroll an existing (enrolled) gateway + // Re-enroll an existing (enrolled) gateway. + // Wrapped in a transaction so tokenVersion bump, old token cleanup, and new token + // creation are atomic. If any step fails, the gateway's JWT is not revoked. const gateway = await gatewayV2DAL.findById(gatewayId); if (!gateway || gateway.orgId !== orgPermission.orgId) { throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); } - // Bump tokenVersion to invalidate the current JWT and clear health status - await gatewayV2DAL.updateById(gatewayId, { - $incr: { tokenVersion: 1 }, - heartbeat: null, - lastHealthCheckStatus: null - }); + const gatewayToken = $generateEnrollmentToken(); - // Delete any existing unused enrollment tokens for this gateway - const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }); - const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); - if (unusedTokenIds.length > 0) { - await gatewayEnrollmentTokenDAL.delete({ $in: { id: unusedTokenIds } }); - } + const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + await gatewayV2DAL.updateById( + gatewayId, + { $incr: { tokenVersion: 1 }, heartbeat: null, lastHealthCheckStatus: null }, + tx + ); - // Create a new enrollment token linked to the existing gateway - const gatewayToken = $generateEnrollmentToken(); + const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }, { tx }); + const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); + if (unusedTokenIds.length > 0) { + await gatewayEnrollmentTokenDAL.delete({ $in: { id: unusedTokenIds } }, tx); + } - const record = await gatewayEnrollmentTokenDAL.create({ - orgId: orgPermission.orgId, - name: gateway.name, - tokenHash: gatewayToken.tokenHash, - ttl: ENROLLMENT_TOKEN_TTL_SECONDS, - expiresAt: gatewayToken.expiresAt, - gatewayId + return gatewayEnrollmentTokenDAL.create( + { + orgId: orgPermission.orgId, + name: gateway.name, + tokenHash: gatewayToken.tokenHash, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, + expiresAt: gatewayToken.expiresAt, + gatewayId + }, + tx + ); }); return { ...record, token: gatewayToken.plainToken }; } if (tokenId) { - // Re-enroll a pending gateway (replace the enrollment token) + // Re-enroll a pending gateway (replace the enrollment token). + // Wrapped in a transaction so delete + create are atomic. const oldToken = await gatewayEnrollmentTokenDAL.findOne({ id: tokenId, orgId: orgPermission.orgId }); if (!oldToken) { throw new NotFoundError({ message: `Enrollment token ${tokenId} not found` }); } - await gatewayEnrollmentTokenDAL.deleteById(tokenId); - const pendingToken = $generateEnrollmentToken(); - const record = await gatewayEnrollmentTokenDAL.create({ - orgId: orgPermission.orgId, - name: oldToken.name, - tokenHash: pendingToken.tokenHash, - ttl: ENROLLMENT_TOKEN_TTL_SECONDS, - expiresAt: pendingToken.expiresAt + const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + await gatewayEnrollmentTokenDAL.deleteById(tokenId, tx); + + return gatewayEnrollmentTokenDAL.create( + { + orgId: orgPermission.orgId, + name: oldToken.name, + tokenHash: pendingToken.tokenHash, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, + expiresAt: pendingToken.expiresAt + }, + tx + ); }); return { ...record, token: pendingToken.plainToken }; diff --git a/frontend/src/hooks/api/gateways-v2/mutations.tsx b/frontend/src/hooks/api/gateways-v2/mutations.tsx index e2a1160debb..841c4237412 100644 --- a/frontend/src/hooks/api/gateways-v2/mutations.tsx +++ b/frontend/src/hooks/api/gateways-v2/mutations.tsx @@ -7,6 +7,11 @@ import { TCreateGatewayEnrollmentTokenResponse } from "./types"; export const gatewayEnrollmentTokenQueryKey = () => ["gateway-enrollment-tokens"]; +const invalidateGatewayQueries = (queryClient: ReturnType) => { + queryClient.invalidateQueries(gatewaysQueryKeys.list()); + queryClient.invalidateQueries(gatewaysQueryKeys.listWithTokens()); +}; + export const useDeleteGatewayV2ById = () => { const queryClient = useQueryClient(); return useMutation({ @@ -14,7 +19,7 @@ export const useDeleteGatewayV2ById = () => { return apiRequest.delete(`/api/v2/gateways/${id}`); }, onSuccess: () => { - queryClient.invalidateQueries(gatewaysQueryKeys.list()); + invalidateGatewayQueries(queryClient); } }); }; @@ -26,7 +31,7 @@ export const useTriggerGatewayV2Heartbeat = () => { return apiRequest.post(`/api/v2/gateways/${id}/heartbeat`); }, onSettled: () => { - queryClient.invalidateQueries(gatewaysQueryKeys.list()); + invalidateGatewayQueries(queryClient); } }); }; @@ -42,7 +47,7 @@ export const useCreateGatewayEnrollmentToken = () => { return data; }, onSuccess: () => { - queryClient.invalidateQueries(gatewaysQueryKeys.list()); + invalidateGatewayQueries(queryClient); } }); }; @@ -58,7 +63,7 @@ export const useReEnrollGateway = () => { return data; }, onSuccess: () => { - queryClient.invalidateQueries(gatewaysQueryKeys.list()); + invalidateGatewayQueries(queryClient); } }); }; @@ -70,7 +75,7 @@ export const useDeleteGatewayEnrollmentToken = () => { await apiRequest.delete(`/api/v2/gateways/enrollment-tokens/${tokenId}`); }, onSuccess: () => { - queryClient.invalidateQueries(gatewaysQueryKeys.list()); + invalidateGatewayQueries(queryClient); } }); }; diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index eb116f48013..79db1a2808a 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -11,6 +11,28 @@ export const gatewaysQueryKeys = { list: () => queryOptions({ queryKey: gatewaysQueryKeys.listKey(), + queryFn: async () => { + const [{ data }, { data: dataV2 }] = await Promise.all([ + apiRequest.get<{ gateways: TGateway[] }>("/api/v1/gateways"), + apiRequest.get("/api/v2/gateways") + ]); + + return [ + ...data.gateways.map((g) => ({ + ...g, + isV1: true as const + })), + ...dataV2.map((g) => ({ + ...g, + isV1: false as const + })) + ]; + } + }), + listWithTokensKey: () => [...gatewaysQueryKeys.allKey(), "list-with-tokens"], + listWithTokens: () => + queryOptions({ + queryKey: gatewaysQueryKeys.listWithTokensKey(), queryFn: async () => { const [{ data }, { data: dataV2 }, { data: enrollmentTokens }] = await Promise.all([ apiRequest.get<{ gateways: TGateway[] }>("/api/v1/gateways"), diff --git a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx index 44acddee8b8..7b571beff9f 100644 --- a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx @@ -64,7 +64,6 @@ export const NetworkHealthBanner = () => { const unreachableGateways = useMemo( () => gateways?.filter((g) => { - if (g.isPending) return false; if ( "lastHealthCheckStatus" in g && g.lastHealthCheckStatus === GatewayHealthCheckStatus.Failed diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 3d2ebb198e3..81fc9bf01a2 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -152,7 +152,9 @@ export const GatewayTab = withPermission( id: string; name: string; } | null>(null); - const { data: gateways, isPending: isGatewaysLoading } = useQuery(gatewaysQueryKeys.list()); + const { data: gateways, isPending: isGatewaysLoading } = useQuery( + gatewaysQueryKeys.listWithTokens() + ); const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ "deployGateway", diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx index 0eab7100d97..d6caf1fca6b 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx @@ -56,7 +56,7 @@ export const GatewayCliDeploymentMethod = () => { return errorMap; }, [formErrors]); - const { data: gateways } = useQuery(gatewaysQueryKeys.list()); + const { data: gateways } = useQuery(gatewaysQueryKeys.listWithTokens()); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = useCreateGatewayEnrollmentToken(); diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx index 63fc170c562..c9bbfa9eb66 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx @@ -56,7 +56,7 @@ export const GatewayCliSystemdDeploymentMethod = () => { return errorMap; }, [formErrors]); - const { data: gateways } = useQuery(gatewaysQueryKeys.list()); + const { data: gateways } = useQuery(gatewaysQueryKeys.listWithTokens()); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = useCreateGatewayEnrollmentToken(); From 925516c33efea0bed8cafe655aaf16bd2e35fd63 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 09:46:06 -0400 Subject: [PATCH 085/562] feat: zero-downtime gateway re-enrollment Defer JWT invalidation from re-enroll time to enrollment time so the old gateway keeps running until the new machine actually enrolls. Show "Re-enrolling" badge on gateways with pending re-enrollment tokens without overriding their health status. --- .../services/gateway-v2/gateway-v2-service.ts | 24 +++++++++---------- frontend/src/hooks/api/gateways/queries.tsx | 5 ++-- .../components/GatewayTab/GatewayTab.tsx | 5 ++++ .../components/ReEnrollGatewayModal.tsx | 2 +- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index a9d78b9f55f..3b1cd668a2e 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1327,13 +1327,17 @@ export const gatewayV2ServiceFactory = ({ try { let gateway; if (tokenRecord.gatewayId) { - // Re-enrollment: reuse existing gateway record, update relay if changed + // Re-enrollment: reuse existing gateway record. + // Bump tokenVersion to invalidate the old machine's JWT and clear health status. const existing = await gatewayV2DAL.findById(tokenRecord.gatewayId); if (!existing) throw new NotFoundError({ message: `Gateway ${tokenRecord.gatewayId} not found` }); - if (relay.id !== existing.relayId) { - await gatewayV2DAL.updateById(existing.id, { relayId: relay.id }); - } - gateway = { ...existing, relayId: relay.id }; + const updated = await gatewayV2DAL.updateById(existing.id, { + $incr: { tokenVersion: 1 }, + relayId: relay.id, + heartbeat: null, + lastHealthCheckStatus: null + }); + gateway = updated; } else { // Fresh enrollment: create new gateway record gateway = await gatewayV2DAL.create({ @@ -1465,8 +1469,8 @@ export const gatewayV2ServiceFactory = ({ if (gatewayId) { // Re-enroll an existing (enrolled) gateway. - // Wrapped in a transaction so tokenVersion bump, old token cleanup, and new token - // creation are atomic. If any step fails, the gateway's JWT is not revoked. + // The old gateway keeps running until the new machine enrolls with this token. + // tokenVersion is bumped in enrollGateway when the token is consumed, not here. const gateway = await gatewayV2DAL.findById(gatewayId); if (!gateway || gateway.orgId !== orgPermission.orgId) { throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); @@ -1475,12 +1479,6 @@ export const gatewayV2ServiceFactory = ({ const gatewayToken = $generateEnrollmentToken(); const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { - await gatewayV2DAL.updateById( - gatewayId, - { $incr: { tokenVersion: 1 }, heartbeat: null, lastHealthCheckStatus: null }, - tx - ); - const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }, { tx }); const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); if (unusedTokenIds.length > 0) { diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index 79db1a2808a..eed9541344a 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -67,9 +67,10 @@ export const gatewaysQueryKeys = { ...dataV2.map((g) => ({ ...g, isV1: false as const, - isPending: reEnrollGatewayIds.has(g.id) as boolean, + isPending: false as const, isExpired: false as const, - isTokenOnly: false as const + isTokenOnly: false as const, + hasReEnrollToken: reEnrollGatewayIds.has(g.id) as boolean })), ...standaloneTokens.map((t) => ({ id: t.id, diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 81fc9bf01a2..bb7f4cf185e 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -298,6 +298,11 @@ export const GatewayTab = withPermission( ); })()} + {"hasReEnrollToken" in el && el.hasReEnrollToken && ( + + Re-enrolling + + )}

^n`4S9#giiMHfkvn)dqBk6PDV2VwAiEAk0xnHDfP6RC%XP8ZY_ zx=ajb^p_8ZX;z77P+x1SMABsn%+Y$0Qgj#{JNn0e83NO!2FAL`vpa@X9; z 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 literal 0 HcmV?d00001 diff --git a/docs/images/platform/pki/integrations/jamf-pro/scep-config-challenge-dynamic.png b/docs/images/platform/pki/integrations/jamf-pro/scep-config-challenge-dynamic.png new file mode 100644 index 0000000000000000000000000000000000000000..c6023bbec59addd4f7866243ec8033fcb90a14bb GIT binary patch literal 504877 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� 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 I9otv`3nx`P^8f$< literal 0 HcmV?d00001 diff --git a/frontend/src/hooks/api/certificateProfiles/types.ts b/frontend/src/hooks/api/certificateProfiles/types.ts index 76c432a91e8..40ddde69526 100644 --- a/frontend/src/hooks/api/certificateProfiles/types.ts +++ b/frontend/src/hooks/api/certificateProfiles/types.ts @@ -10,6 +10,11 @@ export enum IssuerType { SELF_SIGNED = "self-signed" } +export enum ScepChallengeType { + STATIC = "static", + DYNAMIC = "dynamic" +} + export type TCertificateProfileDefaults = { ttlDays?: number; commonName?: string; @@ -89,6 +94,10 @@ export type TCertificateProfileWithDetails = TCertificateProfile & { raCertExpiresAt: string; includeCaCertInResponse: boolean; allowCertBasedRenewal: boolean; + challengeType: ScepChallengeType; + challengeEndpointUrl?: string; + dynamicChallengeExpiryMinutes: number; + dynamicChallengeMaxPending: number; }; }; @@ -114,9 +123,12 @@ export type TCreateCertificateProfileDTO = { skipEabBinding?: boolean; }; scepConfig?: { - challengePassword: string; + challengeType?: ScepChallengeType; + challengePassword?: string; includeCaCertInResponse?: boolean; allowCertBasedRenewal?: boolean; + dynamicChallengeExpiryMinutes?: number; + dynamicChallengeMaxPending?: number; }; externalConfigs?: Record | null; defaults?: TCertificateProfileDefaults | null; @@ -142,9 +154,12 @@ export type TUpdateCertificateProfileDTO = { skipEabBinding?: boolean; }; scepConfig?: { + challengeType?: ScepChallengeType; challengePassword?: string; includeCaCertInResponse?: boolean; allowCertBasedRenewal?: boolean; + dynamicChallengeExpiryMinutes?: number; + dynamicChallengeMaxPending?: number; }; externalConfigs?: Record | null; defaults?: TCertificateProfileDefaults | null; diff --git a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx index f79dfbaf8fc..d7b9e115310 100644 --- a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx +++ b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx @@ -44,6 +44,7 @@ import { import { EnrollmentType, IssuerType, + ScepChallengeType, TCertificateProfileDefaults, TCertificateProfileWithDetails, TCreateCertificateProfileDTO, @@ -174,9 +175,12 @@ const createSchema = z .optional(), scepConfig: z .object({ - challengePassword: z.string().min(8, "Challenge password must be at least 8 characters"), + challengeType: z.nativeEnum(ScepChallengeType).default(ScepChallengeType.STATIC), + challengePassword: z.string().optional(), includeCaCertInResponse: z.boolean().optional(), - allowCertBasedRenewal: z.boolean().optional() + allowCertBasedRenewal: z.boolean().optional(), + dynamicChallengeExpiryMinutes: z.number().min(1).max(1440).optional(), + dynamicChallengeMaxPending: z.number().min(1).max(1000).optional() }) .optional(), externalConfigs: z @@ -230,6 +234,23 @@ const createSchema = z message: "SCEP enrollment type requires SCEP configuration" } ) + .refine( + (data) => { + if ( + data.enrollmentType === EnrollmentType.SCEP && + data.scepConfig && + data.scepConfig.challengeType !== ScepChallengeType.DYNAMIC && + (!data.scepConfig.challengePassword || data.scepConfig.challengePassword.length < 8) + ) { + return false; + } + return true; + }, + { + message: "Challenge password must be at least 8 characters for static challenges", + path: ["scepConfig", "challengePassword"] + } + ) .refine( (data) => { if (data.enrollmentType === EnrollmentType.EST) { @@ -360,9 +381,12 @@ const editSchema = z .optional(), scepConfig: z .object({ - challengePassword: z.string().min(8, "Challenge password must be at least 8 characters"), + challengeType: z.nativeEnum(ScepChallengeType).default(ScepChallengeType.STATIC), + challengePassword: z.string().optional(), includeCaCertInResponse: z.boolean().optional(), - allowCertBasedRenewal: z.boolean().optional() + allowCertBasedRenewal: z.boolean().optional(), + dynamicChallengeExpiryMinutes: z.number().min(1).max(1440).optional(), + dynamicChallengeMaxPending: z.number().min(1).max(1000).optional() }) .optional(), externalConfigs: z @@ -416,6 +440,25 @@ const editSchema = z message: "SCEP enrollment type requires SCEP configuration" } ) + .refine( + (data) => { + if ( + data.enrollmentType === EnrollmentType.SCEP && + data.scepConfig && + data.scepConfig.challengeType !== ScepChallengeType.DYNAMIC && + data.scepConfig.challengePassword && + data.scepConfig.challengePassword.length > 0 && + data.scepConfig.challengePassword.length < 8 + ) { + return false; + } + return true; + }, + { + message: "Challenge password must be at least 8 characters for static challenges", + path: ["scepConfig", "challengePassword"] + } + ) .refine( (data) => { if (data.enrollmentType === EnrollmentType.EST) { @@ -732,9 +775,15 @@ export const CreateProfileModal = ({ isOpen, onClose, profile, mode = "create" } scepConfig: profile.enrollmentType === EnrollmentType.SCEP ? { + challengeType: + (profile.scepConfig?.challengeType as ScepChallengeType) ?? + ScepChallengeType.STATIC, challengePassword: "", includeCaCertInResponse: profile.scepConfig?.includeCaCertInResponse ?? true, - allowCertBasedRenewal: profile.scepConfig?.allowCertBasedRenewal ?? true + allowCertBasedRenewal: profile.scepConfig?.allowCertBasedRenewal ?? true, + dynamicChallengeExpiryMinutes: + profile.scepConfig?.dynamicChallengeExpiryMinutes ?? 60, + dynamicChallengeMaxPending: profile.scepConfig?.dynamicChallengeMaxPending ?? 100 } : undefined, externalConfigs: profile.externalConfigs @@ -777,6 +826,7 @@ export const CreateProfileModal = ({ isOpen, onClose, profile, mode = "create" } const watchedAutoRenew = watch("apiConfig.autoRenew"); const watchedSkipDnsOwnershipVerification = watch("acmeConfig.skipDnsOwnershipVerification"); const watchedSkipEabBinding = watch("acmeConfig.skipEabBinding"); + const watchedChallengeType = watch("scepConfig.challengeType"); const watchedPolicyId = watch("certificatePolicyId"); const watchedDefaultsIsCA = watch("defaults.basicConstraints.isCA") || false; @@ -925,9 +975,15 @@ export const CreateProfileModal = ({ isOpen, onClose, profile, mode = "create" } scepConfig: profile.enrollmentType === EnrollmentType.SCEP ? { + challengeType: + (profile.scepConfig?.challengeType as ScepChallengeType) ?? + ScepChallengeType.STATIC, challengePassword: "", includeCaCertInResponse: profile.scepConfig?.includeCaCertInResponse ?? true, - allowCertBasedRenewal: profile.scepConfig?.allowCertBasedRenewal ?? true + allowCertBasedRenewal: profile.scepConfig?.allowCertBasedRenewal ?? true, + dynamicChallengeExpiryMinutes: + profile.scepConfig?.dynamicChallengeExpiryMinutes ?? 60, + dynamicChallengeMaxPending: profile.scepConfig?.dynamicChallengeMaxPending ?? 100 } : undefined, externalConfigs: profile.externalConfigs @@ -1340,9 +1396,12 @@ export const CreateProfileModal = ({ isOpen, onClose, profile, mode = "create" } setValue("apiConfig", undefined); setValue("acmeConfig", undefined); setValue("scepConfig", { + challengeType: ScepChallengeType.STATIC, challengePassword: "", includeCaCertInResponse: true, - allowCertBasedRenewal: true + allowCertBasedRenewal: true, + dynamicChallengeExpiryMinutes: 60, + dynamicChallengeMaxPending: 100 }); } }} @@ -1403,9 +1462,12 @@ export const CreateProfileModal = ({ isOpen, onClose, profile, mode = "create" } setValue("estConfig", undefined); setValue("acmeConfig", undefined); setValue("scepConfig", { + challengeType: ScepChallengeType.STATIC, challengePassword: "", includeCaCertInResponse: true, - allowCertBasedRenewal: true + allowCertBasedRenewal: true, + dynamicChallengeExpiryMinutes: 60, + dynamicChallengeMaxPending: 100 }); } onChange(value); @@ -1614,25 +1676,129 @@ export const CreateProfileModal = ({ isOpen, onClose, profile, mode = "create" }

diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index 47dee573018..103d75847d1 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -68,7 +68,7 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop if (step !== "confirm") return undefined; if (gatewayData.isTokenOnly) return "This will create a new enrollment token, replacing the expired one."; - return "This will create a new enrollment token and invalidate the current gateway credentials. The gateway will stop working until re-enrolled."; + return "This will create a new enrollment token. The existing gateway will keep running until the new machine enrolls."; })()} > {step === "confirm" && ( From 1537cee7a4252b7999f8c1a80d26fc8cc8311326 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 09:55:46 -0400 Subject: [PATCH 086/562] docs: add enrollment token deployment method and update CLI reference - Add enrollment token as the recommended deployment method in the gateway deployment guide with step-by-step instructions - Document gateway lifecycle states (Pending, Expired, Unregistered, Healthy, Unreachable, Re-enrolling) - Document re-enrollment flow and zero-downtime machine migration - Add enrollment token auth method to CLI reference - Update all CLI examples to use positional name argument - Mark --name flag as deprecated in favor of positional argument - Add --enroll-method flag documentation for both start and systemd --- docs/cli/commands/gateway.mdx | 126 ++++++++++++++---- .../platform/gateways/gateway-deployment.mdx | 99 +++++++++++++- 2 files changed, 193 insertions(+), 32 deletions(-) diff --git a/docs/cli/commands/gateway.mdx b/docs/cli/commands/gateway.mdx index e7da7a74f6c..69712bff6ca 100644 --- a/docs/cli/commands/gateway.mdx +++ b/docs/cli/commands/gateway.mdx @@ -4,14 +4,24 @@ description: "Run the Infisical gateway or manage its systemd service" --- - + ```bash - sudo infisical gateway start --name= --auth-method= + infisical gateway start --enroll-method=static --token= --domain= ``` - + ```bash - sudo infisical gateway systemd install --token= --domain= --name= + infisical gateway start --auth-method= + ``` + + + ```bash + sudo infisical gateway systemd install --enroll-method=static --token= --domain= + ``` + + + ```bash + sudo infisical gateway systemd install --token= --domain= ``` @@ -36,9 +46,11 @@ If you are moving from Gateway v1 to Gateway v2, this is NOT a drop-in switch. G Run the Infisical gateway component within your the network where your target resources are located. The gateway establishes an SSH reverse tunnel to a relay server and provides secure access to private resources within your network. ```bash -sudo infisical gateway start --name= --auth-method= +infisical gateway start --enroll-method=static --token= --domain= ``` +The gateway name is provided as a positional argument. The `--name` flag is still accepted for backwards compatibility but is deprecated. + By default, the gateway automatically connects to the relay with the lowest latency. To target a specific relay, use the `--target-relay-name=` flag. @@ -56,6 +68,34 @@ Once started, the gateway component will: The Gateway supports multiple authentication methods. Below are the available authentication methods, with their respective flags. + + The simplest way to deploy a gateway. Create the gateway in the Infisical UI, which generates a one-time enrollment token. The CLI enrolls and starts the gateway in a single command. + + + + + Must be `static` when using an enrollment token. + + + The one-time enrollment token from the Infisical UI. + + + The URL of your Infisical instance. + + + + + ```bash + infisical gateway start my-gateway --enroll-method=static --token= --domain=https://app.infisical.com + ``` + + After enrollment, the gateway saves its credentials locally. On subsequent restarts, just run: + + ```bash + infisical gateway start my-gateway + ``` + + The Universal Auth method is a simple and secure way to authenticate with Infisical. It requires a client ID and a client secret to authenticate with Infisical. @@ -74,7 +114,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=universal-auth --client-id= --client-secret= --name= + infisical gateway start --auth-method=universal-auth --client-id= --client-secret= ``` @@ -98,7 +138,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=kubernetes --machine-identity-id= --name= + infisical gateway start --auth-method=kubernetes --machine-identity-id= ``` @@ -119,7 +159,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=azure --machine-identity-id= --name= + infisical gateway start --auth-method=azure --machine-identity-id= ``` @@ -140,7 +180,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=gcp-id-token --machine-identity-id= --name= + infisical gateway start --auth-method=gcp-id-token --machine-identity-id= ``` @@ -162,7 +202,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=gcp-iam --machine-identity-id= --service-account-key-file-path= --name= + infisical gateway start --auth-method=gcp-iam --machine-identity-id= --service-account-key-file-path= ``` @@ -181,7 +221,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=aws-iam --machine-identity-id= --name= + infisical gateway start --auth-method=aws-iam --machine-identity-id= ``` @@ -203,7 +243,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=oidc-auth --machine-identity-id= --jwt= --name= + infisical gateway start --auth-method=oidc-auth --machine-identity-id= --jwt= ``` @@ -227,7 +267,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --auth-method=jwt-auth --jwt= --machine-identity-id= --name= + infisical gateway start --auth-method=jwt-auth --jwt= --machine-identity-id= ``` @@ -243,7 +283,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - sudo infisical gateway start --token= --name= + infisical gateway start --token= ``` @@ -259,19 +299,32 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash # Example - sudo infisical gateway start --target-relay-name=my-relay --name=my-gateway --token= + infisical gateway start my-gateway --target-relay-name=my-relay --token= ``` **Note:** For Infisical Cloud users using instance relays, the relay infrastructure is already running and managed by Infisical. If using organization relays or self-hosted instance relays, you must first start a relay server. For more information on deploying relays, refer to the [Relay Deployment Guide](/documentation/platform/gateways/relay-deployment). - - The name of the gateway instance. + + The name of the gateway instance. Deprecated in favor of the positional argument. + + ```bash + # Preferred (positional argument) + infisical gateway start my-gateway --token= + + # Deprecated (flag) + infisical gateway start my-gateway --token= + ``` + + + + + The enrollment method to use. When set to `static`, the `--token` flag is treated as a one-time enrollment token instead of a machine identity access token. ```bash # Example - sudo infisical gateway start --name=my-gateway --token= + infisical gateway start my-gateway --enroll-method=static --token= --domain= ``` @@ -281,7 +334,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash # Example - sudo infisical gateway start --domain=https://app.your-domain.com --name= + infisical gateway start --domain=https://app.your-domain.com ``` @@ -289,10 +342,14 @@ The Gateway supports multiple authentication methods. Below are the available au - Install and enable the gateway as a systemd service. This command must be run with sudo on Linux. + Install and enable the gateway as a systemd service. This command must be run with sudo on Linux. Supports both enrollment token and machine identity authentication. ```bash -sudo infisical gateway systemd install --token= --domain= --name= +# Enrollment token +sudo infisical gateway systemd install my-gateway --enroll-method=static --token= --domain= + +# Machine identity +sudo infisical gateway systemd install my-gateway --token= --domain= ``` ### Requirements @@ -304,12 +361,22 @@ sudo infisical gateway systemd install --token= --domain= --name= ### Flags + + The enrollment method to use. When set to `static`, the `--token` flag is treated as a one-time enrollment token. + + ```bash + # Example + sudo infisical gateway systemd install my-gateway --enroll-method=static --token= --domain= + ``` + + + - The machine identity access token to authenticate with Infisical. + The authentication token. When `--enroll-method=static` is set, this is a one-time enrollment token. Otherwise, it is a machine identity access token. ```bash # Example - sudo infisical gateway systemd install --token= --name= + sudo infisical gateway systemd install my-gateway --token= ``` You may also expose the token to the CLI by setting the environment variable `INFISICAL_TOKEN` before executing the install command. @@ -321,16 +388,19 @@ sudo infisical gateway systemd install --token= --domain= --name= ```bash # Example - sudo infisical gateway systemd install --domain=https://app.your-domain.com --name= + sudo infisical gateway systemd install my-gateway --domain=https://app.your-domain.com ``` - - The name of the gateway instance. + + The name of the gateway instance. Deprecated in favor of the positional argument. ```bash - # Example + # Preferred (positional argument) + sudo infisical gateway systemd install my-gateway --token= + + # Deprecated (flag) sudo infisical gateway systemd install --name=my-gateway --token= ``` @@ -343,7 +413,7 @@ sudo infisical gateway systemd install --token= --domain= --name= ```bash # Example - sudo infisical gateway systemd install --target-relay-name=my-relay --token= --name= + sudo infisical gateway systemd install --target-relay-name=my-relay --token= ``` **Note:** For Infisical Cloud users using instance relays, the relay infrastructure is already running and managed by Infisical. If using organization relays or self-hosted instance relays, you must first start a relay server. For more information on deploying relays, refer to the [Relay Deployment Guide](/documentation/platform/gateways/relay-deployment). diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index 0d81367754d..0e2b8c30cb9 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -6,9 +6,100 @@ description: "Complete guide to deploying Infisical Gateways including network c Infisical Gateways enables secure communication between your private resources and the Infisical platform without exposing inbound ports in your network. This guide covers everything you need to deploy and configure Infisical Gateways. -## Deployment Steps +## Deployment Methods -To successfully deploy an Infisical Gateway for use, follow these steps in order. +Infisical supports two methods for deploying gateways. Choose the one that fits your workflow: + +- **Enrollment Token (Recommended):** Create the gateway from the Infisical UI and run a single CLI command on the target machine. No machine identity setup required. +- **Machine Identity:** Provision a machine identity in advance and use its credentials to authenticate the gateway. Useful for automated/programmatic deployments. + +--- + +## Method 1: Enrollment Token + +The enrollment token method lets you create and deploy a gateway without provisioning a machine identity. You create the gateway in the Infisical UI, which gives you a one-time CLI command to run on the target machine. + + + + Ensure a relay server is running and accessible before you deploy any gateways. You have two options: + - **Managed relay (Infisical Cloud, US/EU only):** If you are using Infisical Cloud in the US or EU regions, you can use the provided managed relay. + - **Self-hosted relay:** For all other cases, you must deploy your own relay server. See the [Relay Deployment Guide](/documentation/platform/gateways/relay-deployment). + + + 1. Navigate to **Organization Settings > Networking > Gateways**. + 2. Click **Create Gateway**. + 3. Enter a name for your gateway and select a relay (or use "Auto Select Relay"). + 4. Choose your deployment method (CLI or systemd). + 5. Copy the generated CLI command. The command includes a one-time enrollment token that expires in 1 hour. + + + Make sure the Infisical CLI is installed on the target machine. See the [CLI Installation Guide](/cli/overview) for instructions. + + + Run the command you copied from the UI on the target machine. This single command enrolls the gateway and starts it immediately. + + + + For production deployments on Linux, install as a systemd service: + ```bash + sudo infisical gateway systemd install my-gateway \ + --enroll-method=static \ + --token= \ + --domain= + sudo systemctl start infisical-gateway + ``` + + + For development or testing, run directly in the foreground: + ```bash + infisical gateway start my-gateway \ + --enroll-method=static \ + --token= \ + --domain= + ``` + + + + + The enrollment token can only be used once and expires after 1 hour. If it expires, use the **Re-enroll** option in the gateway's context menu to generate a new one. + + + + After deployment, verify your gateway is working: + 1. **Check logs** for "Gateway started successfully" message. + 2. **Verify registration** in the Infisical UI. Navigate to **Networking > Gateways** and confirm the gateway shows a "Healthy" status. + 3. **Test connectivity** by creating a resource that uses the gateway to access a private service. + + + +### Gateway Lifecycle States + +After creating a gateway, it will transition through the following states in the UI: + +| State | Description | +| --- | --- | +| **Pending** | Enrollment token created, waiting for the CLI command to be run. | +| **Expired** | Enrollment token expired before being used. Use **Re-enroll** to generate a new one. | +| **Unregistered** | Gateway enrolled but has not connected yet (e.g., waiting for first heartbeat). | +| **Healthy** | Gateway is connected and responding to health checks. | +| **Unreachable** | Gateway was previously connected but the last health check failed. | +| **Re-enrolling** | A re-enrollment token has been created. The existing gateway continues running until the new machine enrolls. | + +### Re-enrollment + +To move a gateway to a different machine or regenerate its credentials: + +1. Click the context menu (three dots) next to the gateway and select **Re-enroll**. +2. Copy the new CLI command and run it on the new machine. +3. The existing gateway continues running until the new machine enrolls. Once the new machine connects, the old machine's credentials are automatically revoked. This enables zero-downtime machine migrations. + +--- + +## Method 2: Machine Identity + +The machine identity method uses pre-provisioned credentials to authenticate the gateway. This is useful for automated deployments where you manage identities programmatically. + +### Deployment Steps @@ -122,7 +213,7 @@ To successfully deploy an Infisical Gateway for use, follow these steps in order For production deployments on Linux servers, install the Gateway as a systemd service so that it runs securely in the background and automatically restarts on failure or system reboot: ```bash - sudo infisical gateway systemd install --token --domain --name + sudo infisical gateway systemd install --token --domain sudo systemctl start infisical-gateway ``` @@ -173,7 +264,7 @@ To successfully deploy an Infisical Gateway for use, follow these steps in order For development or testing environments: ```bash - sudo infisical gateway start --token --name= + infisical gateway start --token ``` From 28ce3eb017317bbb0f0dd370c68d3918cb306d9b Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 10:11:35 -0400 Subject: [PATCH 087/562] docs: simplify deployment intro, add enrollment token FAQs --- .../platform/gateways/gateway-deployment.mdx | 41 +++++++++---------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index 0e2b8c30cb9..227ac4d8782 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -8,16 +8,16 @@ This guide covers everything you need to deploy and configure Infisical Gateways ## Deployment Methods -Infisical supports two methods for deploying gateways. Choose the one that fits your workflow: +Infisical supports two methods for deploying gateways: -- **Enrollment Token (Recommended):** Create the gateway from the Infisical UI and run a single CLI command on the target machine. No machine identity setup required. +- **Enrollment Token (Recommended):** The simplest way to deploy a gateway. Create it from the Infisical UI and run a single CLI command on the target machine. - **Machine Identity:** Provision a machine identity in advance and use its credentials to authenticate the gateway. Useful for automated/programmatic deployments. --- ## Method 1: Enrollment Token -The enrollment token method lets you create and deploy a gateway without provisioning a machine identity. You create the gateway in the Infisical UI, which gives you a one-time CLI command to run on the target machine. +The recommended way to deploy a gateway. Create the gateway in the Infisical UI, which gives you a one-time CLI command to run on the target machine. @@ -72,19 +72,6 @@ The enrollment token method lets you create and deploy a gateway without provisi -### Gateway Lifecycle States - -After creating a gateway, it will transition through the following states in the UI: - -| State | Description | -| --- | --- | -| **Pending** | Enrollment token created, waiting for the CLI command to be run. | -| **Expired** | Enrollment token expired before being used. Use **Re-enroll** to generate a new one. | -| **Unregistered** | Gateway enrolled but has not connected yet (e.g., waiting for first heartbeat). | -| **Healthy** | Gateway is connected and responding to health checks. | -| **Unreachable** | Gateway was previously connected but the last health check failed. | -| **Re-enrolling** | A re-enrollment token has been created. The existing gateway continues running until the new machine enrolls. | - ### Re-enrollment To move a gateway to a different machine or regenerate its credentials: @@ -327,9 +314,8 @@ If the gateway cannot connect to the relay: If you encounter authentication failures: -1. Verify machine identity credentials are correct -2. Check token expiration and renewal -3. Ensure authentication method is properly configured +- **Enrollment token flow:** Ensure the enrollment token has not expired or already been used. If the gateway was re-enrolled, the old machine's credentials are no longer valid. +- **Machine identity flow:** Verify credentials are correct, check token expiration, and ensure the authentication method is properly configured. @@ -346,8 +332,21 @@ Check gateway logs for detailed error information: - **Local installation:** Logs appear in the terminal where you started the gateway - -For systemd-based installations, the gateway's configuration file is stored at `/etc/infisical/gateway.conf`. You may reference or inspect this file for troubleshooting advanced configuration issues. + +Enrollment tokens expire after 1 hour. If the token expires before you run the CLI command, the gateway will show as "Expired" in the UI. Click the context menu (three dots) next to it and select **Re-enroll** to generate a new token. + + + +Click the context menu next to the gateway and select **Re-enroll**. This generates a new enrollment token you can use on the new machine. The existing gateway continues running until the new machine enrolls, so there is no downtime during the migration. + + + +When using the enrollment token flow, the gateway's access token and domain are saved locally: + +- **Running as root/sudo:** `/etc/infisical/gateway.conf` +- **Running as a regular user:** `~/.infisical/gateway.conf` + +For systemd-based installations, the configuration is always at `/etc/infisical/gateway.conf`. The file is created with restricted permissions (0600) so only the owner can read it. From 6b35765bfba893f398b13fc1a7ca5ce335c85a61 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 10:33:32 -0400 Subject: [PATCH 088/562] fix: support enrollment-flow gateways in PAM session checks - Add gatewayId to session response schema so frontend can detect enrollment-flow gateway sessions (where gatewayIdentityId is null) - Fix checkAndExpireSessionIfNeeded to also check gatewayId - Fix isGatewaySession check in PamSessionByIDPage to match PamSessionRow --- backend/src/ee/services/pam-session/pam-session-schemas.ts | 1 + backend/src/ee/services/pam-session/pam-session-service.ts | 3 ++- frontend/src/hooks/api/pam/types/index.ts | 1 + .../src/pages/pam/PamSessionsByIDPage/PamSessionByIDPage.tsx | 2 +- .../pages/pam/PamSessionsPage/components/PamSessionRow.tsx | 5 +++-- 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/backend/src/ee/services/pam-session/pam-session-schemas.ts b/backend/src/ee/services/pam-session/pam-session-schemas.ts index 8174aafb7a1..c2e397494f5 100644 --- a/backend/src/ee/services/pam-session/pam-session-schemas.ts +++ b/backend/src/ee/services/pam-session/pam-session-schemas.ts @@ -60,6 +60,7 @@ export const SanitizedSessionSchema = PamSessionsSchema.omit({ }).extend({ logs: z.array(z.union([PamSessionCommandLogSchema, HttpEventSchema, TerminalEventSchema])), gatewayIdentityId: z.string().nullable().optional(), + gatewayId: z.string().nullable().optional(), aiInsights: AiInsightsSchema }); diff --git a/backend/src/ee/services/pam-session/pam-session-service.ts b/backend/src/ee/services/pam-session/pam-session-service.ts index f5532937005..8cbf5e78a1b 100644 --- a/backend/src/ee/services/pam-session/pam-session-service.ts +++ b/backend/src/ee/services/pam-session/pam-session-service.ts @@ -57,13 +57,14 @@ export const pamSessionServiceFactory = ({ status: string; expiresAt: Date | null; gatewayIdentityId?: string | null; + gatewayId?: string | null; projectId?: string | null; } >( session: T ): Promise => { // Skip gateway-based sessions - they have their own lifecycle managed by the gateway - if (session.gatewayIdentityId) { + if (session.gatewayIdentityId || session.gatewayId) { return session; } diff --git a/frontend/src/hooks/api/pam/types/index.ts b/frontend/src/hooks/api/pam/types/index.ts index 70968d91fc6..e1b99484355 100644 --- a/frontend/src/hooks/api/pam/types/index.ts +++ b/frontend/src/hooks/api/pam/types/index.ts @@ -128,6 +128,7 @@ export type TPamSession = { updatedAt: string; logs: TPamSessionLog[]; gatewayIdentityId?: string | null; + gatewayId?: string | null; aiInsightsStatus?: string | null; aiInsightsError?: string | null; aiInsights?: TPamSessionAiInsights | null; diff --git a/frontend/src/pages/pam/PamSessionsByIDPage/PamSessionByIDPage.tsx b/frontend/src/pages/pam/PamSessionsByIDPage/PamSessionByIDPage.tsx index f5506848d80..9022d70e242 100644 --- a/frontend/src/pages/pam/PamSessionsByIDPage/PamSessionByIDPage.tsx +++ b/frontend/src/pages/pam/PamSessionsByIDPage/PamSessionByIDPage.tsx @@ -59,7 +59,7 @@ const Page = () => { const isActive = session?.status === PamSessionStatus.Active || session?.status === PamSessionStatus.Starting; - const isGatewaySession = !!session?.gatewayIdentityId; + const isGatewaySession = !!session?.gatewayIdentityId || !!session?.gatewayId; return (
{session && ( diff --git a/frontend/src/pages/pam/PamSessionsPage/components/PamSessionRow.tsx b/frontend/src/pages/pam/PamSessionsPage/components/PamSessionRow.tsx index 8004fa0fa1a..f66377a9c59 100644 --- a/frontend/src/pages/pam/PamSessionsPage/components/PamSessionRow.tsx +++ b/frontend/src/pages/pam/PamSessionsPage/components/PamSessionRow.tsx @@ -66,11 +66,12 @@ export const PamSessionRow = ({ session, search, filteredLogs }: Props) => { actorEmail, createdAt, endedAt, - gatewayIdentityId + gatewayIdentityId, + gatewayId } = session; const isActive = status === PamSessionStatus.Active || status === PamSessionStatus.Starting; - const isGatewaySession = !!gatewayIdentityId; + const isGatewaySession = !!gatewayIdentityId || !!gatewayId; const { image, name: resourceTypeName } = PAM_RESOURCE_TYPE_MAP[resourceType]; From 14564b72c7871b13c2adccd90fa155eec54f84dc Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 12:33:45 -0400 Subject: [PATCH 089/562] docs: document idempotent enrollment command behavior --- docs/cli/commands/gateway.mdx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/cli/commands/gateway.mdx b/docs/cli/commands/gateway.mdx index 69712bff6ca..744352c3a2b 100644 --- a/docs/cli/commands/gateway.mdx +++ b/docs/cli/commands/gateway.mdx @@ -89,11 +89,7 @@ The Gateway supports multiple authentication methods. Below are the available au infisical gateway start my-gateway --enroll-method=static --token= --domain=https://app.infisical.com ``` - After enrollment, the gateway saves its credentials locally. On subsequent restarts, just run: - - ```bash - infisical gateway start my-gateway - ``` + After enrollment, the gateway saves its credentials locally. You can safely re-run the same command to restart the gateway. It will detect the token has already been used and skip enrollment automatically. @@ -756,6 +752,9 @@ sudo systemctl disable infisical-gateway # Disable auto-start on boot ## Frequently Asked Questions + + Yes. The CLI stores the enrollment token locally after the first successful enrollment. If you run the same command again with the same `--token` value, it detects the token has already been used and skips enrollment, proceeding directly to start the gateway. This means you can safely use the same command (e.g., via up-arrow in your shell) without getting "token already used" or "token expired" errors. + If the `--target-relay-name` flag is omitted, the gateway automatically selects the optimal relay. It first checks for healthy organization relays and connects to the one with the lowest latency. If no organization relays are available, it then performs the same latency-based selection among the available managed relays. From f6205670593cea65ffa73b8fd6b014dfe195b9d1 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 13:00:35 -0400 Subject: [PATCH 090/562] refactor: create gateway record at token creation time Gateway record now exists immediately when the enrollment token is created, so other features (K8s auth, dynamic secrets, app connections) can reference it by ID before the CLI enrolls. - createEnrollmentToken creates both gateway and token in one transaction - enrollGateway always updates existing gateway (no more create branch) - reEnrollGateway simplified to gatewayId only (no more tokenId branch) - Remove isTokenOnly from frontend, every list item is a real gateway - Simplify delete handler, query logic, and re-enroll modal --- backend/src/ee/routes/v2/gateway-router.ts | 7 +- .../ee/services/audit-log/audit-log-types.ts | 3 +- .../services/gateway-v2/gateway-v2-service.ts | 154 +++++++----------- .../src/hooks/api/gateways-v2/mutations.tsx | 4 +- frontend/src/hooks/api/gateways/queries.tsx | 47 +++--- .../components/GatewayTab/GatewayTab.tsx | 21 +-- .../components/ReEnrollGatewayModal.tsx | 19 +-- 7 files changed, 99 insertions(+), 156 deletions(-) diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index b701049b23e..795e4375f1b 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -378,8 +378,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { schema: { operationId: "reEnrollGateway", body: z.object({ - gatewayId: z.string().uuid().optional(), - tokenId: z.string().uuid().optional() + gatewayId: z.string().uuid() }), response: { 200: SanitizedEnrollmentTokenSchema.extend({ token: z.string() }) @@ -389,8 +388,7 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { handler: async (req) => { const result = await server.services.gatewayV2.reEnrollGateway({ orgPermission: req.permission, - gatewayId: req.body.gatewayId, - tokenId: req.body.tokenId + gatewayId: req.body.gatewayId }); await server.services.auditLog.createAuditLog({ @@ -400,7 +398,6 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { type: EventType.GATEWAY_RE_ENROLL, metadata: { gatewayId: req.body.gatewayId, - tokenId: result.id, name: result.name } } diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index e2afd8adff5..fa50ab0393f 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -5809,8 +5809,7 @@ interface GatewayEnrollEvent { interface GatewayReEnrollEvent { type: EventType.GATEWAY_RE_ENROLL; metadata: { - gatewayId?: string; - tokenId?: string; + gatewayId: string; name: string; }; } diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 3b1cd668a2e..a6fe1edbbd3 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1204,22 +1204,30 @@ export const gatewayV2ServiceFactory = ({ throw new BadRequestError({ message: `A gateway named "${name}" already exists` }); } - const existingTokens = await gatewayEnrollmentTokenDAL.find({ orgId, name }); - if (existingTokens.length > 0) { - throw new BadRequestError({ message: `An enrollment token named "${name}" already exists` }); - } - const { plainToken, tokenHash, expiresAt } = $generateEnrollmentToken(); - const record = await gatewayEnrollmentTokenDAL.create({ - orgId, - name, - tokenHash, - ttl: ENROLLMENT_TOKEN_TTL_SECONDS, - expiresAt + // Create both the gateway record and the enrollment token in a single transaction. + // The gateway exists immediately so other features (K8s auth, dynamic secrets, etc.) + // can reference it by ID before the CLI enrolls. + const { gateway, token: tokenRecord } = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + const gw = await gatewayV2DAL.create({ orgId, name }, tx); + + const tkn = await gatewayEnrollmentTokenDAL.create( + { + orgId, + name, + tokenHash, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, + expiresAt, + gatewayId: gw.id + }, + tx + ); + + return { gateway: gw, token: tkn }; }); - return { ...record, token: plainToken }; + return { ...tokenRecord, token: plainToken, gatewayId: gateway.id }; }; const listEnrollmentTokens = async ({ orgPermission }: { orgPermission: OrgServiceActor }) => { @@ -1325,27 +1333,19 @@ export const gatewayV2ServiceFactory = ({ const orgCAs = await $getOrgCAs(orgId); try { - let gateway; - if (tokenRecord.gatewayId) { - // Re-enrollment: reuse existing gateway record. - // Bump tokenVersion to invalidate the old machine's JWT and clear health status. - const existing = await gatewayV2DAL.findById(tokenRecord.gatewayId); - if (!existing) throw new NotFoundError({ message: `Gateway ${tokenRecord.gatewayId} not found` }); - const updated = await gatewayV2DAL.updateById(existing.id, { - $incr: { tokenVersion: 1 }, - relayId: relay.id, - heartbeat: null, - lastHealthCheckStatus: null - }); - gateway = updated; - } else { - // Fresh enrollment: create new gateway record - gateway = await gatewayV2DAL.create({ - orgId, - name, - relayId: relay.id - }); + // The gateway record was created at token creation time. + // Bump tokenVersion to invalidate any previous JWT and set the relay. + if (!tokenRecord.gatewayId) { + throw new BadRequestError({ message: "Enrollment token is not linked to a gateway" }); } + const existing = await gatewayV2DAL.findById(tokenRecord.gatewayId); + if (!existing) throw new NotFoundError({ message: `Gateway ${tokenRecord.gatewayId} not found` }); + const gateway = await gatewayV2DAL.updateById(existing.id, { + $incr: { tokenVersion: 1 }, + relayId: relay.id, + heartbeat: null, + lastHealthCheckStatus: null + }); const alg = keyAlgorithmToAlgCfg(CertKeyAlgorithm.RSA_2048); const gatewayServerCaCert = new x509.X509Certificate(orgCAs.gatewayServerCaCertificate); @@ -1446,12 +1446,10 @@ export const gatewayV2ServiceFactory = ({ const reEnrollGateway = async ({ orgPermission, - gatewayId, - tokenId + gatewayId }: { orgPermission: OrgServiceActor; - gatewayId?: string; - tokenId?: string; + gatewayId: string; }) => { const { permission } = await permissionService.getOrgPermission({ actor: orgPermission.type, @@ -1467,69 +1465,37 @@ export const gatewayV2ServiceFactory = ({ OrgPermissionSubjects.Gateway ); - if (gatewayId) { - // Re-enroll an existing (enrolled) gateway. - // The old gateway keeps running until the new machine enrolls with this token. - // tokenVersion is bumped in enrollGateway when the token is consumed, not here. - const gateway = await gatewayV2DAL.findById(gatewayId); - if (!gateway || gateway.orgId !== orgPermission.orgId) { - throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); - } - - const gatewayToken = $generateEnrollmentToken(); - - const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { - const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }, { tx }); - const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); - if (unusedTokenIds.length > 0) { - await gatewayEnrollmentTokenDAL.delete({ $in: { id: unusedTokenIds } }, tx); - } - - return gatewayEnrollmentTokenDAL.create( - { - orgId: orgPermission.orgId, - name: gateway.name, - tokenHash: gatewayToken.tokenHash, - ttl: ENROLLMENT_TOKEN_TTL_SECONDS, - expiresAt: gatewayToken.expiresAt, - gatewayId - }, - tx - ); - }); - - return { ...record, token: gatewayToken.plainToken }; + // Re-enroll a gateway (pending or enrolled). + // The old gateway keeps running until the new machine enrolls with this token. + // tokenVersion is bumped in enrollGateway when the token is consumed, not here. + const gateway = await gatewayV2DAL.findById(gatewayId); + if (!gateway || gateway.orgId !== orgPermission.orgId) { + throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); } - if (tokenId) { - // Re-enroll a pending gateway (replace the enrollment token). - // Wrapped in a transaction so delete + create are atomic. - const oldToken = await gatewayEnrollmentTokenDAL.findOne({ id: tokenId, orgId: orgPermission.orgId }); - if (!oldToken) { - throw new NotFoundError({ message: `Enrollment token ${tokenId} not found` }); - } - - const pendingToken = $generateEnrollmentToken(); + const gatewayToken = $generateEnrollmentToken(); - const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { - await gatewayEnrollmentTokenDAL.deleteById(tokenId, tx); - - return gatewayEnrollmentTokenDAL.create( - { - orgId: orgPermission.orgId, - name: oldToken.name, - tokenHash: pendingToken.tokenHash, - ttl: ENROLLMENT_TOKEN_TTL_SECONDS, - expiresAt: pendingToken.expiresAt - }, - tx - ); - }); + const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }, { tx }); + const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); + if (unusedTokenIds.length > 0) { + await gatewayEnrollmentTokenDAL.delete({ $in: { id: unusedTokenIds } }, tx); + } - return { ...record, token: pendingToken.plainToken }; - } + return gatewayEnrollmentTokenDAL.create( + { + orgId: orgPermission.orgId, + name: gateway.name, + tokenHash: gatewayToken.tokenHash, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, + expiresAt: gatewayToken.expiresAt, + gatewayId + }, + tx + ); + }); - throw new BadRequestError({ message: "Either gatewayId or tokenId must be provided" }); + return { ...record, token: gatewayToken.plainToken }; }; return { diff --git a/frontend/src/hooks/api/gateways-v2/mutations.tsx b/frontend/src/hooks/api/gateways-v2/mutations.tsx index 841c4237412..9dc805cd7d5 100644 --- a/frontend/src/hooks/api/gateways-v2/mutations.tsx +++ b/frontend/src/hooks/api/gateways-v2/mutations.tsx @@ -55,10 +55,10 @@ export const useCreateGatewayEnrollmentToken = () => { export const useReEnrollGateway = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ gatewayId, tokenId }: { gatewayId?: string; tokenId?: string }) => { + mutationFn: async ({ gatewayId }: { gatewayId: string }) => { const { data } = await apiRequest.post( "/api/v2/gateways/re-enroll", - { gatewayId, tokenId } + { gatewayId } ); return data; }, diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index eed9541344a..8bfb52fe22b 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -43,17 +43,18 @@ export const gatewaysQueryKeys = { const now = new Date(); const unusedTokens = enrollmentTokens.filter((t) => !t.usedAt); - // Gateways that have a pending (non-expired) re-enrollment token - const reEnrollGatewayIds = new Set( + // Gateways with a non-expired unused enrollment token (pending initial enrollment or re-enrollment) + const pendingGatewayIds = new Set( unusedTokens .filter((t) => t.gatewayId && new Date(t.expiresAt) > now) .map((t) => t.gatewayId) ); - // Standalone tokens (no gateway record yet), both active and expired - const enrolledNames = new Set(dataV2.map((g) => g.name)); - const standaloneTokens = unusedTokens.filter( - (t) => !t.gatewayId && !enrolledNames.has(t.name) + // Gateways whose only unused token is expired + const expiredGatewayIds = new Set( + unusedTokens + .filter((t) => t.gatewayId && new Date(t.expiresAt) <= now && !pendingGatewayIds.has(t.gatewayId)) + .map((t) => t.gatewayId) ); return [ @@ -62,26 +63,22 @@ export const gatewaysQueryKeys = { isV1: true as const, isPending: false as const, isExpired: false as const, - isTokenOnly: false as const + hasReEnrollToken: false as const })), - ...dataV2.map((g) => ({ - ...g, - isV1: false as const, - isPending: false as const, - isExpired: false as const, - isTokenOnly: false as const, - hasReEnrollToken: reEnrollGatewayIds.has(g.id) as boolean - })), - ...standaloneTokens.map((t) => ({ - id: t.id, - name: t.name, - createdAt: t.createdAt, - expiresAt: t.expiresAt, - isV1: false as const, - isPending: new Date(t.expiresAt) > now, - isExpired: new Date(t.expiresAt) <= now, - isTokenOnly: true as const - })) + ...dataV2.map((g) => { + const hasHeartbeat = !!g.heartbeat; + const isPending = pendingGatewayIds.has(g.id) && !hasHeartbeat; + const hasReEnrollToken = pendingGatewayIds.has(g.id) && hasHeartbeat; + const isExpired = expiredGatewayIds.has(g.id) && !hasHeartbeat; + + return { + ...g, + isV1: false as const, + isPending, + isExpired, + hasReEnrollToken + }; + }) ]; } }) diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index bb7f4cf185e..7eb7f014589 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -49,7 +49,6 @@ import { withPermission } from "@app/hoc"; import { usePopUp } from "@app/hooks"; import { gatewaysQueryKeys, useDeleteGatewayById } from "@app/hooks/api/gateways"; import { - useDeleteGatewayEnrollmentToken, useDeleteGatewayV2ById, useTriggerGatewayV2Heartbeat } from "@app/hooks/api/gateways-v2"; @@ -166,7 +165,6 @@ export const GatewayTab = withPermission( const deleteGatewayById = useDeleteGatewayById(); const deleteGatewayV2ById = useDeleteGatewayV2ById(); - const deleteEnrollmentToken = useDeleteGatewayEnrollmentToken(); const triggerGatewayV2Heartbeat = useTriggerGatewayV2Heartbeat(); const handleTriggerHealthCheck = async (id: string) => { @@ -188,12 +186,8 @@ export const GatewayTab = withPermission( const data = popUp.deleteGateway.data as { id: string; isV1: boolean; - isPending: boolean; - isTokenOnly: boolean; }; - if (data.isTokenOnly) { - await deleteEnrollmentToken.mutateAsync(data.id); - } else if (data.isV1) { + if (data.isV1) { await deleteGatewayById.mutateAsync(data.id); } else { await deleteGatewayV2ById.mutateAsync(data.id); @@ -202,9 +196,7 @@ export const GatewayTab = withPermission( handlePopUpToggle("deleteGateway"); createNotification({ type: "success", - text: data.isTokenOnly - ? "Successfully deleted enrollment token" - : "Successfully deleted gateway" + text: "Successfully deleted gateway" }); }; @@ -403,7 +395,7 @@ export const GatewayTab = withPermission( className="text-red" onClick={() => handlePopUpOpen("deleteGateway", el)} > - {el.isTokenOnly ? "Delete Token" : "Delete Gateway"} + Delete Gateway )} @@ -438,11 +430,7 @@ export const GatewayTab = withPermission( )} handlePopUpToggle("deleteGateway", isOpen)} deleteKey="confirm" onDeleteApproved={() => handleDeleteGateway()} @@ -459,7 +447,6 @@ export const GatewayTab = withPermission( id: string; name: string; isPending: boolean; - isTokenOnly: boolean; } | null } /> diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index 103d75847d1..02a214951d2 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -17,7 +17,7 @@ import { useReEnrollGateway } from "@app/hooks/api/gateways-v2"; type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; - gatewayData: { id: string; name: string; isPending: boolean; isTokenOnly: boolean } | null; + gatewayData: { id: string; name: string; isPending: boolean } | null; }; export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Props) => { @@ -34,9 +34,7 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop if (!gatewayData) return; try { - const result = await reEnroll( - gatewayData.isTokenOnly ? { tokenId: gatewayData.id } : { gatewayId: gatewayData.id } - ); + const result = await reEnroll({ gatewayId: gatewayData.id }); setEnrollmentToken(result.token); setStep("command"); } catch { @@ -64,12 +62,11 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop { - if (step !== "confirm") return undefined; - if (gatewayData.isTokenOnly) - return "This will create a new enrollment token, replacing the expired one."; - return "This will create a new enrollment token. The existing gateway will keep running until the new machine enrolls."; - })()} + subTitle={ + step === "confirm" + ? "This will create a new enrollment token. The existing gateway will keep running until the new machine enrolls." + : undefined + } > {step === "confirm" && (
@@ -80,7 +77,7 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop onClick={handleReEnroll} isLoading={isReEnrolling} > - {gatewayData.isTokenOnly ? "Create New Token" : "Re-enroll"} + Re-enroll - - - -
- )} - {step === "command" && ( - <> -

- Run the following command on the machine where you want to deploy the gateway. The - token expires in 1 hour and can only be used once. -

- -
- - { - navigator.clipboard.writeText(command); - createNotification({ text: "Command copied to clipboard", type: "info" }); - }} - className="w-10" + {step === "confirm" && ( + +
-
+ Re-enroll + -
- - )} -
+ } + > +
{ + evt.preventDefault(); + if (confirmText === "confirm") handleReEnroll(); + }} + > + + Type confirm to perform this action +
+ } + className="mb-0" + > + setConfirmText(e.target.value)} + placeholder="Type confirm here" + /> + + + + )} + {step === "command" && ( + +

+ Run the following command on the machine where you want to deploy the gateway. The + token expires in 1 hour and can only be used once. +

+ +
+ + { + navigator.clipboard.writeText(command); + createNotification({ text: "Command copied to clipboard", type: "info" }); + }} + className="w-10" + > + + +
+
+ + + +
+
+ )} ); }; From 3671417a62e46c24fa689a753a03509aeb0758b3 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 13:49:07 -0400 Subject: [PATCH 093/562] refactor: use $issueGatewayCerts in enrollGateway instead of inline cert generation --- .../services/gateway-v2/gateway-v2-service.ts | 74 +------------------ 1 file changed, 2 insertions(+), 72 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 806617e56e1..6dd4ee7c347 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1345,66 +1345,7 @@ export const gatewayV2ServiceFactory = ({ lastHealthCheckStatus: null }); - const alg = keyAlgorithmToAlgCfg(CertKeyAlgorithm.RSA_2048); - const gatewayServerCaCert = new x509.X509Certificate(orgCAs.gatewayServerCaCertificate); - const rootGatewayCaCert = new x509.X509Certificate(orgCAs.rootGatewayCaCertificate); - const gatewayClientCaCert = new x509.X509Certificate(orgCAs.gatewayClientCaCertificate); - - const gatewayServerCaSkObj = crypto.nativeCrypto.createPrivateKey({ - key: orgCAs.gatewayServerCaPrivateKey, - format: "der", - type: "pkcs8" - }); - const gatewayServerCaPrivateKey = await crypto.nativeCrypto.subtle.importKey( - "pkcs8", - gatewayServerCaSkObj.export({ format: "der", type: "pkcs8" }), - alg, - true, - ["sign"] - ); - - const gatewayServerKeys = await crypto.nativeCrypto.subtle.generateKey(alg, true, ["sign", "verify"]); - const gatewayServerCertIssuedAt = new Date(); - const gatewayServerCertExpireAt = new Date(new Date().setDate(new Date().getDate() + 1)); - const gatewayServerCertPrivateKey = crypto.nativeCrypto.KeyObject.from(gatewayServerKeys.privateKey); - - const gatewayServerCertExtensions: x509.Extension[] = [ - new x509.BasicConstraintsExtension(false), - await x509.AuthorityKeyIdentifierExtension.create(gatewayServerCaCert, false), - await x509.SubjectKeyIdentifierExtension.create(gatewayServerKeys.publicKey), - new x509.CertificatePolicyExtension(["2.5.29.32.0"]), - new x509.KeyUsagesExtension( - // eslint-disable-next-line no-bitwise - x509.KeyUsageFlags[CertKeyUsage.DIGITAL_SIGNATURE] | x509.KeyUsageFlags[CertKeyUsage.KEY_ENCIPHERMENT], - true - ), - new x509.ExtendedKeyUsageExtension([x509.ExtendedKeyUsage[CertExtendedKeyUsage.SERVER_AUTH]], true), - new x509.SubjectAlternativeNameExtension([ - { type: "dns", value: "localhost" }, - { type: "ip", value: "127.0.0.1" }, - { type: "ip", value: "::1" } - ]) - ]; - - const gatewayServerSerialNumber = createSerialNumber(); - const gatewayServerCertificate = await x509.X509CertificateGenerator.create({ - serialNumber: gatewayServerSerialNumber, - subject: `O=${orgId},CN=Gateway`, - issuer: gatewayServerCaCert.subject, - notBefore: gatewayServerCertIssuedAt, - notAfter: gatewayServerCertExpireAt, - signingKey: gatewayServerCaPrivateKey, - publicKey: gatewayServerKeys.publicKey, - signingAlgorithm: alg, - extensions: gatewayServerCertExtensions - }); - - const relayCredentials = await relayService.getCredentialsForGateway({ - relayName: relay.name, - orgId, - gatewayId: gateway.id, - gatewayName: gateway.name - }); + const certs = await $issueGatewayCerts({ orgId, orgCAs, relayName: relay.name, gateway }); const appCfg = getConfig(); const accessToken = crypto.jwt().sign( @@ -1419,20 +1360,9 @@ export const gatewayV2ServiceFactory = ({ return { accessToken, - gatewayId: gateway.id, gatewayName: gateway.name, orgId, - relayHost: relayCredentials.relayHost, - pki: { - serverCertificate: gatewayServerCertificate.toString("pem"), - serverPrivateKey: gatewayServerCertPrivateKey.export({ format: "pem", type: "pkcs8" }).toString(), - clientCertificateChain: constructPemChainFromCerts([gatewayClientCaCert, rootGatewayCaCert]) - }, - ssh: { - clientCertificate: relayCredentials.clientSshCert, - clientPrivateKey: relayCredentials.clientSshPrivateKey, - serverCAPublicKey: relayCredentials.serverCAPublicKey - } + ...certs }; } catch (err) { if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { From 1acef0987284010dcaecfa3ed8406c3dd4598868 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 14:08:46 -0400 Subject: [PATCH 094/562] docs: update config paths for per-gateway scoping, add multi-gateway FAQ --- .../platform/gateways/gateway-deployment.mdx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index 227ac4d8782..0329c350b3d 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -341,12 +341,16 @@ Click the context menu next to the gateway and select **Re-enroll**. This genera
-When using the enrollment token flow, the gateway's access token and domain are saved locally: +When using the enrollment token flow, each gateway's access token and domain are saved to a config file scoped by gateway name: -- **Running as root/sudo:** `/etc/infisical/gateway.conf` -- **Running as a regular user:** `~/.infisical/gateway.conf` +- **Running as root/sudo:** `/etc/infisical/gateways/.conf` +- **Running as a regular user:** `~/.infisical/gateways/.conf` -For systemd-based installations, the configuration is always at `/etc/infisical/gateway.conf`. The file is created with restricted permissions (0600) so only the owner can read it. +This allows multiple gateways to run on the same machine without conflicting. For systemd-based installations, the configuration is at `/etc/infisical/gateway.conf`. All config files are created with restricted permissions (0600) so only the owner can read them. + + + +Yes. Each gateway stores its credentials in a separate config file scoped by name (e.g., `~/.infisical/gateways/my-gateway.conf`). You can enroll and start multiple gateways in separate terminal sessions using different names. From 633b34a748530969cd7ac7fd123e4f437c2f895a Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 14:30:36 -0400 Subject: [PATCH 095/562] fix: replace continue with if block to satisfy no-continue lint rule --- .../services/gateway-v2/gateway-v2-service.ts | 17 +++++++++-------- .../components/GatewayTab/GatewayTab.tsx | 5 +---- .../components/ReEnrollGatewayModal.tsx | 9 +++------ 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 6dd4ee7c347..ae651ec6473 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -355,14 +355,15 @@ export const gatewayV2ServiceFactory = ({ const now = new Date(); const tokenStatusMap = new Map(); for (const token of allTokens) { - if (token.usedAt || !token.gatewayId) continue; - const isExpired = token.expiresAt <= now; - const current = tokenStatusMap.get(token.gatewayId); - // A non-expired token takes priority over an expired one - if (!isExpired) { - tokenStatusMap.set(token.gatewayId, "pending"); - } else if (!current) { - tokenStatusMap.set(token.gatewayId, "expired"); + if (!token.usedAt && token.gatewayId) { + const isExpired = token.expiresAt <= now; + const current = tokenStatusMap.get(token.gatewayId); + // A non-expired token takes priority over an expired one + if (!isExpired) { + tokenStatusMap.set(token.gatewayId, "pending"); + } else if (!current) { + tokenStatusMap.set(token.gatewayId, "expired"); + } } } diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 7eb7f014589..77f0bacb0d7 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -48,10 +48,7 @@ import { import { withPermission } from "@app/hoc"; import { usePopUp } from "@app/hooks"; import { gatewaysQueryKeys, useDeleteGatewayById } from "@app/hooks/api/gateways"; -import { - useDeleteGatewayV2ById, - useTriggerGatewayV2Heartbeat -} from "@app/hooks/api/gateways-v2"; +import { useDeleteGatewayV2ById, useTriggerGatewayV2Heartbeat } from "@app/hooks/api/gateways-v2"; import { GatewayHealthCheckStatus } from "@app/hooks/api/gateways-v2/types"; import { EditGatewayDetailsModal } from "./components/EditGatewayDetailsModal"; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index 0f4a36ce61a..23ca477eb43 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -109,13 +109,10 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop )} {step === "command" && ( - +

- Run the following command on the machine where you want to deploy the gateway. The - token expires in 1 hour and can only be used once. + Run the following command on the machine where you want to deploy the gateway. The token + expires in 1 hour and can only be used once.

From 04756714310d8887196222e9ceea32e8d30947b6 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 14:34:20 -0400 Subject: [PATCH 096/562] refactor: rename enroll-method from 'static' to 'token' in frontend and docs --- docs/cli/commands/gateway.mdx | 20 +++++++++---------- .../platform/gateways/gateway-deployment.mdx | 4 ++-- .../components/GatewayCliDeploymentMethod.tsx | 2 +- .../GatewayCliSystemdDeploymentMethod.tsx | 2 +- .../components/ReEnrollGatewayModal.tsx | 2 +- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/cli/commands/gateway.mdx b/docs/cli/commands/gateway.mdx index 744352c3a2b..0db35d4b411 100644 --- a/docs/cli/commands/gateway.mdx +++ b/docs/cli/commands/gateway.mdx @@ -6,7 +6,7 @@ description: "Run the Infisical gateway or manage its systemd service" ```bash - infisical gateway start --enroll-method=static --token= --domain= + infisical gateway start --enroll-method=token --token= --domain= ``` @@ -16,7 +16,7 @@ description: "Run the Infisical gateway or manage its systemd service" ```bash - sudo infisical gateway systemd install --enroll-method=static --token= --domain= + sudo infisical gateway systemd install --enroll-method=token --token= --domain= ``` @@ -46,7 +46,7 @@ If you are moving from Gateway v1 to Gateway v2, this is NOT a drop-in switch. G Run the Infisical gateway component within your the network where your target resources are located. The gateway establishes an SSH reverse tunnel to a relay server and provides secure access to private resources within your network. ```bash -infisical gateway start --enroll-method=static --token= --domain= +infisical gateway start --enroll-method=token --token= --domain= ``` The gateway name is provided as a positional argument. The `--name` flag is still accepted for backwards compatibility but is deprecated. @@ -86,7 +86,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash - infisical gateway start my-gateway --enroll-method=static --token= --domain=https://app.infisical.com + infisical gateway start my-gateway --enroll-method=token --token= --domain=https://app.infisical.com ``` After enrollment, the gateway saves its credentials locally. You can safely re-run the same command to restart the gateway. It will detect the token has already been used and skip enrollment automatically. @@ -316,11 +316,11 @@ The Gateway supports multiple authentication methods. Below are the available au - The enrollment method to use. When set to `static`, the `--token` flag is treated as a one-time enrollment token instead of a machine identity access token. + The enrollment method to use. When set to `token`, the `--token` flag is treated as a one-time enrollment token instead of a machine identity access token. ```bash # Example - infisical gateway start my-gateway --enroll-method=static --token= --domain= + infisical gateway start my-gateway --enroll-method=token --token= --domain= ``` @@ -342,7 +342,7 @@ The Gateway supports multiple authentication methods. Below are the available au ```bash # Enrollment token -sudo infisical gateway systemd install my-gateway --enroll-method=static --token= --domain= +sudo infisical gateway systemd install my-gateway --enroll-method=token --token= --domain= # Machine identity sudo infisical gateway systemd install my-gateway --token= --domain= @@ -358,17 +358,17 @@ sudo infisical gateway systemd install my-gateway --token= - The enrollment method to use. When set to `static`, the `--token` flag is treated as a one-time enrollment token. + The enrollment method to use. When set to `token`, the `--token` flag is treated as a one-time enrollment token. ```bash # Example - sudo infisical gateway systemd install my-gateway --enroll-method=static --token= --domain= + sudo infisical gateway systemd install my-gateway --enroll-method=token --token= --domain= ``` - The authentication token. When `--enroll-method=static` is set, this is a one-time enrollment token. Otherwise, it is a machine identity access token. + The authentication token. When `--enroll-method=token` is set, this is a one-time enrollment token. Otherwise, it is a machine identity access token. ```bash # Example diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index 0329c350b3d..7e8c9a67c9b 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -43,7 +43,7 @@ The recommended way to deploy a gateway. Create the gateway in the Infisical UI, For production deployments on Linux, install as a systemd service: ```bash sudo infisical gateway systemd install my-gateway \ - --enroll-method=static \ + --enroll-method=token \ --token= \ --domain= sudo systemctl start infisical-gateway @@ -53,7 +53,7 @@ The recommended way to deploy a gateway. Create the gateway in the Infisical UI, For development or testing, run directly in the foreground: ```bash infisical gateway start my-gateway \ - --enroll-method=static \ + --enroll-method=token \ --token= \ --domain= ``` diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx index d6caf1fca6b..63d58aed5c7 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx @@ -92,7 +92,7 @@ export const GatewayCliDeploymentMethod = () => { const command = useMemo(() => { const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; - return `infisical gateway start ${name} --enroll-method=static --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; + return `infisical gateway start ${name} --enroll-method=token --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; }, [name, enrollmentToken, resolvedRelayName, siteURL]); if (step === "command") { diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx index c9bbfa9eb66..7b4843f5e06 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx @@ -92,7 +92,7 @@ export const GatewayCliSystemdDeploymentMethod = () => { const installCommand = useMemo(() => { const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; - return `sudo infisical gateway systemd install ${name} --enroll-method=static --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; + return `sudo infisical gateway systemd install ${name} --enroll-method=token --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; }, [enrollmentToken, name, resolvedRelayName, siteURL]); const startServiceCommand = "sudo systemctl start infisical-gateway"; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index 23ca477eb43..3704906671b 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -46,7 +46,7 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop const command = useMemo(() => { const gatewayName = gatewayData?.name ?? ""; - return `infisical gateway start ${gatewayName} --enroll-method=static --token=${enrollmentToken} --domain=${siteURL}`; + return `infisical gateway start ${gatewayName} --enroll-method=token --token=${enrollmentToken} --domain=${siteURL}`; }, [gatewayData?.name, enrollmentToken, siteURL]); const handleClose = (open: boolean) => { From edacd82cfcddeea2a2c765476d31e2d56e64cf36 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 16:15:58 -0400 Subject: [PATCH 097/562] feat: V3 gateway API with auth-method-scoped endpoints - POST /api/v3/gateways - Create a gateway - POST /api/v3/gateways/:id/token-auth/configure - Generate enrollment token - POST /api/v3/gateways/token-auth/enroll - Enroll with token - POST /api/v3/gateways/connect - Refresh certs Remove V2 enrollment endpoints (enrollment-tokens, re-enroll, enroll). Frontend uses V3 create + token-auth/configure. Re-enroll uses token-auth/configure directly. --- backend/src/ee/routes/v2/gateway-router.ts | 182 +--------------- backend/src/ee/routes/v3/gateway-router.ts | 197 ++++++++++++++++++ backend/src/ee/routes/v3/index.ts | 5 + .../services/gateway-v2/gateway-v2-service.ts | 174 ++++++++-------- backend/src/server/routes/index.ts | 9 +- .../src/hooks/api/gateways-v2/mutations.tsx | 30 +-- .../components/GatewayCliDeploymentMethod.tsx | 18 +- .../GatewayCliSystemdDeploymentMethod.tsx | 18 +- .../components/ReEnrollGatewayModal.tsx | 7 +- 9 files changed, 326 insertions(+), 314 deletions(-) create mode 100644 backend/src/ee/routes/v3/gateway-router.ts create mode 100644 backend/src/ee/routes/v3/index.ts diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index 1b8b6205772..cfef6124591 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -1,16 +1,12 @@ import z from "zod"; -import { GatewayEnrollmentTokensSchema, GatewaysV2Schema } from "@app/db/schemas"; -import { EventType, UserAgentType } from "@app/ee/services/audit-log/audit-log-types"; +import { GatewaysV2Schema } from "@app/db/schemas"; import { zodBuffer } from "@app/lib/zod"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { slugSchema } from "@app/server/lib/schemas"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { ActorType, AuthMode } from "@app/services/auth/auth-type"; -// Stricter rate limit for the unauthenticated enroll endpoint -const enrollRateLimit = { windowMs: 60 * 1000, max: 10 }; - const SanitizedGatewayV2Schema = GatewaysV2Schema.pick({ id: true, identityId: true, @@ -21,16 +17,6 @@ const SanitizedGatewayV2Schema = GatewaysV2Schema.pick({ lastHealthCheckStatus: true }); -const SanitizedEnrollmentTokenSchema = GatewayEnrollmentTokensSchema.pick({ - id: true, - name: true, - ttl: true, - expiresAt: true, - usedAt: true, - gatewayId: true, - createdAt: true -}); - export const registerGatewayV2Router = async (server: FastifyZodProvider) => { server.route({ method: "POST", @@ -286,168 +272,6 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { } }); - // Enrollment token management - server.route({ - method: "POST", - url: "/enrollment-tokens", - config: { rateLimit: writeLimit }, - schema: { - operationId: "createGatewayEnrollmentToken", - body: z.object({ - name: slugSchema({ min: 1, max: 64, field: "name" }) - }), - response: { - 200: SanitizedEnrollmentTokenSchema.extend({ token: z.string() }) - } - }, - onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), - handler: async (req) => { - const result = await server.services.gatewayV2.createEnrollmentToken({ - orgId: req.permission.orgId, - actorId: req.permission.id, - actorType: req.permission.type, - actorAuthMethod: req.permission.authMethod, - name: req.body.name - }); - - await server.services.auditLog.createAuditLog({ - ...req.auditLogInfo, - orgId: req.permission.orgId, - event: { - type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE, - metadata: { - tokenId: result.id, - name: req.body.name - } - } - }); - - return result; - } - }); - - server.route({ - method: "DELETE", - url: "/enrollment-tokens/:tokenId", - config: { rateLimit: writeLimit }, - schema: { - operationId: "deleteGatewayEnrollmentToken", - params: z.object({ tokenId: z.string().uuid() }), - response: { 200: z.object({ message: z.string() }) } - }, - onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), - handler: async (req) => { - const { name } = await server.services.gatewayV2.deleteEnrollmentToken({ - orgPermission: req.permission, - tokenId: req.params.tokenId - }); - - await server.services.auditLog.createAuditLog({ - ...req.auditLogInfo, - orgId: req.permission.orgId, - event: { - type: EventType.GATEWAY_ENROLLMENT_TOKEN_DELETE, - metadata: { - tokenId: req.params.tokenId, - name - } - } - }); - - return { message: "Enrollment token deleted" }; - } - }); - - server.route({ - method: "POST", - url: "/re-enroll", - config: { rateLimit: writeLimit }, - schema: { - operationId: "reEnrollGateway", - body: z.object({ - gatewayId: z.string().uuid() - }), - response: { - 200: SanitizedEnrollmentTokenSchema.extend({ token: z.string() }) - } - }, - onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), - handler: async (req) => { - const result = await server.services.gatewayV2.reEnrollGateway({ - orgPermission: req.permission, - gatewayId: req.body.gatewayId - }); - - await server.services.auditLog.createAuditLog({ - ...req.auditLogInfo, - orgId: req.permission.orgId, - event: { - type: EventType.GATEWAY_RE_ENROLL, - metadata: { - gatewayId: req.body.gatewayId, - name: result.name - } - } - }); - - return result; - } - }); - - // Enrollment endpoint — no standard auth; enrollment token in body is the credential - server.route({ - method: "POST", - url: "/enroll", - config: { rateLimit: enrollRateLimit }, - schema: { - operationId: "enrollGateway", - body: z.object({ - token: z.string().min(1), - relayName: slugSchema({ min: 1, max: 32, field: "relayName" }).optional() - }), - response: { - 200: z.object({ - accessToken: z.string(), - gatewayId: z.string(), - relayHost: z.string(), - pki: z.object({ - serverCertificate: z.string(), - serverPrivateKey: z.string(), - clientCertificateChain: z.string() - }), - ssh: z.object({ - clientCertificate: z.string(), - clientPrivateKey: z.string(), - serverCAPublicKey: z.string() - }) - }) - } - }, - handler: async (req) => { - const result = await server.services.gatewayV2.enrollGateway({ - token: req.body.token, - relayName: req.body.relayName - }); - - await server.services.auditLog.createAuditLog({ - orgId: result.orgId, - actor: { - type: ActorType.GATEWAY, - metadata: { gatewayId: result.gatewayId } - }, - event: { - type: EventType.GATEWAY_ENROLL, - metadata: { - gatewayId: result.gatewayId, - name: result.gatewayName - } - }, - ipAddress: req.ip, - userAgent: req.headers["user-agent"] ?? "", - userAgentType: UserAgentType.CLI - }); - - return result; - } - }); + // Enrollment endpoints have moved to V3: /api/v3/gateways }; + diff --git a/backend/src/ee/routes/v3/gateway-router.ts b/backend/src/ee/routes/v3/gateway-router.ts new file mode 100644 index 00000000000..28fb8878438 --- /dev/null +++ b/backend/src/ee/routes/v3/gateway-router.ts @@ -0,0 +1,197 @@ +import z from "zod"; + +import { GatewaysV2Schema } from "@app/db/schemas"; +import { EventType, UserAgentType } from "@app/ee/services/audit-log/audit-log-types"; +import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { slugSchema } from "@app/server/lib/schemas"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { ActorType, AuthMode } from "@app/services/auth/auth-type"; + +const enrollRateLimit = { windowMs: 60 * 1000, max: 10 }; + +const SanitizedGatewayV2Schema = GatewaysV2Schema.pick({ + id: true, + identityId: true, + name: true, + createdAt: true, + updatedAt: true, + heartbeat: true, + lastHealthCheckStatus: true +}); + +export const registerGatewayV3Router = async (server: FastifyZodProvider) => { + // Create a gateway + server.route({ + method: "POST", + url: "/", + config: { rateLimit: writeLimit }, + schema: { + operationId: "createGateway", + body: z.object({ + name: slugSchema({ min: 1, max: 64, field: "name" }) + }), + response: { + 200: SanitizedGatewayV2Schema + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const gateway = await server.services.gatewayV2.createGateway({ + orgId: req.permission.orgId, + actorId: req.permission.id, + actorType: req.permission.type, + actorAuthMethod: req.permission.authMethod, + name: req.body.name + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE, + metadata: { + tokenId: gateway.id, + name: req.body.name + } + } + }); + + return gateway; + } + }); + + // Generate enrollment token for a gateway + server.route({ + method: "POST", + url: "/:gatewayId/token-auth/configure", + config: { rateLimit: writeLimit }, + schema: { + operationId: "configureGatewayTokenAuth", + params: z.object({ + gatewayId: z.string().uuid() + }), + response: { + 200: z.object({ + token: z.string(), + expiresAt: z.date() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const result = await server.services.gatewayV2.configureTokenAuth({ + orgPermission: req.permission, + gatewayId: req.params.gatewayId + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_RE_ENROLL, + metadata: { + gatewayId: req.params.gatewayId, + name: result.name + } + } + }); + + return { token: result.token, expiresAt: result.expiresAt }; + } + }); + + // Enroll a gateway using a token (unauthenticated) + server.route({ + method: "POST", + url: "/token-auth/enroll", + config: { rateLimit: enrollRateLimit }, + schema: { + operationId: "enrollGatewayWithToken", + body: z.object({ + token: z.string().min(1), + relayName: slugSchema({ min: 1, max: 32, field: "relayName" }).optional() + }), + response: { + 200: z.object({ + accessToken: z.string(), + gatewayId: z.string(), + relayHost: z.string(), + pki: z.object({ + serverCertificate: z.string(), + serverPrivateKey: z.string(), + clientCertificateChain: z.string() + }), + ssh: z.object({ + clientCertificate: z.string(), + clientPrivateKey: z.string(), + serverCAPublicKey: z.string() + }) + }) + } + }, + handler: async (req) => { + const result = await server.services.gatewayV2.enrollGateway({ + token: req.body.token, + relayName: req.body.relayName + }); + + await server.services.auditLog.createAuditLog({ + orgId: result.orgId, + actor: { + type: ActorType.GATEWAY, + metadata: { gatewayId: result.gatewayId } + }, + event: { + type: EventType.GATEWAY_ENROLL, + metadata: { + gatewayId: result.gatewayId, + name: result.gatewayName + } + }, + ipAddress: req.ip, + userAgent: req.headers["user-agent"] ?? "", + userAgentType: UserAgentType.CLI + }); + + return result; + } + }); + + // Connect (refresh certs) for an enrolled gateway + server.route({ + method: "POST", + url: "/connect", + config: { rateLimit: writeLimit }, + schema: { + operationId: "connectGateway", + body: z.object({ + relayName: slugSchema({ min: 1, max: 32, field: "relayName" }).optional() + }), + response: { + 200: z.object({ + gatewayId: z.string(), + relayHost: z.string(), + pki: z.object({ + serverCertificate: z.string(), + serverPrivateKey: z.string(), + clientCertificateChain: z.string() + }), + ssh: z.object({ + clientCertificate: z.string(), + clientPrivateKey: z.string(), + serverCAPublicKey: z.string() + }) + }) + } + }, + onRequest: verifyAuth([AuthMode.GATEWAY_ACCESS_TOKEN, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + return server.services.gatewayV2.connectGateway({ + orgId: req.permission.orgId, + actorId: req.permission.id, + actorType: req.permission.type, + relayName: req.body.relayName + }); + } + }); +}; diff --git a/backend/src/ee/routes/v3/index.ts b/backend/src/ee/routes/v3/index.ts new file mode 100644 index 00000000000..84514752a00 --- /dev/null +++ b/backend/src/ee/routes/v3/index.ts @@ -0,0 +1,5 @@ +import { registerGatewayV3Router } from "./gateway-router"; + +export const registerV3EERoutes = async (server: FastifyZodProvider) => { + await server.register(registerGatewayV3Router, { prefix: "/gateways" }); +}; diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index ae651ec6473..019ac1ffb75 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1190,7 +1190,9 @@ export const gatewayV2ServiceFactory = ({ return gateway; }; - const createEnrollmentToken = async ({ + // --- V3 service methods --- + + const createGateway = async ({ orgId, actorId, actorType, @@ -1222,38 +1224,23 @@ export const gatewayV2ServiceFactory = ({ throw new BadRequestError({ message: `A gateway named "${name}" already exists` }); } - const { plainToken, tokenHash, expiresAt } = $generateEnrollmentToken(); - - // Create both the gateway record and the enrollment token in a single transaction. - // The gateway exists immediately so other features (K8s auth, dynamic secrets, etc.) - // can reference it by ID before the CLI enrolls. - const { gateway, token: tokenRecord } = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { - const gw = await gatewayV2DAL.create({ orgId, name }, tx); - - const tkn = await gatewayEnrollmentTokenDAL.create( - { - orgId, - name, - tokenHash, - ttl: ENROLLMENT_TOKEN_TTL_SECONDS, - expiresAt, - gatewayId: gw.id - }, - tx - ); - - return { gateway: gw, token: tkn }; - }); - - return { ...tokenRecord, token: plainToken, gatewayId: gateway.id }; + try { + const gateway = await gatewayV2DAL.create({ orgId, name }); + return gateway; + } catch (err) { + if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { + throw new BadRequestError({ message: `A gateway named "${name}" already exists` }); + } + throw err; + } }; - const deleteEnrollmentToken = async ({ + const configureTokenAuth = async ({ orgPermission, - tokenId + gatewayId }: { orgPermission: OrgServiceActor; - tokenId: string; + gatewayId: string; }) => { const { permission } = await permissionService.getOrgPermission({ actor: orgPermission.type, @@ -1265,18 +1252,76 @@ export const gatewayV2ServiceFactory = ({ }); ForbiddenError.from(permission).throwUnlessCan( - OrgPermissionGatewayActions.DeleteGateways, + OrgPermissionGatewayActions.EditGateways, OrgPermissionSubjects.Gateway ); - const token = await gatewayEnrollmentTokenDAL.findOne({ id: tokenId, orgId: orgPermission.orgId }); - if (!token) { - throw new NotFoundError({ message: `Enrollment token ${tokenId} not found` }); + const gateway = await gatewayV2DAL.findById(gatewayId); + if (!gateway || gateway.orgId !== orgPermission.orgId) { + throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); } - await gatewayEnrollmentTokenDAL.deleteById(tokenId); + const gatewayToken = $generateEnrollmentToken(); + + const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + // Delete any existing unused enrollment tokens for this gateway + const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }, { tx }); + const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); + if (unusedTokenIds.length > 0) { + await gatewayEnrollmentTokenDAL.delete({ $in: { id: unusedTokenIds } }, tx); + } + + return gatewayEnrollmentTokenDAL.create( + { + orgId: orgPermission.orgId, + name: gateway.name, + tokenHash: gatewayToken.tokenHash, + ttl: ENROLLMENT_TOKEN_TTL_SECONDS, + expiresAt: gatewayToken.expiresAt, + gatewayId + }, + tx + ); + }); + + return { ...record, token: gatewayToken.plainToken }; + }; + + const connectGateway = async ({ + orgId, + actorId, + actorType, + relayName + }: { + orgId: string; + actorId: string; + actorType: ActorType; + relayName?: string; + }) => { + const orgCAs = await $getOrgCAs(orgId); + + if (actorType === ActorType.GATEWAY) { + const gateway = await gatewayV2DAL.findById(actorId); + if (!gateway || gateway.orgId !== orgId) { + throw new NotFoundError({ message: `Gateway ${actorId} not found` }); + } + + let resolvedRelay: TRelays | undefined; + if (relayName) { + resolvedRelay = await relayDAL.findOne({ orgId, name: relayName }); + if (!resolvedRelay) resolvedRelay = await relayDAL.findOne({ name: relayName, orgId: null }); + if (!resolvedRelay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); + } else { + if (!gateway.relayId) throw new NotFoundError({ message: "No relay associated with this gateway" }); + resolvedRelay = await relayDAL.findById(gateway.relayId); + if (!resolvedRelay) throw new NotFoundError({ message: "No relay associated with this gateway" }); + } + + return $issueGatewayCerts({ orgId, orgCAs, relayName: resolvedRelay.name, gateway }); + } - return { name: token.name }; + // Identity-based flow: delegate to registerGateway + throw new BadRequestError({ message: "Use POST /api/v2/gateways for identity-based registration" }); }; const enrollGateway = async ({ token, relayName }: { token: string; relayName?: string }) => { @@ -1373,60 +1418,6 @@ export const gatewayV2ServiceFactory = ({ } }; - const reEnrollGateway = async ({ - orgPermission, - gatewayId - }: { - orgPermission: OrgServiceActor; - gatewayId: string; - }) => { - const { permission } = await permissionService.getOrgPermission({ - actor: orgPermission.type, - actorId: orgPermission.id, - orgId: orgPermission.orgId, - actorAuthMethod: orgPermission.authMethod, - actorOrgId: orgPermission.orgId, - scope: OrganizationActionScope.Any - }); - - ForbiddenError.from(permission).throwUnlessCan( - OrgPermissionGatewayActions.EditGateways, - OrgPermissionSubjects.Gateway - ); - - // Re-enroll a gateway (pending or enrolled). - // The old gateway keeps running until the new machine enrolls with this token. - // tokenVersion is bumped in enrollGateway when the token is consumed, not here. - const gateway = await gatewayV2DAL.findById(gatewayId); - if (!gateway || gateway.orgId !== orgPermission.orgId) { - throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); - } - - const gatewayToken = $generateEnrollmentToken(); - - const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { - const existingTokens = await gatewayEnrollmentTokenDAL.find({ gatewayId }, { tx }); - const unusedTokenIds = existingTokens.filter((t) => !t.usedAt).map((t) => t.id); - if (unusedTokenIds.length > 0) { - await gatewayEnrollmentTokenDAL.delete({ $in: { id: unusedTokenIds } }, tx); - } - - return gatewayEnrollmentTokenDAL.create( - { - orgId: orgPermission.orgId, - name: gateway.name, - tokenHash: gatewayToken.tokenHash, - ttl: ENROLLMENT_TOKEN_TTL_SECONDS, - expiresAt: gatewayToken.expiresAt, - gatewayId - }, - tx - ); - }); - - return { ...record, token: gatewayToken.plainToken }; - }; - return { listGateways, registerGateway, @@ -1439,9 +1430,10 @@ export const gatewayV2ServiceFactory = ({ healthcheckNotify, getConnectedResources, getGatewayById, - createEnrollmentToken, - deleteEnrollmentToken, enrollGateway, - reEnrollGateway + // V3 + createGateway, + configureTokenAuth, + connectGateway }; }; diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index adb1abfe00e..a91519d3a77 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -14,6 +14,7 @@ import { registerCertificateEstRouter } from "@app/ee/routes/est/certificate-est import { registerPkiScepRouter } from "@app/ee/routes/scep/pki-scep-router"; import { registerV1EERoutes } from "@app/ee/routes/v1"; import { registerV2EERoutes } from "@app/ee/routes/v2"; +import { registerV3EERoutes } from "@app/ee/routes/v3"; import { accessApprovalPolicyApproverDALFactory, accessApprovalPolicyBypasserDALFactory @@ -3322,7 +3323,13 @@ export const registerRoutes = async ( }, { prefix: "/api/v2" } ); - await server.register(registerV3Routes, { prefix: "/api/v3" }); + await server.register( + async (v3Server) => { + await v3Server.register(registerV3EERoutes); + await v3Server.register(registerV3Routes); + }, + { prefix: "/api/v3" } + ); await server.register(registerV4Routes, { prefix: "/api/v4" }); // Note: This is a special route for BDD tests. It's only available in development mode and only for BDD tests. diff --git a/frontend/src/hooks/api/gateways-v2/mutations.tsx b/frontend/src/hooks/api/gateways-v2/mutations.tsx index 9dc805cd7d5..eeffc4f66e7 100644 --- a/frontend/src/hooks/api/gateways-v2/mutations.tsx +++ b/frontend/src/hooks/api/gateways-v2/mutations.tsx @@ -3,9 +3,7 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { apiRequest } from "@app/config/request"; import { gatewaysQueryKeys } from "../gateways/queries"; -import { TCreateGatewayEnrollmentTokenResponse } from "./types"; - -export const gatewayEnrollmentTokenQueryKey = () => ["gateway-enrollment-tokens"]; +import { TGatewayV2 } from "./types"; const invalidateGatewayQueries = (queryClient: ReturnType) => { queryClient.invalidateQueries(gatewaysQueryKeys.list()); @@ -36,14 +34,11 @@ export const useTriggerGatewayV2Heartbeat = () => { }); }; -export const useCreateGatewayEnrollmentToken = () => { +export const useCreateGateway = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: async ({ name }: { name: string }) => { - const { data } = await apiRequest.post( - "/api/v2/gateways/enrollment-tokens", - { name } - ); + const { data } = await apiRequest.post("/api/v3/gateways", { name }); return data; }, onSuccess: () => { @@ -52,13 +47,12 @@ export const useCreateGatewayEnrollmentToken = () => { }); }; -export const useReEnrollGateway = () => { +export const useConfigureGatewayTokenAuth = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: async ({ gatewayId }: { gatewayId: string }) => { - const { data } = await apiRequest.post( - "/api/v2/gateways/re-enroll", - { gatewayId } + const { data } = await apiRequest.post<{ token: string; expiresAt: string }>( + `/api/v3/gateways/${gatewayId}/token-auth/configure` ); return data; }, @@ -67,15 +61,3 @@ export const useReEnrollGateway = () => { } }); }; - -export const useDeleteGatewayEnrollmentToken = () => { - const queryClient = useQueryClient(); - return useMutation({ - mutationFn: async (tokenId: string) => { - await apiRequest.delete(`/api/v2/gateways/enrollment-tokens/${tokenId}`); - }, - onSuccess: () => { - invalidateGatewayQueries(queryClient); - } - }); -}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx index 63d58aed5c7..227fb8f3b3f 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx @@ -17,7 +17,7 @@ import { } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; import { gatewaysQueryKeys } from "@app/hooks/api/gateways"; -import { useCreateGatewayEnrollmentToken } from "@app/hooks/api/gateways-v2"; +import { useConfigureGatewayTokenAuth, useCreateGateway } from "@app/hooks/api/gateways-v2"; import { useGetRelays } from "@app/hooks/api/relays/queries"; import { slugSchema } from "@app/lib/schemas"; @@ -58,8 +58,9 @@ export const GatewayCliDeploymentMethod = () => { const { data: gateways } = useQuery(gatewaysQueryKeys.listWithTokens()); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); - const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = - useCreateGatewayEnrollmentToken(); + const { mutateAsync: createGateway, isPending: isCreatingGateway } = useCreateGateway(); + const { mutateAsync: configureTokenAuth, isPending: isConfiguringToken } = + useConfigureGatewayTokenAuth(); const handleContinue = async () => { setFormErrors([]); @@ -73,20 +74,21 @@ export const GatewayCliDeploymentMethod = () => { if (existingNames.includes(name.trim())) { createNotification({ type: "error", - text: "A gateway or enrollment token with this name already exists." + text: "A gateway with this name already exists." }); return; } try { - const result = await createEnrollmentToken({ name }); - setEnrollmentToken(result.token); + const gateway = await createGateway({ name }); + const tokenResult = await configureTokenAuth({ gatewayId: gateway.id }); + setEnrollmentToken(tokenResult.token); const relayName = relay?.id === "_auto" ? "" : (relay?.name ?? ""); setResolvedRelayName(relayName); setStep("command"); } catch { - createNotification({ type: "error", text: "Failed to create enrollment token" }); + createNotification({ type: "error", text: "Failed to create gateway" }); } }; @@ -180,7 +182,7 @@ export const GatewayCliDeploymentMethod = () => { size="sm" colorSchema="secondary" onClick={handleContinue} - isLoading={isCreatingToken} + isLoading={isCreatingGateway || isConfiguringToken} > Continue diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx index 7b4843f5e06..db03b1b7046 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx @@ -17,7 +17,7 @@ import { } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; import { gatewaysQueryKeys } from "@app/hooks/api/gateways"; -import { useCreateGatewayEnrollmentToken } from "@app/hooks/api/gateways-v2"; +import { useConfigureGatewayTokenAuth, useCreateGateway } from "@app/hooks/api/gateways-v2"; import { useGetRelays } from "@app/hooks/api/relays/queries"; import { slugSchema } from "@app/lib/schemas"; @@ -58,8 +58,9 @@ export const GatewayCliSystemdDeploymentMethod = () => { const { data: gateways } = useQuery(gatewaysQueryKeys.listWithTokens()); const { data: relays, isPending: isRelaysLoading } = useGetRelays(); - const { mutateAsync: createEnrollmentToken, isPending: isCreatingToken } = - useCreateGatewayEnrollmentToken(); + const { mutateAsync: createGateway, isPending: isCreatingGateway } = useCreateGateway(); + const { mutateAsync: configureTokenAuth, isPending: isConfiguringToken } = + useConfigureGatewayTokenAuth(); const handleContinue = async () => { setFormErrors([]); @@ -73,20 +74,21 @@ export const GatewayCliSystemdDeploymentMethod = () => { if (existingNames.includes(name.trim())) { createNotification({ type: "error", - text: "A gateway or enrollment token with this name already exists." + text: "A gateway with this name already exists." }); return; } try { - const result = await createEnrollmentToken({ name }); - setEnrollmentToken(result.token); + const gateway = await createGateway({ name }); + const tokenResult = await configureTokenAuth({ gatewayId: gateway.id }); + setEnrollmentToken(tokenResult.token); const relayName = relay?.id === "_auto" ? "" : (relay?.name ?? ""); setResolvedRelayName(relayName); setStep("command"); } catch { - createNotification({ type: "error", text: "Failed to create enrollment token" }); + createNotification({ type: "error", text: "Failed to create gateway" }); } }; @@ -205,7 +207,7 @@ export const GatewayCliSystemdDeploymentMethod = () => { size="sm" colorSchema="secondary" onClick={handleContinue} - isLoading={isCreatingToken} + isLoading={isCreatingGateway || isConfiguringToken} > Continue diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index 3704906671b..a37f98f0c89 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -13,7 +13,7 @@ import { ModalClose, ModalContent } from "@app/components/v2"; -import { useReEnrollGateway } from "@app/hooks/api/gateways-v2"; +import { useConfigureGatewayTokenAuth } from "@app/hooks/api/gateways-v2"; type Props = { isOpen: boolean; @@ -30,13 +30,14 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop const [enrollmentToken, setEnrollmentToken] = useState(""); const [confirmText, setConfirmText] = useState(""); - const { mutateAsync: reEnroll, isPending: isReEnrolling } = useReEnrollGateway(); + const { mutateAsync: configureTokenAuth, isPending: isReEnrolling } = + useConfigureGatewayTokenAuth(); const handleReEnroll = async () => { if (!gatewayData || confirmText !== "confirm") return; try { - const result = await reEnroll({ gatewayId: gatewayData.id }); + const result = await configureTokenAuth({ gatewayId: gatewayData.id }); setEnrollmentToken(result.token); setStep("command"); } catch { From a81fc9c1d8252ac49111cf1f98f917b0adc6d90f Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 14:44:55 -0700 Subject: [PATCH 098/562] style: use checkmark for radio dropdown menu icon --- frontend/src/components/v3/generic/Dropdown/Dropdown.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx b/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx index ce840f4436e..91d0dd60391 100644 --- a/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx +++ b/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx @@ -138,7 +138,7 @@ function UnstableDropdownMenuRadioItem({ > - + {children} From 68c834521a10abaf5e107d3dd8a84c4d4f072b56 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 15:03:43 -0700 Subject: [PATCH 099/562] docs: add insight permission to secrets management permissions --- docs/internals/permissions/project-permissions.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/internals/permissions/project-permissions.mdx b/docs/internals/permissions/project-permissions.mdx index 6afdcbd0cb9..af805e6480d 100644 --- a/docs/internals/permissions/project-permissions.mdx +++ b/docs/internals/permissions/project-permissions.mdx @@ -284,6 +284,12 @@ Supports conditions and permission inversion. | `delete-root-credential` | Remove dynamic secrets | `environment`, `secretPath`, `metadata` | | `lease` | Create dynamic secret leases | `environment`, `secretPath`, `metadata` | +#### Subject: `insights` + +| Action | Description | +| ------ | ------------------------------------------------------------------------------------ | +| `read` | View project insights dashboard, including secret access volume, access locations, auth method distribution, and rotation/reminder calendar | + ### Key Management Service (KMS) #### Subject: `kms` From 842415782abe51bb126a11668203eaf434e02f49 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 15:18:46 -0700 Subject: [PATCH 100/562] improvement: resolve user name for access volume chart --- .../ee/services/insights/insights-service.ts | 34 +++++++++++++++++-- .../src/ee/services/license/license-fns.ts | 4 +-- backend/src/server/routes/index.ts | 3 +- 3 files changed, 36 insertions(+), 5 deletions(-) diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index 3d24753e952..7e21707c32f 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -9,10 +9,12 @@ import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/ import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; import { BadRequestError } from "@app/lib/errors"; import { OrgServiceActor } from "@app/lib/types"; +import { ActorType } from "@app/services/auth/auth-type"; import { TProjectBotServiceFactory } from "@app/services/project-bot/project-bot-service"; import { TReminderDALFactory } from "@app/services/reminder/reminder-dal"; import { TSecretFolderDALFactory } from "@app/services/secret-folder/secret-folder-dal"; import { TSecretV2BridgeDALFactory } from "@app/services/secret-v2-bridge/secret-v2-bridge-dal"; +import { TUserDALFactory } from "@app/services/user/user-dal"; import { TGetAccessLocationsDTO, @@ -30,6 +32,7 @@ type TInsightsServiceFactoryDep = { folderDAL: Pick; secretV2BridgeDAL: Pick; projectBotService: Pick; + userDAL: Pick; }; export type TInsightsServiceFactory = ReturnType; @@ -67,7 +70,8 @@ export const insightsServiceFactory = ({ reminderDAL, folderDAL, secretV2BridgeDAL, - projectBotService + projectBotService, + userDAL }: TInsightsServiceFactoryDep) => { const fetchReminders = async (projectId: string, startDate: Date, endDate: Date) => { const rawReminders = await reminderDAL.findByProjectAndDateRange({ projectId, startDate, endDate }); @@ -142,6 +146,24 @@ export const insightsServiceFactory = ({ endDate: endDate.toISOString() }); + // Resolve user display names from userIds in audit log metadata + const userIds = [ + ...new Set( + rows + .filter((r) => r.actor === ActorType.USER) + .map((r) => (r.actorMetadata as Record | null)?.userId) + .filter(Boolean) as string[] + ) + ]; + const userNameMap = new Map(); + if (userIds.length > 0) { + const users = await userDAL.find({ $in: { id: userIds } }); + users.forEach((u) => { + const displayName = [u.firstName, u.lastName].filter(Boolean).join(" "); + if (displayName) userNameMap.set(u.id, displayName); + }); + } + // Pre-populate the last 7 days const dayMap = new Map>(); for (let i = 6; i >= 0; i -= 1) { @@ -156,7 +178,15 @@ export const insightsServiceFactory = ({ if (!actorMap) return; const actorMeta = row.actorMetadata as Record | null; - const actorName = actorMeta?.email || actorMeta?.name || actorMeta?.identityId || actorMeta?.userId || "Unknown"; + let actorName: string; + if (row.actor === ActorType.USER && actorMeta?.userId) { + actorName = + userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; + } else if (row.actor === ActorType.USER) { + actorName = actorMeta?.email || actorMeta?.username || "Unknown"; + } else { + actorName = actorMeta?.name || actorMeta?.identityId || "Unknown"; + } const actorKey = `${row.actor}:${actorName}`; const existing = actorMap.get(actorKey); diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index b75ef22b5ee..6ca0e3196e1 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -74,8 +74,8 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ subOrganization: false, customAlerts: false, secretAccessInsights: false, - auditLogs: false, - auditLogsRetentionDays: 0, + auditLogs: true, + auditLogsRetentionDays: 30, auditLogStreams: false, auditLogStreamLimit: 3, samlSSO: false, diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 4466fb7839a..09e82767ed4 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -2348,7 +2348,8 @@ export const registerRoutes = async ( reminderDAL, folderDAL, secretV2BridgeDAL, - projectBotService + projectBotService, + userDAL }); const pkiSyncQueue = pkiSyncQueueFactory({ From b8b229a8cf87ad7bbffa269209605d7a95435ccf Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Tue, 14 Apr 2026 19:50:01 -0300 Subject: [PATCH 101/562] refactor(permission): remove invalidateProjectPermissionCache from services and update permission service types --- .../access-approval-request-service.ts | 4 +- .../src/ee/services/group/group-service.ts | 11 +- backend/src/ee/services/group/group-types.ts | 2 + .../ee/services/permission/permission-dal.ts | 22 +- .../permission/permission-service-types.ts | 2 - .../services/permission/permission-service.ts | 249 +++++------ backend/src/keystore/keystore.ts | 20 +- backend/src/lib/cache/with-cache.test.ts | 408 ++++++++++++++++++ backend/src/lib/cache/with-cache.ts | 155 ++++++- .../project-membership-service.ts | 9 +- 10 files changed, 715 insertions(+), 167 deletions(-) diff --git a/backend/src/ee/services/access-approval-request/access-approval-request-service.ts b/backend/src/ee/services/access-approval-request/access-approval-request-service.ts index 500ca3a52c9..9fc317d92ec 100644 --- a/backend/src/ee/services/access-approval-request/access-approval-request-service.ts +++ b/backend/src/ee/services/access-approval-request/access-approval-request-service.ts @@ -33,7 +33,7 @@ import { ApprovalStatus, TAccessApprovalRequestServiceFactory } from "./access-a type TSecretApprovalRequestServiceFactoryDep = { additionalPrivilegeDAL: Pick; - permissionService: Pick; + permissionService: Pick; accessApprovalPolicyApproverDAL: Pick; projectEnvDAL: Pick; projectDAL: Pick< @@ -758,8 +758,6 @@ export const accessApprovalRequestServiceFactory = ({ { privilegeId: privilegeIdToSet, status: ApprovalStatus.APPROVED }, tx ); - - await permissionService.invalidateProjectPermissionCache(accessApprovalRequest.projectId, tx); } } diff --git a/backend/src/ee/services/group/group-service.ts b/backend/src/ee/services/group/group-service.ts index 32133542a3a..0b99b657613 100644 --- a/backend/src/ee/services/group/group-service.ts +++ b/backend/src/ee/services/group/group-service.ts @@ -78,10 +78,7 @@ type TGroupServiceFactoryDep = { projectDAL: Pick; projectBotDAL: Pick; projectKeyDAL: Pick; - permissionService: Pick< - TPermissionServiceFactory, - "getOrgPermission" | "getOrgPermissionByRoles" | "invalidateProjectPermissionCache" - >; + permissionService: Pick; licenseService: Pick; oidcConfigDAL: Pick; }; @@ -999,7 +996,8 @@ export const groupServiceFactory = ({ identityIds: [identityId], identityDAL, membershipDAL, - identityGroupMembershipDAL + identityGroupMembershipDAL, + membershipGroupDAL }); return identities[0]; @@ -1169,7 +1167,8 @@ export const groupServiceFactory = ({ identityIds: [identityId], identityDAL, membershipDAL, - identityGroupMembershipDAL + identityGroupMembershipDAL, + membershipGroupDAL }); await cleanUpSubOrgProjectMemberships({ diff --git a/backend/src/ee/services/group/group-types.ts b/backend/src/ee/services/group/group-types.ts index 30ebe121b9b..48f301769b9 100644 --- a/backend/src/ee/services/group/group-types.ts +++ b/backend/src/ee/services/group/group-types.ts @@ -130,6 +130,7 @@ export type TAddIdentitiesToGroup = { identityDAL: Pick; identityGroupMembershipDAL: Pick; membershipDAL: Pick; + membershipGroupDAL: Pick; }; export type TRemoveUsersFromGroupByUserIds = { @@ -148,6 +149,7 @@ export type TRemoveIdentitiesFromGroup = { identityDAL: Pick; membershipDAL: Pick; identityGroupMembershipDAL: Pick; + membershipGroupDAL: Pick; }; export type TConvertPendingGroupAdditionsToGroupMemberships = { diff --git a/backend/src/ee/services/permission/permission-dal.ts b/backend/src/ee/services/permission/permission-dal.ts index a2994711880..73cef556ad4 100644 --- a/backend/src/ee/services/permission/permission-dal.ts +++ b/backend/src/ee/services/permission/permission-dal.ts @@ -811,6 +811,8 @@ export const permissionDALFactory = (db: TDbClient): TPermissionDALFactory => { // Lightweight permission fingerprint for ETag validation. // Same tables/joins/WHERE as getPermission but selects only IDs + timestamps, // then hashes in JS. The CASE expressions make the hash flip at temporary access expiry. + // Includes both project-scoped AND org-scoped memberships so that org-level + // permission changes (e.g. SSO bypass grant/revoke) also invalidate the cache. const getPermissionFingerprint: TPermissionDALFactory["getPermissionFingerprint"] = async ({ projectId, orgId, @@ -846,9 +848,23 @@ export const permissionDALFactory = (db: TDbClient): TPermissionDALFactory => { `${TableName.AdditionalPrivilege}.projectId` ); }) + .leftJoin(TableName.IdentityMetadata, (qb) => { + if (actorType === ActorType.IDENTITY) { + qb.on(`${TableName.IdentityMetadata}.identityId`, `${TableName.Membership}.actorIdentityId`); + } else { + qb.on(`${TableName.IdentityMetadata}.identityId`, `${TableName.Membership}.actorUserId`); + } + }) .where(`${TableName.Membership}.scopeOrgId`, orgId) - .where(`${TableName.Membership}.scope`, AccessScope.Project) - .where(`${TableName.Membership}.scopeProjectId`, projectId) + .where((scopeQb) => { + void scopeQb + .where((inner) => { + void inner + .where(`${TableName.Membership}.scope`, AccessScope.Project) + .where(`${TableName.Membership}.scopeProjectId`, projectId); + }) + .orWhere(`${TableName.Membership}.scope`, AccessScope.Organization); + }) .where((qb) => { const directCol = actorType === ActorType.USER @@ -864,6 +880,8 @@ export const permissionDALFactory = (db: TDbClient): TPermissionDALFactory => { db.ref("updatedAt").withSchema(TableName.Role).as("crUp"), db.ref("id").withSchema(TableName.AdditionalPrivilege).as("pId"), db.ref("updatedAt").withSchema(TableName.AdditionalPrivilege).as("pUp"), + db.ref("id").withSchema(TableName.IdentityMetadata).as("imId"), + db.ref("updatedAt").withSchema(TableName.IdentityMetadata).as("imUp"), db.raw( `CASE WHEN "${TableName.MembershipRole}"."isTemporary" AND NOW() >= "${TableName.MembershipRole}"."temporaryAccessEndTime" THEN true ELSE false END AS "rExp"` ), diff --git a/backend/src/ee/services/permission/permission-service-types.ts b/backend/src/ee/services/permission/permission-service-types.ts index a74ad2626bf..00f11187292 100644 --- a/backend/src/ee/services/permission/permission-service-types.ts +++ b/backend/src/ee/services/permission/permission-service-types.ts @@ -1,6 +1,5 @@ import { MongoAbility } from "@casl/ability"; import { MongoQuery } from "@ucast/mongo2js"; -import { Knex } from "knex"; import { ActionProjectType, OrganizationActionScope, TMemberships } from "@app/db/schemas"; import { ActorAuthMethod, ActorType } from "@app/services/auth/auth-type"; @@ -126,5 +125,4 @@ export type TPermissionServiceFactory = { projectId: string; checkPermissions: ProjectPermissionSet; }) => Promise; - invalidateProjectPermissionCache: (projectId: string, tx?: Knex) => Promise; }; diff --git a/backend/src/ee/services/permission/permission-service.ts b/backend/src/ee/services/permission/permission-service.ts index 986faff07c5..148c1c4b44e 100644 --- a/backend/src/ee/services/permission/permission-service.ts +++ b/backend/src/ee/services/permission/permission-service.ts @@ -2,7 +2,6 @@ import { createMongoAbility, MongoAbility, RawRuleOf } from "@casl/ability"; import { PackRule, unpackRules } from "@casl/ability/extra"; import { requestContext } from "@fastify/request-context"; import handlebars from "handlebars"; -import { Knex } from "knex"; import { AccessScope, @@ -22,6 +21,7 @@ import { sshHostBootstrapPermissions } from "@app/ee/services/permission/default-roles"; import { KeyStorePrefixes, KeyStoreTtls, TKeyStoreFactory } from "@app/keystore/keystore"; +import { withCacheFingerprint } from "@app/lib/cache/with-cache"; import { conditionsMatcher } from "@app/lib/casl"; import { BadRequestError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors"; import { objectify } from "@app/lib/fn"; @@ -164,69 +164,6 @@ export const permissionServiceFactory = ({ keyStore, roleDAL }: TPermissionServiceFactoryDep): TPermissionServiceFactory => { - const invalidateProjectPermissionCache = async (projectId: string, tx?: Knex) => { - const projectPermissionDalVersionKey = KeyStorePrefixes.ProjectPermissionDalVersion(projectId); - await keyStore.pgIncrementBy(projectPermissionDalVersionKey, { - incr: 1, - tx, - expiry: KeyStoreTtls.ProjectPermissionDalVersionTtl - }); - }; - - // akhilmdhh: will bring this up later - // const calculateProjectPermissionTtl = (membership: unknown): number => { - // const now = new Date(); - // let minTtl = KeyStoreTtls.ProjectPermissionCacheInSeconds; - // - // const getMinEndTime = (items: Array<{ temporaryAccessEndTime?: Date | null; isTemporary?: boolean }>) => { - // return items - // .filter((item) => item.isTemporary && item.temporaryAccessEndTime) - // .map((item) => item.temporaryAccessEndTime!) - // .filter((endTime) => endTime > now) - // .reduce((min, endTime) => (!min || endTime < min ? endTime : min), null as Date | null); - // }; - // - // const roleTimes: Date[] = []; - // const additionalPrivilegeTimes: Date[] = []; - // - // if ( - // membership && - // typeof membership === "object" && - // "roles" in membership && - // Array.isArray((membership as Record).roles) - // ) { - // const roles = (membership as Record).roles as Array<{ - // temporaryAccessEndTime?: Date | null; - // isTemporary?: boolean; - // }>; - // const minRoleEndTime = getMinEndTime(roles); - // if (minRoleEndTime) roleTimes.push(minRoleEndTime); - // } - // - // if ( - // membership && - // typeof membership === "object" && - // "additionalPrivileges" in membership && - // Array.isArray((membership as Record).additionalPrivileges) - // ) { - // const additionalPrivileges = (membership as Record).additionalPrivileges as Array<{ - // temporaryAccessEndTime?: Date | null; - // isTemporary?: boolean; - // }>; - // const minAdditionalEndTime = getMinEndTime(additionalPrivileges); - // if (minAdditionalEndTime) additionalPrivilegeTimes.push(minAdditionalEndTime); - // } - // - // const allEndTimes = [...roleTimes, ...additionalPrivilegeTimes]; - // if (allEndTimes.length > 0) { - // const nearestEndTime = allEndTimes.reduce((min, endTime) => (!min || endTime < min ? endTime : min)); - // const timeUntilExpiry = Math.floor((nearestEndTime.getTime() - now.getTime()) / 1000); - // minTtl = Math.min(minTtl, Math.max(1, timeUntilExpiry)); - // } - // - // return minTtl; - // }; - const getOrgPermission: TPermissionServiceFactory["getOrgPermission"] = async ({ actor, actorId, @@ -347,6 +284,105 @@ export const permissionServiceFactory = ({ }; }; + const reviveCachedPermissionDates = ( + memberships: { + roles?: { temporaryAccessEndTime?: unknown }[]; + additionalPrivileges?: { temporaryAccessEndTime?: unknown }[]; + }[] + ) => { + for (const membership of memberships) { + for (const role of membership.roles ?? []) { + if (role.temporaryAccessEndTime) { + role.temporaryAccessEndTime = new Date(role.temporaryAccessEndTime as string); + } + } + for (const priv of membership.additionalPrivileges ?? []) { + if (priv.temporaryAccessEndTime) { + priv.temporaryAccessEndTime = new Date(priv.temporaryAccessEndTime as string); + } + } + } + }; + + type TCachedProjectPermission = { + permissionData: Awaited>; + projectDetails: TProjects; + username: string; + canBypassSso: boolean; + }; + + const $fetchProjectPermissionData = async ( + projectId: string, + actorOrgId: string | undefined, + actionProjectType: ActionProjectType, + actor: ActorType.USER | ActorType.IDENTITY, + actorId: string + ): Promise => { + const projectDetails = await projectDAL.findById(projectId); + if (!projectDetails) { + throw new NotFoundError({ message: `Project with ${projectId} not found` }); + } + + if (projectDetails.orgId !== actorOrgId) { + throw new ForbiddenRequestError({ name: "This project does not belong to your selected organization." }); + } + + if (actionProjectType !== ActionProjectType.Any && actionProjectType !== projectDetails.type) { + throw new BadRequestError({ + message: `The project is of type ${projectDetails.type}. Operations of type ${actionProjectType} are not allowed.` + }); + } + + const permissionData = await permissionDAL.getPermission({ + scopeData: { + scope: AccessScope.Project, + orgId: projectDetails.orgId, + projectId + }, + actorId, + actorType: actor + }); + if (!permissionData?.length) + throw new ForbiddenRequestError({ + message: `You are not a member of this project with ID ${projectId}. Please assign this ${actor} to the project with the appropriate permissions, then try again.` + }); + + let username = ""; + if (actor === ActorType.USER) { + const userDetails = await userDAL.findById(actorId); + username = userDetails?.username; + } else { + const identityDetails = await identityDAL.findById(actorId); + username = identityDetails?.name; + } + + // SSO bypass check (for USER actors) — pre-compute and cache the boolean + let canBypassSso = false; + if (actor === ActorType.USER) { + const enforceSsoAndBypassEnabled = + permissionData?.[0].orgAuthEnforced || + (permissionData?.[0].orgGoogleSsoAuthEnforced && permissionData?.[0].bypassOrgAuthEnabled); + + if (enforceSsoAndBypassEnabled) { + const orgIdForBypass = permissionData?.[0].rootOrgId ?? projectDetails.orgId; + const orgPermissionData = await permissionDAL.getPermission({ + scopeData: { scope: AccessScope.Organization, orgId: orgIdForBypass }, + actorId, + actorType: ActorType.USER + }); + if (orgPermissionData?.length) { + const orgPermissionFromRoles = flattenActiveRolesFromMemberships(orgPermissionData, OrgMembershipRole.Custom); + const orgPermission = createMongoAbility(buildOrgPermissionRules(orgPermissionFromRoles), { + conditionsMatcher + }); + canBypassSso = orgPermission.can(OrgPermissionSsoActions.BypassSsoEnforcement, OrgPermissionSubjects.Sso); + } + } + } + + return { permissionData, projectDetails, username, canBypassSso }; + }; + const getProjectPermission: TPermissionServiceFactory["getProjectPermission"] = async ({ actor: inputActor, actorId: inputActorId, @@ -384,70 +420,53 @@ export const permissionServiceFactory = ({ name: "Get org permission" }); } - - const projectDetails = await projectDAL.findById(projectId); - if (!projectDetails) { - throw new NotFoundError({ message: `Project with ${projectId} not found` }); - } - - requestContext.set("projectDetails", { - id: projectDetails.id, - name: projectDetails.name, - slug: projectDetails.slug + const narrowedActor: ActorType.USER | ActorType.IDENTITY = actor; + + // --- Permission cache: fingerprint-based with marker + data keys --- + const cached: TCachedProjectPermission = await withCacheFingerprint({ + keyStore, + dataKey: KeyStorePrefixes.ProjectPermissionData(projectId, narrowedActor, actorId, actionProjectType), + markerKey: KeyStorePrefixes.ProjectPermissionMarker(projectId, narrowedActor, actorId, actionProjectType), + markerTtlSeconds: KeyStoreTtls.ProjectPermissionMarkerTtlSeconds, + dataTtlSeconds: KeyStoreTtls.ProjectPermissionDataTtlSeconds, + fingerprintFetcher: () => + permissionDAL.getPermissionFingerprint({ + projectId, + orgId: actorOrgId || "", + actorId, + actorType: narrowedActor + }), + dataFetcher: () => $fetchProjectPermissionData(projectId, actorOrgId, actionProjectType, narrowedActor, actorId), + reviver: (parsed: TCachedProjectPermission) => { + reviveCachedPermissionDates(parsed.permissionData); + } }); + const { permissionData, projectDetails, username, canBypassSso } = cached; + + // Re-validate org and project type on cache hit (actorOrgId is not in cache key) if (projectDetails.orgId !== actorOrgId) { throw new ForbiddenRequestError({ name: "This project does not belong to your selected organization." }); } - if (actionProjectType !== ActionProjectType.Any && actionProjectType !== projectDetails.type) { throw new BadRequestError({ message: `The project is of type ${projectDetails.type}. Operations of type ${actionProjectType} are not allowed.` }); } - const permissionData = await permissionDAL.getPermission({ - scopeData: { - scope: AccessScope.Project, - orgId: projectDetails.orgId, - projectId - }, - actorId, - actorType: actor + requestContext.set("projectDetails", { + id: projectDetails.id, + name: projectDetails.name, + slug: projectDetails.slug }); - if (!permissionData?.length) - throw new ForbiddenRequestError({ - message: `You are not a member of this project with ID ${projectId}. Please assign this ${actor} to the project with the appropriate permissions, then try again.` - }); const permissionFromRoles = flattenActiveRolesFromMemberships(permissionData, ProjectMembershipRole.Custom); const hasRole = (role: string) => permissionData.some((memberships) => memberships.roles.some((el) => role === (el.customRoleSlug || el.role))); - // SSO enforcement applies only to users; use org-level bypass criteria (Org Admin or BypassSsoEnforcement permission) - // When project is in sub-org, use root org for bypass check (SSO enforced at root; user's bypass permission is in root org) + // SSO enforcement runs on every request (uses per-request actorAuthMethod) if (actor === ActorType.USER) { - let canBypassSso = false; - const enforceSsoAndBypassEnabled = - permissionData?.[0].orgAuthEnforced || - (permissionData?.[0].orgGoogleSsoAuthEnforced && permissionData?.[0].bypassOrgAuthEnabled); - - if (enforceSsoAndBypassEnabled) { - const orgIdForBypass = permissionData?.[0].rootOrgId ?? projectDetails.orgId; - const orgPermissionData = await permissionDAL.getPermission({ - scopeData: { scope: AccessScope.Organization, orgId: orgIdForBypass }, - actorId, - actorType: ActorType.USER - }); - if (orgPermissionData?.length) { - const orgPermissionFromRoles = flattenActiveRolesFromMemberships(orgPermissionData, OrgMembershipRole.Custom); - const orgPermission = createMongoAbility(buildOrgPermissionRules(orgPermissionFromRoles), { - conditionsMatcher - }); - canBypassSso = orgPermission.can(OrgPermissionSsoActions.BypassSsoEnforcement, OrgPermissionSubjects.Sso); - } - } validateOrgSSO( actorAuthMethod, permissionData?.[0].orgAuthEnforced, @@ -467,15 +486,6 @@ export const permissionServiceFactory = ({ const metadataKeyValuePair = escapeHandlebarsMissingDict(unescapedMetadata, "identity.metadata"); requestContext.set("identityPermissionMetadata", { metadata: unescapedMetadata }); - let username = ""; - if (actor === ActorType.USER) { - const userDetails = await userDAL.findById(actorId); - username = userDetails?.username; - } else { - const identityDetails = await identityDAL.findById(actorId); - username = identityDetails?.name; - } - const unescapedIdentityAuthInfo = requestContext.get("identityAuthInfo"); const identityAuthInfo = unescapedIdentityAuthInfo?.identityId === actorId && unescapedIdentityAuthInfo @@ -759,7 +769,6 @@ export const permissionServiceFactory = ({ getProjectPermissions, getOrgPermissionByRoles, getProjectPermissionByRoles, - checkGroupProjectPermission, - invalidateProjectPermissionCache + checkGroupProjectPermission }; }; diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index f6aba5e0e52..8c6295c0c4d 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -68,18 +68,10 @@ export const KeyStorePrefixes = { ActiveSSEConnections: (projectId: string, identityId: string, connectionId: string) => `sse-connections:${projectId}:${identityId}:${connectionId}` as const, - ProjectPermission: ( - projectId: string, - version: number, - actorType: string, - actorId: string, - actionProjectType: string - ) => `project-permission:${projectId}:${version}:${actorType}:${actorId}:${actionProjectType}` as const, - ProjectPermissionDalVersion: (projectId: string) => `project-permission:${projectId}:dal-version` as const, - UserProjectPermissionPattern: (userId: string) => `project-permission:*:*:USER:${userId}:*` as const, - IdentityProjectPermissionPattern: (identityId: string) => `project-permission:*:*:IDENTITY:${identityId}:*` as const, - GroupMemberProjectPermissionPattern: (projectId: string, groupId: string) => - `group-member-project-permission:${projectId}:${groupId}:*` as const, + ProjectPermissionMarker: (projectId: string, actorType: string, actorId: string, actionProjectType: string) => + `project-permission-marker:${projectId}:${actorType}:${actorId}:${actionProjectType}` as const, + ProjectPermissionData: (projectId: string, actorType: string, actorId: string, actionProjectType: string) => + `project-permission-data:${projectId}:${actorType}:${actorId}:${actionProjectType}` as const, PkiAcmeNonce: (nonce: string) => `pki-acme-nonce:${nonce}` as const, MfaSession: (mfaSessionId: string) => `mfa-session:${mfaSessionId}` as const, @@ -110,8 +102,8 @@ export const KeyStoreTtls = { SetSyncSecretIntegrationLastRunTimestampInSeconds: 60, SetSecretSyncLastRunTimestampInSeconds: 60, AccessTokenStatusUpdateInSeconds: 120, - ProjectPermissionCacheInSeconds: 300, // 5 minutes - ProjectPermissionDalVersionTtl: "15m", // Project permission DAL version TTL + ProjectPermissionMarkerTtlSeconds: 10, // 10 seconds - short-lived marker for fingerprint validation + ProjectPermissionDataTtlSeconds: 600, // 10 minutes - longer-lived data payload MfaSessionInSeconds: 300, // 5 minutes WebAuthnChallengeInSeconds: 300, // 5 minutes ProjectSSEConnectionTtlSeconds: 180, // Must be > heartbeat interval (60s) * 2 diff --git a/backend/src/lib/cache/with-cache.test.ts b/backend/src/lib/cache/with-cache.test.ts index 5048d32eb59..211469b92b2 100644 --- a/backend/src/lib/cache/with-cache.test.ts +++ b/backend/src/lib/cache/with-cache.test.ts @@ -215,6 +215,123 @@ describe("withCache", () => { ); }); + it("should compute TTL from fetcher result when ttlSeconds is a function", async () => { + mockKeyStore.getItem.mockResolvedValue(null); + const data = { expiresInSeconds: 42 }; + const fetcher = vi.fn().mockResolvedValue(data); + const ttlFn = vi.fn((result: typeof data) => result.expiresInSeconds); + + await withCache({ + keyStore: mockKeyStore, + key: "dynamic-ttl-key", + ttlSeconds: ttlFn, + fetcher + }); + + expect(ttlFn).toHaveBeenCalledWith(data); + expect(mockKeyStore.setItemWithExpiry).toHaveBeenCalledWith("dynamic-ttl-key", 42, JSON.stringify(data)); + }); + + it("should not call TTL function on cache hit", async () => { + const data = { cached: true }; + mockKeyStore.getItem.mockResolvedValue(JSON.stringify(data)); + const fetcher = vi.fn(); + const ttlFn = vi.fn(() => 100); + + await withCache({ + keyStore: mockKeyStore, + key: "hit-dynamic-ttl-key", + ttlSeconds: ttlFn, + fetcher + }); + + expect(ttlFn).not.toHaveBeenCalled(); + expect(fetcher).not.toHaveBeenCalled(); + }); + + it("should call reviver on cache hit to mutate parsed value", async () => { + const cached = { date: "2026-04-13T00:00:00.000Z", value: 10 }; + mockKeyStore.getItem.mockResolvedValue(JSON.stringify(cached)); + const fetcher = vi.fn(); + const reviver = vi.fn((parsed: { date: string | Date; value: number }) => { + // eslint-disable-next-line no-param-reassign + parsed.date = new Date(parsed.date as string); + }); + + const result = await withCache<{ date: string | Date; value: number }>({ + keyStore: mockKeyStore, + key: "reviver-key", + ttlSeconds: 60, + fetcher, + reviver + }); + + expect(reviver).toHaveBeenCalledOnce(); + expect(result.date).toBeInstanceOf(Date); + expect((result.date as Date).toISOString()).toBe("2026-04-13T00:00:00.000Z"); + expect(fetcher).not.toHaveBeenCalled(); + }); + + it("should use reviver's return value when it returns a new object", async () => { + const cached = { value: 1 }; + mockKeyStore.getItem.mockResolvedValue(JSON.stringify(cached)); + const fetcher = vi.fn(); + const reviver = vi.fn((parsed: { value: number }) => ({ value: parsed.value * 2 })); + + const result = await withCache<{ value: number }>({ + keyStore: mockKeyStore, + key: "reviver-return-key", + ttlSeconds: 60, + fetcher, + reviver + }); + + expect(result.value).toBe(2); + }); + + it("should not call reviver on cache miss", async () => { + mockKeyStore.getItem.mockResolvedValue(null); + const fetcher = vi.fn().mockResolvedValue({ fresh: true }); + const reviver = vi.fn(); + + await withCache({ + keyStore: mockKeyStore, + key: "miss-reviver-key", + ttlSeconds: 60, + fetcher, + reviver + }); + + expect(reviver).not.toHaveBeenCalled(); + expect(fetcher).toHaveBeenCalledOnce(); + }); + + it("should fall back to fetcher when reviver throws", async () => { + const { logger } = await import("@app/lib/logger"); + const cached = { value: 1 }; + const fresh = { value: 99 }; + mockKeyStore.getItem.mockResolvedValue(JSON.stringify(cached)); + const fetcher = vi.fn().mockResolvedValue(fresh); + const reviver = vi.fn(() => { + throw new Error("reviver boom"); + }); + + const result = await withCache({ + keyStore: mockKeyStore, + key: "reviver-throws-key", + ttlSeconds: 60, + fetcher, + reviver + }); + + expect(result).toEqual(fresh); + expect(fetcher).toHaveBeenCalledOnce(); + expect(logger.warn).toHaveBeenCalledWith( + expect.objectContaining({ key: "reviver-throws-key" }), + expect.stringContaining("cache parse failed") + ); + }); + it("should log warnings on cache read and write failures", async () => { const { logger } = await import("@app/lib/logger"); @@ -240,3 +357,294 @@ describe("withCache", () => { ); }); }); + +describe("withCacheFingerprint", () => { + let mockKeyStore: { + getItem: ReturnType; + setItemWithExpiry: ReturnType; + }; + + beforeEach(() => { + mockKeyStore = { + getItem: vi.fn(), + setItemWithExpiry: vi.fn().mockResolvedValue("OK") + }; + }); + + afterEach(() => { + vi.clearAllMocks(); + }); + + it("should return cached data on marker and data hit (0 DB reads)", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const payload = { id: "user-123", permissions: ["read", "write"] }; + const cachedData = { fingerprint: "fp-abc", payload }; + + mockKeyStore.getItem.mockImplementation(async (key: string) => { + if (key === "marker-key") return "1"; + if (key === "data-key") return JSON.stringify(cachedData); + return null; + }); + + const fingerprintFetcher = vi.fn(); + const dataFetcher = vi.fn(); + + const result = await withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }); + + expect(result).toEqual(payload); + expect(fingerprintFetcher).not.toHaveBeenCalled(); + expect(dataFetcher).not.toHaveBeenCalled(); + expect(mockKeyStore.setItemWithExpiry).not.toHaveBeenCalled(); + }); + + it("should revalidate and reset marker on marker miss + data hit + fingerprint match (1 DB read)", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const payload = { id: "user-456", permissions: ["admin"] }; + const fingerprint = "fp-def"; + const cachedData = { fingerprint, payload }; + + mockKeyStore.getItem.mockImplementation(async (key: string) => { + if (key === "marker-key") return null; // Marker expired + if (key === "data-key") return JSON.stringify(cachedData); + return null; + }); + + const fingerprintFetcher = vi.fn().mockResolvedValue(fingerprint); + const dataFetcher = vi.fn(); + + const result = await withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }); + + expect(result).toEqual(payload); + expect(fingerprintFetcher).toHaveBeenCalledOnce(); + expect(dataFetcher).not.toHaveBeenCalled(); + expect(mockKeyStore.setItemWithExpiry).toHaveBeenCalledWith("marker-key", 10, "1"); + }); + + it("should full re-fetch on fingerprint mismatch (1 heavy DB read)", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const oldPayload = { id: "user-789", permissions: ["read"] }; + const newPayload = { id: "user-789", permissions: ["read", "write"] }; + const oldFingerprint = "fp-old"; + const newFingerprint = "fp-new"; + const oldCachedData = { fingerprint: oldFingerprint, payload: oldPayload }; + + mockKeyStore.getItem.mockImplementation(async (key: string) => { + if (key === "marker-key") return null; + if (key === "data-key") return JSON.stringify(oldCachedData); + return null; + }); + + const fingerprintFetcher = vi.fn().mockResolvedValue(newFingerprint); + const dataFetcher = vi.fn().mockResolvedValue(newPayload); + + const result = await withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }); + + expect(result).toEqual(newPayload); + expect(fingerprintFetcher).toHaveBeenCalledOnce(); + expect(dataFetcher).toHaveBeenCalledOnce(); + expect(mockKeyStore.setItemWithExpiry).toHaveBeenCalledWith( + "data-key", + 600, + JSON.stringify({ fingerprint: newFingerprint, payload: newPayload }) + ); + expect(mockKeyStore.setItemWithExpiry).toHaveBeenCalledWith("marker-key", 10, "1"); + }); + + it("should full re-fetch on marker miss + data miss", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const payload = { id: "new-user", permissions: ["viewer"] }; + const fingerprint = "fp-fresh"; + + mockKeyStore.getItem.mockResolvedValue(null); // Both marker and data miss + + const fingerprintFetcher = vi.fn().mockResolvedValue(fingerprint); + const dataFetcher = vi.fn().mockResolvedValue(payload); + + const result = await withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }); + + expect(result).toEqual(payload); + expect(fingerprintFetcher).toHaveBeenCalledOnce(); + expect(dataFetcher).toHaveBeenCalledOnce(); + expect(mockKeyStore.setItemWithExpiry).toHaveBeenCalledWith( + "data-key", + 600, + JSON.stringify({ fingerprint, payload }) + ); + expect(mockKeyStore.setItemWithExpiry).toHaveBeenCalledWith("marker-key", 10, "1"); + }); + + it("should call reviver on cache hits", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const payload = { date: "2026-04-13T00:00:00.000Z", value: 42 }; + const cachedData = { fingerprint: "fp-date", payload }; + + mockKeyStore.getItem.mockImplementation(async (key: string) => { + if (key === "marker-key") return "1"; + if (key === "data-key") return JSON.stringify(cachedData); + return null; + }); + + const fingerprintFetcher = vi.fn(); + const dataFetcher = vi.fn(); + const reviver = vi.fn((parsed: { date: string | Date; value: number }) => { + // eslint-disable-next-line no-param-reassign + parsed.date = new Date(parsed.date as string); + }); + + const result = await withCacheFingerprint<{ date: string | Date; value: number }>({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher, + reviver + }); + + expect(reviver).toHaveBeenCalledOnce(); + expect(result.date).toBeInstanceOf(Date); + expect((result.date as Date).toISOString()).toBe("2026-04-13T00:00:00.000Z"); + }); + + it("should gracefully handle Redis read failures", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const { logger } = await import("@app/lib/logger"); + const payload = { id: "fallback-user" }; + const fingerprint = "fp-fallback"; + + mockKeyStore.getItem.mockRejectedValue(new Error("Redis connection lost")); + + const fingerprintFetcher = vi.fn().mockResolvedValue(fingerprint); + const dataFetcher = vi.fn().mockResolvedValue(payload); + + const result = await withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }); + + expect(result).toEqual(payload); + expect(fingerprintFetcher).toHaveBeenCalledOnce(); + expect(dataFetcher).toHaveBeenCalledOnce(); + expect(logger.warn).toHaveBeenCalledWith( + expect.objectContaining({ key: "marker-key" }), + expect.stringContaining("marker read failed") + ); + }); + + it("should bypass cache and call dataFetcher directly on fingerprint fetch failure", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const { logger } = await import("@app/lib/logger"); + const payload = { id: "rescue-user" }; + + mockKeyStore.getItem.mockResolvedValue(null); + + const fingerprintFetcher = vi.fn().mockRejectedValue(new Error("DB timeout")); + const dataFetcher = vi.fn().mockResolvedValue(payload); + + const result = await withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }); + + expect(result).toEqual(payload); + expect(dataFetcher).toHaveBeenCalledOnce(); + expect(mockKeyStore.setItemWithExpiry).not.toHaveBeenCalled(); + expect(logger.error).toHaveBeenCalledWith( + expect.objectContaining({ err: expect.any(Error) }) as unknown as Record, + expect.stringContaining("fingerprint fetch failed") + ); + }); + + it("should not block on Redis write failures", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + const { logger } = await import("@app/lib/logger"); + const payload = { id: "write-fail-user" }; + const fingerprint = "fp-write"; + + mockKeyStore.getItem.mockResolvedValue(null); + mockKeyStore.setItemWithExpiry.mockRejectedValue(new Error("Redis write timeout")); + + const fingerprintFetcher = vi.fn().mockResolvedValue(fingerprint); + const dataFetcher = vi.fn().mockResolvedValue(payload); + + const result = await withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }); + + expect(result).toEqual(payload); + expect(logger.warn).toHaveBeenCalledWith( + expect.objectContaining({ key: "data-key" }), + expect.stringContaining("data write failed") + ); + }); + + it("should propagate dataFetcher errors", async () => { + const { withCacheFingerprint } = await import("./with-cache"); + + mockKeyStore.getItem.mockResolvedValue(null); + + const fingerprintFetcher = vi.fn().mockResolvedValue("fp-error"); + const dataFetcher = vi.fn().mockRejectedValue(new Error("Database query failed")); + + await expect( + withCacheFingerprint({ + keyStore: mockKeyStore, + dataKey: "data-key", + markerKey: "marker-key", + markerTtlSeconds: 10, + dataTtlSeconds: 600, + fingerprintFetcher, + dataFetcher + }) + ).rejects.toThrow("Database query failed"); + }); +}); diff --git a/backend/src/lib/cache/with-cache.ts b/backend/src/lib/cache/with-cache.ts index 901f9a1399c..4aa3e32361c 100644 --- a/backend/src/lib/cache/with-cache.ts +++ b/backend/src/lib/cache/with-cache.ts @@ -1,11 +1,55 @@ import { TKeyStoreFactory } from "@app/keystore/keystore"; import { logger } from "@app/lib/logger"; +type TCacheKeyStore = Pick; + +/** Read a raw string from Redis, returning null on miss or error. */ +const cacheGet = async (keyStore: TCacheKeyStore, key: string, errMsg: string): Promise => { + try { + return await keyStore.getItem(key); + } catch (err) { + logger.warn({ key, err }, `${errMsg} [key=${key}]`); + return null; + } +}; + +/** Write to Redis with the given TTL, swallowing errors. */ +const cacheSet = async ( + keyStore: TCacheKeyStore, + key: string, + ttlSeconds: number, + value: string, + errMsg: string +): Promise => { + try { + await keyStore.setItemWithExpiry(key, ttlSeconds, value); + } catch (err) { + logger.warn({ key, err }, `${errMsg} [key=${key}]`); + } +}; + +/** Apply an optional reviver; returns the revived value or the original if the reviver returns void. */ +const applyReviver = (value: T, reviver?: (parsed: T) => T | void): T => { + if (!reviver) return value; + const revived = reviver(value); + return revived === undefined ? value : revived; +}; + type TWithCacheOpts = { - keyStore: Pick; + keyStore: TCacheKeyStore; key: string; - ttlSeconds: number; + /** + * Cache TTL in seconds. Can be a fixed number, or a function of the fetched + * result (e.g. to cap the TTL at the nearest expiry time of the data). + */ + ttlSeconds: number | ((result: T) => number); fetcher: () => Promise; + /** + * Optional post-parse callback to revive non-JSON-safe fields (e.g. Date + * objects) on cache hit. Called with the parsed value; may mutate it or + * return a new value. If it throws, the value is treated as a cache miss. + */ + reviver?: (parsed: T) => T | void; }; /** @@ -13,17 +57,12 @@ type TWithCacheOpts = { * or invalid cached JSON, and writes the result back to Redis. Redis write errors are caught and logged * — the fetcher is always the source of truth. */ -export const withCache = async ({ keyStore, key, ttlSeconds, fetcher }: TWithCacheOpts): Promise => { - let cached: string | null = null; - try { - cached = await keyStore.getItem(key); - } catch (err) { - logger.warn({ key, err }, `withCache: cache read failed, falling back to fetcher [key=${key}]`); - } +export const withCache = async ({ keyStore, key, ttlSeconds, fetcher, reviver }: TWithCacheOpts): Promise => { + const cached = await cacheGet(keyStore, key, "withCache: cache read failed, falling back to fetcher"); if (cached !== null) { try { - return JSON.parse(cached) as T; + return applyReviver(JSON.parse(cached) as T, reviver); } catch (err) { logger.warn({ key, err }, `withCache: cache parse failed, falling back to fetcher [key=${key}]`); } @@ -31,11 +70,103 @@ export const withCache = async ({ keyStore, key, ttlSeconds, fetcher }: TWith const result = await fetcher(); + const ttl = typeof ttlSeconds === "function" ? ttlSeconds(result) : ttlSeconds; + await cacheSet(keyStore, key, ttl, JSON.stringify(result), "withCache: cache write failed"); + + return result; +}; + +type TWithCacheFingerprintOpts = { + keyStore: TCacheKeyStore; + dataKey: string; + markerKey: string; + markerTtlSeconds: number; + dataTtlSeconds: number; + fingerprintFetcher: () => Promise; + dataFetcher: () => Promise; + /** + * Optional post-parse callback to revive non-JSON-safe fields (e.g. Date + * objects) on cache hit. Called with the parsed payload; may mutate it or + * return a new value. If it throws, the value is treated as a cache miss. + */ + reviver?: (parsed: T) => T | void; +}; + +type TCachedData = { + fingerprint: string; + payload: T; +}; + +/** + * Two-tier cache-aside helper with fingerprint validation: + * - Short-lived marker (e.g. 10s) tracks recent validation + * - Long-lived data (e.g. 10m) holds the actual payload + fingerprint + * + * On marker hit: serve cached data directly (0 DB reads) + * On marker miss: compute lightweight fingerprint (1 DB read); if it matches cached data, reset marker and serve; otherwise, full re-fetch + */ +export const withCacheFingerprint = async ({ + keyStore, + dataKey, + markerKey, + markerTtlSeconds, + dataTtlSeconds, + fingerprintFetcher, + dataFetcher, + reviver +}: TWithCacheFingerprintOpts): Promise => { + const markerValue = await cacheGet(keyStore, markerKey, "withCacheFingerprint: marker read failed"); + const cachedDataStr = await cacheGet(keyStore, dataKey, "withCacheFingerprint: data read failed"); + + // Marker + data hit: return cached data directly (fast path, 0 DB reads) + if (markerValue !== null && cachedDataStr !== null) { + try { + const { payload } = JSON.parse(cachedDataStr) as TCachedData; + return applyReviver(payload, reviver); + } catch (err) { + logger.warn( + { key: dataKey, err }, + `withCacheFingerprint: cached data parse failed, falling back to fingerprint check [key=${dataKey}]` + ); + } + } + + // Marker expired or cache miss — compute fingerprint (1 lightweight DB read) + let currentFingerprint: string; try { - await keyStore.setItemWithExpiry(key, ttlSeconds, JSON.stringify(result)); + currentFingerprint = await fingerprintFetcher(); } catch (err) { - logger.warn({ key, err }, `withCache: cache write failed [key=${key}]`); + logger.error({ err }, `withCacheFingerprint: fingerprint fetch failed, bypassing cache`); + return dataFetcher(); } + // Data exists and fingerprint matches: reset marker and return (1 DB read total) + if (cachedDataStr !== null) { + try { + const cachedData = JSON.parse(cachedDataStr) as TCachedData; + if (cachedData.fingerprint === currentFingerprint) { + await cacheSet(keyStore, markerKey, markerTtlSeconds, "1", "withCacheFingerprint: marker reset failed"); + return applyReviver(cachedData.payload, reviver); + } + } catch (err) { + logger.error( + { key: dataKey, err }, + `withCacheFingerprint: cached data parse failed, falling back to full fetch [key=${dataKey}]` + ); + } + } + + // Fingerprint mismatch or no cached data — full re-fetch + const result = await dataFetcher(); + + await cacheSet( + keyStore, + dataKey, + dataTtlSeconds, + JSON.stringify({ fingerprint: currentFingerprint, payload: result }), + "withCacheFingerprint: data write failed" + ); + await cacheSet(keyStore, markerKey, markerTtlSeconds, "1", "withCacheFingerprint: marker write failed"); + return result; }; diff --git a/backend/src/services/project-membership/project-membership-service.ts b/backend/src/services/project-membership/project-membership-service.ts index b0949d550ab..1d335e44eb1 100644 --- a/backend/src/services/project-membership/project-membership-service.ts +++ b/backend/src/services/project-membership/project-membership-service.ts @@ -32,10 +32,7 @@ import { } from "./project-membership-types"; type TProjectMembershipServiceFactoryDep = { - permissionService: Pick< - TPermissionServiceFactory, - "getProjectPermission" | "getProjectPermissionByRoles" | "invalidateProjectPermissionCache" - >; + permissionService: Pick; smtpService: TSmtpService; projectMembershipDAL: TProjectMembershipDALFactory; membershipUserDAL: TMembershipUserDALFactory; @@ -214,8 +211,6 @@ export const projectMembershipServiceFactory = ({ ); }); - await permissionService.invalidateProjectPermissionCache(projectId); - if (sendEmails) { await notificationService.createUserNotifications( orgMembershipUsernames.map((member) => ({ @@ -341,8 +336,6 @@ export const projectMembershipServiceFactory = ({ return deletedMemberships; }); - await permissionService.invalidateProjectPermissionCache(projectId); - return memberships; }; From 0fec6d28e276b6e46fb12ecd4f683036e565089c Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Tue, 14 Apr 2026 20:11:53 -0300 Subject: [PATCH 102/562] enhance(permission): implement fingerprint-based caching for project permissions and improve cache management --- backend/CLAUDE.md | 9 +++++++++ backend/src/ee/services/permission/permission-dal.ts | 4 +++- backend/src/ee/services/permission/permission-service.ts | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/backend/CLAUDE.md b/backend/CLAUDE.md index ccbcc52914d..18af7d31049 100644 --- a/backend/CLAUDE.md +++ b/backend/CLAUDE.md @@ -124,6 +124,15 @@ Uses CASL (`@casl/ability`) with MongoDB-style rules. Permission logic lives in Built-in roles: `Admin`, `Member`, `Viewer`, `NoAccess`. Custom roles use unpacked CASL rules stored in the database. Rules can include conditions with operators `$IN`, `$EQ`, `$NEQ`, `$GLOB` (for pattern matching like `prod-*`). See `PermissionConditionSchema` in `permission-types.ts`. +**Project permission caching** uses a fingerprint-based two-tier cache (`withCacheFingerprint` in `src/lib/cache/with-cache.ts`): +- **Short-lived marker** (10s TTL) in Redis — while present, cached data is served with 0 DB reads. +- **Long-lived data payload** (10m TTL) in Redis — holds the full permission blob plus a fingerprint hash. +- On marker expiry, a lightweight **fingerprint query** (`getPermissionFingerprint` in `permission-dal.ts`) runs (1 DB read). If the fingerprint matches the cached payload, the marker is reset; otherwise, a full data re-fetch occurs. +- The fingerprint covers **both project-scoped and org-scoped** memberships for the actor, so org-level changes (e.g. SSO bypass grant/revoke, org role edits) also trigger cache invalidation. +- `filterTemporary` in `flattenActiveRolesFromMemberships` runs on every request as a real-time safety net — it filters out expired temporary access regardless of cache state, so access revocation for timed roles/privileges is immediate. +- **No explicit cache invalidation calls exist.** The fingerprint self-corrects within the marker TTL (10s eventual consistency for access granting). The old `invalidateProjectPermissionCache` / DAL version counter pattern has been removed. +- Cache helpers (`cacheGet`, `cacheSet`, `applyReviver`) in `src/lib/cache/with-cache.ts` are shared between the simple `withCache` and the fingerprint-based `withCacheFingerprint`. + ### Queue System (BullMQ) Queue infrastructure in `src/queue/queue-service.ts`. Defines 30+ named queues via `QueueName` enum (e.g., `SecretRotation`, `AuditLog`, `IntegrationSync`, `SecretReplication`, `SecretSync`, `DynamicSecretRevocation`). Each queue has typed payloads defined in `TQueueJobTypes`. diff --git a/backend/src/ee/services/permission/permission-dal.ts b/backend/src/ee/services/permission/permission-dal.ts index 73cef556ad4..09b0b71e36b 100644 --- a/backend/src/ee/services/permission/permission-dal.ts +++ b/backend/src/ee/services/permission/permission-dal.ts @@ -852,7 +852,9 @@ export const permissionDALFactory = (db: TDbClient): TPermissionDALFactory => { if (actorType === ActorType.IDENTITY) { qb.on(`${TableName.IdentityMetadata}.identityId`, `${TableName.Membership}.actorIdentityId`); } else { - qb.on(`${TableName.IdentityMetadata}.identityId`, `${TableName.Membership}.actorUserId`); + void qb + .on(`${TableName.IdentityMetadata}.userId`, db.raw("?", [actorId])) + .andOn(`${TableName.Membership}.scopeOrgId`, `${TableName.IdentityMetadata}.orgId`); } }) .where(`${TableName.Membership}.scopeOrgId`, orgId) diff --git a/backend/src/ee/services/permission/permission-service.ts b/backend/src/ee/services/permission/permission-service.ts index 148c1c4b44e..073ffd5c6f2 100644 --- a/backend/src/ee/services/permission/permission-service.ts +++ b/backend/src/ee/services/permission/permission-service.ts @@ -350,10 +350,10 @@ export const permissionServiceFactory = ({ let username = ""; if (actor === ActorType.USER) { const userDetails = await userDAL.findById(actorId); - username = userDetails?.username; + username = userDetails?.username ?? ""; } else { const identityDetails = await identityDAL.findById(actorId); - username = identityDetails?.name; + username = identityDetails?.name ?? ""; } // SSO bypass check (for USER actors) — pre-compute and cache the boolean From db7c851436af3210c7a863e0c7b130904ac72018 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 19:25:57 -0400 Subject: [PATCH 103/562] refactor: merge deploy modal into single form with CLI/systemd tabs Remove the deployment method selection screen. The create gateway modal now shows one form, then tabs with both CLI and systemd commands to copy. Remove unused GatewayDeploymentMethodSelect, GatewayCliDeploymentMethod, and GatewayCliSystemdDeploymentMethod components. --- .../components/GatewayCliDeploymentMethod.tsx | 197 -------------- .../GatewayCliSystemdDeploymentMethod.tsx | 222 --------------- .../components/GatewayDeployModal.tsx | 255 ++++++++++++++++-- .../GatewayDeploymentMethodSelect.tsx | 54 ---- 4 files changed, 237 insertions(+), 491 deletions(-) delete mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx delete mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx delete mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeploymentMethodSelect.tsx diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx deleted file mode 100644 index 227fb8f3b3f..00000000000 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliDeploymentMethod.tsx +++ /dev/null @@ -1,197 +0,0 @@ -import { useMemo, useState } from "react"; -import { SingleValue } from "react-select"; -import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { useQuery } from "@tanstack/react-query"; -import { useNavigate } from "@tanstack/react-router"; -import { z } from "zod"; - -import { createNotification } from "@app/components/notifications"; -import { - Button, - FilterableSelect, - FormLabel, - IconButton, - Input, - ModalClose -} from "@app/components/v2"; -import { ROUTE_PATHS } from "@app/const/routes"; -import { gatewaysQueryKeys } from "@app/hooks/api/gateways"; -import { useConfigureGatewayTokenAuth, useCreateGateway } from "@app/hooks/api/gateways-v2"; -import { useGetRelays } from "@app/hooks/api/relays/queries"; -import { slugSchema } from "@app/lib/schemas"; - -import { RelayOption } from "./RelayOption"; - -const formSchema = z.object({ - name: slugSchema({ field: "name" }), - relay: z - .object({ id: z.string(), name: z.string() }, { required_error: "Relay is required" }) - .nullable() - .refine((val) => val !== null, { message: "Relay is required" }) -}); - -export const GatewayCliDeploymentMethod = () => { - const { protocol, hostname, port } = window.location; - const portSuffix = port && port !== "80" ? `:${port}` : ""; - const siteURL = `${protocol}//${hostname}${portSuffix}`; - - const navigate = useNavigate({ from: ROUTE_PATHS.Organization.NetworkingPage.path }); - - const [step, setStep] = useState<"form" | "command">("form"); - const [name, setName] = useState(""); - const [relay, setRelay] = useState({ - id: "_auto", - name: "Auto Select Relay" - }); - const [enrollmentToken, setEnrollmentToken] = useState(""); - const [resolvedRelayName, setResolvedRelayName] = useState(""); - const [formErrors, setFormErrors] = useState([]); - - const errors = useMemo(() => { - const errorMap: Record = {}; - formErrors.forEach((issue) => { - if (issue.path.length > 0) errorMap[String(issue.path[0])] = issue.message; - }); - return errorMap; - }, [formErrors]); - - const { data: gateways } = useQuery(gatewaysQueryKeys.listWithTokens()); - const { data: relays, isPending: isRelaysLoading } = useGetRelays(); - const { mutateAsync: createGateway, isPending: isCreatingGateway } = useCreateGateway(); - const { mutateAsync: configureTokenAuth, isPending: isConfiguringToken } = - useConfigureGatewayTokenAuth(); - - const handleContinue = async () => { - setFormErrors([]); - const validation = formSchema.safeParse({ name, relay }); - if (!validation.success) { - setFormErrors(validation.error.issues); - return; - } - - const existingNames = gateways?.map((g) => g.name) || []; - if (existingNames.includes(name.trim())) { - createNotification({ - type: "error", - text: "A gateway with this name already exists." - }); - return; - } - - try { - const gateway = await createGateway({ name }); - const tokenResult = await configureTokenAuth({ gatewayId: gateway.id }); - setEnrollmentToken(tokenResult.token); - - const relayName = relay?.id === "_auto" ? "" : (relay?.name ?? ""); - setResolvedRelayName(relayName); - setStep("command"); - } catch { - createNotification({ type: "error", text: "Failed to create gateway" }); - } - }; - - const command = useMemo(() => { - const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; - return `infisical gateway start ${name} --enroll-method=token --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; - }, [name, enrollmentToken, resolvedRelayName, siteURL]); - - if (step === "command") { - return ( - <> -

- Run the following command on the machine where you want to deploy the gateway. The token - expires in 1 hour and can only be used once. -

- -
- - { - navigator.clipboard.writeText(command); - createNotification({ text: "Command copied to clipboard", type: "info" }); - }} - className="w-10" - > - - -
-
- Install the Infisical CLI - - -
- - - -
- - ); - } - - return ( - <> - - setName(e.target.value)} - placeholder="Enter gateway name..." - isError={Boolean(errors.name)} - /> - {errors.name &&

{errors.name}

} - - - { - if ((newValue as SingleValue<{ id: string }>)?.id === "_create") { - navigate({ - search: (prev) => ({ ...prev, selectedTab: "relays", action: "deploy-relay" }) - }); - return; - } - setRelay(newValue as SingleValue<{ id: string; name: string }>); - }} - isLoading={isRelaysLoading} - options={[ - { id: "_auto", name: "Auto Select Relay" }, - { id: "_create", name: "Deploy New Relay" }, - ...(relays || []) - ]} - placeholder="Select relay..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - components={{ Option: RelayOption }} - /> - {errors.relay &&

{errors.relay}

} - -
- - - - -
- - ); -}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx deleted file mode 100644 index db03b1b7046..00000000000 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayCliSystemdDeploymentMethod.tsx +++ /dev/null @@ -1,222 +0,0 @@ -import { useMemo, useState } from "react"; -import { SingleValue } from "react-select"; -import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { useQuery } from "@tanstack/react-query"; -import { useNavigate } from "@tanstack/react-router"; -import { z } from "zod"; - -import { createNotification } from "@app/components/notifications"; -import { - Button, - FilterableSelect, - FormLabel, - IconButton, - Input, - ModalClose -} from "@app/components/v2"; -import { ROUTE_PATHS } from "@app/const/routes"; -import { gatewaysQueryKeys } from "@app/hooks/api/gateways"; -import { useConfigureGatewayTokenAuth, useCreateGateway } from "@app/hooks/api/gateways-v2"; -import { useGetRelays } from "@app/hooks/api/relays/queries"; -import { slugSchema } from "@app/lib/schemas"; - -import { RelayOption } from "./RelayOption"; - -const formSchema = z.object({ - name: slugSchema({ field: "name" }), - relay: z - .object({ id: z.string(), name: z.string() }, { required_error: "Relay is required" }) - .nullable() - .refine((val) => val !== null, { message: "Relay is required" }) -}); - -export const GatewayCliSystemdDeploymentMethod = () => { - const { protocol, hostname, port } = window.location; - const portSuffix = port && port !== "80" ? `:${port}` : ""; - const siteURL = `${protocol}//${hostname}${portSuffix}`; - - const navigate = useNavigate({ from: ROUTE_PATHS.Organization.NetworkingPage.path }); - - const [step, setStep] = useState<"form" | "command">("form"); - const [name, setName] = useState(""); - const [relay, setRelay] = useState({ - id: "_auto", - name: "Auto Select Relay" - }); - const [enrollmentToken, setEnrollmentToken] = useState(""); - const [resolvedRelayName, setResolvedRelayName] = useState(""); - const [formErrors, setFormErrors] = useState([]); - - const errors = useMemo(() => { - const errorMap: Record = {}; - formErrors.forEach((issue) => { - if (issue.path.length > 0) errorMap[String(issue.path[0])] = issue.message; - }); - return errorMap; - }, [formErrors]); - - const { data: gateways } = useQuery(gatewaysQueryKeys.listWithTokens()); - const { data: relays, isPending: isRelaysLoading } = useGetRelays(); - const { mutateAsync: createGateway, isPending: isCreatingGateway } = useCreateGateway(); - const { mutateAsync: configureTokenAuth, isPending: isConfiguringToken } = - useConfigureGatewayTokenAuth(); - - const handleContinue = async () => { - setFormErrors([]); - const validation = formSchema.safeParse({ name, relay }); - if (!validation.success) { - setFormErrors(validation.error.issues); - return; - } - - const existingNames = gateways?.map((g) => g.name) || []; - if (existingNames.includes(name.trim())) { - createNotification({ - type: "error", - text: "A gateway with this name already exists." - }); - return; - } - - try { - const gateway = await createGateway({ name }); - const tokenResult = await configureTokenAuth({ gatewayId: gateway.id }); - setEnrollmentToken(tokenResult.token); - - const relayName = relay?.id === "_auto" ? "" : (relay?.name ?? ""); - setResolvedRelayName(relayName); - setStep("command"); - } catch { - createNotification({ type: "error", text: "Failed to create gateway" }); - } - }; - - const installCommand = useMemo(() => { - const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; - return `sudo infisical gateway systemd install ${name} --enroll-method=token --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; - }, [enrollmentToken, name, resolvedRelayName, siteURL]); - - const startServiceCommand = "sudo systemctl start infisical-gateway"; - - if (step === "command") { - return ( - <> -

- Run the following commands on the machine where you want to deploy the gateway. The token - expires in 1 hour and can only be used once. -

- -
- - { - navigator.clipboard.writeText(installCommand); - createNotification({ - text: "Installation command copied to clipboard", - type: "info" - }); - }} - className="w-10" - > - - -
- - -
- - { - navigator.clipboard.writeText(startServiceCommand); - createNotification({ - text: "Start service command copied to clipboard", - type: "info" - }); - }} - className="w-10" - > - - -
- - Install the Infisical CLI - - -
- - - -
- - ); - } - - return ( - <> - - setName(e.target.value)} - placeholder="Enter gateway name..." - isError={Boolean(errors.name)} - /> - {errors.name &&

{errors.name}

} - - - { - if ((newValue as SingleValue<{ id: string }>)?.id === "_create") { - navigate({ - search: (prev) => ({ ...prev, selectedTab: "relays", action: "deploy-relay" }) - }); - return; - } - setRelay(newValue as SingleValue<{ id: string; name: string }>); - }} - isLoading={isRelaysLoading} - options={[ - { id: "_auto", name: "Auto Select Relay" }, - { id: "_create", name: "Deploy New Relay" }, - ...(relays || []) - ]} - placeholder="Select relay..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.id} - components={{ Option: RelayOption }} - /> - {errors.relay &&

{errors.relay}

} - -
- - - - -
- - ); -}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx index 2c6fa1f0c0d..9319bae30a0 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx @@ -1,34 +1,254 @@ -import { useState } from "react"; +import { useMemo, useState } from "react"; +import { SingleValue } from "react-select"; +import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useNavigate } from "@tanstack/react-router"; +import { useQuery } from "@tanstack/react-query"; +import { z } from "zod"; -import { Modal, ModalContent } from "@app/components/v2"; -import { GatewayDeploymentMethodSelect } from "@app/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeploymentMethodSelect"; +import { createNotification } from "@app/components/notifications"; +import { + Button, + FilterableSelect, + FormLabel, + IconButton, + Input, + Modal, + ModalClose, + ModalContent, + Tab, + TabList, + TabPanel, + Tabs +} from "@app/components/v2"; +import { ROUTE_PATHS } from "@app/const/routes"; +import { gatewaysQueryKeys } from "@app/hooks/api/gateways"; +import { useConfigureGatewayTokenAuth, useCreateGateway } from "@app/hooks/api/gateways-v2"; +import { useGetRelays } from "@app/hooks/api/relays/queries"; +import { slugSchema } from "@app/lib/schemas"; -import { GatewayCliDeploymentMethod } from "./GatewayCliDeploymentMethod"; -import { GatewayCliSystemdDeploymentMethod } from "./GatewayCliSystemdDeploymentMethod"; +import { RelayOption } from "./RelayOption"; + +const formSchema = z.object({ + name: slugSchema({ field: "name" }), + relay: z + .object({ id: z.string(), name: z.string() }, { required_error: "Relay is required" }) + .nullable() + .refine((val) => val !== null, { message: "Relay is required" }) +}); type Props = { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; }; -export const GatewayDeploymentInfoMap = { - cli: { name: "CLI", image: "SSH.png", component: GatewayCliDeploymentMethod }, - systemd: { name: "CLI (systemd)", image: "SSH.png", component: GatewayCliSystemdDeploymentMethod } -} as const; +const Content = () => { + const { protocol, hostname, port } = window.location; + const portSuffix = port && port !== "80" ? `:${port}` : ""; + const siteURL = `${protocol}//${hostname}${portSuffix}`; -export type GatewayDeploymentMethod = keyof typeof GatewayDeploymentInfoMap; + const navigate = useNavigate({ from: ROUTE_PATHS.Organization.NetworkingPage.path }); -const Content = () => { - const [selectedMethod, setSelectedMethod] = useState(null); + const [step, setStep] = useState<"form" | "command">("form"); + const [name, setName] = useState(""); + const [relay, setRelay] = useState({ + id: "_auto", + name: "Auto Select Relay" + }); + const [enrollmentToken, setEnrollmentToken] = useState(""); + const [resolvedRelayName, setResolvedRelayName] = useState(""); + const [formErrors, setFormErrors] = useState([]); + + const errors = useMemo(() => { + const errorMap: Record = {}; + formErrors.forEach((issue) => { + if (issue.path.length > 0) errorMap[String(issue.path[0])] = issue.message; + }); + return errorMap; + }, [formErrors]); + + const { data: gateways } = useQuery(gatewaysQueryKeys.listWithTokens()); + const { data: relays, isPending: isRelaysLoading } = useGetRelays(); + const { mutateAsync: createGateway, isPending: isCreatingGateway } = useCreateGateway(); + const { mutateAsync: configureTokenAuth, isPending: isConfiguringToken } = + useConfigureGatewayTokenAuth(); + + const handleContinue = async () => { + setFormErrors([]); + const validation = formSchema.safeParse({ name, relay }); + if (!validation.success) { + setFormErrors(validation.error.issues); + return; + } + + const existingNames = gateways?.map((g) => g.name) || []; + if (existingNames.includes(name.trim())) { + createNotification({ + type: "error", + text: "A gateway with this name already exists." + }); + return; + } + + try { + const gateway = await createGateway({ name }); + const tokenResult = await configureTokenAuth({ gatewayId: gateway.id }); + setEnrollmentToken(tokenResult.token); - if (selectedMethod) { - const ComponentToRender = GatewayDeploymentInfoMap[selectedMethod]?.component; - if (ComponentToRender) { - return ; + const relayName = relay?.id === "_auto" ? "" : (relay?.name ?? ""); + setResolvedRelayName(relayName); + setStep("command"); + } catch { + createNotification({ type: "error", text: "Failed to create gateway" }); } + }; + + const cliCommand = useMemo(() => { + const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; + return `infisical gateway start ${name} --enroll-method=token --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; + }, [name, enrollmentToken, resolvedRelayName, siteURL]); + + const systemdInstallCommand = useMemo(() => { + const relayPart = resolvedRelayName ? ` --target-relay-name=${resolvedRelayName}` : ""; + return `sudo infisical gateway systemd install ${name} --enroll-method=token --token=${enrollmentToken}${relayPart} --domain=${siteURL}`; + }, [name, enrollmentToken, resolvedRelayName, siteURL]); + + const startServiceCommand = "sudo systemctl start infisical-gateway"; + + const copyToClipboard = (text: string, label: string) => { + navigator.clipboard.writeText(text); + createNotification({ text: `${label} copied to clipboard`, type: "info" }); + }; + + if (step === "command") { + return ( + <> +

+ Run the following command on the machine where you want to deploy the gateway. The token + expires in 1 hour and can only be used once. +

+ + + CLI + CLI (systemd) + + +
+ + copyToClipboard(cliCommand, "Command")} + className="w-10" + > + + +
+
+ + +
+ + copyToClipboard(systemdInstallCommand, "Installation command")} + className="w-10" + > + + +
+ +
+ + copyToClipboard(startServiceCommand, "Start command")} + className="w-10" + > + + +
+
+
+ + Install the Infisical CLI + + +
+ + + +
+ + ); } - return ; + return ( + <> + + setName(e.target.value)} + placeholder="Enter gateway name..." + isError={Boolean(errors.name)} + /> + {errors.name &&

{errors.name}

} + + + { + if ((newValue as SingleValue<{ id: string }>)?.id === "_create") { + navigate({ + search: (prev) => ({ ...prev, selectedTab: "relays", action: "deploy-relay" }) + }); + return; + } + setRelay(newValue as SingleValue<{ id: string; name: string }>); + }} + isLoading={isRelaysLoading} + options={[ + { id: "_auto", name: "Auto Select Relay" }, + { id: "_create", name: "Deploy New Relay" }, + ...(relays || []) + ]} + placeholder="Select relay..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.id} + components={{ Option: RelayOption }} + /> + {errors.relay &&

{errors.relay}

} + +
+ + + + +
+ + ); }; export const GatewayDeployModal = ({ isOpen, onOpenChange }: Props) => { @@ -37,7 +257,6 @@ export const GatewayDeployModal = ({ isOpen, onOpenChange }: Props) => { diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeploymentMethodSelect.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeploymentMethodSelect.tsx deleted file mode 100644 index 20a169c24a0..00000000000 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeploymentMethodSelect.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import { useMemo } from "react"; - -import { - GatewayDeploymentInfoMap, - GatewayDeploymentMethod -} from "@app/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal"; - -type Props = { - onSelect: (method: GatewayDeploymentMethod) => void; -}; - -export const GatewayDeploymentMethodSelect = ({ onSelect }: Props) => { - const deploymentOptions = useMemo( - () => - (Object.keys(GatewayDeploymentInfoMap) as GatewayDeploymentMethod[]).map((method) => ({ - method, - name: GatewayDeploymentInfoMap[method].name, - image: GatewayDeploymentInfoMap[method].image - })), - [] - ); - - const handleResourceSelect = (method: GatewayDeploymentMethod) => { - onSelect(method); - }; - - return ( -
- {deploymentOptions.map((option) => { - const { image, name, method } = option; - - return ( - - ); - })} -
- ); -}; From bf8ec613b0ce7fb3cd6b57c6ff80323b26eef60f Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 19:50:37 -0400 Subject: [PATCH 104/562] fix: address PR review comments (batch) - Skip never-connected gateways in NetworkHealthBanner unreachable count - Wrap token consumption and gateway update in single transaction - Reject token auth configure for identity-based gateways - Fix docs: enroll-method must be 'token' not 'static' - Add gatewayId select to findByProjectId in pam-session-dal - Add GATEWAY_CREATE audit event type for V3 create endpoint - Update enroll URL skip in inject-identity to V3 path --- backend/src/ee/routes/v3/gateway-router.ts | 4 +- .../ee/services/audit-log/audit-log-types.ts | 10 ++++ .../services/gateway-v2/gateway-v2-service.ts | 47 ++++++++++--------- .../services/pam-session/pam-session-dal.ts | 1 + .../server/plugins/auth/inject-identity.ts | 2 +- docs/cli/commands/gateway.mdx | 2 +- .../NetworkHealthBanner.tsx | 6 ++- 7 files changed, 45 insertions(+), 27 deletions(-) diff --git a/backend/src/ee/routes/v3/gateway-router.ts b/backend/src/ee/routes/v3/gateway-router.ts index 28fb8878438..994f24b5cff 100644 --- a/backend/src/ee/routes/v3/gateway-router.ts +++ b/backend/src/ee/routes/v3/gateway-router.ts @@ -48,9 +48,9 @@ export const registerGatewayV3Router = async (server: FastifyZodProvider) => { ...req.auditLogInfo, orgId: req.permission.orgId, event: { - type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE, + type: EventType.GATEWAY_CREATE, metadata: { - tokenId: gateway.id, + gatewayId: gateway.id, name: req.body.name } } diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index fa50ab0393f..0fa5eb605d4 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -735,6 +735,7 @@ export enum EventType { SECRET_VALIDATION_RULE_DELETE = "secret-validation-rule-delete", // Gateway Enrollment Tokens + GATEWAY_CREATE = "gateway-create", GATEWAY_ENROLLMENT_TOKEN_CREATE = "gateway-enrollment-token-create", GATEWAY_ENROLLMENT_TOKEN_DELETE = "gateway-enrollment-token-delete", GATEWAY_ENROLL = "gateway-enroll", @@ -5782,6 +5783,14 @@ interface SecretValidationRuleDeleteEvent { }; } +interface GatewayCreateEvent { + type: EventType.GATEWAY_CREATE; + metadata: { + gatewayId: string; + name: string; + }; +} + interface GatewayEnrollmentTokenCreateEvent { type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE; metadata: { @@ -6336,6 +6345,7 @@ export type Event = | SecretValidationRuleCreateEvent | SecretValidationRuleUpdateEvent | SecretValidationRuleDeleteEvent + | GatewayCreateEvent | GatewayEnrollmentTokenCreateEvent | GatewayEnrollmentTokenDeleteEvent | GatewayEnrollEvent diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 019ac1ffb75..78a3e81fb56 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1261,6 +1261,10 @@ export const gatewayV2ServiceFactory = ({ throw new NotFoundError({ message: `Gateway ${gatewayId} not found` }); } + if (gateway.identityId) { + throw new BadRequestError({ message: "Cannot configure token auth for identity-based gateways" }); + } + const gatewayToken = $generateEnrollmentToken(); const record = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { @@ -1360,36 +1364,35 @@ export const gatewayV2ServiceFactory = ({ if (!relay) throw new NotFoundError({ message: "No relay available for auto-selection" }); } - // Atomic single-use consumption: only marks the token as used if usedAt is still null. - // The WHERE usedAt IS NULL ensures concurrent requests can't both succeed. - const consumed = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { + if (!tokenRecord.gatewayId) { + throw new BadRequestError({ message: "Enrollment token is not linked to a gateway" }); + } + + // Fetch org CAs before the transaction to avoid holding a long DB lock during KMS calls. + const orgCAs = await $getOrgCAs(orgId); + + // Consume the token and update the gateway in a single transaction. + // If the gateway update fails, the token consumption is rolled back. + const gateway = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { const rows = await tx(TableName.GatewayEnrollmentTokens) .where({ id: tokenRecord.id }) .whereNull("usedAt") .update({ usedAt: new Date() }) .returning("*"); - return rows.length > 0; - }); - if (!consumed) { - throw new BadRequestError({ message: "Enrollment token has already been used" }); - } + if (rows.length === 0) { + throw new BadRequestError({ message: "Enrollment token has already been used" }); + } - const orgCAs = await $getOrgCAs(orgId); + const existing = await gatewayV2DAL.findById(tokenRecord.gatewayId!, tx); + if (!existing) throw new NotFoundError({ message: `Gateway ${tokenRecord.gatewayId} not found` }); + return gatewayV2DAL.updateById( + existing.id, + { $incr: { tokenVersion: 1 }, relayId: relay!.id, heartbeat: null, lastHealthCheckStatus: null }, + tx + ); + }); try { - // The gateway record was created at token creation time. - // Bump tokenVersion to invalidate any previous JWT and set the relay. - if (!tokenRecord.gatewayId) { - throw new BadRequestError({ message: "Enrollment token is not linked to a gateway" }); - } - const existing = await gatewayV2DAL.findById(tokenRecord.gatewayId); - if (!existing) throw new NotFoundError({ message: `Gateway ${tokenRecord.gatewayId} not found` }); - const gateway = await gatewayV2DAL.updateById(existing.id, { - $incr: { tokenVersion: 1 }, - relayId: relay.id, - heartbeat: null, - lastHealthCheckStatus: null - }); const certs = await $issueGatewayCerts({ orgId, orgCAs, relayName: relay.name, gateway }); diff --git a/backend/src/ee/services/pam-session/pam-session-dal.ts b/backend/src/ee/services/pam-session/pam-session-dal.ts index 7da9305522c..693f62a8c2b 100644 --- a/backend/src/ee/services/pam-session/pam-session-dal.ts +++ b/backend/src/ee/services/pam-session/pam-session-dal.ts @@ -58,6 +58,7 @@ export const pamSessionDALFactory = (db: TDbClient) => { .leftJoin(TableName.GatewayV2, `${TableName.PamResource}.gatewayId`, `${TableName.GatewayV2}.id`) .select(selectAllTableCols(TableName.PamSession)) .select(db.ref("identityId").withSchema(TableName.GatewayV2).as("gatewayIdentityId")) + .select(db.ref("id").withSchema(TableName.GatewayV2).as("gatewayId")) .where(`${TableName.PamSession}.projectId`, projectId); return sessions; diff --git a/backend/src/server/plugins/auth/inject-identity.ts b/backend/src/server/plugins/auth/inject-identity.ts index d9926a8c208..907767203e4 100644 --- a/backend/src/server/plugins/auth/inject-identity.ts +++ b/backend/src/server/plugins/auth/inject-identity.ts @@ -188,7 +188,7 @@ export const injectIdentity = fp( } // Authentication is handled on a route-level (enrollment token in body) - if (req.url === "/api/v2/gateways/enroll") { + if (req.url === "/api/v3/gateways/token-auth/enroll") { return; } diff --git a/docs/cli/commands/gateway.mdx b/docs/cli/commands/gateway.mdx index 0db35d4b411..4c0a37b49d1 100644 --- a/docs/cli/commands/gateway.mdx +++ b/docs/cli/commands/gateway.mdx @@ -74,7 +74,7 @@ The Gateway supports multiple authentication methods. Below are the available au - Must be `static` when using an enrollment token. + Must be `token` when using an enrollment token. The one-time enrollment token from the Infisical UI. diff --git a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx index 7b571beff9f..75a0e52e7a4 100644 --- a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx @@ -70,7 +70,11 @@ export const NetworkHealthBanner = () => { ) { return true; } - return "heartbeat" in g && isHeartbeatStale(g.heartbeat); + if (!("heartbeat" in g)) return false; + // Skip gateways that have never connected (both fields null) + if (g.heartbeat === null && ("lastHealthCheckStatus" in g ? g.lastHealthCheckStatus : null) === null) + return false; + return isHeartbeatStale(g.heartbeat); }).length ?? 0, [gateways] ); From daca2ac9b39a19375a2c40a891d797a5544c4c6d Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 16:53:24 -0700 Subject: [PATCH 105/562] improvement: add insights cache and stale times --- .../ee/services/insights/insights-service.ts | 218 ++++++++++-------- backend/src/keystore/keystore.ts | 8 +- backend/src/server/routes/index.ts | 3 +- .../src/hooks/api/secretInsights/queries.tsx | 7 + 4 files changed, 139 insertions(+), 97 deletions(-) diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index 7e21707c32f..e94fa816848 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -7,6 +7,7 @@ import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; +import { KeyStorePrefixes, KeyStoreTtls, TKeyStoreFactory } from "@app/keystore/keystore"; import { BadRequestError } from "@app/lib/errors"; import { OrgServiceActor } from "@app/lib/types"; import { ActorType } from "@app/services/auth/auth-type"; @@ -33,6 +34,7 @@ type TInsightsServiceFactoryDep = { secretV2BridgeDAL: Pick; projectBotService: Pick; userDAL: Pick; + keyStore: Pick; }; export type TInsightsServiceFactory = ReturnType; @@ -71,8 +73,18 @@ export const insightsServiceFactory = ({ folderDAL, secretV2BridgeDAL, projectBotService, - userDAL + userDAL, + keyStore }: TInsightsServiceFactoryDep) => { + const withCache = async (cacheKey: string, fn: () => Promise): Promise => { + const cached = await keyStore.getItem(cacheKey); + if (cached) return JSON.parse(cached) as T; + + const result = await fn(); + await keyStore.setItemWithExpiry(cacheKey, KeyStoreTtls.InsightsCacheInSeconds, JSON.stringify(result)); + return result; + }; + const fetchReminders = async (projectId: string, startDate: Date, endDate: Date) => { const rawReminders = await reminderDAL.findByProjectAndDateRange({ projectId, startDate, endDate }); if (!rawReminders.length) return []; @@ -99,116 +111,124 @@ export const insightsServiceFactory = ({ const getCalendar = async (dto: TGetInsightsCalendarDTO, actorDto: OrgServiceActor) => { await checkInsightsPermission(permissionService, dto.projectId, actorDto); - const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); - if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - - // Pad by 1 day on each side so events near month boundaries are captured - // regardless of the caller's timezone offset from UTC. - const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 0)); - const endDate = new Date(Date.UTC(dto.year, dto.month, 1, 23, 59, 59, 999)); - - const [rotations, reminders] = await Promise.all([ - secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), - fetchReminders(dto.projectId, startDate, endDate) - ]); - - return { - rotations: rotations.map((r) => ({ - id: r.id, - name: r.name, - type: r.type, - nextRotationAt: r.nextRotationAt ?? null, - environment: r.environment.slug, - secretPath: r.folder.path, - secretKeys: r.secretKeys, - rotationInterval: r.rotationInterval, - rotationStatus: r.rotationStatus, - isAutoRotationEnabled: r.isAutoRotationEnabled - })), - reminders - }; + const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `calendar:${dto.year}-${dto.month}`); + return withCache(cacheKey, async () => { + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + + // Pad by 1 day on each side so events near month boundaries are captured + // regardless of the caller's timezone offset from UTC. + const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 0)); + const endDate = new Date(Date.UTC(dto.year, dto.month, 1, 23, 59, 59, 999)); + + const [rotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), + fetchReminders(dto.projectId, startDate, endDate) + ]); + + return { + rotations: rotations.map((r) => ({ + id: r.id, + name: r.name, + type: r.type, + nextRotationAt: r.nextRotationAt ?? null, + environment: r.environment.slug, + secretPath: r.folder.path, + secretKeys: r.secretKeys, + rotationInterval: r.rotationInterval, + rotationStatus: r.rotationStatus, + isAutoRotationEnabled: r.isAutoRotationEnabled + })), + reminders + }; + }); }; const getAccessVolume = async (dto: TGetAccessVolumeDTO, actorDto: OrgServiceActor) => { await checkInsightsPermission(permissionService, dto.projectId, actorDto); - const now = new Date(); - const todayStr = now.toISOString().slice(0, 10); - const endDate = new Date(`${todayStr}T23:59:59.999Z`); - const startDate = new Date(`${todayStr}T00:00:00.000Z`); - startDate.setUTCDate(startDate.getUTCDate() - 6); - - const rows = await auditLogDAL.countByDateAndActor({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); + const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, "access-volume"); + return withCache(cacheKey, async () => { + const now = new Date(); + const todayStr = now.toISOString().slice(0, 10); + const endDate = new Date(`${todayStr}T23:59:59.999Z`); + const startDate = new Date(`${todayStr}T00:00:00.000Z`); + startDate.setUTCDate(startDate.getUTCDate() - 6); - // Resolve user display names from userIds in audit log metadata - const userIds = [ - ...new Set( - rows - .filter((r) => r.actor === ActorType.USER) - .map((r) => (r.actorMetadata as Record | null)?.userId) - .filter(Boolean) as string[] - ) - ]; - const userNameMap = new Map(); - if (userIds.length > 0) { - const users = await userDAL.find({ $in: { id: userIds } }); - users.forEach((u) => { - const displayName = [u.firstName, u.lastName].filter(Boolean).join(" "); - if (displayName) userNameMap.set(u.id, displayName); + const rows = await auditLogDAL.countByDateAndActor({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() }); - } - - // Pre-populate the last 7 days - const dayMap = new Map>(); - for (let i = 6; i >= 0; i -= 1) { - const d = new Date(`${todayStr}T00:00:00.000Z`); - d.setUTCDate(d.getUTCDate() - i); - dayMap.set(d.toISOString().slice(0, 10), new Map()); - } - - rows.forEach((row) => { - const dateKey = typeof row.date === "string" ? row.date : new Date(row.date).toISOString().slice(0, 10); - const actorMap = dayMap.get(dateKey); - if (!actorMap) return; - - const actorMeta = row.actorMetadata as Record | null; - let actorName: string; - if (row.actor === ActorType.USER && actorMeta?.userId) { - actorName = - userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; - } else if (row.actor === ActorType.USER) { - actorName = actorMeta?.email || actorMeta?.username || "Unknown"; - } else { - actorName = actorMeta?.name || actorMeta?.identityId || "Unknown"; + + // Resolve user display names from userIds in audit log metadata + const userIds = [ + ...new Set( + rows + .filter((r) => r.actor === ActorType.USER) + .map((r) => (r.actorMetadata as Record | null)?.userId) + .filter(Boolean) as string[] + ) + ]; + const userNameMap = new Map(); + if (userIds.length > 0) { + const users = await userDAL.find({ $in: { id: userIds } }); + users.forEach((u) => { + const displayName = [u.firstName, u.lastName].filter(Boolean).join(" "); + if (displayName) userNameMap.set(u.id, displayName); + }); } - const actorKey = `${row.actor}:${actorName}`; - const existing = actorMap.get(actorKey); - if (existing) { - existing.count += row.count; - } else { - actorMap.set(actorKey, { name: actorName, type: row.actor, count: row.count }); + // Pre-populate the last 7 days + const dayMap = new Map>(); + for (let i = 6; i >= 0; i -= 1) { + const d = new Date(`${todayStr}T00:00:00.000Z`); + d.setUTCDate(d.getUTCDate() - i); + dayMap.set(d.toISOString().slice(0, 10), new Map()); } - }); - const days = Array.from(dayMap.entries()).map(([date, actorMap]) => { - const actors = Array.from(actorMap.values()).sort((a, b) => b.count - a.count); - const total = actors.reduce((sum, a) => sum + a.count, 0); - return { date, total, actors }; - }); + rows.forEach((row) => { + const dateKey = typeof row.date === "string" ? row.date : new Date(row.date).toISOString().slice(0, 10); + const actorMap = dayMap.get(dateKey); + if (!actorMap) return; + + const actorMeta = row.actorMetadata as Record | null; + let actorName: string; + if (row.actor === ActorType.USER && actorMeta?.userId) { + actorName = + userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; + } else if (row.actor === ActorType.USER) { + actorName = actorMeta?.email || actorMeta?.username || "Unknown"; + } else { + actorName = actorMeta?.name || actorMeta?.identityId || "Unknown"; + } + const actorKey = `${row.actor}:${actorName}`; + + const existing = actorMap.get(actorKey); + if (existing) { + existing.count += row.count; + } else { + actorMap.set(actorKey, { name: actorName, type: row.actor, count: row.count }); + } + }); + + const days = Array.from(dayMap.entries()).map(([date, actorMap]) => { + const actors = Array.from(actorMap.values()).sort((a, b) => b.count - a.count); + const total = actors.reduce((sum, a) => sum + a.count, 0); + return { date, total, actors }; + }); - return { days }; + return { days }; + }); }; const getAccessLocations = async (dto: TGetAccessLocationsDTO, actorDto: OrgServiceActor) => { await checkInsightsPermission(permissionService, dto.projectId, actorDto); + const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `access-locations:${dto.days}`); + return withCache(cacheKey, async () => { const endDate = new Date(); const startDate = new Date(); startDate.setUTCDate(startDate.getUTCDate() - dto.days); @@ -280,11 +300,14 @@ export const insightsServiceFactory = ({ return { locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) }; + }); }; const getAuthMethodDistribution = async (dto: TGetAuthMethodDistributionDTO, actorDto: OrgServiceActor) => { await checkInsightsPermission(permissionService, dto.projectId, actorDto); + const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `auth-methods:${dto.days}`); + return withCache(cacheKey, async () => { const endDate = new Date(); const startDate = new Date(); startDate.setUTCDate(startDate.getUTCDate() - dto.days); @@ -353,11 +376,17 @@ export const insightsServiceFactory = ({ .sort((a, b) => b.count - a.count); return { methods }; + }); }; const getSummary = async (dto: TGetInsightsSummaryDTO, actorDto: OrgServiceActor) => { await checkInsightsPermission(permissionService, dto.projectId, actorDto); + const cacheKey = KeyStorePrefixes.InsightsCache( + dto.projectId, + `summary:${dto.staleSecretsOffset ?? 0}:${dto.staleSecretsLimit ?? 50}` + ); + return withCache(cacheKey, async () => { const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); @@ -434,6 +463,7 @@ export const insightsServiceFactory = ({ staleSecrets, totalStaleCount }; + }); }; return { diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index f6aba5e0e52..88bff3e99fc 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -103,7 +103,10 @@ export const KeyStorePrefixes = { TelemetryIdentifyIdentity: (dedupKey: string) => `telemetry-identify-identity:${dedupKey}` as const, TelemetryGroupIdentify: (orgId: string) => `telemetry-group-identify:${orgId}` as const, - SecretEtag: (projectId: string) => `secret-etag:${projectId}` as const + SecretEtag: (projectId: string) => `secret-etag:${projectId}` as const, + + InsightsCache: (projectId: string, endpoint: string) => + `insights-cache:${projectId}:${endpoint}` as const }; export const KeyStoreTtls = { @@ -115,7 +118,8 @@ export const KeyStoreTtls = { MfaSessionInSeconds: 300, // 5 minutes WebAuthnChallengeInSeconds: 300, // 5 minutes ProjectSSEConnectionTtlSeconds: 180, // Must be > heartbeat interval (60s) * 2 - TelemetryIdentifyIdentityInSeconds: 86400 // 24 hours + TelemetryIdentifyIdentityInSeconds: 86400, // 24 hours + InsightsCacheInSeconds: 300 // 5 minutes }; type TDeleteItems = { diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 09e82767ed4..f09d1743afd 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -2349,7 +2349,8 @@ export const registerRoutes = async ( folderDAL, secretV2BridgeDAL, projectBotService, - userDAL + userDAL, + keyStore }); const pkiSyncQueue = pkiSyncQueueFactory({ diff --git a/frontend/src/hooks/api/secretInsights/queries.tsx b/frontend/src/hooks/api/secretInsights/queries.tsx index 83f67b3809f..194533f78a3 100644 --- a/frontend/src/hooks/api/secretInsights/queries.tsx +++ b/frontend/src/hooks/api/secretInsights/queries.tsx @@ -29,6 +29,8 @@ export const secretInsightsKeys = { [...secretInsightsKeys.all(), "summary", params] as const }; +const INSIGHTS_STALE_TIME = 5 * 60 * 1000; // 5 minutes + export const useGetCalendarInsights = ( params: TGetCalendarInsightsDTO, options?: Omit< @@ -50,6 +52,7 @@ export const useGetCalendarInsights = ( ); return data; }, + staleTime: INSIGHTS_STALE_TIME, ...options }); }; @@ -75,6 +78,7 @@ export const useGetSecretAccessVolume = ( ); return data; }, + staleTime: INSIGHTS_STALE_TIME, ...options }); }; @@ -100,6 +104,7 @@ export const useGetSecretAccessLocations = ( ); return data; }, + staleTime: INSIGHTS_STALE_TIME, ...options }); }; @@ -125,6 +130,7 @@ export const useGetAuthMethodDistribution = ( ); return data; }, + staleTime: INSIGHTS_STALE_TIME, ...options }); }; @@ -150,6 +156,7 @@ export const useGetInsightsSummary = ( ); return data; }, + staleTime: INSIGHTS_STALE_TIME, ...options }); }; From 95a3ee749d740e21a721ce530753630632a74a96 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 17:01:30 -0700 Subject: [PATCH 106/562] improvement: move feature behind access insights feature flag --- .../ee/services/insights/insights-service.ts | 21 ++++++++++++---- backend/src/server/routes/index.ts | 1 + .../InsightsPage/InsightsPage.tsx | 25 ++++++++++++++++++- 3 files changed, 41 insertions(+), 6 deletions(-) diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index e94fa816848..0219c4068d4 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -6,6 +6,7 @@ import { TAuditLogDALFactory } from "@app/ee/services/audit-log/audit-log-dal"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; +import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; import { KeyStorePrefixes, KeyStoreTtls, TKeyStoreFactory } from "@app/keystore/keystore"; import { BadRequestError } from "@app/lib/errors"; @@ -27,6 +28,7 @@ import { type TInsightsServiceFactoryDep = { permissionService: Pick; + licenseService: Pick; auditLogDAL: Pick; secretRotationV2DAL: Pick; reminderDAL: Pick; @@ -50,9 +52,17 @@ const VALUE_EVENT_TYPES = [ const checkInsightsPermission = async ( permissionService: TInsightsServiceFactoryDep["permissionService"], + licenseService: TInsightsServiceFactoryDep["licenseService"], projectId: string, actor: OrgServiceActor ) => { + const plan = await licenseService.getPlan(actor.orgId); + if (!plan.secretAccessInsights) { + throw new BadRequestError({ + message: "Failed to access insights due to plan restriction. Upgrade your plan to access insights." + }); + } + const { permission } = await permissionService.getProjectPermission({ actor: actor.type, actorId: actor.id, @@ -67,6 +77,7 @@ const checkInsightsPermission = async ( export const insightsServiceFactory = ({ permissionService, + licenseService, auditLogDAL, secretRotationV2DAL, reminderDAL, @@ -109,7 +120,7 @@ export const insightsServiceFactory = ({ }; const getCalendar = async (dto: TGetInsightsCalendarDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, dto.projectId, actorDto); + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `calendar:${dto.year}-${dto.month}`); return withCache(cacheKey, async () => { @@ -145,7 +156,7 @@ export const insightsServiceFactory = ({ }; const getAccessVolume = async (dto: TGetAccessVolumeDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, dto.projectId, actorDto); + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, "access-volume"); return withCache(cacheKey, async () => { @@ -225,7 +236,7 @@ export const insightsServiceFactory = ({ }; const getAccessLocations = async (dto: TGetAccessLocationsDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, dto.projectId, actorDto); + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `access-locations:${dto.days}`); return withCache(cacheKey, async () => { @@ -304,7 +315,7 @@ export const insightsServiceFactory = ({ }; const getAuthMethodDistribution = async (dto: TGetAuthMethodDistributionDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, dto.projectId, actorDto); + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `auth-methods:${dto.days}`); return withCache(cacheKey, async () => { @@ -380,7 +391,7 @@ export const insightsServiceFactory = ({ }; const getSummary = async (dto: TGetInsightsSummaryDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, dto.projectId, actorDto); + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache( dto.projectId, diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index f09d1743afd..5b85d12d25d 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -2343,6 +2343,7 @@ export const registerRoutes = async ( const insightsService = insightsServiceFactory({ permissionService, + licenseService, auditLogDAL, secretRotationV2DAL, reminderDAL, diff --git a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx index 391268347ab..85bb2815e91 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx +++ b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx @@ -1,9 +1,16 @@ +import { useEffect } from "react"; import { Helmet } from "react-helmet"; +import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { PageHeader } from "@app/components/v2"; -import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/context"; +import { + ProjectPermissionInsightsActions, + ProjectPermissionSub, + useSubscription +} from "@app/context"; import { withProjectPermission } from "@app/hoc"; import { ProjectType } from "@app/hooks/api/projects/types"; +import { usePopUp } from "@app/hooks/usePopUp"; import { AuthMethodChart, @@ -15,6 +22,15 @@ import { export const InsightsPage = withProjectPermission( () => { + const { subscription } = useSubscription(); + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["upgradePlan"] as const); + + useEffect(() => { + if (subscription && !subscription.secretAccessInsights) { + handlePopUpOpen("upgradePlan"); + } + }, [subscription]); + return ( <> @@ -36,6 +52,13 @@ export const InsightsPage = withProjectPermission(
+ { + handlePopUpToggle("upgradePlan", isOpen); + }} + text="Your current plan does not include access to secret insights. To unlock this feature, please upgrade your Infisical plan." + /> ); }, From 0f1e344f2a27a2d8b6df34fbf61e87fd18a68ee8 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 17:01:59 -0700 Subject: [PATCH 107/562] chore: revert license --- backend/src/ee/services/license/license-fns.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index 6ca0e3196e1..b75ef22b5ee 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -74,8 +74,8 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ subOrganization: false, customAlerts: false, secretAccessInsights: false, - auditLogs: true, - auditLogsRetentionDays: 30, + auditLogs: false, + auditLogsRetentionDays: 0, auditLogStreams: false, auditLogStreamLimit: 3, samlSSO: false, From 25286ddd80803a4279dc5e79e5389a6e8de7e9d4 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 20:07:19 -0400 Subject: [PATCH 108/562] fix: address additional PR review comments - Persist relay change in DB when gateway reconnects with different relay - Filter unenrolled gateways from shared list query (gateway pickers) - Remove IDENTITY_ACCESS_TOKEN from V3 connect endpoint (GATEWAY only) - Use correct audit event type on token-auth/configure --- backend/src/ee/routes/v3/gateway-router.ts | 6 +++--- .../src/ee/services/gateway-v2/gateway-v2-service.ts | 12 ++++++++++-- frontend/src/hooks/api/gateways/queries.tsx | 6 +++++- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/backend/src/ee/routes/v3/gateway-router.ts b/backend/src/ee/routes/v3/gateway-router.ts index 994f24b5cff..bb0dc8c2b40 100644 --- a/backend/src/ee/routes/v3/gateway-router.ts +++ b/backend/src/ee/routes/v3/gateway-router.ts @@ -88,9 +88,9 @@ export const registerGatewayV3Router = async (server: FastifyZodProvider) => { ...req.auditLogInfo, orgId: req.permission.orgId, event: { - type: EventType.GATEWAY_RE_ENROLL, + type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE, metadata: { - gatewayId: req.params.gatewayId, + tokenId: result.id, name: result.name } } @@ -184,7 +184,7 @@ export const registerGatewayV3Router = async (server: FastifyZodProvider) => { }) } }, - onRequest: verifyAuth([AuthMode.GATEWAY_ACCESS_TOKEN, AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { return server.services.gatewayV2.connectGateway({ orgId: req.permission.orgId, diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 78a3e81fb56..48f678d2e5c 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -797,6 +797,10 @@ export const gatewayV2ServiceFactory = ({ resolvedRelay = await relayDAL.findOne({ orgId, name: relayName }); if (!resolvedRelay) resolvedRelay = await relayDAL.findOne({ name: relayName, orgId: null }); if (!resolvedRelay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); + + if (resolvedRelay.id !== gateway.relayId) { + await gatewayV2DAL.updateById(gateway.id, { relayId: resolvedRelay.id }); + } } else { if (!gateway.relayId) throw new NotFoundError({ message: "No relay associated with this gateway" }); resolvedRelay = await relayDAL.findById(gateway.relayId); @@ -1315,6 +1319,11 @@ export const gatewayV2ServiceFactory = ({ resolvedRelay = await relayDAL.findOne({ orgId, name: relayName }); if (!resolvedRelay) resolvedRelay = await relayDAL.findOne({ name: relayName, orgId: null }); if (!resolvedRelay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); + + // Persist the relay change so future restarts use the new relay + if (resolvedRelay.id !== gateway.relayId) { + await gatewayV2DAL.updateById(gateway.id, { relayId: resolvedRelay.id }); + } } else { if (!gateway.relayId) throw new NotFoundError({ message: "No relay associated with this gateway" }); resolvedRelay = await relayDAL.findById(gateway.relayId); @@ -1324,8 +1333,7 @@ export const gatewayV2ServiceFactory = ({ return $issueGatewayCerts({ orgId, orgCAs, relayName: resolvedRelay.name, gateway }); } - // Identity-based flow: delegate to registerGateway - throw new BadRequestError({ message: "Use POST /api/v2/gateways for identity-based registration" }); + throw new BadRequestError({ message: "Invalid actor type for gateway connect" }); }; const enrollGateway = async ({ token, relayName }: { token: string; relayName?: string }) => { diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index 18171399099..2e2f5dac4c0 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -17,12 +17,16 @@ export const gatewaysQueryKeys = { apiRequest.get("/api/v2/gateways") ]); + // Filter out enrollment-flow gateways that haven't connected yet + // so gateway pickers don't show them as selectable options. + const connectedV2 = dataV2.filter((g) => g.identityId || g.heartbeat); + return [ ...data.gateways.map((g) => ({ ...g, isV1: true as const })), - ...dataV2.map((g) => ({ + ...connectedV2.map((g) => ({ ...g, isV1: false as const })) From 32d5b8d4f4748279d2eb1e4b10569d2807f57b41 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 20:21:06 -0400 Subject: [PATCH 109/562] fix: fire-and-forget audit log on enroll, remove unused imports --- backend/src/ee/routes/v2/gateway-router.ts | 3 +- backend/src/ee/routes/v3/gateway-router.ts | 38 ++++++++++++---------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index cfef6124591..2f18e29d7c3 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -5,7 +5,7 @@ import { zodBuffer } from "@app/lib/zod"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { slugSchema } from "@app/server/lib/schemas"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; -import { ActorType, AuthMode } from "@app/services/auth/auth-type"; +import { AuthMode } from "@app/services/auth/auth-type"; const SanitizedGatewayV2Schema = GatewaysV2Schema.pick({ id: true, @@ -274,4 +274,3 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { // Enrollment endpoints have moved to V3: /api/v3/gateways }; - diff --git a/backend/src/ee/routes/v3/gateway-router.ts b/backend/src/ee/routes/v3/gateway-router.ts index bb0dc8c2b40..3efe490868e 100644 --- a/backend/src/ee/routes/v3/gateway-router.ts +++ b/backend/src/ee/routes/v3/gateway-router.ts @@ -2,7 +2,7 @@ import z from "zod"; import { GatewaysV2Schema } from "@app/db/schemas"; import { EventType, UserAgentType } from "@app/ee/services/audit-log/audit-log-types"; -import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { writeLimit } from "@app/server/config/rateLimiter"; import { slugSchema } from "@app/server/lib/schemas"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { ActorType, AuthMode } from "@app/services/auth/auth-type"; @@ -135,23 +135,25 @@ export const registerGatewayV3Router = async (server: FastifyZodProvider) => { relayName: req.body.relayName }); - await server.services.auditLog.createAuditLog({ - orgId: result.orgId, - actor: { - type: ActorType.GATEWAY, - metadata: { gatewayId: result.gatewayId } - }, - event: { - type: EventType.GATEWAY_ENROLL, - metadata: { - gatewayId: result.gatewayId, - name: result.gatewayName - } - }, - ipAddress: req.ip, - userAgent: req.headers["user-agent"] ?? "", - userAgentType: UserAgentType.CLI - }); + await server.services.auditLog + .createAuditLog({ + orgId: result.orgId, + actor: { + type: ActorType.GATEWAY, + metadata: { gatewayId: result.gatewayId } + }, + event: { + type: EventType.GATEWAY_ENROLL, + metadata: { + gatewayId: result.gatewayId, + name: result.gatewayName + } + }, + ipAddress: req.ip, + userAgent: req.headers["user-agent"] ?? "", + userAgentType: UserAgentType.CLI + }) + .catch(() => {}); return result; } From c52950ff1290a21275e7bbb836458d7d066fac7d Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 17:30:02 -0700 Subject: [PATCH 110/562] chore: lint --- .../ee/services/insights/insights-service.ts | 405 +++++++++--------- backend/src/keystore/keystore.ts | 3 +- 2 files changed, 203 insertions(+), 205 deletions(-) diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index 0219c4068d4..77e03716927 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -4,9 +4,9 @@ import geoip from "geoip-lite"; import { ActionProjectType, IdentityAuthMethod } from "@app/db/schemas"; import { TAuditLogDALFactory } from "@app/ee/services/audit-log/audit-log-dal"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; -import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; import { KeyStorePrefixes, KeyStoreTtls, TKeyStoreFactory } from "@app/keystore/keystore"; import { BadRequestError } from "@app/lib/errors"; @@ -208,8 +208,7 @@ export const insightsServiceFactory = ({ const actorMeta = row.actorMetadata as Record | null; let actorName: string; if (row.actor === ActorType.USER && actorMeta?.userId) { - actorName = - userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; + actorName = userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; } else if (row.actor === ActorType.USER) { actorName = actorMeta?.email || actorMeta?.username || "Unknown"; } else { @@ -240,77 +239,77 @@ export const insightsServiceFactory = ({ const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `access-locations:${dto.days}`); return withCache(cacheKey, async () => { - const endDate = new Date(); - const startDate = new Date(); - startDate.setUTCDate(startDate.getUTCDate() - dto.days); - - const ipRows = await auditLogDAL.countByIpAddress({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); + const endDate = new Date(); + const startDate = new Date(); + startDate.setUTCDate(startDate.getUTCDate() - dto.days); - const locationMap = new Map(); - - const isPrivateIp = (ip: string) => - ip === "127.0.0.1" || - ip === "::1" || - ip === "::ffff:127.0.0.1" || - ip.startsWith("10.") || - ip.startsWith("172.16.") || - ip.startsWith("172.17.") || - ip.startsWith("172.18.") || - ip.startsWith("172.19.") || - ip.startsWith("172.20.") || - ip.startsWith("172.21.") || - ip.startsWith("172.22.") || - ip.startsWith("172.23.") || - ip.startsWith("172.24.") || - ip.startsWith("172.25.") || - ip.startsWith("172.26.") || - ip.startsWith("172.27.") || - ip.startsWith("172.28.") || - ip.startsWith("172.29.") || - ip.startsWith("172.30.") || - ip.startsWith("172.31.") || - ip.startsWith("192.168."); - - ipRows.forEach(({ ipAddress: ip, count }) => { - if (isPrivateIp(ip)) { - const key = "Local Network:LOCAL"; + const ipRows = await auditLogDAL.countByIpAddress({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() + }); + + const locationMap = new Map(); + + const isPrivateIp = (ip: string) => + ip === "127.0.0.1" || + ip === "::1" || + ip === "::ffff:127.0.0.1" || + ip.startsWith("10.") || + ip.startsWith("172.16.") || + ip.startsWith("172.17.") || + ip.startsWith("172.18.") || + ip.startsWith("172.19.") || + ip.startsWith("172.20.") || + ip.startsWith("172.21.") || + ip.startsWith("172.22.") || + ip.startsWith("172.23.") || + ip.startsWith("172.24.") || + ip.startsWith("172.25.") || + ip.startsWith("172.26.") || + ip.startsWith("172.27.") || + ip.startsWith("172.28.") || + ip.startsWith("172.29.") || + ip.startsWith("172.30.") || + ip.startsWith("172.31.") || + ip.startsWith("192.168."); + + ipRows.forEach(({ ipAddress: ip, count }) => { + if (isPrivateIp(ip)) { + const key = "Local Network:LOCAL"; + const existing = locationMap.get(key); + if (existing) { + existing.count += count; + } else { + locationMap.set(key, { lat: 0, lng: 0, city: "Local Network", country: "LOCAL", count }); + } + return; + } + + const geo = geoip.lookup(ip); + if (!geo || !geo.ll) return; + + const city = geo.city || geo.region || ""; + const key = `${city}:${geo.country}`; const existing = locationMap.get(key); if (existing) { existing.count += count; } else { - locationMap.set(key, { lat: 0, lng: 0, city: "Local Network", country: "LOCAL", count }); + locationMap.set(key, { + lat: geo.ll[0], + lng: geo.ll[1], + city, + country: geo.country, + count + }); } - return; - } - - const geo = geoip.lookup(ip); - if (!geo || !geo.ll) return; - - const city = geo.city || geo.region || ""; - const key = `${city}:${geo.country}`; - const existing = locationMap.get(key); - if (existing) { - existing.count += count; - } else { - locationMap.set(key, { - lat: geo.ll[0], - lng: geo.ll[1], - city, - country: geo.country, - count - }); - } - }); + }); - return { - locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) - }; + return { + locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) + }; }); }; @@ -319,74 +318,74 @@ export const insightsServiceFactory = ({ const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `auth-methods:${dto.days}`); return withCache(cacheKey, async () => { - const endDate = new Date(); - const startDate = new Date(); - startDate.setUTCDate(startDate.getUTCDate() - dto.days); - - const authRows = await auditLogDAL.countByAuthMethod({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); + const endDate = new Date(); + const startDate = new Date(); + startDate.setUTCDate(startDate.getUTCDate() - dto.days); - const methodCounts = new Map(); - - const authMethodLabels: Record = { - email: "Email", - google: "Google", - github: "GitHub", - gitlab: "GitLab", - "okta-saml": "Okta SAML", - "azure-saml": "Azure SAML", - "jumpcloud-saml": "JumpCloud SAML", - "google-saml": "Google SAML", - "keycloak-saml": "Keycloak SAML", - ldap: "LDAP", - oidc: "OIDC" - }; - - const identityAuthMethodLabels: Record = { - [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", - [IdentityAuthMethod.TOKEN_AUTH]: "Token Auth", - [IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes", - [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", - [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", - [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth", - [IdentityAuthMethod.OIDC_AUTH]: "OIDC", - [IdentityAuthMethod.JWT_AUTH]: "JWT Auth", - [IdentityAuthMethod.LDAP_AUTH]: "LDAP Auth", - [IdentityAuthMethod.ALICLOUD_AUTH]: "AliCloud Auth", - [IdentityAuthMethod.TLS_CERT_AUTH]: "TLS Certificate", - [IdentityAuthMethod.OCI_AUTH]: "OCI Auth", - [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" - }; - - authRows.forEach((row) => { - const actorMeta = row.actorMetadata as Record | null; - let method = "Unknown"; - - if (row.actor === "user") { - const raw = (actorMeta?.authMethod as string) || "Unknown"; - method = authMethodLabels[raw] || raw; - } else if (row.actor === "identity") { - const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; - method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; - } else if (row.actor === "service") { - method = "Service Token"; - } else { - method = row.actor; - } + const authRows = await auditLogDAL.countByAuthMethod({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() + }); - methodCounts.set(method, (methodCounts.get(method) || 0) + (row.count || 0)); - }); + const methodCounts = new Map(); + + const authMethodLabels: Record = { + email: "Email", + google: "Google", + github: "GitHub", + gitlab: "GitLab", + "okta-saml": "Okta SAML", + "azure-saml": "Azure SAML", + "jumpcloud-saml": "JumpCloud SAML", + "google-saml": "Google SAML", + "keycloak-saml": "Keycloak SAML", + ldap: "LDAP", + oidc: "OIDC" + }; + + const identityAuthMethodLabels: Record = { + [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", + [IdentityAuthMethod.TOKEN_AUTH]: "Token Auth", + [IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes", + [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", + [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", + [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth", + [IdentityAuthMethod.OIDC_AUTH]: "OIDC", + [IdentityAuthMethod.JWT_AUTH]: "JWT Auth", + [IdentityAuthMethod.LDAP_AUTH]: "LDAP Auth", + [IdentityAuthMethod.ALICLOUD_AUTH]: "AliCloud Auth", + [IdentityAuthMethod.TLS_CERT_AUTH]: "TLS Certificate", + [IdentityAuthMethod.OCI_AUTH]: "OCI Auth", + [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" + }; + + authRows.forEach((row) => { + const actorMeta = row.actorMetadata as Record | null; + let method = "Unknown"; + + if (row.actor === "user") { + const raw = (actorMeta?.authMethod as string) || "Unknown"; + method = authMethodLabels[raw] || raw; + } else if (row.actor === "identity") { + const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; + method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; + } else if (row.actor === "service") { + method = "Service Token"; + } else { + method = row.actor; + } + + methodCounts.set(method, (methodCounts.get(method) || 0) + (row.count || 0)); + }); - const methods = Array.from(methodCounts.entries()) - .map(([method, count]) => ({ method, count })) - .sort((a, b) => b.count - a.count); + const methods = Array.from(methodCounts.entries()) + .map(([method, count]) => ({ method, count })) + .sort((a, b) => b.count - a.count); - return { methods }; + return { methods }; }); }; @@ -398,82 +397,82 @@ export const insightsServiceFactory = ({ `summary:${dto.staleSecretsOffset ?? 0}:${dto.staleSecretsLimit ?? 50}` ); return withCache(cacheKey, async () => { - const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); - if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - - const now = new Date(); - const in7Days = new Date(now); - in7Days.setDate(now.getDate() + 7); - const lookback90Days = new Date(now); - lookback90Days.setDate(now.getDate() - 90); - const staleThreshold = lookback90Days; - - // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel - // Use 90-day lookback to capture overdue items without unbounded historical queries - const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ - secretRotationV2DAL.findByProjectAndDateRange({ - projectId: dto.projectId, - startDate: lookback90Days, - endDate: in7Days - }), - secretRotationV2DAL.findByProject(dto.projectId), - fetchReminders(dto.projectId, lookback90Days, in7Days) - ]); - - const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ - name: r.name, - environment: r.environment.slug, - secretPath: r.folder.path, - nextRotationAt: r.nextRotationAt ?? null, - rotationStatus: r.rotationStatus - }); + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - const mapReminder = (r: (typeof reminders)[number]) => ({ - secretKey: r.secretKey, - environment: r.environment, - secretPath: r.secretPath, - nextReminderDate: r.nextReminderDate - }); + const now = new Date(); + const in7Days = new Date(now); + in7Days.setDate(now.getDate() + 7); + const lookback90Days = new Date(now); + lookback90Days.setDate(now.getDate() - 90); + const staleThreshold = lookback90Days; + + // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel + // Use 90-day lookback to capture overdue items without unbounded historical queries + const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ + projectId: dto.projectId, + startDate: lookback90Days, + endDate: in7Days + }), + secretRotationV2DAL.findByProject(dto.projectId), + fetchReminders(dto.projectId, lookback90Days, in7Days) + ]); - const upcomingRotations = upcomingRotationsRaw.map(mapRotation); - - const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); - const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); - const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); - - const [rawStaleSecrets, totalStaleCount] = await Promise.all([ - secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold, { - offset: dto.staleSecretsOffset ?? 0, - limit: dto.staleSecretsLimit ?? 50 - }), - secretV2BridgeDAL.countStaleByProject(dto.projectId, staleThreshold) - ]); - - // Resolve folder paths for stale secrets - const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; - const staleFolders = staleFolderIds.length - ? await folderDAL.findSecretPathByFolderIds(dto.projectId, staleFolderIds) - : []; - const staleFolderMap: Record = {}; - staleFolders.forEach((f) => { - if (f) staleFolderMap[f.id] = f.path; - }); + const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ + name: r.name, + environment: r.environment.slug, + secretPath: r.folder.path, + nextRotationAt: r.nextRotationAt ?? null, + rotationStatus: r.rotationStatus + }); - const staleSecrets = rawStaleSecrets.map((s) => ({ - key: s.key, - environment: s.environment, - secretPath: staleFolderMap[s.folderId] ?? "/", - updatedAt: s.updatedAt - })); + const mapReminder = (r: (typeof reminders)[number]) => ({ + secretKey: r.secretKey, + environment: r.environment, + secretPath: r.secretPath, + nextReminderDate: r.nextReminderDate + }); + + const upcomingRotations = upcomingRotationsRaw.map(mapRotation); + + const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); + const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); + const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); - return { - upcomingRotations, - failedRotations, - upcomingReminders, - overdueReminders, - staleSecrets, - totalStaleCount - }; + const [rawStaleSecrets, totalStaleCount] = await Promise.all([ + secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold, { + offset: dto.staleSecretsOffset ?? 0, + limit: dto.staleSecretsLimit ?? 50 + }), + secretV2BridgeDAL.countStaleByProject(dto.projectId, staleThreshold) + ]); + + // Resolve folder paths for stale secrets + const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; + const staleFolders = staleFolderIds.length + ? await folderDAL.findSecretPathByFolderIds(dto.projectId, staleFolderIds) + : []; + const staleFolderMap: Record = {}; + staleFolders.forEach((f) => { + if (f) staleFolderMap[f.id] = f.path; + }); + + const staleSecrets = rawStaleSecrets.map((s) => ({ + key: s.key, + environment: s.environment, + secretPath: staleFolderMap[s.folderId] ?? "/", + updatedAt: s.updatedAt + })); + + return { + upcomingRotations, + failedRotations, + upcomingReminders, + overdueReminders, + staleSecrets, + totalStaleCount + }; }); }; diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index 88bff3e99fc..d4d0b04f0b9 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -105,8 +105,7 @@ export const KeyStorePrefixes = { TelemetryGroupIdentify: (orgId: string) => `telemetry-group-identify:${orgId}` as const, SecretEtag: (projectId: string) => `secret-etag:${projectId}` as const, - InsightsCache: (projectId: string, endpoint: string) => - `insights-cache:${projectId}:${endpoint}` as const + InsightsCache: (projectId: string, endpoint: string) => `insights-cache:${projectId}:${endpoint}` as const }; export const KeyStoreTtls = { From 2597b9e7559e6ebc4b9ecacd50fe36cc19983550 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 20:30:36 -0400 Subject: [PATCH 111/562] chore: lint fixes --- backend/src/ee/services/gateway-v2/gateway-v2-service.ts | 1 - .../NetworkHealthBanner/NetworkHealthBanner.tsx | 5 ++++- .../GatewayTab/components/GatewayDeployModal.tsx | 8 ++------ 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 48f678d2e5c..aa49d5cd499 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1401,7 +1401,6 @@ export const gatewayV2ServiceFactory = ({ }); try { - const certs = await $issueGatewayCerts({ orgId, orgCAs, relayName: relay.name, gateway }); const appCfg = getConfig(); diff --git a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx index 75a0e52e7a4..4c690955f09 100644 --- a/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/NetworkHealthBanner/NetworkHealthBanner.tsx @@ -72,7 +72,10 @@ export const NetworkHealthBanner = () => { } if (!("heartbeat" in g)) return false; // Skip gateways that have never connected (both fields null) - if (g.heartbeat === null && ("lastHealthCheckStatus" in g ? g.lastHealthCheckStatus : null) === null) + if ( + g.heartbeat === null && + ("lastHealthCheckStatus" in g ? g.lastHealthCheckStatus : null) === null + ) return false; return isHeartbeatStale(g.heartbeat); }).length ?? 0, diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx index 9319bae30a0..c037b6144ec 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayDeployModal.tsx @@ -2,8 +2,8 @@ import { useMemo, useState } from "react"; import { SingleValue } from "react-select"; import { faCopy, faUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { useNavigate } from "@tanstack/react-router"; import { useQuery } from "@tanstack/react-query"; +import { useNavigate } from "@tanstack/react-router"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -254,11 +254,7 @@ const Content = () => { export const GatewayDeployModal = ({ isOpen, onOpenChange }: Props) => { return ( - + From 7663a7d60e46f2fac8a828450a4660dff8abf96f Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 20:49:28 -0400 Subject: [PATCH 112/562] chore: remove unused GATEWAY_ENROLLMENT_TOKEN_DELETE and GATEWAY_RE_ENROLL audit events --- .../ee/services/audit-log/audit-log-types.ts | 24 ++----------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 0fa5eb605d4..09a57f375f0 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -737,9 +737,7 @@ export enum EventType { // Gateway Enrollment Tokens GATEWAY_CREATE = "gateway-create", GATEWAY_ENROLLMENT_TOKEN_CREATE = "gateway-enrollment-token-create", - GATEWAY_ENROLLMENT_TOKEN_DELETE = "gateway-enrollment-token-delete", - GATEWAY_ENROLL = "gateway-enroll", - GATEWAY_RE_ENROLL = "gateway-re-enroll" + GATEWAY_ENROLL = "gateway-enroll" } // Maps each actor type to the JSONB key that holds the actor's primary ID in actorMetadata. @@ -5799,14 +5797,6 @@ interface GatewayEnrollmentTokenCreateEvent { }; } -interface GatewayEnrollmentTokenDeleteEvent { - type: EventType.GATEWAY_ENROLLMENT_TOKEN_DELETE; - metadata: { - tokenId: string; - name: string; - }; -} - interface GatewayEnrollEvent { type: EventType.GATEWAY_ENROLL; metadata: { @@ -5815,14 +5805,6 @@ interface GatewayEnrollEvent { }; } -interface GatewayReEnrollEvent { - type: EventType.GATEWAY_RE_ENROLL; - metadata: { - gatewayId: string; - name: string; - }; -} - export type Event = | CreateSubOrganizationEvent | UpdateSubOrganizationEvent @@ -6347,6 +6329,4 @@ export type Event = | SecretValidationRuleDeleteEvent | GatewayCreateEvent | GatewayEnrollmentTokenCreateEvent - | GatewayEnrollmentTokenDeleteEvent - | GatewayEnrollEvent - | GatewayReEnrollEvent; + | GatewayEnrollEvent; From 58ac75aad566860fb8c9c6815fbd9cd205e3a937 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Tue, 14 Apr 2026 18:13:12 -0700 Subject: [PATCH 113/562] chore: comment out geo location insights for now --- backend/package-lock.json | 170 +---- backend/package.json | 2 - backend/src/ee/routes/v1/insights-router.ts | 64 +- .../ee/services/insights/insights-service.ts | 162 ++--- frontend/package-lock.json | 48 -- frontend/package.json | 5 - .../src/hooks/api/secretInsights/index.ts | 2 +- .../src/hooks/api/secretInsights/queries.tsx | 58 +- .../InsightsPage/InsightsPage.tsx | 5 +- .../InsightsPage/components/WorldMap.tsx | 652 +++++++++--------- .../InsightsPage/components/index.ts | 2 +- 11 files changed, 481 insertions(+), 689 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 5bb2bb9f3f0..3ca0b083ac4 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -89,7 +89,6 @@ "fastify": "^4.29.1", "fastify-plugin": "^4.5.1", "file-type": "^22.0.0", - "geoip-lite": "^2.0.1", "google-auth-library": "^9.9.0", "handlebars": "^4.7.8", "hdb": "^0.19.10", @@ -164,7 +163,6 @@ "@smithy/types": "^4.3.1", "@types/bcrypt": "^5.0.2", "@types/dns-packet": "^5.6.5", - "@types/geoip-lite": "^1.4.4", "@types/jmespath": "^0.15.2", "@types/js-yaml": "^4.0.9", "@types/jsonwebtoken": "^9.0.5", @@ -2214,7 +2212,6 @@ "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.2", @@ -4273,7 +4270,6 @@ "url": "https://opencollective.com/csstools" } ], - "peer": true, "engines": { "node": ">=18" }, @@ -4295,7 +4291,6 @@ "url": "https://opencollective.com/csstools" } ], - "peer": true, "engines": { "node": ">=18" } @@ -6942,7 +6937,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -7863,7 +7857,6 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", "license": "MIT", - "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -8359,7 +8352,6 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -9023,7 +9015,6 @@ "resolved": "https://registry.npmjs.org/@react-email/body/-/body-0.2.0.tgz", "integrity": "sha512-9GCWmVmKUAoRfloboCd+RKm6X17xn7eGL7HnpAZUnjBXBilWCxsKnLMTC/ixSHDKS/A/057M1Tx6ZUXd89sVBw==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "^18.0 || ^19.0 || ^19.0.0-rc" } @@ -9033,7 +9024,6 @@ "resolved": "https://registry.npmjs.org/@react-email/button/-/button-0.2.0.tgz", "integrity": "sha512-8i+v6cMxr2emz4ihCrRiYJPp2/sdYsNNsBzXStlcA+/B9Umpm5Jj3WJKYpgTPM+aeyiqlG/MMI1AucnBm4f1oQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9046,7 +9036,6 @@ "resolved": "https://registry.npmjs.org/@react-email/code-block/-/code-block-0.2.0.tgz", "integrity": "sha512-eIrPW9PIFgDopQU0e/OPpwCW2QWQDtNZDSsiN4sJO8KdMnWWnXJicnRfzrit5rHwFo+Y98i+w/Y5ScnBAFr1dQ==", "license": "MIT", - "peer": true, "dependencies": { "prismjs": "^1.30.0" }, @@ -9062,7 +9051,6 @@ "resolved": "https://registry.npmjs.org/@react-email/code-inline/-/code-inline-0.0.5.tgz", "integrity": "sha512-MmAsOzdJpzsnY2cZoPHFPk6uDO/Ncpb4Kh1hAt9UZc1xOW3fIzpe1Pi9y9p6wwUmpaeeDalJxAxH6/fnTquinA==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9138,7 +9126,6 @@ "resolved": "https://registry.npmjs.org/@react-email/container/-/container-0.0.15.tgz", "integrity": "sha512-Qo2IQo0ru2kZq47REmHW3iXjAQaKu4tpeq/M8m1zHIVwKduL2vYOBQWbC2oDnMtWPmkBjej6XxgtZByxM6cCFg==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9172,7 +9159,6 @@ "resolved": "https://registry.npmjs.org/@react-email/heading/-/heading-0.0.15.tgz", "integrity": "sha512-xF2GqsvBrp/HbRHWEfOgSfRFX+Q8I5KBEIG5+Lv3Vb2R/NYr0s8A5JhHHGf2pWBMJdbP4B2WHgj/VUrhy8dkIg==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9185,7 +9171,6 @@ "resolved": "https://registry.npmjs.org/@react-email/hr/-/hr-0.0.11.tgz", "integrity": "sha512-S1gZHVhwOsd1Iad5IFhpfICwNPMGPJidG/Uysy1AwmspyoAP5a4Iw3OWEpINFdgh9MHladbxcLKO2AJO+cA9Lw==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9210,7 +9195,6 @@ "resolved": "https://registry.npmjs.org/@react-email/img/-/img-0.0.11.tgz", "integrity": "sha512-aGc8Y6U5C3igoMaqAJKsCpkbm1XjguQ09Acd+YcTKwjnC2+0w3yGUJkjWB2vTx4tN8dCqQCXO8FmdJpMfOA9EQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9223,7 +9207,6 @@ "resolved": "https://registry.npmjs.org/@react-email/link/-/link-0.0.12.tgz", "integrity": "sha512-vF+xxQk2fGS1CN7UPQDbzvcBGfffr+GjTPNiWM38fhBfsLv6A/YUfaqxWlmL7zLzVmo0K2cvvV9wxlSyNba1aQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9251,7 +9234,6 @@ "resolved": "https://registry.npmjs.org/@react-email/preview/-/preview-0.0.13.tgz", "integrity": "sha512-F7j9FJ0JN/A4d7yr+aw28p4uX7VLWs7hTHtLo7WRyw4G+Lit6Zucq4UWKRxJC8lpsUdzVmG7aBJnKOT+urqs/w==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9824,7 +9806,6 @@ "resolved": "https://registry.npmjs.org/@react-email/text/-/text-0.1.5.tgz", "integrity": "sha512-o5PNHFSE085VMXayxH+SJ1LSOtGsTv+RpNKnTiJDrJUwoBu77G3PlKOsZZQHCNyD28WsQpl9v2WcJLbQudqwPg==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -11364,13 +11345,6 @@ "@types/send": "*" } }, - "node_modules/@types/geoip-lite": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/@types/geoip-lite/-/geoip-lite-1.4.4.tgz", - "integrity": "sha512-2uVfn+C6bX/H356H6mjxsWUA5u8LO8dJgSBIRO/NFlpMe4DESzacutD/rKYrTDKm1Ugv78b4Wz1KvpHrlv3jSw==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/http-errors": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", @@ -11495,7 +11469,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.23.tgz", "integrity": "sha512-yIdlVVVHXpmqRhtyovZAcSy0MiPcYWGkoO4CGe/+jpP0hmNuihm4XhHbADpK++MsiLHP5MVlv+bcgdF99kSiFQ==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -11989,7 +11962,6 @@ "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "6.21.0", "@typescript-eslint/types": "6.21.0", @@ -12446,7 +12418,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -12927,7 +12898,6 @@ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "license": "MIT", - "peer": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -13140,7 +13110,6 @@ "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", "license": "MIT", - "peer": true, "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", @@ -13772,7 +13741,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", @@ -13823,15 +13791,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -15213,7 +15172,6 @@ "version": "16.4.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.1.tgz", "integrity": "sha512-CjA3y+Dr3FyFDOAMnxZEGtnW9KBR2M0JvvUtXNW+dYJL5ROWxP9DUHCwgFqpMk0OXCc0ljhaNTr2w/kutYIcHQ==", - "peer": true, "engines": { "node": ">=12" }, @@ -15584,7 +15542,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -15667,7 +15624,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -15766,7 +15722,6 @@ "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -15855,7 +15810,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, - "peer": true, "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -16268,7 +16222,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -16342,6 +16295,7 @@ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.19.0.tgz", "integrity": "sha512-0csaMkGq+vaiZTmSMMGkfdCOabYv192VbytFypcvI0MANrp+4i/7yEkJ0sbAEhycQjntaKGzYfjfXQyVb7BHMA==", "license": "MIT", + "peer": true, "dependencies": { "cookie": "~0.7.2", "cookie-signature": "~1.0.7", @@ -16363,12 +16317,14 @@ "node_modules/express-session/node_modules/cookie-signature": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", - "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==", + "peer": true }, "node_modules/express-session/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -16376,7 +16332,8 @@ "node_modules/express-session/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "peer": true }, "node_modules/express/node_modules/cookie-signature": { "version": "1.0.6", @@ -17286,79 +17243,6 @@ "node": ">=6.9.0" } }, - "node_modules/geoip-lite": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/geoip-lite/-/geoip-lite-2.0.1.tgz", - "integrity": "sha512-cR9E28nu1a6dsvzB1tANhdmCyXWV1L4AiSCT9alHLIUl06599EGu33mqY99ieU0twQob0kfcDQ/sAUBvHb7swA==", - "license": "Apache-2.0", - "dependencies": { - "chalk": "4.1 - 4.1.2", - "iconv-lite": "0.4.13 - 0.6.3", - "ip-address": "5.8.9 - 5.9.4", - "lazy": "1.0.11", - "yauzl": "^3.2.1" - }, - "engines": { - "node": ">=24.0.0" - } - }, - "node_modules/geoip-lite/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/geoip-lite/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/geoip-lite/node_modules/ip-address": { - "version": "5.9.4", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-5.9.4.tgz", - "integrity": "sha512-dHkI3/YNJq4b/qQaz+c8LuarD3pY24JqZWfjB8aZx1gtpc2MDILu9L9jpZe1sHpzo/yWFweQVn+U//FhazUxmw==", - "license": "MIT", - "dependencies": { - "jsbn": "1.1.0", - "lodash": "^4.17.15", - "sprintf-js": "1.1.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/geoip-lite/node_modules/sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "license": "BSD-3-Clause" - }, - "node_modules/geoip-lite/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -17903,7 +17787,6 @@ "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -19349,15 +19232,6 @@ "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", "license": "MIT" }, - "node_modules/lazy": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", - "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", - "license": "MIT", - "engines": { - "node": ">=0.2.0" - } - }, "node_modules/ldap-filter": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.3.3.tgz", @@ -21390,6 +21264,7 @@ "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "license": "MIT", + "peer": true, "engines": { "node": ">= 0.8" } @@ -21949,12 +21824,6 @@ "url": "https://ko-fi.com/killymxi" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "license": "MIT" - }, "node_modules/pg": { "version": "8.13.1", "resolved": "https://registry.npmjs.org/pg/-/pg-8.13.1.tgz", @@ -22082,7 +21951,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -22425,7 +22293,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -22523,7 +22390,6 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -22940,6 +22806,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", "integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -23043,7 +22910,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -23053,7 +22919,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -24803,7 +24668,6 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", "license": "MIT", - "peer": true, "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -26146,7 +26010,6 @@ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -26315,7 +26178,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", "dev": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -26356,6 +26218,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "peer": true, "dependencies": { "random-bytes": "~1.0.0" }, @@ -26918,7 +26781,6 @@ "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", @@ -27537,19 +27399,6 @@ "url": "https://github.com/sponsors/eemeli" } }, - "node_modules/yauzl": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", - "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "pend": "~1.2.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -27588,7 +27437,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/backend/package.json b/backend/package.json index a8b57771943..432621ab8a7 100644 --- a/backend/package.json +++ b/backend/package.json @@ -83,7 +83,6 @@ "@smithy/types": "^4.3.1", "@types/bcrypt": "^5.0.2", "@types/dns-packet": "^5.6.5", - "@types/geoip-lite": "^1.4.4", "@types/jmespath": "^0.15.2", "@types/js-yaml": "^4.0.9", "@types/jsonwebtoken": "^9.0.5", @@ -212,7 +211,6 @@ "fastify": "^4.29.1", "fastify-plugin": "^4.5.1", "file-type": "^22.0.0", - "geoip-lite": "^2.0.1", "google-auth-library": "^9.9.0", "handlebars": "^4.7.8", "hdb": "^0.19.10", diff --git a/backend/src/ee/routes/v1/insights-router.ts b/backend/src/ee/routes/v1/insights-router.ts index 551524c83db..6fcdf6e0dd8 100644 --- a/backend/src/ee/routes/v1/insights-router.ts +++ b/backend/src/ee/routes/v1/insights-router.ts @@ -99,38 +99,38 @@ export const registerInsightsRouter = async (server: FastifyZodProvider) => { } }); - server.route({ - method: "GET", - url: "/secrets/access-locations", - config: { rateLimit: readLimit }, - schema: { - operationId: "getInsightsAccessLocations", - description: "Get geographic locations of secret access based on audit log IP addresses", - security: [{ bearerAuth: [] }], - querystring: z.object({ - projectId: z.string().trim(), - days: z.coerce.number().min(1).max(90).default(30) - }), - response: { - 200: z.object({ - locations: z.array( - z.object({ lat: z.number(), lng: z.number(), city: z.string(), country: z.string(), count: z.number() }) - ) - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const { projectId, days } = req.query; - const result = await server.services.insights.getAccessLocations({ projectId, days }, req.permission); - await server.services.auditLog.createAuditLog({ - projectId, - event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS, metadata: { projectId, days } }, - ...req.auditLogInfo - }); - return result; - } - }); + // server.route({ + // method: "GET", + // url: "/secrets/access-locations", + // config: { rateLimit: readLimit }, + // schema: { + // operationId: "getInsightsAccessLocations", + // description: "Get geographic locations of secret access based on audit log IP addresses", + // security: [{ bearerAuth: [] }], + // querystring: z.object({ + // projectId: z.string().trim(), + // days: z.coerce.number().min(1).max(90).default(30) + // }), + // response: { + // 200: z.object({ + // locations: z.array( + // z.object({ lat: z.number(), lng: z.number(), city: z.string(), country: z.string(), count: z.number() }) + // ) + // }) + // } + // }, + // onRequest: verifyAuth([AuthMode.JWT]), + // handler: async (req) => { + // const { projectId, days } = req.query; + // const result = await server.services.insights.getAccessLocations({ projectId, days }, req.permission); + // await server.services.auditLog.createAuditLog({ + // projectId, + // event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS, metadata: { projectId, days } }, + // ...req.auditLogInfo + // }); + // return result; + // } + // }); server.route({ method: "GET", diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index 77e03716927..4b819407b7a 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -1,6 +1,6 @@ import { ForbiddenError } from "@casl/ability"; -import geoip from "geoip-lite"; +// import geoip from "geoip-lite"; import { ActionProjectType, IdentityAuthMethod } from "@app/db/schemas"; import { TAuditLogDALFactory } from "@app/ee/services/audit-log/audit-log-dal"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; @@ -19,7 +19,7 @@ import { TSecretV2BridgeDALFactory } from "@app/services/secret-v2-bridge/secret import { TUserDALFactory } from "@app/services/user/user-dal"; import { - TGetAccessLocationsDTO, + // TGetAccessLocationsDTO, TGetAccessVolumeDTO, TGetAuthMethodDistributionDTO, TGetInsightsCalendarDTO, @@ -234,84 +234,84 @@ export const insightsServiceFactory = ({ }); }; - const getAccessLocations = async (dto: TGetAccessLocationsDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); - - const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `access-locations:${dto.days}`); - return withCache(cacheKey, async () => { - const endDate = new Date(); - const startDate = new Date(); - startDate.setUTCDate(startDate.getUTCDate() - dto.days); - - const ipRows = await auditLogDAL.countByIpAddress({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); - - const locationMap = new Map(); - - const isPrivateIp = (ip: string) => - ip === "127.0.0.1" || - ip === "::1" || - ip === "::ffff:127.0.0.1" || - ip.startsWith("10.") || - ip.startsWith("172.16.") || - ip.startsWith("172.17.") || - ip.startsWith("172.18.") || - ip.startsWith("172.19.") || - ip.startsWith("172.20.") || - ip.startsWith("172.21.") || - ip.startsWith("172.22.") || - ip.startsWith("172.23.") || - ip.startsWith("172.24.") || - ip.startsWith("172.25.") || - ip.startsWith("172.26.") || - ip.startsWith("172.27.") || - ip.startsWith("172.28.") || - ip.startsWith("172.29.") || - ip.startsWith("172.30.") || - ip.startsWith("172.31.") || - ip.startsWith("192.168."); - - ipRows.forEach(({ ipAddress: ip, count }) => { - if (isPrivateIp(ip)) { - const key = "Local Network:LOCAL"; - const existing = locationMap.get(key); - if (existing) { - existing.count += count; - } else { - locationMap.set(key, { lat: 0, lng: 0, city: "Local Network", country: "LOCAL", count }); - } - return; - } - - const geo = geoip.lookup(ip); - if (!geo || !geo.ll) return; - - const city = geo.city || geo.region || ""; - const key = `${city}:${geo.country}`; - const existing = locationMap.get(key); - if (existing) { - existing.count += count; - } else { - locationMap.set(key, { - lat: geo.ll[0], - lng: geo.ll[1], - city, - country: geo.country, - count - }); - } - }); - - return { - locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) - }; - }); - }; + // const getAccessLocations = async (dto: TGetAccessLocationsDTO, actorDto: OrgServiceActor) => { + // await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); + + // const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `access-locations:${dto.days}`); + // return withCache(cacheKey, async () => { + // const endDate = new Date(); + // const startDate = new Date(); + // startDate.setUTCDate(startDate.getUTCDate() - dto.days); + + // const ipRows = await auditLogDAL.countByIpAddress({ + // orgId: actorDto.orgId, + // projectId: dto.projectId, + // eventTypes: VALUE_EVENT_TYPES, + // startDate: startDate.toISOString(), + // endDate: endDate.toISOString() + // }); + + // const locationMap = new Map(); + + // const isPrivateIp = (ip: string) => + // ip === "127.0.0.1" || + // ip === "::1" || + // ip === "::ffff:127.0.0.1" || + // ip.startsWith("10.") || + // ip.startsWith("172.16.") || + // ip.startsWith("172.17.") || + // ip.startsWith("172.18.") || + // ip.startsWith("172.19.") || + // ip.startsWith("172.20.") || + // ip.startsWith("172.21.") || + // ip.startsWith("172.22.") || + // ip.startsWith("172.23.") || + // ip.startsWith("172.24.") || + // ip.startsWith("172.25.") || + // ip.startsWith("172.26.") || + // ip.startsWith("172.27.") || + // ip.startsWith("172.28.") || + // ip.startsWith("172.29.") || + // ip.startsWith("172.30.") || + // ip.startsWith("172.31.") || + // ip.startsWith("192.168."); + + // ipRows.forEach(({ ipAddress: ip, count }) => { + // if (isPrivateIp(ip)) { + // const key = "Local Network:LOCAL"; + // const existing = locationMap.get(key); + // if (existing) { + // existing.count += count; + // } else { + // locationMap.set(key, { lat: 0, lng: 0, city: "Local Network", country: "LOCAL", count }); + // } + // return; + // } + + // const geo = geoip.lookup(ip); + // if (!geo || !geo.ll) return; + + // const city = geo.city || geo.region || ""; + // const key = `${city}:${geo.country}`; + // const existing = locationMap.get(key); + // if (existing) { + // existing.count += count; + // } else { + // locationMap.set(key, { + // lat: geo.ll[0], + // lng: geo.ll[1], + // city, + // country: geo.country, + // count + // }); + // } + // }); + + // return { + // locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) + // }; + // }); + // }; const getAuthMethodDistribution = async (dto: TGetAuthMethodDistributionDTO, actorDto: OrgServiceActor) => { await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); @@ -479,7 +479,7 @@ export const insightsServiceFactory = ({ return { getCalendar, getAccessVolume, - getAccessLocations, + // getAccessLocations, getAuthMethodDistribution, getSummary }; diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1ed268f7a25..1f6e7d991c6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -72,7 +72,6 @@ "clsx": "^2.1.1", "cmdk": "^1.1.1", "cva": "npm:class-variance-authority@^0.7.1", - "d3-geo": "^3.1.1", "date-fns": "^4.1.0", "diff": "^8.0.3", "dompurify": "^3.2.4", @@ -110,7 +109,6 @@ "rehype-raw": "^7.0.0", "sonner": "^2.0.7", "tailwind-merge": "^2.5.5", - "topojson-client": "^3.1.0", "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1", "xterm-readline": "^1.1.2", @@ -132,7 +130,6 @@ "@tanstack/router-devtools": "^1.87.9", "@tanstack/router-plugin": "^1.95.1", "@types/argon2-browser": "^1.18.4", - "@types/d3-geo": "^3.1.0", "@types/file-saver": "^2.0.7", "@types/jsrp": "^0.2.6", "@types/ms": "^0.7.34", @@ -142,8 +139,6 @@ "@types/react-dom": "^18.3.1", "@types/react-helmet": "^6.1.11", "@types/react-simple-maps": "^3.0.6", - "@types/topojson-client": "^3.1.5", - "@types/topojson-specification": "^1.0.5", "@vitejs/plugin-react-swc": "^3.5.0", "eslint": "^8.57.1", "eslint-config-airbnb": "^19.0.4", @@ -6627,16 +6622,6 @@ "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", "license": "MIT" }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/geojson": "*" - } - }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", @@ -6968,27 +6953,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/topojson-client": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@types/topojson-client/-/topojson-client-3.1.5.tgz", - "integrity": "sha512-C79rySTyPxnQNNguTZNI1Ct4D7IXgvyAs3p9HPecnl6mNrJ5+UhvGNYcZfpROYV2lMHI48kJPxwR+F9C6c7nmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/geojson": "*", - "@types/topojson-specification": "*" - } - }, - "node_modules/@types/topojson-specification": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/topojson-specification/-/topojson-specification-1.0.5.tgz", - "integrity": "sha512-C7KvcQh+C2nr6Y2Ub4YfgvWvWCgP2nOQMtfhlnwsRL4pYmmwzBS7HclGiS87eQfDOU/DLQpX6GEscviaz4yLIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/geojson": "*" - } - }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -9436,18 +9400,6 @@ "node": ">=12" } }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index cb9d5b35c66..1b375df63a9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -84,7 +84,6 @@ "clsx": "^2.1.1", "cmdk": "^1.1.1", "cva": "npm:class-variance-authority@^0.7.1", - "d3-geo": "^3.1.1", "date-fns": "^4.1.0", "diff": "^8.0.3", "dompurify": "^3.2.4", @@ -122,7 +121,6 @@ "rehype-raw": "^7.0.0", "sonner": "^2.0.7", "tailwind-merge": "^2.5.5", - "topojson-client": "^3.1.0", "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1", "xterm-readline": "^1.1.2", @@ -144,7 +142,6 @@ "@tanstack/router-devtools": "^1.87.9", "@tanstack/router-plugin": "^1.95.1", "@types/argon2-browser": "^1.18.4", - "@types/d3-geo": "^3.1.0", "@types/file-saver": "^2.0.7", "@types/jsrp": "^0.2.6", "@types/ms": "^0.7.34", @@ -154,8 +151,6 @@ "@types/react-dom": "^18.3.1", "@types/react-helmet": "^6.1.11", "@types/react-simple-maps": "^3.0.6", - "@types/topojson-client": "^3.1.5", - "@types/topojson-specification": "^1.0.5", "@vitejs/plugin-react-swc": "^3.5.0", "eslint": "^8.57.1", "eslint-config-airbnb": "^19.0.4", diff --git a/frontend/src/hooks/api/secretInsights/index.ts b/frontend/src/hooks/api/secretInsights/index.ts index ab975b5b4f9..6f6a248854a 100644 --- a/frontend/src/hooks/api/secretInsights/index.ts +++ b/frontend/src/hooks/api/secretInsights/index.ts @@ -2,7 +2,7 @@ export { useGetAuthMethodDistribution, useGetCalendarInsights, useGetInsightsSummary, - useGetSecretAccessLocations, + // useGetSecretAccessLocations, useGetSecretAccessVolume } from "./queries"; export type { diff --git a/frontend/src/hooks/api/secretInsights/queries.tsx b/frontend/src/hooks/api/secretInsights/queries.tsx index 194533f78a3..c0d72b17053 100644 --- a/frontend/src/hooks/api/secretInsights/queries.tsx +++ b/frontend/src/hooks/api/secretInsights/queries.tsx @@ -9,8 +9,8 @@ import { TGetCalendarInsightsResponse, TGetInsightsSummaryDTO, TGetInsightsSummaryResponse, - TGetSecretAccessLocationsDTO, - TGetSecretAccessLocationsResponse, + // TGetSecretAccessLocationsDTO, + // TGetSecretAccessLocationsResponse, TGetSecretAccessVolumeDTO, TGetSecretAccessVolumeResponse } from "./types"; @@ -21,8 +21,8 @@ export const secretInsightsKeys = { [...secretInsightsKeys.all(), "calendar-events", params] as const, accessVolume: (params: TGetSecretAccessVolumeDTO) => [...secretInsightsKeys.all(), "access-volume", params] as const, - accessLocations: (params: TGetSecretAccessLocationsDTO) => - [...secretInsightsKeys.all(), "access-locations", params] as const, + // accessLocations: (params: TGetSecretAccessLocationsDTO) => + // [...secretInsightsKeys.all(), "access-locations", params] as const, authMethodDistribution: (params: TGetAuthMethodDistributionDTO) => [...secretInsightsKeys.all(), "auth-method-distribution", params] as const, summary: (params: TGetInsightsSummaryDTO) => @@ -83,31 +83,31 @@ export const useGetSecretAccessVolume = ( }); }; -export const useGetSecretAccessLocations = ( - params: TGetSecretAccessLocationsDTO, - options?: Omit< - UseQueryOptions< - TGetSecretAccessLocationsResponse, - unknown, - TGetSecretAccessLocationsResponse, - ReturnType - >, - "queryKey" | "queryFn" - > -) => { - return useQuery({ - queryKey: secretInsightsKeys.accessLocations(params), - queryFn: async () => { - const { data } = await apiRequest.get( - "/api/v1/insights/secrets/access-locations", - { params } - ); - return data; - }, - staleTime: INSIGHTS_STALE_TIME, - ...options - }); -}; +// export const useGetSecretAccessLocations = ( +// params: TGetSecretAccessLocationsDTO, +// options?: Omit< +// UseQueryOptions< +// TGetSecretAccessLocationsResponse, +// unknown, +// TGetSecretAccessLocationsResponse, +// ReturnType +// >, +// "queryKey" | "queryFn" +// > +// ) => { +// return useQuery({ +// queryKey: secretInsightsKeys.accessLocations(params), +// queryFn: async () => { +// const { data } = await apiRequest.get( +// "/api/v1/insights/secrets/access-locations", +// { params } +// ); +// return data; +// }, +// staleTime: INSIGHTS_STALE_TIME, +// ...options +// }); +// }; export const useGetAuthMethodDistribution = ( params: TGetAuthMethodDistributionDTO, diff --git a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx index 85bb2815e91..add4ba9c722 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx +++ b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx @@ -16,8 +16,7 @@ import { AuthMethodChart, CalendarCard, InsightsSummaryCards, - SecretAccessChart, - WorldMap + SecretAccessChart } from "./components"; export const InsightsPage = withProjectPermission( @@ -44,7 +43,7 @@ export const InsightsPage = withProjectPermission(
- + {/* */}
diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx index 2deae240683..fd236013c97 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx +++ b/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx @@ -1,348 +1,348 @@ -import { useMemo, useState } from "react"; -import { geoNaturalEarth1, geoPath } from "d3-geo"; -import { feature } from "topojson-client"; -import type { Topology } from "topojson-specification"; +// import { useMemo, useState } from "react"; +// import { geoNaturalEarth1, geoPath } from "d3-geo"; +// import { feature } from "topojson-client"; +// import type { Topology } from "topojson-specification"; -import { - Badge, - Skeleton, - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, - UnstableCard, - UnstableCardContent, - UnstableCardDescription, - UnstableCardHeader, - UnstableCardTitle -} from "@app/components/v3"; -import { useProject } from "@app/context"; -import { useGetSecretAccessLocations } from "@app/hooks/api"; -import { TAccessLocation } from "@app/hooks/api/secretInsights/types"; +// import { +// Badge, +// Skeleton, +// Tooltip, +// TooltipContent, +// TooltipProvider, +// TooltipTrigger, +// UnstableCard, +// UnstableCardContent, +// UnstableCardDescription, +// UnstableCardHeader, +// UnstableCardTitle +// } from "@app/components/v3"; +// import { useProject } from "@app/context"; +// import { useGetSecretAccessLocations } from "@app/hooks/api"; +// import { TAccessLocation } from "@app/hooks/api/secretInsights/types"; -import worldTopoJson from "./countries-110m.json"; +// import worldTopoJson from "./countries-110m.json"; -// ISO 3166-1 alpha-2 → numeric mapping (covers common countries; extend as needed) -/* eslint-disable @typescript-eslint/naming-convention */ -const ALPHA2_TO_NUMERIC: Record = { - AF: "004", - AL: "008", - DZ: "012", - AR: "032", - AU: "036", - AT: "040", - BD: "050", - BE: "056", - BR: "076", - BG: "100", - CA: "124", - CL: "152", - CN: "156", - CO: "170", - HR: "191", - CZ: "203", - DK: "208", - EG: "818", - EE: "233", - FI: "246", - FR: "250", - DE: "276", - GR: "300", - HK: "344", - HU: "348", - IN: "356", - ID: "360", - IR: "364", - IQ: "368", - IE: "372", - IL: "376", - IT: "380", - JP: "392", - KE: "404", - KR: "410", - LV: "428", - LT: "440", - MY: "458", - MX: "484", - MA: "504", - NL: "528", - NZ: "554", - NG: "566", - NO: "578", - PK: "586", - PE: "604", - PH: "608", - PL: "616", - PT: "620", - RO: "642", - RU: "643", - SA: "682", - SG: "702", - ZA: "710", - ES: "724", - SE: "752", - CH: "756", - TW: "158", - TH: "764", - TR: "792", - UA: "804", - AE: "784", - GB: "826", - US: "840", - VN: "704", - KZ: "398", - CY: "196" -}; -/* eslint-enable @typescript-eslint/naming-convention */ +// // ISO 3166-1 alpha-2 → numeric mapping (covers common countries; extend as needed) +// /* eslint-disable @typescript-eslint/naming-convention */ +// const ALPHA2_TO_NUMERIC: Record = { +// AF: "004", +// AL: "008", +// DZ: "012", +// AR: "032", +// AU: "036", +// AT: "040", +// BD: "050", +// BE: "056", +// BR: "076", +// BG: "100", +// CA: "124", +// CL: "152", +// CN: "156", +// CO: "170", +// HR: "191", +// CZ: "203", +// DK: "208", +// EG: "818", +// EE: "233", +// FI: "246", +// FR: "250", +// DE: "276", +// GR: "300", +// HK: "344", +// HU: "348", +// IN: "356", +// ID: "360", +// IR: "364", +// IQ: "368", +// IE: "372", +// IL: "376", +// IT: "380", +// JP: "392", +// KE: "404", +// KR: "410", +// LV: "428", +// LT: "440", +// MY: "458", +// MX: "484", +// MA: "504", +// NL: "528", +// NZ: "554", +// NG: "566", +// NO: "578", +// PK: "586", +// PE: "604", +// PH: "608", +// PL: "616", +// PT: "620", +// RO: "642", +// RU: "643", +// SA: "682", +// SG: "702", +// ZA: "710", +// ES: "724", +// SE: "752", +// CH: "756", +// TW: "158", +// TH: "764", +// TR: "792", +// UA: "804", +// AE: "784", +// GB: "826", +// US: "840", +// VN: "704", +// KZ: "398", +// CY: "196" +// }; +// /* eslint-enable @typescript-eslint/naming-convention */ -const MAX_RADIUS = 10; -const MIN_RADIUS = 3; +// const MAX_RADIUS = 10; +// const MIN_RADIUS = 3; -// Natural Earth 1 projection — trimmed left (before Hawaii), padded right -const SVG_WIDTH = 960; -const SVG_HEIGHT = 460; +// // Natural Earth 1 projection — trimmed left (before Hawaii), padded right +// const SVG_WIDTH = 960; +// const SVG_HEIGHT = 460; -const projection = geoNaturalEarth1() - .scale(170) - .translate([SVG_WIDTH / 2 - 25, SVG_HEIGHT / 2 + 5]); +// const projection = geoNaturalEarth1() +// .scale(170) +// .translate([SVG_WIDTH / 2 - 25, SVG_HEIGHT / 2 + 5]); -const pathGenerator = geoPath(projection); +// const pathGenerator = geoPath(projection); -const geoFeatures = ( - feature( - worldTopoJson as unknown as Topology, - (worldTopoJson as unknown as Topology).objects.countries - ) as GeoJSON.FeatureCollection -).features; +// const geoFeatures = ( +// feature( +// worldTopoJson as unknown as Topology, +// (worldTopoJson as unknown as Topology).objects.countries +// ) as GeoJSON.FeatureCollection +// ).features; -// Inactive country base: dark but visible against the card bg -const INACTIVE_FILL = "#242629"; -// Stroke between countries -const BORDER_STROKE = "#3a3c40"; -// Info color for active country gradient -const INFO_COLOR = "#63b0bd"; +// // Inactive country base: dark but visible against the card bg +// const INACTIVE_FILL = "#242629"; +// // Stroke between countries +// const BORDER_STROKE = "#3a3c40"; +// // Info color for active country gradient +// const INFO_COLOR = "#63b0bd"; -const ResponsiveWorldMap = ({ - mapLocations, - countryActivity, - countryMaxCount, - getRadius -}: { - mapLocations: TAccessLocation[]; - countryActivity: Map; - countryMaxCount: number; - getRadius: (count: number) => number; -}) => { - const [hovered, setHovered] = useState(null); +// const ResponsiveWorldMap = ({ +// mapLocations, +// countryActivity, +// countryMaxCount, +// getRadius +// }: { +// mapLocations: TAccessLocation[]; +// countryActivity: Map; +// countryMaxCount: number; +// getRadius: (count: number) => number; +// }) => { +// const [hovered, setHovered] = useState(null); - // Build gradient definitions for each active country - const activeCountryGradients = useMemo(() => { - const gradients: { id: string; topOpacity: number; bottomOpacity: number }[] = []; - countryActivity.forEach((count, numericCode) => { - const ratio = count / countryMaxCount; - // Top of gradient is brighter, bottom fades to the base - const topOpacity = 0.25 + ratio * 0.55; // 0.25 → 0.80 - const bottomOpacity = 0.08 + ratio * 0.15; // 0.08 → 0.23 - gradients.push({ id: numericCode, topOpacity, bottomOpacity }); - }); - return gradients; - }, [countryActivity, countryMaxCount]); +// // Build gradient definitions for each active country +// const activeCountryGradients = useMemo(() => { +// const gradients: { id: string; topOpacity: number; bottomOpacity: number }[] = []; +// countryActivity.forEach((count, numericCode) => { +// const ratio = count / countryMaxCount; +// // Top of gradient is brighter, bottom fades to the base +// const topOpacity = 0.25 + ratio * 0.55; // 0.25 → 0.80 +// const bottomOpacity = 0.08 + ratio * 0.15; // 0.08 → 0.23 +// gradients.push({ id: numericCode, topOpacity, bottomOpacity }); +// }); +// return gradients; +// }, [countryActivity, countryMaxCount]); - const getFill = (id: string, isHover: boolean) => { - const isActive = countryActivity.has(id); - if (isHover) { - return isActive ? `url(#grad-hover-${id})` : "#2f3136"; - } - return isActive ? `url(#grad-${id})` : INACTIVE_FILL; - }; +// const getFill = (id: string, isHover: boolean) => { +// const isActive = countryActivity.has(id); +// if (isHover) { +// return isActive ? `url(#grad-hover-${id})` : "#2f3136"; +// } +// return isActive ? `url(#grad-${id})` : INACTIVE_FILL; +// }; - return ( -
- - - {activeCountryGradients.map((g) => ( - - - - - ))} - {activeCountryGradients.map((g) => ( - - - - - ))} - - - {geoFeatures.map((geo) => { - const id = String(geo.id ?? ""); - const d = pathGenerator(geo) ?? ""; - const isHover = hovered === id; - return ( - setHovered(id)} - onMouseLeave={() => setHovered(null)} - style={{ outline: "none", transition: "fill 0.15s, opacity 0.15s" }} - /> - ); - })} - - - {mapLocations.map((loc) => { - const coords = projection([loc.lng, loc.lat]); - if (!coords) return null; - return ( - - - - - -

- {loc.city ? `${loc.city}, ${loc.country}` : loc.country} -

-

- {loc.count.toLocaleString()} access{loc.count !== 1 ? "es" : ""} -

- - - ); - })} - - -
- ); -}; +// return ( +//
+// +// +// {activeCountryGradients.map((g) => ( +// +// +// +// +// ))} +// {activeCountryGradients.map((g) => ( +// +// +// +// +// ))} +// +// +// {geoFeatures.map((geo) => { +// const id = String(geo.id ?? ""); +// const d = pathGenerator(geo) ?? ""; +// const isHover = hovered === id; +// return ( +// setHovered(id)} +// onMouseLeave={() => setHovered(null)} +// style={{ outline: "none", transition: "fill 0.15s, opacity 0.15s" }} +// /> +// ); +// })} +// +// +// {mapLocations.map((loc) => { +// const coords = projection([loc.lng, loc.lat]); +// if (!coords) return null; +// return ( +// +// +// +// +// +//

+// {loc.city ? `${loc.city}, ${loc.country}` : loc.country} +//

+//

+// {loc.count.toLocaleString()} access{loc.count !== 1 ? "es" : ""} +//

+// +// +// ); +// })} +// +// +//
+// ); +// }; -export const WorldMap = () => { - const { projectId } = useProject(); +// export const WorldMap = () => { +// const { projectId } = useProject(); - const { data, isPending } = useGetSecretAccessLocations( - { projectId, days: 30 }, - { enabled: !!projectId } - ); +// const { data, isPending } = useGetSecretAccessLocations( +// { projectId, days: 30 }, +// { enabled: !!projectId } +// ); - const allLocations = data?.locations ?? []; +// const allLocations = data?.locations ?? []; - // Separate local network entries from geo-resolvable locations - const { mapLocations, localCount } = useMemo(() => { - const geo: TAccessLocation[] = []; - let local = 0; - allLocations.forEach((loc) => { - if (loc.country === "LOCAL") { - local += loc.count; - } else { - geo.push(loc); - } - }); - return { mapLocations: geo, localCount: local }; - }, [allLocations]); +// // Separate local network entries from geo-resolvable locations +// const { mapLocations, localCount } = useMemo(() => { +// const geo: TAccessLocation[] = []; +// let local = 0; +// allLocations.forEach((loc) => { +// if (loc.country === "LOCAL") { +// local += loc.count; +// } else { +// geo.push(loc); +// } +// }); +// return { mapLocations: geo, localCount: local }; +// }, [allLocations]); - // Aggregate total access count per country (numeric code) for choropleth fill - const { countryActivity, countryMaxCount } = useMemo(() => { - const activity = new Map(); - mapLocations.forEach((loc) => { - const numericCode = ALPHA2_TO_NUMERIC[loc.country]; - if (!numericCode) return; - activity.set(numericCode, (activity.get(numericCode) || 0) + loc.count); - }); - const maxVal = Math.max(...Array.from(activity.values()), 1); - return { countryActivity: activity, countryMaxCount: maxVal }; - }, [mapLocations]); +// // Aggregate total access count per country (numeric code) for choropleth fill +// const { countryActivity, countryMaxCount } = useMemo(() => { +// const activity = new Map(); +// mapLocations.forEach((loc) => { +// const numericCode = ALPHA2_TO_NUMERIC[loc.country]; +// if (!numericCode) return; +// activity.set(numericCode, (activity.get(numericCode) || 0) + loc.count); +// }); +// const maxVal = Math.max(...Array.from(activity.values()), 1); +// return { countryActivity: activity, countryMaxCount: maxVal }; +// }, [mapLocations]); - const maxCount = useMemo(() => Math.max(...mapLocations.map((l) => l.count), 1), [mapLocations]); +// const maxCount = useMemo(() => Math.max(...mapLocations.map((l) => l.count), 1), [mapLocations]); - const getRadius = (count: number) => { - const ratio = count / maxCount; - return MIN_RADIUS + ratio * (MAX_RADIUS - MIN_RADIUS); - }; +// const getRadius = (count: number) => { +// const ratio = count / maxCount; +// return MIN_RADIUS + ratio * (MAX_RADIUS - MIN_RADIUS); +// }; - const totalAccess = allLocations.reduce((sum, l) => sum + l.count, 0); +// const totalAccess = allLocations.reduce((sum, l) => sum + l.count, 0); - return ( - - - Secret Access Locations - - Geographic distribution of secret access over the past 30 days - - - - {isPending ? ( - - ) : ( - - - {totalAccess > 0 && ( -
- {mapLocations.map((loc) => ( - - - {loc.city ? `${loc.city}, ${loc.country}` : loc.country}: - {" "} - {loc.count.toLocaleString()} - - ))} - {localCount > 0 && ( - - - - Local Network: {localCount.toLocaleString()} - - - -

Local / Private Network

-

- {localCount.toLocaleString()} access{localCount !== 1 ? "es" : ""} from - localhost, Docker, or private IP ranges (127.x, 10.x, 192.168.x) -

-
-
- )} -
- )} -
- )} -
-
- ); -}; +// return ( +// +// +// Secret Access Locations +// +// Geographic distribution of secret access over the past 30 days +// +// +// +// {isPending ? ( +// +// ) : ( +// +// +// {totalAccess > 0 && ( +//
+// {mapLocations.map((loc) => ( +// +// +// {loc.city ? `${loc.city}, ${loc.country}` : loc.country}: +// {" "} +// {loc.count.toLocaleString()} +// +// ))} +// {localCount > 0 && ( +// +// +// +// Local Network: {localCount.toLocaleString()} +// +// +// +//

Local / Private Network

+//

+// {localCount.toLocaleString()} access{localCount !== 1 ? "es" : ""} from +// localhost, Docker, or private IP ranges (127.x, 10.x, 192.168.x) +//

+//
+//
+// )} +//
+// )} +//
+// )} +//
+//
+// ); +// }; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/index.ts b/frontend/src/pages/secret-manager/InsightsPage/components/index.ts index d062302f056..a9930b1066a 100644 --- a/frontend/src/pages/secret-manager/InsightsPage/components/index.ts +++ b/frontend/src/pages/secret-manager/InsightsPage/components/index.ts @@ -5,4 +5,4 @@ export { CalendarLegend } from "./CalendarLegend"; export { InsightsSummaryCards } from "./InsightsSummaryCards"; export { SecretAccessChart } from "./SecretAccessChart"; export type { CalendarEvent } from "./types"; -export { WorldMap } from "./WorldMap"; +// export { WorldMap } from "./WorldMap"; From 2a38a97ac37ef99c598cfa691732734978ca4dcf Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 21:26:48 -0400 Subject: [PATCH 114/562] fix: add org boundary check for GATEWAY actors in PAM session/account services --- .../ee/services/pam-account/pam-account-service.ts | 4 ++++ .../ee/services/pam-session/pam-session-service.ts | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/backend/src/ee/services/pam-account/pam-account-service.ts b/backend/src/ee/services/pam-account/pam-account-service.ts index 106529cd436..e152a449cf8 100644 --- a/backend/src/ee/services/pam-account/pam-account-service.ts +++ b/backend/src/ee/services/pam-account/pam-account-service.ts @@ -972,6 +972,10 @@ export const pamAccountServiceFactory = ({ OrgPermissionGatewayActions.CreateGateways, OrgPermissionSubjects.Gateway ); + } else if (actor.type === ActorType.GATEWAY) { + if (project.orgId !== actor.orgId) { + throw new ForbiddenRequestError({ message: "Gateway does not have access to this session" }); + } } if (!session.accountId) throw new NotFoundError({ message: "Session is missing accountId column" }); diff --git a/backend/src/ee/services/pam-session/pam-session-service.ts b/backend/src/ee/services/pam-session/pam-session-service.ts index 8cbf5e78a1b..ebb12fa87ae 100644 --- a/backend/src/ee/services/pam-session/pam-session-service.ts +++ b/backend/src/ee/services/pam-session/pam-session-service.ts @@ -172,6 +172,10 @@ export const pamSessionServiceFactory = ({ OrgPermissionGatewayActions.CreateGateways, OrgPermissionSubjects.Gateway ); + } else if (actor.type === ActorType.GATEWAY) { + if (project.orgId !== actor.orgId) { + throw new ForbiddenRequestError({ message: "Gateway does not have access to this session" }); + } } const authorized = @@ -224,6 +228,9 @@ export const pamSessionServiceFactory = ({ throw new ForbiddenRequestError({ message: "Identity does not have access to end this session" }); } } else if (actor.type === ActorType.GATEWAY) { + if (project.orgId !== actor.orgId) { + throw new ForbiddenRequestError({ message: "Gateway does not have access to this session" }); + } if (session.gatewayId && session.gatewayId !== actor.id) { throw new ForbiddenRequestError({ message: "Gateway does not have access to end this session" }); } @@ -411,6 +418,10 @@ export const pamSessionServiceFactory = ({ OrgPermissionGatewayActions.CreateGateways, OrgPermissionSubjects.Gateway ); + } else if (actor.type === ActorType.GATEWAY) { + if (project.orgId !== actor.orgId) { + throw new ForbiddenRequestError({ message: "Gateway does not have access to this session" }); + } } const authorized = From 2307219019f26687cba978fb5f2a6071dbae98d7 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Tue, 14 Apr 2026 21:27:52 -0400 Subject: [PATCH 115/562] fix: add GATEWAY actor to ACTOR_TYPE_TO_METADATA_ID_KEY map --- backend/src/ee/services/audit-log/audit-log-types.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 09a57f375f0..1bcdf0e6b8b 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -752,7 +752,8 @@ export const ACTOR_TYPE_TO_METADATA_ID_KEY: Partial> = [ActorType.ACME_PROFILE]: "profileId", [ActorType.ACME_ACCOUNT]: "accountId", [ActorType.EST_ACCOUNT]: "profileId", - [ActorType.SCEP_ACCOUNT]: "profileId" + [ActorType.SCEP_ACCOUNT]: "profileId", + [ActorType.GATEWAY]: "gatewayId" }; export const filterableSecretEvents: EventType[] = [ From ce98399bc04348af03676c82fbff1a8a7bf6e8ce Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 15 Apr 2026 03:46:15 +0200 Subject: [PATCH 116/562] requested changes --- .../ee/services/audit-log/audit-log-types.ts | 38 ++- .../routes/v3/external-migration-router.ts | 46 +++- .../external-migration-service.ts | 12 +- .../external-migration-types.ts | 2 +- .../platform/external-migrations/doppler.mdx | 4 - ...doppler-service-account-configure-role.png | Bin 0 -> 442083 bytes .../doppler-service-account-select-role.png | Bin 0 -> 305838 bytes docs/integrations/app-connections/doppler.mdx | 10 + docs/snippets/AppConnectionsBrowser.jsx | 8 + .../src/hooks/api/auditLogs/constants.tsx | 7 +- frontend/src/hooks/api/auditLogs/enums.tsx | 7 +- .../src/hooks/api/migration/mutations.tsx | 8 +- frontend/src/hooks/api/migration/types.ts | 2 +- .../ExternalMigrationsTab.tsx | 9 +- .../components/InPlatformMigrationSection.tsx | 18 +- ...SelectInPlatformMigrationProviderModal.tsx | 16 +- .../components/VaultNamespaceConfigModal.tsx | 2 +- .../OverviewPage/OverviewPage.tsx | 7 +- .../components/ActionBar/ActionBar.tsx | 7 +- .../ActionBar/DopplerSecretImportModal.tsx | 220 +++++++++--------- 20 files changed, 258 insertions(+), 165 deletions(-) create mode 100644 docs/images/app-connections/doppler/doppler-service-account-configure-role.png create mode 100644 docs/images/app-connections/doppler/doppler-service-account-select-role.png diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 3e0144513ee..be27ed04c64 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -723,7 +723,12 @@ export enum EventType { // Secret Validation Rules SECRET_VALIDATION_RULE_CREATE = "secret-validation-rule-create", SECRET_VALIDATION_RULE_UPDATE = "secret-validation-rule-update", - SECRET_VALIDATION_RULE_DELETE = "secret-validation-rule-delete" + SECRET_VALIDATION_RULE_DELETE = "secret-validation-rule-delete", + + // External Migration + EXTERNAL_MIGRATION_CREATE = "external-migration-create", + EXTERNAL_MIGRATION_UPDATE = "external-migration-update", + EXTERNAL_MIGRATION_DELETE = "external-migration-delete" } // Maps each actor type to the JSONB key that holds the actor's primary ID in actorMetadata. @@ -5748,6 +5753,32 @@ interface SecretValidationRuleDeleteEvent { }; } +interface ExternalMigrationCreateEvent { + type: EventType.EXTERNAL_MIGRATION_CREATE; + metadata: { + configId: string; + provider: string; + connectionId: string | null; + }; +} + +interface ExternalMigrationUpdateEvent { + type: EventType.EXTERNAL_MIGRATION_UPDATE; + metadata: { + configId: string; + provider: string; + connectionId: string | null; + }; +} + +interface ExternalMigrationDeleteEvent { + type: EventType.EXTERNAL_MIGRATION_DELETE; + metadata: { + configId: string; + provider: string; + }; +} + export type Event = | CreateSubOrganizationEvent | UpdateSubOrganizationEvent @@ -6268,4 +6299,7 @@ export type Event = | ScepRenewalEvent | SecretValidationRuleCreateEvent | SecretValidationRuleUpdateEvent - | SecretValidationRuleDeleteEvent; + | SecretValidationRuleDeleteEvent + | ExternalMigrationCreateEvent + | ExternalMigrationUpdateEvent + | ExternalMigrationDeleteEvent; diff --git a/backend/src/server/routes/v3/external-migration-router.ts b/backend/src/server/routes/v3/external-migration-router.ts index 87642204490..3784a6bfac7 100644 --- a/backend/src/server/routes/v3/external-migration-router.ts +++ b/backend/src/server/routes/v3/external-migration-router.ts @@ -1,6 +1,7 @@ import fastifyMultipart from "@fastify/multipart"; import { z } from "zod"; +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { BadRequestError } from "@app/lib/errors"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; @@ -9,7 +10,10 @@ import { ExternalMigrationConfigSchema, ExternalMigrationProviders } from "@app/services/external-migration/external-migration-schemas"; -import { VaultImportStatus, VaultMappingType } from "@app/services/external-migration/external-migration-types"; +import { + ExternalMigrationImportStatus, + VaultMappingType +} from "@app/services/external-migration/external-migration-types"; const MB25_IN_BYTES = 26214400; @@ -193,6 +197,19 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider actor: req.permission }); + await server.services.auditLog.createAuditLog({ + orgId: req.permission.orgId, + ...req.auditLogInfo, + event: { + type: EventType.EXTERNAL_MIGRATION_CREATE, + metadata: { + configId: config.id, + provider: req.params.provider, + connectionId: req.body.connectionId + } + } + }); + return { config }; } }); @@ -235,6 +252,19 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider actor: req.permission }); + await server.services.auditLog.createAuditLog({ + orgId: req.permission.orgId, + ...req.auditLogInfo, + event: { + type: EventType.EXTERNAL_MIGRATION_UPDATE, + metadata: { + configId: req.params.id, + provider: req.params.provider, + connectionId: req.body.connectionId + } + } + }); + return { config }; } }); @@ -271,6 +301,18 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider actor: req.permission }); + await server.services.auditLog.createAuditLog({ + orgId: req.permission.orgId, + ...req.auditLogInfo, + event: { + type: EventType.EXTERNAL_MIGRATION_DELETE, + metadata: { + configId: req.params.id, + provider: req.params.provider + } + } + }); + return { config }; } }); @@ -402,7 +444,7 @@ export const registerExternalMigrationRouter = async (server: FastifyZodProvider }), response: { 200: z.object({ - status: z.nativeEnum(VaultImportStatus) + status: z.nativeEnum(ExternalMigrationImportStatus) }) } }, diff --git a/backend/src/services/external-migration/external-migration-service.ts b/backend/src/services/external-migration/external-migration-service.ts index 0bc2dca715e..59b09975017 100644 --- a/backend/src/services/external-migration/external-migration-service.ts +++ b/backend/src/services/external-migration/external-migration-service.ts @@ -53,6 +53,7 @@ import { import { TExternalMigrationQueueFactory } from "./external-migration-queue"; import { ExternalMigrationConfigVaultConfigSchema, ExternalMigrationProviders } from "./external-migration-schemas"; import { + ExternalMigrationImportStatus, ExternalPlatforms, TCreateExternalMigrationDTO, TDeleteExternalMigrationDTO, @@ -60,8 +61,7 @@ import { TImportDopplerSecretsDTO, TImportEnvKeyDataDTO, TImportVaultDataDTO, - TUpdateExternalMigrationDTO, - VaultImportStatus + TUpdateExternalMigrationDTO } from "./external-migration-types"; type TExternalMigrationServiceFactoryDep = { @@ -668,10 +668,10 @@ export const externalMigrationServiceFactory = ({ } }); - return { status: VaultImportStatus.ApprovalRequired }; + return { status: ExternalMigrationImportStatus.ApprovalRequired }; } - return { status: VaultImportStatus.Imported }; + return { status: ExternalMigrationImportStatus.Imported }; } catch (error) { throw new BadRequestError({ message: `Failed to import Vault secrets. ${error instanceof Error ? error.message : "Unknown error"}` @@ -869,7 +869,7 @@ export const externalMigrationServiceFactory = ({ } }); - return { status: VaultImportStatus.ApprovalRequired, imported: 0 }; + return { status: ExternalMigrationImportStatus.ApprovalRequired, imported: 0 }; } } catch (error) { throw new BadRequestError({ @@ -877,7 +877,7 @@ export const externalMigrationServiceFactory = ({ }); } - return { status: VaultImportStatus.Imported, imported: Object.keys(dopplerSecrets).length }; + return { status: ExternalMigrationImportStatus.Imported, imported: Object.keys(dopplerSecrets).length }; }; return { diff --git a/backend/src/services/external-migration/external-migration-types.ts b/backend/src/services/external-migration/external-migration-types.ts index 557f8bd2b0e..fd3dbfcf455 100644 --- a/backend/src/services/external-migration/external-migration-types.ts +++ b/backend/src/services/external-migration/external-migration-types.ts @@ -125,7 +125,7 @@ export enum ExternalPlatforms { Doppler = "Doppler" } -export enum VaultImportStatus { +export enum ExternalMigrationImportStatus { Imported = "imported", ApprovalRequired = "approval-required" } diff --git a/docs/documentation/platform/external-migrations/doppler.mdx b/docs/documentation/platform/external-migrations/doppler.mdx index 84837732ba4..cea2e75689c 100644 --- a/docs/documentation/platform/external-migrations/doppler.mdx +++ b/docs/documentation/platform/external-migrations/doppler.mdx @@ -90,10 +90,6 @@ When you are already in a **Secret Manager** project and have **one** environmen ![Import from Doppler modal on secret overview](/images/platform/external-migrations/doppler-in-platform/import-doppler-secret-overview-modal.png) - - **First time in this project?** Create a [project](/documentation/platform/project) and environments if you have not already. The overview import always targets the project you are viewing. - - ## Next Steps diff --git a/docs/images/app-connections/doppler/doppler-service-account-configure-role.png b/docs/images/app-connections/doppler/doppler-service-account-configure-role.png new file mode 100644 index 0000000000000000000000000000000000000000..fa956f6176e361560388176a1f78fff9fa159148 GIT binary patch literal 442083 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 uckGFet38oUVoXksR7cUyS=0=&)e*!#bfvA zh@XQt#Fp09kDM9+kyJPGHp1rO+{MSohn0u%KF3sLE4o74^}ip&2<0iai_ymi$2;Ai zlU;u=Xrvx<_vOMplS~!%e$%R|um`-n(UuEs;)TY8i7PXtL5JJ3bL%c@BuVtIZ5E9b zGCqrH*$vwu226J#F7He37L+O$!3aUIr($T_e>)Ef3W|byxx!N+uY(oWZHw(ku62|r zt{ugB{-0C|9m6{7wDG?6%buSgRVgqk zgKixEkfbvja({#Ged=hC%7Yg<@kf{jo~%*+x%G0UD%lb_{oWPb*mh`U2g z&DDkkc{5X$Y8hfzmvIKR*xpr+Zqkb+v+*>u@v;%d{MPgHFvHE*%Du%nH(aHc@TK>M zj7gp>0x0(ahEeZ2Vtu7RHHOC_yZSD>PbRjx!np*#pZ$Pjlmm@$QKyd1Bx(XL`B{v5 zw)Rr<@gjAm8nr}wi~X^&F*U>4_ckkz7w5>!u}3}IJ(I5FPI&P7gWb;R71VIZ9FO+5 zM@Exb49cpi8HgRE$@1acS-TU`at`gd+QP&u89+sUqQBRswYaY z0}KX(l2vi|*NKEY+bINvv<3FtkJDcyywMQI=5;*{SIpLs%-3@Znmgl7iqW*)+PXC>bfNW6#8DSR%E7P8BI1Zhn(ZlS}S9w)c2Dtdy;h+$s7I`gYwB zStDz!P&)2_9gyDC7+Ae{!R5lKkDd7<7j6*MQyY>95u401C7N07;c%51fGJD%HuALt zKJ;~J8wkU|?ZmG7#WlYfY z-Zwvl*PAO|+@%;8oK@W#)4J>n4OyA#sm@8JpndRH;ud>;LtPeWLw^30V3CT)_v%q3 z!We}?ALGQ$#SVoGCf%W0W)`p`JxmyDrsv;l#KE^%<+m*TPg?U!F&N3dYnU%_?)VxD zcOVVX5qAZyizAX>i;AMAKe))DjZO)YQe+cYxgE)PH? zCj@w2SjYI3S7*PuifcdhXT@OJ?YJF!dvBwh!Cvaq ztAd*{h?QdtoRJDcJ`2x*im0kh2%|~}M79gcY)^$+=u68MD;W&P29TOXYc%rZLw9cX)qjXl`6~qBY>S9D`G2n06xPitW(%Ob z<`uT@lUDkZNbX@|{Du;~zD|;A(4Dwr;k{rxM|9jM85|H*TDPmaeI)h>{folOvof2R zT$s}S*A^O5Rn^C*Ss@Q(u$-KVHRS$04yEj2 zgM`~$-lrR<#s?}^Dhr8s8~LHdaV1qxd5yRf)tesAAW7H{zrLlUy@0!$E?jwoQ;X#L zq6^+bMH<;+-TVgLL4I~Ct!T#7z#x3Mmq@@2cB5_Qj2uYIoz3M#5fMGJQ@bN7$=mXP z#kB9te6s49+i7l4ET0>7Y;1odFCS*BsZB#AOw(24aopZURALI_{(5f|Ncu|e*qpUe z;Vm_!;q&&6PoJq80_Afdi_=q6g4O3cZ0v?3(WHD5se5gxS8g+@h+*CBQ(7!>9*#TM z7#A%nD(d^%j%YwwX2_>tGlUC-l^rfU98~hfsOj*GPSb6*OEXbs8g7yijS_H6FoW<* zSJApjMRRHJvws>a9oYfNh2C_ORtl>Fo7FP=E6cIZ8#MrH{;d$0o2>1#gH<$=kqqr) zwV^koe(OBm^)+K$eeDXL+>ZA-OU;f%3yl<(i#6T8Mni1K)-A(b7CY3fMWE_teL3X) zFlFJ5I`Ubv+Z{A+(>4dXLZ}lpDc}ygSY2vx-KHjEgSElM7 z;5JUv4mo_XJ%v?$agIg;v4q|>nR?BRR#*xcnnJ5CT(S4pM*(Gv+n2_Z%0rd(P1Mds zm(!9hL=4D;6}lvE@~i9a?v_2Ff599^tCU8KbkP|iJWKFnIscF*tZBgbh}ip7Ybf-m z@u7D;`e0j@$s4)t1AA6@;zw{~eNM#0u-Va2P{PLxUnNWE1PULzf6CYI#C5y(=9)(V zhFZz%Sm_v6&Gz!pBWA0*cOQ0yvu0+t0U3GWO)_s&sa37qON}CevNKAM{FUG-JpYp$ zo+urTt5oqu9E-!jKxk=yF7H&^r*?Gas9@Id79m}$PsJ8B$L^C9R>EC4KTcABw|m-_ z}?a=BhOLl-4a~rI!l>6%K57L9?v(7#__mntilMK#{m^Y%{b&Kxeo%w0%j9g&6R5 z-~QSjWw;vJ&f1{%#XAL-2gBO1B$(t#WXO&Wz~bF%NoM zvf$k;rc&jcJeHY*u0?lM4;#^OzM!hhyI3prNMmJjFb5-7&3lR2t{i;o$-_z4I{@M0%pMyPLWwEFhVyf9a1^LO>lci= z#<03uy>L3 zJ|6_qp;?IsCzSYH3TPl2zkKiY*l5&3+p%;^nlhU@m0}?>CQyY%csb2l;-=~ClyrE| zr;-9!sY==iLe0ncv}|X99*Z1*kM*a81;(&|%4%gFQJ)H|wMXhGZ-76Tse$6U3sdn`_%nM$(Mxijh^Vmyv}VMg}K!!^?bIn3iO^c$-^5G^v@kEMg4#nET{ z#7e70>}QdWl(CrT5U;lYb^AUXG^+WM@fc?9JXDyGCl*K%%+f=M zgMx0d8;-pg|3+?PY9GP5wOMy)wV1Ab$y7sY;gr6rUT!TLR=Sf1_|{F1w7OrF(b7Jq z%al*?gHt5;mp%C~v!X^^mTDF3(q^t0P_t&ZF;{xnnnBRv8f zP@j81cB?qK*#0yWCz!92#mV<2HkR)Q6QAQwf${|E>>Q(hBcqFC$*`rBLStx^nnU{Y z+(ej^c2=IH?lav*`ADD66&)tRl61+p*RWc~>(yP4@b2J=lP8c{A9ay$Pea3}Usvw? z5YToLkj)emj7*v{Z*pHAS07W=noSlR!%XWfnyGr4l88G>0Si;@l zqIQ;O0uy;!Nlz_Dfz7z=Q(djbsE~duWP2wOv~ud+Em^$fOcM^Wrk~W-)>=9_p4KXO zwt^fYQj!(w^zK`@WYHqH0xJ78=Vv=7@|HKU&gH5eqXJ(f(Er-}?u`;xb?2qIOxLB* z=wq%q4NypKd7IIM)S69{IlvwuM8X7!o zScn}8VR-oH5!AJ2-ev8D4{;l*V19y8p;6+DoboZxo|pTTzBTg<$5X0VlrsyK5Z_q-y+B^G;KN{=~KSBH@~fR zU1fB_wLHN#L@`S(vp5U3w<_>_f(JSfGI$MZr4{iUegY542o|Xv)NNJl0y@8sf1Z@G znnpuIx9?oLsY16=uTVJu^>!jt2)(l00TlPJH#k&r6_b!LT_%kV+Wg`C*olxqGxrV1 zwii|7dP8(Ek@%1 zQ>t7LEnAy7n1ntUd^n}8sr{+4!qC`m1vQAn%)8Sqqmz#j4OVofpb;JXRh}j!fXDcN zGnh$}UwL025RVwyN6=W<*`>(vFEcFqema(Y@9O1x5Mhs^kC~+H+>^q&PN<-Cn^7&` zD^3Jg$ylZnPP%GwRyRvYl4kY!-lQACyL10|cagg3LCkz38pm6&8wminp;LFvCMPE^ zaNMUI+1;#mJbO>)i9wKszHEgpyJ@IFMc?!%a4l|3Mq+x;eF@o!VNdc z*H^x;U_ec_6F%+Hfoa}^jyELVGb~~d4)?+Esg{p2cFtbvmGSE0z;k>C+djK0-`?1$ zkUe?grEhPA(gBc>H_);x3iI%?fV}B`3)~V=t&$f-R@&?@ zT=9DP4L3}pKYb<7)}uaBViz)>M4z6mhG(|`8}7?ecLHkCKkWwg_0WDD`+G{A^YFIa zh0ZV!EgO9{%v17)lIu73>RR>QQ;)R!KaOFs3Ox~O2ZfwVo7ESr)iQp>kBs&Vz)wso zSNZ98#RSvWnhuB+|U>*HGd&3b~bqJG38WG;Q}eYf)bk^8L{+Xpe3cG(5& z18`Sn59cykz@u3xYtZD^!hS5D%xu20MgTs z%SIOTwr!+_)m&hz_(761+U}pgU>7UJ}?_O6)+mj68=0r-yl6)D|AuaE&N8f4I76AU1)T4b<@~L)Y#Y<9>Y_d_DuW$ z!p+^x@_y0ax1(p4iMOz)5G;T+EbMTqpj-vOdLrAmG82Ta`68e^%PCa8jg=X}(s0~t@^M+YMaLC3fF%DJ5OlVrT!Vmbxe z)bo`r6QAw<-@e`8Q+S%(7>V4KIbr-vZF)Gz;&}yd4-Kc^99!=-lUsD=L`>uU8`>iF zAS6s&1~&!uyE`&*>uT0l%V+OCONP)gAlErtjc>8U=)!|#1(qNH6|UF=^$fU5F4H*D z>E7`6)qyN_itcNPGRM)ZBcK8Z7w_YM%Mspf>hwKE<;P8aqzcFdr>PxRk4?2U;Mya%*eWCKyYWQ06gJ(T;~(GwFB zdxx6k-oo3&Qwy_w>FQCyMJHc0oUB47A=u1*mBguh4YuVKo)t+e{l0oo9FpTu4mh4v zi#K)-qd^_lRS)Z}DUVxm3`!oPEHjwwFRE=;Z*w~@1)QGEwZK0ZEfBv3TxrR?0|5zf zcuLwFN;bTWH0~t#0zRRV@?B2~5Ywcc-{F{VpMSzYCzHrPQzcd;mf)N$VsNAc*VQG) z*lO1FEE`akTJ^*3!rZtkeJ))(4b3k(4->LfT}&FFc;3Fg)}HBDJ~UU5lx5>aLFmME z=1QjuP$PI#ls`@i9r?wwX=gJ*{T8cNNGbc?2^5RPn2u!?sRNx!lJfKi9;AWsKud?} zOB=afGCmu~b0Uajlea&v@p${_bobrGdsjR%8M{WlcSA!%)(++&2t2qBytg9QX5BcD zB6dV!U*o+-N-aj5K0xue&#=v$8gGVzdMp!W_?{6!WX4|F`;8#5z8*@cZUPs5zB0{I zfIji-v%8mYOd6;Qh8CG9?@u6+C8(Dd?Fb@YbB$a>w#DraF8s8qKA+Q;u+CcAhKM1Q z(UFfFcvp?mxx2-eKF6_sUg7WS%Z7@IN@ZtP=EgMLx?9ovnM!~rgJQooMP}bG@OLvw zZkD>e!D&{6A(Ar%uz7wsOs9oFsGtmsh)hX0gePcFEDquYdw%`|e`?nM1p08BosrO) z^{Wn1^ilqEzG{f*U$68%yz_EF5=LLw>~wwx5`;msxUX4=qb1sh0syo`+M*T&A?xl-ov*Lbv3F}5*b~Sa@1`Nb2svgNg?wW4g=c)jdU- zC$+5dR@+HWhA)ddZ{ZWeu%~g%u-7JKaPE`&_;j$%dqDszQ*w;kxlmZceSx4+uA{b) z>{16OvZRMWG^;KT8m^jRhsh8$EjB4xYHP}0UC^o*00aR zK1Dr}MF}po+1zFU@XwRYaN;Ee{u~~c5zz`Sd7V`C2s&owfFrL(B37N$ii7Eyp*ZZj zI(y}bYeBKuWY%k`(std4i7Nf7%TjO;;UVI-#lsx^P7TZA+QhotZThG-L!PtzP?Al@i64j-oIijQchZuXhjWy zrs9xFB}*FBBwk5!hmcB+crkT&t(>qKHt4IISH!xLKYD_rOvxql||`lO_rrMJ9Z&AwFh zY)`00_b#hZXTZCpG&{U*TcHY z<``_Br{?1D8^_8-B@tjp7jk+*|IaYOt**07{+qGCNniht4pw|X;!m+o(5d1$4`|F$ zNK0Rx^Dp&8e+IF4sb6|j%9O4zcy zYGY&L<7sbd?~BgAw?4h^c7FQEpev;>O*+?oL+hEH47Z{^wgIan>qy$H`LlTWgnxUG33XTarRwgzT zW5tdwc`{ZPZX1OyiQAT1E97tRmfS?q*N96O~#GY1ONtK z^`1pNFZSpELdsXRYPvABAtP``zoB#{lU?nNPEC_yfv!CI^y6>h8>Av_=P=D`A(9S- z&`HqQT>WA(ZhVE6>BiEern$PZa+OKi%68^aVv$_31Bfj;DpVj2SMSF$e_czdaNTZP zTsg1a9HOqeXGX>8>E(5El1W~ryvX#~M&~Gx?Wy~SuW`0|dFX^w+-+kX9-ifH5RO}! ztR~yOxmNJ0e&}r@;YrBqylIO|T*2*jG>b7oHJu z8gUXa#PM1@hB9}fij~eVDc$E7l=h`%Of&TJ^LwP~?41a`wSduJJeVbZ09DJht4=M5 zelc36>sxl5S!UBeA51@nr{KiZXPPzN79kHc8sNj|ov58Kc=7f^~muO4nUQI_*izr#9EJC%0cBBnW1 zIv;YGR@Dt0d!*gp5r(<=#=1%2B-@iTFHM(z?SgcM8H9FUmYU~2 zHvb^eQHHbG-_m12P6gcdwX4;QGy1aJu~)zT8C$!8WS-@&pdi4Mt^D!~C(nxy0afpb8c^<0^yJ6yx zK*~rHrn9uK>kC0iSG6agKT5Ly6K1u`bcGZH)8k2MyayMuydfreT;H5!9Y*CMRH`iF z)zeS!<%3UK3;KqS)0%TfQ42ZuM$gEG~H5#)aSBL zj_$L?2#%b#QPA6!{%r<`-a!?hh8o{un4&n)Gc&i^q8wb4^Gv$hqgIk=LR_9zUb}|k z(Y!^k4>O8Q-{b7Qe33Gf0`>LGJNTmh0Kc2du!&rh!b=1~i|MNvUzh zhc@Up(4YG!k1MT9=_I@xpk0yeQJlH(m(b2wjl@9?ajgJOblS}$#Mq4)+S&t$u~d+Y z1x-5gnsYJ^YiY4m84AdEsnbpnra1ffZQQ?1sB2d@j_a zrl(UC8k%a(^q%~CG@VHOI&RXE#x~{U+PXHSj=5RT#{9QsS@d&711>_16kb%r!?(UP z)07G3=kf7r;Au$Xh_wCiL+}ZwaM?JsYNBK6TTOB-X7!Y7ZJVcL92DNmcE;={%r^P^ zPFWE56DR~R(BIs!I^Ai_rkFE6^%N-0{~*AqzLO*)K=K$cXND>`LasO;b-B*qni&|R zmSig^kjj^$eM^|~6j*YD_}3Q!pZII%d+b0_kl2P#!s8g;5zBWO)Cffw<5U7DcAIMV zH&a4&=i_%Y$w6@+_vgdAU-?<>iEmcrIh~bZ_3h4*8nJ6(Pk;_c&zdSK8!O}LW?aSi zK;bUWljavhD+&u7&J3DW(Y$WSadh`YpFE|_pw=8-tbL2tpn1ADP_~cQn;+WVTN`FO zrpyA=S>0sS<}~_?k9W=@*sZQ%-Q@y4(!p_M(tL&~(-@E)XEaMz(0~YI=r}UkL6|~WrKf_)8XJqb zY2{;d;z$h;3FH=0fe8!OFHQ0}r8?~DS@NIfT?E#n*;LDGB|uYbO)atuzdF*Nzd7{@ z$>_KFM~ax>0zq?xgAA7bwI9HP)K%;|R_+l*N-~N_Z3^rPa?-~~OX|*QYSE_wU$auF z)gC*i*7!?*^yyIuhS8@Fy!OTSc;WG-{)D%?5xgn)7k7w$MFN$~0K3L$d`-t;f z&V`qVZ(kRadAZAK=yU+(pt;XITg#DlBF;25h&pbRz^S;Q`>^6~oVOH$R|hgh8+{4G zgqG%rmG0En8YYjU-+VAS)~@m=1M)Q46DySMs3*%Z@oy(7Nw`f(J~@rd#r#t=bB6vhIB)~%O*{xU~$ zZzj$uaJAAQ^K@yp0pNgKv@dp8B%qJkK7CL%_Iqf7 zcRENkoxxlp&RO_&XcGCzb#XqnjF8_y@V;nok?H9EiG%LxJMmy8lw=;el?TP3@hbFP zqVH!d-&@Pql|iQfsHk<62(fz8}rO{=PB)|DKZFeW>fVUqiOxmu2lJ6-o5n)B&g9$s4~+53vH-ojPh56x(# zEZ+9I*J8Mq`sh4>jw-Vo;J4m*nyLL6g$PT6FxAA9y@=iv5zi>@#GOz1w)thSLP=>G zQXA2?s96*-Bj3p2$%W5;6Y!IckvNK(KR#lK5jZ>bJ)QC&G#-HIa@0iMMLW;=fZPTE zvIeJ@_i2xplw@bLBaKcCM*52OawOJsbIDL9pdLhaG69E$ANj7Ec%qSyUp6oJk4dQsyC? zPZstHAF)jaIx#GM9(il|+aZXr_GReHB(0PeHxPCx!Cr{?x~YAhlh0`*iK9Du%I_?O zjJ8L3h-I{dHS0uI{)G7uP1a$!X|Z5}V;#fGH~UEQ|6}hhB(HyIT~bk&y1LiF8a#0qO2ZOhCGO()@4MK5Ome+Ux9n&iV9yc>RR)H(}1_ zex7@babM#a*OjJK&of%^;rw7#fy3((*ng+ki zn6_8mdH}8Ujyn3Q{c3EEa+RCipo&kYuh{PY?1xP%ObfSoy4`2Z%j(%D9gvQ$9c0Zx zpJ0kj%9Bo~$(ugc>?eCs$pU!xz$So;692zP(i# z3GrZhD(`7ec`NqhbAUK!7P>IC2M!LpuC^1lQx@ld3bqqA@Vs&UoJ=c>BG(p*FVGWT zmHLHNJt8_9S1Oh*zz+*wvICRS&3T1)aB%9xgnEtA$uc>pfG+IOay!3`B@)uu>dHXI z!gCTI0wQ-2_uKc$NI;))PZeOeWk`mVc3vi{OG|Vw;VV3kBO|kCu{UeB#~YH4wk8uc z>QnF)rKOKT#lW#nh+2gv2LR7qpGiM;a&kIdie-Ch%da(&9@Nygh(#K9g-hlBHw!gTjmTCf0!?#u{l1#G6$zuOIY50{g7Z)#4@zj z>p4e|X*-eUC<~;{+#pWEQHTdCO+==-JVBwt{p=h2%X5aN?tM*6?(lpU`Lak|=eXtB z20%b1t4k!1-S~YrfUojlHK~K|odw!GHAqrel2*?MtqX$vKIaUeA9qYVb3u4Sxg2jF z5h-idIimx7;fi!wgQsOzA&i%AQ&Z1nGerTz$y znJqk+hI+}UW~R?S?l5tu6PK_YF*IBkqPRPw@d>_gyk~XSzok~?STwOeFW$05pn{`Jz&prL zfn;cLxCHF8YB!d1B+r0*0tuHWaq+PN;Mr1v7Wsi(m1Vi}XB&flP(%1TOUf^XV-CbJ4okn6vLj zpbx2hWr65nrVZpjvPFh^6{-}qaddcIWP7AZCux7ko>WYb9(avd+dqu?vA#j<^-&5qZ|ByB3w4;b;kY@BUMGFwO3g>~N%DY$43?s=Jy97x$U(R30}g zOAQF4MS@9#E(_Zs)haIP=b71{Zxu%T=ne5wk;2tD7Q{G6MpTY(D$i16uYr-dc ziwa?Srr*AQfAb+wqD$&rw+T2sOJYhmz#Vo)r7h2&b^!0ZmJC6M5xIQDylWa~QlU#y zD><2kg~bD6^-_JRd9yjk!?kFNg2oq-yF81X(J=*b19IiM7p`SyE8Go=aRM&& zPhQTy=qWH)H5k|^$jN!m&c^oGqS1P;4%VhS*FAWQ&|9^V7#T8|D2*<3&v2~M5Y4-J zb;WP8-1l4qIv6uvaD=EB?t=ep`JqRM@?^&p=>nI$CQed^d(q(+_Gb-rcQ;kPavbJ1CW=E@ zD0w^&-)XKkSA7W=xqPW8e6U#J_^?gvHfzpl>N^ogd11MdzbjP`r8bThOUHZZKMKkx zsG-`L7cdH~gW^$~3q!Lr|J6q(Bn|GbZ<;lV~k-IA$ zT>`xRxtE*PAF|nNf}DJ(DBsi`Ez`BsjY4c`mvJqT}> zPU0{yt-cGtHa4~V>EVY-YH6D|IFV(h!u(-v-R<>&o!pVwCbf!q9JgI|?$V`0E|p%fK05UNBSt{;fH=mzFzQ7(h9%Kf5zY6RfC}J7 z_o*!-G~J1SRhr>z@;Fz=gyT}Ti99l5W2Rv2xiB=V#pmXc$LW#M^7s|p(}A5G;~WY( z=V7*h1s~&71XO@JHWPG5?>EMbj*bRkwz2^3QwXvMK9zc5dC=Wwp=QZb;mZ-tED)v9mKLAcudPzd@&2`_QIU$1>+Z zUPJd}Uov|J8k2g3sZeL5QPe%Eu-E33RTdesBu<)D}XB(=P@C9FKf&VW(wFB@E`uWpreGrE@o8qvIZn zp}mm8{AuS5>yl`M*^3h$Uo2w_)|{MZrh_(S=8EDryiw+AYlaq~8??%37?G5e)WObH zK2@>qe@z-808WvrzzK5@J?Wk(y$>G!ys>}Z+dz-YmW?P~>80kPJqZ^lcg zqKU13^R3GvGU}a$94c*@ocGew zJ6)#!-@XH*-j%>B-1)Cy-g9I@8FIhygC(Y4*9fQ6RzL7GH*WIwu}vy?rIIV_gGJ0G zs;fJ<5DS;(FwD!EiO2U*k>)Eb)7D(e zvx-@9t^xfsqJn6x#8q;i=q;JNyX zb*5SC$^bG8?XK65ZBR%^*7kDu>pQR3q)ZJLjdV2tXZz*b{(!)TRBu4BDA^X~HpH&$ zAfZ_5=-?2&ZB@3^GeUoZMzdD&T=Pk1ckqhe4V3#2s!1GUvn{Ao#_u^y`mQ`VT?!*u ztIhk!iA~qeXG2%uuAkBtLSy?@e&HwQ0o##J-kd#Rpn@W-aj(CP5~0MAp|>>rbCq`74IbcXmy%*AWpu5C8S6LYwWqP$CwbX$EK!;fs$I27CYWkl)8##9Xk zayR}$u*r4o)Hgs%QOL=ah=Hs`Y})dA-Ev(CB#~6`FE(L8RKl zQF4P(MV^G)ltLrY7eNagR-FdzE-zliTD@ z|FY>TXY=Uua>mOD^zU8xKSBb2PeA}yVSDR-^n)c|sgx6!UNHttSm0=@Nlgj`P2$?~ zuAymSbG~UShGh4*cbO!-3fd;d!51U-h}v0z(0H=5dHhkd{Iecm@M$6>)R7i*R&^nb zy2n^-w`gc7m)`lbDm;90j~RIXtkolgoJCaXQ|)p>0i;^CA)cm%SfOtlR3}SpR>E#1 zVpQ8yc@*mArhwSuei3&2@#Z8{W%UR3KaL=LxI2f3SvfK(`M7o$=jRc3$@Y7B$eN}O z1*Y+0?ALRK*&nFS@)g4kc-KHfsc~bn*oC&`)756X?D;#g?UhRb_HPVzXFtV7@u&l=_tH zNz3N+qn>*@kFYdGiury0TIR~q1cG@#7*d0O_&T8vk*I(B{8cL1^bawKTQKIvgG83D zo-8&L)cRV}09CAxZgfr#jzH74t*Aymq`-%`_Q$&^M5o<_MZlPp$>Q{`iz^|kc`7j0 z%+FbS0?7iim=8(uM2Ir$JvcoYot1NCpT2yytXHF6%|G$Wm%VeV z>DuV0%YD7)&|a+?L7~mm1lGlE(Zpj9{_E!WPX6_rD<#%z^78ZiMH{Z)*0%jI(hw=F z^$6_1;>QEZ?Z@#KT6CtacctaZT8#@06G~%N#8;%=%CmH-u>Y81(QF(TjlnY~eaiCNHpJ%(zQLv%m~2J3KGAkR*LrrV?s!JQ z?M7k5_If^5ZX}pazvzmlmPt-d){h&CfM^`$n7#ADg1(&`myPaJT1W<{;|efgTcd%Q zal7n&a5t~9Eou#ld9tl1BE>^FH8Bwv_=r~A(sHXM>>)Nf7Eahl1Wp?xq+6xTkoH7M z*Kt-^TEnPFt=3=$Q63hyvE2E7Bws0}YwRXuVA^^=?89;iF0~Sw3Qkm2NoDpuIiZ0u z#Jlu4qs@x!1CQwE20J2JyHL$iMX@>A;P2ah3QdRWrGZ(%_YV!K^Dpywf2tGz`yVsk z&W2#T%6a?bBj-XzSIi=EceLOu$N9{TJ#o0jKrjKwx@edrl0a@>p*UF}UnGnuySOo# zOyGN`A29Hg1=E4iN++j>V?)D-JRYtJI!z9sWt~5k%YR*$1J&@g!~NHn#}`g&r<278 zFFxO6yOjdC&(D0zVdx}W)iT;r@q&mgct%{AVV4wn<8h*N3QrN%kd|537g~S=Lxzjg zvFE*CRrzC+A0l_Vhk_)Y4yHTtxf@=P%_9}5SAAizf@SvhVVobk8t@qS+VXH+qrnDM zNw-m`FF>)M3dVUv@F56TrG@(1u8qv@vD1afip}BDH1sMPb$|H*Jt50)t2@%WI6Eu) z^G8U`c0y%J44`!g54CK!^rR;ECHx7Q`R`ZqzepW_dV~BkozMC847<{fpi{RpVQ_Gc z@4EMH4~;CB)AryozE*?7`WI(+7w@|?>Tlo5)}LY;e{T`f*EPvYMpGeM>g<4JD=I8q z8kM|;Nh#La zkPq4AK&1CfXc|iPP*qMm! zCGZ|qmX@X~7tQ39kZE+|<~=Z@^3aa1VQZ>iSWX$)u@%%uA?9)a1mK^=@M|Z_P0;I8 zas2jQ8T{Au@~;QmzbvX~WD_AUZdX=>Iyg8y_v~qZbhsiXES)lEhyD1~r%+Nv_V%*7 z1ejNeX|sE|BKY&UbS6L_<-pw6wMK#c$}E44#nu%2UWLaQ7L)#pk!_7Oe1?)5nUfti zVkE%A-1c+hm4RBdHPXq+iJZFz(IW1)#7{~o;}xT3LFXE8_aufBYW9@9TVZjp%^pom zP7Ymn0cPrI7Cbgy*nDLJ2LT3sPSasy0>&i?gBU?=kzgXKe8#hWda_iv!!_K%2g_+p zfU%ApP%Ch%12=4;OjBF~hL?$H>_aw3>bVk$5+`Q!}4qU#T_4(eqOVF2hIaaRW18#3NHY%2#s)rOEE}}fTF-qSo}YGFZN`Rncsm@Y zTA$kNl9egs9C#>EnvOxZchCBwGiquNU2tYW#rtteL-@mh5n#|Qb{WZl^qpFw9V+M8 z{C~VL6-|V4J`=62N#bAjI(K#$sO?afg0aMMPNyY*gwD@sEB#&KN-gyy3{fA9W%aZsp)^PYbs{8P#G$Kn4^QR9~%eF~|= z7jJeGX*oJNxEXBU@Q-1q>1pc;+=PSLZ-2QjMEYW8+AaNb8+AfE-`*r+Q_SJv%LPd= z*!{WL6X%k@Bz9nS&PAOWU7j2P4A zlu`~{@)?jDV36gW-=8yF#;C;=eEnKxu};gNE_g{sLZlvy;XgS-*e%K0+n0B&F44z| z;C#lhRWHl#kqn*d1uH|OQ(0CPZRZ+IWoElY?vFj>1ox0|L!1}*6-Z$TKL1DI{=^s6 z65b#Lf_yYDm_+EF&CqrIXCeBZS0(si`ySGg3cl881CIMtr;?drjcGR^W5c@o)v?gA zKCc6ad30T-SG>Y>WLOuEe(im~slVYji4w0g(X$AA|jAWZZz(gn}k}J$j+Nk$9HYwb9 z)H8;zV^gVM_2@M-8}qiAyE|7Bo>G2|Qh`>Ia0rP&mUuJ+GxzB)_w+wr-haJ;uNHkl zvMNriSuif`PH8~_r)K>;f&jwf;2->{UumDYg4N%oM)hqb*O*qS4w6Hs%RXLiSN5aC zI~*OB7Ty!Dy*wR^n;bNoR5xF}y?s~G9m>GPauio;d=y<=k$+ozEMGMU1V`y)A+9_i z{gcP=%I)3*!aEI2)qt~+`-#}-o!}c4KAjsQdHdI)E;2egx+8xu&qEuJRzuVdk0yL> z*9mSRcK!f(FZKrL?3<)0wBW|}DEUjX2>>^%zk@0N63zb_?tK<8^jB|`Y0lJjG!EV+ zFfof!QPvF&b&cW|X(t$3>PnE|mV1_3=oqVNZTm9UvLoqvRqZ(dGaV*|0W>9-U8^vq z0&#bVKN!(xaA?rgO|w7k#?M!&A^{RcSU zgV>sJh4OH7I>8mODuqedKwCVbq=>hi@~B5$*4&)NVq%Y1t@3~sr+gH3Dw31+$N%Z- zkQ9(rIhwlX=DPb!)o_=BUj+?+2=&K43r^;8NnFqcXZMlUIM^h)T|$A6vcRxU?z$gF zvQXe-$1Laix4Z8S0Hi7h(Ws%K;|X=V+Q&}f@rVa9O)p>GyA`zWMYcTkb=Qkw`0Tw_ z=JDfz&7D^a@|KQvb~5I%Q$HHDr+{`7e;CQ?Q6%x|!L3{A%kBu`o)p%wm&%2rxG$B{ z^OXwZ7dw^OVX*jG$BXd9#6;sC2PUibf|9>?O8>P+|L^ZGpW~zUL8PUP^B)G4W{qyF zlH6Iq0;hkZKxO1`f#$=951rn0+v@3p0fJ6c%7w=1laXa5TJ>lQb=`Wrq%7U$Ixxx@ z2it6k-PoO1NihitgsPzYHkS;ZU=Msm{jzGh(MwyAKa`P^u86SuJA;4qiP1ChSE>;s_wVDxK*Zm6gBK`?U{7-+J&}br~*7gDi4@sNTxUBmJ>n&_9 z^AuFL(ZK36WhIY|V~G_;g0t)G?m^#q3DC?)F#I_1cx%>!klEDSR$ZI}L^o=GZKz|9 zxpUmjIu~u_lU{yyc?ORNz4|b>uGfzqJpvF9ciB&jhctW!U8^9fkb-NfAUr-!PR^!Q z({A)k8ZFeylGapI{2}}&?)6`{&A*8!Cb-u(qFl?}bu&fv{qU*-clHtx6AOTW&RjMf zHHHT9_?badrAS}0V%i&2gUFczfB#!WnpMf8R#Sqs@m2kkmAcKYsvp_4dE8D-J0HqD zWsjLTN@TYi%q(t5e@`}?F#726;}C_)wcHH@rV+= zYeBu5uCKby0e#J1cN2kB&ofSSb$qO=^N~uXkdUbGI_i#l`1mm&sLGf;e$bdsta01gI7Cl^DS}K6hqeAfF!6akY8XRL zn#ArVJRO6FMam%v%C{$Hol!^WMU#&G=C2#TPz)20nXA#tlQ)2sctB@7^HkY^dc#!D zw;3PdP?8K~waR;A3i*mA@vm&|*Y8W~RpgiF=}q0PdkWoOrso3#z2xeg>ZKq#GY{v| zv#@;m5q1^<;=}d%D+8a=P=em=)~!{A<)SL%`OM;6*AN0*ZO0lg1UtZGvdU(6M8h2v z@>${T*}0u-fhD&K=F~TSyN2v<0)8Ev*RoRKvpO}wy#Lc3@W*NVdZ+WLq1a{{ERWUG ztMDw5szd9F4;A0MVGs%DAjhFQI~f3=SDtuu{xHxcJZWw_d)Hz;P>eywdw;t%CPQTC zyHJpRlgmQ8++GwJ8F_neZ>X)>n&)&fx0^5q9!+Y0zifuWOzEN*8OjFVwA(>A{|uP6 zx_@Qu29Q}=^~$Jg01(&_I-CVI442!Had{l~^XIEH`V^u}*Qwgoy0K~`8*NRwEJSJG z)HYlT5=zszT-}|7G&;)X&?N;3^b7D3QhFW3VC9}+Y^jNgP}{{jQgK{y**&rR&m_K3 z90i75y-(&2dPbP=VQt8r1ZbFunbtnE3JVEHOYu}A3*}VPYG%T@9~Kmr(f;Z7ylmy* z8vz01UMKj=f7z9cGRaBnZ5Y%Eo7)RQ*oLHyMZaGg7KVMeJ?Zbbd9Gl^yV+T4 z&?uKOlhR-7V73BU5Mag;N$usS9~QABKoq0+4L6U6X+ZTX68YRqXnnLe3t-5dpUM62 zY61U&al`|;J@zKobuck%nb3+DHVx_S1tdCg)TA{(gnO8@fSw1&UBO9+4 z6-jS${xJdkZvxl9u4EBk=$l^4A6W(!eR^flBKp<(affI_70{Ndw!PnuUcrty9Pu`Ct(Yh06SrNXQj5yVw|*?Ab2 z3!qKZ6{{wKzsX7XG&-jl9~F6+=s(*r^GNT7rcG=wrf0X!I>*xr>oHG8)eEY;vHBiS zs@l-`dZ}{tG^Dbj?p1~-53EailLdsadI7^qT)N=z7UG}DhAa6zGlmk}_t7k%1<;gU z#OlCr8~@4r?H5BSJz65SlzR{o8DQZ$$hr65PFZ zN@OcZ?>IO;{yVIJdOLjFcfF9bMU~wv|G})T{@j5KAygfa(|0YmYi-E;SH2!$VGS=f zV;guG8-Kce?nfBH|1W&J|4^jdbS$Bbo3#`n%i(D#X*9;i;F;Quc4HDujDw^_;0TLJf;53J1oDGgw0d*NfZUjpa6Eg??WM1xsAX( zl@(Vb4y_HN6|5R=+Ykc_vu#XVp}@h>&P2L0aNk6{?z}_CWV%nL- zq(hV|KZHwAJ%Xk4^5X2Jy*nCpW7C{QMt{F`K!C*8$mbSn&s|(xwmu39wTU|q8AilF zwIf)ptjA&u$A}5^NTGQC z9GV}~D?X*^6bEqIWvp0>-$L=g_($-Es;WsJYHq&{$^c*)X}PY8RX&&5oGwd*kn=kfj*Dr zIVywu0XnmVN#U(uJ~3AbSziaD6cZWA|Cew5%YRK9`I?183N|UI?Y3MG-)A~Nv5uy` z&}+V!c0Gt*`aE!dps=PR9$F9UjSIlOGrVAyiD+Ng=HaYn>+6vqA+seQg*zVu6tCuu^|ggUOXO-QOW?j;Kg)yR@yT_HO)k9T%Z zkT(f%A1-uN1{amOuWB=x{jf?$D3kBs^gbenl92GB9>N-}tU~T;K~jhG9{>7LKJvH2 zeQF+xGX2{{1Ac*}s4z;$QU&9tRh|d4HP1{U?YCeG;H4-b45P`}p+U$~nz}qDD-zm} zgb$s-znp@TQ-Yx?E2a_}RpsS8beqvDipg|J&~dZ#a}p)zS4diUR)A`iVT$E_0?G-_ zGX1tt$qA?t;wf|tJO~^YioH$Ab@!u6m>+QVbJ9Lj#zLohNGS{3)zvW=BMv%C#lU-+%D?C}C~= zwSIJRaLD|MEChr4Ai3X7pzC^{gtIs9hz?Zk&4@It4;2peo}BbPO6l)RwBru28i0`m z28Kp|_`do6J+hdD)Y0a)Y7~4o>}YFa6Yu<6JC~+83~`W7-VkGMNff=zGO={?xV`<9hQCFW10deiF`5py@1 z?&!Wrkx!k(qaNnv6$1G3*J)ZSFHC)6>&!UbZ@72Y+5OSHds7&P(3)LG-7L-e_hxnV zC};}vj4Gx_ZvgI0HXdQ{R4$b07@R#uLd(e85pS5I2-Nc+uF(mb; z6T!Wea&x37l!V_!7jmLbB2{)YJ@-t_mZPX?ngx#l) zXcNif(P2~qA|%hhQ9hY0W1}SKzi55F?MxEU*#NJj)cea8|A;(ug89ei6fv5GRM{+&q*M08 zbf*+;-O$i*{O%8eNG+rN)t4p%A@TV7n8SY^8HwjpLD zo|rOgXwhG5;f8NFmA5r(&@-NxST1*jXDDMiROw6P_MPpgB9n*${L*(J_ZzvzPH8fN zRFO7;~i{*wL4nM z67{!|_>6J{&agBy8_^$G4d<2=!OTkC&Au4Yelwf`dp!Qh;%CRkLNBHl%O08gC+aCP zLBNW=YJFX2l=XBx(!$T$$b(a=(z54ZQ`KHuo3l(~d5NeX@T?~;$my4GkXm`?;l-GT z1^3XqUJ0-If@f(vzW1l$(UG+56BCs@BYhd(8%USG#-?9(0f=e2xX8)hx?JDH`_$x1 zOn$$y2s(gbp(haWAha;b1oMt~u}XsiM|rsZquwqD)YMam%uRX!V75^-s^#V7uJXadB4mL*MXfdW=W_h!(<{kShOu&79;qNaZnnTB} z-&)$3n3eEk_{U(4gbcLNvFDCzxlW~~ud=bMV=>Q7^OVX>j?T4c2@BZ@s2x5_r&~zp zE2S*vk?t2Tj_}E0o{rpYBKWjkyz*F$VQ@%)B=Ff~{CLxhN#o@UHz`L= z;-NB-QK8>YSYr<@q$cOt%iYv(zEg-`o$wwV|L$$EtRpHaV5C5n@y@)d44Q7OHxYr_ zpybF)LDAA+cF%5qNp7^MEDep%On7B4DzI93F|LuzV?;>GKlCv*!EJ5pR6Z7qw<;Uq zR2>Nhh%HUeuqyLuWrATVov@xHW+^7VDeX8`H$SmQBjN;c!IP#{ts02ID3Cg{G*d2# z2O6mf+=~z*s^UshRtBor7Qd{546e&K%wPFZ_3@ZrJM8|YlK$s^acRHWEjv!c zRWuv!TfoX)N}9)_W(_oTppHo!9941N;_#+-++S@j2v%pxid*9EcE!^=R>|y?P;R1Q zn3=YTN=Q|1w_cR=$Sh3AgyBGQVrm{2tu4V5I+De~#ogd)DAran=H z8h+fMq6{Bh&DjPKY8onnNn*mdVabG_uz!b<4~qRoFQaZOmq;O|wgAnFl-s^s<;*XH zKtf+Xn8|qd4hIjY!Oz)$st{JMkM!&1WSTw3TXwZALgUB7%Y_J-=-3(lPO1by~zg6`pnpS>d|8Ug687EUaI)cCH1o1D!W}L(~=DkyF|sY0oJvI&yQ{ zx?&{B5oW?*8-?)4$EhDV`)(92JGMDRlbjRXw(_t z%rl0s`5P}9Lp?W2W^p_PY9^C`6-)|r@uMA zHAA;4d~(KWBjd1;iZfV-xPfTc_Vdiie3r@o2~>qG`o1$32 zgEb=v9H+Dyg~jZPM$b&*mr^0D*d|qYdYrvVvBt}!+Jmn?Q#V72UV5BiM_5n-M?@6X z=g%$5k%}8G#G%?aW4Yya(N&rWmBfL>Z+rund*XCU-SJX9R5|e;F5qzr|D=SNCDk*o zhsOn#l~zvPSn{L9u#=Uw4*0qDA*APGHVW`^I!k$sAf*i|M;FSYhy5hKEcI7gc!u`c%+GMSIyt%03dCzz zuj0*!q(Q4Doz-cCsL|NA+hj|q5OVCHSe*1kJ!jhl&7m7u_k;K@ba`NwSC+Avc*Bsp zt^;LsDRz66$(fxeExPA>q3XxO5s(5WpjO2+i3tB5(M`^&^BP8>vLnY;m;{I@D$R>5RjJV$7Cr~-(;3=Ko=gR8J*yC61Cl(j@q znktR@DrV`;3VoFV25HfvzSwy?6Ak|&Wbuv6udD`(jIh;ztbJyZK z&wn2sZaBrRRp~U4W#AL|uJ}$9Y z83rdFptpGRX7}(F#`$;2cTRd;UHb0RUz$P8U;C71QB6z;JvcD--YtiFKExCZ36Kbn zjdd0?9)KC+6ils!fN;eQs5L(+URB^+!n?mA<#%@}Dw#-(KlXf&5KHD@} z-iTt`?S&iv6^{`^)eB}N zB9f)^w1RrGvXPe{!Mye27FLNr6Zu!8@I8{S!Y-)3L zR2jcA+grjss<6IHiRdp4A>!7LVluu*R)2bThp=g*yT(kVvQRsxSP7INZ#f)RpL&F{ ziNE)KZ!WyWn;pZmDkG#xZe-zexuvoGYM(+KlcKM$kNPMoK0eikHr@c5nwmQ9*o$Oj zKFvFI){dXSv~IUVyX_`4W3{M>aq*XgbU#-CBqa6|*;X|691?R}%gbF&JixTl%#xa9 z87wzZ*hhNnSEyPh91#)GDP<$r=sB3`d6TghNwwNK?WE%Hl1z_mBNg8rqrkjSuL6N@ve}9;UDD!{!PXkp`0ab+0fS?MIHG7GMxzY zDCt0I4`a__X-b0^o-mH~(W~5aT6%t7UED0P!sS~X?-YL;u-noT$?jp8`i^o+r^(dk z(OuSP>9jIFg5r-R*7>C;-6uw^bJ|NK^u*H;Dk#VllN-y%X=vm1A(p1oHTf3SLrmil z?{PqukdO{F(@fUOj4kXX94-DVodlgswIVk1(q+-H$T{QZKa~8sLDFYQ*~Fr)OruV* zd7o3_!wHu7*xN7ia$~tPcB2cGuEa2>m3KFT)hkV@f#c30bm~V)!nov|tL%2gVAM3O zHEFb?2WAiUty+g|aw@8XXWXXTfNU$7F>48A0E9XhFBvE`M%VRVk=N+KtTL>5D_0S@0P20c6HpQ#Nhc| zwQ@7Ts^KZ18Xm2UrSjjbS%R4vY>fZxDPCr7Khc>eH3;HDY%pf`75YYhR6jk=^S`?I zG!5MxRX4w}-?&vLpjKu2bHs5dJH)oDhZT>oy|A(A>MUBN)8wag%<0lihQ4(EfiRv^ ztCRgOUao=(;a|T0FXt&A0vd3C3nhxEuJcUwNAw#b5w*`c&<dAZ-mWppjW4wA_bF0y5b)X={e%<8*CdI{Wg3R={5ov7? zr-sG}17uBZ-x!f#9=Ul*7PFr7^L=dXhv+k-<_-KyZck|A;#QC9nY!HNua%U8KqmSeeC1EuGZRnK3Pq+j?!d3jW-zkPem{qzjbkp z((yK)(ybFQmw2>=5-)!9r>yafLBxsJ6=~JOE}qICYnhjG0tV~BCMxN@2>*qU8L z%y_8Gcq}(+39Q@_shV+wCfW~D9SJaAyb@TRY2Y5JG#g0&h$-K&lO9xeda`8<6(M!& zMx);zFVR$nsOgrzfO?w1v!&EsHg=z9y4a2V%;!2|F&!37cHX06-|t30YNqE#u-h3< zG8;obeY)+klIFkI5-Gj6@q^{xWUOIpB+PfCsRp#n&zvV9SyG%%d|TO=W*etihawT^ zZ%2c_tHGYtma=ksC>Onb$M|sFQzcSW*_SUvibekdOPGWY2E_TpwSQWqgcpMY;B^QT&u{TG~#(*1?1nRiJ&-ZO<58{SlBtju=lX>8R$!el|} zJ*DUa5RRCnd0j^?k^Y&8aI5Gxd1#a)F~=lNvd^Si8h^oIH?()mYW7}&iR!vh-*W29F9&n=B<%?Tq;)^i0?KtL%$Y--V?`7~iRGMraj&9AW(3@pu|h zMsI8qmLJv7`@$yKJHhtbW}1U1Ul2SmO*}ZPA}P}tX4}(PoK+Fvl(>moSLhHgr4fW? z;}Zp)D3ly&X+;jQ-3CIq=yyVv9BE;XNx=7Azvch zl%k-b64Ua!P>SO=tK47=n=v&c$zgVG*Qr^{4`6xq);H1WbUCE->R#AuJ4w3g9WwUq zy8X>95mL_=R&~3zV1og5$(T+swY*vURoi9p*@?-X%#xhZ-s|Vs@_pQCi5367kcT5wrhEVfcC+@ZRHh- zm+aMBuns8vnJUFIEN{_ecLfULCV6{AVlcyU_b5(Tp? zzTEhmCdltcB)%S8Yt+}zM{`jtY47s&c6CMSKd4iWk4ON0jYt;pgvw2eRO3(R`3K#C zT+4lVlq;nrJ%fd+;fGo9GNn#H_?ZN4JR=Q-eKH ztUiKeK_~3pvv)<8xY_Q74FVtATreJIeC1;<;L}a0`ugXsp3&Li_az5<$^OQ5^mp zS=9by2`21#M(iZ2s2H`dxZII>i!|J%@ygOS=8%gy{1|H07>%dx{w>)tjD&k}P=cNs z_Z$0iA~kp|z~XGeC?yc!5nq5?N9PHihE4(8eI4`UI3sK$QEjfXrA~aS5kazVwoH={ zFndaPxyt#$O}mU5?%a$CphfPlUT_|lqlp}Yk^JaNO;DdqZ6<}JHTzBW09U=PD!BV5 zmey$J!9fv&$)Es(!4L z*J_TZs}_K>%aDfDtQe6KW*6VzL|t;rkv!2meK=s=bgSFbMBG3#W3Zd}wguC%)2UUY z!DOX9R0BYnDD>Mi^%9qAueutrmNgR3cC5F_lZN1@0GQH*101oFsqE5ye>&G{VAiR= zkBd>n?1{VGgD1sV3|p*l=C5JDR8_;MKEAvTkVPXxQn>t^=I_)CGztol)cT3>45C0n z?|@~(zry`s?n>W4H??^Cl$^NFk#-6{?v`$B&aAzUeDUOzUQaz;F!5`(a=c3C4aoHWMTXU7A2SBM zfxR@B6Y6;MacveIFAI-#&&xRscs|4Sx`*bV$D&nJ6m5c#Ho*ol!KmW<9)uNCYRAR# zs8{}0;2ELHdZ!!d>f_7N7`@R-a7d6!&$I}n=IrK1bS)H{%Q{B(ze?zE-%j?GF)msG zrJ;lDUv9FY4+qZmk=+IzqFoY$c$b}JPPKiH8FGaqa$r|%GBZ`PW#L5#{3c3}y1}Tx zAjszvUv=vn4Q=q=^BjBQ{EajPb)sVeCTHdKk$Vc0R1! zk`|~vPz`!cl+Ke1L`THGn_Q>g(o4_iA^$Nrb%A$r7;~4%ITKUg(|E9XZ$N~!b3?UE z{BFOali|&Oa|p{#t%QbMW z*1uF$;`FlXH)E+8oLypEn3OEK8Vak#6@%ApL~83jo6$U|E6oqsNG#raU!cB9ahgFL z%vYjDJO-H&{?4nlFf1}KIJnfJEtFe2bj9gaER36PPPpuo;nqvcge*@Y7c`6*U(s*LjakOwY-XspZ^ydvC%Zgf;!Dbf6FLaAOCv&(L zJ2T$z<0N$>{5*o&Or)dniL?ag;}*h4Buj`;6N^&vb$@K>n&la{EPh|KUdWgmm@eGR zh)L{>U3nZyJaN@!7i=7sYL;W=GGk|Fw+J(Xd}f8aH>2c18JI-`1>3{Zniuj5C_8Um zoyl%_&GMVfaFucm_2d1UD|*St$C#g;NuksvYC!mAnMNXeqBKO>48^pHuW#mJalvL; z9CSXp2g-+Gh=oa*2P!+~uYH_%sHPTZOM!Q_q$MWgsTt`xt0D{uM(^LhPX;8HN@+8W zMFO6cv&Hr_tu6=uJn`(~b`k@UKMU_M=%VP7pq&n5n)Kkl#2P(-0znMR{jN1G!WJ&C z87`N_=$OFrU6s#r-w7@%=%tb%KQ$w1)wGj193r&p&qRT5jedV>Mo~}rQ-Lf^s9??i zWAClQqTISSU;zO!KtM&15~RDkRHQ=@>5}e}ZaF5+&@J5vL$@MblEctQcjqwhZ9K>G ziYMOR`~CM_*XLg_jL)-U?X}msSKKQ_GB}64IlUbccg~IQyvxJu?vpBKo(3oe=A?o! z6FFTDQb;O|jf`F|#ND`fombF@dzD`jn1H4B*;2$MHsgtJc&^u+bCggnn!OUuyQ<4< zzOj`bXMx4kaeqZqIj=8SEi&G6Ue(fVA|_!?IPHt$s?1egc}|pSc_{^vr~r6Y-@elc zqEr^Nf;Z}lx(kFbgfd7_TAp|Fo?7kmSMG>TSc2TDBhcCRzR*Z2+5`hEAiZUCDO0t^ zwPax#svuIR7FiI(`}k21Ddky?Gw2|vU3;|EzNC7~p5m9w_NQOH-_#Ee$QbIxVuuEQ zZA&Tr#>2JE{;B=udfQtE8Qq-L@@khp*KMttXHpy!pKjflfiYd^x^-S+>SdA!0X)X# z4CkpT!eEE(c^ei80Qe-HLt?8F^WrD5PwW;$Hqio3f!6p{WH*QzAH2qfj%buxgrs(! zkad(X};tl>OyPN!Z);&Q!gWrkh1k9&Y=RgIy${2@#ASTPHi1jqsvRB_pfT z-cF_aQQUbGAGEI%&AY72Y`sx5++PB0rFjy8()L6Sd6Lu68n+s>fcVX}qw!oddwc`rd%)4& z2CP2jZXtwh$X(8l>S)y^x#|@~Ew<;A2F`D2($PiEdgtjQ<$qwJIEplHWfk?*J1>}9=A%*RWEKOKzos`{^g zFub10MHn@Wrye#{Y`Vk{41rLVjk)Fs?tk{9cIFwr$f%>Ib5^-YEf-TB%fb#1Iu%;H zOGis<0}D5renVDEaP7B2+4eISh(T6#M~0Dsi{Sey+)dqKHlWuF#N_ zM=k-|U0xFr#)&Qfrqzlr-&m9xV;#Z{Pq{35YQrV5; z@{1bTaZxYztAW;4mBaQrRfD??!IhVLa$Uk6iZ?}_YLqAgqDEyELSE~iPt)1lvc>98 zRjyzjt3>L1h+{I25tAY>^9Y%_4^G>rN@@h@%d;pseB7Iiupg=&;cg_cA0XgUcYZFu zb~dkN?Ful!-FDAMXCRA?h)%(59$tXD<)-U~Fu3pl;6 z%}!YmaW1ofKi3&x^Ahu{y*4zMWcfYmNVN0Tkfmo->Y4G%R^$S~(#=qC(dO1OD6j{9$N`#^Ysjp>&wiX&h^pe_KLw zr-R(-?*l=V*L9oY2K~Cx@CXT+c9(fBmG44zf8C9L9P?6)D00~Db5>SsGRu!tt9~Yw z&d+fP3Dkvbo8Uf`e)1&r9t%sE)m@v?ALIG2=Ri&%;FU)`d11s{UBGq&9R;{Owwysx%jau-{&ZOTKtv z5nkYf^{d9YM2vD;cOW!bcf=~6vmiwFh0CMI!UG(f2Jra;^k9}CNrcGuTe4&myFQ2e)m$B)PU z@hW8+kaahp#)1FGo1cF0#$aFPiGJ%C9FTc=Ao}tTVg4cMPPLPtWt+pP>}*H{9!%vc zSh7J7#q3qWT%^cj;?0rqjQHk!^S+eNgf$=AX!fD@{kv8p2V@_BX*zBRfAEWr{{Abu z_r;f}CV78~%|A-+-~9nq6J!BjsPkqd`*ol{_Vw>x`TJ)+qIl%qe8Ks*%*FrtOaJs( z@_Hbh*c(?`wtf|mA1n1Q1Gsb#1vLt7(X8;0OXG z`>**rm-=me%HJ~E88mOFd93KZyK2q=It1g))T4xS#03;tEz3sN%xOurtE<(bEdJfq zGf5?S0ZM==@QYUX znoBVf{pHeDtNq$9Py6Lp9|oJfo^EC5jUth2*MbKtXn*iQnNViq?K__z@#cD_*V}30AD+TL9L1zZ zSYO0nWQBIL*V5!gN1YBIyh=69+c_(MFivoJ-Csav(R{r5rnQKYA?I^b(EInH`hkR& z&4}4Z9V$x7l+R7fouVu?2i4JD{?%Jc=358T3K8j7Ed50R2%Ty@F+NB^N2dmSEEma0 z(9)?582!VJP@~R>Yj?OS5ye(x>KHhr2K#j$bN1*g^2jWpP$zrj;f!zil!4%K1~1bQ`E3Kc5do z=Rf}C2qhU^CWdbwn`uOKA$O~*=q*pq;CDY3!Fkft{HnDO6&<&+8lCZgFJBzDRygu6 zbScS`sHCBE)VS`3adh#HC49aH)1m1WIZa*}t17F`cuI3LVZR^GZsgCf;XYDo*_&Z4 z(%K2KxJMfr8pdEpG3Eu^mvz^i9_s8DF7_Em(0Nz5m94GSQZbP;S>{v&9^tKirS29V zG)!qT^{nQjoi(P6cu-m7xK;(K98{L#t_GgJLv2iak{YxdAwj1RYN78xu)al5SJg}nBuJ*_&br>BSA zZswAcd1tbaSwHQ*r-PM&vGEAGbLUK60b`KGl&x){-7*tTd#V)9vw1wj#iF$2{e*~u z+M`Ei>Kj{!^QUsp7`@C3dS()4kCIk2RNy zy_lRdP;lB?Vy>cA`1z){nk9`k3O>lrj%NI5HYCvo*a#9Zw@E#F$Vn+ZV!;Tz@%Bx0{! zXn%ZuAV1rYQ)xG|r&;p8yL&+OIuVxzZD%Y`0X_EI`ML=+f6;nl-Tc5w!x~qR&XLDP z@R*>t!k&Q7YQ@%5r`QZFZez7Ck70G6;uz7k zZ8Wr-i#BfY#gQ-a=}ar^U3cf)wrs{Gxz}Q_hFmVFGXM?klcP;!=nD%AdvjPrI<1v5 zq&+=r&lJ|{tHSD_(Hw*MV1BrD?cp2;9h0e!*O@3uDkziUYp}_!pN6^};8YAy;TLlB+3V5lI>x;5!&P!M!eD-r~ zZQ%?IE2bIo0uG_$HEts=oPC=*UQD4ck5RGM?BluDp1L4bouoCb9Y{M`TSJ;j-R_Tj zos!s-VMx_^O0*Q4_KnHdG4faqo2>4hscwTWZ>LH-a|&wbtd=W!0IuVv@bJ+i>1?bB zZHwA6%`&SRV+h5F1P;+Xxfo75yNN^YeuUb31-Iq!ka;G|4qh~yJpW|)Tdo3>o`!}d z_N3had2~&@(!7e+9y_Jk-;wN&ekqqmNrZ@TXDDc}TM@)}hp2oUs-m!Hmdi=2acZ?3 zM6&Y+2f({O*@@)A7g2@1)qLOP2e+%ACd(8P`@~JFCUVfD`^{_2 zHsiNfZ(3D!JQv}eCzQwYI-a4n8Sz%9Y&E0D`jyp&rH5~J59f8rA(?ZFGsha7ODHB zXU}?6oL!$BPaD|AyP!EmIA|Z+YMy?Uq!Qn-=P`D)Yu7|LO+`gDkfZHH>a~JfReFkC ze^9Y@bZ4xYQdTh?qtc9TezZ<%u2j}#F>OB07whvLBWRc%0qqtp(DdnG!o!<+M?(gA zOf43Sq2(3<`dqcfJB?8)Wt^<3t&Temp03z;w_ll~1ASk%LIoxVO~b;&sUmf34GZ;o zSEaYt40OgT>@z@pWgo`t)6Mxrc7qmOKJ(AN5s}pA&X;|?*ezfG<_#-mit8f~62_Z*Ai;?})=FjATFx(2`zo{yh1$=6U>M}IdNcjn(!Stag;wuT`teZ?68Cd& z8fKkW4YE|jV5S8(;X#Xr^+|J$$n%-oYK7l)gS|ixv+9G-_Tp$HK76L8j+Ox~QWwYoRVEux-JF}11)*f&96**=IozsbbUR!?zUa3&!H;Uxb z#X6L=2OUg$>Q{n94i%q2f4<_WcKTIx6Gzxt;ZYEg zVI4;wAis)W4i|FU8~VWSw8m&%xBHsd_6sf*Hc2n}L*b(hk2|v2<{IT2EU{b~0;a5` zfgjX9wkvU#t3$2L4?h{`II^2~Av<|Wt?Io`dTTwB$MUnhGIJn=y#4nCw^WFDtSnFq zCu~5lEyFmfqalBJwRjy4eRI5DXASbQcHLwG=$2$Iq*GkXyMOF z>=zUCg3o3AjjP&&Vq9pT7!B(cN*hsFh3)hsff@{BPjKzpwKfv8zN1OdO)QUwK&G8c zv9LC`zTgL)RV&WStc1o|S15a)92&zbI5aqIUUV!x-U4Bb7GRSdt*&dhH0;7+k~-ha zG)8KdiY4RX%FSv*9?sXgt+PePv9S8IlURu689f;EuUAh775Vazy>vxi`umoeTj*Q4wIE}hEMK=w|_FC5* zzJ9Sf+<5WL8l-BiR-zWMhAE|>KtQ4cof_XP0C>3ggxkI)-)5?kK?4S?WFuY@&5!Hj zZm0|k1lU`6*KWbK%Ie~2f`qp|nkeRDcn1-A_*=uCtm6nDnE*zYG|SUYo{36?2V!-f zeenaPCF|;Mo71zn5R&rr2yp9F_=n7r3Fo9l^|KJUFhzv`Gs`hF39qoqjVqr_(y&?UXiur^Pqt2Mt<$@Y| zv>;*we5u8W$4rsPi8O9#u~iT!2sM&jS*TSySwCeCxd`ENN9?WIwNgdG$!-$!+SHS- zjbsG1G9nYMjn^*c3v^8MZO2#)9Jy*kc%M%c+A_d2kN{; zy6?)=km%RKHo?gWjLDrZ9XX)_G=oLcJ8WXHhD>LPb5{x3haCIJhd{s1W}xR@1r`um zvebPe&h5Egvp*|x>e9Ej+?xiy=FjXH{D3%$ zbxL;RImpA=0#;##hPn5;KOx6zZ7JO%f2DwOUlZ_hI)$J{i+d_BU;55`_G4xvjF?~} zY_9Q*EJ6CQ2-5&3DKs&W<+R)`*&SG5YyR+<4;r28l?ZKtoq8X%nY|HBpHHRVu6vn0 zT7zkOG-8~b9*tPrA$NHy!6R~nE%zcctO+__=g;a;*K4g`>weOER6I75=vgY(TuEYi zWF~5__Fj7eKTu@c(Pci~X?21Rl(sSu#9W<)O>8K*oFZ{%K+xF%(?8M>d-#0FdEhR9 z9UL-Mw&QkRYDNmB>Pd!#n{2E%oO(XAsx8?${m8=pRzf_gbtiXvF-J#a9Vg3me{EGb z-KVQLKuBKrVB*c5Zys=wC?TYt4~2QiddIv@(UO~G=xO4dLstM z`8Bsyoili^1a>-IHVc|)%2F?9tgs=ObCj9`L4HqfQljTc<9cC1?aA<!4jBV%tRI|1;F@$ zGl-5r<#L|ojn41C#L9%}YI%VYxZQD>-4WrmG|3mxm{v7bN&_*b`_h|Ba=6UIakXl# zy7`$ow|yu5YFKZ+^&FX3%b9~VR=Hm+LTz&tIj4md#r0KPW}@~4qG-B-yv8$b;8mU! zJ#s!qAxeG;;P01IvQS}}WMMnY6BB{ufYkOfafSPXYj=e2Td@a8UBl1r&ta>sNC`7NT3w-b4yo0+-F-f;QV50{vWi_9z!m*fZ{cR&k4DSR)j ztiMIZe^)C$>eL@SmlKnHT934!WPwEX%BIa}EuRvQW@V4bAYcw#7Z3&ysuFPC=t+jh zc*s0|F3W!(j@n2;^>MOu z?e|<^KKqzl)xxLDb;s-idE>B1&86YJvcS;%{f{3WjB0suh<&9BpGdDnjhdeRmJ0eh zQE@qt-C=uPJ~rrm7#8-_sb;;&4u5FvB9B|3R>ZDc^j6MFOWPL7Q80oiSkOFz0d42Z z!HCXC3t6ft4`HcLJr^)bVdruK{cKN~ohJ#+egj#TF7w8rp8E}|*uL;|3UEmHE zopVKy(IL~-(*CQhCv7y;BWob9i1NszMGe2HT}eS?dVrCeda$O>ZkB$(v@Sq7M_PDo z2cT*8+&RY{09!}Uqim}zm5klo|xYSrqYgrj4rY{D@l&aSPMTWQ;}Y~n7cGu^d#LN!7pDGacr z#x5@XCfSOEP#JOj>o-;0p)zize*2YH3_>_J;d|BlyOnvGYIbfUqQ3DZ3pi-Em}!M= zv`0*mX_?}MUZ%7c36C7Io|bQSRn4}uh(IzkX#xBJT{WL>lH0?)0&YBl&idT_i@z9| z_k6r@bk~Nm%u8G{Qt!3r$Hna9d{UC<8(3z0@@dyMP5(_`Z?oVN+9r4J5(o2`L&G(t zB8$adGw60auaHO1sQtbc_r?%kL_!ENPLzZUa=&g}8q|`B`-Xdn}ow(qS*Z?!g)`C;4-O0bla&CYI@(<9*%$0IgKcyx=-U&*22f??s13 zpy-ghckj$Gw#2}vj$2G{>rKU+1sJN$I%4GOUM)(;lw8A@oRX4XH$_fBZ*OVk$Y5Fk zsC3w0q>i?zqB?UgB#n&HuiXkT8O%*h54V%`eHtXRcUz#;Xi&SV$%{N61IHW-2M2;L z&#V3Zig#H6{UXk_807fHZhmnN4dWOC@hsDVxdc|4ZG{YE!n zx!;Tvxjq?9d#>)Dw$z;>Go3NMl9_1+o;S$`=&o;|bbO$WwQ&gF_?XVc?tQq$aH7rF zdTX1u0F$hI;`m$nj7|iBfG8Eo!C^+L_NVqP&Jp&~cf!dQfJv)2%icI+xR$0=A&fgu zE9mHGeZ<-goyCpYeYHfzU?++V1i@$3I{&o@bfP#n%bALdh6}@lcmIpuTJ$M%s1nKWD zem-wz{L&@9sB_v?z~N+^gG0;9X={7iaK)D9!2C%nvw%RemP*8Kg#gLiBUjhT(Sz>T z*+F2nNsu_CdR)81|1?n8HCXDPUok(yIlNd>GT2MgVOOt9l;@lvCYhlF1gOHS0#&~h zWY)etp&WsJiEbuqY;2SP_TQPC6Cv(L&{}6zrMyEh!}WntqcnHOFg3lL9UWkI!#Q%@ z2{oe#q8Uxi*7o*Dt~r%f2~w#G_O_4u&u{C`W{G0#kMc(QJdkX!)zE@Vd5@o8oyYR} z0`QT#tq_O@(ApEkl+@l=HR|bX;|ow@MdL{3aV$Oe=A{(~Ytz27<=8}Mb)$#bSf!(_ zHDY9gQr1Z=|mdP-IYH zurAwXm^{ho4GRmqF(O;1p;cj*)~X$+5@WT-ZK#%5rNqa>*|4><$g#2v+{Mr{?8v@b zh*AhNS_PpBtpwL4LbVcC2R`Eu=kwzf4^c0&s?^$sciU89$&LfWJj4YgBd2%q>Q~2k z?D6$hsaRK>o?y=Ijaaiq2i5q-`@P70`5u(7+z^n_u3h$h32NO7xI;QA#}I(L&k4+K z=%c4EmacHy#NB_(ElIj{`2d4WfG~RZsW~w7^7TLe#<430l9gCsnr`t1hO5PhMx<@; zJDN5iW#Sw=;|?$(>LGR*_gJ+HG?!=M6_8s9TZ%+`N|5jz&vg!7URA(dsXn>^Y!pAN zr&_h{uK-T094NG>>atVVj3lD_49qeECTwC}awX5`Cuz*_{ElJZ8Xw|I^qLYsT&r4_ ziPM2vd+pB7qdkEvJl?SP&7 zIN@^%Oq&ULM4}f|vp0hRaf9c`%^V0ha(@he7(NuaFseCj8kq>(mpegny4eRNE@I;J7HPFX>a`?IY z8u5$oC?ZKP9WNi?B)2_;&bN=F%qo@;PWA!!#M`)o;QsMmcR&PZ{83Fagu>oV6N zVz90an?OjAxu}A}0~-4fSv8wX2tQ`7nRy<)^VQeUtF@%NL8yl{2!ltda#+-Cy+}*1|QgYo&`+g;o&pbjl&N<-5jT>Q$)m-|URFNl% z?i(jn+!u~Jd9(>?RM^=|qy0M`b1SN2%F2w;^Ncz}X6CE##Q7jM%7l?sS@2%qNBVh2 zx^z{{OM&dyzJXd6)sKoGs89Fc^;Pb9mq3q2AC9g#-DQv!%CJ9n>MgiCGmUrireQ)U zA{}(okZdZo#Jh86npCE_Zu52QDB{;+rj_)}NEg&1P?$d}*l=BC7pqb~CfT;gX*PH3 z(OF&+Su4rasbkhva00YGMP8?#RVP^ZUF>!DvG?4V&vJDiZZGTqTkb?Zw$GA(Ro>eQ zu7;(_PZA@3n+-T3?~QzzEPHg7nT|ZV2{VGWm$=>bi1`*%l`Mmy_;H{Ni0Eq;N@#PU zO_2qMSdc>nNPdmh9cZ6%fCQ+a>6Y-Kj4!3a^pAgo8iI-sQ3 z^4?-dai_MoE(e5a(%g48X|zA}NMI8$BrNL#)^A&ymTH&n)rt9}NpgU5VGMg6&Z^jT z6gIc(_}!{NeDpboy7a&BQIGWj-HIHUMFS59Tuh>tAM@8X$8mSL#TDCdn~zlqqb`%- z)5J)Ga+S`Pemzd+QS|e?y}1k1X^WnNHG{_Ptn&^f)f=Ps+I8810RbF!>~#_^ea$8? zxqMv5RC)e6CNg`or2|g;c*?R}phIsLR?)7(Im9OXDcrOySKkz4uKXaP(NUwswM5go zhl=`u{Sp5Q6Be=EmlldCo(12+z8!fT4#1KNLfh=S>&TDjvqtUOEt6Ti3>Q9zoMg+D zj`-tsw=eDhj3**HzHfY@$|$FH8u(_P-jGJ@QDe#b{dTdH6K)49n6PQdZEwt*uqW-T z)`%-K7MNJQbLs+JShi_nYbI7n)sRY0s~8l=V9Y%*Yzu4P7n#_U)?b7h@5XT1Wnl@! z>L)?E2;NOXI=ZZ^BC9diJNH)Ldp4z9Z`E{SK2!m`0gsfF8ARm@qapER7sEL7*N-S- zC8R@JU2F9kFnSoOc7^_3M!+=@iLbyfPQ-0N3j)T) zUd<}`s&pEH3F^!61j}>ED=Ga-f7^w*^51TOB}hxvKN-e+J|?uBU zg4W$DIS0>(vrJKm$ny(&BLL~SOzxrZ<92RH-hm<&$cO=JE~5sU=L<5r1oK`AZ4=%W z+6blcL6TTY%{R0C{K`xL)Dm{@iZxB)Q)5@y*#42ovN<>6dVk zb6pU_x^fM2W-);be)hJDYywox2KdegA23tH57UYy^)A?p3yyR~d!KK8cYa2hc0O?P z@o*oKuDmT5hx^~F%6uqUUo0qMUAaN8;Oo%XSaZ?`j*x4*q=E)-zcf>|bj7O`H3>d4 zYw}+VH6xAX9LHdVy@t*bpR?u8=Q@!ynWxF>Y{pz&b#)1Uz7WUH1E2=8T2W9IJ5xGh z75gdiwBFD6(+pH~NSQ!wwE2@FKq^tIJOnpxb8~YEv^+ z)xRRpx(9;U@6HOHH}!+U(G2vM1t^3-E6_(+FBZNIR7vVJz(ImL9(@Pk#dWv$)m+tQVC3diqW6D`jyrAAAthtM*SL3suMeiA zG<(QIS6VB08o-w> zbBF_wdHV`Qge1ss*cD0>|7-)EUk&n)7dexhSMoI&gz%w8+6mPQA@!g2O3o4=i~Bhb z7p4^qPL2=R^^auFd^Zw;sh#ti6hn1}KD1?tbsSy3cBKGM>zZzQ|5cx!l;)NJm?py= zx%AgnYX^}tGcz~TR6+IK?7}BsOJr!HpC56?zx92dC+WCE%b4a3rW zq5K+`I>{5Fp^pbGGLM4~xmwUipeY{}KmQ{P972kWIJ@`#IQcAqE-w^E_#kO* z(kA_!Wq1Cr!bQ2pdg3~+i@p zr0`s}ehbv=B1oPiD;@0CYn)_2O~AzT)AR9>e}40Sruj7B0!oMSbO&QN?Z%*nbsLVz z3Au5iLm=olAXI zKZ8tvYCOE&uLjdN+%mZ;eG#p$zaH+)M?Pqt^TLyL!`36A41U;8w}wbpuYe*H!E}CA zjTeIJf%!GQs}9#y$kzGucCzV+hjQdK%1<&7e|hASOz%*Z1IzU3R3f7t$5f{3_|i%9jkIFK zue9S9P(E4p)SdjFrYxy&w%rO6cMz966wwIB3ikiBC%yS#1^daV`+r(5Z&7-DFeZ8d-P_Fn)5`p` z%TJ(Sk(9Q38ixL-;r~37wu@jUZP>S8U-?t^e|o|H;YXi-Mxa9b-FH|W|Bj*Ir+5A1 zkE!e^7g;lk&|XjdzoS*UBudV81r!5ukqP;e{2z5mum!4hsHM!%^>b?dr0>W5~p8j8VJX9>{eICgs+2wN!_hWBGk8VgtqI8JA zj|dKQbR2kBnB-k`b9R{HgG-OH%vzw-(3WfD#f!R)6tnUz#)|jf3XI zN@=|(RkJZQ z6&c)W0c{-Et#M=jowksi4ZZ7)h+N0oSAy@4Pet{CPEBR$hTWz(w?Z5F=(-wKrJ9(?hzoxb-Wvcc(f1Tn=vE~@hWzSD?w9L{lOP5xph1ma6XcPXr zFY__JdWD^fG$BzF%D?WFXfEn;SR>DkyU9^+G;1Cye<_JTRm-ELoLclN?EPS~lRfyO z7XS)aTA!!1*Xe4vS%lo=hgaGUx)ff$!FzD-q!eMLwqBT{5SO9#7DI7LGwrG-R@x}4 zehJOFvq@Hvp)(H}0MhXXR{+{jPODMpqOzd2=hvBEh8Jj8Nh>r?!!@#5ypoWChe)%$iZchc9@;>6PCLFARs@f8c8h0Qz^80)!lfil~_!#$C@# zt=-%NaO*7;)S&8jO5sp90umv+C_utWcam_YRE+AJbpJU2e@=-`jhy}pbn%iL+L-J} z62^DIds23xc3EkEvti+9Eg8InN(k}9Z!JRyf_BSLEpYuUuP>BJEpB?m>;9lQ>_mvp zIT~?balm>cVZihZlf@q7KB<`Yx8MTIw*|U0jvz^cg&ie+{K$HdC8OWh*Y?a}kbI2V z!?T>4si(*K_iG*|mOAcLpkZ1U-!K6%N16Lm6~<6^Zx3!_+f!ebYGv(Rl#eh37IuMyM@M30S0@jx%5E*%6`NWWP zGQsi!e<6ShKTVZ?Fv9Penyx;hK=G)4B@U3*frQHXi zX@f3=IRsFjQ67R!r!R<&hyFe5z2cP~h|>N7-xM^L8}EyRDA@1EGB{F{*GTqIJpHJ9 z_cAsX^{F|GmYm$1f|9Z`@8!QzS&Q=H2Kz>(SUpq`5@e5G5pl%-elgv88>sSV(r#F| zcSzvpg}j$98gp4UkU{PM(%egL+nP-rS!zq7@N&2gscZsax?|W8#nx00XNu*)J#BnS zubeLnXk*e*(J!0D*ov+d)E(bvh+s)+wnmnVfd&X!PKmWKrExc7PRkjiM1qc)5j{JE z99)*X8|wK2Ho78m37n7B*A^G0rfFnD(*>NCB=^_Q>6Wu1xlBictC!vSBz!SKh;MXW za{(-Wu5DqhH*j%3>vRJ5sh=K2jA zSn}AEV}=508t5t~?IlPO>A*BB$<9+r{nD_4m!J2ER)`kg-89w0Z##_yI`p5~gUH_W zP}TYE@NbpeARfzhFjp@$3lGCm8}Dk6z)4%_*aCfR2xAXf7#aPw1-+Q%wyP^!EZ5M* zG3jz5n>n?reg7$8SSr^spJiFS{+|(i=u<*5tNw0(x)0EXg{^b z-Hq`LoOs)hLnR%S1S+}|xpA*s<=fcoCsWCQ9`oG1FBVv+hGKl7E*1O?B^9-bIRC2X z|I`w{EJ&}PXiQr@@oi@beygs0E2AJXO#1fK{(zavgWR08c`Z5nN3)={iQ-@`H>cx@ zGd%NeI6Tx!M!zzLZ%i5Jj*MBcSZx_;e)IY&QuQLs ze2Dg}e{0?9kl3+GOUiZ7v*^k2=)z;l#f2Wq7`gq`K8=`(Qlv56f^);`byIk6S`4>s z^y0)RCBNMas|Rwx;_|f`mb^BxQT^sCzC{U7s~kzP)u7Z!hmEB4k#7`|u^cqU*G)-} z3$#+i{c2M{`kVBp?h3nE>O>6TogN9_OqKP_O|xg70w6(3gHBhFaRpZ{j@73tL5LDv zWc&G=S5vN05_UY+*DCq=3jxV!FvQ|04P}e^8=eI-o@fNr6y0tR15a z;KGAIYA7}O_2z!#C(P5f@^P%%mjxrr@QLvl*(DXyK`>VeWsF!h7e|*=$T9auD)RV{ zBSz4LVyx0ZMmrwxpDVAwbk-p(DDlXZ1@z749*} z!D7r-OQDYEb$QaJNkT}NW$H`#v!43y3VYiJetVi?f|I@Q;RqT1QkB=6KQ_GPfZ>5v zMVn$;*|eaoB_-0{g$rG%GVJ9ezYjnB=fB*5KV&=gmXCjyVUjK3Jfyiv&HJFx)4OQ%}-l`reT3C0o~NJiOz15CT$?DGi@+6Qw{P z9N`Qq+Umtm4a6fjh?Yn4RSRDxfK^a-i`edGksmx9t8z4Z895v9=Jju&>T*66p4|Ap zb)c8Q_?=_-I#|9ZV$PTDgISHfBlcwReU%J>xor< zEAAI2pJbMc;q~EnSP;EJ;Q0WQf1TB`N>wc^EIiZ_UXV7270_5)lR?J71e2dQowz^U zD0uQA<}EnN`G-0Xv(d3DnGyF+XV63RhBdLSUJAQ4+nuP>mns`w)K*PAllwFiK-JoP zV6mQZ^+1S&-S<}1vXY;tN$Osns zltbLB7?~#jVP52Dg`LdqapE!z8E%^LZutb3Wj0{;$j@ZzCHhX?;WnLdU|fHyl+t1l zT1)ra`Z)+qAil9KHVzJtCPDbGTM{gcewp`aI&(=xa6q_642n&=a*XT1sn6i)K#A@Tdq|U3=N~&fRFdC7o(# zc|fMjsdvmv#AkQW*2X^FKiXvIqh8Dud_-JFaQ4D%)XB_E5)zV`)~DNM`VcuH2IF*) z2(RWp?Rh*?2%qJ#9!nLjaqY3LLrN5D=vQx zpLO{a`Y#jht-4@LCvX0#eT!|@+hUx@;CY1j#vc&XUzOhvNxu#ejd`Ez&*U6^cV=>~ zzFvSR^0(ZaMcP;0alD>!+{j|7i-UV9qZQkVwa14GdwCtL$iKtEK@yeT6d#huH%D?{rnTqS3OHs zO(7fjdq8p%&a5}3jINo51AEHFJOjZv0 zDrV{9U+=S;!JNrlbWR01ggVz59It3)i+xxGV#zp%jM-V9e!$t*ywps`C>7Yv-7mV>r|LT__%;`B2NN`UMbzbNLDC> zMMqe@ZVK~AZ(5w zk$YhE(-I*%n@r{I39Z?y3%nj8`!7Nn9ENI2?;Xv-+RSyuUel&xy}mvbCp547li@|av)BOpt++@ZmC^IZ?D$E!cgwnxxMzn%3o zl24R}6(Arb;aqa@+`ci~=JL$>k9}I=vdTf{Mo#@fi=v_;3O6@5euty5>g*j?7TUMk z)o(99x9ZQty2+#-mYW9+4G0KGAKP7qr5#F#GbjO1xwUOLX650dl^J@!T0|f=@eqq; zzT9$Yu}k|iA|6jvj{`mH7y)bHJgt2p!_Js+$F<`=8_5j$#B>!F9m#g#lO3h($9*ye z+g;3^_TEm*gO(;=Cxg-s!6{PI74_B=$@~@4_9L>f z|Hp9qp}TbN1;aDhxnQ=pzGEL%^syGZRh^Q ze$PF)B(Agh15jKOeB$49cxGOKW^`vr4x};Y6>K4d()82kS3ns(qTF}e-j@mg6C^@N8xMdc&rYUXI*N(;>8&2C&#%{zlRn_Ym))s#G^*8<wN) zTAEvCsG$Ml=-`NQsYSR5tub)jnD9U>RGvD3yNK*2^OG=ehjTVyUq{S29kS=?ltu6| ze5}AD#*?Ldjgvx3;b#xd5uN>9$CF^@vY@wblK|lI^`(pb;#^+rYpq;-q(pUKl6-un zBwPD_P&esKT*CZC{Tyq(4ipQ>%}b7}qf#obrZXBIDPpnh$r5saQX~*8O9nPVpWxJ4 zO8h8_*U%GkWSG1C&_D|ne8orhwC6_ZiKW$RwP)}@@4nYkF1i*s{$@QC#uCfwrVqY^`u zCUC!;k--a#59r9Nq*7k* zJPLoMCPWM9>+PJJBKM{%>qKm?^Pb_Ejw&7QP-NbpsE$WdWw zRd)Ulm`W$DE81W=6CvZKWc{8<7Y}=G&DXxzL?!m#C~D<*XwfH(?z%_or;f$`heVDb zSc*N-wPe<5Ap?`{STcLMOvuP)QDB}C6A<%MxuvEq&lSI6Fy$8E_ekm5|HIZ>hef$= z@8cpMA_5{MlA?mNbeGZyNHda3N$1cZAW8^`Gz=i!Al(coLw8CJ9YYS?{2o8&>~r?n zzwiFbYhQYy@B6&#S?gYR;FkQOHTmmPmV@53V8?WN5#Ait9zk5@5u(e_jJF$%6&8va z!eMw6s!dC^NlE3!F$NWUiLUQZ>%o{6X^XGgnpf3%=qqRcV`9$Kc6V>N`$74e_K**^ z{`phBGGIHJxvE5+n|3N^t$J6t;@JH4lmB^b{d;Pc@F4pGhGSs329-b0$h5-%{rE!> zlV>wE?g4EP)W-42b=II)Q7zBLf^Kh49N>Ry{Ij(9`v~OchWp#3G-BMt;%(MJ!;Z!L z$y?fg|AsszI^C+xr8QWbg1se>6mK9f*6e@+oof~b6b6-_Pm|J;28 za67a9#>y^Z1k^o11{m?;nqB0*rS4=kNWeRLEm-naF*!RhQ0LcSoutFn-eg z`_Nm+(WQF6b%gfDt$DWk4Jco%E-7GORIeZP76dopJO4j7GD8Itb$CWAn7w{ox3!c@ z>`rqpuPhd2y4cG&ol(<)RMO3RAmjpH@(*MnAH^^LCS&}#jQjuYcKljNJK{MXYv$@i z8Z@~{nxnBkwj!kM{`rb;`0+e@UGv_eD|zZs=kXWJ%%Y<5q0#QuC@U?@p;!|7gRax(P{ND;ocyj5TUCp+RCzun_FA! z_0pl82!!V329SCT$zqAJM=EB_aW7+V5N#25W)ab$GgCR0DT~K^qq2^WNy&AmN`jdSViIk^C@gMSK z&i@kUp6Gl|^yBo(b4$wT*ec32_k)BNIFB6?`($2^MH8gpSFT95OeOKl%o0A~ot4-) z&=|dSsr8X;-MD?HhEk&G{AfrS4O#tQ;e^QDv6-qG@;}}0DSD^V51D0Dx%z1j@nQiS z#}`P}cv|GBv0jP!&g@901F=%lEwRJ(UP>bD@V{@={G3_8Dv6jzmeUs~x}6x;d9L0P z^}1J0Nj>VFn*)q_UfR0j1yPD+*fB5J%o5^e=BWG{Raz9iob}ua_Kl+;Z89Kw_>kGw zgy4y|IGki(cvBxDTpO@(-0|DXR4#a&>T0JMh1h!Of~Gm6nP!Q?|Xl9zGx# zn-#;+ELMxTx?H9GwVeCv@}_1hdU=PaR>b{6N^e?(xu4<8YN9OVQ%iTlBOltfrym51 z1G-^M<huCFU^N@zcdC)6BDv>|GS~e(`_CU zEHT3oa6A23OPpBuvCp24=Q@U2U6r`CXR2v_CvIRn>yW%Bl?D4|`xu3|sN-_iXvJJo zU@5QC-g2YZX5N=t>3y?>PtN9d?%q|{+hRDr^@)JuRi&jnQ_?b}e1Yb1I!ID`2IW+8 z8!eO%Z4GNdmA(B%c-u%T!02DAz`vEgp-PE1=f>mT{~aI!D+W?-mIXfMHzW;(v(8{_ z|1*>FxUId0LhBM|tDr2RzE`g%RzDNc4uDX?;+~uwTpU@Py#rQrmpDqE_wQXO$TEHW z02_7q1Wg4xY7}*p6UvGZ;jxKyFbF#P&3HaYbH4etD?m2lVlq*-G zYe`Aj3?BKFVq{AL9sIVu=U9N<#Dcox1Go79`+Uzo(jr&B>Ry* zJnAqIL;TaIUY=^kEr%Z$V9xI4l@!Hdz25;7BpxjycdBwDus5i*%#ywYX)C*PO$Rl` z?i7Z*y^)V`1OvSO30>gEGl_DFvxtE+X*c z<2I6Ta3s%sdq&YSp>5>+^ZE$mkDUuI(}AmF0+zo|uom*oLIq)Ft^(?gYNX!CGaJS+ zmzOVJt{)_DE4T`_s>k0UWtIZ~qZVpuvpqw`yLja3aVxo@a+dGarFK_C19YQmX|_Rn z3h=p;4yK|gb-{lX;ZMVaz$ymxxn!%w25rBmL9tEbwR&hw$@)>^1y*61iR$d)vyTRMQ&sKczWS62qLF+;UpS^Q}KE+i9|!#?q0EE))GirCG_= z)|Lf$Nq?qZCGTl>G2#VAQMU?6AUvpWmsv*YTc ze@I3q<7C$RL>5Pus8w5)LMH76%@PWw@aGdjJ&*JOv^uNObOeuZgL%JgzJ5Ic1Oj0? zgprbC^xVN=SYVnPmY`(47TV+8nr+l|GL~-gI?Z)M-v@}qX(0kVA%Yxn0G3rKWC>xB zPHhMb28*#3kW1y}yuLcOQ=tCq%KYnM&eZnnO{#uP;PCk3U|pTmA29cyVf66v@h!+3 zYDSxqvtP)z0MB#xe9O^%wWkiV>pxB|p(ndUSz#hA6Ui)Exe}*)vNJj!t4GvA4tpdH zeD9sIOgir`@WY}iPQV<0FmCv{hc~8-cK`SE{wiZ%h!;Pd#08lMb6EeTLLD}W^V4VX ztl=Ex;g|w#kfg0P{w-H6E5yXgN|C*95YEYMdS8V$Usu+$8y6F3EZ>(I=rRAPA;vej z#Wf3bs|go|vWBW)IXThLDfutgz+(W&Gueb(Hf!X*+)JxaRmqJ&EVf6iw+2TIy`yDSa#o!W3enFbPg{H2`Vqr}Ab*wZOjPpiLa$M$ioM`ucYMT&vly zJL_+mC|_+Ij^0+BA$#`vgXQR6dclIX@lvNsC;*Bo4z6%--~Qv%5X`tfGfdcNk}_WK zI;}y#EU=@c#SakZWmgebXZlUnLt4dhYn;Y$xlX)@W%jIb1yYu;jg84X-g`^(p%HP} z#65oj5dS{wa%Oy}3T#cEFJ;iv4zPifE{ENGK_2r_#G(m^%yPO2n`Cxb+2m4b*c|EhZ}{0KTfM z-sry1P3P zEMwE??e!{O@Vo%vQKR|#x)3dSssJiM$AQNV7>vb%0hyHiq&w6O=m8L^Ti5J#?UU;~ zxVH1sS6(uU1A(1i6Mbjlo%u}NVJBiVP=NB35O zL>8YLs-pxv&m_qS}-?*zCmC)7NcEm1y>7y**nC;2ylDZ!S+?#n%(3{2E&I0$`hVl`GXr~?!REB?(5&4 z^0-X9)hc)t>D4;s6B>eX1%YI+-g4lC?cSygMy)rLW)r(-#J;*)i z`Nt6C5@0CA^il8n1K8Z+X1rhrDB>J>Hc4ZNl-adgKn}IGn(CW2m>R)(*Z;z8?cTx- zOLmo3I2w<9a5jjI?cOy7-zG6?yqXXo9E!!?3?3WG4)y8RukH7@w>@a?GKL8q;#o3Q zWi{m`3D0lY&XxtXg;R5cY0ozIPz+1$S|98X7q2?qEhF5~ZMwi-ULk|;3E~rIEvpq- zYA(=?TwiftDUCO`Pc6y6EVaosZa=o@n3Dv{Fx9ARKR>?;uTzCHv-xTUxcf-^LiFuT z+v!XSd}^-vTli-|fDe&(fLKAY>dBRx`DUTj9tH&iJI+C{HAg5NRE~@e@uXUv%bQ%L zh8Im z1-1mN|RoIc`9;&7Gy-FlP`>(F<-`6CQCYbV=4m*tW{&O!0VXzdiG8nrM zB}5zJJ(;a{CEP;p6hOxH7>I0JThda!`P8tIq|I$&wfj>0^-Z+$q--WDVs0`Baub@9 zacYC>N}8R$xNG4ykz5-_&tkjE2v)ZvrtnnmT^d5^qd1UF$Fi~8+O5rDjBm6(y^Pt5 zNFwJ*8E$ZQit(A&n|XD%Og9>TGah)t$m-X-=D-BgIXXJ1$JSx+FH}4rzv{YUd|carchF!XRN@5`myF!K zFLcgcHpe^B_-DkUBHa?2%LecII`=QbR1bu`T5mf@G7GUpHM}s0)XXXT4R2fceG6+k ztJJt{05F!85oU(naU3cy#jifzA$j(G=+nlD_hj*Yd5T zB*#e2#u~TM`)Yis;+eYPM?}__@Dg|kXOQkS4M2jOzhLxSB#gr0u3NKNxJE0@hTch+ z^siI6?<>U%$eT3gXVa9CJTu6UQ9=!r5*I=06MgRaot}N~{g$PWc);ZPGgb8P$lAK> zslp8>rII)F#9CVJ+(R2;NN;B)EL~)scht$b6#F5{eHf_VpAG#qQg;_sH0)0iG#(m3 z+wgHjVds5M_wTT6OT}w~NEixqH`PolZB14(io+ETK$2lFrQpRu?*gy5SF4<5=DCj; z6qV^b9H{zv3+ZX-HC7jLS4og3^z=NOkA>KM}b?I}Wuo-MO^C4t-Qy_lh6Dr%fwI%MDkH!Ab4I?5wuCCR;} z!g^G}1Icbsp|e?Xx@o6oe1Y?y{uflIyw@Mf(T=-pIE#**G2I7xK@GZsh%zR128yfV z6+WuF4IZO+m>w53grCJ!4>oxVcO`LfKsSF&ccl~<*mfSo_sb5q(-Lx8CvvLGIH>y= z6Ro`oo81`*?t=+h4TZP=uv~WhW%S0@+A1m8!+A#r5lWgx=y|BgwUy``Ek{cAwF{%i z(cU?NW(LvQW_;K4kFTZLbvv!E0_5|dO_`ah&)~!unXf^1z8~xn z*~tT!)hgD>$2C}yadB}O63kc6Q3-XTJ$=9M5v^cfHyvDAS$QHVtmR=?gxn3#D{A1o zhkHAgP5%{aW-530++-@Ym*)lS*QJm5K`*w9&7x<|m$Mht|A0D27`}2=;y+mY8<4Eo z{H)w^f2CKNt`Hq;eduHVJmaiiFZ&I_^ULje1b_}uS8jD*J6g+kr=*v*h9%(7+T8oF z3i=KT?7Uu>EP3tHq0pgwTm*efvg(N}R7PzWWvIRCj(3Id-)ROk!#p@UK75WO_%vK2 z&)pz!TVQEyF_g(Pl)-%1z2pvN@I+zXrjDC4Lr>fwwvXYCGO7gGlw1eKwalspq2%Nd zt0d&gBg@TK-fDBa=H5PNwItFBMuPULFSnmxC}Vwph|N(@-9B7QAMe$|k0(uMdtfYj zXyewTxiQA$bVT)Q&eZ#ySu=kKB>k}*78x@1?<3^;38GTeeWJl z0i)*p-PMxEl?iT652oY4YD}s0_y|6CUn!gb5AJM>ghdOs!lol}*w}a&x*&qgu``UC zGi~xS{dwZRK(TmQ-j+}-5LF`v9?V-Gqz|1x3>X}8m|Bf<@beoM>$xY2n1;yjmeqNK z+2(zVzumKlmo(5yv%1QYlvA^LR|aHQqKuunz?#p{Qm5Kn#h~NJ-}lr&YOw20dR5(^ z=if>k(h~!`gMW_({#l^{jN<^9iMnoa_Eb|OP~q)0*Lx1>^M8+lr~8I@rq7#ZpozjynkR;G7ik{%1b+yx+2<_9$>?M2e{ zR3IMsU2*KE@~f?5g%DW)eQG2+RT(yQ>alM$8LAkD-fcu}c6jxLZJgL`H=H^S3&4xX zreeF#cN%4Z6Iz^kjJD6DCLm8npN?9MF%QcSLpR0-u{idLZQPRm7R-i#+YnKIcUHCi zVetI1aoP)2im!sgyg15EZA%;Dl`4F|Gm<-I{~)?P+Tc`x^}?*_enZbhtRN;oZ3zXp z*^jd?h#PuTmM80=l-}nvAb5TEZC zibo7wF=#1z8yS13Vc;FaW&9Soiq66o+HKS{;C97|#}!@;<#&UR7XNGow3@x5QyhFy8cAtLANU8s3%|CE1$E)mi8qn%d{6gqYX+y&%7|E5%y?)}5MAG1 zAz|WbsJ)?b61%ApFDf;H$uPbXChtk~c}k3kT<+ITnuNlYZ379tnzQgs>oEpJd6R`x zxhRCD?Hr*0H3$jU2YDx%I+m(ie0@dS+uD1FRC-KbQDMquD~N4mdAVDA zDA2U2rm(-cZ(on&nxYXt>J8!Ql{|@Q&3HSye9)<`z-N`Qxp4Nu{ICu;*~Q*I6D%h! z>NwAOEFNYyCrm<7K|2GF7|wsDa`##GN@AQz*jTYxJ>)i{Laz!o1(t8SZeRGB9X2=L zIP*F%A3B#Qm*_dz5O03+J7LP+<+Oa^oL!=@;9B|F(=zKnj*rNg`34&o-AKPPV`7|) zHW;D+?$%JLiauavJUi7O&TQE_d3Oe1IN!C4w18Z@&+TO55;MFxn0a5J^uKi=>(1RZ zqzZQhNLRF28Rfo6vg?j5(r9||)RMt=#CEt!^wMryB(D?noVmbW0SLW(&h;LI zgZjfXh*Zia8{9*O^fP4eEjqqRc6nJ7d+l$;87iwL7QJcwlvw@#DYmRHhkvNxW1A_L z9VW>h>^n8;IpNgNM#C5L8v<v@lU@JD z+EnL$*h9YW?Gdz!%eX*lSK(xSASggUU^npE^Qv>IzUgG^0aQ8C7w>52n&^-eK78VaKF`i` z^A8u1nN`Lo;wffVO5#Z?TWE8y)ob!f01*7(hlpE)OPz+VH^#Oyk&RT(sMY5soKLCD zbadhcWJff*1bQjHto9nxtt7oaGCi?(Fi;@ZE8Io`a+_w@nyYQQ+V20Hx)d#a@^X*|n zwNpaS#;hD?^qH6K(XdJnqeM_Y=TyCGYDFWm)m&R&pxMAD6MLjDLINWGOMD7f~h!p*%Lhm&2z&yROv^02l8~vDBaPc{gM_%_) zYPBk*gJh0t38BUA_lR86&=vZP9z7)qa&a=}p5G3r(H`YEW=(}JY)KVYpYV~PbUz%1 zq?!Bp91l^Xrj0Z8O2@;`0snOAXqclU72O8UF|JqI1Ax+V6ti(_@S?Va} z7-_|!A4GYy&e(;xS!;uS_cRxzeC-wPO)du%wpXR#yNR}caYN(dj`wacsl7ps2 z(Cas2D@HGhO9zWZNJuEJV1c)n{3|LLj|O$0%1cF0C%9>@3hA2aQR*Ctn9}telpmJp z>DZz6)}kZGG|3?AO}bNk+=|E~I~Z;YOB@ya9vy%XY}VC3S?ID4kZAiwpFv;_w;0aH zuCy6Wtb=a7kcGAdxmCA&DT~sT2JK7@IN>XYW8aS(VePTrBnJYLH>xQsb;KFm%sM`9P-?7 z)7)u2!cOjW9N0@Tb=UM(Sg4PNF7oPE8;C~DIT=Q7>9UVsmJIeLO|mLgO0`)*t2kcWhHpQNbSQGwRX;a(A|hIJIqAqoMC<;H(ug*285-d8Xc*&RgYlJG5z_k7ak& z_h8ldUC({HA@o#;5EP{#IgDDqpceKRk-LLGYSz8VcR@W_Rdhrzj3c~%ELmSwv`&on z9@jKkLNSZM&HG?lu8J4l>eaTQO38zFk)SLd13=zl?92MdVF3GrXMI>rnwfxp9Z7Pn zqCp%7*{Zt!z1R&TF-7l4V8EY0FJtqjIi<(3X7rZTXU45fM@#-C3 zSJ%0b?7i++IM)~}7jY+HXGnRk9_oVPI^R<|^u4H6hvZmKa4lR&9N=%Uz2Q-hMSt|U zt5@xXP;ekdiHlh1fEUd(ktG-$keZsB&9>9sp*pyuZII*BSeM9$qUd{3L@?{~Y*vvf zx`>_Xc1fQan`!uLmHx~}uq4Us;U~dZy@+P6^}6VM?!avyFT&CY@PmjZn2>(nB6R77 zXOJFqDfh_gC&0D(m4}ETaDBZdBbg~ zOCIk0#DJmj=%xp+F3)+%iB2O+U^XL@LIq{icC@sUKO{ZT(vW8iCyg2XcQ-k1z7xMZ zFjhK(*+)tS(LUNR7)Z_!wpMg>fI_2YJpsc!rXW+o*qd)PS@=40qTI}~=j6rml00!R zEi&J>-#FzQer<7ctN!@8Xz@lM6FhY^u>9mz3XflGuxwC1HER5rjC@IJU`w}pv^NUs zF`6GkkJoQ$ngoOlWC;<)!))ji{lnEr$~6u$W|pVG40|^j9(5(;_PQJjSYcAx=_v}y zMIBxGjWYN`&uBCg;{)y1)`oK;4|#JHPfLpE|Aj6rED-BL)E6Ol01` zu|(uO7$4vx_|>(&1g_ICb#b~vsUdLV4f_Q(r;G@DB0M836@j-^f1z^zVD(b)|O@_7M!+3)Ll+W+ag%k1ciwB6ua^5^udTi*R!! z!#PET78Hcm_|?a&HTqs-+#ymi9U><bu$`+KELW(p0;?dso?AM2# zvur?OE!{^oCegLe#W;>oni?NO%x6FmeeOH=;poD@!5Y}Iy#^@d5~SBES*Vi9IC~9Q z)gF=hwT#y4VQ>ODhk=@r5nXMa%ob+q&UB?`L{kEf@5&}5>de<0m|DaR1v zMLDgNVW#x-LBiB7c8OrQxz$aFW#}pIvuAQ$8ijrI(?8xWV&ObLKjC?8CzE(IYO1%= z-0F)6B!k}4=-cg;^nr1X=i2}H(Zp(4I=#C4 zzr)2Dt+Zru?pX=FTA=7Ns+Tmu;Ag&|St=Yv(Y>zra*qium)Uq?np|F9UXv!d;l0<2 z8=0V(#2EyS8^P!iVc=6PykT}_Fc%6-4Jt&Ov94S+))>}gW&h+u0he3#g&p;#2YDP` zk33g;C=Pn7k(OL<&x864Ksw(=?e#);USi>ISehG{kz4(mWCGzYyJHVWSl^Vrj|9lZ z^oM{C@be?eGk~W%#<*cYu@`(^NPV||WeRe?66Z{7*^a?+QCN^wFHkh7_Ci4{-gu)E zS-{DEBHHo+u6?kKSBhNED*R3E^t>!G;JPv1?)KbrAS|BE8dLP*G~_y(G6wH-Ziui zJQmh2)@zk)@OoTXcXEDSV9qv#OHyK(h7P|C8s@m%fgR`i`sa z1UEJ|K;KWhwZQ-Ac!TNYCqSXKSkG6e-`&kIIq(b)m~dxxyitB7k~}TxcN06e(k-1N zBF*d6QSIxG+NwRF3)Iq5ZjV8|*_B%!H#G}OL-O2lT;1m6>1U6z&5Ee<)0}klj-&VB zwT!Rj?m5>Buf85qLHoqG{R3a}R{@z}V^9}IzWi+PW&KiC#r+Q|@PDm79qAvl2U2R* zyMNKg{6-$_?ji7qb}PSLkwAQscx;%lFP6JZ6N6vQQUYqm0%u%r?iV*;q0MO=6cBZY zD2R>A4hfJq?l$tex)4sN1_wDh1ixcT1?G=Gj|;{}MdreeMC#nm6_ zxYAh+OL6dK4`|CWdJ@VzH0gf}3jG+JY5c&j&&NMm?itr{=51(El6tZnmx@3%MkS)Y zeqECtbUdQI#4bhpp7XXHpM+DxhX8wq*Kdrs)pJW9`}uxp$U3(>cq&Ra$}3|kqho{^ z`0;h<`$kH3j29XWu~;_ne94LpkK_DhmQ6 zyL3QOPAlI>zAL@;JXP4~lQuuAHoGBbo~tUhUCMv*wVK^zJO&ra4vvoL zsL^!0+e>`0(XgM;y`|uVbt7v0r2X3Ljt>5XV?&o;%fYG%^3!YLMiSx=PbY3WMEPn( zv7hokg5!kwZ=CX{pT&O`0NuPl!k z)w*1hbJwliUkZ1<;Z%tl?bOoA>-Irjeo_YfH8Q{CejZ51#`tkI5RoKQtR5@(!D>fl zLSFS=F>LYRx89}IbwWJr7!d!oDKt%JF128!np^eqEFJ>QW+b1MyKX>DykjalBnUt>qN&5|# z$!iQ{_mfy`ZCB#ZJ_X%B=2IcgDZS5#KGvnSrf5Y(^{0BHmw7_@(%_}Y^q7I$e_y=; zBOal9&%6Jd&Hx`~hnkxy=v~-{#vikIn(cip1oKi(! ze63Iq#&t)8T`e<+A*mpnn4256{y5`y{1Q5z1sGEGuyGZx_SBUot1)Mqpi|$n8EhK7 zAI6W&_}&9V9g6_?vW(ZGS6h7%AK2K+YEpzq*P-UJKQV>|RgXz0h&e$uH1_o#bmt-94lj|lg6pB1j}j`b$}aj;QJ z79l=bOB2a!I14(q(z_WSLu#BbXY{78p}~DvrL^LeduW&#ITegb_pPV*eE%=#bv$N# z*v+5&tKB&}T_&@Vu8;A2#m9r&kCO+@wcw@kG|SfOtMfpQocVn-yEk#8KF)R%eV^js zGy)Gt-kxv$53M=S&FqwaLheq{k0%3e$kWqSU&qrQv&VZ+{;vH|`_T-R48{$40%_=O9E0r}~59|Uc;3|u<$$lHaAXpO;Uwx?LV$;-Vfnkl0K zRxS^azH#fRR=wTL3GOqCVKda>Ta~;i49v4o%3+%rr9%B`_OYb)S_cT4hYz~Dw@1p7 zW!-m%RM*miL^nmfOE-_8QK$wxp3LxMp(GQu*xf-sf2lv6O+2@CS~ ze8j%}H1qdw6U7cxSDg$bAtsRXmAzK_!@9c}(+$4Y5$|-mog-ZXZZTl=cyJhOoR*Vk zv$UtR{piP{#T-69S$sev$V_XwJ$lH{yP;9(lTOF40JHw9uFP3I z>DoKXOn@FVv}oL0Sz2)gLHVkg66&&DQYXJZha9Wk1%%QDHd_dklmPU z-4}+ZbhP>$tPMU0=w3V*eHx+dqg3d#boI_7ncJK%S=2N34F3TgyML1J61#7lqrIqk zCbG<(n9ZO;PQ*-*E4#S#?%zN4b>$D`?KI*(FK`oW<`$Kxa(f^yqgh5RH%Dq59%qGI zE73f7KY_mlOg(`()+&hdL|+evKYqBEFYoo30q3Km{lRE~D!=32g9vJ2i{{)!;8X`9hc zTK1T!+sVq&$)YETNWhllx*=;yRvCQ+qX4#7oGwo+=EMgP?LC~%Hf7G12rzJU(wb)^3YGEo5Esa!U$FZtQptSCCAMsd6~ zYT_sB$z{>3){AV{ok=CpI@hSWAC?mYcnS?2Y97&W?^16^g%H!1gV1L|9lbX#|l)&!cf3|Js1x z@XBk+w^zK)cCUVQoOKmXKNd^ON^7Xsq$gfdJIclEbbn!MF=~!_fs#x>CpJKejmhg* zTOD+eJjR`xfYtk1nebl@OaAtM`TqBSTKg4U}^*m&2(uN!~n_Ud;LmB3h2hHI_}36q#7|}xb~zt5u6Qp z=;!q8OUc{Ps32sUBU<;w}9WILxWSnufR@x9h3;g6)rVAiZq(Vi+@$x;&#ujCHVz;q1urGi)>mkFFE*CT>xNRvyJY1 zuC)deS6r?dM!R?!82h=|RauUzI*s0BT-ppWG&gkC?s=rvW zAX?l=8DAFH_^&R44uMC)p#?iT*eIb`T~VS$;2!w$LS?wk@o7G=k?sArwiysi)=SR%@=!Dyxx9=~# z62rwcBEZKbrSMJXp0&Sc?KtVUvefzvmQVrYCC(@I2hvHh^b$M^l^q6AOlPT=eZ|GN zlT@DTq2-~WP0Y&skB%$J_1uyC{KPJaNJI*gqLnTk&cY2lO8IRP5UV` zYLQ-SlBY($ulX|^es}P@Ujzc9N9E@)>DXo6y?l#3P47nr;NC~mgcq%q+c##eY;Nmglb!ALR5*2TVuB&Ow>2>W zxPmCBiaot_NQFrj+0Xxcciot0QErw(+=ICY@ z5TV0!l9*XD&kUQWk_El}!>I)6ePkQ56X~rS+g?$`=hjYWxyimoGl z34)QBInvKd!YZ0Pu=^ffECe0}tFLnCz2+zKE7^a4kQiC7ffs(e4o+Qz9z%>TVVVV~Fg>hzgu5TJrQx>Aobl=|SP zSgNwp1$4ppaB{TsHB={&PZi06#mNh4m7^VEC<5k0v=xmmvx#dtM zr-OvAQpsd6>en|LgnLZSZeINrz788wSna{wJF3Hpzq(vsPg)B$eCo&HZMWxUchW z;dF~WdhJ#1ZXi~llrHd;s8zT#sb)5dZcT#|goH}AE1%AzJU+Ue_r?;NH=m6aNl zTUJ4;YZmJmBpQL^bv#V#djZ7$pDe51J_fbMFk-CGz?AP79^BRQaQ!iVoPlm87EjPO0bziQK z(#YuptnMB0AF2MW_(Y{KLeP!({;A;DS)ANP{yvj0=)SzXR1zc4Qix;dBS4TZhTZY~ z6hgw54QYjJEf<<6V%H_~%Z7dP55GP>)E-)$l8?b|jIT)p_kB}^8``z5QcmRCX^4FC z=Z@P@5KIzv7H!aid`XVDX52-hMp-PfI&QD7&3(U{_F4g7maNH^LP+-4U$f|gn;@aRLdg2-S z+!qeGC16veFCyI)ECk)88+G_(l)>rPyt~%l{%oU@c&hsPmG}905SDI%g;KqW`$`ox7t-1Z{atS>S7iE;g7E=kZqy?|k^WgYadK0GaXmB7WB!l9|v zjP;MDpeyUwQ?LO``tQcY;>BEK$2X9+Y||CTky<7W!jQ74>C2ZBxN~BJF0ss2PQUAF zd-GnpqQ#YFni~Jy5wPXo!|Em-oWuM$z4%lDL5@M8T*v-9s`dk-bqUTT}27*40;H)WXngC@>m?o&}rrCWYP=)|CD} z58BI}l-oT7*_b$l_swsIDbDxgC2(1CuWe2rGP3EGJsGnFhB#6y35khxvxx=KJ$cVk(LVxehqnIt; zh$_3!Cr?%LocFg^2f97k=%1?YR*D`+(MPF(C0op?D{oqaYj27^WiEB91KKrANS))j zWugt9$Q}Aq+AQUF*CJyC0-Mw3US0L=c*A-#sC7Yh=rX86oTqyBb3Wi0zVD9h{d5bg zQ%A6-9UmJKRoHbN%K^5_2&0|rS%t;H==k-p9^Fbm8ok)Q2K;FfZD>g;M%}2dY@-z; zQX1FFiGKar(fj4BFxSkDs9&%S|c)uVs`bY9a%t7PP&aWT}g9 z*lh1#9Mwyk*>#N+8a>~?Ji|YbyKtcxfTzmGzH7=mITpXlw3Cw92qs>!Q=k>Q;I7+r zO#oskcGHy@{$G$#p!R0Gsb4+l=nzn$I-gVOHBkAvqwazNiW*VvJh6VvC7xT~!Tz%+G|l_vk*pR$r5oty9Y+$0)@J!LH8@(qK6X$M)Lt55lG-lTu|R zS@-v+r+#ukBlK}#!?Pd1eAA4-lfnAz+6N9b2mW}=2{R3}_2zw7Vy5{TP{qElCwk_- zzIre{*UPZIIZVtf&toeDE`e)!ds|x<&SP;Bd_9$j!nQsECee+Jk}2L9)467hp$QXF z7p@TDRkk-3I-dxA4S6=4)%XX6ZTeRshP1*x@bUA5b(?_wVUPfU=5>IZoKX(e!W6|t*$ zYwiSDSi0o2>nt=*cDIb?{5%z&%y0xLceR~tkngHD{n<2u)nbu7FRo zu^(sBHXM~c+MH#}fL{#dmGut}X7$E-@Oz9{eBA(g5fPLRcZvD&4KvZ)5?Orui}M|K z8k?yKi$&6ghC!@ht9zO12X)E`B9J=6RTurRos0-kGv6Vtb0`P@w0*|=PiDvIEzwS^ z9_E6R3$eY^7RZ9}#v}9Bj0qoPz2SkMK25UDT%Hpi+` z`og^*og3Y$>&d;@loJI88@ozu8Y7oCN}9L~ds6XcL5BRtn8 zJGx7wtoSF{GpZw(D^E!C`Wp52*DSwe?Bh)5^`RB+A}+pw?N~P5tyPvzY<(15@PY{* zKd0m!{ha?vEbl}_=tuI%trhJLd`UMf@LwqBt(o87!Kbvv%*)8g*rMW9EV(s}Dvb`g zIzLPMjFWJ;S7nm-)5nh;TKj^2aKDmq7x803X*J`<-JeE-vW{6YO8x!M?^lmXSoc0C zqDbeh@c<>uB}KV@_V|$0`-HiZ+Q|-C=+1JiUt*)=F;F>Gxq|e4+G~EFTnBw^Jo zI8?C){W~G)-06F9!jbzztGxSpva5}Y6}4e`vXw-6U%-Fgzz6UyOmO_1RLLjaR`n45 zmAupO^X8xA8J>o1)k9mp9Zhd9&>S!7^qYdW42v)V-(qoLr?|olq+)i-J zOt~qDic(pkA-=mxa;f%`JN#mAqra@ngnOdeu4E(^qK+E3Gb-m6-a3H5M^4f0w9^GQ z>wxm#Yrn+{rmaO{eh;7ZkpK0NAY3*O289rt#l zXYccV-(TPL9WO7g)z5rpj5+2Q%K!%1%W z)a})G6I$PnxiSDuo7MP>{>C(3D2$6kkooYfR$m@W{7F%*cmli0bF@LDIOcZvh~91` z4w1zBK;jW0^xdn}3FKy7t;rLHfOvIBECQS9Awg#WBEiCCVhmRFqWAIBNlZwJtSqO? zE7BM{81?-nTfBN?ZV=&SFuU=v5EJKlL%CjLqjr@Y-op0*C&4AGVXNw6!A;Sp z2Zj@0^7#9WWTfK)cW)ZBM@_m9WadlNog>_6@8C=fbXEBVwj$}ovSnnWYR_raT7!>n z6e*(Im2~Jzdjf6MT(YAxiP? zs!q!31M<7<%X-~btTI%!I|o!>Q>lF%O#>j$|CX8238T)a+aed*;=+;r5iq%LL34hy)N5> zvD4A2zHhp_XhCe0z@1XnE+sV~(S$XpdV4mJb&I2??h^1f@xdEgHGH3rl&mb7qVFZN zZp~amvtT9(OQco%p(H)6=dI0KmJpP+!WHf(nLmnSh!_e!k8Lp2*+EoILPRusH(P(M zEP`2A$F+DFUsa05uxbZ!y^|7kmG?zn)rm@-W^DH;$>|dEwnTKZMb|y|D9i%O^Z;*FFCn zptPOe@QO$;^SrSn>dHIJdxGnG`efe5v^eijR|z+AWD?jPWMs~{yDi>aO;cJ{VzW0b z>lBIsSRbhq4|my2(^WkK-6>;-MJ&v#QG#=nq#wCQF@~XZ3RI-z@6eY3Bh1UGw%?O@hSTZFuXB zHj05tD&9N6uEkvA=H*&Jh^a8zh;??1& zK%W_~L&0zZ@hSe8JAeLhx;VW(tdI4lnfqFO;l@jr!(o{=u1TA~fe%j=H|Ba)izm^s zzJnR9zA;0P+5sJ}ax1eg7{J~0tJ#GfJur*ung>J)^r2T0?i@{v2icg}&0nf$ebo?STcwBIAa~g!~86>eWu+1(tk^10|{jRm=7@ z2a8aJGIRCNsY+X*vJlT{k#qFWGHKpTkuIV1u#JW+vZJ6v!Lqv0uPY=GP@B6Z)N*De z)QTnUrX7=51Se!;UzIaKmXMuzARPhSk_&8Vhc{#BHGzwrB2Q(|{1FN#$!d;5Z9VGBiCY?`4|pwehxqSO|lP;RNMUUGlNY>9`~&uaegdv6OSRW);^9f!c2hsKC{ zW$m34K-)=ZW%*Kqwqk<2CDjN;JX9fx7b>%rV7T9wl>)r?)$NNBArD5PR$(1SI5pM9 zTGlhs3Q%+BRN?tUhoF5|E~^Q?I$c`Nz`7hwWmEMfFGsJ)ZW5V4#rPt>Ge*d?3T|{j)Trl@;W470@&2t)?Ld;0!k`C4NDFER~AXuft8t7f<0lSsK25B1S*>!S@CR&Krb_Wc}4 z5c%Ol-wi^1Lsm($2ZWIFc&|}XNl5v&$_(b8cb}?Q+^wjc2bpf;#z4rPPAE0t#3IXxun64XJg6K6OIWY0R3KbWgAvXGA$#VjACeK4pE5OH_aBbru(buHyl8dAy?ggU zQi=`Ac4Q;E3ukbGs~+=)7#s84?AMuhv(&5KR&k3{iOt6cx2%$FVtFl;GgW=DYtyU~Ckvzv*h6pcAA$4Loal&Kw#=PBP1PTv400hf z3>K`55tjeai)@uRj~0hlQY?MWR;-ruHueu28v`6S3>Kq&Rm$Q=;Crl(ziOp1o$tIf zQQH{W^#Cmn{oo~oQtQ|ep}N?oz?;!wXcy4?b{}kF3t40BbU;ZpyJYA6(E4bS$-@#c zUi$cmdOi*L`&oSWN)U;xh#@9>WX{`#lrgBRv)PzFdB*d1bW7wqB}b-I(` z$;yAX%*U58_7PzYKUUSxOCTFhVzM(bJ5gG!yt~V+$Jne{_}8oar$0{J)}lmk^CQav z4|IQNSSu%*xEx6>cV9;!DbBb$KR-$F`W@$7DiEuJw z>4Sf~Kbr(_f85IfMP$ERu$2{!*a4MnI2+N6*Y^Lqs~#XSA>cIU@($*_>|K^F_{-&f zzQ3%~`|F3^Upk#{e+|az{V`Cy*b=E`P~)QR=%jg1{myKtRPk@0IP(SYbd5^rTro5L z;;$d`K6mM;^q~0Mc9eT%Td-NTfU4i`HAsJK`SHv^%WYN{9rELaAESE?jayAmTq~$k zec$@3&fB>@yZlPXKPk(f3c*UA-e%O5?Z1BH$0H#x3~EMa(XwStvb2dJORh>WZF(TW z{OcY3^_urI#s;+`3q{Cl0>+fl9naya4K)Tj4eiG z7@Ys9oBrys|9T|kd)dGRbM}fhqtD$xJM+&^sf+0KMW`C|Hs6_!$SId@#D@0VE8ego z!X63^uT$}apvCGR@p`NL(*;2HRDdag^lhO2O`F5fh|V2N9nlzk|E`+uvaq92sHE@D zq#_;Q8x#9-KR_adkC2;qwXi$sI=9VtFQj0JSqbJ$>6Y!*DA7x{IX{o4aPMgI57|JJ>K_0=Db{h3nS&Is{+ujqQgLJ&# z>`>kqz;AV?`e)l_py^#SLoaP-H{#W!i~g2k>-u%Z!a_}hj?B{YcYLn?2m<|OB)rGy zu0?4QbXWfR)?Xh24q~~`Ob$V&^qS3ce4MbM!u!9wOYiHz^guV+e<87a4ZkQm^yy>ER^QCL|@L zN)0&>0a}L!U(#9(HdYl`T`mXto!$EDF)r#|y-h{>o1OHh9yE9*l-% ziQSIk=x?{5<~j(6l0!&crw)|o5H;}qZ{I`>zEI$H1anQ?e~sDsGx4EXlky^UY!i95wC_i_gK)2^=Z&r^x&`YM_ zbU)*bq*n<&sSK?@_fyk;H{CFvkXK7Q4V_@$v~h`Ua;G8Vy*8x+D!-_Yb^^!TceSBk zXF$bZ8{h=8!2AlZIf!ScrIC>|vSGX{6^z#!A*Od$t2blvj;!L{HoN9!lKt5BK=GkW z+0r<)1q8a1g%xsDWcQ7yvHD8Q2voHp=AfKKc4u{x8IU$cSqmP=5h_YJbmlq8MkX_0 zote0-+Fn;W<2^3Lof(QVPlZe|9$&t>Wekmv=+C8G;awk|A_g-h7RVMt$;10b2&(f%T0su z=f;X_<8)4LRog_3E7kpn5@JD4lLlr?NzXPrEznJdmXvcMqd*mufk>r+NRLTMX9PF>nV>Y z#|d}l5h@eRiNiZi5&|dYQI~YCMt3mR$utKMF7eRZyZ3l;0BW(D)f0D@=oK+weFs_# zVL&jqeYH+L90Z+VqrAkYs#1YWruSz$q9bb#cO+$Gg4~lHTKAbmAd4Zdq1uO!vw`Z{ zO@=2zWuKedkt4-aOe)(sU<3Me(42Wi?PIsQxY%^+> zd~8uYDu4W3zno@d$E_e6Dy^G}4@fVsv90*x5Pw$J{r;%mMHX+jQQ%D9uiOAO)=}F^ zCGgCI{`=D~Q4A<7Gcmah*skg9tki8Y6{1(w76?vS?aC6nx*d(vLJOJth1PHib3uGM zl^74yK`RO!>ka06(_UoP%K1*BYlrO}J~IbP1$g5Q%tRj#n(*Y?22A?La{0?R)&Ld6 zVLC`BNxXghnh&t+JIHwKJxjXcvSry2Iffwk?&vqvp?E=8p z=lBy@u5r^Pv7p=3q5(Gx5mPNENc{S-YIQc}g$#lWNEcCA@S!K9JBbQcaN~pdXh~bm zs3icycXFtloJZ$}*7WazF5a=7OD^va#ub=vzp}EG54Y}&TQ&IDb`uJ3r!|3PcEkA2 zSi@-@@3gThJC%^XckSPH9$+bjW-kIht+r@YElaFajwRfY8rO1NyxzR_Q!@|{ozrSj zJ{dpFJznV$E>7mriiv%P+eQRnCM;N4Q>{yTB56Xa54$yOIvBYSUk$rV^9a34lVbw# z>4)`3{O)*su@5;EYj}BKW^R4TT;(~A&d}E(uoM#NCt%d{8+Q{Qz{Ep|4X3eIrC+@G zxHJGD_W=+&2jPzWu*jFP#4(KtH99_a9=Dz4j1-UB)zbD&Zg{X`LZGzv~N0Z#YMZc z1VrL$_Yb6LRr2CmoR5)7s~m$5ENiptGc{y95)OP@?C@*lrcelSVWph4FJU#c44aoe>rFb@w6fno?j7lyJ=SJgY9zM}6+C-Y3GhwE|@zRFd~evSyb{Xii{C6_kVp+ct8u4c#_9`-cV0}^V# z;ugP9UNb&)Vhqx(OwqcYiF!+RB;#=LSSEPI=zwVO zW%%S^8QAzv>!UJWe0!o^?oqQ=4;G4S)J;Mst2JLXZS z0Mq92F=B{+y-6SH^+NUiIg3}XUrWN7w9Ty&P|l!gt|w)81p(wwM?^E_5+Uf}cw9sR zN7{+7Jz#ijbXRLPmI~@dgzPM`;zKyd4;PG5inBOO?F#vhhu=FOQcq4NIETmHw~I>v zBXtY5J8?M894U)vyORHCv(dMPxu9-6GdTn^*i4A?Yyiu<MS2-;vIi%Wh@s0#KTi2Pbn+wdM|T zc11ge)dW)rOrP46L|>(3-RPDakjsC)w|5CCm^LF-XF(ezROUg~n=T$>Sn zEQ2=PGNLpZY-m*Q&bdNh?WNSzp1C5uvB+-V9LQ?1vm7pDr9`(y(nuH^e;CNu6bDiU z;T0p!%VuFKhpTlo3HE9o!-ayBBa>0Iid5NpTfmc+>Zg`P!Ww;XVnqW94w2$MaRs%D zQYQVGrFK=Bx%5kgJ z%1?Y|`d&;|0rPhtpqK0)-4k%SxcSfp8JEjO)QbOu3&8JmAvvUR&i0&ewLvw?Ee%6a zY@Qww7F+dw86C*=v@~*nqb*|4EaMy5ad}eACN3%}1(ZZ(>MivVwMyBx4WqOUFUq{x zS^ykW${e{vDSv1+BSkz0SfCgH@r11HxlJqzUssG}Qz1K0FxkZab={MoR4O+aq6Q$aNm@^`Bl7z_ zJQ7(R-D1|c2jqopF3i^o9`W~{n`M(DvR1{VwL*?p^>FqfTR=KrZXcunp1^UM?y?)l zBHS~LTkvjgc)`@1Cg2CsL5Kooco9+2gjMn$XX=%z=dU-QIs8UFw#s|M7n?Z7i)o&D z;M1#YJwQ`FyD%_x$l(|)W_keaNl2WQ7as%9(}{nViTQxwD)wfsML=>dIpWfMk45tO zYWcNDS)wK<945G8D+qC>n?NF!J@KRt2l^qluT-wF% z#Z67!jG>*nHCMub_+zVu4Ssk^F#<}BSE4K|=eX@_Q+jq2c&3!{o;(6X>g3>jvdwYD z{-^f+F`5`MmJu~wxwvPsqrsV4g2QyI_r0I$+ zay!=@IIHZ$f|G}=@4bJgWjll`!CD!0|Ebml@lLH9YT2c;YG|?7h&!cVzM9(r4i)D1pdwJ)ecv=|6GUsa zc?QxRxoc+m>j@kpZ40I}uHU>#DVxYy*s>u(mTD1^o5aKMEQIJo{-z8xicXmh)~Nn{ zIEavKW-Ghjfk{=%!#TpXFU_XwW4>XdZ*Y;rawR3A^3KCaGoG2ea-H%HrlskL(iR5* z)1TR&ONj>OGOEMT^@skXXHA3K#p(HT5FCvmhIa4!2{qhR(Tjs-t$6Z$v_536V*)&O zQU{H`c_n2DvrrqOZqa~OMtcLJB^ES5a6U?57CjF56n7h2jD*hq?oWNzN{WV%iTMT! z^~wTk(iEtGue?eHeC4_C93Sn3PCWX`d)#;SKt;OYO0}~9B2#Ifkp@WoKK{k^uVbo54CKH`P@5D6IHs+ zT>uCR{2>)XtS(!s0*JjFKG30`omRma!GRwH9;oQ(`rs@ZUxaZbRwrtv6AQ$o7ewF! z8D@*c!gObXG&cD{Ay@Q<%-dE7W6`bclLgRwRmHY@--1Z!+Z(H{B%PwXL?rwxEveIk zcZJ=d2UeTUCcV+EZ8ioZH=n6~8b=8bEBK#rNB{OTDXYFEH7H`zBT>(_SEkVu#jVNy zqM|WlIm1`-pbr@#eR_Cp&5Q4!Zlk$VzRYPc%1}Px;Af0ET@oc4c&m*fQ~)AhbF|UT z`3B|;B+`ypAtEBLt`Kenj5$r=L~vQ@sMkP(Nd(-6IR;WaQB;7O;p3rI?RuqBw!(;g z-t*6wH@^DpcH|aRBikP$dFIOs=^)YLfp6{`!d25H;%+kQj14|!Q=GKhWVBiPdN&&| zk_7GVnDxSV9`z=WR>Jum12GXihMxmYlDZi7`PPoHC})wClkRhj3zG!}N>Dd%oUgU> z?|e75`sGh+%nas^H<{}abgz)E?DBN)CXj&>xn=E)N-y~|h*l+hU0|M`O>~g}0WKto zl(=|@nXuomSq8p-b4V%SyK$PhJ`Q`U4$iYS&iURw>8$0*U9nz-ChwX#S{Jao9Ls5s}+F`N%N zxV68B&j@SznZRuX%vM~8W^HVfSpqN~p9WoLeclQP9Cicz*-chK|6Aprbv;u`_rOUz zp79CH28Z``shKKdM~T(`2*Z!9$a&LOCK=1;%yFGO>=47vvox$(t=(X+x@Fz!O8I8D zW#u3xQP1)lRn2n!ZuQJXtz{VF+(-8^iwK^WC#&{b$WPUa_9ey9D=k~DUSnEB945ZSsRnx&xBX&C z6kT)}?S87~Y)9qx(v0s?L8M_vtn}edioYW}%TB0zzxMf}QE={Wv52^blW8xNtHO8+ z(J1jA(8ziO*o0Rf5XMVaG!Jz)l#hF48DFz94M^BsN?g+prxp(gl}9;xB@nvo7kzdZ z2BN?1aS!w(lOMf>cYTG%c-gFjKE$33zwIWWB-I`}Mt2Mj+n7C%W$Tp(tyz|Ye z?#HjYQrtGoV;~6fUQZw(N&(mQe1C*;eB5`JAApBFvQ-P9;vMS6$6;h#f7S@;vHLGPTxyX4I^p*fD*#Vx6ZK_frHNaD{H5 zOg=hAnj8p5W~fPLM`WZsjPr2b2j@QJ*}44ZT7oz+N`i8z3j|sqD-si_FiTT^H6Ax& zD6wi;|G5f}UrkD6d%ae^hW%lr@<9V!@Z@OOKE+j3?HfzBdTvbqXobmpB+H!-?4|?5 z9&y`a*vt|V$Jbnu>n&uZJv4GDVXv`otf;|LADa!Y-P5eIL}`rFn3a$3Y^MUbjyvq1XHC8Ju*^NDbS!k++DU_#} zm@Z1(^nnyWD`#juwInU z^~Ccd1bUA3%W(9DQv3V90x)vVcvp&38k2Tq`=EB^u+SLLUTbsT-F|SWtu5GrBwiV z9TQC-dG%%O_x4;Fgie{os;leBx!DHh8e}0R|6Y5puz4c-EPA1(cGd9mC+fYC>^rQ} zhVgtRMfr{=@)Ok!edVj?V0pGii8%GBVc=3u9~SD*BwE$Vu|BExX?w-5SC4vkXQCoD zGE1)ADAj{*(ha2?F;`h`MEu`I1-!@ZUvt!}6REhs63e7`cN{J54>($uV=sAcKD9}J z0P8#BjW`@)&QWoV=D^@_OAj17R}Hz+IpZ%YIfJ>1e7eQ_yo9NW=1Dk2NJP2();B9_ zw9Zo01bO?1%UCR>`UF{tDI%5W1W^#VH5tmA#NdXGsM|nrK zX_{Pisx_g@9?3mW9>>}-jPtnm7noN^Ycy}gT>)U{HK3{xMu3SM1E|FJ_$F0nK!PPg zF$-^Hv9?5b!)*Rbq0jPj;PcI1JyLdX9Y3(2?cOdW(_X3-;4~kbf129Y-H3}@^l0Kh z5uyRgQyF+-FdYaOHDp#Q56PT2va@9C?LMli?rty8hw|^d0x@fuVWKzroC(}_tzPKB zmY`K#>n%0i@6rC-kvNZW1H)l??FteH2PaaalsEt)eO0NqwnTmzQA0_FK;1@MOwXz} zjJ3D1uXAd<0q6WB24o=aO%mU=DwlT2d+~2~+A8E2ND_bL zbM6!I4-Iw9&jr}KQ@M?*g81{k)dv9#y0xA5M=!CN!rm63M_?`NVW>` z$jF!`J-Ji_PLOP;o3&<{d3-f$C~@aXSD#kCi+yM@0KZd#{DsQ%=f{zce8_e#>J0fV z4dt^v>P;QBrPF>Qx#9O}*uwLe&HDLcAsgVC+N^&jIONM{96@#_^a9%3N%t~IGeaLt zoatFj%fhUl2j{;Li7bOXdgj!YDC2#sdGQSmkqP9A--*eY3{}HGj%P%suh9<&q*9jF zh5fF!z1j6^OK*#uj+7UO$UEY(9cpCz*~I?bpTLo&`e@j%vAGmk#b)kAD&3M!9@dKn z@|!O}Vg^wrYgxHJ6qJHC_50rAF8Mgu>>VBxwD=tSHn}F;fVmW2@jThj*t2d&a zh)D*{VcPd7-lywl$+5N>$jN0Jv*Z`B?iL8n?5$5locb;*r3pts)hRa~;y!fFkVay} zzTQHAJ4e}p8LZ0Qpf&)(aO6$cn$`6@rnR=Ve%CM(_Q($ezOi<@<@vz`r)z)fB}`KXky@fp*H zw`EJ+r_L|oobfN7%ukzAI>SeYZ5wWt+9Gl4*{B{VckHfenKhfm@rM*FX!NShtu!F& z2N<5nfe7%uLmNG{g)^~s^2iG|BIj&1d}7%~1hjou^?(J>Q!5<9pkH0PE$ow!B^UpE zrM*@ZXx=d=D7x7>BK71{06vY9U7907;XfHL{^l=H{&GE=8Pxf`P1lAF6Um zTQ(4%es)yOM7WqvoQ$Mtb7YR3!!-dAn5=AZs1g#FXx`C8}I)l}_T z6&1ih@l7;9>Ww7JjW;&P`Ro3?A9Wp;hfO`QH=dAJrsHDtQLcRxzmv7VC-?ZTAk2R% z*yypR-+*A~xh$%S2VWZYgszZ&6v$D|1;HrQk0{y1#d!A-LW6b?RO;#*d#jH{h?`1A(Zmn>7*j6(8slEadDWYJ&T`0rO1?1>P15EpcAb6d-4 z;qN8DfApe(qBqI)`lJ}4?;k#}0&W)-xFI&ZmdL&L(p5XC5w&8MjC4bD&jUGWVj3sa zo@GJ3w5`hB34^MIFNOL==R4a{l0G%$LTfcvYRb#o!n9i7&t&&!8Ej_C-Y7PWwp$!- zn~JOBJ%tM?Q@56D44T?3WRPkB+`##MMhmVw`Gosf^2rJC6$K%>Lss*%n_l46vP?$T`OBUrF2lh+TrEi6Uo(2{4Xa8eu`%l57 zKWj{jN`*oIDOd;oiQ7AEf5Sf2~<~&#PjQU)4thrje5v$yQo_8I^Eg@7A)j%xZEd5^umNHrJD?d%E`;bgx*j z@dG=VzwsTr=Wq}=_~&~#vtoby)Efy3jymB1J z(P0FbGxCgzuJTfWU9~%NvS+XC6eE_@o5#BAi;8c!9b?^w4jJ$sRyDB&OwjAQzOp?YyN&5 z`N`b8sHm3kzqcZ_YZ$ON9!qSM75I0tDb(KsyEY~3*B&L;E2ZSfy7&WNqbvj+^g{T@nul? z;%5kU&^8BKpfT>s2cnns6%R-7x*FOdsoTI3r=;|J!*{%gcjG1r(mnv9P`g_@(N{b- zzOlvDBbAb7YgPPK_=H9<=ulF}!|=@|l3fAS!w##1p(4|5(}LRU-%ixuj_QAT!9`W| zu-0~D?G3h*63DZmj4bLmBdJ%q2-{9^lf+MQ_2m*d2MgXB^&AVcPZh+3kn$YZhtvfh zCksw;)=Wo0Y%F$HpjUc`^t9?c+?}Vo%G1qZHpdRJ237kf$MnDsm!T$ISKZ6TfyZ@< z^ps3_kHu*@Y#a(IWgb`BEzrGvEiCGjgQCq<`P`~$Rr@S)2&yff;=02POINo|Jg>pV zsG6&ytwYMHl%p!$`k4P9um?ok6`{~M6h9nORyAKk`2e>;Q75`bePL$Y5wT_XIR4WPlP>z2*#J#~l~HOnJ5X4<7w z1yJemnwrzH&Qsi88*!2JOLhks03sq2I9Fg33?$1Ib!6fXpFRL`0-LzkGtaOLo@CorE{$ z8hgHXtK9x6Aii%}vK#7tJTs>|-6zdEEHp=7P%X7}oq&J_D3(M3f;QOb@fu1kp34zx z_G_l{-^>Mh*2U=$S2|su0+u)vpP+shZ-w@zJd{xexW!ikr?`0&aFb9W4bRz!hV3^I z3|14>eNb&zPr3EnuI^;sbk9kF4NxuG4pR9RUu^7@O58)n$-o(oM*%^%jJCz9 z;!3}n6+iilzj=2=iCkX9V4)~2v@muH*kSpvQ63?PS8rcWR6$A^e&O=X zk0VjIqye!&R02ejEl6&XFc?b3#@xqCa|d4B$gL`6KoB(LC`ct89R>IcTi@>aG#l0E z5~iV6l6(Oe|NRA!e|ZKkcd!_$ETn$li$~JkI@?9e>SFv0I*&XSd+*rvZm?iQY*5DT z!{gv@4ih7?V0SUhU()Tf%Rvu!S7(TNAZuQpT!rNrTGc<2dHk*yym{nNQYo zTpORR6ab`bcj;9#bzf)$`Us1)4PXbScPD!c^>+v~d_uS^M(3?;3mmd!W2UB_1Y{TeFUw5FC#X4vC)eTU^_8C_LZ!>~-K9Og6Jij7e)q z3_7zfMYoJ5SJqM)Xu_Cv1z_7lh?&;##=iXxdP+V%El|Zod&hn2X-pzL-dUIWpG^6G z7V6rq*7ft9-4PrtBbYRadJw4{{13Wy-eYbZjL-|9)LYZ4#-s>hWjk1ShPC0x7WfYx z7-oOLM)sWTPz^>W0|)TQZ-s%Pz+pvTvFRge zEnWbwf%Mj+Gf}Gl!LHVtg7#>{cC_=Ki-Z50?kjqK3PfGcd0_NEAK^dSRFr-C<*iQ- zEdHN-`G2qcf7fgOpY3g-3FJeQ*)s{Nv+Kc&;>p9jH&OQqsZP(_65cQ6ww?L!@Vbbc zau4xWm3K7kq0bEx(EQG?b-E1DjsI4!FT{D{!;|a;;4EOdH4|MVeT&<_+nrokWR1%4 z3Vr1F>(Ujn#J|{{k8L#m>svpE_D3|+G=eJ^Zd50!iTcFZGyE>#BBXZ;O9`T=`Dd$b zkmd!^xr)mi^NeCqjfeU)*doE~4dR*-e$ohO5IdvPt#w=AkO^7g0w)J<7k7rMe?@e? zlPJTuXc&D<|M?ozZr-1siB_{R-{HB*j3~2=0z7aS7-?srJIDzptSQ`z#crebI^&fJ z?;-Z81d5q5k^HU-Tql;}l~Tt?m%Kx)t+5OMK4%*eixBj z%<6Q2-ZmWUTt?mLw+DsE*Ij#1Ux8MX0U)55U2Wq$&FLS$wL@4=RL55fy2XiziB&W^ z&5iF)XT<7QFBgXw37t~$7r>OZTCa_*`1s}7hNE;pR0QB{pH|;a@AY$YsDd?AI{C@R%ub84tA_%?dQ!-B7tMp zUz*w{1`sHQO^1zIUC*DZT(3v=wI&4vq25t5g?A#CQt{MkTuK4v}@+bmx?I~J60>?S)Qg+dTh z&BP+by9b)5wc>TMCb8$y0IzP0Ro$^v($^UPBWN#K=rbHN2E^&(j{1Eqy zRMFLcGKZkF>DA5q^MwjsQAs*f)|37%SDPy2nw7gqMvDxw*FMe_QTY5bG6IlU#b!%e^_9SIob0LJ!gD~ei9)#?sq?`CjfL1G z$i?Y|q&{Ry^*Dg_GwAgslxlV$xoxMbR+};NCdY<*K^-HzZUoDBXZY^=A+f>F^syFG_D<8T>BggxzI|5PoF-C_{4HF zGE>=JSXmlJ$O#oQ=??8*4*hD#|Kc=aeROyecI->$pvh*DWu!9MIoLY!eyLOg0PBo7 zCz-UN;a#(+?3oaRm3-{$*M0xG#f`$z<7=9^gXct zr|~-HokR{iJRQQ5{vL(HPuLl@a~*#`a~xME3}PJ=Ly4EIyEt7Iw-yW#JXnFZ80kvQ zbd8HTRH9x|`)rmCs{wRD87Opok>JD+ykL>X*st4tgNY56N9}j^K<4^1vnySDv_Au? zIivw538#IVhx@6hM}Mv5IFG~84JxTtP;VvT!^vei7WW}zRl6(56=WnN2kDe43))7j z4AyU`*FJxJ8Zu+2u-}AqA^icN*G-(~GC80o=?}n@Z1Yl0W^%Xg>48&bG0I?R`#`xs zrK>ES#rk$1P(KcVh{$G21yg-PHXrbm*gC{C_lYwtn==s6z?L z0E*gPkeW?G^D$;5TdVN(i&U&YhT6V!7UN48E)!cE#6)L2)W4oT=Z;JE;f1m)lz=|_~AP+$`<*lhD#9N49< z=7N$wL>>P1@bDp1V2Dn2d*ROhAkA){8*@oL1t6{%Tz8P+)y|uvy9$xb!G_xj92*EL zyc?;I;!0f`Nkv-S+UjJ#TJfz)GCrp-x%rCUsy)!wcOM@PFpLKiX`4^xip!|XfIM#N z(f-LOF;~)q@l=X?_mGp+`TapdE-dT`!>6I z(?N8N%z~qS)$dMoTblTtSP*)1CFxH-so`wGs8@*wkUM!_99La2kF{F*xIq&V5Ng=n zT4V$n6q_8r6nj~&$uZ%TI}htIc0|GV^nk$oaTI{(wMH)ty>A#H#R+rY42D}=%RXG! zu5#!|=3l+h<#sfvsyi$Ucc`1dfb>{fLCQJ24x(eRI=11uG?mLboaV#EN2w7d7{s#= z8p@42PfTc^7d_8X!n{%;I700mmxXCtx78O&=KZNVji{R2X|3a3!+?LFZOtSxr77f)|t=w(nfMPYl`&Q!Q}qJS?r755`=f z0tL)hNDmTf#Iod)Z3GRStUwlcj=85+sBCiKu>k7G$Wk$Ou z;t)`XhkWcJ))`P^H=d+jX=#rxpaf;I;RGq3a$C(;v*wo^`qJBWR^umbhbzJMGs$-B z^Byg&7=HUCYSWU;pCP+6v@xVHv?B}Ms#q86%_|3qufhfgqUm@gTD6a9M|>VhTT6%*OlGsN4Nxox z02(mr$i=(FB*TpcwnO#PP3PaOxX<>)>NdL_dhT?i2?XQ@ekZuN5{7XxhWygX>A%q|eWq0y3vhk$_#%;n7skcU`z!9xe8;<1n$cg`9wLy5Ts^ab#nQW7@tZ2N z>*)`_rU~rZ*f4?G5uFOJTiF3ago!UpQ&(GTJi_J%#YgaQQ9UbWqNB6{2`0=bJIE}Qlh{L{k z9PIgvAQ3>Fp2uyE+8wz)T$RzE!s+I1@m?-27>g|G=ZM(syACIl*T&VNRtJvq|~s#Bnv~b>*qNPB?|{!uJ_aZ&*lN zezHv}=)p(S_Hx_aOf}cme7Nix5BnrRUpK%}4Q#)MDRwyeUR;@}5M^h;b?r>#)x4C9 zbBJSFsZpB49(;IheZ#`h(Lt~7ZPRy~@c`^&KKe;Nzg}MU9NKK^!PeB*N9Qnv{_TG)$9dU@)gYvKeNxrLq1@E;^u2oR441FA6PrP6T6<42Zz?N~QKrod{nIWDd+uca7zXXk9e?8j zfUujbRC2ao8hUoV5W9-BT+u=)Pw91$LD!=imtEygg4dk`Bu3azchl{CDr+ES=uQw(lXFB39-8l6Y>(k5xML;C;k$uP*Bj4v%v4q5vU5@CiUl;)q~GX+ z`E@NazK^k@<#kVv$SWQsmf??DXUfD!IOnGUAaVy1To(yOr+ll!xx_`nKnO_ukj{9RK&+amUax9v)=){5E^8Ogxjh5I#K`-gfKL6EM4}n9U7-W(U`dmG z+16hqA(|`)pfw=7*LNnFruDivkto6P3EJfOxh=izu0hjcZ&X39b)2Pa{^^u)5two$ zmpBH=O=b+$(3JKMsHc%mrl6TSVKW8vA#E0qS9>JD@V>MzOhqgM`_l|aJtban;hc z4Lf;)Tv}0;0SwKgjgu>Z)+FY`_k3RQtwejMK6}F~oXt@D2}#o#gj6jr|7~6Ui?h6w z?=PhbB3MMCzx(rFy1tDFEV1`P!P{1eo*E4vawlm*`t3jZ>wo$muMaDbkftR3&M+Ct z!!k1yl)gk!spY={oj_IpVW5aH;q=NseNpVem#xs(yT)vRAIzM|Kv*rxCO*xF!n}Bs z*?_dslcX~D`lniA@LZL#1b+OaXOy%cbP&j)rPhFv-4j?X4tDlPLFLYozz*O<$w6nN z((XG~eOGkc-ZW1C3;|nkYb-}$<__kCEQC*E2_1ZUj?H!#xT-l}_%W{4B4ikh;Ez}6 z+eH!KOKC3e?Hx2y;?IFXK2IB@fpM1CNz9s!nrFCKeD-W7AxgryR8Z0urA?Ms_*D8N zI>?TIZ^bxl+p3iaEV?swdUm5o8&^t_whmfqD00k-PTXt{mT!Fa#K1Z1S}T0hyqfQM0u2ToM~Cv5Q4W^ezOvfwXBRhtQ39zFbq-3#o87Aq`SL}?dkZxo zSXFm{y+ndYDQNvEIh;=*)(aT|G`8xtV}0`tb|KeiIJp7N9Zy-vG% zP@JLH8;Iw|pN%<4wr#0YSSrCci2>%6_zr@+>fZR4V+RCdjAaOa*~X8cxIR37mT(K{q-mFhA@rFKUwrb}vq~~$vmt_>d6^7@+Q=tsUIt#I5-bx&m z;Y!wtQ1A|X>*4%JIZ62S9f`>|)%Q@(0N_(=!@zK`OnU(k z2$c;2{M>{=joQ!EDQ+QH8J%MBWE;~|l#dwEEnWO*Cslp>tbqLYc(GJQS9luicA^-8_yWt7f`qzHfyUKLK~HyaaTWrD=eo@;hH142R>@?0L$?DRq2N zv#DwXu_QX7I=6r~a-Mytz;|OCzjC85_dNyX+4iKI6X=)<2!z}lS7*Y8UpQYmqfxKA znf1Spq{F{wL3BOgdRzxR`e=<(T`EV|aJX!}GHMHO!h{ zID3YGa{SY4{)W2ig19fbAk}m3S%XJpiZiJC>jjDywzT`h>g89+|-Q z1@EL_432od2X${HL684R3jXmz5%SBFXD%W zPyfEZ|M@cIqH%vH8!O}mm3yvyQ9M6x`(CAV$8&P?iTnvXlzl@4e+mQtS3P-pLEDs$ zRH@~AyStSOj~4-j1`}7J52>sG?JeD91CjCEtOSCSg_* zl7;27)gBqg=DPMPtBnEO0`@H)$oSUS_QGh2NQ~+Pb)64d;tH+F!EjoeY?hG?xm0-| ziik#|y%d+kOoeWS5Ng+08qW=xNOZsVge+_23gzH_mGV1gdqI(Sm!%r>7E58qhKLUm zDw=ZN)cmTD-0QQD1lB1OO7a&5f6$(e%(9&ySVW12;yx}?J>ptJ!@|B`nkrHQli4O? z8kmz0LI6n0Bo@Pn@Eu-DHjW@3cmi9`n8R_^Fz=08ldTv!lYZqFb)IV%yx=L67@CG~-&88EggH~2#^X?a!B6kn zsJzZyqL%|s8sv*Vy5A~GqqFS1edc#@z!gdng7f!i%KZ2wn+B2n`PsFyEa{xa_= z_tWE{(P+v%TIn1)(tg-R#ivtMQZInvqDla6bw;y=Z#i7H`2f}FelVC2;*IJ<@&koX zuv@~UE1*`~4U()glXrQ9TB^<6pArl866+6{=T9dh-1IuYfZT37IXsjUao>6CPB?mW zYaHJ0CzqGdI9^v$Vvfszzhs8Yv)&USfEAmvWL$4Mpizl-75qv78fsbO<2(5dvgw|l zuy_X3PavZhXDb9VCzc0yr$?woN)7Tuh{B(sE97Pdm?@S>ENv~a$9E?wApNPGKxc^x zjlr5O2&1FXO}bp?oHDwYo5gB9Q#4Mk`+ZSHnBt7;%K7=ZV>Pko#0OE7DMeXB>eU7^ zrE(o31&`~qZpl?+Wp!wXvM=q}#94Xu+ue(usS*lQtoNhHn)X546SnZ{;$YnUHK`} zl`CGeSiQt#lFO5hYk#ZyE@h1NxbLO8@sd8yVu5tFmP6Y?#&=GQ@)l5#xg$Ke`K^ffnL}cI ze=z=^S^$q8TM^bl1Er9h_C8By7pDvSI9w(KCMKrsr4mFc)yi16O5z;HGtB#OC_Nd@ z>1ThAMwbq7zMJ~1xg)G!!4{JY*D|MKpR$#$LXZKP3Hz9>E8 z^czmCOxA3${89(NQ*h#F`SVBIbXebvO^|aNbcb?Bve{7sZ)sF6q@Of{rlYlC7@dnQ zH-)U37{PMw6(VRfnYULbZ}kc)LqZV!Wb&JuuylcA*7y6;?$WZdG`N*6X&_lZYDBMX zaRNS1q~PV%$%bsRbKRqbjv!2dp$NLk)~;3$0t*Kl>9-ze@!c|W)u+_^$qhZU7xE>znF?i8aR;J0i-- z!vmps1T(WU;fN2lEkmaBwH6EAZ)Zz`Gcr&mrl-d!S`@6;${%F*gd&L3K(Ag(T190R z*hNd=HqsWRkJ4#|aq>J<=kJep3v?RAva_pqdvN_~86L*v_SnV*lw-0t9bxq!A3vNr zxu&1b&wLe0?Ln;uDiqm)gM+WwY$+{U_68-|8(^+i#&;j#<9?tVRAY6$)(D;nCZW1h zzbc#aVCxa{`N`X8e>8nGw^YSHA49aNs^0iTDl3J{P4CR{^*)Q`YAU_q*l0mai9O0# zR5H6m;Wh;EFLn3tvDTBsJ@9Q(o_x`4CAbt0cZpR&%Pif?@-9+5TQvDyu}hi-(j)g$ zqEfv*Rt(zI6qLou0tFxbAdI$?y*Q=*-E>yvA5a^qp3Ia0LJk{cVabE|yu`}hW3wH8 znw)cSSX&UFx&cNr;9|MPHd5&^3+W&jDk(`BM4;2hw=;Rimot%VTjhk`E<@W_x+FH&`bwbm40*7Pl))tBb_SOl zT7%7w=D4+DB2C6KDw8+m*i2?nAi?bVB(!3}R5RE4mV4Uqy#E2uJp_kK+RH!6L((Hw z<>v;cAc6&+COPEu)uN@fDCW2kvi#uOoXS~N&;jETP4z3t&)~l$z_5vrp!?lFT)!7C zomRxRO=KoamoSca1Y$JbaXFg9$y&x>QiG(jdUGFb=7On8%`xJ+*XeQ85u!tzrERtC zc!30t8l_3?(83)fm`sR#iNmTBTQmyN=X4APV{#Jr{RP%B-!SdmpXh02ub8b5Q^UTp zur#EfZqFp>G-g{wdv$-vk;rJc*vHtzU~mi^i8wE}+O0jx?+-w4mTiz1%K)S(S;+_# zi`XJf=gUj?Xeu>fWBHQu-nmk7-b@~+eIQ@(u}HaQy(hWncaB8L^U@(z zZ`crq>RDIhIb#Q~RWg^`yp0+H7u6Eg41R|GX!KOW$Z%#!0lj0d&>7$7jDG@#T0OqP zeg)g6H5*QoMhiaVD88Dk6CwWUDRh6fbtwYW64PUg-G!dP@`-%;wC#y}vd0yTBEHj> zL&;6ttY6t3EO#Jl@3lKePTzhQm<+&TtDdb)Ueb%%mOrqyV1ZLY?^=s@;KW(+1@; zrAg@iIJz4y6O2ua~2x2S{-M6dXw5N$w*Zn4slRkqSap`aZni84}AOKlt>DlWcdusOUe zn`6ddHF4Gmw(S-~7g;3Xd3MKwf@f*Gy;Ab`X2&yfF15Q9BLdJmt^7Qq<>5|+Iysa5KO)&wqAhV8jh-0J-MR9sudWelt7YaC@?R=R%Ry$(uYmhy{n zaZWDSkzgw^l+H;LipWuHynk`Sjq!)n@DcQdRjjtY`f9 zU&jIye;xJ6Ob+dXNTFJd_(F~(ru%JA5?c&8p4Dw%bR4>!|9f#f+sY`U_eP5R(fx5k z%_2nd#mc7gjg&XfF`1G3nuw^{k4{gwJ{VQJgqM@a63*JAbF8VT(Dq2&=6CSMbh_A+ zNhsgWsLfG+UWfB4Mu7;y%vaIk$2W&X0tcR@zH~kk&#}joz!)dB}o|~5dG9xvIV;*q*k6PL8ighbgOd!bK57AnZ1uL za2-Fxihr%0vTLGT_d~v1M!loolTyzhF?tL}XK24zInMz)L&=Cf>#cbyvFaC_OCd?| zE)yZAz(Vnjn2Gi7aI)*N1rVALtg>0_eO*Q6z|r8=^cD|lkJaWjh91bxQB35iMX=gk zM_r$9WsL$s9m%u4XbOqAE3!FrtTYb0Jei#Jg!gI_n%z2rHN|SVQXY=m_A1o|{CjSO zeGvvjq8JQ{kiZa2IyAA zGuc&JYBA22WOW5%3o#XIq@B4H!4HSXch29O@3Bp|yq}rM(}pQX|LM59o&Z<^6aDvh zFxGgbI-a(P_?L@kLtOc$EG4?Vm+)C~-al|GPNHu<0&TlA|0wb|yKu_KJrO0;Kfwfy zj!ed_9!0ju2Cu$&O6tjmxJ;Y(Sy1ogRnue*!-Wxt2WoY7we|ik8LQ24tkO|w3x?svzdS334?p{sEtJ=eG=cx;*UaNf zlltcY!Cw6f{u9#YzaxD_pvZoDA4%%E>w)%T>(XK+7nl=LP6oAUEh@`qIEvNxLgrCP zBo0GvB7{RJA=<|8zYOD6$wtLYp<=X3sB^hoi_%bkS_WjSu%sp|2DAA{;YiXv)o2OJ z8)bUq#c!5ty+w@Zl(8l7;#GHc(|5HRDT|fP9m4)NT#qIEWz!QV4H$zAq%z3Tc3Pjp zi`wPw0iag~h{8p-eJ@>d%K$23J8P?kX8?Q~oqn%v&_8VvNvUKRZb22xB|(E4$qQtB zCql$6l9M@%(YT~;_)FF|HUz9T`qP5pEyCQ^d5%AI!LZ~1c}CMU3pPV`0-CS)R)9;DGquBD zFfA$301{{Y!ArLI?YL)tKowVJ(qxA8ZGsN3_6NAPLsZ39$L(+gX-V8spGi*EhK33r zWy_uY>c2I#!0z`mL=xyzqnXtos+MrL*gu5nz+JG}&2NF(u66$%hqw>=Yjy2`gcXpR z=@F^Hlv;!JA&sx2IT8XuZH5?8J?h~4%y_k!HyY=(eiEf@rBkXnRI7CP`=_iJ_WK*e z{V@*gDS)gO$st&$$kba$D!(Ifpw<{1DNrbh^raIxPux~UJ_+k`PU@~Zbh?wfMK@?8 zJ>)?Nbz%j^Kl1oZ{0Nx2+RV1Q%o-(j-<;VWu-URzUHRsjZF+Uq$lZ3LAIPI1yOhL? zfJrCy?Z+X~e9y-I3$9oAP*eLR_$!?k80|!g!BikO0~)c+Vu`fLT1Qo;WVXB0Jy4Tr z^!|K+%(X5HCARz}o{M1Ssv)0rX~?guz=K-XXG@++CDxRGpWtkd>npKD{72Bql*eBu z5{bzxYg(Ql+}qm|@~j07N7+;Fiev~}6Q3w`k6s=0T*?!@pW7;AOiR;5nl z7ZYjWNo4SvGN4aojJ)|)KT>6E2N-A(+xlz%4P<4vE2J_+t`$9pjpl@_w7&o10N01*=%bv8?_gAF0fH0l1geVqppgHC8>c{i;Yhs zJswP>jrFI8m&hJ3X)lynkvy>3^92zBJeS^R6_zo$H#eTm0-_@sk08lEC=ii7V6ftS zW+K1VeSx4*ASbnULM*-vkz5Qc!9jj$Y_ZlWNA;HY0G(Prlk@I+EV2i6;-WL%>%{OZ zzKRgh+V`gH%NtJT-0MUkAHc#H!wH9tcnm$-J*?Swwd4wu-x+*qsWw?GCle&bDZ=NE zmfh$)bg|H2SGhmb64|4GJD|z*d#Z2>QiWjNnD1#kFiJ0+BUnpSEH%{`yNKfvbbI3E znt(K9n?ygSRK$0D>DTYe4Slt(#FJs86~DJ?@*I_G&Hy_x85=Z#t^o89%hi5vZ>V)} zq2;9mY%?FH#`~N+A@9zyqVA=FUD5L zJcr|{BwQq4rU{vut5UjfanXynbi+{}&5#t0NJ^dSq7gd!l&>UGI7gOwd?LRpnKko* zZrvvmqDqUOe}Xn~Em3`6Q)I^*zm_uf@_((g8Sm?AxRl&M-}$K`R5DaBwLre;N#uwAo0|hu;djQ$r0`RF^I7mL z**5eGS=A}_4kP7RB8txT-*@j*^`doPdazACBQZP=7+1d;G53H;C?fx~4HSu_Fwj^r zS#V^p^VAYnn+ zEdJ~qIB~|pLtrgi`?kM~n5GvnR+b%pk!2IGzds)0dXW7l)g(=eqO~Xq*t8STzMZHQ z-Sv3zV;d6rLoeQr$|N^BDEYFGy`jq33=#ee$YM@Nud_PhLGjs~snBPyx%b=MHIW0MD2doY*laqrx&Hjyn5$&3cr3GDG__KH3J05V zTLHa4tzu^=V86+!d4{cYO8j&ZcrspnenoHM^rMwexDs@R?1+3{cj*mODfNb=(1xAw z&*Z?z4pfzWo9XdD!k;b%3_C|ZvS4=7&zm1zKrF;yvTfA7;1<5vo)GXeYp~wW47TZg z^)Qqh$QP*cVr38u(P*;psh{L5{U6K^Xfqlqj; z^U6+0{za52)hEzGuq|xrV<2p`MmFoSq0w@3=;2Vfdhnkv)83g-C|2bIHqT=<9tpL; zi@3^cEE-7la4S{lr4a?7=es#IHl>i`HFv5F@<=qVbGhEWnWu)LqUj3t$3X&24VZu6 zj;jr#t%r)>w;~Rieiw!}W!e>-MD{q~eC_dztNq*#d_Ahw#P0jkTXTjonJUk^1A-#< z#ow~spZX+7XZkQmGr=0XxyP%f1g_E!fW18ZdNq<$%1B?oBspHK+2}RRTRFz>X_)no z0v^psJ40~NYZlB477Rx(*>t-3k6)3I@;!f8YZ*M2Ihb?}^gEmY^{p#(0&1zzUH8}| zN{m_&n~86#$|vGl4@~qcI1Q?6#5cS^qJ%`Ln6$8MU?3=Fh!ra{CaW1hD3nzNYXJp5 z0V2ft3QJ4N+{XwcCzY0(XRd4hYbV#6eF)G>Xp{i+*PI}lef&qnI_YaIpD?9n+5XPM zt(sY1Mc%jS>qK?hSif46=kKGjSd1s~ivnW!*h#F^@xO;7Z3tQDp$Tv+d9&B1wcERv zY`$)J!BbrofnsRcIT7}M_Rsp7NV}4`*i9d+}gQUu&9v8zS(1 z?BqQVLli(zEuI7W9(&g#_Nt3=dpM0?Ddxz|P9mJp55=?BB~kZ5rFb99<>x{Ap?{lC zh~$J3gJ7a^mV|}HM0?-Ey;ESmY|$X~IwI7bdV3*}aCF++4-cuP{mTb?Y?0sPW|Qf3 zOAmQP5uQcRJ$Oj24gb0^R2pG--A}dmf^BoBQM!R z^SOD9?{L)$^Pt(O-Xj)lKkg?t5voky$g?N9)6rR{Hy1eLRSf!r z?BNGca7qK*&`rm6^*@Mt#S*H2!q{9Z8{v0f{Q`YKAA1By+{s}rQ{h`W#8?qQtw0*3 zOPD2n6uNofTJAUlbzW=1v51Q`Ixn|AHJYd|y1w;Mc$l1xGA`q8>)fug?~w)F046Xrm`ZS4E=)@ROSnO9{33znscCOf7sW5y{0Q3PkYIJzXEl2wS zdm^OKutIM_m z^2@~7^~FOyABd-CRAI!Vfnjv%#JT1))}H7j^THf2(OxB|ijcG<_}Lpp0oY$8O&o2! zfPQf)Wb}~LNcgbVP-7j{r=ewW0-6moUTfZ(N4PoguSj#vWCgwOc%EStb*O0H`Nj_ zwE!!>{~Ug1d5#{XETa3GMxqda%-;7iXCa2jRchZzcy%0z{i3PjpW16_?0v^Ux`czx zlt>Z6%1QugKR*qqaMC-M7dhqyU(|op`QJX`s?}Tf!b$t9ufy!#oNi}<0S&bT zFSnNbQyw%=o7LBci%0BfhQ7?zZvqsEyzlQZOH|RnT%Cil3`s!El6(99ODyPRVR6}t zGI=1u=qPE@X!GmK@q0FLI9X5eX_9|<k|YH7H-^0PY)b7qCN1&~?1NC9A0jFV<-2{AT1PAQ-n~GFMCmCO6fqDx%e_bhB70 ze%uK<@2!ZC4VEb8mG6Id-WbFZ?uM+{7*7pz*izs17l*uexUZJZ5{~3>dTEP~b(aMh zx{4;yf4qJ)VRO2Upm4lwg^C?UY9ZabnJ8v{O{LL-P6K@#xbw7mg%=PJ9PYU=xe^Z} zi#1xfU0pT2GLYZzLc>8$j8a)9HdX;ar?-r`@S3XiHN2AXWPTf@4;3u|4Nnh{ z;7(!qK#q~^wxLw`>Khh7ma_ZfRLAWGqY4zFFfG2s!v$FQf0+T@>u^HxbWh0fLOKUM zYGN6*y!>EMMh3x5MOwJCeou>Ld@f6Ay=CG{lSo2{Eu!tjRC}-Y8Sg8q4bkgby9?~P zg=R5`_YDW%uVUg|NbD^$%MnLo#E)Bg2NZSN9P|k$BwCWs7I|pitr}EA^9|LFvAckN)~vqz zUZUAY!54Ot_8Y7GT&68QlwKPnWfquO_GqW7$EG=2frKm7Df{;MH^$c(2<@}8&{?$F z*SoINXA$EQa#e1KW9pn?FpLkxPM571C~d1jA6(eCZnAPUsg-@=%W#?gTYu-jzjW{B z$7QAID(;9LNXUB!ugeEZNzvvP_dUELpmKrRbqENl0zNbMR5vmKaD7tYKkG1AuEFCm zcnP1N`%>Y$P^N|&UU3Q|3VtWZ%!Cp-siO-;YyPkc=brzyG8g_EnN zgO_w!?kx4$W#Ps$(LL(JLW}v5dbmRQY7d#hpz5wkSkm*8%vxq6<}!-D7geXqPW3CU zbCpJ(ratHMJs$z6@`=OovZ1%p`7Hc?v0AJyXue^CJDEL>j7d&Mh)L{wAkG}Jt>Xyt zZ}swjQ?x%qqawlZQR%#t<;?_hX8K)=xw0`&J75rZ^&iU}u0Nqr$V+DsqL8OV#8scP z?Y-Rq%yGkZ-!Sq5{DwX6oUgyGj{!_oSq(s0Ab4+6`pT_XMd0dqEr&AhLxlk|@~{5u z`QDO#UTt!U$AUae8BdjOCZ9Ef<2Y%(bx&ir*nEsGd-@r2j*iSx`64OFdVg}!e13;P zhQX26t^r5FoSV5KuS7sad78b_(hoQZb>zcUKUDSul~}EgV7?v)>Prxcz4-uRwa?!4 zN142*D38xAf60SW5qxkJE1rX$O_PrNJ0cUa@|pG_Y>6h0o<&ZtU_7(=%Sa*>Y{$#* z1pS`VEFo6)@AX~qm?A$4%9TQzV4xc%we(En%z zF}TlG8IQz{5PeGD2iA2)=bZk+T%V2oNm!=Lg|?wkSH@^it?5*yBDL=3E3Z^)+#fz zuo(5wx?LO}kIn`5_Pvg;kKANyV?LT5i?DUr&jj;6;gkci4YpWDLm~qHsDc3To_Vip z|K{S&>G~(9{mh(lfM~pIYD~`6rHv}^=|R%!3^WY)5c}o-`|w@*TgT932p3QX)mg zmMXM|YnlOk_0TkT&*l}8Pr-H|0{~zWX_QPMuiwX~{g98BbLK4tEE5+vi(>%w-Mp={ z$`;$1)51>c7$Fd-%AB#Y@Q%LP2k}!%HhBz9I|$HjW2u}7kbWH8!9YTl6(?*gEnnb% zcDwf?>NukD9~nHF(G4RjEhFR{R?# z%Z@suIj2Fs%uw&OJ2C-MP;d~&(O@^4$a1oIx;3`ii3p-%V(jt8P}c~y!L=z_X+T(34LC@lnwLhqf(}q zd1$!|e<(_Re-hIDWt#cfZz~SV1cgNFgE{MK%q%=kdU`XgncoJQ{pD<3It5ASU?z3x zVRuG`!v)O!GNchudqJO_pFdMQ?W8Xk7aF)xCKoJPGNAjVyLx)a z=ArvXtI_Q27a2-xSN4n1Ev#>q6^7^qnJXfWhnL%a4M30s~Hh3eZ%D#i5 zBTF<+c#hsdA5-h45{r01WaGC)qQ@2eYAWy=DJ2vyIz!BNt0~Tc?`~+KD5ZoM!dgDM zmRHndxrN+|08ktZBtTE7Fj$y4JMoiBCN#vQ@#PsloEMr`McRVTo@2ch|}SQZt4`{4d-Dw3LW9RrnPX*$_h-gxgK@&CSmx zQHVta0Sdy@KtmeW%I10teXG5QN7^Cv>|azW{}F4ODWJf(R$AN#z2R=DjEP#{m;yll zjNL~!HoB}LPsGCs^O|=Cu}-XN9NlUB8YrzN@!zxEc`5h?q@vkzK;g`Rrqb40fdY{4 zXBSRvFE<$PAVLjr8Ozn_dcr>&3iAFf`sC6@4ORe;*OiWpB9WDF2d-82gq9NQYtv|BUu6HTMJG*E^)>< z4tOMAR%ZExcUDbS+ut2eQck_v(DjX>I)OXj_%$Z+3uy3p*+RN82JRTLqg0Y5f(FMu z)`m%qEI=k60i4M;CsG3(=#M{1NN}kSj3kn>qd#)-jIBJbw z!q#aN1&<$sVSl?%9zEUxP6|>#=iq^eA7D5+eWEdNsZ6_TbFry`Ft`_# zb2-4qRdR(`EGnZ^^pIM)_Nyp~X;%oA$e2Bfdg2HEkhh?{HkbzfhHqpDsM5qMua}C{ z?Dtaf&if5%Fq^mk!v9wxyP|8o3aLOTTE;qI)7lryMYoOz84jIXRS_0}=4ZclMDpgDF7)~NppSQOLLSU9wRx+ra5R6eU|HI%;Xlmgof$) z>N+>j?l-tdcIyTx{?)NgMY~@_7nympvynq*@q!}&L}ZR?SBiQ2e$nB!Dc2{6+e6-Q zzDm9G9faMhV{7Xx@`JB{o!*%&5CE)1=?%eo3OfBkUbU;n9N{F^b|0ca5{Ni~D4)Hn zJ65wcf5;CeHg)e>FEnChxAs5<56@UAq=HM>rw<1?stw_mb9tiAai?!Tq6!MusXgqIi zIg2ZfVkm+HXKgSdM!m&V43K=&fDMuNhU9QH++$=kuCw#Z%<3L8&2PM~KFFIypy16p z->h>nS{+H5wm4ql>jb6B$0FNzEMWmX{)xGW8;ulBm(iNAUkQM_FFr0}{MiAQqk>L@j7o#|LAxpnR_J z6@oe45%{1#fX~L}v^|znLQY^dK!-;Kr2**ROB6N8V_8SMZ#cqY4pFAGkwvEpmOeJ= zNR!F$D)OKCAly;4OSFn`p%MpXc>1A`Nmbc4mfYUjkFv)r(}^QQJ^&%CAizsVHQhd7 zvo!+)e3+8yo_>+c3efeIstoxGa;^IymP)ap2?iM3RDpmf(mp`9g$?F-nvxK9>n$Lc z7A`j`L?Aulh1O`)ffJ5kMF4&(UNPD?QH_m_m#n2S8)C5%35;Hj=etEOrK&wp!9vTo z>MF?_&R@diZ}XwOzt|n&U>-=N{6l{I2-aB!>SX#9kEUdvI9<*`vc;fG%c%HljHK^G zmy`288;RVvJ+cA3i@_NU`U^}9d5rPCo4u+@o1(sb&RFR~A2eb&%{ zE$?uN`W~A1^NTQx_R@QGM|b-xCl=HvA-hJK( z8BAjRg%Ni5-4w9-FiryFiP0ZCFnLZj#d@HV#X@6Fvpv>;4rs>;EQi9)zRuv9DDKf8 zO3pgpn;i|_b2F9;T;u|jH+=EM?`HiFM!Yn?6uwi(*aiQF!*JFv9>Wl@ljQ}^#u-q-^fwgqzryl6; z?#e9N-G-YwWE&&bHg(&E1|9L=7n@z|a%RDk9GG#^!jdvn_2^s3MazuVxj>%zylz8$1u*W$zi4bVP_qo zKCfx|sZwI-od(lYk_MCc=n9F%Y5j5%a1!KVb-Rb^F>=SRjIM+H3XluE`EK6)Z?0ed ze$4;!0O0t)ddy5KP!7L5h-HVt-tAV0fjpNjl9J4Ma;yZ#4Dl_vUmDG~xM{Fxiv}=x zy_3$&Bosn9;XOgEw>vNkZLfEwyi7Xl5>>AK{5VTX09i#v1tlg7260~ntLt=2Mo66- z!Qv7ii;Pstm0zXH3H$&BzRCXRQ=KPxMB-t+`T6rD#wu6QrgmCq4JfLIr9%7D@vcau|e?}Gb z1D|>Kucgs%uia@0OZ6|z$W^K-f&N9p#_PR2+dWoxjmt?bL`3`MGr-noCy9=g&io>I zqD>cKNT&1Fa=?IleGPPjsa_-4H17~8kgGR(8j;AX_cz8ba2J^BX~{rQ6$Xj4cerY- zXL8_hq?4J@AI%-`$W4GqJA$z2c0Ep3M0R%vU~1V+1LUeCJZ*m94v^V=;3Up&fA|%R zMwvIGD=@9rV&zEKuWZ_am1QVz=_c7H2&mWn;ime|MDPe^-Q1h=mJN+0)M_`Hau4r4PP^fy`ATs`?4O=ivPO?}qq;Utzxsb@mK-2aiKVvwBK zpf68#Ao8C{HeC4bZ^v@R=4jH_o*`g{`vy~aQBqJ-j0p+W?Q=LPlII^|G8(meBaq2m z_eS-tn(B3M6d*XyT*aw{R{6gDkR46$$Yps7YuJ~pkS86*OK(Dk(jFpVI$J$qhr_z* zChF)N)lP;+QKD3#9Oa8b^!#jlA)#ZQ3~HR2d_{Alns;kdcUqOe@GG77+aL_4>`7B) znSJ)U892830U7wqRJ31~}|cyF3=grofF^tw}zIh}7m zLfC_TJ3ha!46VfXPG?5T-`ckSYB>s#r-2h+6s24|pe{*_WT@CZ0Kyj@6@VgHtuN&m z$f)~g6k(lK4>cW++XGNYghcDCHnM?;vLp}`mId-awqtoRBt-~6wwu9Bjr2%*hwR%e zCeR)^1;p9ovm-nO1%;;lbT4>Pjm1WtzHiIG3w5NB#mb=V`ph~(VG31Yc|31SGAN#* zn9IzRL(A5q@w}2 zss2_o{QXN&p^!XhLxRhr@}x3pd|r z;Q>t3-mH3qfmmKW@xtf%-DJDSP&6k+t%(j^0_)ROr z>!Zg!`erO4A+ZhoFN>6`!kwL6s?x7-5^Bs1cdCoVn~W9e9oPJmal+d{!eltO%i=g8 zPq{e=hKrl2`~Z3(^Wf@YIMMt1^fa$#gmcFJ;fO=6$u;QN%QpZUrex})`@=!2vKee2ZS=SpAIXn&5zY;(m?^+y zP2{&LLcz#Tb{r1rz;+iUMCy~chYy$;9J4{%558Pa^ue z&i|M%K9oTn_H00+y@9X8`+T3r^^)2C?+56SyZNW@lEODOkCwqdnXPvtH*k3qI23p} zRV!xv>w`rx?-=h-MOLdc70^YWUv0ol!#}P-{$%nmKLB`>*9=OE;9_}s^MBZk|LU^* z>yI>(0KCynLjQ^OpZO&J^f3S8w<#zNlwAZ}zggJ-^?LbVzdqzZ{`&RGi52q={2$Vi z|NJHVX<`23eO^oOSOUkWfo=a{>;3b`|I<6}2Yz5EYiVreyW(FL?SK6mHyjm!df_Rb z-~B$)@c({@fBvqs1h}v7lLw!5LjA_){@<>1*soc$uv_Sr!~gZ8{B=Y9bi#l1_~gQx zkrwUW*du>hWYAhz1&HZh*d?Y0KH9gGrgPHyR z^jMe4pt*C)k%SQV^p9cX-&ucr7VuaES8$!ne@xc@om27sf)||8gDsQKl>giP^4q^h z>VfrPy&2vISrt7$Cu?;k#P_U@L9e-6?IAe+ z(t^D1lFI$Bcg3X=9PgbH;=8W@Np<4aY94B%ei@7;P;KwamgQ}ybiw=6Mrid0M^&>8 zx#-{7z`VGRE!4$hX)Qd@NL_?dV3ELQnx3AP1ZJ4ICUJBiX(jeYA@WClK4zMcH0>)1 z#f*;ZkD2thZRHvIRSb3~4dV|h`TJgTMuj?pkihT|C{J zuM;sx^fMR11<0FhI$(d z{j4dI@mjJypuZDNRFRVQ$0>x-fi5i*S!KG7fAN?C9^ zeecbOuh$JhlpopU4y0 z5Wkir5l!U%g~ir95n1hx3RoYE%R+B(z3XH`4%vS4@e}eFTia}4=`6M8|C-FG@+&;V z_4YDMzEHJe!|^$X>+Nbo&Lqeyw-*|6I0q$gxWbl2z;IlG zss~W;O$Th}5h8^tT69{FL8j=5rep_~7}xACHGQqSquCQ|Kgn}wN5G^{wOAp^EnE4g z$#Q3NXsCOw`$c}=qkm_Ue*OB`-4hPwtx1@rI%6+v8-j%mkyJ9?wkAvbas{&TkTrm`jRDD$%~mh?)xEtUM?ihYs4^Kz48C*n z6IAdX}$Lj7fyxY*)WatzccMZiy!AnTdW)?PVrB?@vi0}-Ko zs}nFdHCwlXldid?WS_;cT z_+<&L>0ISO>88Rv(~dj^RT+?T^TQxwKd+ooEYkv$zYKD9Uc5EW4#nfh z5)AuM9=G2D!C%XPzrH?1MXK$C$W8Ud zOoTBS&k_m>s5Ut=5dDAby?G#%QTqm*NC`=bs4QhEd)Dld64}buSW}E;>}z(?B814k zM)on5u`{ERtYhqBCp%-wIvC4$yleF?zxVt5`}&LL$?%-#ocrA8y081XE?!t&18_m0 z_Q_XY!~KKa15uFlZ>_$*zCD%7!b}oQrSG3ZJnQ@pWkIPSLehQy9wVasBFR`HeZTQuB4)mKaeUKrw$C$*!ybcr3_44pi5qrFl`f5wXR4}3bf-(87=eUv9oRwVrwb&)L{n*E9D;mjWHD<&B31jn1+U?AgGsc{b9N$+S}vCv)5E+^~=Q! z0*0Sj^$;CI!iw_c+y)ZJ#A1~*`*HOLrZCt8VDR@*WbyfaXlwKK^d@M0e4uk2v(oW{ zK_!Z_j9c8LKSSkj1+|N ze46Dq{Yv&hz+Sf3Ev2?3Ak=BV1GpaHvd`_(-b8#m|T?Ac?_h zfIcH&T&*~ZHDRSSJt>-g?_FMdViMiXUXrv&Fi`zH+q1yl-nZsap%J6{b`Zc((9Jl| zj@4_SF4^xl?tiW>#M1ck5Ynt!706nC1TsoGhp)}UFUzQ`Mce^A#~XKcH$F%>bNYmu zw|>aVdAPUVju@-_`2FL`UgW7}3o*Dy>m~=T#W(A+RE-$3tqJZ zkp(XmSv(*EWC8(-cxL|cKftG}abQEHrMf)w$FBMBL!Unz$)&`(Qjb=8CJ{^jbAf$@ zCgC%fMEl3zt}o5S=~Aq*JFmwS{6$}3KkL%fARwN3t;}j9c;egJXQc+;-hsA?Pri$% zZPY(YSWP^qZ-;(5qMbvKGaY*#&N*hy=kD2V@9uU9EcumPAG|>Fv^(ovt`foS!;4oL zui3tWO6_4Lvy4}iC`sX|Fkqml%Fo~ax)(yWq*gFgn%Nkh+L5Qz+KUE+@*+WE&O?cT zvo~k@Z)W7&4&3FoeJro|9{2=&L=m?bp(iCkXS=PA?#l+CYee-3mDw5t^c7AaGY?AV zg^%~pJzSaVy!P&8w*JS!lQa*3c;x)@NR56>r`LUKa+3YKOw&N1ew%4GvgfQ=WPrNI zSN2}eQ~~9Uvm3D*sjj2S&n*r5Zqc4}4|wv34HACTpJWnwehLU#7%pivD@@+d%Ie&v zpnKQy3YwvosM`YsRyisWx+u& ze0lAN@8h%XD0-{Ih77Wtu8s43{V5sL-8()91kQ6-JY#wV`7GskU>Kd;cT)x+m&!gV zQ%DXr8fi;F2rcngqt~3w)j_`A^?mrN4oHN@y0HsTRBZtr>oxQ6y6ZBZQU{8rz@t4_ z7|D-y;>Mk9q>wNHDksVr_rl9|ixh}kb%NOlb{f@--+{=t<#Cf|PHil5z9Pe~M1GI6 z@?__J`h5~QE~TjVKSkMN$4x+Pr>KQUpKVXpi^n`(gz+(nTPt4m+y_zJ5{K{$eHoXv z`R%4VKIUCdrZX3ZG5wD*4!0zb9o&+N*nM9aB?c9@pygBot_Y>o=quMesq`z{qR$zl z0cc)Lq4la~^s}?8Wy#5WwvP|FfQ*rvfIUB3Ex?}c0X;k&pbDWL z(*KyO<6PI9AUEKLYmTVym3Az{d~W}GZUTP!ytwrZo--|1@433P$RnZH_q-WrD;5v; z?Q{8!eb;B+F(Cy%oTXh%=;Z-2Lf`Ifs*1nxTAr#t_eS3%{&kEWR}f<0kqM&skk8;L zyD{2rsrp<>aM1Iw+m1bXI+Wdruigd-5?X-}OTDBwMgk_f=^hd$SM68?(^%e)_X2{Q zWT*bY<)G&SLqm!DMRY~p%vW>QMvkgZE2)l?M;+wSJVpP3uogOs_+HoP4cR3OGjmn*c^SVesov0JYL)HUZ9juc6`Xa{!A1?vG*h(z3ek;DLfu?ZLD5f=c4f z&JDIDCwhsH`~8o|2*XBb?^i0ZH?oaEKV)}e0VF>xWeoJ?%8cnN(1nErmVX1b6M%N| zLc2tpu_b|zt2YN?@b-sN*hO_v@T%z3&LOwxAt_(GFtaed?CaV?jpES)x_;&G!ma3#R4TFDnUpemg^>If#gEsa zt-;T=73%>HJp*)ccYv7 zCnC+o`;UytKAoHJu6fp|zR-utem|}iHY6BK&zBye(x?%a^EfCm|K+I!pltRjYzdUa zT3!t%v33>7beDc4T?FmmYVL0=k0fndAX`Ajzh@QKzCjopitd0gMHN#5QV>hlV0)?@ z3-#p=lT6G$#e9`8PS;`Gx-Ul^Xf$c|0v{1IkO_VSSzf-aL^+Vwdt`t{D1IxT*iplp zI1o#Oi2HeLi2#Gb-K`7%DA*|zvQV-^V!`(^kZVJG1j><8~Ke&gDl z;Mtb=?oy`BxlW_E=F`Y)G$f1QY%P~M@vYYHkYr)FDzTdR=um<3+&tCsI>vGD8-?}o zCq~LT>?I%ivi*-fG)oq`c)3rt;Bho4>DzR0frdO+Bwao|TfA5(5l#t8qca^-H?(y0 zt}4)fsiUVj=di!CuD!p1@{AzSc(HadYe^R|8plFnTtr)Em45y8KT_~+~Y%M=MZ zdj!;;g1YO?q|N-of*ccx``)7yi^;Q^7ApZ0O=H=-QI1@XF$f8{C5YG ze|VTR>C2N^ipoC@A@_Ox@}*h-kCuG$#A@52@Xc*5=8n+2g zF1SF=+Siq*^METz2Uk{yW-!VL5rXyE#EZ-uAQ$(sg>~w&sqkZCZ7r-kUZtQfq@wAP zeeEA=NhV zSR;`j2x)y8)y003Mfv9|->YQYNB5_o`;n#N=E?OL;W9svl+=%|NUU8*9ojRJ@ZD2P zHBwKNz4J&*3sWvuAWZY5j{tFTad|B(Qn{6#YPfP6MXnOfJ>3cI$VBi?0gbc>xr6QQ zXNf2w*p^LvyxTk1rLG1<`%g)?;ai=oqqW@GP8d(@4e?Q*UBmI=h@YPW>)9nF25JnD z2c1f(O=+zNK}PrpR=Lm^#V*pbS+kBNG7B<}qNF-tn{OLag?bZ~fbWj(sM=$tf4n03 zV*%c0S^XtgA{dYVhqw4QAGv_VQ{MZS>)mi*$JtfqCl_u6Tx2r|Cs3-%P-O41>0x>d z`z1!m9g#bBvF*vK;=LgMEv?~raM0|MNUk-M={R|BYeLzCM+bg=Hp#i1>hi76rF?pb zqzk1+Uj~5UGPycb8xxtR1KC~aQWeKv)Tie&PO`c*@^j3Or_GI;ti9Q>KcJAwVd+X` z!nA+9jdW|vby%!~^Xx!~tjTPf>j^j87E1llJ4Xz_7rF2>KI^3k{~;{ z7S1FbhlIpkP>-B-zKDuhZ0mSe@|;GXeL|+xbx5q+-NB)#2a%jYTM5+k9s$KKq*`Dg zl6%Wbkh_IY)#C#+-y?MxJgS$>aB$){IKtuKNLBHKk3?X5;jq&647hR3Vh?5N-_dSu zB5q@9+!~%QPNGXZF-%;Q5=dAhN~ZM}uPD}WKN75g-2RxH%vJwieae3QKYzU;FLpvi zDj#|p^j@J2oi}xata~giu(t#GMM+8kjWpJAvQcVt00I=$stnD{g=GuwQoglj;&6rY z)&X*Db2}nS&Ct*=%QpP7#Donc_YWz*N1F?@x4 z^=tINW1vT1yj0FHIl;tpu~V;8erZA1p)jUZ;1c`tmoKABqVmK1OdXX^8&teRTX8@v zB5_Gl_xbY+11K+zm?e$!;@1}*+r@&|I|$wk4xvWV)a$=d1`{rq>vf)W9=Fl9map)% zgrEiqJH<7flO3#2MceYvv9Jgv+>k&zO*K74-axAMRo~=!fLVYs5M-@;98iZYL%?p7 zpGIykVuZIIW@h#&my(*gY_x(_cI-iJu1BoTfR92|6?BAvEpRuZ#u5D{zrWLUaH`Jr z8iVk`1nXje1#5GcAM(sa93dwrNA<-a=H9`tE{*}xz>!7*YdL@M|5yh}6qaXa=Q^KF ztv0em1N>423B`On(~eqb`I3c%AT2E7Aw52dn7qA)*;JLruE!D&mJ>4+gwNGUuidS3`uT){d!BLFd#;0xjvXEl2B;&(uYYiBUtj65N`$K@JWa=9 zfPD1NreK?sLAy4Ky18FI5AfZzB54~mCQa24^{;x=paQkTEGFrEhKmgrUmGm#^%Ie@ zGvzjKjkzEdK`@)uKnlZHz13eVP<9tXMPpT>4QIRUqLv6x-Zg3Y3Jg4(ncCDw3?zj{ zL59G+mB}l*Qhm^sCigliD^A~yr5|$uW^ZDxy^v}3DXrJM#sXc z8EYJ^8wo^T}Bx;DfCeNN4LZXp2 zAIgEyTirAu7^e>yineZoJML?9alhu{l%+A_;zdf&~z##iRxd8rV%}IM;=F=+lY^DuFQ3bM*QCcOvVfTIw0plhl$K&?# z%J#or{5Jt3DN^3X2EMn3cbSKss5c(2D5QAOr^lBt;y%*`8CU>M;HLg_jZ&bN-5#|c zhCSl5%_0x9c|b^xdc8;i&{GCD7Ufo#+&Ku*CLHw0=Qbf1?{sl;k%UORko z@WM4F)_f9>6vNx#5CmRy{Q2nKPS^ghv$_1C@7h{xp(j}Zw9gUCJTe^}Ya*2RX4I{w zo7Zzz-2xKMlYb0Km>iuiPwl=AqDHKK^V{3Gt~pN9 zc7aEyxv}2-I@#Il>c`(wAf!q|x^Fte|KlLuy)&L@e=q*n3_ua%$Bi(H`R02sDV#Pe zw~ns?rX6gnlXbihy*tS3bx3#qJUgH-iS=@PdP$hk(zoxdt)h_cQ3pJJyzp~K1!zgR zYoglu#Jpy4q(+Zk!1(GFsT6+FlN+(XVNMh1Cz;y28G~8@XY58zKZIZ$C+bx`{Jeg% ztJ)P7HBI>WqkdGa%@Z{CsTGw%&$L_Z?BXAC`U5so%i7mTf-iyEUeF<{oUBa8HvwQBlZI0c=8!z zRD0}vw?%(qlAaIE!p@C64oOLUuq#?z-asYkbP_b2oSe!FSK+%Ym~t%?)LA%-APacq zF~G&H%k28f2=VyN0gVvs+qW3GkFp{Ch-wGBuz-HtCNJ#pOJJcOuG)D0LCoHy zvtL2a*cH$EQ%5G5{|FMN@3H1Qd2O!!%cXzb{N<}A)h9r#C7m&-jOvPKzU8qT@~h#+ z#{-ZCKyJ)F!CKS740AuV#>jm{H2rpz$3rpOQJa!9>#;KHz6}XQAOSc%?2KKlQsWu( zIwW--mTbhz5g&^*^`k6Ve`cq8UkAK(_rk5mKzH^9#i=vY)bGP(y~oU+Zdpc@rw26R z`w)@#Txv~%VTD`EuArMeDz$)x4=|1*Dn>o;xY(hCnd`Y&{H`ZUx{4&$ZLjeF$F8() zZPE(A3Iy@j%XV_fm zb&Xj%;b(|+GpX|FrCLw0GHz{(HI85s^)?xzk#S*6y!U3zp2zl^v%Yxs%N(xk$SkJh)Tx@CUxfBe^_BmbGg zvSS+P;z5 zNQ+t$AG%_J{0NQgUCd_6@xlTvh3{&Ks$!-x<-j~lg1CsBijGxM85l2#-@0WxD6sa8 zPNVr0PZ|=qmT*>TT>+-0R}1vZKM1$qx}%`L-4v_)dj1lkuH8cJK`ejt8)jccW3Nr~ zs-ItFIfEd9uU+kcrbc8?(5cQR_c4QcUq%pMAC71Zf^FZy~2~U**D7){$4ukN98x}=SzLU>FZRj_< zBtBhFBNqb@(q^Exr`A!z+<0hr$$BestsA?x?6qPsmm#Qq6!8$~8OeAN$J&>#UNx_* z&$a-qxVxkq`M4amqnwyRmPO7q-O$O==P2kf_Q2ojcW622G)PWSEvw+e{k{14PSc>5D5 zhFNfnx$4rQqP?D2LmoMAIS98-p4mS0-uG&cACx-{EsvNP7`Q~QU7JP|moHE+Fa)|~&#sIBDYGs^HSzp9 zVWu+V15OIgP8JKD|Ml`eonHU(70ES0aK!PL`*<=b^vhT%Q*uTXjCHK(ePPqHaOzl) zVzsc;VWYq%41v54e^6$PfPVtjNqS7RXTx-CGX-AGFE-Z1LkGP#;mmWtG9mPm)F2r- z{<1X=Vf(tv|7+|$G;g@_R4X@@f+5RUfU&s{Y{rJm ze?X5VgSTd(_nPYGtp?pR_`zifC&fpP9!U#n9uij`dCWJwAJuB=tA?thi!@Aj7LgiL zZNk`y`#c?8viv4jEXP+z+{bu8u@_q;ar34!qIS(XUeYxSxa9Yue+ z`{SR4F{j2W?mLV1c3K^U0H%D;cIUPJm*G?uKsHrnttQVHnvON`EqkHN5*@-{+o8Q9 z>E|{i@6-FNE6s&^7)L;mx8cLdsbaZxTCO=5AgvB>O=n9>X!{ge>8_t-sT?EwicMP0 zXPhm=jh;p6mTgZah+awlDtEYFpQvx~p^ENg({=FNw`2OieyZsN9M9t0Ui$qheFO${EA z^+MpBCqJ!c;`dA_nz`(_$9i5{>S2vx58+%VRkkD)?3Bsl({hJ<5BO{6o(|An@#*>@ z+O)Ii?AbK5Qp+O;IU}c$3_YG&wgQ}jg$=&om_A8(Z$DF~hhbEK__Mk2R*FpV+J-PT zp^EcyUlm{Vig_$e4Boy{d1Jda&{4FtfZS-Ss;KZnj~6T^J|)9_`NQo%gkYoR@M%e0 z`ao8hrCh4tYNnyz$h&k#7^PRd1T3Z$Huf;Z$L^(S%3g9?l0>W7JM{dF!PM(Z_U&CC zi&zZYX5GOtr*m?DJTP3b(1H(mYH~h@jBx?i(Wv}FwED8&_{T-J_IrU|@TR!^+}ddxZ7lLC$3zBNT@$Xvr2y9YL>FT;XB z1+z6;&*&N@J+EM*XifFOa<`t08})fP{Gzj>aH-a>aX;+|nTn!zVf?Dt%!_!+jK7^p z!O;^ixuN=?r;anx>pTWpUca@J7&1fRr2Xf9a9*Ee%!Kdps-7=Dqg31IMLS|9Uv=+u zOsDOG*X4FYizs;B#^45r7t%x2R%mD@4_hR<^jW9}Z)p|1JfsrCJAc#6(ZFgXD~c?Z zZ}#%mt}72an`}FTFsqQ+@}rAAFSFZx;bUNl_ke8?q>PPvyeBIE^ z1yN36*DR@|ujH6phS}=2Jb0MS0NS=@akz{}4`r3+3IZO-@M-xm^Aq-VgQZpXPwZRM zPZSu4CD?pRcxVvV72?!MxC>4;aKaO{x8WK^h{m!VU)fE`94m7QT;gf)*qlIDyInpd z7H9MNOG!?S4l>IX(-$T5#T=+N^Og7z!!Dbv^)2Fohn^_OBpzoU0X&h-DyvvSehj?) z6&3Jc*W?c0%{2Hw7Sx&|>&+XtuMQuN0|GU%7T}Cn;ni78T6UDU?`mms+_(V|se!3K z08Oc%pcwrU@OxF=Z2@qA1QKs>VM*Ar%@{rdOgK`Dna@&l?)$sMHf$~xEenhNiR$mE zDhwy8?ZL6ytp4@8_;#S}{T)o&ONtiPuDNGjInhM!V`AA+a&TU|6EBbSw$O3%!a#d1 z?8@h*HNmc+@M|d^ejrzoJijz`cF!$3^O2!^f`^^RNFmK#MMD2+#P^;G;rL zspWvNh(SqR@K&ae_1JQQmkq&|muQj(d_9HsaVAru~jMog2n@tR#DmrLx`lCw9$e4kY?_~jMtX;29CBgky9~`Zjo&m zmRb)y61l%K87}u>-78r@I13vg3d6mH_SyBp6PBPUIuH3&ecxI?#J;04MS$rn=*U5K^Rr5TV zw_n+lhBLcWW{ZMe&nlN<%ja|_MU^V}7ze9uk%W@GE?9T$B4(zywAm&xU$(xll(bc| zFe6i^+MWke@~JVR!IdKq0?U0|?1aAT`}Aoo+yE(U^8M*qjR096&({3H&=24=;c4e! z@ZkRa2&v^t1894~v~KHD)3ZU=U5c`MKYb*YO6lX(XSa(d*SeZwr5 z&o1QO(_V+Lv2V;@br!jN>aX`26w_2L;7)F?u6l(u(-LJ>huCi1_~K6bZy=0-tK4Y= zsyD7WdbvNC7y6Pu5W8MtIWw(xNq2hs>_+md&mfVV!WSwjTU+N{1_tH;!R26MV=IB- z_#u^+#j44YYRff;w*g`dp+^Wjj(n;04i{FPnd`1zoouG%LsGq?+t#= zu0D5;iSvgJ?0!R$$~nVwLv?q;fb3?+ZRJwCr0}6j*KRZ`%MNKm9F8-6^V{2AeUW(V zT59C6*_995{fxh@-s|U%X9j( z@NZKM3~W8o6dKR@KYz}tv!C0%{vH*N>yFE-l*D@hr!+-%vPDzD|L)-a>(B>BA0ugN zSa5MJ`s>i2=L@J;I`cq9CEZn%IwGCY$wsrdIl{O>>a>tFQiHP$C5PCYr(uhsbNZ}VLKgb1ax z&7xf(Eh8k66*@})?_%n|y>{LSz+#j;6i+?>cH6-zVCoau+aU%Rll58WSEoNdt!U8gdwd^Q%g49_^0oN%B9(lGTCC zdu-L~tGg@z8J=fK5W-TQtZiq(ciX*nM znv_VW&17xNud1+KdMKMG{4WPZb@X_tYNH27q-+=?n{98tSkxDkJ|y2*)Q-5*KY>K) zNmc0J(hXjXc zkNfR-{=fWMFo6I6Bmei;`p4b>Z@%RZr$03d>HWLC{g-RCClnOw*=wz-b1&*Dzi5qF zA5F^N?74H20~}c*~tUx(Eu z{djGoals3lVpQU~E?F0T`^~>D7kS4E*GoXHKtX{+s3bz2X^QW8iJ!WiesZz5VzaDd@(m4NtoucSEc+nj}Q=b`h4@T8E~3b-fT+X zlG#oY>yVAoiZt_6aZ-2B{5{$EGj92_oDf-e@+A`((&{UAY5SV=wo38sIj4zl6kaX0 zGlB8|0?7oYpGVcIRs)reQHn}YR5w`q_r=I?p<~zQPyIG(O~vx>sh+fljGG&XiLi$r zgI)^!uP-j`$f2oT5qY&HcApq!Zn2@O92D+c*uLom&gGAgx-z+%Z2QWolF;GNi^|IC zEv|Ld&!V|?ruNpo5@Z2WisPtO^PRMt)@_m;3LQtUTZd)nW2JBl#?;BLAM zXZ-%bNvepn$lK7uYf54Fku!W8;9nwY$_NP*8t#LR`L<(PS$n)E&s_dVeBx>MHD9;c ztq$PR?}4P3d5w>;IBy=2nc|7e*H}?u>odL|ZWG8wkwXf0Y*dq!` z%BT~R^!MuyVxeBk?!&8c9&2wK)rg>mqYK5P@Fm=J8yVEek{c16E8#Ia*c(HRSeV*v zx0a@68r76T)K|AxC)bAToy~gYZVCbTeJAqO?wggmGIXr-iBtHgqgs>m3?`bVu$Hs6 zY6kb+H`b7s#c%H;Bf{s6x<@3Vq}1&9{pXGEQdtSZ&Z%BH0elS8u&mFTjK3Gxn?B0F zZ~c7vT!Jry_Zhz9)jJZiDLjEEO{~H`+77wJGapqA%oea(X1g2nPM|eOb*Px+x7qwh z&Uzhw{6amqhpL*ez^qOuI#IFArJBGzG!PN^s;5VL=f|5HPD^Ea4*;z<6R^St&In!+ zOsiwO0SY8-$>LaEnAn8!n0id2UF~g=)}=@e54yJGz&mYGSpe%+ue*KwHs=!q(ub~9 z7Fgz)Spd#PORZEZMMgy>mme7CnAD}v)k^#9QZWKBIX%7<9P{>Mv{N<-TSN9Lh3nWT z!0U#L-8A-5nY8@r_Vm$&GO;Oyw}b17NECU)bVBpgPtuaz1mG#v$a2YUX0%$(3&4~P z^2{fr?){QZ2Dk)VW%z8!_USpfV0P-G_Zf|0Edl#PwP;^UEd=On(CKo`1I1=ucLR4Z z0*heBaPm>^+Wz;2v4Kr9R{43omGRv*B=vRgWbnQpUt|#Dd@NojzRbNXS)JO zr@(nz#!BzqCGkjIKBF%^V?G4bWtoHn#r7ZdEKwC>zKx!dbIab%^4?v|yH#KOcyyaQ zW{t)>VE}955E6RCKj(@bcBpqv9}C=E_6gYA>kjX#!QPG3BSBiE`jiWYi;sFg0CEgg zeNmBX{FZ}^9U7EuY;2DJLQ6qOEj7)ohcJ%*F`VR-z0+~~VI6cWK+xpPb(lE)OQfdhYZ@P+1 z?|6wD|8esE$IkQDb-Skg$CFUVK&KvSP{t{A|b({O)Mx5#iW&)Chfa-I;dE9*V z7>YjZvcy$Tc#P7J-B)d2@=Xc7BtBYdIVhr%;<-Rk*mq!1aB=4JZZ9wT@Svv0?@G58 zn(}-FjB_l2@$7FerAZ;J$^1$C#AEaNUC|Ob4x+oPxLucOu)@7rz!`jCI4m14c0LBWc%%-|FUF$hWnGV$!(02cGY?aTLAzN zu3skE8g}x`oP9ay3Q>;{IK*by0v1K4TY)}UdAE1g3+trIs|qc@&z`w5_y9O6a`bqX z%)fqj2~!EUnU3}|yaYgpRC#=OcV+kntPk$EFv3vny2K5XdZPAEZneHR;a6kt6ay%y z9Kb{}s;548jkw}>Yx6+A9@o?cx^(A0ayG{=&eg0k}8!+lr=y)c} zV}PpQeTAn_W9Z7p8jHQ2CBwM#Vc$n%;yzpl#hsfzdWFoUaBIcB2m$oA%EaWPaOgnV zZ69aV_o6WUAwn|4X6cdWwm-Qh+zHZmb$f$EZtx$tra8dYl7-BKG4>=i!l5yt$S zrtW*{x@Q;T6x0!yyz~eXGaH5#K(_E}zV>@&D_rtcE^hosPkk2ggx?__u{%ZGCOo^a z4DQ^~vWv>7W9XGHd_Pj-bC}{h7HO*DW!K?T z(y-))7`{IDUYFnJWASD(S-km=T6gOaj+2~^%Jg-V)zwRup=10oxZIl4qXaQqPFH+y zbWu@oi3Qefz-<5H#Vc2m3-~ukOTViz8L%vhoZWw7x}K$0(z@%Q6o|a>uj$-B6Eu0& z)2d0^1%LrlW#Tz6&l9n|qe_#ZlOHqVb;VZDs;h!=aKxpXn$uFRu718h_rdEWeaChQ zi`Jmol=lER4qw{!X~m6&MlzT@zj23kE~B0$25cAcs`V(M;Z$)d0#t8XDxx^=Yc{ij z7+oat)|wxbms>iP*RirUZ$~rL#xanzZTZtsdnp1X8h{wwPLD4TrhL+#`$~3mqf?2c z_>H4+W9ZIzi0?Y4V!9#ro+Mrep4KY0yq!AiGD-ai^r&SUGl;~wtWB+$_1D+GOKiLc zo9@-S2YS!cRCTSW+qQHR;49e0RhH)taiL72gL=Z@)%NIvN1(54>7fPTBS{tDWpDJy z#PS#wur2|LVh7d3Y&%j$;5zJ)4kz~>x;vIwcOYqGSG6g|Q@Isn#P{RJkM?3Y!tnZ0 z!CGplmf;AF2DLx)yj0I!MlOGeqv@Q*ST2D6l-?XVrrEurR1C%#<|cfX32SfOKPPBFlkv?{5Arrbd$;Z6w)uG6_BHM z9o&1!jAD%?KUcS>Zr;Mu$Ud*zz>9b6hPj1TK_=*0QI7h@DrMTUFo^{)XvF3fn^2?Z zAEMc~cOwDB%g&yNH*!L%?J|VRH9YIP(+sH+_}QeP?#Y>8u>ylcg3kW#W|G*}SHK&* zP9rO#8W~xVy3sZo`&-KUvrfMF^b-U#L@V!s+9415lW;mNwGXlkMwTNeLp{$Fci$|M zHczg-eHz*8pgz;`vvEro&p%EW_0o&sHBQQuPZYDAM$|0FkW*iRT2?sx7+ag?Vli;1 zvu`U>;{kPc8=s3CaW1#^H>ieOQ)#iX*M`dNTZ`VE{&gY!k;%xX6;T2joX&x9rKY6& z0(*jy$G0E`Axw!RD<83h+{Kr;Gs7*G-2cLM?P#@~b>fpH(9w_}%U?I40;zO(PdJ~n>8qQz z5BM}9B-s1{=Ml7#l(UhTO^5t)?WEhz1`<0RYb6%~ebNUrpKUkdq(hGSr`e(t_X>_` z()f9_qk8I=f*lC6CInnk3Ji7Q&RE7WZsZ=%fX)J&-o5#ro{dYKyGBmMwZ!G2nK)Nf zAAy33%QcXJ9FQ{>j8VkK!P`b^QfJriQ4%~#LjM`pjve<9IQxNc=X?t7RyKR99scHn zf&ClO!h}QBFoW~>J5JM14VG7WT9s>FwX z_S{@(b;iCcI=E;*gUUxD+?T_iADrNN4q>4zx1Ltv30X7lzDM+}ufAloGECqfJbc6A zw@4J`DI$C37!sRS@BeXf(Err zSS-J6_G3UV?4sk($%dU=!}&r%tjfc)Gb_gK^!p&zU!AvvCLi+xnqAjIy=Qv0Xz;LX!%6G7{`7< zV(0BR9xpsSzUQjWVAQX~Uzrx$xbZ#o3ak&DJ7;Kz7e;ej<{zcsF3>+BTzYk*GhFPW zdP~TctQ`)yQoXrH+HXBbPbe3Z!}k@6*I0?+1?skk$pm1!OQtk(Pp{nZ;u)`sZHD^n zQ;Ww_wJ|kGd-mu}@bDDLprNMrgQdB{&%4jA`&Ok9UZvya_i3cfUKEzmP^-7+4ZE+5 z^bsnsiN%}VDyCpal4P8ksVA1wGda~X zXxLbsQL=>F$rHiCv{mF0F1yuFr|v$h4~boZ*{{#=sqf#Rk$LhWHdcQu(0ySTQyYt@ zIk>m(wcK8_d~-=elNiG$E=4T*4bwQmr3pVCCk{8ccJpTEz(J?~Y`USCjl;faL1TZ% zX>vCKPw{mmHY@`4wj?y_qIPERPCMp-W^)C1;BuD4W;zXN=ty*3L$y=|T>5b0K{`vG zM{H2g!rIr6YnW@rfMdy~A-DgDY7U2O`R@IO3hf;sz18oaT)sSo0Hy)bJ3ZZxzE^kS zP#Y_9@*<=zj~=Ci@sSZ~@@&IJX-MV0;ZStk26JUk04I#0&;%(^Qp(RJO zk=pfTudFe2A06m*ocj@4?7idH=MK9G1+KZy$(~*xiB*Vdz&C8v_Bbg5%S3@*2;He$ z+k-9%^?u;6G`~m-@>5>?*WAa?T|P7flP6&T6EsV8M_G1z{2HCS=bWZz%wuYA->LUX z9AbUZKb4SENsQp_Ba2XAOESwtJf));(QPmnNdjVqpPgQ*`-lnBusbacgaG8>ab_K-_EoizNYOke#M}^zJ59?T&}I-jnTsbeI3T9=94Mb zCt`;hGlxW;A0V-4L5#?x%Rq_wl95ntJIKQ+?)4GkV!nN2?>y$2{AL-4w4m|WTjiQ6 zJVBY{BRW(RvuTc~EQTQ)F`#EE;om&LwyTsTRL7?HwKjMn1VwR$sQ z76dgwBiHLQTN$4sr(SpfTCi39=apFeo(i3Vi5U{oegFpu0Iwld{MW7#OVqsq6>;}z zF!`&&1{QiZ69_8hmZO62wqr0=m3fZzej74g%;;du4{9(}o)S; z5Xq$r#U5b1oXh*_0O4JA$g0nb5AXqFz@fX%q6YMxG{Fi{rsZYjLXzUeDNpeEi$fI} z(6*#$Sk#{7$Xr^cS#zY*pcS8Yd1p(!Epd2~XlXTjL33pV z&nZ4T_$)mht_^?OInaf$HLw`)`SDJCR0uc4;&(7_j1l_vMVyb2|6Vt7+Vbj-D4d+b zg1}WbqpdkauPqmp|L>f{&D@`VcKy?A`%9*cQD3+MfRT4L7>$h)S4S}2b9CoMQ-6e>*$*+%5 zG6X{%jjFn$ceWRi*b?_>ej~{TfUe%QTUb}U>nJwU`N9`##z1ImJSZw6VwUpT`GiVd zZ`4dZo$soOn$H4#IaNyt&Bbhra9}eQGmQmSrpTmx=m{*mpD4EFnGP?nKyoYHyC)g2 z<|YT2a!y}PpxPE*zNM2XVH&bk-(o^~RVXSc5p8q<~ z9yOk3uc;{kdhd`I5;@H>6vDt4nP|`a6qvz|8JF9R&FI_VMr#-39?)AHn8w+eSo-8l z8*LQdJA}9=r}}y-S&e-RlonYu-8rafF7e&>T*-p}_Z^5&&|=x}?Yj}41ir_@)#}NT z7zt)-H!2z$aXcN@uDax;$X0RMfaB8IBu&)P-PA%Rvb;=XZMyKKIs;{M;Ht%6oq!4 zVY5VnkDcFHz5IlO>jl7&UCP#*51h$*DI5?BTc;2X71KcFXnSz;lj{m0;%*a1WSm3z8T`44zS_(R6{s`2+ef#RMJm~_b#zA}AQ5i%UP1>o7 z(iiy*Ax(DH=hjg-0l8aD40ECM?2}Y`DQpo2vyrMPA&+vy_w_D5wTLYnN^+fH zbkpOEgXjVE)p_siDVw&8SKaDTm<>3EGhn4nhEC8>W+S6`Ep?|;v-Vi)Fex`^WF6{& z`m6zysEy@|Sh{oP%=+L1obg!YYSVRPvW>yc#TNbDttC7eFMc=ecI-lk<@d48OJZ^6 zeg|4djNzIq@n%-#mo7^`*W6kfve4zJHj3KX`ns2pio@hedLPz@JNG4ptd`~k z028a;l1wT_CuHaqVU-vGVxxyi(!%4#-|Fev{PN^8TH;jw%uH1>&>LcQh0d4R*gm$e zEz8s-o10MP=DuOSdE+6s4xIfXo2hzKQK{@17Fpi6eQyM-ZX{qln$*Ob)x^ild@5ZL zbCba$!leg>9r)v&XfBNdUBF@%UjBfg79{?c*CGFrwu80p;~o3=CFZRyJF}@=V}6H$ z9{|;w486b(q*IB8J}jVPapm%}x&u;Bb!vcMZElnLp;|ZQh2ft+%XVctThP56O80O+ zs>H;N)Fg+tQNnpas{^nVQUh3J3OhTyN^9wp3E)NV80UN zJ@k6mkXqjeNZkeG)OVV9Ws6_aJ&}VhR!U14O0hzuK-(F5Zyj3~AC@uZJQ&|YXs9|K zFKlbrBsPU}oh+<32A$4^&P$tp1l$EsiyQgmoUPsk{FRRqDT$LSC}R1Jj1*`<^`lmn z`*rC=JOG3oX9~UZZc>w>!Wh%bk}jIMh{yAnBgxr^GLN{X&@%kZCvM5ad|7VQz}PZ& z&a4#+0sKjkAAQfNC$^vmP1gtqwXu_vgl1SFn%f?=leKd!+dRLo3t=Q>)tyza<6!f1 zoTs2MS0{=gh2;l|2mkBu|7|US8}gq|!HdxO5R~UT5&Kb9esm>hh+7^k3jy2kz~%av zZ=;-Cd8OQ!T()@FI20S3)#7hD$5=jb1{>GZ#+fUhjELn~iDS^i8JFxYU%?B1L-AQQ z!$2IbocK2Vb~z|1MtH3IxercHzktFK1{Gn96GRr@pBGz9=$VsuA6t!~lj&;rzETP_ z8`#%PW<+0nka`K;a!0oh#s`skUkXHkbSZ-A%*OSvBiD6(0kwHq1xfZM*=!)8tK3eeg&!h;1Ot zliEbnFF@SshRii=c745`K3lT3(yaT4Od2}jv)2s-m5djIJPHwaQ=MkzTCgM z!AtD;bTd90giuLFsHmoPU|d;SLNxPdn?4Jy*yi9p;Z*BRs&BbgBvn~g!w+%+oLl?z z1ZiZQb(6U)~b`utAJ|;Cq-oPE3Xy}ISU^Ab32=(5`vv%hY#>Q_r75yxjt+Puqw0H z9fWU-5Cn`}{2Bc>*&WxB?a6+TKp&JRW1YCJJBs4j1Uv2>D`@X^wL7!gSou4Dpz5f% z*xilXikLhykp*c*KN$w zs`zVT^S@MojzgXRTzLu*Y11`6OA|pw19b7X{Q!`;ErJFHWZ8tePY-vmeI_L+XRBZF z+3E!X@Q{*id(fHxv}z)_)w_IW6E~lQzVl|Q>&xjUvTloUpnQtUSOP7f{!pLvEb^PM zV#2!R+-x+nOm%DMe77PgUD>eTA!%Rtoha#htJ$xV8jX2CgPpi&f{$bg^b<}Ox8RC1 ziZVYoU6R?VT2IfH&?+%&wudOliiXe4B-*VFxVv!!86bNg;;7YV*4*AM`>N_46w+tY z%EoqK>MJGjsNRopX$)hG&F*FvhQjAfgtKWbZAD;lL%r6Rj7RL~O2$56=kp8`)o-7UtPUcfN+@mM08*V z;7fHx(_rt_X}xq?@92{07s(5*c$`El?|<37jvWuUUNq#XGLuy5KVGwp))LA132b7f zhwNpdI;S@Jm#gv2kQ%pSOSi7h40KF>VRe_vRV|!L2ILu5t}r{4MZC|<2Z+9x?5#GM z$iCU;;PZzdhja^>*+Sqi#lYE;*%p+JpegCOB*{#3po6z9J6m7B%;pBFT@JegHnfVP zLhoAtv-)YQ+-xgQJ!6-a9u6feI$smI(rrQyxq?mY>(&5z1WyxcL4P1g zDxiCu+mG*Ygx;M5U%8zP;dqf|SD#Uj#-+Y~jd<1Bgq&Ourk#jO70qv0Q1(K0_NC`U z{vYz*GN9^h>l;-B0a2t;8l+RCq!9(AyStH;ZcsX;Ytbd$E!|zx-QC@FC;OcJY~A~L z&$;jYdcQ4V!TirP=a^%T@rxOkD^+{8#F|YG?)=!WUgx|B-&xvCr5tdk%M_)sjwx{i z000$&&8I9-XR5iIWlwq8XRX@rIV*9{f*PdAqOW3F1z|hEtfu;{u5k6U4l3DdcTg4)=kp9xUQk@NOjf9evTf{E{63bIF=p+n zTmOFU5_wLwdQgI94Dbs*>f6)3A+${kr_rZ7bC5B-LNOS;i<) zx3VhjiDMet(B3H4wOIa~t>CKJ#d$VECJ=~Mh8Ivi%ocUk>&<}67DvmHwo?s=`o2YY z1OFu!scHakyTN7$3*EKS<=3t^W%J<-<)p-(QcMk4V*Q1_669S0g;E!FJIj)ep>d$7?!WxD{C+r4!>px z=JIOC6vg(6rNCBo?+sJZ9W|BFrAft%p^H@R9wQTWsj8OtnUY|9KKDGIXEY?WUj1&$5!Ln+M zYqk`{Me>(CfhTDm#?R`((Jp9q;MS<@XONyT*licJmrP&W8+DAxt1CThMSWwE;c8re z*!3|BMNM|H!puxpsc!lj=k4bPj`E&adM=m5r>@JITgWQDHW5eJwrt#o`^|@aj(fsP zR9`M5mCcyA1qFRaVQDn`mNISj0*fX&m(9J;HMiUW_xe%-&*?M7dd-;RCH75RZMPLOc78dI;T{Sw{Ef>u&YJ zFLt*!G7@^S5ni&mxZ!Y{tK`>RQhpjM&+81%yXuc&Qs(ElbBnMeKkJNQw7V(phK&{Z ziM5>tJT~8qN~<+ruMyWhVCtSVi13ZJ+23>YQ z8qA1!dEOeOR_=CJvD$8RX#DN^hiP$4P2HIpXzkihb`?5rG(6Orvm40L7C>#ty+Xu3 z^@#{Ks_SgZd)dvD6?tngQEpNlQF+a7e-RtTt zq*o;cHF`f*Mw3V5kK`|LNLg7srzh$FC@R`aS26+MQYxp0^|cFxoLl;yvCI;Kgzf-N zWt6-8?s7{UFt7S`yH`ck9PRT*^Q6bRA~`-(#hZJDKed=?ETBQeWiy!BxC;XmUgn|d zdyP(m8P(e)Mx)Ul9mjIV(JvdWcZx)2wI}H(2F1kHG53Akq;a@=9uv-1TR`RAm#T3M z^Q3>=41$C1(RK>v{PqepY~so%*}XbW1#+X=@&QvWT;=D+dn0`&BW3Gynr8`eD^y3> zGc8Q?bDYqyQPwf&?Vh71Y=WN^I+Rkad>}!MmpvtEr5fp^Y$j6ENiu;+G=A^ z3UCi6DlMZvwjBmRK!}Q(EHe~LiSRHu+vOxP5qIx_VN@sw5mjo)A!VoT+-{=A zUO0WuU2j%+VJ;MZOjPa(a7rxB_huu_shlNGYV4g&(`tR~Tb%G#CEe3h+czG5;L`HFwlm&Xf`|>t)fzIq?9YiP+mu}@PYj~rnsO|& zRJNw6k{z$jkVS4Vc3<8uQ*$Tx_3^Q?nXKnll*>DBzo&`%NA9HYdP-z;10ZDQXzx~> zHO8;u?azvx1+By~6oksd!%t7FFQ-`ZCPoXpB~Cv5_zxA4V9Wb!tZ5tGKUWYw)W+8; z=-1UX@EU!wXR03!AdF@MeW{kuv}Rw{j+jM5n2s!Zl}|X5!=GbE;sI~P;>nE;o+){4 z6uAu6pXIo8U(6N+nr^M<+vq`*w->VM)^X+agIaw z_qR_Vy#=>I(!9m1rq-4Qt+fOpwStyBd6pJw{^X2KI8z~*ra)mQoVC%0eCW1v8iC6`wf zp|8k5lNe0AHINL8`2FK%qr1iNxMY2hz&}y=^EC6z2x8q<+qE<5TOb19{VM|W{GTF# z{fbL@MU|Q;_8;N-#JC&l@00q+V?QJYOq~bu)c?ctiAIpg#-Ux1&5nL7*y)Rck171q zVpYZXKVFo7U1&)S&~O^GuN@x$38Zy}H&_J+u>Icb4A>ca1^FAlotnSC_s^yO*Y~ce zk(SqP*Af4m><;;_Z_>Iy0wb^9`@KxX>HhaX`S$|X|DZyGsqRBoYn#}=KW+&HXi9nb zD3noG@SHkowA5st_W$v+`0FwW_5`a#alY`+Rq&+Zi=H|ne3k*}OMFb_A7tIze?7y0 zd)08yYQ+8%uMH)a`@2%VFD~0S^}SPa5(+_Wkdx3>@%p0dqU!*M_ zWK?qb{2JDjN3c?U<00m6e|>`g<2>E}08RCNx9(Q1bo^`ZoTq0XX&~jKH2$#l7pr7zRwrhSJFB0UQ*|ln~ z{b%$BLJaf&<-h+r%7>))l(hKQ>3^JG{}*orgWw@R0F<;2{h-SK*TenmA0TPm4}2V6 zyXx1+`RnKZ@fCFOeH3y!g|PpxyZ1l;#s6PEvIJ$r>Q>YSGeCh;dU$k!YZ@p(P0~3J z!vBAmLAW@Tq;Xx1e96>Ecs040;GaLk5C;B>{^y^e>i6AwO)9bc=JnJ>#2Emjd7T&) zdkj+dpg}{uOZpc>$(IL0Y58|n>p$b+-(pEI8o9;89vg|`y3L@+Z!pKCfceA5bXv|Z zK=@_L2L*eaLr;`D#~M%mkYrZk4sSpLqU`Y;=RaQy3Qo}Va~*|)elToXOEk&<;P2L7N={H2P#60MzTrz z>(5g_M|I4eikO5%sAqRZik?~|Th>1~DT#pf<~VRLxq0IdkW9LQxUc6+b(8nufgGFw zpg>W3OG$$Y+}%Dz1K{0PdMjq%ScAzay#}pOyeY;1^U;^|7S6-NOVDlvYt)wT-|3Xa zztSlJb4P7r64uWD!@~O_d_R9=8N`Ct<}k0f2r)9K@3r_sD`s5;fULPz-|qFrkxtM0 zK(XnJ(%3}#?Z~&DD3w9=$KZ0toA>-^w`R+9LK}vKPNA^jQ#0=Z3WUkhi(2Wt;(Iz? zxeKDb2yLbgJUl{deUIZZ>tn+r0a>@pH90lMS>(lVCo?cpK#(IB(L#I^?rEV{=B z;c#u|!VdBR{nnN8saySY04k%l2MzGzI3T&TtYH0d9&wjiREfEdZNghK!n8 zWU^w9005iA`2(<(6;6M2FDV!f$iQ9JTOJ(b-(AUlOpn+b zY9O5J{2PDgK1e?C{o-<~GVQOYhWNZ7((I{jo^elFH?*)8uS#7&ClB0pVr|KTg2l;{ zecD|N0jPIwp7SVfk8N$A@I9fCm`*b=r$TI1RsQ~?y4n#AazfUW?I*yiRRLC7tDGYXA{NAb6m$km!iE6a~%wt3)5&w&0nR*0I_VA}~aZ&2E zPtx_p@g?Vv){$Ri2%Eio$)KASPVs)1<-l#icVezzcs9%j@c~RL=NArp%bfSX*Z#}( z%`28W(6aS+eCxaNf=&&3AYZk5#at9GJSv+V(tV_}c$yW1~d> z7!1z5fc#^ge*iQ#r)cyWUo0jA9(WY5nz*O{=fh=dBIdb^$q?Z1K&e_49@hpySSwRH zsg`2!sHERPpx`&`7|Q4muD(kBc;egH2HY!BxN03y`g2sT0v8iDydl%LZIAzEP4HC# ztTUJ%k^Z40iXw7Fc;zXP<&`wsE7?tj`COm42u6fx)^H1wf@5D{Wt(Ff<+`}IL3={B zXHTD6KR`4}*iN|C-jZuVeoJ^mcB@YbKq%s}*>ci3cnD*w!&%aT@+(%Kh9m(QcO&)u zRdj3ds#_x5ZJID9g__=h2~UIN!f~u}6%63R2+=M!oA$i-LVR_Lytd#D`(cq#3j^Bn zM^$9|<;_`7ZaAtH@haht+qvQ+Bn%*7b(a9(%8@!GfOMS;}Z z!*&R;5$I$sROTK0-syqlP=kbYmS!}TA3f6^C8yH^k<69!@of#tcKTKWUcUs$8WFNKYLuVctDx4V*sN9E}p|-S#rsz1GlV z@sDD)*_|e=IRA$y+~0O{3m+6lWO>!6BD;&WGK8vPy52&h819QWzx5A2HD=7RzJZy_ z1&G#LlYF>-0sQGA(dnzr!f2E-KC8XYoT=8pf+EmBe6I9#T z>1-7dkK+TCd>+P`mQClC5-B#n_QIugPFA>`V-`vxmrDxZp0>gtyy?&K(O_Qc->`6K z4~+M*dB}i$PQFC-v}wv_Z-Ai>4syX|G{;r@T~Zn-!h1+cQ?NN4E7%G1aQ<%6^8n5X z6?!r6%fwGlR$0RXs~Y*`KzRQIlkGQMV%uFf@_aonsox;^`?B^Wu+mf@-#kZ9@jchZ z*=a?s0lwI&pA~0s_v!~JATUE9M@vobjS)6CA2Y2FDM+Nl#pJeuJP{T~$W}-u0y&$2 z^+{P#Sz4ltp@6LC+bZC3!P^oG1X?XJZf~wa6AKb?yb^z`76IBG;h8pBpl8M!gLHM$ zDvi?5tT3{TpdxLLt$k&!we>|3p@9brZ?_@cAzn|fRQ){k`xE$L?=E7`VN-|~eUAWk z$k!P$m}qsfY^x>n%SAi0$#T%UTE`Q#MQy@Cj7H1#LnHZY>56y%XEbj@-uiB)TPo-u3c9zkYDD@ zzAy{=_R+P}_a#(+qIb-*1LrcvPlF$|@x|n`mr1#|!)JCX@X&B@w6f7q89F0rawyei zOZ4ePA#Z*2)$0j+{j{`P>FHOq!rDEHq?DBQ$9QAdm_DrIjNH_qpCR3y)!%te-Q?Ld ze^P;GcAfmOVFpCp$Q;gp#`h%#&B8J*cCjrDaVQ}?DoTF;xRZnxlbUyLwl)5Ug3G*3 z>3=Ncz>7uLufb=~twCik@)pxppS!dI0*&Mg7(ct{*zaNyq~9XdD*#@mNdz8W9iQZa zZweS2O6QE`t-JuD`DvAwdcp^9FbmJ4;{EPkFnEoJM7tVmo-LPd9CKq(qH2uI0iaga zqAu;(>0t^mg%M<#2Wg1}*gpn<4V!HjJ+(i+)E=<({aXz$qX{kWK^ITu4+vh=H9cBr z7GSeqe4D3Gr(#2)p3ea+O=53nOC@gxf;{`K&UVsv*l#0D4p+PBD(FuV0bopGPpwww z;LV=*+H37Lt18R2@@X1&X#v}53~ga~Bl^!Plo6tc{oHX8)GrT@Z@3PW7*@UiX7=&- zFTef}BFM6lm5=#p_m4N0omNWLDu{^ zjkp@w$r6MeU$@8>sg0eM(Q19~-UN|#U~?n~{wOIgoQTiwMXX(=1)XASt!cun9P0Hm<$)36b#}+%;37s(QTIVY-Qqedb2ED$N?}DKycW}ifTXJD0{n4Kv z-|jEC+ew`#+r`T{Y~*gQYg?vjB^=KH=yRopiFG#B~SxOa;jwa^6n3z$`{u-uvl4;vXG! zD2bS8C4*dwu^dSUturtQ983r$)5|C=5axMdIT1Hp;fPD` z*5#%ur*-x(FTMFI;(0<5RkbG* z7)oqjDpK+>gvcTeoTURG%=QG@FSS`;e5d2aRr~Q#G7L&jom;&`d;d8z&g^VklbUWu zfx3517lr)`@gyqo94hDVovY`BOO~@!-N#&|1%5)L3A2F|4;f0{U?!*$F7A963==G} zQQ+taK$g3xbG`ykuKxWafc9mVT6Jov9#N)zTLOaT%e%J{|I6plVhhFm$udkhzg&jc zap-NO42DF;$54K!IC5B~0~JUl#*8>Mms+O6j}Z$ILDDhhodinohR50iEQ+Yy@t6S1$~qq3(+ zyS>FZj-X^lID%4;Li#)LnZT|UQ2d^tb-i_xX#izwGC?8{y}khxP4Z@y4}Y5GcVyL*OCr6e+Xz}hX@*&84h&p|VE%|DqVU(jh~eBC}dsg$r+Q}77( zd6#zZ8(pD|$OOLEj`zn&0=v;68|C`8h*O>OC)hQ--YP z&+?;Nr;MYqkA}P~oVgC|h^K4!x+zW7>zsV9PJw2@r`ViNu-?WNqBbuX{ESF=PHR6e zq$rtDCT~+^&%r1KdL!aTuF7n)?I}%qp4Zgc-f`Vr?b%#Ncon;HokjavHbNb80KdO) zZ%^fW6T*bJXAkZB$Ls@fCenP-gZjq;f`Tqsu&8n$sY7?|k>Zi1#^XkiE4op)+K!?Z z?E$%hu+v+PiUo3+Oe960J=2Q*G2EyFrt{q$cCo>%p$y;N=BKa1-adwDIU~Z?PFMmU z_10R;BTL5ZAdcVmq*M2OZWZm>ZDSMN^8|8{G*j&;j85g~$Q9O3f1Y-MZ?L%e6>$lJ1u$J>@G;Fh1DsTvC;pouL*{1Tc>`UI2TK88^$7E|R$pR>xBnrPr?clz}pBnhbG?o*{m$YX)l4Kp{9&KWKOHHa>n()bv7a z=wOK~Q@?;KTSIzm-qOp{XDD4PB)@giL0z5OaIDT9?K)4bmRF9+a9RegB*-YXlMx}a zJplJTSiOW|M$I!fA@khfr}%G^Xab9@0A_q+dO|v!XByLRyzr~yLjbboMlh{MMyM-8 z#<>m!$dwQN7<2=*X{Eqx-|C<;5w`b9H1udqQ%I9Zwmw1s7I*^glLqUB3wj0Gy6V?9vzbnq z2CS<+5#Cr#hCJH*L7{W@7EO!XKmk78;RH)4#2g4DY|u5v&uQcYz%D+ke}>J>Oa)mh zr=G`SaQJTbC?7mGhgi3KF529qC5oROzEMpv__>*?-a$v74aw?QB3LF4HLf{Xtv9V= zm~X^q#@!#EW;{Xf+Ukm=Rs6o%EuTr;`#l^AqvFWEb#Be8NVi*VbE<$F2F5d{_+|M! zJm}x@&_`d_<%QaiDX#^BSkH8I{ir|7HFa-M0BT@eu4uciW=Z||0uQ|7fz@Udzr_M? z?lto268h~>JQo*XUt887#HRXo@FL0e7-_uHG6Schk2aN3Vbx8D_h-++>5THhvhDUY zIhn1`-QP3%26KK{bEy!l`nRB_xjWQLj}ND4COn7d=F~@vf~_Y8Tkq}U!)}1@G%spfP}rg_hQqAu z{uiKzL;1n4&H`7r>&GBy4x~{PWj$1wudrx+BU{t6%3AXnLtR->ad3{eR59sGSXRE_ zOYHNWIQn=cpb`Uy5?AN26Z82iVr75ZmBv?U1aj?H30%%X&u3;<@B zXc!p5jB%u>sk1>&yJeq+<8He6a9a90XPQ1E-MYzm3SDtL?g5N;!x+BVp$yRo@JxfV zb5lAg zHf1}MO(V)bwbV{C8OaHkS zOQ2P+qrN&a*GfJgNcHx`P40y`(mXiq=eGS0%}pE}H;x=z&vL%t{gpSj=Q*ZTw%QC^lZk^rrP`{cZ+*AB`+Ml_9{sc3_(4Ur9S`W=0(Q%Lr~|16 zVXpV>%BS|A7ZAiz5rZEZT!SpD*4N zV2X4v$3tH6Hke&c5|t665d7+k4qhXP!|9Y!^Y2jQr+wRaKg*AbAK7ZOz;rN)^y_cV z;XUMgTk~mX&f<`|1}M{Ic6xrE0lErPi*zG6G_ zWP_;J&B!#7&h=rX7l(cPdWH=y@goc}Z}dl(XQ`J>Surp^ulNIrGN3$L9CAPrYKn$E z-{N?8gh7SgO5w^^WTq@u~yOsCI{k?N)<{mo8dNGXO>P z;=tCq?c6-*D0!^dST=FXY5!=?sxq|;5iSQw{3*l}rlrp3K=rrCi|Ag0cyTLpM|{T@7jnU- zR%Q`RnJWwXlQ`v4HR+|B!^t)+^to$?^U+1yk!&Cp!dZLJ)%)p!TLK7E3eh6F`%G|r z%NY#2sO8(YI;n=T@AqsiUJ9gtd-=)JZv5+*`AQdhwrq9&bwajM9_dQ&8Zl13cgNlX zBO@v-vQtgk^RHfrJ5xiTv_~$#TN8?^Zfm{8gp_WeR*a1hS2kt>j`(F(Hl2>w*5gl_ ztQA?!@VTtyyRYEeEirhH+zCj8A|uzNV#|SuOZCm@`*Q8%(|%m`Oy}QCJinfQY`89X zd0<}l*vR4H0-m2%uR;%dL8M#xmYm4oy}X_~;iAatPyMxN;|ZKhjYeMN7aE z*W?LFb5v{6L)Kf*O@f% ze5RnlSYt9(&uF{rM1kaVL^=!;?wJR?mgH1@{5=+Gy2RSS{v^T>Em_J%p@yiI8u<3C z_U#xfzqkb6=oF!=_NBK)G@M7rGF4qP{^fT!w$&n-w8l?{KL|Q9)%`-g~U7u~>Rn9bvT_B%oG44yW5RJ>Pb7OeWyV@4mdtHn7>B|Ef1* zFd{~Z0!(?3^J}{|S^(J$KW8j=q)e-?#tczUsZisc>PRL%g z|979cDfVNUawjp{&0~MGLCY!L$8l)+7#J8b$xik=pAD-dn~`kwn4>2P&BK%cv>xgJ z=@EiP6rDOD-;mdh0;GTJAuPfa$kCG7%#UoFKwn@3G){!bbQ0FUh+iTmucm^{fk=P? zNKau}I=6_6^Ogblh4c1>Np(^rELdz-FXGX}4!}Xl?w>Gm5|e5$KqM4V70>BNIx(&= zRHEO%eD(}s{{oLfVBR0I)UH!1hSjLNXDnYfjIy$_vvk4rjZO#85e9WqXIRD)^E=_P z%bw_x!^tJLV526*Jbwcs{XU#*1?TB=_?Ed4p+W;kcRLNuYY*Q;$4vlv7D6xoHCPiM z(ZPFMW1-MRrK_V=lN)hI(IudZ3vkJLc3+MXxAwpwU`F-z)W|~jdhILo-gBInsw1KZ|)FslbH<&`Bv%J%O8r zN~FCVM>-I6!yYk0P>8G6-D2K6x76QY%gq}~FHotaEb)92jhT5keY!hUu#=u%0enS< zj4wmEUAfBQP(jf-jA%ozS2=spSoKke=0kc|1QGkEByW3(-Xq%7&KU5IR{~{^OWSJu z)X26b&KP%Gi44&z>GWrJ%|tRb7c1lnKUsOtCZD$Z7$?MgMQBK7q5u{f`dJ!pAZIlZ z6_iL?LIpJuKC{&iYOMoi_H%w_&~!~pDtXu3Rtf^Ws7*b%_0|Gs`%!dS9qQLC6BL0M zk+eHRE!C+_*QF*$+K`epO9}h1yz=CzD3+oh5zUoJw+f(v9fa2CwA4npmQqfaxOOi% z!&lu>d3}9hX=3d$cUJ?Iu5E9NR9dVuPSAoo z_+;a$@79Ej3PygX5Gc{g2yT{xjT&~*^!T|-;ioWvVG2c-)gbfl=+Q>7FSuQZU|?W6 zQ>17~%4DmKtE{oD>`6)lUhsqRp`0GV6S0th(k59oc*`*~SMeh0>jPA>@bq!F2fw60 zJT=7kU9CpC_qX#u@rvZ>+y$>BRU(0JQmTnw_^J&~dK;tRH9CURjZY=sZ8~1&qkqCFt=jG;F zT@C5=CDtePZVpl>$hgh$y~5gPsZ9qaXOhic&vY4aP>k$?yjDhElMg3b4vUyp zmC1zJ1<8ItLI_J~P5hP9GIbr`Ew&Tl zt16Wi(I%J?PwHUXo;sYai*>~cl@V=ae!D2Ug7&XC;&NC~5W2(7Bk~*L)Jhy^%!qK;n%-9I?Cek&$vLu;`nz2; zKDJCoe-}lAtp&`hnc09=Cvx$^_}*M?6dy->MibwJOpVit5C%5ayrdX|I)-5^LYnU)rI$AQO%GmMxbj#$q;2aBEKd&JBM!W8v9aiP0Eh7u9qW zu(_liYc0^zddTqW()#0R7a1PLmR5E$^^Z9|U@D(DRHEa&jIB|h4%|`IcKtP|s(+k6 zKR_L%7;hxRE;Aho1)|bvf#ZNPsHM4)5tL{EOsx&=KcIlNUz$==?_1Y8r)9`gNHN^| zIAX!j58rc)m-hC|%JW7;m>Zv`--H31R8NJf{Ld`38Mn(Sks`6NFxXB zZTR(_+l;m-jK7D8v9XTq5NSYGE|Px?0)`J&quV^_^ioZ{m{3yk+7;izFuJm@+a`D1 zNU z=2{=qxX#;0QG+tz_2f z+*iL=H+Tr@P<^7HR@X7G1W+b*6HN-F*k={NKBUED@=Sb!HLKs4jj1#IF0}>F?3NG$6LqqO4 ziwUv=Xj<+QHrbkV@5Duu!P2a2awDzPFw$=sU9!B>h~bChlZW_yfH0iKY~mW4vTT2J z7h0`WOn z24)n}=@Q*PL=}+FCkBQKMZ3Z&R%&U|RFG*Y?Jbq_)`wJL>1g^BxtE{OJJkzpUB`lc zn)Ny)!3?Nud|FUH@_dwg5X&|3@DhSFJcg9t_{l>Og=iDnbgoVm(^L4Z`cMEilMGDH zwyCNxTny`I!CVrXp@6e^8|Ot{l@JGVJ7cch%_S2IH1x-{qtXrD{^r8VmWV2=n2Q*; zMA6(UNIAd!;d*1d=uy$f>$8Pdo|b3nkQk^o zm|wvjU*EnXPfs}Tmau(SxN?%*)ws8x$0=hi|%T{=>06}0cNd(Gx5`KTgkGQ!BjGj$K>&F^lV zv4D6fn#Iv`!7OR-Yo4R|MrS3W^SHMz*E#Tz=riDGyx!dYd>9a;7RNfxm;3jKE7EU| zHdmvrgv(XOU&x5Os2-EwQzntcOoa`;wP@O0l=|mH;ZLudGtO#pXRioMmV$bIK z_OOsuu_u4I%Q%r0+RQj$y)CRqD`PU94sQGQQg}Nlj!fLN@;HKb9w$V@dnHf#E_oXf zv6!{mVRyVT4AfhTzEepo=A4w{_mN+@-Jsi54MIE?|`hHlYtA%V6cvTAE$| z(2#Uh9MC}$LVs)MHa+ng}5Z@w%$yhW*YD3~k! z8i>a(#?pe#eQ|9EdZ^o$7l$wu8i;G zG#8>SUQ;NsQT?{B`K}n{x_lN?uP7B$X|UNS#Fii4Cf|I+YHNhrd5;JxCd758&HjZd zkgj+2m}bSRp*C5@7(p$`J6)egK6lyOu5p_CGF+tQrQ%l8UE0+L*Wd1$ zK1P2uE>y#6ITJ$yRNLsZ`n2urJ#UCNF?R^O*yidiV*xrz7?o6vKo~*zV%cflpXbnN z_2mYcEsM!C&)xMAi*6T0vWB)x?Dk6&H@WB9Tf9VMnLpg=9v(4&lK zW`++)xUL?gir+tK%GPk$Y};L0wuyw@jKeUKx{2Cs4(F42g9V0P1`H|ve4m{~H1*u# zbGuOY+PR!Bz*5XJZ)fzDNS9UaA0HDrUQvg?*5utdH_lfzjvUKT7U=UmtF-UNn90B3 z!hxN8q_sACw#U7`nMx&{%5Ob_lVN)ESPy2=X|GeJ2Bgn4avy#eekEO)4;Br(atXV; zE{Wz3z#-(z0%cE3Gig;Z>rD@pu?(@qblB&3ZE$h=;)z*Ht2ft39!eU)9r06=H1?O& zrHM)}yixmGoSjJ&82fj3=XeVpuYm~JihfInq)cTfc5ghp0K_mY<=x^t3^+)=XQ~hD zuj%=Rh%dLCqLR2Ifv4IF^a#PJSk!K}7_HrtCoU-5#)Uu6ft&a7@)EFCYEN_o<;-YTm*3`SPAb)q9_TU=l=SuWwd4=4y3JX=j6@n! zsqcu??+W*A3&ed@eQ|z1xZ3OR5VUy-k5(!VqSIm)DdTxcrZI@x0B@r#U4Tvj(R4?zW8BE?b;CnfeVlVAysp5x23J7xCBmJt&t8bPRJWM< z0QG&%1OY5QYf5A$3;uUYjl|~hDXR_0R7kL zZw_eyz#SQL12C~Z@sf(uoL``6?{_=Rof}iS03!$;661II}xO+xRKoOoBQL=v!P9HJ8JeDNn{RIPrWK;)>&Jhc)zu?&%y^4W?dUT8f> zSQW-I7^y=tbu5Rgz3)NkgrSlyN-Av~^FX!Pe0^W@auf&R?8G~>ado`GM)Xk!E|nQq!r_&5RBkpmE9L!pzd@}ll*GSNl_LLGJb@z_TtQ-u z-FbhH^v|Kc-Jt|L&v~Qp$R9$d&OtQ;QH1pLb$K=FUTY4#ajmmn(``N>ymLk+Us>d( zQ7%uZySW?^-FK z2GD}^5QC~f37tsJbT&6@x*HU())(HN!R;NibcSVb9h7EClk4|MM5)-=024H_0DKlX zKgU-b2E5lZdwq77m^^1%#hpYwy7;B2lqsLwJ3XEMudh%m~+3fd) zSy9OAz!(-YeqR)llzw&ao;0M0Fd$hd#|S{sAPeIF(XuI zKhK6T#2F2bUu={c{s;mv3h8dSyp5G^`Q`cGfYAcwSFQPes8sBHwwIN!L|<^r?Kmv8 zi8A31K>IJVo-2qXazzX}+bD@aUMGKcq2)nX?N7Tr*~-cEws#g(+~G7=~FmUPOXDVX?w@( zUZ^pM-;x_F>8T8j~3O zF1X^3-5!+q?ev0bjrw_y%EiJnF8vFL<@Q90{0|MX$i)-Z5`7_9r@o^ia%zC2KzMp|S9=Gk>Izz<)$UIEtDSG$oX( z^&-#=4{<=TiQ2YxH)V-T|y5K}^OkR>HX~3jwafhS%bak2+E(zzIAr?=)wzjuNH!BemrRiEmPEJ!LhaS5j#P-eapy;kj=6SyY$g2K^u z%&kwZ_+15}mv!AGl&s%iE!;C^5Q97&FCq0^BUL;(pPjKPJ_!+xq_&*ymi9wHLY zekVk2wbBtx=#EBLk`%&cwS9c`4sK10G7yiGzszuq#0GBFx!AFgNR7*Uk$5Cm);od2 z8Ebb}aakq52D=x+>VJ!lQ@%G&;n~k|3Pk8$5!WTW(Zza(#rVOxNN-HKb!5D~J&OMu z4#`> z_21`I%PS~Wi{+4^gH`t{pitZ?)+^9^XQ`n_LI`2bcpmdM>`83&PyO`4jKE^OczZtZx zw5C;X3ndlK&%fD?H$pq-(DP8+7*v*^6(F-#H=C;g(8K=B3o{B$P%MUti|Y{gSp+qU zSA5w;tapr`q@)|&VA6swfIiyt+8U-wHQml45wt({3b>WBpry9y-U{5+a_8Vd*jHv{gUYRTMyUy ziwyC^uL(~itBCLdMD7YFi^r!yvRqTcK|xOLaJPzRRDVzu2vagq!Y;wj&i(|6cKtbi zRr`ez0cHEw{&rAV4JnIY;>0lR24OMi^yp2lebG-Y;YjMiliB9x_bz8I%f$gik(G^2 zDzrs#ee%TUc#&@y=FUs|)$_m7OYpgv$2U}585pXN`Ct51P-xJHqG+W$k3&Es7G4N! z;x2YYGsWnCln|Ck$6lb4Twyl%C4!)#pgoq|tj^9lC4Tt;lszs_qWX$1-7QqukN}!i za>l3h$l>NPz%F8q!324b0EzaYP55Fg$)p|fvD14?*97+&+#~(q9P$g0v-gW9=6P{_q{JXP9zT=S~_tSD`5Va)HTSHNt7zk-#1CD z7Dd84j_-D~4i3R)H)uW79lTk{5x=AoOR|Zt0x}5G$o4tt}bp4YP8&$xl z*nFi{|LMg$UaQIP=FNLjIEEci7e1)-u{EwVD!E&Q_D9@|mTieu#hE&r2=aiLsJvBG zZag3|Epsv&(RwCQtkcmT(e zCljb!7d0Id+(RVBeiGfT;qd+}I8Mh)@=1@L?V6rNT|8y%8nX}E$m9Ub3Ua%MzUpV# zOv&uFyDxU80rnS&?hth+!bOef_wVmlAQPkg3IY4~YaX0e8cKqw?WDdNfBm$f;=>o* zD1iSF2R2>LZ6~j*#sFzW@{_#$WT6Wu&9%|j&anvLVhN0jK}}|fJm%(37mgo%qZ;WprYlQ?Fs2lU8uBm1#9*u(L5iOJ zxu506LEA=DJdXJPA?+=I;##vV&_EzSAOr~{xVuAwJHa&&+}+(h1b4S!f#B}$8a!BV z2=4CwKIYBLm6`j`ef6rkDoxX&`<(Ngz4y1)+H02;bHRtB5{qaNYlZce*`xB34k1}x za7j)VighPmX%YUm0Fm%u8xar*@$jUHkZoy&bKa=q9z{t~TO^S7ggYH_%9KDE0($Js^so z<9CJG6A1JI07rTqZ-mbcmixe=$bwlHBl9N&kweq2$D9(=eJ01ZVsdTE*u zm~SqV0jYzrv5tX-s$>1F!j`Y1Az!WTIn;o`mfHRT^r z8k#)A;eApvB*5vYH#p?D1IzP5VS+y_#(%AsIYMw>&9UPqy!h9zTUn&Oicc1kcJ((m zbK9*Q>mQ$=X9ICVL{SP&Ecpli1-&uaI*+DjcJh@RcAF8^mklCJ-?Ak!<$QxIPWR_k z+1)Pbn_O?s8C?{`AV=#8&k{34AbWXF8s_T1beAeH{zLA}2yabMRU|L){x%fIb}jT0ComE9>#12H%ouiDbF{&g~*z`j8#MJ~xJR4DQ*zHE88M=hyJmIM_aks2${_BPml2(;L3 zfw|raW3e^&WudPQY!(k_G@4vUuqA5TE&G{ON>sD@g!E@19r7G#v2@!P5dZ9V}skkr)Y7bk@9;;Ldvq&OsZw+=aU^AEEuC0l|r zU$JlWt$xHK`riZA3}D5Nbh-U2kINenHB4~f{_vOn*)!y28TfHlH)H`3dHjy>(uODlf0h0KGuD=GfT$*m|j4uGw(}M|Vi2!#dJo zb=das3oV{_u{5e-QN*Gdaf&E}hOi0p*do6Loqv((ZW~ZaS_qLx7xpN;jkoSNmWAm5 zDqsI~WAftPBmbZ>TVA{_CH(EX2fTw!WHe-+nFJMNNM9wi+c*7r}^m7?tmT!LsN-@%x;llNd9TLl(fqDF0L7%lhl$VtefEMcO#fN+0 zdk7D^yP0?FHkb5V9=B7astH%X1x`+~>^?axOwUwTGEXjtgvXQT`1~|;g)D5W7nRKC z+qpk|Pk>35YL=LgdX2@j1kkQzG3xi{+Y5Fvh$J!7G&vpd(*zrR795>039uy#W_2_( zqi{Z6eTDQ(dbsmi3Y$j=C@LTOmxb(Dr;DwY+CMhC36@t?kT?)MNGH!iKtP-xwmoIH zS*2G;?IC0=UUpLhI%ttbDemGp{>_JDdHO4-o9_&cdo!X73kyp_BZt_Yx2p_ADs`h~ zEw@)GxnSx*{WTa@5_!`BV}j9;D5{VSRn05KADts;ZCH5R$ z^~ z(=RrU*Tgm7LZh!X)X5WaI~I1a=^AT`-fH=WhqI_RI(Z@DvhudIwQ28v%f1}4LSMuY za|*Q8*^267?4J}ix28@>fsd+U_19=}6MTuckfXXh(ca*&|1})%toU+{!ajd|yh@d2 zI_>6-5I{w8lbsTH13`C8WJyVQR95Lw4G6|5p90_8-KwVJC~)gVlD%YOWt9Qu`dux^ ziJccRUs)}V(bUYe zFBLJjl@<>Ux0}c$3pES|y8rpkq-MZ9zj{*akTT;eYB1Rj@M?gLUg^H$19hrmerPq2 zw-KnSa#Y=VBb}Cgat4Wpy^NYg>j+2q*U84mER%PM3il`bcMVq112iht8NhmyLVXkT z)1LxKg&IeIrIe#ro@q;-xV=l}&6U%-FZ}x{Z zL3Jv#y;uUFMThNeUu?fN=z#h1j7X`2jOXzx+#RL=K%i+Dq!&!;Y7I zA2T;ohSNYV?-<}2j7BniP1N;JLVb{G?RS30kV>kkvosGK!&;kxUNm5!uxKto=?tR^6dgrtmpRdFI0BOv6&8Dmj`R-LHL^wof)7>UGc!Nkz2o zA5_Yp<|;G}q)5ZQUI9quPIsV@UsuE3^~U5He#YxZ^j8|7w zmS=7;8Nj~YWEWc2H|LP5sMsl86#ij3@A^i;{R6k-KBp{fF3#%rC2v`$!Qx@d#Vz$n zD#7I`cDVG7Ip-6Jp!lkrmC6*P=;7pds<77LZxptU!RXO%aM7gTi|=3tNgOSc82v0{ zvjNT+B*PiX4wztWK$7TD`Dj>;TXQU$RITmCU=EO)85K0ExQuV|gmm`L^d33`cNLiH ztBs+VW!8A9NJ41IFPwrw(^bp*9f8c23!m8?@4HG_2RQLoAeP@$cvq!6O_vg#n2@|5 zdNfv`UGh6yKc;5HWiyG1bW)yOV2CFgOlAwFrlzUvIwHlHe^4l`xU1aqlnq8N0w3u2 z7D6ce%6m#5>p!ref7dO4dXf#BpqQ9o63X~nHhlt70cA1YtpBlxzrOAST?TjQ z`YKCXS64u{CzJ)n!Q=AMYi=HI6ttH4;$M2!&zCAi%zq)GJk)zVUp!yG)lEO(hN83M z4XibSnDk0vZ9}uv)$RA#IuKJnfL=Wgaj)dOdkBd8(fR4pFu`d65y#VJ_}TALv#SJ1 zD~}t!Sy<4pTiZr^j^JjYM3Pc$I#I0q5qILVSnSz;Kj+Yrfd876FLvIjzPXLGrn0-usl&Fy2^ z+Tv%>P4wFamT9r;11aL8gEP5txhHfjU+h}kPu8pKUR|7=ux#t=>Qen=j+D(ow1#Cd zK@x|4*VXYHG(9(DB+a;c`@INMHd>i)xEL*p!!dnUH3+FB*R}!g zxj{Zss!c@sQRzUea6ECw0p;^X{xih=xiIy?lAxV|vHr15wE?n1cUO3p&4Bm$F?l{j zPA|n0@NZ#+m2&6nqP?Env^?;$VR6#8-WZ_4()01Nu7M=Mmw#Is+Jzk34`2_#FgW)2{H zBGaiX&Ue|2&Ufn`Z9~|BKZ|;!l^0;KFexsy9r*Nnw9)5`b^Ct~o=)CgZ7a5z{0cpH(!xxE-{&?xQ3Xy|@78cPDrzac3zK8E{xNIC1Zywd3n9L@H z>uhbG6%4c})ztepgOul7_IEMVmESW_2boUEv{>#pfCMvB?;MP@axLaBW4Q5I_B4Ub z*1&!f#P(dV*!)V2H{t`g(mUHPPD2NJCeQHbWdi)nCxF|O z$2X=N>1dF}RnTLhIG!u!{>t9z(_N@V?mIn9_h#o~z_Vnj5vw#9G*Ra<7h-c%iYN>P zz|m+-Z}jTr!D35JOrGp$c+sqEbhhM#0X3w48Eab2E>bZRhs*^70XY{9>p&VyJSQiv zC^98{Y{SJS#e95h^KSi(Zc_DI?OWC?5esEQE zlNm~8o2ZU!7pxH;)_7}hN?t`>jhZFyA8>jBuYC{3U2h!`z3kJ{CYT%Omq}vg*-~qo zPOm--=NX;i>CPQXerNma$bY58H#ne$CB_M8(2-^wK9)1o4^lNh-5xJ8tqcb(>SI8O zxe5B&+wa)ZYc;U9CTUw_K~IO|bJfsiNYHM3%tk+C6xT?g`ccUw@S7K6N~4~OG$i2>+SHb}w(&APFrg@*=A?R2{QMR_O9Io0;k+HQC1!;s=^nd};6rCS%H z%kgC(*r&Yw3eh9AtRv7xVJYAJIpdO@FF+C?z;=EekHG)%l0vabOnL2K&1C!tczh$J42b^>+$m z?PfFx29PP+ak_PiR8guj!`Rr^ptNt9nk3fwfNJw>dm_4#lWXu@`fR)THJGpv1MG9E zUIfRyrd9g79_!Dn=f33sVYN(Af@g=4fIBld;@JsJ2Ptac9GX-d%CMWu3Mud+Y=QqG#ceGQ6%ED zH>JFdCRO>BU}Ee1o5;aeua=GA37jUnmpc6IEh@>RQ=D@fNKv|Qz6m=ozeXvzlpwUe)OHX2ID3t<@4?Tb` zGkj~)X{AzUQdP_~?0j8m%$~E$Y#tiEW6~BgY-m1*200T+qkF{l;P)~X`;inx(8`^)dz*8%|@ z0)o2-S*kX41eka%9*wU^h4qmACM|%V2Mk9Hj%;A_yg1z(Q?0cho($ABg|9g|gc{&{ z=^*}awSjm_NH3G})AwX!i^cj5GpzRoc4wIk)PRY<*C|OVl+A?S`Tua zWgqKDKc83R*j4WC?t)l6fFX*ugu4`q^kXx3TpY7IbouTLqs=`2k(O;-ESgEmpn_5q z?ZlC#m>2GERr8%pkZ{Y>E~VK2UXVza`A|wwGj+CPU@E1z)OTanJmBN@fEniUS)wiHVhZ?6yTgt4_jebVR1CQ8ft zS&LpzZ(=g%W(>=629){d!(zo8vh@{Z%y$=C6q7=&W=8vDH~RW;4(6J^q0*VcG}!N; zGr*g#evgetA(qHRuZy8A3W}^d1jxW!=TYK{p5fWqB<4cRlJkxCv6RTV1v`2X40ikL z+XC&@%2>N0?%U%O=8<;W??~uBVwNdQ(WBF7WP(4uqwF(;P}yeDFq3O!#og?F5r+;- zX4T;_w*inb{_zI2*_6xM;YcQb6$5>JN$BL~xz19hGShQxL+zU_5&>&3N>JxNF(hk~ zExjv{44%5eZgf0IwRncXWXM=gYxkm=->)QibeRvz{ICQ4WPM;HAYQ=q%I#LX7F(G3 za)w5xRe92`tLGE429D?YEmRLIf5_}FvK^>Tgjn8NzOn2}3Y z@uJ&q6u(Jcu!W1HPrtuOiY%3@$*c8z;GO_|EGji-d`&KP@x`0_`!6Nmg}&Agep#L2 z&z;k8XY?9N!xjB~1wH29tGA9)crz}Wc?)0u25aafwKmjP`W{*^?=4hC=TGMHQIm_O zaeGf26HBLl1_s@tQqajpo4?vRKQnb$(X8ZC>9EWlVuygSUD>EN?3lIqJI`*DwR@(5 zU(+V!Gg8jBSmITg&q^uotJEVDsn#ecc0(GNJ3UW-Jo#0E$Wlot0+w^71OxX#N12%= z9wHblmc#fANW%usPTjIUCe2|ErKRM`Ws2}U+$=swRKF~tw_fgi_f!G(Qh|YZyaNNu$^P7tWx~eg`QC$UeDORv z-{&8OjOv|r)o#;__H$EUlKJzUFJL(o4@t5bM`e!2vQt}>v3V{iRs)*};LlY*pUP?d z`BLreYoI^>3e@h=-@YyA&zCj@iyP0EEnkB+W=!U>HA~oR>LA51220yDJ7OM99(9h6 zfhsCRgy8YprUn-RHpQu#nf$Xw7edneA}i0!@37)y*@F}!wbXc=R-ZJQ-HbmzG`#|_ zYs~W6rUqSb@^m1^-&_ER09iY_+SD=scPi41eFD$7F_0>G;?r-$XJ|+%n@NsFspf-i z%OM7%($TBmYbIS`Fr2>B@*o9RQ`v%OVo4L?PYx&+RUN`1A7>N9rl$4B(Ny(Hf2>LB z;4{X|+|A$N z|8n1dI!(RoN|)BmY|l1Hn-graSn(Mz`v)& zzIX(UsvhiT;X`LmfTUI3Wv_Jg{xJOm2WUB3(lw=(2;{=!hMm=pO|evdV?kRei9IPC z9wHb$a}T8JM3$Cxqp2I!%*->SWnVnd!#25E7Z;7V1K&#h5{lJK$M+6A2x#DU!qMPF z+W6=MX@K=K@(|P-z;Iz<=><(n8X5!>%a9iG{e_ZJ44pTGXJ97dqRE zL9Q1E7=hzgH~EIc3*&n=`*xb+6~JREiN)vSVFH%zvPU~4@(X5g$Q5dwE@NF1t;gcesNNg0^m6~TX1E(5mx^W(K#rq}tcpUXP2m5g9P??SoDiy7cXA4j`<^A+;M z1cTAWB)O`Ph7mE?LsV)^_^5xZ(vxrwB{Jm<4a&0wBudnuZjpN-NgTTkboqzl4ag@_ z8*Zo5V2GjmaAecnBR8%J2y!uhGT5%2TXqE(Bd9v^d;$5zKc@ftR6BM{Iz?n;m8qj=iA1X9U1ylLL%~rbTCLszQ1(J_#fSrs(<#DZZzk5s4ADW% zoDKGK)fS{fEj4 z1;Fwt)^x_d+HPou_O(-56{t;%w3>YnzG-p3)BnsLt?O~b@B>dV)zHd{-m*R9*VorV zXQ0-*p@cN}7U<>;4b<@rU+mux#RsT)e`w-HAbX|0@+J%m@0j7rvI}g@@&x=H#tRhj zC`p=29u>S5-)+|V1aE;wDQPGU(-(`yI`e9p-|0a94W$3KC(W9WNc5g9J-Af=R?G!F zg(}u)5(CL1##$ttC&jc$U!OO-t~8N`(&IEG#tpK6aw4=Px_U z^Ah1J=;Y43f_b?=1_XBFZtqd|_xF*_^Gy}Is}M*;b*Ql?-UabyyInnh>$)y6T0e|= zysTYVR76Ps<%$#l3qrBXKbeK}BPk9qUecSSvWXkGT>eV`P*;r~?2c|8$L)5BM6gs* z9L-0{2YJ#i;hlX%d$TO~b>vGSp;fcev=Y`C6SdR58qYZhbH=?)e}8`h z0h>_uHsW{UU~-i2dkIPG4%>x0O~xxOz`Z%9c;Msub}W@p*H4A?&#kSkyw{go-?nWA zLYp|7j8^#iaVgQ?h(@y{$)J3@Hcz+4wymf|?hcQhl8C*z_PjCQ-5tNq zB~FOfo|>A$L>Htyc&+88RxxAvLbElQq`-pbo^&Yu!Hy_xsFbAte)T-Tyt zA_at5cSvHpdP9-qRT8zb4cO+mR~GA>*TcQOPOr zAHan1JYEPx9DOQrag(WBWT5T*s2KJi25G-X%YXmehZ3Xp_w8l)eNc^Vjd{Rfto|N? zUjhRe!ZwaNeOX!m6Of!!is~%Uaf|@fv>Z);B+-5VbvPb}nB`(~WQKmK)+n)Po>SoR z$Ei;}fIa&@JgJnMPfH0II9p?ZQI)^BE(Gk)-cl+)&;M8?HYXJN;PG{-? z*!%#x^d?MPU0ubJS<6&P6gqhcfi6=h`S$M4_@UW-X@9VN^fNHmEi~|c9A_e@7fwMW|Fyh2O7zV|MbRB3FTBx8# z9)LDk+=SuS%ZtCJ13CbU{_=(zf$EuOS0@}J=>qC{9+7bietN^u^Oj+incR?f=YH$`p@Z*lZa7$k9B6 zK;(M9+b(+lMVsOH1My)MxON9;Pj4=IrN4ED=84B!)T6Pk4}I$=diu9=D5!!Y@R8|% zf9>4Zyk57HT=hni#XJH#rRDsWHR`M(8g(|xG)xl25(yD1cT+Q^2^I_Wc~l%uS}jto z1GGIuL(qd^cO5TzV3Cy-#gb@ot}d@5N@`wmxvWY7CGBV^7EU5SlYwbdPcQHpVON`G z)X&pO=Ql}3MMhrRW>5I8R%?|C>03bG@Pg_?k;)5|GBdWT>nlpZZDznxjRX0YSPFZn z%KFxo1ep{!K6WP7JClr`6-;Io>oi7dL2D+7+8G8#Djyr2;EvJE+}+%K=x5`@u(^N% zqQ_e^OoL{A-yn8FbBjj90}GW}Exv@iT1Ft%SzVS@AzP-|+otqgr6yPWtX@(DY2cu1 z@iPN@Fo9d$IAfOCcqXPVhNb`R%1U>Koq0qo>x`y zXtaf|FQtQoTp@nAKvYjUyyD&EM$aTnj5zrj`{sKlkW z!UyD)nsK&8(mPYB-5-T7(5q6}?PXPo$E4p{tc&Rby=xwz&pS6@VS;6q$2kFVN5oe* zO2%B%%#T#^!gMLYd|zd56ES5%bC>OM$KO4``7yo7>2faIEPEKz) zd7U;>MdlIFK|iJKHl9%SF+T?W(Hb03f+Ad9_7@|+Tz`~m+O6NYo%VS3&?=Y5xGcE! zHtU$|0<1g3&REf8wmPLzh;?xCx#nbcMg&sJi2%xs)9#T-k|2;u{I{a!KVKwwf@=BvkpsryF*7w_`cnt z+Q9@BU8o$@28JNh{q{2Om3g*Ei`zXi|&U5HSt6+vEiQ`1W ztgmhQXW!MaVea^rkI9YZH_W{e+}`5~mi1X;aW)jV*dCYnuJNpeA#b?Vgu-ymgB6$N zFH;;BqO-Q;F*MR%;&2oD!oQBBj0Lk0G2aowoo3%(>Si*23;Oh{z7Ur#r;Xz@3}-gw z19u1fYnrHT$uISp#)TP1IWni9$~eBNwHE5MAbFp*x|Nd_Sq~asYPF+}EL1B+kmbn57Qr zRGBT~0POM|6n!rYFWlOc{3kDO#tRsWDf&Ub7KvpG7cc(#V!eJvrcB)91V7nr0*q(Y zjHB=MH9gog_GKWbChkJ^1D;QWybNmVB;;kAP1PcD&c!;<_5jHQAdAScqFho!H zOJFeV_#Xhr)Ig*$_8MTq!#XnZ$>~W3sXx+0&TMDUy8l6gEeuA3%=x$m6{GbMMn-!V&msgwom z-pNKm3IL^IEI+pH_GU|5X+Z1BXZbz9q4p*}X|BEquB_4_q$6m(IrK(G!E|9i?#AzG z_1{W}=QHF?hGa>#|v)xuy zu>S!Vdyw~oC0b1;y+EJI@V*eYwm^KoLG2>TZmaw=k7YHW;jip=mBN#R!*6APUR=Ag zMFA4leCfm7d_ip$PXB}C7h?GP%Xtj_cGhA6m=>}Qzm@|VwF>?I{Snp5ice{V_r(2i zwDv;NfG0)l4VTM-<&12=@)?jy-}i;z(4R9*>y1e7n2YY-x*p|;7lS!t+&k3^w$eYd zfah?#6e)yDAUJ-o>V(BOYV)VfI9TnC76*jXKpJXyn*fa7kfp8KGey=Kjt*8be?)g_ zKLm_*LZ|MA5E4I!Y)3zW-Lzb9*5%P+^(IOx1!~3g2X)#B{!cHCxc7_jLNRC_?r%!^ z9Xu6uDt5JaK%msbHExC6uen&5ow>c5SyZO1UOXS>X^xsZpAA|srh%{V*)!-kp0~WY zTSJU`0vGW=AD>#FqI^DKEU!jH-0B3z0K>4M6TiqDb7#Bl-IeV-#5kqSfiwH(i~e{X zot4v*o=8@199N!Z?Wo;xiJ*Cw5 zayjx=B0%zv=sPZ*O79Q|RB4?P$np1AvS|0ABiBM)CDu|w!S^B-&^kzM8Z9t<>3m*i z5$WU6jNj_LRjACQzpRM5YnbEe!s&T^>LHiv+MHA=_cHJPO&<=!vip_$J*Q_>5BVTo z%ftSM))0(03VHM#3Dw49q&RQRJ~!ShXq_3Pu=HgtrPNyo z_SP5tyG5VVJW>hp!ZB9P5}f<}FG;s4rsvV=)K+oVY;k%VugbGVE0t|Ia8k!MvF;g7 z<8b`%r#?a4fq4ZRt8IulyH1*3njVQ+PfLX0I=500aBDO-&yz7K6{<|$NsFp2m6 zWo%4WG`Z@|7vlO^t1UWTaFyWprT8v?xzxGcIPQ2E*<`{owlsxKBRkMlP-e@~4)#Ye zHP`2nSQ_V(T<&JYmWp)ChhJVC?4=e;upMOBN^d<4ovk$f2K1of&k)^&e<{x<`TF_w zxgInUp;3N3jU$%5t*>qFNL9X3{9sss&*2uISJIBQ-vjYnogGrkB3g>!5 zmz{(<)#od_brmu%R13D-Xp8o`ig~>tM=K_i`iQ?tq%luOp$_owu{%yJuN^ce6^=~| zM^qRNi9J8VjE{JcI%Y9fi>r@H!{-nKhXbcjqC$eh!A-lxq-T{lIv?r7_m9BsH5@bX_`EuOEy(!KX!FaaTaHE&pbDLJP|P5)4?Ws5Bap zoymW_4V<8b^Ouj;JO^9T>B!u+Mo!9I{pwEE`wY&yL3&a({@GZk2R@!Fa5`R){VQC? z^yZMz6U#ZE(sH1<`5sABZo7dP&+4gwPNT9(s3nxzO&R9!JOLSoZ^^rRW=_{B1dWj}7gjC5w>Fv1D?7k4Aa4~24><;8( z>8Py`6#C>OPb1~%GfYmm%hDJMtcK-Zxico_Y0PKB(>0bQb}q*h6pGD_Xy$QOc2=Y_ zcqtxv;(Xi+Kkx5qI174~mV|L54F*+e=M0NA8YrjkyGwPSVYG+3}&soOqgNb%9H#hsgfq&NGb$8iAzaohuA= z2wSr_oL$2%pf_LJtGU6T`=#}v!2#z6v)t*I3cJ(cr)JB87~|{WI=T2tSjbm&!lhaP zP>-qce?55dmG?QX2xE$CkWrl!{G6tZ5A)3eBi#ezQ=AJ+nM%;&BjSLCzp1O1#n?42 zQ*7-7cK{atD7kWZrqteT;ohLd>1HIOoUdeCbwpAVpx4W?W)?0GpKKitO$T=+vN(C$;%`QZek1)M&YCnDhsgZcJ=m-1yGu*~@V~B+9 zY^KR(El5L`^`)+dXUOq;SbDzWR}{p;=h!np=WHYe=Xy?Ac{}kCf(Oe-nn4N$qH-!{ ztKo?o;cf|xwI6NXl(mbmsl4Ssx4qVHg}0HduE~iJ>1!Bv|9@+}09#1pG;C}SW}S32 zb!a5WPFh7WJ>$K>(DN=WvUc(NW^fF(LY{hY{RlNV63f1>vVkxgN_qcP? z!Obj<$FrI9{t{KTRs>l;k`H<@o|72{_p~pLii}`8@gUh{aJEEFNf*;p8aEbLz3WPs zA(nKP_Qe(ipmkqYn?E?6Hoq3(B8QPn0X;@Id_+mZ=@Nx znms6f$Px8tsra@%fAiG^#~Y18_9LK{wc8V}vDVE_Qkxpq#(U*R7sfmpmdo6ek~tiu zqR6CaV=3jM_8j&$Y2rQhDNcvu~4~UMqg77Y@z7v4`>I! zR3Z7KIIMn0zA_pxQf_jIWl~AqpHl|h_!f$PEP;Ukv^AGYBdzJf{j5f~6xa9U55AiU zbxn)A`h7b$3Ou31M(u$1kEunWZ#lo-fh;??So9?08B8F+b7LKqC<*mzz4=O_~ZPFa8LUjPP9)wQ`2Bg$!1Zd(Ph~E_nHgA~@6Ekyp>G42qY_ zHHN%(=0EOIKt++LGak*XnzcFGmgflJWxUIn-5Ff48RjYqb;1~PH~>>bfN0Eo6y&zy z0RJ?nW6^lGo-kZF>86IkG+S>p|Ew`@OS>KGxKOJ$e&0;XmYPtftM#HJ6iiG?p!9Q; zM&H>1xLYjWL9=Oad|Q8A%ZGRPN}N`1ek~8p$aDg{P3}F+bv7gewv0YM55g~bL2KB4 z8QbITKb+^jQ?Rj7F(ge+k{`@yXI#3NH_B4hN|7nluoz{2jd=g5g4QnPILryWT=^+^LP!<;6AGFpVT8jZ4f_>$sj@U>v znJ=#j>?Ely8}Gm193Z@}!8OEy<++)&wNVl5KWJhSVK$$66Ja#fRG3g$V=*RVG2f`q zO08KfA(e)R>UN`QQ0l~a--&8-v@Cd*aT^rWdy%j$mm^9vpX$l?qx&;7eBZZlF48o& z+eq=TU!e_(2Q22+C!K+sy>o1~tDS)>QG|le^JLO9>|B=woduhibW{E#_yh*FPK(13 zyKg@a%Ld?g+H4jYud?3vGRoGONb=R| z_8=y`h1=tWF5r?ckdJoVZ<>5n1756KKWtUY5<>$69##xy6;a8)hs$NZIbtMi=VUmD z;Cp)A53((>eo&0ifC&oBr6&DOoz;C~<$>q=x$hI^DM-)^4!Xj>6%nPRa&|J^Lsvpf#n%;wg2PHwF@E zqMNT~0^*UaPu3-;OSPLCnT$RKRa#=w&68@&rg%>8ay~pJjNd&(B%s1lr@th8!5Xh7 zU2}g)DT4kVC-lFZEu@c-qU}$ap!yCA5v&>SslA=1x6CoN@Xdt2z`q{G(yoYQW}xW@ zc>MBiutPM6l2o7Zm&H7Vdz>db|-u;xZssK(>bxrPf3)5Mrj>bp1l&5IC$I z9|`Lg8pW>x?q}6A`koB9;n@dnJpc0^n%EBVMyfb&yNjLp)Sz4Jru5+LAI{?M&*<-; zix~Z5qy2;6<4`WH1D!^#R$QE-!Nt?%R~!NZA!nTi9sc2m)2sdQ53yj>%A1ny_|-VRXFJwJ;UoO$(L zh)0tat@b6#h2im7oIKtka0fG0vpHlt=Ce`7lZ;sCPycio1H)R+i9CtxnPCdrM4cDC zyCT;9H*)X<4l0c|3Yq>X&inoapMI%Ia5zpn|F~foZlZ^kh4>L2J+}lwO&Tta8ciZj z3Y<6Stp~rni_f3PuQPKj)*FnP(4Ya+tau^UwI*#>y5BX>FuVxCxhXT7D{V7m0Is|z zwZQ0Q2Y2OL5CU^JsP|loj@LtB!~1(bx>;cOY${jy;*5cb7AhmS@i!NEhi`^O{(LP& zzC#tOwcwjxNJN^54!|>=W86snY2E++D*g7{%SQ-b6fWVZ*TE|WGG^(4lvFo0TJ?Ip zgJP3t{ngxXV$b_qo4uKLV8m5M)8KQ!_({oThp^%R=ttlDxNabkDrb0aA8REa_rm2) zna5@|cNgJ;c2D|RD^nDfa}?YL6j3?!4X7@Z;~N%y`0gh^B{`agJLg3HTs^@Bv<9VU zlCeQBohSaC`;iwCE|S+r=N&=y&@i)ly;B?AaGwXdA(`!KhFPrkr#<1g$W);>)t72K z?$?#UpD@fZcs!C3-q4H4=19><+wW6%_#;{yFN1bWDi(`5dcyT8&j*^7Zujl-`Psfa za;TF1tL4XoLfv-Z|FvW$;01Z*p3xUg2Hcvt;jD@Nc)#%SlUUu(IVe}}iRYcX5yXWzF;ZdH|mQMdTFHARvB;00?_-%LqyRc(2;KPCmON`<;PMD-IgsbObr~ z3aQ>K@x)U{dfs0NgJDoql1Xo4^W;1txLnU`U%4NTi^BC{5%$Uv#{&sZof-VPnA!yD z0CSIlGMtyN(I$l#Yn@eO2Df9CRb)GNjqRTf;RzhE9;7V`Vq}K%wn($t8mbMG?p!sI zVKwY|?BBc|vAoAVGxVM_`pz1(AId{OPqj}s(z^};8+vMD;&R0q1Pms)?JmZ$smtM> z#B5T)EY;h&Gs{*0{8WEgERLE4kQ70c^Fg3Vu?Q@*A(aZ|5bEQsw5lBw0JIsZE zaHrH8T8VuRYQIK{m1qBP8z4X#6z&tmm!wD|NQNq4m03;+WB&0{{Y60m4jzDZZb$qH zihAPjcVAJf;zkkZh2<%)eZ!71o$z+raFN&v+`GkME{vBiQ2b(IGLcUM5~6LM&HgT% z4OrH_z$c~g?C0!uAR8E-WV+TBU*9jyGaQAC=SGgi1Y=??Fa32dsN@vRtLL*X{J?&W zXo}Fn?z}L*jbjb)+Y+0tzNiznP5JYN3I)w;Wy9fnjd;UC93faE|DO&iQa%W-uFAq3 z7!{S8Db;k}chooVX(1pp#f`iZFEv|p{25%%HDQ`1Y1B{G6CMv>*x|PYI~BvCz?Wc` z^wBUB`0^S5JgC31Kx4Rw27&~U?YG7fYM_Y`;BK0+0Im^xbSG_XdkWM=XdEpqUbXo> zi|3t=^**gnaT64a5m0Ls^FJytY+qEj&f0+Y5*rpLQ>s}|HQh9lg@&B{ zxzOVcf!*afiY^u|==y+ip#xA-;vC}Xb9)({YYk-V8^)0vjdaVHx?qBk(OF#yv`vWs)NI^B{< zWL$$uWH$dYSMNO5hf<^u;!06>mq7OAy7l#`vGY}I{69##I2u*VC7YSbErdXz9qk9! zxcWPBvppQjoY*=FqJIqdAo22EHh4VP)qPuymMv29hnnI)kW^_f3@V(us>0@}nRg|$ zAo#<<{rP79=PB_5yw4+cbua#DFX)W44V9_0@9hB?kSI<{KtK@nsP#1h{JV{m?_gVX zZ9du5URcpF3S>AS8O7T^`;PB87))20#shl@_G*XtH9#l4kLEpE)|VKXZ>SNh@R=pT zVw=P5iFD=r=Mlj9^3Hrr%(QFnmL*oCf$LR}DmNe}-jdb-scgJl3%Xa_J07t4n^*{yul5TZ1H z8r-plEZagqXdGmPt)&kSSGinf(HkiAuDJgv-a<^JB~=I$vPb&Q(}wibie;A*A4cQl zp9-PJA0vLizK693My?#pscSv;p^)o74#(wO|K*+k06MHi@SU-LcIE%Ag!cR7_Q&T@ ztPsx=qA%fE=l>?j_}|yPS1mCwgss}Bf%;#4-@o;GL?@g~YjUUblYQ>Ll_dVETI?hN zN3{~gyhHeR7VKZW$BS6%6XZIv2c*@-pW%W(p2Yug4e)8fQDMhdD!=~!bx_3Ckgw>; zj!-`}NdNKH{d>UIzb}BbC^)Lx%)$Eq@wNZ&W5f?c{rZV5Fzv~l`(MO?zdEgdd_6!M zl47Nt@u%S5I;J+#2nIQW-bkhrz20Q`(M-wLG0PL zS$5ufpXKj-!ZN8$zC@N1GF^k5R{)0n$X{KK&jR3j{j$=d`1ck3Kb}~NJV}kO(CbAv ze3wBxE(%YCgc1eveK9r_>mzXZ=n)7+5M5$d)G>c9Y#u)!{~j(glaE{0U@%VLc#V!4gYkWU(NZAW={Q53(^6x2GQ(^P zjVd$1#>&JAfc-`sFr%#N?AqvC33rSEJh;g5t6qK3)_B|*Ee&172Fx_#9?c0yG6Yva z|KsRVy0G5a_B%c*9wlh5Ltat5WHD422LW6OfB*=AtTo;*Vh?@taw>;?7F~WFz zn<%f-sHE*(Mg!tU{6JHls23#k>W_2*K4aOH?$8h?4Btl*1lM(U1d2lI-e`c_E5`_M zq9+tu%*2;?|K%%PO5^Vq%{-h+{4qg$AeVCfxQv|=$VgbfkRkpi@~fJ-)pV_zvv7_A z>{g(hEX7X!BRC?UU=P_PAz`M6)mQ6&k&%;%TS1lU4Q-E-I%$N_*wW25?Q2cm@ZLB? z2ARpUq^<(0Pu8uJ=s7wyIWSVGdZ_0do7P2xN2je^aonGy0G%Awle(BnWja|$jb^bG zGF`L#)lMUj4WXJLcpJ@$JHIW4-$kLoPfxh$$v%5`lKxu@K#T~PB^Dc(AsCd`$!m9qSuNR;$RbwsP^hZNsQ;bZKO8#_^tCrs4oot~`>2W9K+W(Rege2&bh+~w>DGe-Pn|Q9%S8$? zOc;j*P8YfohyFnkbSqm(DH6bUG_k#M}% zEPq%919@$ZJK@+oZfn&Vofxv^N$PJ!(+^^Q6pw)hKM^3HA||#B(Cd$rC`AV9(gEPy+jWoc0X~0bB2r!+#zp6lS z&)nZtMM7&c~U~||_z~;1)0fI_WvdUc_6QBi+1)Zh+r(1IRqb!S1a|0av zjdF{+jGL|l$iR?Vy!9&43rdF{UvkEdc6y0|t$Luz?4sUV*)kBND@&&r*0*TBTIIzuiV1iDn~plM_spy*h&>e1hnLx zx>eLn*JyVXDX-+=O!dB!fWjQ&c^>d`! zxi>woIa34k3*z;cK0`B_u1ice>o#n>$JK#!znY~dIazc;$h+9ipy_f31`aUWQ2k*60i`SFZd7UqdO`OHiys{)u4is7* z7&P}yU0V|KFVc!sqbZ;7J0igH{;(HLVJ~;Tad56s95#x56~dSyZw=Z1YT|^(>mAF? zpqGs0_~r=d1F-AY1C0W-`Xr~Wav%2`rxTS_L}AUX7OQ{=V){ex_>PWH3K}G#qLY?S zj=?R>7=%lQA7Z3?w`ys>TejT$q5Gh`6 zIBfCEf!SgdP-le{cQ;LF#$Pq_&Px6@6o zHNZw)?f%wQl=$cvi_3NT&WF2cF(jC@OBLtEg!sj`a8AO9trm-69uDW{rc4}hVHy5q#V5vk!HY^RCZRY#x}s837k zY{CIXg7Kh9Nma0(dL#^JA`{zGYU95(A<6Vq$&YyTcEvc-rcCStky$nl@Or#(MN$?K z(a6hV!qhVGPHAxH1?G=X3x(QF2OVrr1g2GM?sePuAH1x~G6W~s_%P&#KH%_HIv!|n zSzac2b5Irk=R)mFegZwfVE7&7w;YZyiro4t1>Ci9mBw7s1VQ0OIJj=DunEJyo}d;E zGWIZ3MgZ%R>@YG2w&lj5JW+*<(o0g-uA0`Q(&l^v0N0Aih7BR6~cI%OWH;j zxP2A(%dvI%8L4#SKr)jEu)n1YuR}R*>PpkbZ=idAK57uHW)|xf*o#)xlXYVZ!8X#QAN(L?gI`115 ze?3^a5-9~@6js`-zaDSyxu#C zBrt8R?&mz^8&xp-^KC!+!so}GzWa2{|hNC99RD?_*@nV5}05qb^YzK z&USpT)PV*o-W;2QYb9eqJ($|Avsu?PObNZkP`5K0b-_ z&1Qe0bffx9=1J?Uqss%zc!=~b>BrWxX%mId&GQr?(GMPPIaKJ@-w*sJCIOSyp7@0> ztWy+ckjiA@;P&d%X-eE4KN73FWgfUp`2WH8&a_z)_P#i#0N~q&_4A{MD+eG=;nSGl zut@pvF>M_J?)F5T{ZY}~$cu2v1lDUd=07-7O^HT<2^FuVGDDhqBI>~d!y zXm#gFxPGL7-OLYo<#={wi^Z(j90%!w)4@&gQqbhyg@?xGL zRIP~vfJuD4C(HYUYcUKjsaX~)GUFafDe~%`^q$M!mMZhB{T#C_;0rIE9VfiedMF_1eF|W3WK=c=$(PkSi~6)k-U` zC;v4oN*;3W!NsBMbFL9NNIC8G=aQ%ax727G+ol>QVO)u-H53BfE#9Z#sMh~zSdI{N`Md+_PrQJDM@FRz9c zYGhG4>$wt*;FpAK^8YZUk{M#1w$mB949frC#gpe5kTh+|TBxpWsYR-CuG4DX>(S_U z;UdXmM)T2&bD(%!#>{f{<_euwb$f#`E?);&jy|tqVVBbiIuWnGzq;HySUw~qB(UMn zR9Qr`_8JmJl2QZltb*Ii{?u9k2r}DXn)@(Y*i~-{Mj95!JXxeExGe7LnI3n}Gvr8c zatO-%#HnAF5dsW^z(y-*znD)4@P*rq?rVV6#AVm{l?}k|Zf?QmkRv1G-yY*qVLRh| zaRh8=lfn9y!mb-7*VXRD&`h+Vsc2NJ#lazw znlVx+gV|qLt>pAd3f`p8$W9jsrFX=HuqY&{@yH2eT3)1;=u^VtVtY=54Sg zW3wh#1NDlwTRrn`HnK(yz?6hgH2`{cOv`{`iVwRrE4s1gUPCmCAbGxRSdQJSOWxoO z9vWeE_3U|90t`4rBm%@>`abgZwP91t6E=gtUdrOmD-C<2+nqO=k0^~=ok}SNjoZDn zd(W!mg|oo)C%ZWNJ-3M;|1kOt{hB->W=aDp1&S!kqmdrHEJ*Kz{Ha~kKfcirReVeG z3*Qm~EfeQQj>E<*@;kMkxmC3|b*xTK7LyyPl&(UTS8!b8q@H?xEcsZNbEE-0bx2@e z>UL|r#nncE@$nJev|g=ky8Zg;`BV|b(^kl8(=v!PUSHO2!08yBoUA_y*3NYW>%x2E z^Od*6&B}X^mpcIHj>ZyU49A8s~CBMgK7HBwX{ReRq|4W^xzgei!XPJCYUQ>t%V?1pVN#ov=hU-5t8@eQ|qe zD(9uEkD|7pU_RNKZA)EUE54OP?72X~7Q38dpJ<@q7H*#}CPc3Avh-=syf=%>tqkF0 zZ7be5GTG%Z%E4cJ*LeJs9OoKTISm??iZ3Ac(aO;ICNQT_(<}X26ft1fY~I%2{F|zd z^G>4Adw=?}s$oy2J=p0R(_6*1r|@ud`M7PjQ(J!qY-9W0Iy5QR`hXQ5ik{7Xq$yzy zuo`L=9~mi(#qF~qhxBW{8$(k=_oV7a)PIi2^ynM=pT&~jxI-^ADV90jV12f-*awaH z|E1mNIUZM$05%u^eh^mk>Ijnf<(A5O9I(+PYQW$R6^88T{Bp};>bC|DCf)ma2GmiB zv3$$viQ2iyMA+#!qfzhndvGUobrxkzU*WBHuxS)nBgs`lvud&f-+Z2M+kctB@!IR4 z%ZZ^RE(ab5b_C+*21Pft{7E~TizG1a331fKz+I3_2vcSQ!o5KaUD_Q_WJ~!_AK+sRN+B zfw2EZj8Cm&Ddw!g_kPQfbdBCmGYi-shm^$x@U>IIr@pkFp4Z3OP|itT_Zfd+2zaAa z2~Gw;3qdBE=ba~2s$ICeu1Ups%O5V0SfuAkO6lMQ0v|&oAkJV!PA8cYzI8_XA_iIS z*hbQlX1ape5%1--5ZB8pgjE*80?<-&>|GDvyNWO;qziFj7$a!IW=m zjUV2)4$n|i{RiPY(E1Uu^rkJP{I8WbN9Nu*SsQw1R}ChYa<88a8}v#Javr$9FdT)c z>&82g2l)=-Ph{8tH~r`TtWSXVOU7Z_t^EK!w_Bbb*Sxr`ktN}G2Lr0gB-Heug#;(_ zZOVJ$7l#qiZ>Z6Qz_sRq)!kw#;MUR?aBJ_K16%HZSY{4i-i0CC6a{{g(GJoO*py5= zhxf@iA^es#K*2^o_5P!X7R5uS?T$00gPlB@P#fiCV!VN zBEkIol=%t}E!;%BrVC|M<-%g9*KSC`+{mMk$^hlv|Aqpm0TB?0%~DPv)Gqe%K3}(E zW|q$fiS{ISE-jLRkC^y42?3_1ceFPV0YXc&n_2O7m<29Y^@i3<$r?ew^N+gQ=w-NW zN&PN`%~VkXI(Ia84Y+a+v%er>G-<2HOK}=V8gidI3}3J8WvG{Unk4}p#!o3O{L!c| zT|qjs6t}uGq*rfKJU$CH7m&c%X6hzt>hN@t}q3sA9YEqfHh^P%m`!;EdUXH!*{rwnHoN@MjbUO99xs(H^S0{SRxfYcU_S7R&G<9FkYru_H{!aNr_^?GAU|$t$kkbLK$hcyMbea&DyshS zLkCuSg|~5w)DmpGCO0FzU6q?Xr@=4_VgB^j&M5u)Sa+GOe>Hu40m(3v28|^ z;@_Hhp>yu;R}U*0V_x9DH}+j6W{#+q9eGiGTd$2b=?56AE?oN_z3#W5&fK(rwqMUi zh`!+xu|IStl{Y5#f9mz&3nA^BW0}ebs^j_A>XovL7O)He3??c?ZmV8W6 z&Rb^LlLFK)f`*p`BY6IbDwc-uMd)3o-^tnZ*zS;^=Jj|x3v0{m?diD62DQhyO!h2G zWpd&cy0>%}8-A1A-1aOONzG0creF8z$SfPq@hdtS{2=Q}#bf7}bonJ3faPKVN$VS` z^-AllqlBL7eU5Z~2eUDmh`81e2{f#=Z9eyAZ@%#af4FVt5qB;Jl_KV1b9KVi21Fl| z(lej0Ribk+Huy)W6Ma8e=t%6a*K+837C*%qZd*dsnz?srht`to!X?%`U668^Z(-a= zwW%BqZ#p=hZn6GWD14<=+DlvRy%)b~c;D#vw>JOgt34*CA(J2Nz^(UFNNaIB60qm& zOXOFKKjZc~B&&wpc6tv%+Xe(|aj<?6I;v$xmC$GaZRdhB}c`hs0xg;2V%;OZ^R1&1QXSX$X7=^ISjjZ;erf z&s2niyk*%6y-p;q3Cj;_r;P*=x6NnSNEx4^4`}?5$o6NoERocP!TXd42L6&>fI-qSmA4*O zwG?g&5Cwmxohauzf!@jBz1vSR?OL4nZ0qF2+5ix~f!^$xH`_NisOd$^bWewfOVdM! zJx*ZrYiU$)PP#YCGG>p1inM0lTMieU!P;05X&;I5w2Yh}IjaHw%)`f64q3?7`h~FT z#st_|hn_u}2nW9hiXbe4Nos=pPmf*(NwJ@74hb+hRa|eRmurX_EI^*F^(QLeoxAaF zA1%K14--FeHmM3qd(yW_;^d}1h^=1 zvgPH~%9pkyKLTSew#S5M8IXXFJ`EWDz9S7RBDt9)#N zUlFb-d)???VHS6O3ryfk0R7T=SR15Fkuk8uO-Db48xvBL)8Pa`aKYNrPwW>&m7c{~ zm=7qhKXastRv2`I?Kd(9Si|kcMDJvL)t{3-=KPV-zr!)SK=6d!1U$wJ`JG3>x+ngtFEw)Ni19F(RQ|&inv~|~c+yro)>C3Y zU8wujxf5YW;#*hsfa;#3JG&x1>Xm?NBxthYrpb@XlVfuq~SXoywk8EC&7d73|K6#1hVS}j4 z1XXzqBf9sd{SlY($Buq9Jz@KEDxiWyN(IXm2owMtOI` z#to0xf>8;U2vv(+m#w?qTvM%SmYgac5|m+ymO@QdNTToi8xT3zPF96RIk$N}-R86N zp6d>1Vbd&@`w;Cb38bj+c@^J%mJh-ET%>J5Wr^S6d}?uM6t&qhKIm$^+H&?-ZCjM% zV7~wauc5!Rb8R(mU1)1NLhrGUQ$yAhr`M3asM?-^a1#2dKmjYo@9e47MfsCuO|V)% zg^!&tzhv`czsLxspA2LKwB8ZS-px+rMVhO6NjMMH{9?EBZn!C zMcO$DG6AnwQ?y+KD;e$B`-sMgi<7}rv25(tpkv!h-D#_qH&txn5KH~Vr{7Hk?CR!5D&D;DYh zKUNr!aClh0^5)@iOZ=~+spQ0iL!O`i5dA>bmgn$HzFsfwkYpW21VSmax4gj9vc#89 z5pk8{qZTUFaIf6({Kvztgm%CS&u^xQud=*g|0ibKGW`mANR?#NGYkmed<@y_a91){ z=>S5;nSt^aHp8rKyDDjZn^5SbcOHbhuf%Bj1uZ=9z`|EA4p5*|GeyKXh&7)?k+K1- zYEhQ;2JI0gSn^-0R%lE4mPXO~8em~a_pg3XtVONj;nRA0tPq@v_ohTx+YEFPoGYuc~4hxW{D`?dE zPc?>dytt45(b)S;Q@y)r^7Xp!Sxkd&zEW62p-D&3Sj$^N@3n8eG56NjPG0utqFgAr zC5}G5JgFp<4h|)J+Q9!??u`3eFa==KiG8Q;H(f-%%;N;8x>{qelC2TZT(D1LQbcd; zw#a}JV|8XZZ~lh z<8^M+YR$0P5YJH{aKHZ?E}^~Lq0B5+QI`q!*PGg^De;_l&d>6V9jvS@d;6L=DJ5#| z(Pg`6NgFO{C=guz*h{xF{D7Gv4ApZXYWsMVCaf_e)Lo6*NH1cp&hSU(?>-b@UXjGOU6HKwzw={xXc zBJ_&fSkH8>5|6?j-WMXmRz>>w29RG#Eye8K109;ei(fiY4WBim%JPwjx_$*N4?gGH zTgrFTtzLM++KTX(P|U2jpX43qlq^GLDz_DQ#c8{okuEsfcpgndA?1*gxwOhEuvI#Et z73$9QoPv!LSqI;v$Lt6iL5IA$qobgT^{6Q;>S1D{DF7#p_g9f>?67mi9F)IHtFbwy zzWv$G%+nION+V_bVA>bxOBUO$`*0Ufs+MrJP~m_F86JB#96mIYFcNzD8V-fn(6 zwdrfUwJlkNm+;hLwKe2^5Kx-w)Tdvf(|x(~rr4nFZS9JUKzzaR563t#>!tA<+llWM z3dv2MIvQhK5mf+jZ0pog`#EU~(6zpGg=n9r1a|jN>^E8|k@4D~X>KW@ZTm7wo8p>LUIIsmK**K|;LF~DCJE%pi%W^QqbhtQp2av{bP`OmU zH1mh)Ez#fAf9CrEhpgh*th!jxU1}t77*%GIbBsp0#Sex6;wAboq@G?1T_T*uVy}x$&27eE~Dt-XF<#KmiWe zm;SyN_W}Ca^##dI4*)~-^(U5Le&Q1EAiNKKBd$E`WI-i9v2$ox*J8(Wj}8d#QeT5o zdPN`}m8?O&vb}B-{~oODtB(xe`7bdX<5!~953AB&q!sWI24p0)+RqgGG9`SIp&@H; zkRhc_Kt_=zj=BG~m{x(^oEw}dPbr(x|FXrVJ|A-9V^&-JnPNI{V-d3H9Wdy*c=Lnd z(zt%WiPR3+@)qj*$|k478aY49t7=tsz8V*bMt!lWm5}=n&Wb>j#}Vfid^0SImg^QH zpa_KocIL$5DGgHB3&(2M>cRgUYq|vjea?1f)i0$3gtpVm_Y0SgOg+28&e-zkfuh*C zEEA2dyZm0S_b?vNRi&q9KQZn;#tJPlZoP5z@v6-7{V&eG;O<@z@_m1sk9GFxoJ_)6 z5=udIv&~cxQt>D47WP${nueaMJ8Oqfi!M)kzaWTn1~6w)RX!Bc?mX-u&a$aACTnb$ zp?V9F3QIx`bnv;`xq(`hmoqox5c$uixoka%OO#SEFM#l5@r4 z)2&SYrD2geMb{xYmv-U+10(Hv+W zIPTV$={Y*klF6qI)g9NL{`jrBS@+`5^j}@TzkxOwlK_HnBinq@eqC={Vid_v{ec}n z9%R-i3GZpv`1%l$XGW;V;}Drl9_~THaGk|&)bg%1Rfy+1WdX4I7)V%a@nvn}wk)V5 zap_w|LsUu1+89M}1crt23q-)T52DVj(*^CnBOTFWHyY(VKK{+=EcpFtEX7_c(Wgpo z?e~eYjv?6+@Q|B}^7^O}MvV@Q@n9g!<#yr(eryzZ{aUkS>~6naNwq(3pX0_sHFyxPI5=OS558rwl?C*AQsJ%$ad2kUS9;&M z9z>T{01wl)Ysof}Fxv;g zx?x*<^Jx!(1XIr87Y!k*e}IqjdVCzXN?d;RBIv$4s)g^Pawfr>ZJr?!S@T;R?yJ?q zUs3l1vkN4J$d0Nehi7(VetpR7cj~?ByXp#Wj7U}$Y~f*Mc$#SyJ??s3_}G+BI;Hda zoJ%9Wrhf3zs@`s8Wz8_g&H#m3O4Dfe~Id%ea5b#Uh6* zy$IfWv#Ib!$kkgs`Lg)MvxVcRsBO;P2yA61C$q(4|EC*1FakX!+ z_00HP1VzmAfI30zd()Iio}HCBh!s7JxPF~_bsCLreIqM#n zd|X6){q6=MF^H0#s(U(=t}kUXRZ>Wg8&Ay#shTzy{W|Sja!AtbxCn{UG#jZufso~p z5U~#cv5^$~y<-=mKVeeX@~48YH&IN(_W0(wRQc2E0ML;VxB)HIWd-u8zD8c^>jF&F zmgGT%>jaGGKOhrdCEf4=uo&l!LIcqeZ)b%V<3-Njo}vGH>|FZr!{`S0#mYaIVWkfb z@N{~1)%O1Gq^7TX!CBsrxv8r^g1jqsW>%aBEE0S3e6ZRP;I3jZ(inc7aI#Mp=kiXN zeX=K=&!RYt#5!ftB4al1(h4ZeslZ6ZEdD-oTi}XoMy3O}gbYH;sp&!33du+8Ych@5 z{sL1G{o(*G@yLt{pVRkj&lF7K{lU^ZI7~Zz4J>Bw+rP_Nc3|j^(@TwB#smEYcoi|0 zan>36*>OQZVk>JFgF>Se(*tDE@(?RP*`?lk7y00JhqvVHH2#bJ(b8J&Yx>YopPl%+ zv%gYMjyzz~7C)g`{H}#=oHb2+cKFan-gs^c%_Zux`5NLt@uXb^l>)$hj{-S!_@(`J7m$6ftZ-V3)oJD(Z3Rjx9%N^ZDvb z*+S0qWiQH(ubR+%e;%-MYr~Fxc@5GJD{zD55$D`cZ~0_kJj_2g0X#uw$*yCcu@7pg z?Cy2(&G>8K?t;l*O>(uIqA*Ok}!XTVyxH*T+^o<;FQdSlvn> zvaCl7v@+JCkOzH$+G|kpstOJ#nG4S8PvBf-jht?vn{`dICmS@C)OhBxp*Yk2cCD{0 znA;3daw4vn(B9%V>oQyGo7_kV zoR^2p(>O#L`qE-MSft3b4!<;ho@9$-(cOG>pnh=UGq`iV`4`{27>{)Cb~d6M5!;Vi zpU+5)>KzPi$L(u@u%A5`%iF3o5n7owM=~;R<@C#3_9@6|p*nfcErLM$5t7=I#|0oA z*0z>|Iib~1cZxUlHvZ+U$@w*frjlP=zqZ@-`j0C=3BQkTX*GP^Q#Q(~=Mj~fytQ;0 z|I*x15`T_I0j8}F;0`mQ5>uJ>m+DqH!jSp9z*#NtQA102qCf4ozK_4J`uEP3mFP0# z7MfHPSa`kg-ocoN_8*=N0uS{1nx_0(lGC}*6jofW8-uLCRqt!upO~qRPYQ;ziyln4 z|CgWoAAtW^+Jjdn==&sDNtvA%p!bcD|BYw{Jn(x|02p;=zmQ@nm$M$E*4am2|7`!D zZkUf7CKck@zwAFa=fHtESTGkWGoxQoQrQ@2u25IhE0B~@nO)^5^J%~{iAeUFcTsg-f^F;g6&LBKl&hcI>J1*U6{`T*vqCibo9-dtZHDY=QV#*z``&*Rr?>r1$uAx zG6KREfYY7N5D6oJ7mj6X&;IpwAU)S10lr=v|usADg#3%kbEDR%NHG`Vsz{7_Q@SJOl;{@=Os z02_Bsz8ZJ(2RlZJrgi5}-Gq(W?E4azy$BurC2FkT!=bcLtX-{z(OJB;xG$!-WW^Hd z#g^SAltA7D4`%zHwR|5@*OzzL;Wb^eMCbVgJtu;*gW5pFk=cei;8%ecD#D z?AKLve28)v^>6^#Owxwyr2}M`=vi-?A~kRSGIRKlTh{?1en$i%6!Zg6os$wsa#Iv- z#a5h*&ulX~{LUu&Up^Gcln4RahVUl9v3@BVWK}CTkjktm`2ZfUsB$r?&-<7(u9n;H z>(QrSRWRyo;Ahu+wBH7wg#m2A?gW-Wp~Bl z9wlv(`juZr*A9%9>8Wv@HXJ76e!xBcKL0~vKbimtq7_-S5H9t(3c_@VFN20SR2;~l zofRRNsn2Y`?ttLE$J)&E2*mrd+gkNdxltZJ+2-8?A2rptw?KJA;`OD}xc7CA`itZ1 z^VKID7)}c5D3R=m|I!B3KswupwSFF?_U?o#p~-nO@y!R5&}QQh{gK1qjb6x0rXEhi77Q1^Gjd z>xnz|2!(n^d@+{?kG*l8v;ysz_0HaRCv|aw^IaIxgCnv8*~#fst^Bql-D)|aS0ejl z@CVI9S1m;S6?5AeX5#wj2&*I@o)VBcMYWkj;TgiEZQB{@q{F&3anzN@-yVrD1P5`Fk=yYTK)ZHNCh z-N@P#|Hgd6DW9ps`)>Iv^7w-vJrvQ5P4-;@-LZ4wJ-6KJARd(0GWKLn(*e(`-S)uXxi&5i zVVD8t8=LYc@`i9O;5tdbhT;vT0)nZy{-smS!_nKmb3o$85DFb>S3hGQfj>W9^qYj} zy?K5}{l5O)Le=yF_SBnLpt%OocfEL55pUwbh3{ti`;3+xSKsS0Hdi)sWdn2nSMZki zl?S{UZQ`qFH(4|pBp}s76x_RtjYmS|EHK6M_iozQikYgoPTGo5)MYI~+@vwo#}u4X zEv1`ddTsQCa^LA-jWN@3kT+s7nv(0q-F5X)R8{iZs3#uY@?gJLOp8DT^1d5Ba6?qL z($-r60+MznVRvC0Syc8;b-9*9G?sOh&1Zs7sgTp69)5~eirxd_uc!Zm5%HM`!1s%O zm1>}S^xe4P)Pj=B;ILNMsD6Dk?gkr|zd%7S_x5sB3M66ojfs30Ec)3y8+k{G)fYG+*Q26O2(e9SiyXHs$7c}}*JGYFV} z(W#w*S3zm>IR9I75BY8xkRaOla2K(xyZ6Bk51AIgT2k>d^UTJ~E<9rwzt zzYnJzh?!dqwZ_9GRf3jY4B%T87v|ToN?eo|?(I6R6vgtrORVKr3S50%abiX4nRObf zb`cjs`k1n294K63Q3)o;75@zcv96XB2jFv$!eP`2yL?%|1EJv$&opN87)}70)BM3e zQUG<(MziJ!5unq2fd@tmACnE!-6{vK5|YjZ>RIC9L8;eVnx}G#9y9$4490yAi0e!& zupiU?Q>AzB1Sk@ugisEF8CM71l?=%jFhk$0Irrv2IGv(REoLrYmZt|t&QJmYS}`cQ zXc^xJ*|4~V^lCaKsb1KW+{%P=GM#Zl(GHiKaupGKt3yISCJG? z+#*-5&ei6QDtVo<&GeDbJtC0joR#c;wQGfj0e(s}C86kICX%DFjb}Do(pz}ETm#id z#tmSg?-xzgQtroS7KNP6-c7ZN*aZ(uV^umaoUJ{K!^p=mjEb51qk*CS@6X`yjJJP$ zsZd_5ojsE;D^=hPP2?vR()P~2`r$PG6-#;;=e()nKJZm zZU^Wnw8wP(EY)9pEpc;N%`9kX($DI8M*C6D9fD0OaZBi3Yz$52A5I)hHC&9(MC1^d zA9kElOKe|VM8B{}3Ap%?X%83@gQzXcKBrDb*K$?Q9jy>9DDpaq?i`W;q0a^sF2<*t zvLp2!T}R_8?o|W+w-=kgd@YqbY}ZFLt=qgz~}V*P5~wQ^~2eAiZcHg>i0qSz)Z``ydhOM1Z$W^`1y!k zWah$SBOy_UULjL}FO&Fu`!KHfa%##)5UW^e4(M7d$t>HI;Rp_S?uBER0G=%Qb< zmvpLY!L)Q!4~Wx$2;q)xw<}qbyFPIY;=gSgX3zll#S1+!pfGVzC6$n0Pl&R6 zc534eht&mKNL;{eb#EPn${9jUFODz3+iYVzv7oF@zzWZeD;|d7RvMR*76Z?NFvP z#^jqE^a`JO*ivU1B5p5w_0D{$|Bp0qQJo7+6*9-6GjH`S{tf%{g>Ypm%d&P8#(|Qi z8}Ebj@eLr9Lieq&f!QD2ff8_4tpmr&dfYqn9^vGMypz!BRk4F%{sYtEvXBW7sRsy) z&kP_7@jLeDs5HU?HO~Pi>%ee>nph>Z0+gr7che(zRYS{IF^Qobq;l1U`P{#Ogq(6; zZ$#>jnvEY91Ptu#-tG$!;$HRus|NmGy#?1e^6&eL^~ODacCqI|*XOKI=+5Xos7{@o z@N5p!YqTx2)Tp|jeOYSac*5W<9)mQHkoGxcdMI%~JB9z@w#3Poe9ZTRIYFYnWWoMC zshEeNs4hfxx%A4F?w7iY@i6zD_q5R22|_O(3NA`c10A5=<2Ch|6`2tCc2TgT1oc&A zh7*z6S?%I{QpLly;Y|I5*4KL%QAuXcu*9BRRi##2&ISSdF(W}1*gvfA_=Z#+h|#e+ zHTpJOLP~vIb|lu~<31x9&aTTl@FVcX{)qR{P{#Tt0uMKGiGEPT7}#eyL0{;8R|^{Q zSm0hR*4Xgvp`~Bxw;BjHM*xl?#IhtdmC1K5W1Z}uO|1&%PkD{^J|?r6w61;;xulh! zLES6x+?lWm)B>@JUrIH)yk)pvRg75F9L^?n{a*8_FS|Oum`vHh?=CASzFeW&WB4V6A37A8t5njoGC{(YuJg_)n)>ac){unSY9b zQy)pa7oG7hvImHaAeu>~AA(Ebm=gga$ueH^V@g#?%e?xC=ZoyZ3>V>6D8^CG%Judy} zBoO6tq}@*B>;uCkR`k^>Gcd&!5YB&JM?>H^-%%6)QaNR1gi>~~`_ZybQSQ4@rWZ8G zM+@-GM7FWe^C#F1z)x!N`nai#clNKd(R{psg6Q}Hz4{7LHJhf5R#Q$p81LAted}fj)0fpSmAfzqB zFwrVmF^AVl2IBd6t70elFv6$TjBrn1sj*+m=G|-7DnN*{(o`(lqppPJz?p}=kS82! z>?Ze53e`%xp|{N$m9F^tATjQwYL{^fDcNo7R&Rs74Rqp_miVk=0s8tZQX z(UH-c_I8VR*R$J_2g`5i{T0O2&Btl1jqz@{XF5X(4T=an(s|y^B@1J&61sBB`BWGw zt}l28hXYzk_i6}!Tvvw7{Cnc$0De6na#PI6|H9%Q$RN*eGnR*@0%<ktfJztb4eY= z-s~=QulE-LBt>2t5d4X!W|;9?yl~q1-Mfe?WYUaWXa^1lZv!6aWw?hR{!O`P)%)|Y1 z%n9^baQqPmUe;n7vcW|CNTT5n_fCLprtNe`pT7?T=3Q|XpEbYzgl=8)*S+N|(W{MW zan{v+c&EHU)I8Uj8UYBYFM~FTp{`k3S#CXu=<6HM$F^JStr?y!rN?s?CB&|AGDb$p zvMA9Wi#NBv8=a^lY&_Eb<%a8C`{URdgLARbBXfCKlYK+IN;8(B^tSer_Xq2}h^wf< zk3#}<*F&M$b)b);<6k=)m)A*mWV_fPo{pt<*}DL010|(+Id#2vIM?b0?aHHjkd-40N@8F@$3mbMuNd(3Z>NS+<1Pz|8D8`41 zN9z>5$af8}bYXv~OhrUMiRN!wvTQ1+du7LpAB*kZC~7g@*{kdqXuW9cyUq?~sHjcX z7>?=*%s22jm^Yo!%+H`YGfpiavJp%Ba2@R^%&^`;c?Tq_Syl=Ux9clDc;PDSe4U~T zd#S=utjm32DM(@_F!84KRU!Mp?Dv1MbGz3sk%)35YOK3KnmXQ})}uKt2W{ab+qhgO zgS-|*hGr)f-!CG=?K#Sr$fO@Cj&XK%j7i+pNLo^?ZO=VpJ$QOEoQbINiF|~MC!BKv zYLht6v64>MWQ1>5R4l0}eX3t;JBgworo_kW%~9-X0zO)`g*KWu;HoCSX@`XZt^GM( z=0>%ngoc39Pa0qP7&)^A-$qj#L2sK8b?(Jgdbw5*-w`}jX_yWC| zUBxw(Wq(7Y!qFOBq*>0Geth{da8PokpRNl8iU^^nFD|ov+RD6UJ89OrsC=& zzg#->v3-H>SI_JUbo5?7^p`2zjsh~|U%qT?(7PRi!xnU2XIP~A-tloPGrdcPin4B^ zGtJ5I?dP8UiBD?JXFAu>uXA`a99EKV@05PbAN9YK+8PPU$FQZ7@~lIo!tV zNedm*Fty)k9qb$;K&N0^ABx@Ic3l;(N;`Lvk=mw>0w4dO+;`h|$_D$5kFmHvYMY`L zsmbqH@iG5r!A2>I#RnH4YEhEFMy|SR_FvDJ|NW=|1wNr{9}FA_C7?``fU(c%e@ZDjGC9l>>OS8P$pi{!=5g`l?TN(hXKFW8}?ULe$Dir z?Wh+|l@=;5#JLBD)(mVuP7OY1y3dvW{q~hQ!X1a7qtU1Q1N(cvmaDy zWA0ZO%va)sIpNT&Nzl@zr&lU2Ts6oRzxX+^`YavrkgAJ1kA^fyO~1aTIk9awtgE-X zVAU-6IJ)(qz=N9P-YQz6T2x4Jk&M3lJ^3p_UoN$(Z|XlWQmZ9C@1o<-%*4@8{{T3_)d`! zT24wUB5i548ZfcYd=_ka_tGI?wKEWWz2s1NCu&bO=z1N(*bq>i$tE={znan)Tg~KL znSjFqWD!sNvQgK4S$B7|i0hf&Y}Ugz3Ul#X=(*5&6Z^MfaJ{H6RFFh^vs3U%4Um*g zl78FUtLqBXLdK@o_Y(%@oviY<+DIh^XivfPMUTk!pvDK^&huD2~7b_3YN+gC2g)`szVqvDWxb?e1D-E>h$) z&$)iv;QS`FOE}z!;^NZv<5#1~br^iWeQQFsB`kY%!e%_S>DZrk0C8OJxxS;>=zG@V zT<_9SwqOiKm#g)V{mReG`r6fRRaJ~%vuyuGA+nHIzs3Hjs>c4vU&6Ur`>mD`C*8Aw z`=~q?t1lT7($@l2T2I0oAQF1E`l*;QaCXAkiL3RNg8RhK!q-^sOp~tm;R1NmHPgMS z6KzAcN#?r0Vm^~7$_{48YCZds+P z@+6=<=&kUpV!(VK9!3mebg<^m2z+() zaOk;d*g;VPWis?m{Q2f2#im#|5v_wWNNCG(Fr{*bIAESRs}@swK#==_O*cU}Ak|T9 z&4qVIZn}W&*i!74qYGA}QD`P)+`HKGjY+}EF8X-kY4&PJ%GAYltN*c}QJCAd&EKy- zo7#@f|8%sjU`Qx$V?D&!zUtdtUB+%9z4dCi?^-velj6Kf6O*}eB^1u{VjB`f>mB-f zfRNHsU+lL6N22SwX|?PE3$Uwten_Y6(Zz(){41MVO!9~88&>hfi^~f=J3Kxl=zc4S zYMtF_Y%^fz%Jsz@%+_G*_Xv~zJ`}#Q97=nYdz=b=?0M0Y{&&TH&RQg!a*4gW?WQgQ zY(FU{o^PV@KE`gbHMq%R-(iY2&gJBX%}vT5LHl{Tr>{yW73tJP=Pu~35k+TKE22Gz z-X(*twQ3@GtGrkv zz#{ajXUKwr4e|<}Xpd|O{X%yEy1CdSpyBr_Xvmt-u+*KZvlY3PJ>?uR@PjC)@rPc6 z#JDq+{Hp1!Zp+l`v$i5vf6V$R{(ojf;2GYnDS0>O^#8E;m0?-7>DD3&s5A)DhzJtW z-AGB7f)Cvdk93zvNlUjhNJ)2t#6x#?cXxc3duGqfJH9isk9~YU_dgEw0G|84t~1uT z&b8E3C7WTE^TqM;z8$kVNp%7fX1#f4=6qw4UnZhgPQ}!XddaJ67oR+mC}+{1EA5*$ zXXDqQPT25-$CIL;wNl;!Jty|e7rgs`Bfo&v3~;KnDq|NE}hxl>`bZA!kZTa1-kUJdxUvS`mOughmOPcX>B$we3lHznjZ&n-0GZ9 zHq9gaL)VU+O~Afssonuun%Quf$UH~#yD^+zq+T?-S|}j)4EFwH0A;o(HdP~D4ClOO z4KLm6;(a%EC*+;Us_@=~ix9#R{WOzBgy>UEJ8bm@K5X`FJ^7LglcIC7GrxtFjdn;$ zXG@Ehfy*5{;8;ZTCUa9Zz@ImB%qePP{- z8-MYvDGD=rrBLl4bE3px;G3YAzQ>yVqORrU$`YfZfS%n!W=PKJ)_O+Mx-kM(hY=@uKA>g2~ ztU2A;01nbNo5SLcmcd?_uxJ`tVBwc;voWM8LgBWVc`GzL7Z=C9UG+r) zyx!~1LPYzVnfjUNVt>C5Brd08chMemboOhDBeMFCrqnmmI52tb3ap*ZaJ4VephH9>W^qCzFgHSe!E7Lv#Yxu4p;>>;#9)+& z#Kh;a9J;NOz#MV3CNh@2#6dzrGN7M#5ac|RC6h5>z1FotDH|)=aD7;E-pwU_%{L#v ze@;;`yJ#yxKRZVF&gyh};#v7Cr&G>@sy4iW^NN=FrWT{g;m%EOC)DzVcoJ^=TM2}c zSDvc_k^!@Fd9`QBe2!%9zWXSl66n`_7|&YTXC%bCS9Fgm?038IzEknppP#$*CO96$ z`kv@9z|FOGHo<^^m-HHaLe}6SLTf9v#6I+NTjp@jyQKf9CqcIDp_!_rl=+9F;GpP? z9sgg=K^Kn zOM9C~;x)W*WZyhP#Lti7+?O=!ZN%*ufio;MMhwCC{O{bg#!Cp)WcAh;25Wu%P|1zK z%rqggG;(*6Bj`cb`|lld>C+kP?lO5Q2U(LcZ(Qaki*NidF50_Ayu8L$wGJiV2|K^);Q`u3Us>w8}*Zwl@(^YbFU6BNlt9%g|quW^Bk?)8Raq? zA_9V3BA4yT!HQd$$k#cNUEyEfhege9 z0T$!o>>ECq3}$Xb(kO?uGfU{#Hw{yXp?1B#FJn4V@G{sKnO*h(8vkgiU0zNrRAFR0 z);)UP5(lxB9lhZ>htR%~r4;OH|NH>!g1wa;j|Ep8>3o%k&SkpFA#CL=e?mfvLhax* zioMJ#)crNab(s4~d zANm5=sS;oj_37HDD@Fgsm#us8@}4O8I{Is z`X90(0x1f8$FXPLA(RSP64Hc$-F0VpOtD#*?6|n8viK~iS{NQX>s2{issF775cB?Q zZ>{+3<-pWe%9X>8m++552sz)trM3r`E>2tV70tK^J#yzef_{};yu$VNo5R9m5~X}< z*}W<(OH5#KC~ZVyp{nXIbMU&NEhv$$fY{Q+r|*hp?e;b658ZZ|MKRO^&h|NfJf?Kq zwFk9+AvtDLQ{_-x!Lq5gIZd`j0=y(%S5Z)Cd{c08nF=`9mRwj-o3WZuct5%z)lxqG zQEtz0G3ILsk+r|IeqoDdfHe~z&R9#s6B2&6JPNZa+pTg)Xhoa1twCkg+Gs5PmH2hF z&CX@ewRsG;J>5mki&wASUdzbX zxYy)keQU%Qyi2YV@f?kK4}XJpLZ98IBJ-GdpK#9#1EP~3xiwa+|B=biupFnAP-n^i zzUh`kpd-6TMX-x}JiL$T=y(0mNJF!+SeXZyQUG1DlrPFgib0Bus@u=tWi;lasA4=J<9_Tf3$ zd=m|Kg$;`dc;57lRup)>uUfoi8IJ5$I~K@gYpp#H_S#9@uVrAj=R%PD0qYjgAd#pr zxJ?$m=X+~w^z@-Wgmf(tT_0J>8?J{6lIb?TC`+;xJrCwVs>>Ht0dB&WR!;e3=!r4NqS-LVW+7)V9#MAh+RmtE;K$6HJ>Q z4Zf5dCUBn(z1T86>SB4yDQACOX~|;Tg*{ONPZA&^ii)|HrMzj+rM%V%WPsRAqF9J) zt=Gyq>i6F}cgt13WiJqE9g19{XHzQv6h9hZoKQ1UAb<2?La8sQP9$@g82j0?Yy`wZ z#-Z&A{y`5oFFi#b;`qa>uWd{;FA?oOGO+NU?|t%`j%>g}b&2CO&73%RTxj|;(3ojF z*30ICg30Z(UqJ1K@O*()Uh7ne^_m^4mzG(%Y$07?wDZ|K=~cqwedg#H`B;gQ&32Zc z5(HEdw!qbcHn9PX3TS;8nj5`UW6feC-lY#3feubgQ~P{N8{=K=!zZm=tyR?oQ1G=he)lHMa{h9HMw^RI3Ufo4d1Wg+-Vk_4E=lBERLg%JO}-0!SH? zJbaA(&aAjO-<{O$sN${CIji|-X%X_5L5q+KZPm#i%R~h9l3TKVXIO|VJ=k;cLc%|Y z?+g_9oFi-x=UM=$x}K%!_MRe^xBcv@Cr>c((SK!Ls%vidp3RZNvzLggH;1{;(V-W` z{C*8jbg666=G^%ci@8@q8>ToVx%khSX>>CKMU!7IwKAg3VW+=7xT!DGzrs2?3OQ?w zGXDX#5h9(TmK5Jn=2g?d>lG5ukvX4PF zC5Qsqbgd0VT&y+7WkfiX#~pF3P&xTitF+ejOkbVQ$Au*c)KqZVDv5^9LD!)Pe5$v!bO?~s3B2bjlVd>kA%c5jx{^Gijq$K4WHegEsQp)*KYMS=jBQ3kL zj(8)u?&@l$hDjn&K1PtkKL^{u5A_4CbwOlqP*_|mRdXVI}3x+=YcF1-%G z;n@w3bfgx7wRy1vbS?Cs#Bm-uvodSk!41HbNpL3!ia*j=#ah~_KTqJY-z2TRBM>%M zslbH5QNngRF7CJEnom&&#PZ^v($X^L?Yr4-9=|Lz8hyvNJ6rc+%j#!^W$M*i)TD(c z0RSSx#4U|e*wdKn!deF_!B0J3$*y=)_4apA2I?wutVem7RDL|IYa^>nRXN!_6t*;* zT&PauwhwE9xeTsFYr3V5=JRC`&(w&A5YIHo%X(DY6?=8G%8%z=NJR2s;}M{Yw#yQR zH))%7UQJfNm%Id9u*=?PV9i48;du-z8HLT>fRLV!3mr2fJ9P3hpXrdqg9d5&Tr0V* z^iD-R0aQak70!xYkIH*_f(et0R z3cID|rdJZ>KtY+fYftT#ZfWVkP_tmsQhU(Trl?yh9K7hYc0X#*}8Q>GWF|)Bu3E?{Fh$kj`5r&!I*k5i0_4i z_5w7@Yd7L%xw}V#(@l-Pq}c9KUfNZkQ#Bd>K5>T!TJM{7!KZ}CTND;CONMSl=MIZ8 z;$!{g)Xt$I zmg7IP6FCaDjUy62Op!OZBLu8m!~|q(KNw47w_N5^7mxzi3Sa$Y%kbh>0XRq?;O33L=dU>NR093-}3nqZ%C(6`>nvoIdmcKxEx1ys{dE_ zR<{y52P&@#{A&h5RUg~N`9zL`FuWiD;ce4+5>|gs;#v({yQ}p zp!52*ov6#EK4)}PXWVz7R9;VaRTr18D+t4^*YnGDeDsdArKIX*>5R3DoY${6-a^C(trIww z!H7OA2x&hl=S&HHzC4%3p``J$K5HT<1n)cn1Cjpd%A)Dok?Ecylt70&sA0(mjfA?o zhU8_*&f#1``Mz^lpEn8tmoRYyO+!kl?IL$~JM(poPXpowGbr!WS2!7WEt{j78`yom z%%Qqid=0sfKJ)B3Cp4x%h-DM3G;#JV%5bgYa=FgKo>28*N_FJ3zT`g{4}$i-<1=M_ zZ-&3Tcdo5-N9QDRw%8ndbkeImIs7eB;+kMj`5@k#U#wCO9nP_9Zo6ztSwF;slJ;73 z;j#icmulG@QzyjI0Dn>G8iz#4PwJFfqSAT=?M;9bD|`4MwOBHb(bHn`wPx-^zXQAn zMywq%_x!qkUPJYKRh)!miNLzlyaAIv#VX{JixlSNAbMUO+{CqWbjV7TSWDR=!Y87| zaaB%>VY*~YUlIg7w=tS43&UvdFVVD=PSsWl6m3_rQ;Td>=H`s*6?Viv;ZXurR{A1P zbl4-5|nGho99XO^Utn)8y_#g(_8V$m2T;cOSdEy~ASn z`6wGZSqv?-M3VvZ;hHSivw>te7r=5wI@-wTdq>XyTqwA4H%pLRy$6j0eN4i z+n#Gao2Tub9F*0=TcvFPBA_bTMKt{~iCi!N301!)dei5#Bbs;+Q&#%RXGswPm@QOXpsIaogdF zgdz|)G`z4~Ae)FxujtSj&oxA|B~JdPQDT?qBF)+H1^&}Xwf)w3PI&ilJFZBz%SmJ< z^R1_u7qg|sc%?Y1wNea7F1fgH!;!)$*Bqwh>-ZP&oXHh}^x@2g9Y9L4PE7{@lQwT^ zDpl zkJi@VGtAaCKzsTtM6GP=2U~ZO0#GFi$NdbQuB0pBSILEL@o+nHV_Z|x*#s;x?gmFR z_|7RU+{4;k@MPZKe`rCXNm9~X4K-CYQ%6ITv=X%x6BDbpy|Vk%5K;xRwm;z0#&sVE zXmiD2L63iOTkA?pT-AC-o7Fw)qH3o5=0WoKX1LtR`CgCu^xK&CJp4#V*n%)V9C+uG z(at?n`vYzo=Toyq1dn?IkvlUFoS~NN2h&^aSQzBiV&^`aHio$s(v!wr&dHkev+V9+ z7+h?Sbu5#M^Xr|WBB7|fLkA54jIXef!I0Lu(is5c zwLEc?&QG1tb(2G&eT(f8`OePxBG+9zC_=a|4E&ZA&bgBs8bGHH#w%`f!kSj-{Qf%cBXsTS@gku8 z`?w9p5#J1se5CM|McbUm+S%IB8P}{^0km-j?1s`N=xA2`hhRd0(S83x8 zT$^Vj^33ndQ9=kA6E05z>PLUBai1HkgIY!L;&4S6P3mXU8I4jNV8SEw($?jhw>te( zm;!W|s0Ux)-z&-Ygau+m&+BUh!zVdTq^nF%PwQu@@0!SN3_>Q9_y%gAdm3RG+Cgz5 zGO<}aG`NnH1nsh_`1k!I9lNZ705IjH^3<)(-C|ffg)~0F z!>2~@F;ic*dn8B;jIUsKYEV9x5pWRZuw2ao;xsDVZ(3)}*v*DN82E0FH=&>BnhW7s98DMwr-{kpy&bBw6gs)@ zcq6+x1SaA7ti5cyIW=OaHm9@-pXn0#q1Y@1b>~@iAG7k59al-c-{+2X$oGEj!HYV6 ztSK;FY8=oVsE@A|e9wTFQOZkT@lkD`XU(IW`@Wxtg;oENJLF)0f71HdjKC1@n9VHGJ9qsu~opBnsfQB0x8613ip5#F5@Cp8d=kHCr* zF`7oP@sNS$Ju=N86b`N%;bmWHhRCN-GirzqDv#@BOo3CfZ1?+bI}fnuXE_TUoc(7b zn4XmZJBr8nOg0|^#oYsOBvN0v5Cu5jUmrPA%~kDS_jaMgM7}xjbxbA7eWFA0&&f!D z6yxC_h0YYT%vf0&%?hKbrW|{SwyRuELupdFs|i*cH2sjm-nJ(e-4w`(lDM6xbbp6U z@N)=>)|_f8D26RK>~2pK6By|?NCEh_UXM$hXv{7pMpCb^h}9#u#_E(-<@4t7&4=S6DA-Vv$cTo+KPrso5Y}<09oxkd`jJ6>tI|B8CKn}ElO15cp*m|HnIwg zVy$Y;CJql{y)ycecwhUT+%DyH6H1xqJ2*nhslmc!b#|Hg3bGwLbS8Z;Ln1e}dgLMF zA5-*yQ^EfFT?g2GLb+=;CdL;>hpKMcSX#D(jkOM)d#PvnwM?Gfpcyin8r`uuovwOd z#B0pbG*(0*6(bC${b|4(9AoSujsF7y3nq-7I_EQg=iBA>)z_+>FxX*PLwXVW_~XB~ zihtpty*0kyN#Su}{(!zg7K*y-MKs%Y z*zXRC;ITUQQdJkP=+HA^AF=VeoOk2}zs5R$fR2bnBiKAW!h`6?ZqzS;;G>)^7e*l+ z_a@4~2T~eUt{|nlMO4r1aYtPQ!ud;>L2n{}yow>BIvDYXd!Q zj2P4Wbr8yo@ywmYd9RA?RLfelwEpdAWIk6et+d8{HIx~2i&f&tZM`a|Y?$1p zfy(c&FOV4Z3?3C(wF%Rj+S??5 zyyu?F&(Vq0FOv59PE2Q)H#Y^Nm>A;`=&fhQAJ8+)zWuoGTp(<7*>GocQ++bL6A#t1 zn^&u{9&jD-e)lHwxsZPbE>ggD;rHY4w?jv2j6@!P&tUcV>?{mz zNWcKqV$?vEEisuz<4YyfyQJg^SRIjKo44H{d)W3dtR1$MT3!6<;p3Md?lBt@+-57i zo;U>nw()k%0F#HZI%HVjXCR(5Wt#~P1A|W+rjautT7*xjArB zHaqMaX^T^3-MbuxHe*#R6V-myKlx--vZUnXpG8qgi1&z+Us|w;dH(y)zwsnp<}&`- z)$3(}Rck{TOha{t{VvZf&ZPa6Ep+HC4#; zx}fjjW9)R~4d#wE;7pc6P}|K6i=ay@AbXmj;A>8VgybLqz8^Ir8SzTnmJtyVQ6iio zXoSm&*>tqv1#gy2ybRd*9nMXafhBM<|I+6R=65-No7f9aDMJ{&oKpz{^mqf7z#wQ0YIo+~u(epC}@)NdT+gaZ*8vn1kh<8reJ zY20>>KY2obd-wlvh5q>E4+tp)fq}-k&$IhctRrM9syH}(|GIH5na1sqq1c=&`%fKiu<@PIqgpqC0v zc5@l7h)S7u8X1O~$o1H_?=6DbS}F0zeA+Zux8rpTB7TeY%rc=YnRmtM&q-BPeSNK0 zx+i=wpI8eJPC zg$_Skffd);?M%Vu7vJR|<3*KlaVdZ?_Qn;7fkJh**4%lXL(An!>0O~~u|F}dQAya1aIq%LfrSwCDc6XpVFR1x#ty zz`rTSphtzpe%8fgHqSfH{_6DgWK|3Lhy1+luBT8ijEN%5*GTh0(jk`q)#+yRX?46y zq?5TK9Y{C=PM4{MmYvjQkUcvHv(*6z5l11#`5~TJHJR6b z)aWT38nN7m811R8F{r?`lU~QSWXPnEVBkMhEdTPQ{9`Z-O?@z!nOzsu-b*pE4eO%Y znJ9?|MC5_c=RzU~b5g@8x|A1ktES1C^~g^>e}r#zEVN8^K4Pl1+1O*zZYIYg=QY1X z#t0;kkWJ=$iHoZ|aa&?2YrOIG<+1IUh1E4mo&S&%=RF{cZ_E^0@y7eh=B81_Y zcoe*0WHA_9U9Kg2b!AKUg<)U}*Nj!LNIW34zDlTa8cgrBf@oA=#^kfuUAHpE@mP}8 zIUKx+P3PO2E=o*DNYD#qMdUqt!Na3A>`Hgvv*i0pZC%}lJ%)>g3YgN10t7ZqTrpEF z<&C$|{`_-nJWju)fRz%zMwg5PF59oG-E0peX@+!;2njKzfXjV`;}aY?nJ~flu@-M; zTWfTeNfw`w05FXms;#o#@I?AB8r9M9R;9#=)pmP0_RCWmKwqhr>(!{=Mq504`1pSn zWVAf7!#yV^VLeTqj1OP=K0s78B@^%Fc9_2hwC}=$iMS;^1qBVJmeo8(1fdjeB^XJc@wvs#BJ9?`+7}8Pz z*~tXU5R{XbLm84{0DS3~;LJkisRtC$j@xS{!Lex2xppN|(pObgh4s}r+sv)icYG$q z%eDQu&rH9!y-gck100*W<%r@%Ik<~!YPb*ht}ZV_8#+FBgzHMt z+&?F=P@9LT^qhW*E&d;*@I&xfV@y zPahb6y8(@#1Z=+1-H$;LzFcV6(ZGIsKjw99B*X8!Hoty5Ddb7I^r*9;{#xEc`Xil$ zNJwY5Sq5JBr+-_z{4r<$@vP`P59PwKo!k1}C-lkRE2^p$yY^aR?-d*IpOujRlgKIl zfmB3aOH^rv{92|pQ}EyY?tgrWe|)y-NWbnpr$}wwxcEQ!e1H7=|Mkxxw}g8DJg0Gy z;(?jm|Ku%T8h|Mia(z{C}}XN~FZ`NQ$I&-g!lG;d|@BWcOV6jGf2&J_CNtNWMFLtO11 zT(|i3!{*ih<)IKD<$Ofy!O2+{H;((id!Yd1{=Y-<*EjxuhvIJ$?*9(Oe_!GMKZn9N ze5hCJKZi_(Bo9{{M60d^2?!A(mC#SANB7ZBnIe+-oZp~%T~qxP!us>bi+rDo+GC=Z zFJRh~ogM8WFOVPY5e{Y2rD`49OuL}Nuh4CR(5uh`zR{{Muu*F<$oO$ zJgP@!LHg(a{wr=Od>8nFq_rxbkE)_{KT2BDEUBQ|`nkQ+{2EQ}`PEg7QrmxQq6IK9 z_Gwk(ih;@ex@wDHHy)E-dhYBRmaF;)xIfDeZy(+7Wb=SLdRvZDX}0mu&eB@h&=Q@w z!aJ{<`VqpPKbpUNw~-rnz8eO8;Q*PC*T5}grZUu#iKKoCI!4h6JszPy$rqmFG@-Qc zF<_6^=&2e(AR#89)F~vDnZXoyS-`-Y;i!t4vaBTh_+u|2XU<0qS?Wc|y9ZiR17*3& z8=GY`Hfz1=UjqH!4o(FJdHtmzX;mW4)jb`j`vkE4-%6AZ*nXVnjM_^t(nhl&`3C*X zN^!#sP%;xvY2F#G)g#9y_Qhm*`RI{&3nf(+t!%@0s$K>x?BBm~NtcAm!!~VNhW++G zrb$Z~zc_^u`jwEG!j9IOmba{ZlX%>+6A9O}+s$N_cf+E$w~MpQ_qj+AE)?JHGux`D zApqB98L)L28Q|ooo*IB#XJ#QZoF6DU}pD5FyRpuiyRTRXV! z$?YzcTR;cyfsZbGn(A|N_2lHbxO=Y0dhxpI1X%iMFj%f)c8sKRfwkZt1@AC%*@L;X(uiXSAu zj?C;6&wkv#xqzKk(Ko*x*smcTaj4@)(JbOVL7DBYtuDOf`9dXX!`}?Pbgmk$#*B<~ zD@I|4r)G(wQI)Ke=GbTmGLKU9E z3G2JNGK!fpX{E-43O_nncwHx1xa^MIQ=_Zb6~8@vf|Gs=k05`r*p_n>tvT4@>$$i* z9wj{eJz}KPO9%&}aa#b7+2AdNJGjpKx9j!~N2yld6B&;gFF%a=C8ZK0Fut3yRNtGl z-O>YCt*pg~v1A-K)Gbi@DfPQhiAa_Qia-!0wz;KcL|-)UnFug>$MSa~ex^>MK%@2B zJNXrT$e()-iyNsf)=?4GZZEDDOa&*p;uK@YrH28MUZ=y4YfZd}12kA0~(8BKb_cc?aQ54w6=R zMyb(&T7J33jg##My#1pi_8PwQ?iS`hdmnEl?sw9`m*AXD$A&W*K^}3f8luXfK0>9q zq8(`J=o9&=Gh{rCDtmTx#Q4}n<~t`MVA*>4$E-U&AXA+zeg=$?vgJp4HXDNj zz&d&4dxk_LfbN*&wdC&2R69y077)D!5G7dE5R|F5J<7}`$nNb;;^hWU_(O0qz*)#% zyzn2B2R5P9iyPwfnm+#FV9m7aDQx1$P^L7^Bt899rPaw}Uf09V3RyDJz|1uzRpg7D zQ`kaGjXbyeZe9m1dP>36@@bBf7`^9ez!j7F z!;gFV7-PK!0S`E8XFWXbnX}qf$|O!kNL(KsoVzSo2P-dDPpX4Wt!H(ZE#=tdxpFBy zPjSZT2ES}+y6|>v4Zd{Df35p7@Lj&i`-$!iX2bP^rS@v+Lsp=dRINd^pbb#sXnIYY z0_9g9)Eb0;Z?w|MJ@v2}yPG;Ew_#}4E-PCOH*pmZ^b*YeyxM*q3$7rba{-~_$?I0$ zJS-)D-}(rPE|$qKs;Qok!z{;a`bW}viZTK!zAza5Wz5vr51cV)ZoNcZWNE35 zWp@9T$X%X$A`w8kFrfRh^S}p%KLsp^4?JVEfI3)h+fTGVM^Rf^UFEQVhB zspjZa(`&jMJS>CGd2&39g8?9tDiO&?sr)@8*sC+r*cbIi2%v)R4Ho_!gZTTE&%O`H zQ=xF(JSp#UWkpC2^lXzh1acH!iu4yfPwBZlA&@dujHXM>vCax6dv!+q9=lWNSfVG6 zWB?EwI~B~H|;CZ(|l+@NV$jmF1~h(kCy^ioi^#uPSL za`Z_*YWL}orSwRaI7#BrV|SWZ4b35<)}Gv31=kM5a;%&k++;-`WW2!gorM-(7Uy1` z%bf~u(IIIuj&7`io$jii^~VPmO?!}nCGtg6)V-f#8UoE1sOkFuC=Vq4C1 z_hw)C`60zIE+K*_STBXD$Ab0Zx9Y`Hk2;jAYFin{S?E+%-~IZ=H9`>2k1*at*Ls!8@$$RUoeI}5gGnwVSa^5F{^Wa<;Ra`CafaN4?7!>&u$5%-nZ;0nt{pjuGP62ZCb zEIP}t7P(jRBe}}9q^ky|VbBaDd?6_Nk$ zYL9<;d)sWdH>vJw*#T$`x1B_pi5@wm18)*0hgjdCfL8kV-(wJEt;-Dop}Uy8FfL0qVezrWejV`3Mkgj)e+~`|z2OoN2VZmmh`QhUy zPtw4M-mg_~OE}bCJOFkS2)5e>t{tuQ_L&-d2+?o%8hk~dX$uhma>Rdrzs-^F_fJil z@oS8^8l&+8J=`Li<85pS3r%cX8Ek801VNyt%F!s7(qFqb`}$Bndpb%!O;mC2_NMI- zMYMgj`O;76ZZR5On2_m<1W=q2H?Cl85PcuAW;C*^5x?t%HRQy+na3ZEv4Zq zT`|kA-{Cvg zrtALiWPU90qYa!|VR*z-DN=B`-|_$#ufQ+SucS}-jfLC3L}NFVq^%E6)I-gnV0p>^7?of*}fq|`v^^TarJ{0HqfQx zvzo|{d}qymw^2M?3VAX>vq8)W9ZY`&L^$9%^KSYWO_fxtbgC*fA`{=dNmA_7aQ&=K zby=waPpy(iZhO0F>U6O9uqU2dwI*hO0nyuj>$EJP9PoRzH6#p5EM``%Cw?xrNiOsB zHuuCP{Ry9fO7IucVal*GwO(UVOIJVDj!(A6ttXyC5_l#ga*9vtOKnk`ldl+pqA!lm z9N*igK9sU3E&z+}*YMBr2&X@qi0cb?bAU>nDL>=sul$mlTjXzZeQr6S|EzE+r!qbn zsMvhCtWnbsCX^XY)t3y&1**l&uQkg9%gtvbWYel?onP)6@Lx8(NZsjdg~VQbo*2`# zXEtf+1$A;Dk)-iZdZcIXuf2E5WnmmROEGS+wX{2s>ixv{PSYn`FJHAH1?<2+D@!4& zdbOLnhNY%l;DBYnt+vx)!ZS6R|;|L?w)38;!C3MDrAVt>WBJ#4bk({hvLPS)aH3SW#Vb`Vhb!gj37w?NLsG;C0k`0=)x#ctX`rNoX1ESm|{5oZF*_HSh$ zY1QLjR0i%V0NW2CcU><6LC*+Vh^q3QcZhNQEE7~0thnF#bvLMsfRXMi9x^oqT3mYh zPxY7IpWGZD(U+Q>;A5;$MHU<7VOrOmZqJH<5z&Zx+vZ5_Iv6%t&5DtX4Cc3BarQg3 zCBtmjtjE-*%FQE>B;4hE2nh*?okm(8<$&rCc0gj-n+|5Sxksh&)~z%9vPt+dm?Kw} zNp?{K`@1vT8^B*cbco?Uz05_L{cXsPxQCU-LlhBwu1+Nspf-A*Rp)Z?wcLD8n{96L z0jf)ZLR;vBuEQ7jA~Vvuc+}d?~w45RZaAn z1j_{}7*G*V&W(7js)1@vdNxs#HL{Tj-zTE1IU7w6>(qzgMKR{LEJfGSZAkxQ`S+KK z6dmeWW{LudtSv0twlG{EqnYVgYXBYG)UduSYI$3nwBf|CJo4Lw!jE^?WELgW~Vua zi*ykeHQxSN9Q-fF7XZ-8FS$(CwjOfSR95A}Ot+}9%3$j~%9}4E*V;o!27aP!8ISir z2a9`(aU9x&M4VPJv$c*dm>JMWIKKi~KvZ_T^I5NX?#^7jt7KyGYgIPe58NNQf3odn zkCf=!EBJz$9hI-^?pzj_y4qIHHs)vVbWrcQ$$}D5s2BYTO_(6Xr(=r5>-=IAE8pMFiS5nl!3UsyX_Bk ztoo5lANENeik8ym)z#II<3P>o6g6-JBE!Y_ z*t1f6_B1zlWy?^xP$SZInnhz$YEa^1MTSppKKbcF;{mYS>kv6wfl1Ew#fV1JtD}z{ zjt=xc_sX%^P>70av-$0)2oyhk%LdoYSodZUxeE|IvZW@z0DjqX5+G>Bs-mW<9NPqY zB?7HyqNn2X^{z|zLPQ&k8JHXBPx12iiXTds5d!+{Qo}tf+&lS^z9Fe=Qxg+gO0LKK zhco-NjV<2-&5a5jv~+M!}1`;T(BhF8^Q!_r2K$y;LH|!RzaGA0YS|X?j?-hqZ+7>Vj-bNL2FO zwrnhk7%a8Rj1f41+J9EhcCtf0EvLPrPPi{+ZMifMj~UqSy*KXv23HE*v*2>j;&+wH z3{)Y3|EE+2PQ@~v*7-;h^66k-pKpYK9xB_aFPma9n^$ph&14>|i^VO<_NGknYv2CH z-7W3`KF@z^0i>O5jVgjY-;`}KUCV;$s`cBttD;H4dfl0*#f7i{7gyKUN+%!tGJ2g) zrS8&$eZ_1H%*u)l8eb^e5H!gq=U69+B$8X%pUGuG@IP8J4=>bgd3l{wvT)kWg@^XH7^7xR&q17dS1kO9 z6AIKS4a_N4AI$cF!`x}UV(y=_+!HURDF_qyr%fM@aK#-7Re#DurWXx>W_PODWvOXk{Iy6?7+ zabBgP9tnIHr{PQjg=gBvB!)ejF4_*y&c~!|EZ#}uN$nLqdC(P(yXIL#m9I|*|x_Bhbw)Ql>C^K>CG)Kj=yW+|5gh8y_x+LZr;B0 z1ZeR3p+2-K7;LL|tWm$GRs{UG<$aZ~ZxnQGWAt1TQq&S6wMj9=5(33`u2;8{vV`N^ zW1-X$^s>O{KC%Su+EpO`CtQm!8cEpF$akekJReTRUf`mz-rwLm;siBq92=7@_--V> zH2Xn%tZyQnmzQ@%Pczx55EOPfkTmc=4XR@X9Hh4Tl~(PP3n7xg2O-mHg=XNhfB5qD zFMtVP(`D}&e`kKYE&oM^jxBj@%1lQCiIMh-uIh!iOchmChQ_h^LE>{JY$nq8d*4QK zJq^O+mf_=anV|Y9{rz3eSCzFeiuGv9S)g>@yTsk_IucXfzDqT(P^u6ZECCUzU&QFk zZ)%*JH;dj+4pALSBy`>|TAtM>y4tWCXWD-E3)fWp#fEBoGT=D@Hdv#FEW)?V;Kb=#A~xa8zuez_NP&{n0QJgu+?{4I@B@j7i9MMmuul*91M*W> zM57+`6aXObOYTeLq#^+)xX}PrhfZ;n1BpFHUvrhnZGKNSy0&(?e(a{QfCEmqihx$O zk8Jpxwh-hDs7KhWd|A-*OCY_i*)*>#X%O)I^sfHXg?L^9r+Cw|GYJ-d;loGE8gA0mxT{6TqY0WHg%4yoDbaH$R?aS<@9p9Z9n66 zF4|Elo@-cHQcQJzk;^Uq3qJ;E+%V>W@2OIAL z@HVx>@9m;61Ib9X3`%PmI^8dTsL%3(Uf@{eBDy1~TOWjTaNrKg=relmKRg_A&k7!z zV9r`U>YI8M9+U)B6=~XG(ez>~A~>r6g}Geo=NGk&@K^<^0howf*78xz-_LPGNAn<* zyvzpOZ=bC8WdLSkOg<~H);nGbVP3J>%?G01yrQ-^*T*H@&E0Svk~nu1ngr$#d*f=2 z7U-8Z7gH0>SZeKhsH+t&KN311C>f6M%&%%r%$OA-X#eaRa9hw zHOLO*qgDEE+Y^b){!wiKIC1)Xz%`slL|C+=95i{d(s67raV?wM+D0Ndv>aCRCXUYs zbRUNxDJz*Da56A>02oC?(`6vaYNc0%kU_0jPkeKzkc8Dp3n{hUc8g+Xx@g9Pz;<&u zqy7e{?O?w2XQsARHJ>U^o2|R*T;aGn1npwbUD4)m{p3ThmaJ{POma7-~E zhh83U-&@rW+x7~1M zC&Hf+e#w@Qs-O<@S}kW=sMe(2k0D?=7gpo9$_%HJ9V{_y614?sOcGEH!MqOVsbKHQ z^66f{<8N%=pTRH?E$gz}>Oyo~IKG$)N-Sv2HwpQ6%A-ze)ULB%3ajlcdKjRp-7X&W z8I5%Dix?~?EXFCkD!VIw;r;pZs{q)VdX3!>fIe0}0@IX^t3wg(vabL~6b2G8>VeMk zD_xPs8ziv6sG;EPyDN`c86^od%6KmQ$4_6YybCt$itslHFq^7X2U@A&0o&7f4WGG- zF|L1S9XX&q=!PD+qOna*Qdr>_^wyfGm_5=^iYgjLFtm{QuHTn5)9P6(ayASrNNPHx%3we4u^w9?}5Y}fU&Uv zr^PVWDdn0NLSP~lH$G~~BA$Rm{Vp3Fg_uV;ft)}X@c%F==b65r0J$2_U$^bGlCb}z zJmvTp>lKv+tdOVp-ERp|)}ctHO3HqJjO%|qBfkcnT7p_TlPB*0JaqX(;U#40FVK@4 zQET&JbvWROQ)Bj)rV(+Mf32yh>EO8b%4@HKSTz=Yjg7%-4J5oEnrU#?tVjg*7lUA_ zhzdH(V^#mve4>;|cFmMo4Os9=dU|?hzSrUH-BPQ+4tW-BI=iUIWw%|a0&V*e86o-L z6B^-oGQe0#Nx(8z`tio#|6}jV!=Y~b_De}fDx^fTk$oq-lCnkF$6DD!_I)RzvhO=3 zOO`SAZEU4%V+k=BTiIfa-3-I*t+BFo#$u_vOKmo%lAUC7p7MGg4Kx0C1h%y_tsH+YokI{PG}` znIvNu#M>g}*8Qqi>Dlf9S=)HZE^LSViyJFps%N?MGEEVh*?*Eu2LeD*8plj6xmAJG zMO%M=lMYP@m0u41P66$qPV&{AOg+GFm#%ZiQnQ$ZsXn|PF_di|!R<2H53^w$oiH&u zd@?YN*N82Zb|_)%HVv)hmOZHWo(@69TaQ$|Q7^|YpwV|F8Zeg@zc+BiYdwn>@mSj> z_&i7-lbFL|bTv`ODSc%9Kayr0A=y3a*Y)+zdqfJSd(rp#5FAQX#BKFx=taR-wRIFj zl_LJ7XKLxsQOh+D@Z_93oHGxfDq<{iK(nhj<`BlaySv`=QWAX@~<>ZL3HhgLsbsn=KotekuXW_LhcS z3!>ka_Ku@NZw^M-c0ya^SfbII-sDswjjrnnc2ko^a+)8{C&W%ngYx8q99YeLB~)9R zrDPr?Xr?P!1tcIc87`~wsaTF=CLTYYe$VEklwv@s7$8E%0F^|4S1XG1`65RINVxCb zzWsR`F~;YM7mJ)rgay6%Vch?GsrpQs&5YIs(U3i^cKD=bSgts2;&Yjgq(q=(cyk}3 zoG#|Tmu(vTWv2jAs_OTQct%w{;p)*- zT2Hq>%~GFQmgZ`5iJ--R?|Q$!E%1uH=C?n;;RBEy7=o{rWXX^0Qx#OuQjME~+IW3A8 z`J|5ZNv30>Ld?x|x!f2_E$-gv7RuP3qh8J(Ggk}kV$@M5s3i2$q+D(>_%MAKJq?l7T5I(~DYSbgu4hT!l%B2x7fXQu9O{l8u(Vz>@I`5TACs$x* zW)uQG3Bt@&(tAuIpR;rXTH0n?J*597tFT;8p6NC2B5kuR@;SjjQUnwNxIo?`Sz~gG zmzZO1)!REztk`YSi(N(5<)N8!dKl7lt&L4_^!cakM<>(5mMWG<_dwMDs?#EL{@Af& zFSy!?Lb9(794C3AOWvzou#utvJ9kN1;glUkgU>7S2xcS zAKi>BElsYeq<^9}SehxCcJ4^6vVpKd`{~vQ-Xr@shTa?%6(0=hp48qBJ7B}SvL30G z2kjr;0*b=tN{O0agGc&vpqe2txy^W;kB@Kq5Fx#8`%rj>1?tA`DTODb5}{+aBEuXb z4Q@xC#6Baw@QV0!(IZ(y*@ZfnBg!2mii!_GlQw%?gvWIGUfpHDm5Y7UbWw?BVzAiAevd%e zo>J|gCefvQ^py0W!$1CGOIwvm)UjCErD=VfUc_EKj?>U0Ff2G2F>tLb<)usWixBY` zDDMr@pML4*@2E9=h{zUHt+sfldu?W<$`V?u8->^l>B;c?uL^RoZAuD;UszKs#37kMbN|Ck8K zsdol-6>|({D_F_R+zho)kGj(s##|gmP9L1Ni<}X7U2-$Eaj(NJQTB};`c2cd4*6Uj zQJpQ*aKgY(=r`|O z)$FGcG0WVn^#Q?C$L}u8so4Xvjfm&1<^7*w z+eQ+89})zsa9|@8=Em z$3*@55ou-8QxCgX<(qH*yaj$<&4U}{pYQseAU@7xCU=|U$IbI!{U+Est*nQMIz+Cu z-S~A-|9S8cZw?)vIq~xQUq9GyzC+}iw693c)$=63*}s4B#D|aaQ8P8BTsqD0mmm1e z8%#MzkMqpNT%A0)8UCBckPaj|n!tZGF3o{J?MCh)@Ib<)9E{_nQUz%RSE|12*UR zGd+j@&K9v(0Q03R&v)|gtd#L}usLNei~g-G^8f2$mi9a0;rbxx@h8GZSXBcxZjIk1 z3pM;W<823@D4Rk?hRO|;DT~zKTF928TrUrm9*gz&M+7ryD;JtAAx&OCPiP|ffK$Bv zv3^Q_=+0m6g1>&lkNni~{2_-s@2A&Ci2S3Ubv#e#Q~P%AZ!9>3YI*ojX<)qNmx5Hm zP~$qmj|DI*U1518NA;4oX?2jory{u!c6Ez@feJPi+Gwb5MQa>1*#ucQ8kG<+F%)g) z{F^iI7k0&feIgc^gX7$ANjr*Lv$3ZfKqM(HHX}j`JwNYG-sSG76jFCYlJXEqF6^qe^1&-l7V-%=kog?Wml1AGIkgQeg}ju z78(X)=Gg|d+PvraXWY($Zu_W=y`?i2skCVfucW;mNo9N-W4t8uGjzjN2cYN zaH2`@f7WhBc8yt7VL{7IszE6r8tjT>g^t9UM%hK`GiNSy*NJPAO>r|l7^th`b1vW@ zpjAXXum$|lpp1_w3Sx|{aYDC;3Xfh5qP*K)X5N=FS@TWzUBu>gye%re?*i>4orr{4 zv&>)bo5S5S*B58GP1=vilkP=*)2)&VQxd?gvx<0sOQ4sezSQ%8#ok!y*q>d-a%bcq z&x9!vPh3TKZd^q!O0)BLSkTPW6Y$B)C1X3wcNrrac6XXMYYVoUK726#I2qpNcjR;p zD^StrQ}q6=IdRi?ZQp-CSFN)6=+UFI+O7~zf#Xo4`9XIIx`(p{vk8pJarC%92l zX*vOre0EDzok#rB(VG4=>sQll(JUqadDmO-Wz1krIxN|5V6t|0*!ZsoO`IcYaU3!0MI;#iCCxP*Fowxl0oc4 zfkW6}5aghH{llq{zDRu>I@;*&^H#mEd*u0BFLFfOJxhCn4j`uea#dDQAFX9>^ekq( zg3?GZ%6Kb|#$7R#=>ep0hMY+Ax25>n7Y0=s!PVQ%~nxWbt6&CC9GCtmx3y+LZ!W35TtfFk=XfbUr&Fv z@1sDXWHPlS1r{FV>Xau{k12AerNc&f17oBwPrELCi(Oyf=UozNuJFJuo4oir#{D)acI#AYD!N^(4e z5_^i-$FxNm8rkXRM0Cp9%PK%LkVMuGtJ9#*zBf4tqc>jj@0>}j&zE`>iRQ9n=0Y6y8nv*r-^+4AB)&R>ex5QG)P z)}XA`mQv$QI0gVvUfDr*5-xqsoh9z~R5iX|l39$q%Xpp{5yu&iA{l2j>q==`PjG`8 z0iZypC9=zOxVYGk&uP9)Y4jG5{4MwlZ`in(DrN$ru`ZGNfyxlMAf?G7wE)dg@a86&bFNX(T@VVu_|VN`{|94Aq)yk3u)|%3*)NMPh_VT zN8!m9t#9v2UE8=I5W!f#ZE*6Uctq~uu_Ct9mgv45m^jb+%~Ee&@!TcWF>k!Qs&)ZG9>d z=J;{jrcTq`*my>d^+)^$plwj5Mt)q0>q?YTcp_4C%(lrX%&*G}Jpj$Pxg0Va{q`=v z77Idg0p5<}Jll{Z{`!p>R|ouO62^8_UkLf!;H>xN*B0PbyC0{&d*H-Rr1(;v8M{O_ zu~>XG*&MR>Iugz0Tu>Ul;Paa)q+(gKTgI9`wU8>78OV)z2s2TT|%@tmc=f4*p^%y|-(vMR((& zFG}dbFE{JN*1iGY(iGpONqGAics?68s>t$;hi>#?X9^Sy^!^f91>YNw* zU^eMW6l!npIOQ6`(&o1NRMemuoMtI&cf#m7L3^NBO(-k^RF6cr>#U|r5c3MDqUD`d zb%ZXs=@4>tKfJFTWy2i|R(!R{UGMpdWl=h6bpwIgr@|f*JU2d$#m=k3rsptV5A&I?rA}o%KpRAnO(PIM^k@n+G_x0*sd+n;K4U;TJY!lXmHi$&F~O9pn^Sn+ zas+{0(nQid|x(SJK2VX$<*D8ZnuvaUui6u4Rc!*sa`0_ zgk5*oc=<~7(Qd0oo+Io3L;~M4VB85(h97X4cwKAwJ+6k@MC$AJr2#(2+`wxa8*S7Q z-nP9|$Kv3f?$tBfOnmUh`nTbiKI8}Ryvc`371q&6qA93yx@6TZ@0=s0aPpyK;pKf$kH=qd+sY~)*k)-N?P3tL ze@MM7+xA9xb2qFz*&8 z#EjUrU@{)rA)TjMPrH486J&y2a?o=r4Lh)W(iOy>CBVf4r^2#=o^u58HW*kZJe8t<6lOg3467uh?GpD#B{b8D}`kq$5}M%9NwjbBFb z*-u@cv)d4CQ!%>mi-q{X616({fvR|0$uy$VsjSA{eaT~8M9T{zlLHKD+v*6N&=V#@ z?-g*TNjfhia%18KpfV<9X;LhLn=Gz* zEvAc(Xm5AhCd-H)IO@f~x4Knfl>!v|Iq0{F_-7sV(h5N*{HAGhb*G#1{s9zTAp zlrFYd)dc1K^)mn070Tq>`032%O3TX`)k~Ky_2!w($3_c&$&)oMBWxg5hbpBox5Ts6 zN*Jf1#e$xBOK?!Nyi-^|qm%0aIWjj44f>L++s(GgH+)q82vK_*f*Y>omnO(Qm&_qJ zRX~#xT?sHE)ffvGlXgkEj&jrjMBeX-hghj1#US>3&!}U%$ePxy093hv+v*4jGjU3) zzuQCEU=pvDEi+ZPGv~|D(Abu{;+KHCAE}&Lqks|Jm>NJGOWy7?!(oIC6=K<9)kZYl z22xDdxr_^aodrF*+g_usdAiGua=26*ZW_7G4Drs?MrxkUDAS4WO3jpAn_(6w3@)F} zj>0-2N3R3FI~oXbwyjRHcjV$P>bl?jUe;_Tb|?g<8hKOht&>PbH`fG^B^mBm3!pWK;%?Z{0i4#(3eB6lm`aE}aulbarT4x_{GTquA=_71e+9UZe2Sf$*o44FZA?byIJM|r9xj4>KaCMu|-cbAQARE~28 zZaK@i86MU zaeFj$fboH8drP|KWj}LubFKy5!4S6z>E|go>>kn7jxx6#JGl3Le1-^lKPr|CB{>Z^ zZow@SSjy|4689bZZGq3Cle3AeVL6pD{@qZWYZ}hpUq8i9H~RVKIx~u4HD(D>aZsJA zjYL7QTnqbETl@YzjRIU2+pA+{Qaj&`)aok3G)}NEF*S-9E&(NIO;a&=fBeQ2Fu94m z&X{4VTNS30BjK!SQA8d1-G1N0@&vtbk5%^uZ}~SHH0-+-V@SL}f3Ed#nY@7yfx@A{ zPviDG)6li?qP#J|E~^GC{>D%RCr3Z8f$NH_h$|24xm2B?GuNWWP~;R)*20@+@TD{f zj{@8EQ&i4U?(6UBl7Gow44qxh1G#jKN6Lz7O^DN{s~Mw|(fB#c-q!5-8QaLqvYm{= z)^Ln-u10>v*3}yCP&NN!6tcLvoLR+qE~ENm3wa)9Jx(AX;(;bQYri9{_J93|1(R9}AeufFb=Vo-L-jf8$-+J7egH844Vn44h z1792~)eXBS@wlsI5r1I{^~1kI*N6n;ALMNcd{i$;h+*^^?oJuWDuGrgfv#8~(HNobc<R6z{}}MTza=9daT4Qz7}j&Z1wz z{L8yyJ&-s1byJdl%8j9+h=c_jQAHURmSgoGhYg)T8 zz$k@XM6rz4I4f>Ya)N~=kuTeo6Z*FDm2WXrSoX*uKvxTJI~+#0054x_0PYu`15&E%yQ_1b2LX$+!QA_$T>UQ(9USOJSz7HP+c&rG zTr43&#Lz%nw-MY8q7I*nEC9r?1N-r1bSfcHpVWRUyM3-NJJUnQ*0xB*pfB$OdN^)p zB`CKtI@zy4kW;odJ*w6=)PUSMAlqL^wR(2+aU0u}%y^ zeP|uO;gfyJTdcXm_N%~4OT65fq|XIhDc(0@>mO>{x(Tofe;`1pXc;@bK72O+U3k4z zwnnyow*%C<&OCZs7{<(~67I6_`O=nkDPfm{Q6c=I7G&wPkN^$5+yWN~_%lN#)2p+F ziYD0_TOQ-y-P_s2>NbI?KiV(gb-3MXL`w?gYa~=!-P`k-Fq>_gYEBqRyz4&80RoK0 zh9yZz%{uo>amVYjNZb5p>mOvvr{9nSWz!i9P_0ukc1sA~G3`#fW_BiujT60#nD6fk zFqhg{PTda>*5utsA7tDn1*sGVK>>05spIlDsM5cP#HJ@!2d14pdzSgiofE=1DjKH` z=gqgVJZ|_o7Lz!^mi6Jyl}Y1{(r#_TfU}Qkw(w`2KOjKXbs(pup_phqylus(rT0Rh z(Sb+#_m2iw?`Huv%J`dTH~j+CDvlcHi?C+~TOIm(R9` zMR%7tv{X>Tin$x6LU?Q&51EZdYpqKN!OiVnuMdN0Sn0L)c8slC_NQ0Ogu;)XKFKR7 zDY?sNFTG??S*uF(xz}y5+Md4`E#ZMp@CK4B6|Wea;z8<9b9c+E+H>oZnPzLf-d{Mx z`oyMnZekx()M69BVK$lxr~nl5^AZ-BiFvy{Z*?~2?S*(BR9KA~fKMwq28Xo0#Blt-*OkazU{+dKC}OjAoOXO(-T(w=w_%8?z24SM88 zhn~!~O-X&8(h|#D-_-jvPL~xj^wK^pe+{oWnf%x*l4fuqUQ@qNulm(@M(?H%d^VAf zrJa8~j6cO-Q|5lUHVumTZZCEv2#*B`$C}uOEBL>5e*9R<=k^VkA$wQV63Ar4#6gD> z>dm0_$wJmeyUOViI$Bt_#Kz|@sZ3fU-~~3r931*Jj&Wdy6LEq9(s@?%Uve{U&K6Vv z!FAD`_4!d@wI$kXI!m0_Y)Z}ctl8Epp7z`#qhY%WNC&5Ve0*Nsux-q31p={rYX%SG z_*Q6~$8NqoN({w%BNM~I4LmKH3H&tg3~9ePAZj-G&@1gH}ZShJ_ce=}Wy$4skm@PnAW_ZskAJSJ>;=CFRYBPu` zyUEUcAp8TO07dhjk^slK5qUs!%JRTj1Ijk%+Tn=492FL+RI7ven3AiYjA%;pxp8Ga zmc8JRwHxV)lWk{SjY3+EQ;x@*eL!GqG1EX)!(_T)Z#WrZkR}q%1R}Y6xLTQk9KuHI zXk4P@_d%U@G{P7O!LGSHKp3*I*+e((?d>q_LNdZ(H-?_+;gQgSO(u`+*Z+os_R z1$pnOBH{t4E;k?>oS|620w;--r_!Ro7k{=xH5&m)G7E(eokbT?#B8)@2C_|g+p9~j z=V9rw7a&EZPA6<`9GEC&Q_r7rEHIv9tLbPFs?3_Rr2v;#CfB)N&FcAfO}U|<;KaGl z<8!+mrA7smj0^S^(XjQoQAKxMZVFA8r2!3q{}pkg4IdtBSlS^uKmVmLc5%d_pUf$2 z$-%ArDM&DM?SkTA_JxOq`YZ&?8%H4QfON_a3zyvesIEW2)&U&4IFK%CbwX0aaMy3P zmy4nQZE61T${5nff-svZrn-C?+jcl!s>9e6?@T;ftL`SkkCSEm%UL^mYIBKLA?7-( zRbka?L;7+4_-i~-PEWa4|F-qrcv@FW8Bs{&JE{)z{=FCC*#wZ3l}U0N>`g&TJD1W5tho3 zYWrAF;=Q|yvMKHLln_`ro&UixWKPO$r(@{OXs6z&Ovp{qiV|03B0}d2S7)J>b{D%I3J&Cnzw1lRh{wS zJWhdi&je97!-|8+r`7^rBuN6zEtw9TP{@%sI@1B)lKKTx8#FIQ#&#&~(aWDKz|W?k z`qF)v_mN!nY6a^Poe6H*58GqXmE?eeP=>t;id~83QC%uXXPIpmf=bJEhl2UG;fr4D zkIctvA$dmNa@E+~@<=Su*{VE27vsL^GEguyGXi3IIkkK;2M}~|=#_o85*Pan@(@Nn zr%Hvk#Vf-S2dlol5;{YD?uondmbpcsS&F2Wj_K}d@Ej75bXftIJaBdg$xy$&=)q46 zttD(uHmRj5=f`nQr(JSMHX=XEMU5ouc<|uC>U6weve7(Y#KGvc|9BzPb8B^VrG@c@ ziZ_nn%;==EwL}If-r;te&+WllSDFBg=ae;Mfx)D62*tq-RB|N(+u~ZvpA?jCL=t=L zLlaB;`oE6i!4IF3ZbTD{I?uC>`)tQ*NNhO9Eo$UXT@u#O65t4cq%?wf!c- z7(`n^{pA!z8Z$F<`&646*Y{(AC%xpdRnpnYEdtsr$33rgOKzud7_0^@jMbsk7p%q$ zQ};c;?0E-JUz-Y-+Ev(aZ-5-00o|q*_A_@Y;Erm4Ni`dMY)+ZM0nq9*{Pe6u_r|-4 z-*tv@?409y-7p6=Qc4!$R5Q!#XUfOh@9u16*`$xH_OzrM&)24WSFg6eHaDE*P$Oeb zY@!t&F14i&SOC{SG#yK_*q}m2!*NxrJB4*`XASnFI<*|!8A#OG=`a%;4YTv2P zpFdAnYpMungEj0j>s+b<^#9%gvOY?W?>8M@X+BB=sWN0AhTa=}mC^dqHW zPCVogJk!~^u!pzI)%`TOFw$E**)m;&wvI^T&qYnPTfL;|7^nw13BJ#HSG{w{fYBUYLzeJPTMEB$(cDc#4o{qYHHVxj% zE-HHG6)pG7dT@yNRgjfa%VRY7%)3;F^Ioa^Fb6^!O@ZfQC^BBuy?g=m%DiA+a0)pO z+DRWZsAUk#togZGuewAtfk3>b+T!bLAH{7b*{8v-N9p7FoL<8H%ZB>EFZLr&dVZWL z2Kwf=IM-9sOcH({OJDNYba99{vE|O&hb9STnLdH8E8B%_ZEZomPUk~kRR^Sa6}YDR zYSxFodgW~WG($sBm?cTG4}~OxdB9c%@7!@@s>S-e5wrn*-QCoH;T9J~H@;O*N?Ba)lSTOae93*MVpIlDrd+8PK#ig?O%#sMuZSt1e?=>UvS=jMgoqUCGJ zbBEHzr@P}JJr+xa8tG~m_KPaL*mmp;PNtgE+0oqa#Tz{a%KI!RS;18cg3qGG9Ju&7%=a{ zbKA(=XBs7PYL)LG->H@-?F)3B7sM2#EZKyb5cXmjM0F6EcC=mTW*7w>7wDZlG~5{z zp)cl=Sxb`d(R<$g`%aSX-M-nK;`Z2l1(+nE0FhSyESF^}SVbzzqTf;ucTocB_0k^i zSg^B6KxXtOdVw$#_HdQ|Dzcc>@%0l;S7mw&3;d0Bh5_mE= zqCJGGb3%xUIIkDgCB8*OWwmQxT66D8D9%x7OX^3YVrr|tEiJKV6tGPko+dI5*RT@d z;OHO~oc*-Dk}YC6JqP-4D9G6s(HFBZEDaX(_k)H|)w3-ZJ#Gg|Vc$Jzg?k3H&ouDo zhQ57+ZI5M79FLTM1HD*ch|*(W;Tig5FHRnW3{+H?<5r1dq9r^!#ps&3wb&KH5k3cc_1Jh#_E*7G~! zD2^*7b#Fa&EbQ#=BasAfrK8%9Y~TSguoTO~rVOa^x$-r4F}uqOfQOlkv}t0W^_l;| zx}R@%GnqaHk}+1h7o5M4N#yj;4?rzXV#XWBx0duRyaXp|y|z!TDPV4FAG}&xNe`!| zoO{lD@c)0TDjhyr!d&#E$20%3LySo7txpQ7Fav)9lI3Eyj5t=cW_oZZ#=8fL7j=ie z*5;MU)rGwT>6#P^(Kt|CgI7!;oh6z@iS`1dK~I3`@N4AL!Q7|I1PFg<0Z7K4xwfO0 zdJ9y5GCe8_X9i15*i|u2zX0aBvJcTDaAyl4Zyl@={JWasr$@875KWn7(LX<1_=Y9{ zgMhFP?17R2oHI#E#Zn;o9voj{{T*MZFScM^T@ex-99`{TDi1RtbPDQJSYH7~G}oZJ z;Wp{YO7VQJcAp?Z-9ukgOeHNOa(TJ#487j_YI6!YAnK&N@%RCYa>7F=$u^ea;^JIv^%v*GQ3mGv`T*#J=}@pe z`feEgnL1{Q!zxs+fU)oiR+WB&!M%ZIo-%GWoiTczTG)Ezs{c}z8qgnzoVRm62=%h% zB`ye`@B950+GY1MQQV8Ua`$91VtYGY&WVoHtm}rCC;3+P@T}^{`3k4H+>a?JTw!ed zhK|5dagB-oy*g$9m0>aT+=?yGUa6#)^wd5>b;bnv9(*7pyZS8{AfoaMnQIqvDI?r| zHk0wM_czP?pf1iU2h8UWKl;ud2jVcTwIZciDh+<%wyGCkIqSCkI;O{>$=pSLP0vR1 zwMJw({i_Ijzv-;!KJqJ^dROmS3;z>Jc>CfY3yVtgJ`3TQv^5#4)mR|*+)x%yGF^{3@De3$L>I2LaId?uDp9cH9VBr@xxh z(Th1NneK_IeVd%@TWI?Cf%@^)>N5auuU(EwxboL~^tfwXcGum32a|Kw|^B?HaEn5 z*;^QL>=v`zsq)0Ok#KpbV#7m1Vs^IH;OmcQejNHAPwrQ{&q}b7;5H5Z_Yi)0Ma#5* z(25Odc~0aU-0S~%h(_Y$rykZH5?7Y}dES2-bnUgGhr1)Sf{*_EkNMJ)ZMuGyuv0u3 zf&LsN{rS5SZvgIIV*Nc2=dU5cUk~Y@Q&Rf?bYT&e)L8r-x9E>4J2;J$G)#>PZzu!J ze?D-3KFkA4J`oB=UAK~Jukv4g{O8|xeRt@vDWw;W68XU){TEYU0|+Gxp(?Q+zqvgA z>T4Ti00GD2yZI}{KJH^e`C~RfLt+jA)O8P+tBIHpV>DEkWsLoNt(+3&ZzHzQIBn^SF`-) z(SAIlKd!jAIye+TlIOAmez6DtaoK%^_eb5F(=PFM4#oc+<^R=k{ohgkt1bMeN9O;I z^8e~Q|KCymkJj#|`TW0I`9Hc_KOW1*|6gxq>gCUFy#LABiUZqa#$<==W#7e(4o2wPl8%gog3a%p6 zua0HzN1#70+dtOWFXc3#+46^lJp1Vg9Q0&tPZO7|+5<2%_b|x7Ds% zkdV%wrukUX{`xKDv=BS&^t!@6PsU+Z*}4g2jFo}>$y7zRnlMnr<^s_qUte%|cs!_~ z5?Ivgwq}y2`ir@PRlFG!1uZK^?9rILHt`bo9%oEpjIXb+x=L_xXzcQfBjH$|TQxmK@Y>AeRjtu~IY!}t6 zzPt$hY1*dt7u@YDEAQQdGxGDy-+it3(9KL=OQ5#)(P)G9HkYG}|7Uz2$TI1^fWYc3 zTjIzWBsKCr3jlhk zQ1#6%;vu*TYzRBWNO{sry09waUZ5K2sr_0h;l_h{0Gc1F=10GoIKdrpgn``!J97{j9BdYtO!c%vKMZ89L3Ha=DC3PCHm7r+BiZy&C1~i;mbcJke4Jhco zsKh=R+u7>c1y9osx;~~@*=U3I(h+YcN4SH}cEw+?sT#Xr{nF#WuCMxd6euFRl(4m? z{c)f_PdU&HKobGQg{skKnhIUeIM0PCWLFz{;N1iLd8Equ*3Nw{6+lyXf|Rz1TeY}| z=9_24`_#j(k+oSB0;a3j$S@Y*mE^WoFRk{)qt!=W_5+J_+_eNmb1L4V9S3n%KhNbv)alO=C8I(hZ3YzQ;{cP54-Rns zx#~dH8M`oKadX>`{YuSK7xg9sL?mdsJ@d&(}nNI#Q|?G8U+1$v=GP zo10Xi@dBuh8db2XzhiRmC>ONq)dt}GjzZ83MHHuzqijWb{5a1x)tNKKZBbHsDh|5H z?Wbe4iRxv|S`C7h0}x!50YLbV;Iqmf^yVGc&rxQ`)z69hm=+c*;el%hcFQDg`*e1)P3(oj2IVo=Nhf|ypd(~lTkh>v8kd1f*0daa?WYdZYKe%B0IJs8 z8QdHoaGj>`G|LV+N}>qZC7tJj!s#Oc;~{Yi04B_49CN~x%B}l!02rSWkVW_mK<=_@ zrK12SMr+auTRhQ7FTA{sU5W>F$+pv$%8BNHTiV^Nf(;5n05R7TAO6JiGP7d<1m82R z2t84cEYSuU>%8(9PXf=g-LxSqPPCJUKgM#OQ)1Njz|en&6J;Qfzk z3e-o&&aSw`qMvT4#wq`M!vU&pL_CPGXQy*oMt*;})ZTgxIvOxjTa0&<&Gn5Eb1yb3^W%u+EkSQE|f8*jrUZNsDp9p|=|o5EAT zmY|e!?It^l6oLcX`c#QK#dKVE`H@&V2TN&OnI88ypV)IpV6PM~T7Of&l;MjUY4G74w z(Xjd*JvzvHBZ`^fdq;3h7rg~WUssQ6?Qx3ZzcMX-m)QmR*12eni~ zPM+0ZkiK2du$!0m5m>NzfDfHqKF83dEDq!rF6+A^@@J7N@vj22nKAzG=jVCYMr}2 z`Ygce336IY;N_lMauQIbycF}mp~!>*4%P6BSq3w8ej9U5FaJF2~4+`D*D z*hCuAlwWEFX;CHR27F4;IpbLm-N3zz_MN#~=ofvvfC|`pum_^(MqH>tJ4c!OhhNSJG{}#C_Rc^}Jiq~6mAVRO4N*Yu_@$;(_JLK?@FnYT+i2sp`MrArJN5bV+hd`a z3V=T*B}Z8c<*4jI7VBJqZ=%7j4(f2x8728%Y3LH42JdV-AOyG#D7Pl6pYy0u*jGZT zKvXmb#osM{ZNFw*rc*RpW?y{F1(O~7WVR#mif)B<^hpdV(V~H_t6!wSGT=2Wm(JCe z@bn^hPW6}hDt@0W*<%#+5Apkbw-j`4&Kqe8K0(Hb4~m=j8arsi-mZP&u>&&iscQ9= zd8dMc?j~TC317Q*Lo^r9dBVj(Z#Cu0)>aul%K;7%`}KD;9gA~EwFOhe%)f=J!n|cF z^XgS31cyn(=WFYC@w!`+-BPmo3)tEjI-o0Fetw$_u~UJvE@wk~FX*weXjNFFn1fC- z*njxccBCIOtZ&Z7jY5V1xLr;6PLt{^XrfIDDg012n3A5jay?JN_>`VEFFH-G-60my@ygUGvG80^}*i+dG zHC;0KPjOZAY!7TGG=c25&Y0Ua)NyH_^2J(gsu@vOuPtTl-Bx0r(ipY=%OQi6l-;(%tMo=ASivJ#7L?)&~g3c6N9#rUL29Vcz} z&&|!vNqL>@nme3cc&x)SI2DU>)FVoXCwXVlq&ko)`DkW7pIssc?>kc206t5~V;L}_ zoGR7^?w=9mKBnB!lk_*PE5_|S5}NHy=Em22#iK`vIt;xxLJRb&dnK=_A?}3IwUKj+ z&#r59qiw1lT)uoV!AqxKTc$)OS1UQN9#v_{($Jk~S%L0{cO3QT4BRjpsajdZiY*N% z@58DPWw~mgiIypIL|$|Ckbt^g#Z!m_DRTVEXiquyoy5KCy=%|2`nv3C z&*jcTrCpeP#*E9Dmx?2Yl}?uH*vNP)+gG~F1LJ+It#S_HTa*-H=%r7MH<7w;#_x4~ zwJfaGk=&V(=ox=xh2N3Hf2Tsb2#-Cr?4O-&7B?E$Xc?>X$npxhdSTStXeZfzGE}&= z3b~h)yx-*|Uvw4K>(j_o3YE&!f|(M;C}KW7zfHyAjjO{=SI-*QhM^tOmnU(|9}C1b zsx1e{H;xb~n_0@Tzd<*=JgpKE1IQ_Qlx+muI6LT@;ea*2whAur?&m2^X78U7Lw(ni zd*LqJIh4Qbs~dZfowY&^Gyf`h$@MZ;`yFtc|M4ReH~IP!5^06+%T{rz5KPH`qzK=@ z^r6&U%PaeIEHsc`!^3SqAcj?B-bme(VASmQ0#uj&0CS+sP@LC=jRFmEbl*>z+V|b7 zyz$ipuCls@$t%aMtj7Uu^+#avLDol6vAlt3eYZ^pRsts?Xz{(zFamo91ALzu&#+{RLdL zhbc^@K;NC*+ZadVpMuF#twx}Hwl;XgsOFz>iLJpz2w{d;WM=Jp!OyqXKRz(UdKmh6 zflgBoZk-BXa($SK06;r5#AR4t3oeY2A!SS1rbuv`$l19zha_5WKa+VjTHz#fBzwDH zd2v6SFw&u^G(nu@Tld>e^{P=Vxh-FbSr-xr5w{xN@-+jtzCfX5wt=TYEk`*cHW4Fa zzH00tcsCw{s&r^Z0go9VwL69?wDyU@bJLue`=A@ar-N6pmxhXZ>WHxWp2LbwEf;{F zo`Ie!z1qT5+T*jVqK#jFVUO03bkh;5%! z{K<7-;y#|T7c6a%!0GU>a=qTsZ{HqgNk6HX}FCI`!m0JCGaE6HawPTEJ`i%Gsc!^0n#q#N3qkJgj}HI3G%a82WZhbu{fmZctvj@{&Tq^-=9!SJ+q zJ`PHlr7#`A%^*gWRww_c4|#Mtz!5-qDEimZ*$ybwOX)sZ(a6_=pG;&&1J}~ASptBM zOBZW;Yu)(go)Uj7e_WwS%mv|dc)!L7-L5rj)mMFchk{>ET3W?-p>L--v{nl%gM1k_@5qKQs-yVICx7nT9l zM{hmbm1=%*@~2!B)5IK+`5sJ41(0U{sdM9}XfW|5H@dkIS=oBc=J3xS|3_t7dW`xr zPl@FP5&P%Qmr#>fyi>NvyRG3gWR(V&v&7ylq>K!pOs?ndLxbBH{B4B&wBUI~VbFd{ z?o6QWpzxt0ozmDDJ7`$4s=>rMRQ9jmYT+kO_~pG0)}nu zCEN%LX4s`9kFU}$%mnbGW71R9;7*vw1LbE*8Eyc^O@Wg0+@xcd9}UG+%`sX9xG2-GywIC4E*9Ye6Gu>z3=SQ&aZrw z>zU1o&EF6ifk60YcE0P^c{=U{J1PJ9BO+%%G*5u#(OxA zrjC(nlf|X38Mk^@`_(PlE|WU<)4f3JVAj1C2p+XYzWwL{1!~z2!SayIV`}aW2=xeDTWvWACj4n%?*Sam7T%LPS79B?JVdq(f1VR#1>u>5kEjg-A-* z7?L6}VIT|`pd#Hh$)Pl(V*|#<@3nJ|=UVsN@BRGq`{(`#=zDv=->-VcBOEq5u5xd# zhyhWC3}8f5&Ri___jLHajZyQ7r30v%brq!Z9@<-D%UaTD7BAMV#bb?JaH3$MJCQdY9FhJWS}*%K*ok8Y-o>jw#9w1HFha zYh8Y=&WVL9e7s`_5`7)Bws6O3+b4l>9M2Q*6hExezanwH zgHN75RSeE8a7u9jAD*`R6=w`z^;Q!y|9vz42DbfcO0SmSu~Lhd8{XpTfW#(AT)SAU zlA{wpFEBddl`K01BC^IfE%~wWrhq*MB<+UX&0}ny9~^ z52QJ+r}$b$D_ofc-!Opmt7j~2=76ch#u<8EHFPJ5QIBGWiq%%8+7}r)p#U`9rN{#PJ4>3{X0Ejqx}( zj4-R8Q(ddvn$2YsIww&&{3?s)pfARMH_r4~*aB>~0R~W9qMb~e#f_f@#__vY`rx6v zMSoO;6AFd zMDrOL+Rgg}N57+h3%?ak4~R0lXYH|-(-}D^a8V=Ux!_{B3~$5*g)mX{2nXP}t-dbr zZF-a!FtkHr-~ie_$Ep0Kje=eboW~Cd%7RRF&no28*H6LCL+vtAE)0Fm@ArT-2*G^= zu{>Z3jLwT}`i*dzDzGbZc0f6Z-+gLcWTIUrt^uYTd-KyF8Wk4XeOL=xD*4{La!Vc{ z84=Cw7wbftV7Usoh}`q|3f=e)h%wp^7*T1t~UqQM0}d}Bx}ao z!d}#Hu_eO7p{$^tw;UrEDD}`NaqPtec-C{)ocd)EEl>ioB}oLcHyfR!skgOO)%)>- zkjj+IqMEn*);*o-bx8INgbAM>E;}Z{16pEaegmDi019z2Z|=UyfSfM>G11cDj@ZzA zndfuV>~9K@0IS3J(p4buBHyO7qh0B)m~*S}#i>j88rGRlob*$Jz7m@b`E~|>zv=o{ z?;R3sn2k5`O^E*@f)oQFe`|`<^8^qo7W}tw^gvs;zbH`WeZH%Ip4npWuFndA zGUrQ&oDgLP_^kamnzGGFdkXH78Vh4fOVFz~5M zE|*anlD-BbS6W3d;eGFor)KnMpZL(@I1%7- zwC@;xwV^BD7URCk(_iU(I@vKy!jyZwdMpp4cbrcV{3zQetP(aPfiXqfJd>+2Go(TuB9%u#y1E#^5RV2V z1@qaDG@na42q4jlyr|+=tHs>;N9rZq7Mu$-#W$T6v;|BWSh}z8p|5bBF)=-vlB^LY zG|V7A_n`l5i4IfQj&J9s5?!IOmGX5g2#?iU^p8=|MP~6wS?9fPa+TM!g#bsJ1Q9=9 zr&j3J?R415R&nng;vQBZp`IML?Y`)OrKa=qLu-y{0myn15v_~$A%{TOPk{@PQ`Ghr z_PmGL5Q06p5F+@+WVU$bWQl3;jMuP>Et_^ht;~UJop9lUxUq1K;CHLqosRgqpqKIS zXLQP)6KL*9%7KI~@#|9JRWZ_rqlZmxI=On5onK{7-;o;&ug1O6T=Yr1I&e%%sO8>} z$S4!FEOta5VQPJ!SY}>NIFjaSkA<&_L8POM3kz4k{whlM!o`M)*LP+@`^F-Nwpm-U zZIKH$#mH61INYp0jL3~JYmbe~=Lgx=tfM*~xm4j5Zdg~O-JZhkRn`Z{SY3I<%_*a3 z6ai-yW7Gto4jFRwZ7Unb7xL~eA8qrl&nG7HLt-U2$1P?$QAtLV50C$l`LJ;Bb$S}Z zi`|~%=4SF2`>O@SGEdR_rdI%(mUblr1@T{NfbmuDr9E0$boqdupT^~zD~U1z@f*x1 zD4qnE{)|D7c;vshBYD5RH>-m`rZh4Pw({9-o?30#YG_g=PgOj{TmgOep%-IqZ#_^! zGXoV$C*A6+)RbJeIy?qcUs_)Wnd#GuuRbZ=3{4D5@KH|@<=x5C^*onV{<^N`Qte$X z?bx?n4~oo6Ca@P$1=Ek|gI2N5Mt6AIWzGEigT*G?ZBU6)i`Z$9QxuEWnrIA|Djk?`(7&}o5i?rg{(v07VRI4 zQxv{ycgqx8+U`FiWm*{cl@^n-bp7W}KT9e_P{4b|$H7F-Xwh&w;V)geR}v^ux;k-& z!gfUOq2>OOTHvw-A_Z~g3x6@V7|8SB*Lh3R?U=Gwf3xaQd0@e`GKvEm|ZL<({u znResFy?3UWMi}WfS>WWw?%v-yy7z}S1;hlC`DAxN+Azji&wqDZef!(^#ej_sQJ~@y z2Lf8RzRasY!%JQiP5brwR1cDKhPok+4-RzBm4S|Oe5bC0xYuN!q|{`>8kG{?FVE5t zOMyg8Xs&kr^89~CVB`~XH_uyZh3K>5&Me(WoOz*9k-h;yX^fT9P}*Z9pLCB*YR2{AKdcNZHg0tkea z<#EoFhFKxxXYM3dmAV7wdw=<)1}zHY2cPo(rtXk z0tbIc5dVCq{>uJGS}G}jc~w8W@qS&|Jt3v`p)GyZqhEgQVh6~cY+$?@Y?}YipYr>E zjVPhmd)Yi+2JsJ6t#6ain#a7+yD76{&}qcR-=~xuF1T0bJzdF zwG_a9V$y%W?)2Y%m7j0zhxhlxlgsuUI$o1pLTdRP4)Wh$_QyMrm8CphbN1F?>%(71 z;ivWc>#q&EyD8!keX#!j!?g!5f@}9!Rp?y$%^do7!}IN7bhyDz(zhij@qf5>HygNC z)>b6=+Y0(GMvKLIAIQFS{r(l4{|5xwcaw%Cb??FZM_Ivixpc@q)9+gZiIeOHsb;=8Ild z$;wI$%xKT6k89kQ^a1#mt-|&Crq9v+f45-&^(hp0S=>^2lU@Ef4l%J0uo9j%j2Jbw zr=g1ILtgyd4U$f<`1i~FC#FC|5JjQ~5*RBaTuE=sglGVr6JrXb(?rwfU28wZrwu14 zJRr4P_xAqd2`XE25WHTcNDndIh4{I!5nhF(%xl4N7KJA@-s!Xbk$R{L@-vGczp%XQ zs5bmmlngTkjezg79Yj_ZM%&28*oQAfef5l3iCj3- zFq?YHP?6_4J=q#W&43;I9SODu{%2%8g+4)d#Y1YN!_geAw-4UCeyi#ul=PoWSO|{=5RiE@TF}) z*xh3|aiXn6Mt%0W(8|GwBc=A?HW>Puc23DUtIuy=wGc=Q*>>X%w*{6_c&N2nks(XP z!tKULHq-gUyZZsf;JpB3a!%z_o;Ke#-|Yt}39FzorIEkI=Jd5TNX6&bno8f+fVJst z59ic8JvH?O0CtPu)RgAm-8wZNv5(4EZw=A&`nDVpb2|4p@QCUv^-xD9LM3@4YzF<> zk(#;~I(gN}BG5phRFMq9-rk^GS>c9HcHAxcUcqFWJ7TcSvt6bhM z*kTQ@KKFRP^hIDb5CtGkjnAmIh2Mp2ZKcb2MOQxj^5H32hf;$z<9WM$q6^Xmi_Nfc zFPj@d)SD*-qlz%LMAMPVO{Q=^J$I zY}m=NcXyRJZ>K#;mh#dX@i0%b!Bluv(il}N0-)DOGV@g)kA`$splckTK!ba%><4LbSYB)#sC zj=r~daxL?Ywpxnlxg8=Nw$2>TCW`;55knqVKT6TfN5uHXel&uu&3J)b-?MjX)}q&= zq=*+~HMF%^HikfHOOz_3bM&4{d0varUI4;zSc`#;KbEh#UV+mSS6t6OX{-S{EoGA6@hp3JwmfG`GN!bV1!dZ-#Voj4z-2DwhT2-s@J2cniE$|bomf858Cf0voUgS*ueWa1 ztAe@q^iYB?!xfuof==4Jr`7$ZbZ8X{oajG5LSF)vt;a<^cCwHKV9LMVJ_`x~?T&PZ*aLK&-c*{wWRA%$} z3@7lPP;pelCoOmx)abUWVF{m%{D{z5R9_(w|KtH;fH6*e_~6g!3Z|&_1oauZA(`OA zex!bH`x2R8@xEg++ZRER%h68-Vu+BZT192X$GCV6m#-Ji!u(iyd3hBjxW3;-SX@9+ zA-gR|>#vO|LUr$2U?wQ72q(m@zYGWB)Wn*Vi1j_&J4KC$+*N*)j|Rw|x~Rc=y`Y*T zj#yi)+8H@pO~grb?wSBu*%l} z_!C&edB>Da64_CMY}8bMoU{seT)(zQhuLe+ugG$Bk`+I9h$;&zy39x&ZH?})M?$Kj z1DWY~3k$0rzZ5QW-$smOfSRc*EkqK?o~gtyJ*vcQF<2g=z@MotZu-rF3J5YS* z^}QSAuBfY^0bCsO{9I4Zj7*}B7ubfJ@KSpssjlUNllh3BNxbuH4}T+*H4cNuxObZ@ zx$c*0588h#{OqPo_ZtI(S`nxPn|Q6w4=SX%e|3aZ&%4a4>{^X(WDeT@s+>$SjBoxJ zcuYBe;6xjbkBHU1tEt`D?Gf+go{6t7a1aR?_K(kw#sH_Da_ywrQ-bDgk%jG&+~NiB z$d~wfwEIj>_bw9y4Cv0BN9$f4F0W3^>_@%UUK}ZHhi>#r5|9GiJeB^3UP zj1D^Cfx$?A!}LePs5L{N$!6kx`5WD1_J(efYzwHzW0LW613= zz-zqOWfDbmf2X$Lwsf_9x!-B-y9MmPd#SqrFhNR74!>)1yb5lax^W>~lB+w9_`}XE zJFw3w8+BOf+r$e9)=ZTRxX-Cq5DDs-jw@x?73@oknrn|&dOOj+|Pk@D7XUB;5!;{nAov^bKQWUO-@T9Q<;^1D9)5(FSEp3R6{hIdXVWfLnJ-~f%V0{L+d5x5*DS&gQw6QG-WTh6Aj=A)oEOq8)3T!`?zUip z6TNapi=8Zg%y4QetYL3#& zRUHH)5^qzyz$h${?`s`Ghp9fn zS#xRRS8I5Bo()#l8NR-W@myVJy}E^SFCB40Bw&sj0v|VimmjsurvbV%JP_1dzYa4nfdagT}wyRq* zEqve8mel~sRaD}wZ}wdMw`BcNb=WJD#~YyvB%+8`nwxE@uY;E)L%|b;pR$xc%2Nlg z@0PfH=kf7UdyL&dp)*TK_6F};81q;P?`Q+RaY_-z5v)f@%rePi;<4hQG61{~Lz&We7P zwD0A*JHAk{u;z|?`}Q)DV5dDC%?Z<;$C4SLnF{SmDmaW{l=S8K3b#dezz$lOPKpf< zS$Ij%PnQpk-gnry2sf>PXv>9Lvc(yV+!3-c2;PqxphM34(vKFEJS$d|^wB%eZtx~#v-GJM_ zJPRodS_;`gZNswzSNbZppgG+~YCZFfwrq015suPIDHRa1)>-PlhFq>&(14RNCmG)` zbjqeM3HF)1?lX7yeUu9&e4g>~8>(MIZzlE@+<(Xjw;L8``Up&63_Nv>bcJ#~$LdsD z%!|$8N%`wnq6y4rE+z_BD#bJjEWJNaoSiyI9jIf{(poTM#E7 z%1b6&Cg66wyssBw1cB1B)uS&2jAPuoSUwNB6wBf=+ZXrhBNKnX8W|%(*&d3IM-#5e z)D!Y|t&X4w3GHQV%(vmMBn7;m2-Y#!SF)cwcW%Uh4T-Yr+qSaw?d@gPD|hXZ^`UCO z^OB=2^AtMcH{@O+R2;(sjB2ic$zJ7Xi+#s_Tt|l6Rbr8U4jX6aebpBL@S9W9@4#<2 z>&op(ko0(g%&)$+RELF&?p{xPU-h!Yh)1vFilIRTE<)HEorvd0wued``+<0VlM9rY zHK?ur+K*Wn4n=br^idj)RJgfa(cc~ZJIKcI*A!$NS`oC3_*MDXGr)}epl>bvAUljv zasg>{#K+>fko`!@olr&zHEELj3!0j#rjfjuM7B~e%_aa^G^@2$WL-dk01Lq}3z)oZ zq|eoPB7AX$us9WDCfJ*n5Kqgyt;6JgKcX>2x60dtPTcvqREe0CY?_%$@5SRQ&j`$J`qF!oa=er7q*V!S3W+#|7$1j?PdKw`_!s&_8E%9Q?b>Xo4 zk8C9K=;+yw3l(zB+m{ob$y!8K7O>KM-bOJ%}0`Zc7%>g zbNJEolJ}kIg;|E}!naTX+J5=!1)q&$F5bSTYX}K#HX}S<;_ZIl z9pRc0)HL5k?~TrSc6X#YX7Dp3xDk<&U1D0BKP!$&g}y{_z|yC zee}D~`ZHTC_9$Z5rfHy|$S@!d6DJ(~pfNeS>NCUrW6nbeS`v+CN#;L;s**+iATzx!=|6%P1|bXi@nBNJz3b>63n`#KWQ- zE7|N=fOqj6f>d|Reb5z(09utCNQ_gPushNX=G(PV#67;e6Y4y>&YDj2a&|L~hVmO{ zZIcKO!wctw_sI}hWk_W;`iA|*IR>_2AZlO*viSCz<){^3uIqw zg>sbkDI zU2W$0H%C8)XIPgqt@NUeIA(HblG4+XYx>8}`nV*^>>Lnto{m8FrYm&iH39_U%K`&? zA$&DV1Y^>T6IS!Y4wP1pG&V`iefh$^G=#nfkl87XMY%etd07qHIC3Z{NtfR}Hv{r8 zp^wpAce{*5i6LQUmdl2KS(7wox9xVjOs*=k53F|tb&ATxM+8dhFn-bMhUx-E%0T$8D1q|p6K%#J=JIj-;HYY=`->hQ|)AV$O9F3E3Sw) zw!(YX8iyzOTg+$ZTGBWLaE-faXWR(R&2YBVX8&TTne8>SS`Q{1Ps?R8+w9RpKXuoet*=oQ zo%V_peu66`RtcT`_MhoI!eOE>XI~1P*-5l6h_xFoPn0f?dwSSw;S+PP!J-%NG8*qz zXHS}|rMF3r1^!&kQMPu~egiC-ZVsC-Vj9CTsA@K)^%nUUa z``N_KzmX_qqWi7|pB6mkx;A}6%<%*8$m46{n8^8-3H;C-xyjX$>g$tp`y)*Y0icjr zZSVKCq^u?!VUp}Hv0Ugy1U9nHjdVzLxP5#^wNR?z0+L1m=yIL(n23oR?^IxREI_G$ z`1n!vE&vHrJ|C_?$3(M8OB+5r#(d5mwf^kMlT)z(Ll}R5s051!G7xbMk6@>Pa}`Y5 zXTa-bl#3?-4vx1;EFP!I@b&%RPPe*d(aF*(lV62tPnt3*R_zj_p&@;~uxNSotmL%8 zgg#7szNsZy|JIv6YuTxid|jZFU6O~-E+_ksMOrT&@lJ`d)RG^rSOm5~vToBIhGwma z^J~-n>49J)2zm+g+x(P+M=O@CZ|kPz9qCHsm&gZagSzgNk}UxkwZ&)QBo>C%_k6IQ z?z%xQWWiEmWpqA<`>xu_yt!coIL3F%pp$6%`E7u{hpFajCS6S2B^@qMs?x05++rY~ z5!%|>3-^^4VR~ju`kZ^^73Af`$2P_L<0Are7cDQN7WC%&ZWvk9OFD`l@%s6yS4gEXZdW)Z>6GYuuH9TKBFrpN+p3gYqn~M5lX+WTUum7DJIK{Kl~su_k_T9k4Hc5#)eeN;Lec5PjhRjG(C$G{`hGwX!(p5!nAtr>uQnHCPu)lMYB(0SXD^5&`ekQ zfvI(0NX-`A&4O*<%Gi~&O0_cdWXg0(4N%ajmTWOq2G>SO8k-yG$MRCYj3bV6h`8#` z0&Ypt!__mTghZYJUdw)KpX~XsBp)TLT}3`TPY0zj;yotJjrC+k0v?~r(n`Oex#?Kl z%~hSZgsiF8izwe?T_>rdR&<3~^rtevFTu(VkRe4^_;mjo-I^P$$MrAPN~(g==C)gt zTkMnIX-AJ!-_MA@yZDlOg(3>A(F{_vhfZIbcAWRQov$lw*)y%71FVN3$_V&CCg=t+ z;peuZ!|3My!0BTS?36efj>)hyd(Q|JtEHvAD>F)5jmgzggjJO)zNU#DZaE~|*YXCa z0tx865k|b(&u!(f!U6M6%z&G{?Slg&oSUm=+D$atLN7u2otrKH(wju+Iu<^q1o9MC z9-TMD5(P!3D~vSd&vXQ{gZFD$y&Z4SL6~&fS2u%*--Li;RC_jfS1Yx2e@Kc%98M7+ z{?Cys-nn|k5g?-i6$n_PLoUQB;fjyvzyZ}8;g1g(EWWL(rsJgZ@DmV#yJ6nh>PftZ zSA&qD-nLa^MDW~kztzcB&=axQ#4c6?edqZi^L8dNK+_^iH<>W?g-v8{H9>)N#CKS7ta<=f%NpfXzRT#uxnW|Xp3BW%C&dwiJ zK0p5=y(fMiDa1X$Mz(TkZ;R~HP)LZ-M+4tYQ`}qWaDdULZnc`rwJ@7d z(%O~l);X6evt1@@)|z5#XDM&WSdW@6F*}0e1r)MqP$?d4DzEGu>Pl@cKIJ!mTX#~W zz&2f(Pq-8i7vpS}oPhIs=Ia=gu5y9?WJH!<*jcfMk7i1u_N!o1ifueX>5K<@#`ny1 z3k8MO$?$G8_Dr@x2ThLQI&1IDjK~OkM(YED4|~G^%0PaE8Sg0INt#aocmsd6nXsrX zKo>L5kL@Y2RaxKa&gu5v&xb{E!)@Li&~)1T+yG+97w}yMRHuBMdNkSPN?k$Kej$?TYhKRbb3hT%Q)JIHlYI8F7gMoGz#1HzcF890|Zh5rvP|MZFivF zUqk2MczC=ysa-Oabb#qcg4VY_alax9D{C!f&-P6AQ>QhHIS*z(+?-gJs)faC5De6% z6Yp@J(NG5AjLF85g5*L!E&ZCPXHOKlOgQl+FmRxE5*)(xAvu|Mn`6o6;p7m3xmB9b z8wYECwr)M1P^j)T)Hl^%Y5Dll_RN9sQ7gQ>tJVP7=@~diLiGgARif6hTFrn0@4erC zsxhkGUESN5gcM3K0o zi~~us{lEZcb0rt9c~*JQBInktYl(a0{fa4ig!Kwzr|QC~4btHPHlO7tiHXwdnw)x9 zhAhbyb~@I_99u|l;<~o!=;LGYFUc)3vNjb{x?O+y-L_;geuOY}d90sSCdmhXhLwgE{mzPQ>+p%H7rs>=KN=8L zKMf(7R5cK2dWY?ST=+dYw4BPWjp7+W$-3tuLnZ~yvD{O)?Tt?H8R~DXuM%xslX}jA zddm77{n?#K2Kd(YkO3fnA=7u}bLhgZe7_<`*&^0<5bIVoe;b=R6doE^+&D+{=FBE@^s`FAK;+IPQm=X_zX_1i+}*qL|`67)e1@YJQX;?+|O*5$$Qi{ zDpL!vhi>JXN%q;4!~Cu&AEM=D1!eA7fLUmT69L~zDnYPbxO%_hF~9K#Iof<5THx=W zC%$wA>~AvTojSVAq){V$bEyy~7;u)GrUD%EW_v+jI)+5fEeBD!n z_SN|5ikd^a&|;t!*?<_UQw02s@sge)@)TV>1$x-G<= zWM+mv+-V3cxHR8_%@D9*aC_F)Ko~m``63FNXLQzKXBMDIrl;mnL5mHuep=6o$es`kS%!r= z&*qp9V3c&$nDIP5a7a2~%?v+&gsXfOKb8KUZXEIa0)Zfhb} zbYBr&c4QJ(3Xy)e7M%ohp90=Ho%iSX)x)n~;ad4`Hd}-(osg1*IYFn@R*?kD-Y?zi z*`AWul)M;Eoig$6)kN4>(}_7nlSL?uj}QJqM5wAu5#WzW8bBJ9s||C_byB}+%e-8Hja@wPD3a0+5!gOc z-wZFSGY)Ew-Tvx0zZiU&A7c(NOOTbII+U+jT6I>&SMqLnet-{ff4g$E;lw(SLr?P|D>8l|y}S_;5>nGN|;uIK}z3hX~3;NJ7ePr=`)W*=qG9rv-DZ z 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 + + Click the pencil icon next to your service account role to modify the role of the service account. + ![Doppler Service Account Role](/images/app-connections/doppler/doppler-service-account-select-role.png) + + + For the best migration experience, we recommend that you give the service account full access to all your projects in order to migrate from all projects within Doppler. + + ![Doppler Service Account Role](/images/app-connections/doppler/doppler-service-account-configure-role.png) + + Click in the "+" icon in the Service Account API Tokens container diff --git a/docs/snippets/AppConnectionsBrowser.jsx b/docs/snippets/AppConnectionsBrowser.jsx index 8fa67f89da8..b625b514607 100644 --- a/docs/snippets/AppConnectionsBrowser.jsx +++ b/docs/snippets/AppConnectionsBrowser.jsx @@ -437,6 +437,14 @@ export const AppConnectionsBrowser = () => { description: "Learn how to connect a remote Infisical instance to sync secrets between Infisical projects.", category: "Security", + }, + { + name: "Doppler", + slug: "doppler", + path: "/integrations/app-connections/doppler", + description: + "Learn how to connect Doppler for migrating data from Doppler to Infisical.", + category: "DevOps Tools", } ].sort(function (a, b) { return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); diff --git a/frontend/src/hooks/api/auditLogs/constants.tsx b/frontend/src/hooks/api/auditLogs/constants.tsx index 997693067f7..644d18a6901 100644 --- a/frontend/src/hooks/api/auditLogs/constants.tsx +++ b/frontend/src/hooks/api/auditLogs/constants.tsx @@ -369,7 +369,12 @@ export const eventToNameMap: { [K in EventType]: string } = { [EventType.SECRET_VALIDATION_RULE_CREATE]: "Create Secret Validation Rule", [EventType.SECRET_VALIDATION_RULE_UPDATE]: "Update Secret Validation Rule", - [EventType.SECRET_VALIDATION_RULE_DELETE]: "Delete Secret Validation Rule" + [EventType.SECRET_VALIDATION_RULE_DELETE]: "Delete Secret Validation Rule", + + // External Migration + [EventType.EXTERNAL_MIGRATION_CREATE]: "Create External Migration", + [EventType.EXTERNAL_MIGRATION_UPDATE]: "Update External Migration", + [EventType.EXTERNAL_MIGRATION_DELETE]: "Delete External Migration" }; export const userAgentTypeToNameMap: { [K in UserAgentType]: string } = { diff --git a/frontend/src/hooks/api/auditLogs/enums.tsx b/frontend/src/hooks/api/auditLogs/enums.tsx index 5956e5516d8..88a21072066 100644 --- a/frontend/src/hooks/api/auditLogs/enums.tsx +++ b/frontend/src/hooks/api/auditLogs/enums.tsx @@ -367,5 +367,10 @@ export enum EventType { // Secret Validation Rules SECRET_VALIDATION_RULE_CREATE = "secret-validation-rule-create", SECRET_VALIDATION_RULE_UPDATE = "secret-validation-rule-update", - SECRET_VALIDATION_RULE_DELETE = "secret-validation-rule-delete" + SECRET_VALIDATION_RULE_DELETE = "secret-validation-rule-delete", + + // External Migration + EXTERNAL_MIGRATION_CREATE = "external-migration-create", + EXTERNAL_MIGRATION_UPDATE = "external-migration-update", + EXTERNAL_MIGRATION_DELETE = "external-migration-delete" } diff --git a/frontend/src/hooks/api/migration/mutations.tsx b/frontend/src/hooks/api/migration/mutations.tsx index 1a2d1a43584..216f4710239 100644 --- a/frontend/src/hooks/api/migration/mutations.tsx +++ b/frontend/src/hooks/api/migration/mutations.tsx @@ -7,13 +7,13 @@ import { secretKeys } from "@app/hooks/api/secrets/queries"; import { projectKeys } from "../projects"; import { externalMigrationQueryKeys } from "./queries"; import { + ExternalMigrationImportStatus, TCreateExternalMigrationConfigDTO, TDeleteExternalMigrationConfigDTO, TExternalMigrationConfig, TImportDopplerSecretsDTO, TImportVaultSecretsDTO, - TUpdateExternalMigrationConfigDTO, - VaultImportStatus + TUpdateExternalMigrationConfigDTO } from "./types"; export const useImportEnvKey = () => { @@ -81,9 +81,9 @@ export const useImportVault = () => { export const useImportVaultSecrets = () => { const queryClient = useQueryClient(); - return useMutation<{ status: VaultImportStatus }, object, TImportVaultSecretsDTO>({ + return useMutation<{ status: ExternalMigrationImportStatus }, object, TImportVaultSecretsDTO>({ mutationFn: async (dto) => { - const { data } = await apiRequest.post<{ status: VaultImportStatus }>( + const { data } = await apiRequest.post<{ status: ExternalMigrationImportStatus }>( "/api/v3/external-migration/vault/import-secrets", dto ); diff --git a/frontend/src/hooks/api/migration/types.ts b/frontend/src/hooks/api/migration/types.ts index a23b1b25192..83be73b5f99 100644 --- a/frontend/src/hooks/api/migration/types.ts +++ b/frontend/src/hooks/api/migration/types.ts @@ -64,7 +64,7 @@ export type TImportDopplerSecretsDTO = { targetSecretPath: string; }; -export enum VaultImportStatus { +export enum ExternalMigrationImportStatus { Imported = "imported", ApprovalRequired = "approval-required" } diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx index 422bb9014cc..10d2ea460e9 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/ExternalMigrationsTab.tsx @@ -26,10 +26,9 @@ export const ExternalMigrationsTab = () => {

(7TBdw>3=YQ_a4d1VT6@`#pE(`? z)QfdJJ69_*C&y1xoeVQ7w6j&iu!12|KMS8_PH)*rQ80`knm){+(;9um z^y>i8C{Jrvm6&T+K%-^6K##9#{BZMY>f;DSHl4+kVnE66E0}3|HShCi_7s{XVf&A( z!ESwUD4-cE6LQ5Ha|ii)I~;^uU`a!w;V36IeKUpwxtAIB;unf1zZ@SP2HerP!saWA z`wxD8fs*%kqUxzz>x=3}kK*Zj3l=opk0ump7$U=73w#qTxcwwVv*|0RTwiq>G?GUO?xB zm4DbC)M73d6NOf-T7lktgH(D1%DH*Ga#ukna~FL(_8iKrCrq_ULO{jZcciNn57x0V z=`us3c51RHqwZs+W*X$()5ExFjM-XUW2uqo)Ta?^j{K{(m+rrfgKG8k4iz1yBsAMgG*bJ1a-HnC|a+4<2 z2#kk*7`b&u(|KMgO=}YEw?M5mdKOaLjS3wN<6b~;cns##$aeBp&nh^Ur#!EzGgB|* z?x`vPX2##G717#t!(F~g6EE_9(-EJuP5{ICS(A_bVG-cuq}BKoJNw{#ckdZ#sm~6Y z)MqzjHr9s~g`VzT6Czx0GWR~4qzYNOI4EjeLIcD+_ZOl`(cWkC^J}wSP}+s927KHe z*Qg}?D{uM>A*aM}&Pu_yF(sj{vj>_YX)_4#3T;`V(#6=1?bnt!(rVAB#;T@NdMPwl zX?6!zV2PG5klqfu==`Bht5hu{C}mMM30XwIyJhA(+>)o?n__TQY_m`|OX8wxObj0# zo|2tJ#$zQ6i-A((YR}R4*fc)m# z4eQUt=yERBe=|A0@a9L`nZRW(@u4mwTODnU-5Q!C^$O5SD-U~tWF#F(G~NAGx6Vgv z-H{;i2E;l_9?=*?`H8!h5fxO&SFDVb>3b}3-uC(2U;|?XOTGPsAVdfOmO?8>Wm)k6 z_y;My^(N(Q8yKH)NAwT$>%JvA7#C|D0n>|gK)n|4C!9>w7ks_(yDb@2@WojKdHqVG zz2Z0j;t91MX5#t_FSr_|qY6BJ^sSx0%}#*OwsLy7tksnU3Su7wb{loO19dIp#1ZVe zRr9>N^CRZ1-Co<(B-|i(hzY1#j8RJSImZ-eOsqTC#FD_cAl>ZNPra=%AG&W`tz&{! z8%SwA04|&QX0~9;kHHN8yn3?(7uug?%0+pdaW*UE?kLJah0lAaZ-(ig0mBNq z#qs#haeew2*OFU+P!1-+{Cc{nVJ6o}(@o{I664J>k9NfPQ;*&mF!QtE=AoYG zhSMU{$ zt*?6m&~Gh{$nOy<;HXx5jN~81O_}k(Vb`p^J98HuIm;P{`@0NqhhJ(2)!y^5TYsMw zkV?Ijy+#w~LA|eUxaX$yF_|N;c-E?gS4$Y>)F%$LKq+F3n%i3C$V6 z8L^$`hf#djVM`I`i?Z=S>5#NF!GiDX&4T?u`6eoxe|8NT-9+M9$EAP$8SsrUP|UV2 zS3GYWwnvy2d8#l?9)@CyvvL14CRL&C+UILT4%^#n-z*K zF1@O-Lq7an2)+z4ez~?Yl=gV}CH|q`FIa<(Q`#?Xo_0f9iWfVJR;M zt=P#b6jPhxFxkGpoCA)lYt}=7DcX*EcEg)3#ol!7Cm7LaB6)Tda6Cpf{JOK58^9I1 z%(VrDiYvO(uI|zwMwt|RL&e&2O1Qnuv#qPRI}i zQ;N~d_(EQ;^)b7Buxq{iD>Z$@ zfqhc~r5f_No-?npqmykz^oNhC$jxVem{ffWyQ7q87y{K-bh*S71ftY;G7I?4efY6T a&K=O+m4>g8zb?IY`H`1VkuH%m@&7McPHVjY literal 0 HcmV?d00001 diff --git a/docs/images/app-connections/doppler/doppler-service-account-select-role.png b/docs/images/app-connections/doppler/doppler-service-account-select-role.png new file mode 100644 index 0000000000000000000000000000000000000000..b23e25dc2f96c896eb1d10c4a5952d12789c7899 GIT binary patch literal 305838 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

- Connect HashiCorp Vault or{" "} - Doppler to enable migration features across - Infisical: import KV secrets (and from Vault, policies, Kubernetes-related resources, - and more) directly from the UI. + Connect HashiCorp Vault or Doppler to enable migration features across Infisical: import + KV secrets (and from Vault, policies, Kubernetes-related resources, and more) directly + from the UI.

@@ -56,7 +55,7 @@ export const ExternalMigrationsTab = () => {
diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx index 0ef39579bed..e9de0debcb2 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/VaultNamespaceConfigModal.tsx @@ -210,7 +210,7 @@ export const VaultNamespaceConfigModal = ({ isOpen, onOpenChange, editConfig }: - diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index 33cd117bbcc..bbec4c2d10e 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -146,7 +146,10 @@ import { useImportDopplerSecrets, useImportVaultSecrets } from "@app/hooks/api/migration"; -import { ExternalMigrationProviders, VaultImportStatus } from "@app/hooks/api/migration/types"; +import { + ExternalMigrationImportStatus, + ExternalMigrationProviders +} from "@app/hooks/api/migration/types"; import { ProjectType, ProjectVersion } from "@app/hooks/api/projects/types"; import { useUpdateFolderBatch } from "@app/hooks/api/secretFolders/queries"; import { PendingAction, TUpdateFolderBatchDTO } from "@app/hooks/api/secretFolders/types"; @@ -840,7 +843,7 @@ const OverviewPageContent = () => { vaultSecretPath: vaultPath }); - if (result.status === VaultImportStatus.ApprovalRequired) { + if (result.status === ExternalMigrationImportStatus.ApprovalRequired) { createNotification({ type: "info", text: "Secret change request created successfully. Awaiting approval." diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx index 241e8cc5acb..c71e7417ffa 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/ActionBar.tsx @@ -87,7 +87,10 @@ import { } from "@app/hooks/api/dashboard/queries"; import { UsedBySecretSyncs } from "@app/hooks/api/dashboard/types"; import { useGetExternalMigrationConfigs, useImportVaultSecrets } from "@app/hooks/api/migration"; -import { ExternalMigrationProviders, VaultImportStatus } from "@app/hooks/api/migration/types"; +import { + ExternalMigrationImportStatus, + ExternalMigrationProviders +} from "@app/hooks/api/migration/types"; import { secretApprovalRequestKeys } from "@app/hooks/api/secretApprovalRequest/queries"; import { PendingAction } from "@app/hooks/api/secretFolders/types"; import { fetchProjectSecrets, secretKeys } from "@app/hooks/api/secrets/queries"; @@ -676,7 +679,7 @@ export const ActionBar = ({ vaultSecretPath: vaultPath }); - if (result.status === VaultImportStatus.ApprovalRequired) { + if (result.status === ExternalMigrationImportStatus.ApprovalRequired) { createNotification({ type: "info", text: "Secret change request created successfully. Awaiting approval." diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx index afb5a45cf27..27fcaf9568e 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/ActionBar/DopplerSecretImportModal.tsx @@ -1,18 +1,23 @@ import { useEffect, useMemo } from "react"; import { Controller, useForm } from "react-hook-form"; -import { faInfoCircle } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { zodResolver } from "@hookform/resolvers/zod"; +import { InfoIcon } from "lucide-react"; import { z } from "zod"; import { Button, - FilterableSelect, - FormControl, - Modal, - ModalClose, - ModalContent -} from "@app/components/v2"; + Dialog, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + Field, + FieldContent, + FieldError, + FieldLabel +} from "@app/components/v3"; +import { FilterableSelect } from "@app/components/v3/generic/ReactSelect"; import { useListAppConnections } from "@app/hooks/api/appConnections/queries"; import { useGetDopplerEnvironments, useGetDopplerProjects } from "@app/hooks/api/migration/queries"; import { TExternalMigrationConfig } from "@app/hooks/api/migration/types"; @@ -101,38 +106,35 @@ export const DopplerSecretImportModal = ({ }; return ( - { if (!open) reset(); onOpenChange(open); }} > - -
-
- -
-
- Import secrets from Doppler -
-
-

- Secrets will be imported into environment{" "} - {environment} at path{" "} - {secretPath}. -

-
-
+ + + Import from Doppler + + Select a Doppler project and environment to import secrets into the current Infisical + folder. + + + +
+ +
+

Import destination

+

+ Secrets will be imported into environment{" "} + {environment} at path{" "} + {secretPath}. +

-
+ {hasMultipleConfigs && ( { const selectedItem = configOptions.find((o) => o.id === field.value); return ( - - { - const single = Array.isArray(newValue) ? newValue[0] : newValue; - field.onChange(single && "id" in single ? single.id : ""); - }} - options={configOptions} - placeholder="Select Doppler configuration..." - getOptionLabel={(option) => option.label} - getOptionValue={(option) => option.id} - /> - + + Doppler Configuration + + { + const single = Array.isArray(newValue) ? newValue[0] : newValue; + field.onChange(single && "id" in single ? single.id : ""); + }} + options={configOptions} + placeholder="Select Doppler configuration..." + getOptionLabel={(option) => option.label} + getOptionValue={(option) => option.id} + /> + + {errors.configId?.message} + ); }} /> @@ -170,30 +171,29 @@ export const DopplerSecretImportModal = ({ const selectedItem = dopplerProjects.find((p) => p.slug === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingProjects} - isDisabled={!selectedConfigId} - options={dopplerProjects} - placeholder="Select source project..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - + + Source Project + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingProjects && Boolean(selectedConfigId)} + isDisabled={!selectedConfigId} + options={dopplerProjects} + placeholder="Select source project..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + {errors.dopplerProject?.message} + ); }} /> @@ -205,46 +205,48 @@ export const DopplerSecretImportModal = ({ const selectedItem = dopplerEnvironments.find((e) => e.slug === field.value); return ( - - { - const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; - if (singleValue && "slug" in singleValue) { - field.onChange(singleValue.slug); - } else { - field.onChange(""); - } - }} - isLoading={isLoadingEnvironments} - isDisabled={!selectedDopplerProject} - options={dopplerEnvironments} - placeholder="Select Doppler environment..." - getOptionLabel={(option) => option.name} - getOptionValue={(option) => option.slug} - /> - + + Source Environment + + { + const singleValue = Array.isArray(newValue) ? newValue[0] : newValue; + if (singleValue && "slug" in singleValue) { + field.onChange(singleValue.slug); + } else { + field.onChange(""); + } + }} + isLoading={isLoadingEnvironments && Boolean(selectedDopplerProject)} + isDisabled={!selectedDopplerProject} + options={dopplerEnvironments} + placeholder="Select source environment..." + getOptionLabel={(option) => option.name} + getOptionValue={(option) => option.slug} + /> + + {errors.dopplerEnvironment?.message} + ); }} /> -
- - - - -
+ + - - +
+ ); }; From 10b84095b5281631620cc0e74ad32763708bf8bc Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 15 Apr 2026 03:52:09 +0200 Subject: [PATCH 117/562] Update InPlatformMigrationSection.tsx --- .../components/InPlatformMigrationSection.tsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx index 8f0d24c8f07..c03a575678a 100644 --- a/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/ExternalMigrationsTab/components/InPlatformMigrationSection.tsx @@ -1,5 +1,4 @@ import { useMemo, useState } from "react"; -import { Link } from "@tanstack/react-router"; import { Edit, MoreVertical, Plus, Trash2 } from "lucide-react"; import { createNotification } from "@app/components/notifications"; @@ -23,8 +22,6 @@ import { UnstableTableHeader, UnstableTableRow } from "@app/components/v3"; -import { useOrganization } from "@app/context"; -import { APP_CONNECTION_MAP } from "@app/helpers/appConnections"; import { getInPlatformMigrationProviderMeta, TInPlatformMigrationApp @@ -68,7 +65,6 @@ export const InPlatformMigrationSection = () => { ExternalMigrationProviders.Doppler ); - const { currentOrg } = useOrganization(); const { data: appConnections = [] } = useListAppConnections(); const { mutateAsync: deleteConfig } = useDeleteExternalMigrationConfig(); From 950f2c4aa941934487c18a6501f87b22416fa0c5 Mon Sep 17 00:00:00 2001 From: x032205 Date: Wed, 15 Apr 2026 01:48:21 -0400 Subject: [PATCH 118/562] fix: dependency vulnerabilities across backend, frontend, and sink/oidc-server --- .github/workflows/be-test-report.yml | 2 +- backend/bdd/uv.lock | 111 ++- backend/package-lock.json | 1079 ++++++++++++++--------- backend/package.json | 17 +- frontend/package-lock.json | 1193 ++++++++++++++++---------- frontend/package.json | 30 +- package-lock.json | 188 ++-- package.json | 6 + sink/oidc-server/package-lock.json | 78 +- sink/oidc-server/package.json | 15 +- 10 files changed, 1651 insertions(+), 1068 deletions(-) diff --git a/.github/workflows/be-test-report.yml b/.github/workflows/be-test-report.yml index bd57b377eb6..f2c951f5759 100644 --- a/.github/workflows/be-test-report.yml +++ b/.github/workflows/be-test-report.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@v2 - name: 📁 Download test results id: download-artifact - uses: dawidd6/action-download-artifact@v2 + uses: dawidd6/action-download-artifact@v6 with: name: be-test-results path: backend diff --git a/backend/bdd/uv.lock b/backend/bdd/uv.lock index 49e1fca7352..67d2303a5fc 100644 --- a/backend/bdd/uv.lock +++ b/backend/bdd/uv.lock @@ -230,58 +230,55 @@ wheels = [ [[package]] name = "cryptography" -version = "46.0.3" +version = "46.0.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" }, - { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" }, - { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" }, - { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" }, - { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" }, - { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" }, - { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" }, - { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" }, - { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" }, - { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" }, - { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" }, - { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" }, - { url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988, upload-time = "2025-10-15T23:17:14.65Z" }, - { url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451, upload-time = "2025-10-15T23:17:16.142Z" }, - { url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007, upload-time = "2025-10-15T23:17:18.04Z" }, - { url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012, upload-time = "2025-10-15T23:17:19.982Z" }, - { url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728, upload-time = "2025-10-15T23:17:21.527Z" }, - { url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078, upload-time = "2025-10-15T23:17:23.042Z" }, - { url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460, upload-time = "2025-10-15T23:17:24.885Z" }, - { url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237, upload-time = "2025-10-15T23:17:26.449Z" }, - { url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344, upload-time = "2025-10-15T23:17:28.06Z" }, - { url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564, upload-time = "2025-10-15T23:17:29.665Z" }, - { url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415, upload-time = "2025-10-15T23:17:31.686Z" }, - { url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457, upload-time = "2025-10-15T23:17:33.478Z" }, - { url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074, upload-time = "2025-10-15T23:17:35.158Z" }, - { url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569, upload-time = "2025-10-15T23:17:37.188Z" }, - { url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941, upload-time = "2025-10-15T23:17:39.236Z" }, - { url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339, upload-time = "2025-10-15T23:17:40.888Z" }, - { url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315, upload-time = "2025-10-15T23:17:42.769Z" }, - { url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331, upload-time = "2025-10-15T23:17:44.468Z" }, - { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" }, - { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" }, - { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" }, - { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" }, - { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" }, - { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" }, - { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" }, - { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" }, - { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" }, - { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" }, - { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" }, - { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" }, - { url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695, upload-time = "2025-10-15T23:18:08.672Z" }, - { url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720, upload-time = "2025-10-15T23:18:10.632Z" }, - { url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740, upload-time = "2025-10-15T23:18:12.277Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/47/93/ac8f3d5ff04d54bc814e961a43ae5b0b146154c89c61b47bb07557679b18/cryptography-46.0.7.tar.gz", hash = "sha256:e4cfd68c5f3e0bfdad0d38e023239b96a2fe84146481852dffbcca442c245aa5", size = 750652, upload-time = "2026-04-08T01:57:54.692Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/5d/4a8f770695d73be252331e60e526291e3df0c9b27556a90a6b47bccca4c2/cryptography-46.0.7-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:ea42cbe97209df307fdc3b155f1b6fa2577c0defa8f1f7d3be7d31d189108ad4", size = 7179869, upload-time = "2026-04-08T01:56:17.157Z" }, + { url = "https://files.pythonhosted.org/packages/5f/45/6d80dc379b0bbc1f9d1e429f42e4cb9e1d319c7a8201beffd967c516ea01/cryptography-46.0.7-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b36a4695e29fe69215d75960b22577197aca3f7a25b9cf9d165dcfe9d80bc325", size = 4275492, upload-time = "2026-04-08T01:56:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9a/1765afe9f572e239c3469f2cb429f3ba7b31878c893b246b4b2994ffe2fe/cryptography-46.0.7-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:5ad9ef796328c5e3c4ceed237a183f5d41d21150f972455a9d926593a1dcb308", size = 4426670, upload-time = "2026-04-08T01:56:21.415Z" }, + { url = "https://files.pythonhosted.org/packages/8f/3e/af9246aaf23cd4ee060699adab1e47ced3f5f7e7a8ffdd339f817b446462/cryptography-46.0.7-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:73510b83623e080a2c35c62c15298096e2a5dc8d51c3b4e1740211839d0dea77", size = 4280275, upload-time = "2026-04-08T01:56:23.539Z" }, + { url = "https://files.pythonhosted.org/packages/0f/54/6bbbfc5efe86f9d71041827b793c24811a017c6ac0fd12883e4caa86b8ed/cryptography-46.0.7-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cbd5fb06b62bd0721e1170273d3f4d5a277044c47ca27ee257025146c34cbdd1", size = 4928402, upload-time = "2026-04-08T01:56:25.624Z" }, + { url = "https://files.pythonhosted.org/packages/2d/cf/054b9d8220f81509939599c8bdbc0c408dbd2bdd41688616a20731371fe0/cryptography-46.0.7-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:420b1e4109cc95f0e5700eed79908cef9268265c773d3a66f7af1eef53d409ef", size = 4459985, upload-time = "2026-04-08T01:56:27.309Z" }, + { url = "https://files.pythonhosted.org/packages/f9/46/4e4e9c6040fb01c7467d47217d2f882daddeb8828f7df800cb806d8a2288/cryptography-46.0.7-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:24402210aa54baae71d99441d15bb5a1919c195398a87b563df84468160a65de", size = 3990652, upload-time = "2026-04-08T01:56:29.095Z" }, + { url = "https://files.pythonhosted.org/packages/36/5f/313586c3be5a2fbe87e4c9a254207b860155a8e1f3cca99f9910008e7d08/cryptography-46.0.7-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:8a469028a86f12eb7d2fe97162d0634026d92a21f3ae0ac87ed1c4a447886c83", size = 4279805, upload-time = "2026-04-08T01:56:30.928Z" }, + { url = "https://files.pythonhosted.org/packages/69/33/60dfc4595f334a2082749673386a4d05e4f0cf4df8248e63b2c3437585f2/cryptography-46.0.7-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9694078c5d44c157ef3162e3bf3946510b857df5a3955458381d1c7cfc143ddb", size = 4892883, upload-time = "2026-04-08T01:56:32.614Z" }, + { url = "https://files.pythonhosted.org/packages/c7/0b/333ddab4270c4f5b972f980adef4faa66951a4aaf646ca067af597f15563/cryptography-46.0.7-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:42a1e5f98abb6391717978baf9f90dc28a743b7d9be7f0751a6f56a75d14065b", size = 4459756, upload-time = "2026-04-08T01:56:34.306Z" }, + { url = "https://files.pythonhosted.org/packages/d2/14/633913398b43b75f1234834170947957c6b623d1701ffc7a9600da907e89/cryptography-46.0.7-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91bbcb08347344f810cbe49065914fe048949648f6bd5c2519f34619142bbe85", size = 4410244, upload-time = "2026-04-08T01:56:35.977Z" }, + { url = "https://files.pythonhosted.org/packages/10/f2/19ceb3b3dc14009373432af0c13f46aa08e3ce334ec6eff13492e1812ccd/cryptography-46.0.7-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5d1c02a14ceb9148cc7816249f64f623fbfee39e8c03b3650d842ad3f34d637e", size = 4674868, upload-time = "2026-04-08T01:56:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/1a/bb/a5c213c19ee94b15dfccc48f363738633a493812687f5567addbcbba9f6f/cryptography-46.0.7-cp311-abi3-win32.whl", hash = "sha256:d23c8ca48e44ee015cd0a54aeccdf9f09004eba9fc96f38c911011d9ff1bd457", size = 3026504, upload-time = "2026-04-08T01:56:39.666Z" }, + { url = "https://files.pythonhosted.org/packages/2b/02/7788f9fefa1d060ca68717c3901ae7fffa21ee087a90b7f23c7a603c32ae/cryptography-46.0.7-cp311-abi3-win_amd64.whl", hash = "sha256:397655da831414d165029da9bc483bed2fe0e75dde6a1523ec2fe63f3c46046b", size = 3488363, upload-time = "2026-04-08T01:56:41.893Z" }, + { url = "https://files.pythonhosted.org/packages/7b/56/15619b210e689c5403bb0540e4cb7dbf11a6bf42e483b7644e471a2812b3/cryptography-46.0.7-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:d151173275e1728cf7839aaa80c34fe550c04ddb27b34f48c232193df8db5842", size = 7119671, upload-time = "2026-04-08T01:56:44Z" }, + { url = "https://files.pythonhosted.org/packages/74/66/e3ce040721b0b5599e175ba91ab08884c75928fbeb74597dd10ef13505d2/cryptography-46.0.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:db0f493b9181c7820c8134437eb8b0b4792085d37dbb24da050476ccb664e59c", size = 4268551, upload-time = "2026-04-08T01:56:46.071Z" }, + { url = "https://files.pythonhosted.org/packages/03/11/5e395f961d6868269835dee1bafec6a1ac176505a167f68b7d8818431068/cryptography-46.0.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ebd6daf519b9f189f85c479427bbd6e9c9037862cf8fe89ee35503bd209ed902", size = 4408887, upload-time = "2026-04-08T01:56:47.718Z" }, + { url = "https://files.pythonhosted.org/packages/40/53/8ed1cf4c3b9c8e611e7122fb56f1c32d09e1fff0f1d77e78d9ff7c82653e/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:b7b412817be92117ec5ed95f880defe9cf18a832e8cafacf0a22337dc1981b4d", size = 4271354, upload-time = "2026-04-08T01:56:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/50/46/cf71e26025c2e767c5609162c866a78e8a2915bbcfa408b7ca495c6140c4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:fbfd0e5f273877695cb93baf14b185f4878128b250cc9f8e617ea0c025dfb022", size = 4905845, upload-time = "2026-04-08T01:56:50.916Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ea/01276740375bac6249d0a971ebdf6b4dc9ead0ee0a34ef3b5a88c1a9b0d4/cryptography-46.0.7-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:ffca7aa1d00cf7d6469b988c581598f2259e46215e0140af408966a24cf086ce", size = 4444641, upload-time = "2026-04-08T01:56:52.882Z" }, + { url = "https://files.pythonhosted.org/packages/3d/4c/7d258f169ae71230f25d9f3d06caabcff8c3baf0978e2b7d65e0acac3827/cryptography-46.0.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:60627cf07e0d9274338521205899337c5d18249db56865f943cbe753aa96f40f", size = 3967749, upload-time = "2026-04-08T01:56:54.597Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2a/2ea0767cad19e71b3530e4cad9605d0b5e338b6a1e72c37c9c1ceb86c333/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:80406c3065e2c55d7f49a9550fe0c49b3f12e5bfff5dedb727e319e1afb9bf99", size = 4270942, upload-time = "2026-04-08T01:56:56.416Z" }, + { url = "https://files.pythonhosted.org/packages/41/3d/fe14df95a83319af25717677e956567a105bb6ab25641acaa093db79975d/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:c5b1ccd1239f48b7151a65bc6dd54bcfcc15e028c8ac126d3fada09db0e07ef1", size = 4871079, upload-time = "2026-04-08T01:56:58.31Z" }, + { url = "https://files.pythonhosted.org/packages/9c/59/4a479e0f36f8f378d397f4eab4c850b4ffb79a2f0d58704b8fa0703ddc11/cryptography-46.0.7-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d5f7520159cd9c2154eb61eb67548ca05c5774d39e9c2c4339fd793fe7d097b2", size = 4443999, upload-time = "2026-04-08T01:57:00.508Z" }, + { url = "https://files.pythonhosted.org/packages/28/17/b59a741645822ec6d04732b43c5d35e4ef58be7bfa84a81e5ae6f05a1d33/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fcd8eac50d9138c1d7fc53a653ba60a2bee81a505f9f8850b6b2888555a45d0e", size = 4399191, upload-time = "2026-04-08T01:57:02.654Z" }, + { url = "https://files.pythonhosted.org/packages/59/6a/bb2e166d6d0e0955f1e9ff70f10ec4b2824c9cfcdb4da772c7dd69cc7d80/cryptography-46.0.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:65814c60f8cc400c63131584e3e1fad01235edba2614b61fbfbfa954082db0ee", size = 4655782, upload-time = "2026-04-08T01:57:04.592Z" }, + { url = "https://files.pythonhosted.org/packages/95/b6/3da51d48415bcb63b00dc17c2eff3a651b7c4fed484308d0f19b30e8cb2c/cryptography-46.0.7-cp314-cp314t-win32.whl", hash = "sha256:fdd1736fed309b4300346f88f74cd120c27c56852c3838cab416e7a166f67298", size = 3002227, upload-time = "2026-04-08T01:57:06.91Z" }, + { url = "https://files.pythonhosted.org/packages/32/a8/9f0e4ed57ec9cebe506e58db11ae472972ecb0c659e4d52bbaee80ca340a/cryptography-46.0.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e06acf3c99be55aa3b516397fe42f5855597f430add9c17fa46bf2e0fb34c9bb", size = 3475332, upload-time = "2026-04-08T01:57:08.807Z" }, + { url = "https://files.pythonhosted.org/packages/a7/7f/cd42fc3614386bc0c12f0cb3c4ae1fc2bbca5c9662dfed031514911d513d/cryptography-46.0.7-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:462ad5cb1c148a22b2e3bcc5ad52504dff325d17daf5df8d88c17dda1f75f2a4", size = 7165618, upload-time = "2026-04-08T01:57:10.645Z" }, + { url = "https://files.pythonhosted.org/packages/a5/d0/36a49f0262d2319139d2829f773f1b97ef8aef7f97e6e5bd21455e5a8fb5/cryptography-46.0.7-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:84d4cced91f0f159a7ddacad249cc077e63195c36aac40b4150e7a57e84fffe7", size = 4270628, upload-time = "2026-04-08T01:57:12.885Z" }, + { url = "https://files.pythonhosted.org/packages/8a/6c/1a42450f464dda6ffbe578a911f773e54dd48c10f9895a23a7e88b3e7db5/cryptography-46.0.7-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:128c5edfe5e5938b86b03941e94fac9ee793a94452ad1365c9fc3f4f62216832", size = 4415405, upload-time = "2026-04-08T01:57:14.923Z" }, + { url = "https://files.pythonhosted.org/packages/9a/92/4ed714dbe93a066dc1f4b4581a464d2d7dbec9046f7c8b7016f5286329e2/cryptography-46.0.7-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5e51be372b26ef4ba3de3c167cd3d1022934bc838ae9eaad7e644986d2a3d163", size = 4272715, upload-time = "2026-04-08T01:57:16.638Z" }, + { url = "https://files.pythonhosted.org/packages/b7/e6/a26b84096eddd51494bba19111f8fffe976f6a09f132706f8f1bf03f51f7/cryptography-46.0.7-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:cdf1a610ef82abb396451862739e3fc93b071c844399e15b90726ef7470eeaf2", size = 4918400, upload-time = "2026-04-08T01:57:19.021Z" }, + { url = "https://files.pythonhosted.org/packages/c7/08/ffd537b605568a148543ac3c2b239708ae0bd635064bab41359252ef88ed/cryptography-46.0.7-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1d25aee46d0c6f1a501adcddb2d2fee4b979381346a78558ed13e50aa8a59067", size = 4450634, upload-time = "2026-04-08T01:57:21.185Z" }, + { url = "https://files.pythonhosted.org/packages/16/01/0cd51dd86ab5b9befe0d031e276510491976c3a80e9f6e31810cce46c4ad/cryptography-46.0.7-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:cdfbe22376065ffcf8be74dc9a909f032df19bc58a699456a21712d6e5eabfd0", size = 3985233, upload-time = "2026-04-08T01:57:22.862Z" }, + { url = "https://files.pythonhosted.org/packages/92/49/819d6ed3a7d9349c2939f81b500a738cb733ab62fbecdbc1e38e83d45e12/cryptography-46.0.7-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:abad9dac36cbf55de6eb49badd4016806b3165d396f64925bf2999bcb67837ba", size = 4271955, upload-time = "2026-04-08T01:57:24.814Z" }, + { url = "https://files.pythonhosted.org/packages/80/07/ad9b3c56ebb95ed2473d46df0847357e01583f4c52a85754d1a55e29e4d0/cryptography-46.0.7-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:935ce7e3cfdb53e3536119a542b839bb94ec1ad081013e9ab9b7cfd478b05006", size = 4879888, upload-time = "2026-04-08T01:57:26.88Z" }, + { url = "https://files.pythonhosted.org/packages/b8/c7/201d3d58f30c4c2bdbe9b03844c291feb77c20511cc3586daf7edc12a47b/cryptography-46.0.7-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:35719dc79d4730d30f1c2b6474bd6acda36ae2dfae1e3c16f2051f215df33ce0", size = 4449961, upload-time = "2026-04-08T01:57:29.068Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ef/649750cbf96f3033c3c976e112265c33906f8e462291a33d77f90356548c/cryptography-46.0.7-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:7bbc6ccf49d05ac8f7d7b5e2e2c33830d4fe2061def88210a126d130d7f71a85", size = 4401696, upload-time = "2026-04-08T01:57:31.029Z" }, + { url = "https://files.pythonhosted.org/packages/41/52/a8908dcb1a389a459a29008c29966c1d552588d4ae6d43f3a1a4512e0ebe/cryptography-46.0.7-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a1529d614f44b863a7b480c6d000fe93b59acee9c82ffa027cfadc77521a9f5e", size = 4664256, upload-time = "2026-04-08T01:57:33.144Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/f0ab06238e899cc3fb332623f337a7364f36f4bb3f2534c2bb95a35b132c/cryptography-46.0.7-cp38-abi3-win32.whl", hash = "sha256:f247c8c1a1fb45e12586afbb436ef21ff1e80670b2861a90353d9b025583d246", size = 3013001, upload-time = "2026-04-08T01:57:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f1/00ce3bde3ca542d1acd8f8cfa38e446840945aa6363f9b74746394b14127/cryptography-46.0.7-cp38-abi3-win_amd64.whl", hash = "sha256:506c4ff91eff4f82bdac7633318a526b1d1309fc07ca76a3ad182cb5b686d6d3", size = 3472985, upload-time = "2026-04-08T01:57:36.714Z" }, ] [[package]] @@ -470,15 +467,15 @@ wheels = [ [[package]] name = "pyopenssl" -version = "25.3.0" +version = "26.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/80/be/97b83a464498a79103036bc74d1038df4a7ef0e402cfaf4d5e113fb14759/pyopenssl-25.3.0.tar.gz", hash = "sha256:c981cb0a3fd84e8602d7afc209522773b94c1c2446a3c710a75b06fe1beae329", size = 184073, upload-time = "2025-09-17T00:32:21.037Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/11/a62e1d33b373da2b2c2cd9eb508147871c80f12b1cacde3c5d314922afdd/pyopenssl-26.0.0.tar.gz", hash = "sha256:f293934e52936f2e3413b89c6ce36df66a0b34ae1ea3a053b8c5020ff2f513fc", size = 185534, upload-time = "2026-03-15T14:28:26.353Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/81/ef2b1dfd1862567d573a4fdbc9f969067621764fbb74338496840a1d2977/pyopenssl-25.3.0-py3-none-any.whl", hash = "sha256:1fda6fc034d5e3d179d39e59c1895c9faeaf40a79de5fc4cbbfbe0d36f4a77b6", size = 57268, upload-time = "2025-09-17T00:32:19.474Z" }, + { url = "https://files.pythonhosted.org/packages/fb/7d/d4f7d908fa8415571771b30669251d57c3cf313b36a856e6d7548ae01619/pyopenssl-26.0.0-py3-none-any.whl", hash = "sha256:df94d28498848b98cc1c0ffb8ef1e71e40210d3b0a8064c9d29571ed2904bf81", size = 57969, upload-time = "2026-03-15T14:28:24.864Z" }, ] [[package]] @@ -501,7 +498,7 @@ wheels = [ [[package]] name = "requests" -version = "2.32.5" +version = "2.33.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -509,9 +506,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/a4/98b9c7c6428a668bf7e42ebb7c79d576a1c3c1e3ae2d47e674b468388871/requests-2.33.1.tar.gz", hash = "sha256:18817f8c57c6263968bc123d237e3b8b08ac046f5456bd1e307ee8f4250d3517", size = 134120, upload-time = "2026-03-30T16:09:15.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8e/7540e8a2036f79a125c1d2ebadf69ed7901608859186c856fa0388ef4197/requests-2.33.1-py3-none-any.whl", hash = "sha256:4e6d1ef462f3626a1f0a0a9c42dd93c63bad33f9f1c1937509b8c5c8718ab56a", size = 64947, upload-time = "2026-03-30T16:09:13.83Z" }, ] [[package]] @@ -552,9 +549,9 @@ wheels = [ [[package]] name = "urllib3" -version = "2.5.0" +version = "2.6.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, ] diff --git a/backend/package-lock.json b/backend/package-lock.json index f3903fd1a0b..6f751fead3c 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -76,7 +76,7 @@ "argon2": "^0.31.2", "asn1js": "^3.0.6", "aws-sdk": "^2.1553.0", - "axios": "^1.12.0", + "axios": "^1.15.0", "axios-ntlm": "^1.4.4", "axios-retry": "^4.0.0", "bcrypt": "^5.1.1", @@ -98,7 +98,7 @@ "isomorphic-dompurify": "^2.22.0", "jmespath": "^0.16.0", "jose": "^6.1.0", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "jsonwebtoken": "^9.0.2", "jsrp": "^0.2.4", "jwks-rsa": "^3.1.0", @@ -114,7 +114,7 @@ "nanoid": "^3.3.8", "netmask": "^2.0.2", "node-forge": "^1.3.2", - "nodemailer": "^7.0.12", + "nodemailer": "^8.0.5", "oci-common": "^2.108.0", "oci-identity": "^2.108.0", "oci-keymanagement": "^2.108.0", @@ -5582,9 +5582,9 @@ "license": "MIT" }, "node_modules/@hono/node-server": { - "version": "1.19.12", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.12.tgz", - "integrity": "sha512-txsUW4SQ1iilgE0l9/e9VQWmELXifEFvmdA1j6WFh/aFPj99hIntrSsq/if0UWyGVkmrRPKA1wCeP+UCr1B9Uw==", + "version": "1.19.14", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", + "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", "license": "MIT", "engines": { "node": ">=18.14.1" @@ -6338,15 +6338,6 @@ "node": ">=18.0.0" } }, - "node_modules/@isaacs/fs-minipass/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/@isaacs/ttlcache": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz", @@ -7307,6 +7298,15 @@ "node": ">= 18" } }, + "node_modules/@node-saml/node-saml/node_modules/@xmldom/xmldom": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz", + "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@node-saml/node-saml/node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", @@ -12427,15 +12427,6 @@ "node": ">= 16" } }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -13229,9 +13220,9 @@ } }, "node_modules/axios": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", - "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.11", @@ -14043,15 +14034,6 @@ "node": "20 || >=22" } }, - "node_modules/cacache/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -14269,11 +14251,12 @@ } }, "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/cipher-base": { @@ -17126,28 +17109,6 @@ "node": ">= 0.6" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs-readdir-recursive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", @@ -17529,15 +17490,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/globals": { "version": "13.23.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", @@ -17906,9 +17858,9 @@ } }, "node_modules/hono": { - "version": "4.12.9", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", - "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", + "version": "4.12.12", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.12.tgz", + "integrity": "sha512-p1JfQMKaceuCbpJKAPKVqyqviZdS0eUxH9v82oWo1kb9xjQ5wA6iP3FNVAPDFlz5/p7d45lO+BpSk1tuSZMF4Q==", "license": "MIT", "engines": { "node": ">=16.9.0" @@ -19572,9 +19524,9 @@ } }, "node_modules/lodash": { - "version": "4.17.23", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", - "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", "license": "MIT" }, "node_modules/lodash.camelcase": { @@ -19793,15 +19745,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/make-fetch-happen/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/make-fetch-happen/node_modules/negotiator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", @@ -19988,11 +19931,12 @@ } }, "node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/minipass-collect": { @@ -20007,15 +19951,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/minipass-fetch": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-5.0.2.tgz", @@ -20050,27 +19985,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-fetch/node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/minipass-flush": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", @@ -20131,47 +20045,16 @@ "node": ">=8" } }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" + "minipass": "^7.1.2" }, "engines": { - "node": ">=10" + "node": ">= 18" } }, "node_modules/mlly": { @@ -20692,15 +20575,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/node-gyp/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/node-gyp/node_modules/isexe": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", @@ -20710,27 +20584,6 @@ "node": ">=20" } }, - "node_modules/node-gyp/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/node-gyp/node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/node-gyp/node_modules/nopt": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-9.0.0.tgz", @@ -20746,22 +20599,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/node-gyp/node_modules/tar": { - "version": "7.5.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", - "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/node-gyp/node_modules/which": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", @@ -20777,15 +20614,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/node-gyp/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/node-releases": { "version": "2.0.23", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.23.tgz", @@ -20794,9 +20622,9 @@ "license": "MIT" }, "node_modules/nodemailer": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-7.0.13.tgz", - "integrity": "sha512-PNDFSJdP+KFgdsG3ZzMXCgquO7I6McjY2vlqILjtJd0hy8wEvtugS9xKRF2NWlPNGxvLCXlTNIae4serI7dinw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-8.0.5.tgz", + "integrity": "sha512-0PF8Yb1yZuQfQbq+5/pZJrtF6WQcjTd5/S4JOHs9PGFxuTqoB/icwuB44pOdURHJbRKX1PPoJZtY7R4VUoCC8w==", "license": "MIT-0", "engines": { "node": ">=6.0.0" @@ -23275,16 +23103,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/react-email/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/react-email/node_modules/onetime": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", @@ -24971,15 +24789,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/ssri/node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/stack-trace": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", @@ -25439,19 +25248,28 @@ } }, "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/tarn": { @@ -26648,40 +26466,115 @@ "node": ">=0.6.0" } }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "node_modules/vite": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "dev": true, "license": "MIT", "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { - "vite-node": "vite-node.mjs" + "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-node/node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" + "url": "https://github.com/vitejs/vite?sponsor=1" }, - "engines": { - "node": ">=6.0" + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-node/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" }, "peerDependenciesMeta": { "supports-color": { @@ -26689,92 +26582,501 @@ } } }, - "node_modules/vite-node/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=18" } }, - "node_modules/vite-node/node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", "bin": { - "vite": "bin/vite.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" + "node": ">=18" }, "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/vitest": { @@ -26908,81 +27210,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/vitest/node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", @@ -27416,6 +27643,15 @@ "node": ">=16" } }, + "node_modules/xml-crypto/node_modules/@xmldom/xmldom": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz", + "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/xml-crypto/node_modules/xpath": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.33.tgz", @@ -27436,6 +27672,15 @@ "xpath": "0.0.32" } }, + "node_modules/xml-encryption/node_modules/@xmldom/xmldom": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz", + "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/xml-encryption/node_modules/xpath": { "version": "0.0.32", "resolved": "https://registry.npmjs.org/xpath/-/xpath-0.0.32.tgz", diff --git a/backend/package.json b/backend/package.json index 505dc173e81..7cdeeb4ff6a 100644 --- a/backend/package.json +++ b/backend/package.json @@ -62,7 +62,7 @@ "cipher-base": "1.0.5", "sha.js": "2.4.12", "jws": "^4.0.1", - "qs": "^6.14.1", + "qs": "^6.14.2", "glob": "^10.5.0", "cross-spawn": "^7.0.6", "validator": "^13.15.22", @@ -71,7 +71,14 @@ }, "ts-node": { "diff": "^4.0.4" - } + }, + "hono": ">=4.12.12", + "@hono/node-server": ">=1.19.13", + "vite": "^7.3.2", + "@xmldom/xmldom": "^0.8.12", + "lodash": ">=4.18.0", + "tar": ">=7.5.11", + "flatted": ">=3.4.2" }, "devDependencies": { "@babel/cli": "^7.18.10", @@ -198,7 +205,7 @@ "argon2": "^0.31.2", "asn1js": "^3.0.6", "aws-sdk": "^2.1553.0", - "axios": "^1.12.0", + "axios": "^1.15.0", "axios-ntlm": "^1.4.4", "axios-retry": "^4.0.0", "bcrypt": "^5.1.1", @@ -220,7 +227,7 @@ "isomorphic-dompurify": "^2.22.0", "jmespath": "^0.16.0", "jose": "^6.1.0", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "jsonwebtoken": "^9.0.2", "jsrp": "^0.2.4", "jwks-rsa": "^3.1.0", @@ -236,7 +243,7 @@ "nanoid": "^3.3.8", "netmask": "^2.0.2", "node-forge": "^1.3.2", - "nodemailer": "^7.0.12", + "nodemailer": "^8.0.5", "oci-common": "^2.108.0", "oci-identity": "^2.108.0", "oci-keymanagement": "^2.108.0", diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b95751b5539..a245aa5bdf6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,7 +8,7 @@ "name": "frontend-v2", "version": "0.0.0", "dependencies": { - "@casl/ability": "^6.7.2", + "@casl/ability": "^6.7.5", "@casl/react": "^4.0.0", "@codemirror/commands": "^6.10.3", "@codemirror/lang-sql": "^6.10.0", @@ -73,7 +73,7 @@ "@xterm/xterm": "^5.5.0", "@xyflow/react": "^12.4.4", "argon2-browser": "^1.18.0", - "axios": "^1.12.0", + "axios": "^1.14.0", "classnames": "^2.5.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", @@ -86,14 +86,14 @@ "i18next": "^24.1.0", "i18next-browser-languagedetector": "^8.0.2", "i18next-http-backend": "^3.0.1", - "jspdf": "^3.0.2", + "jspdf": "^4.2.1", "jsrp": "^0.2.4", "jwt-decode": "^4.0.0", "lexical": "^0.29.0", "lucide-react": "^0.544.0", "ms": "^2.1.3", "nprogress": "^0.2.0", - "picomatch": "^4.0.2", + "picomatch": "^4.0.4", "posthog-js": "^1.360.1", "qrcode": "^1.5.4", "randexp": "^0.5.3", @@ -116,7 +116,7 @@ "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1", "xterm-readline": "^1.1.2", - "yaml": "^2.6.1", + "yaml": "^2.8.3", "zod": "^3.24.1", "zustand": "^5.0.2" }, @@ -161,7 +161,7 @@ "tw-animate-css": "^1.4.0", "typescript": "~5.6.2", "typescript-eslint": "^8.15.0", - "vite": "^6.2.0", + "vite": "^6.4.2", "vite-plugin-node-polyfills": "^0.23.0", "vite-plugin-top-level-await": "^1.4.4", "vite-plugin-wasm": "^3.4.0", @@ -510,9 +510,9 @@ } }, "node_modules/@casl/ability": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@casl/ability/-/ability-6.7.2.tgz", - "integrity": "sha512-KjKXlcjKbUz8dKw7PY56F7qlfOFgxTU6tnlJ8YrbDyWkJMIlHa6VRWzCD8RU20zbJUC1hExhOFggZjm6tf1mUw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@casl/ability/-/ability-6.8.0.tgz", + "integrity": "sha512-Ipt4mzI4gSgnomFdaPjaLgY2MWuXqAEZLrU6qqWBB7khGiBBuuEp6ytYDnq09bRXqcjaeeHiaCvCGFbBA2SpvA==", "license": "MIT", "dependencies": { "@ucast/mongo2js": "^1.3.0" @@ -1394,6 +1394,24 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/espree": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", @@ -1425,6 +1443,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "9.16.0", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.16.0.tgz", @@ -1611,6 +1642,37 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -1665,13 +1727,13 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -1714,10 +1776,17 @@ } } }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { @@ -1725,9 +1794,10 @@ } }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -1745,14 +1815,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -1761,6 +1838,23 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@joshwooding/vite-plugin-react-docgen-typescript/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -4970,9 +5064,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.1.tgz", + "integrity": "sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==", "cpu": [ "arm" ], @@ -4984,9 +5078,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.1.tgz", + "integrity": "sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==", "cpu": [ "arm64" ], @@ -4998,9 +5092,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.1.tgz", + "integrity": "sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==", "cpu": [ "arm64" ], @@ -5012,9 +5106,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.1.tgz", + "integrity": "sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==", "cpu": [ "x64" ], @@ -5026,9 +5120,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.1.tgz", + "integrity": "sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==", "cpu": [ "arm64" ], @@ -5040,9 +5134,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.1.tgz", + "integrity": "sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==", "cpu": [ "x64" ], @@ -5054,9 +5148,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.1.tgz", + "integrity": "sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==", "cpu": [ "arm" ], @@ -5068,9 +5162,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.1.tgz", + "integrity": "sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==", "cpu": [ "arm" ], @@ -5082,9 +5176,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.1.tgz", + "integrity": "sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==", "cpu": [ "arm64" ], @@ -5096,9 +5190,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.1.tgz", + "integrity": "sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==", "cpu": [ "arm64" ], @@ -5110,9 +5204,23 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.1.tgz", + "integrity": "sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.1.tgz", + "integrity": "sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==", "cpu": [ "loong64" ], @@ -5124,9 +5232,23 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.1.tgz", + "integrity": "sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.1.tgz", + "integrity": "sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==", "cpu": [ "ppc64" ], @@ -5138,9 +5260,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.1.tgz", + "integrity": "sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==", "cpu": [ "riscv64" ], @@ -5152,9 +5274,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.1.tgz", + "integrity": "sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==", "cpu": [ "riscv64" ], @@ -5166,9 +5288,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.1.tgz", + "integrity": "sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==", "cpu": [ "s390x" ], @@ -5180,9 +5302,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.1.tgz", + "integrity": "sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==", "cpu": [ "x64" ], @@ -5194,9 +5316,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.1.tgz", + "integrity": "sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==", "cpu": [ "x64" ], @@ -5207,10 +5329,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.1.tgz", + "integrity": "sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.1.tgz", + "integrity": "sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==", "cpu": [ "arm64" ], @@ -5222,9 +5358,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.1.tgz", + "integrity": "sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==", "cpu": [ "arm64" ], @@ -5236,9 +5372,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.1.tgz", + "integrity": "sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==", "cpu": [ "ia32" ], @@ -5250,9 +5386,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.1.tgz", + "integrity": "sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==", "cpu": [ "x64" ], @@ -5264,9 +5400,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.1.tgz", + "integrity": "sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==", "cpu": [ "x64" ], @@ -7098,10 +7234,17 @@ "typescript": ">=4.8.4 <5.9.0" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { @@ -7109,13 +7252,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -7238,45 +7381,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/mocker/node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/@vitest/pretty-format": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", @@ -7321,6 +7425,14 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@webcontainer/env": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webcontainer/env/-/env-1.1.1.tgz", + "integrity": "sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@xterm/addon-fit": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", @@ -7424,9 +7536,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -7479,9 +7591,9 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -7700,9 +7812,9 @@ } }, "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "dev": true, "license": "MIT" }, @@ -7799,14 +7911,14 @@ } }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", + "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" } }, "node_modules/axobject-query": { @@ -7857,13 +7969,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, "node_modules/base64-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", @@ -7911,20 +8016,6 @@ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", "license": "Apache-2.0" }, - "node_modules/better-opn": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", - "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "open": "^8.0.4" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -7939,23 +8030,12 @@ } }, "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.3.tgz", + "integrity": "sha512-EAcmnPkxpntVL+DS7bO1zhcZNvCkxqtkd0ZY53h06GNQ3DEkkGZ/gKgmDv6DdZQGj9BgfSPKtJJ7Dp1GPP8f7w==", "dev": true, "license": "MIT" }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -8042,37 +8122,22 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", - "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.5.tgz", + "integrity": "sha512-C2AUdAJg6rlM2W5QMp2Q4KGQMVBwR1lIimTsUnutJ8bMpW5B52pGpR2gEnNBNwijumDo5FojQ0L9JrXA8m4YEw==", "dev": true, "license": "ISC", "dependencies": { - "bn.js": "^5.2.1", - "browserify-rsa": "^4.1.0", + "bn.js": "^5.2.2", + "browserify-rsa": "^4.1.1", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.5", - "hash-base": "~3.0", + "elliptic": "^6.6.1", "inherits": "^2.0.4", - "parse-asn1": "^5.1.7", + "parse-asn1": "^5.1.9", "readable-stream": "^2.3.8", "safe-buffer": "^5.2.1" }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/browserify-sign/node_modules/hash-base": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", - "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "safe-buffer": "^5.2.1" - }, "engines": { "node": ">= 0.10" } @@ -8207,6 +8272,23 @@ "dev": true, "license": "MIT" }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -9097,9 +9179,9 @@ } }, "node_modules/cosmiconfig/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "license": "ISC", "engines": { "node": ">= 6" @@ -9117,9 +9199,9 @@ } }, "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "dev": true, "license": "MIT" }, @@ -9517,6 +9599,38 @@ "dev": true, "license": "MIT" }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -9535,14 +9649,17 @@ } }, "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", "dev": true, "license": "MIT", "peer": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/define-properties": { @@ -9641,9 +9758,9 @@ } }, "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "dev": true, "license": "MIT" }, @@ -9760,9 +9877,9 @@ } }, "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "dev": true, "license": "MIT" }, @@ -10011,20 +10128,6 @@ "@esbuild/win32-x64": "0.25.11" } }, - "node_modules/esbuild-register": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", - "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "debug": "^4.3.4" - }, - "peerDependencies": { - "esbuild": ">=0.12 <1" - } - }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -10289,12 +10392,30 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/eslint-plugin-import/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -10312,6 +10433,19 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -10353,6 +10487,40 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-prettier": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", @@ -10441,6 +10609,26 @@ "eslint": ">=8.40" } }, + "node_modules/eslint-plugin-react/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -10455,6 +10643,20 @@ "node": ">=0.10.0" } }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -10576,6 +10778,24 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -10605,6 +10825,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -10935,16 +11168,16 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -10988,9 +11221,9 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -11186,28 +11419,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -12029,9 +12240,9 @@ } }, "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, "license": "MIT", "peer": true, @@ -12039,7 +12250,7 @@ "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12118,6 +12329,26 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -12351,17 +12582,20 @@ } }, "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "is-docker": "^2.0.0" + "is-inside-container": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/isarray": { @@ -12449,9 +12683,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -12520,22 +12754,31 @@ } }, "node_modules/jspdf": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-3.0.3.tgz", - "integrity": "sha512-eURjAyz5iX1H8BOYAfzvdPfIKK53V7mCpBTe7Kb16PaM8JSXEcUQNBQaiWMI8wY5RvNOPj4GccMjTlfwRBd+oQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-4.2.1.tgz", + "integrity": "sha512-YyAXyvnmjTbR4bHQRLzex3CuINCDlQnBqoSYyjJwTP2x9jDLuKDzy7aKUl0hgx3uhcl7xzg32agn5vlie6HIlQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.26.9", + "@babel/runtime": "^7.28.6", "fast-png": "^6.2.0", "fflate": "^0.8.1" }, "optionalDependencies": { "canvg": "^3.0.11", "core-js": "^3.6.0", - "dompurify": "^3.2.4", + "dompurify": "^3.3.1", "html2canvas": "^1.0.0-rc.5" } }, + "node_modules/jspdf/node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/jsrp": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/jsrp/-/jsrp-0.2.4.tgz", @@ -13118,9 +13361,10 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -13621,9 +13865,9 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -13648,9 +13892,9 @@ } }, "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "dev": true, "license": "MIT" }, @@ -13700,19 +13944,6 @@ "dev": true, "license": "MIT" }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", @@ -13724,11 +13955,11 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -13818,9 +14049,9 @@ "license": "MIT" }, "node_modules/node-stdlib-browser": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.0.tgz", - "integrity": "sha512-g/koYzOr9Fb1Jc+tHUHlFd5gODjGn48tHexUK8q6iqOVriEgSnd3/1T7myBYc+0KBVze/7F7n65ec9rW6OD7xw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.3.1.tgz", + "integrity": "sha512-X75ZN8DCLftGM5iKwoYLA3rjnrAEs97MkzvSd4q2746Tgpg8b8XWiBGiBG4ZpgcAqBgtgPHTiAc8ZMCvZuikDw==", "dev": true, "license": "MIT", "dependencies": { @@ -13831,7 +14062,7 @@ "console-browserify": "^1.1.0", "constants-browserify": "^1.0.0", "create-require": "^1.1.1", - "crypto-browserify": "^3.11.0", + "crypto-browserify": "^3.12.1", "domain-browser": "4.22.0", "events": "^3.0.0", "https-browserify": "^1.0.0", @@ -14025,19 +14256,20 @@ } }, "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14136,31 +14368,16 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", - "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.9.tgz", + "integrity": "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg==", "dev": true, "license": "ISC", "dependencies": { "asn1.js": "^4.10.1", "browserify-aes": "^1.2.0", "evp_bytestokey": "^1.0.3", - "hash-base": "~3.0", - "pbkdf2": "^3.1.2", - "safe-buffer": "^5.2.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/parse-asn1/node_modules/hash-base": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", - "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", + "pbkdf2": "^3.1.5", "safe-buffer": "^5.2.1" }, "engines": { @@ -14260,30 +14477,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -14336,9 +14529,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -14678,10 +14871,13 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/public-encrypt": { "version": "4.0.3", @@ -14699,9 +14895,9 @@ } }, "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", - "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", + "version": "4.12.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.3.tgz", + "integrity": "sha512-fGTi3gxV/23FTYdAoUtLYp6qySe2KE3teyZitipKNRuVYcBkoP/bB3guXN/XVKUe9mxCHXnc9C4ocyz8OmgN0g==", "dev": true, "license": "MIT" }, @@ -14751,13 +14947,13 @@ } }, "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -15262,9 +15458,9 @@ } }, "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -15535,6 +15731,59 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/ripemd160": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.3.tgz", @@ -15549,9 +15798,9 @@ } }, "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "version": "4.60.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.1.tgz", + "integrity": "sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==", "dev": true, "license": "MIT", "dependencies": { @@ -15565,31 +15814,48 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", + "@rollup/rollup-android-arm-eabi": "4.60.1", + "@rollup/rollup-android-arm64": "4.60.1", + "@rollup/rollup-darwin-arm64": "4.60.1", + "@rollup/rollup-darwin-x64": "4.60.1", + "@rollup/rollup-freebsd-arm64": "4.60.1", + "@rollup/rollup-freebsd-x64": "4.60.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.1", + "@rollup/rollup-linux-arm-musleabihf": "4.60.1", + "@rollup/rollup-linux-arm64-gnu": "4.60.1", + "@rollup/rollup-linux-arm64-musl": "4.60.1", + "@rollup/rollup-linux-loong64-gnu": "4.60.1", + "@rollup/rollup-linux-loong64-musl": "4.60.1", + "@rollup/rollup-linux-ppc64-gnu": "4.60.1", + "@rollup/rollup-linux-ppc64-musl": "4.60.1", + "@rollup/rollup-linux-riscv64-gnu": "4.60.1", + "@rollup/rollup-linux-riscv64-musl": "4.60.1", + "@rollup/rollup-linux-s390x-gnu": "4.60.1", + "@rollup/rollup-linux-x64-gnu": "4.60.1", + "@rollup/rollup-linux-x64-musl": "4.60.1", + "@rollup/rollup-openbsd-x64": "4.60.1", + "@rollup/rollup-openharmony-arm64": "4.60.1", + "@rollup/rollup-win32-arm64-msvc": "4.60.1", + "@rollup/rollup-win32-ia32-msvc": "4.60.1", + "@rollup/rollup-win32-x64-gnu": "4.60.1", + "@rollup/rollup-win32-x64-msvc": "4.60.1", "fsevents": "~2.3.2" } }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -15682,9 +15948,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -15926,28 +16192,29 @@ } }, "node_modules/storybook": { - "version": "9.1.13", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.13.tgz", - "integrity": "sha512-G3KZ36EVzXyHds72B/qtWiJnhUpM0xOUeYlDcO9DSHL1bDTv15cW4+upBl+mcBZrDvU838cn7Bv4GpF+O5MCfw==", + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.3.5.tgz", + "integrity": "sha512-uBSZu/GZa9aEIW3QMGvdQPMZWhGxSe4dyRWU8B3/Vd47Gy/XLC7tsBxRr13txmmPOEDHZR94uLuq0H50fvuqBw==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@storybook/global": "^5.0.0", - "@testing-library/jest-dom": "^6.6.3", + "@storybook/icons": "^2.0.1", + "@testing-library/jest-dom": "^6.9.1", "@testing-library/user-event": "^14.6.1", "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", "@vitest/spy": "3.2.4", - "better-opn": "^3.0.2", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", - "esbuild-register": "^3.5.0", + "@webcontainer/env": "^1.1.1", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0", + "open": "^10.2.0", "recast": "^0.23.5", - "semver": "^7.6.2", + "semver": "^7.7.3", + "use-sync-external-store": "^1.5.0", "ws": "^8.18.0" }, "bin": { - "storybook": "bin/index.cjs" + "storybook": "dist/bin/dispatcher.js" }, "funding": { "type": "opencollective", @@ -15962,6 +16229,18 @@ } } }, + "node_modules/storybook/node_modules/@storybook/icons": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-2.0.1.tgz", + "integrity": "sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -16051,13 +16330,13 @@ } }, "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -16356,11 +16635,11 @@ } }, "node_modules/tar": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", - "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", + "version": "7.5.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", + "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", @@ -17040,9 +17319,9 @@ } }, "node_modules/use-sync-external-store": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" @@ -17132,9 +17411,9 @@ } }, "node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", + "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17531,13 +17810,13 @@ } }, "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", + "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-regex": "^6.2.2" }, "engines": { "node": ">=12" @@ -17576,6 +17855,23 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -17632,15 +17928,18 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { diff --git a/frontend/package.json b/frontend/package.json index fc3a5db9387..f589b3f6c16 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,10 +17,26 @@ "build-storybook": "storybook build" }, "overrides": { - "sha.js": "2.4.12" + "sha.js": "2.4.12", + "flatted": ">=3.4.2", + "rollup": ">=4.59.0", + "qs": ">=6.14.2", + "mdast-util-to-hast": ">=13.2.1", + "js-yaml": ">=4.1.1", + "storybook": ">=9.1.19", + "tar": ">=7.5.11", + "chokidar": { + "picomatch": "^2.3.2" + }, + "fast-glob": { + "picomatch": "^2.3.2" + }, + "cosmiconfig": { + "yaml": "^1.10.3" + } }, "dependencies": { - "@casl/ability": "^6.7.2", + "@casl/ability": "^6.7.5", "@casl/react": "^4.0.0", "@codemirror/commands": "^6.10.3", "@codemirror/lang-sql": "^6.10.0", @@ -85,7 +101,7 @@ "@xterm/xterm": "^5.5.0", "@xyflow/react": "^12.4.4", "argon2-browser": "^1.18.0", - "axios": "^1.12.0", + "axios": "^1.14.0", "classnames": "^2.5.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", @@ -98,14 +114,14 @@ "i18next": "^24.1.0", "i18next-browser-languagedetector": "^8.0.2", "i18next-http-backend": "^3.0.1", - "jspdf": "^3.0.2", + "jspdf": "^4.2.1", "jsrp": "^0.2.4", "jwt-decode": "^4.0.0", "lexical": "^0.29.0", "lucide-react": "^0.544.0", "ms": "^2.1.3", "nprogress": "^0.2.0", - "picomatch": "^4.0.2", + "picomatch": "^4.0.4", "posthog-js": "^1.360.1", "qrcode": "^1.5.4", "randexp": "^0.5.3", @@ -128,7 +144,7 @@ "tweetnacl": "^1.0.3", "tweetnacl-util": "^0.15.1", "xterm-readline": "^1.1.2", - "yaml": "^2.6.1", + "yaml": "^2.8.3", "zod": "^3.24.1", "zustand": "^5.0.2" }, @@ -173,7 +189,7 @@ "tw-animate-css": "^1.4.0", "typescript": "~5.6.2", "typescript-eslint": "^8.15.0", - "vite": "^6.2.0", + "vite": "^6.4.2", "vite-plugin-node-polyfills": "^0.23.0", "vite-plugin-top-level-await": "^1.4.4", "vite-plugin-wasm": "^3.4.0", diff --git a/package-lock.json b/package-lock.json index 4d72220afd3..22a8027ba05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,12 +17,10 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -517,9 +515,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -565,19 +563,26 @@ "license": "Python-2.0" }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, + "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/callsites": { @@ -624,12 +629,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -916,10 +915,11 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -1101,9 +1101,9 @@ "peer": true }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -1174,15 +1174,19 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.5" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -1360,11 +1364,6 @@ "react": "^18.2.0" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -1584,12 +1583,9 @@ }, "dependencies": { "@babel/runtime": { - "version": "7.23.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", - "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", - "requires": { - "regenerator-runtime": "^0.14.0" - } + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==" }, "@eslint-community/eslint-utils": { "version": "4.4.1", @@ -1618,8 +1614,8 @@ "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", + "js-yaml": ">=4.1.1", + "minimatch": ">=3.1.3", "strip-json-comments": "^3.1.1" } }, @@ -1637,7 +1633,7 @@ "requires": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", - "minimatch": "^3.0.5" + "minimatch": ">=3.1.3" } }, "@humanwhocodes/module-importer": { @@ -1683,7 +1679,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", "requires": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": ">=7.26.10" } }, "@radix-ui/react-collection": { @@ -1691,7 +1687,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/react-compose-refs": "1.0.1", "@radix-ui/react-context": "1.0.1", "@radix-ui/react-primitive": "1.0.3", @@ -1703,7 +1699,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", "requires": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": ">=7.26.10" } }, "@radix-ui/react-context": { @@ -1711,7 +1707,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", "requires": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": ">=7.26.10" } }, "@radix-ui/react-direction": { @@ -1719,7 +1715,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", "requires": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": ">=7.26.10" } }, "@radix-ui/react-id": { @@ -1727,7 +1723,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/react-use-layout-effect": "1.0.1" } }, @@ -1736,7 +1732,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/react-compose-refs": "1.0.1", "@radix-ui/react-use-layout-effect": "1.0.1" } @@ -1746,7 +1742,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/react-slot": "1.0.2" } }, @@ -1755,7 +1751,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz", "integrity": "sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/primitive": "1.0.1", "@radix-ui/react-compose-refs": "1.0.1", "@radix-ui/react-context": "1.0.1", @@ -1773,7 +1769,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/primitive": "1.0.1", "@radix-ui/react-collection": "1.0.3", "@radix-ui/react-compose-refs": "1.0.1", @@ -1790,7 +1786,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/react-compose-refs": "1.0.1" } }, @@ -1799,7 +1795,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", "requires": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": ">=7.26.10" } }, "@radix-ui/react-use-controllable-state": { @@ -1807,7 +1803,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/react-use-callback-ref": "1.0.1" } }, @@ -1816,7 +1812,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", "requires": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": ">=7.26.10" } }, "@radix-ui/react-use-previous": { @@ -1824,7 +1820,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", "requires": { - "@babel/runtime": "^7.13.10" + "@babel/runtime": ">=7.26.10" } }, "@radix-ui/react-use-size": { @@ -1832,7 +1828,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", "requires": { - "@babel/runtime": "^7.13.10", + "@babel/runtime": ">=7.26.10", "@radix-ui/react-use-layout-effect": "1.0.1" } }, @@ -1862,9 +1858,9 @@ "requires": {} }, "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -1895,19 +1891,18 @@ "dev": true }, "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true }, "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" } }, "callsites": { @@ -1941,12 +1936,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, "cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2023,11 +2012,11 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", + "js-yaml": ">=4.1.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": ">=3.1.3", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", @@ -2143,14 +2132,14 @@ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": "^3.1.0", + "flatted": ">=3.4.2", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true }, "fs.realpath": { @@ -2168,7 +2157,7 @@ "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", + "minimatch": ">=3.1.3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -2281,9 +2270,9 @@ "peer": true }, "js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -2336,12 +2325,12 @@ } }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "requires": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.5" } }, "ms": { @@ -2461,11 +2450,6 @@ "scheduler": "^0.23.0" } }, - "regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", diff --git a/package.json b/package.json index e8190a2e88e..ba707399ac6 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,12 @@ "scripts": { "prepare": "husky install" }, + "overrides": { + "flatted": ">=3.4.2", + "minimatch": ">=3.1.3", + "js-yaml": ">=4.1.1", + "@babel/runtime": ">=7.26.10" + }, "devDependencies": { "@types/uuid": "^9.0.7", "eslint": "^8.57.1", diff --git a/sink/oidc-server/package-lock.json b/sink/oidc-server/package-lock.json index c7c4776a51a..4fd79ff0e03 100644 --- a/sink/oidc-server/package-lock.json +++ b/sink/oidc-server/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "axios": "^1.12.0", + "axios": "^1.15.0", "dotenv": "^16.4.7", "express": "^4.21.2", "form-data": "^4.0.2", @@ -68,9 +68,9 @@ "license": "MIT" }, "node_modules/@koa/router/node_modules/path-to-regexp": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", - "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz", + "integrity": "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA==", "license": "MIT", "funding": { "type": "opencollective", @@ -103,14 +103,14 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.12.2.tgz", - "integrity": "sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" } }, "node_modules/body-parser": { @@ -463,9 +463,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -483,9 +483,9 @@ } }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -737,13 +737,13 @@ } }, "node_modules/koa": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/koa/-/koa-3.0.1.tgz", - "integrity": "sha512-oDxVkRwPOHhGlxKIDiDB2h+/l05QPtefD7nSqRgDfZt8P+QVYFWjfeK8jANf5O2YXjk8egd7KntvXKYx82wOag==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/koa/-/koa-3.2.0.tgz", + "integrity": "sha512-TrM4/tnNY7uJ1aW55sIIa+dqBvc4V14WRIAlGcWat9wV5pRS9Wr5Zk2ZTjQP1jtfIHDoHiSbPuV08P0fUZo2pg==", "license": "MIT", "dependencies": { "accepts": "^1.3.8", - "content-disposition": "~0.5.4", + "content-disposition": "~1.0.1", "content-type": "^1.0.5", "cookies": "~0.9.1", "delegates": "^1.0.0", @@ -771,6 +771,19 @@ "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", "license": "MIT" }, + "node_modules/koa/node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/koa/node_modules/media-typer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", @@ -1022,9 +1035,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", "license": "MIT" }, "node_modules/proxy-addr": { @@ -1041,18 +1054,21 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.15.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", + "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" diff --git a/sink/oidc-server/package.json b/sink/oidc-server/package.json index ebeaf071dba..de6f62cd8f5 100644 --- a/sink/oidc-server/package.json +++ b/sink/oidc-server/package.json @@ -10,8 +10,21 @@ "author": "", "license": "ISC", "description": "", + "overrides": { + "express": { + "path-to-regexp": "0.1.13", + "qs": ">=6.14.2" + }, + "@koa/router": { + "path-to-regexp": "^8.4.0" + }, + "oidc-provider": { + "koa": ">=3.1.2" + }, + "qs": ">=6.14.2" + }, "dependencies": { - "axios": "^1.12.0", + "axios": "^1.15.0", "dotenv": "^16.4.7", "express": "^4.21.2", "form-data": "^4.0.2", From 6a15a8c8f784caed62b26e967b67affff6c7e5a5 Mon Sep 17 00:00:00 2001 From: x032205 Date: Wed, 15 Apr 2026 02:02:10 -0400 Subject: [PATCH 119/562] pin npm overrides to major version ranges to prevent cross-major resolution --- backend/package.json | 10 +- frontend/package-lock.json | 255 ++++++++++---------------- frontend/package.json | 12 +- package-lock.json | 354 ++++++++++++++++++++++++++++--------- package.json | 8 +- 5 files changed, 380 insertions(+), 259 deletions(-) diff --git a/backend/package.json b/backend/package.json index 7cdeeb4ff6a..e2da03cc5eb 100644 --- a/backend/package.json +++ b/backend/package.json @@ -72,13 +72,13 @@ "ts-node": { "diff": "^4.0.4" }, - "hono": ">=4.12.12", - "@hono/node-server": ">=1.19.13", + "hono": "^4.12.12", + "@hono/node-server": "^1.19.13", "vite": "^7.3.2", "@xmldom/xmldom": "^0.8.12", - "lodash": ">=4.18.0", - "tar": ">=7.5.11", - "flatted": ">=3.4.2" + "lodash": "^4.18.0", + "tar": "^7.5.11", + "flatted": "^3.4.2" }, "devDependencies": { "@babel/cli": "^7.18.10", diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a245aa5bdf6..00d260b85d3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -7381,6 +7381,45 @@ "url": "https://opencollective.com/vitest" } }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/mocker/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/estree": "^1.0.0" + } + }, "node_modules/@vitest/pretty-format": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", @@ -7425,14 +7464,6 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@webcontainer/env": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@webcontainer/env/-/env-1.1.1.tgz", - "integrity": "sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/@xterm/addon-fit": { "version": "0.10.0", "resolved": "https://registry.npmjs.org/@xterm/addon-fit/-/addon-fit-0.10.0.tgz", @@ -8016,6 +8047,20 @@ "integrity": "sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==", "license": "Apache-2.0" }, + "node_modules/better-opn": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/better-opn/-/better-opn-3.0.2.tgz", + "integrity": "sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "open": "^8.0.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -8272,23 +8317,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -9599,38 +9627,6 @@ "dev": true, "license": "MIT" }, - "node_modules/default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -9649,17 +9645,14 @@ } }, "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "license": "MIT", "peer": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/define-properties": { @@ -10128,6 +10121,20 @@ "@esbuild/win32-x64": "0.25.11" } }, + "node_modules/esbuild-register": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.6.0.tgz", + "integrity": "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "debug": "^4.3.4" + }, + "peerDependencies": { + "esbuild": ">=0.12 <1" + } + }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", @@ -12240,9 +12247,9 @@ } }, "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, "license": "MIT", "peer": true, @@ -12250,7 +12257,7 @@ "is-docker": "cli.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12329,26 +12336,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -12582,20 +12569,17 @@ } }, "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "is-inside-container": "^1.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/isarray": { @@ -14256,20 +14240,19 @@ } }, "node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -15842,20 +15825,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -16192,29 +16161,28 @@ } }, "node_modules/storybook": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.3.5.tgz", - "integrity": "sha512-uBSZu/GZa9aEIW3QMGvdQPMZWhGxSe4dyRWU8B3/Vd47Gy/XLC7tsBxRr13txmmPOEDHZR94uLuq0H50fvuqBw==", + "version": "9.1.20", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-9.1.20.tgz", + "integrity": "sha512-6rME2tww6PFhm96iG2Xx44yzwLDWBiDWy+kJ2ub6x90werSTOiuo+tZJ94BgCfFutR0tEfLRIq59s+Zg6YyChA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/icons": "^2.0.1", - "@testing-library/jest-dom": "^6.9.1", + "@testing-library/jest-dom": "^6.6.3", "@testing-library/user-event": "^14.6.1", "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", "@vitest/spy": "3.2.4", - "@webcontainer/env": "^1.1.1", - "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0", - "open": "^10.2.0", + "better-opn": "^3.0.2", + "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0", + "esbuild-register": "^3.5.0", "recast": "^0.23.5", - "semver": "^7.7.3", - "use-sync-external-store": "^1.5.0", + "semver": "^7.6.2", "ws": "^8.18.0" }, "bin": { - "storybook": "dist/bin/dispatcher.js" + "storybook": "bin/index.cjs" }, "funding": { "type": "opencollective", @@ -16229,18 +16197,6 @@ } } }, - "node_modules/storybook/node_modules/@storybook/icons": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-2.0.1.tgz", - "integrity": "sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/stream-browserify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", @@ -17855,23 +17811,6 @@ } } }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index f589b3f6c16..edb9285bb20 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -18,12 +18,12 @@ }, "overrides": { "sha.js": "2.4.12", - "flatted": ">=3.4.2", - "rollup": ">=4.59.0", - "qs": ">=6.14.2", - "mdast-util-to-hast": ">=13.2.1", - "js-yaml": ">=4.1.1", - "storybook": ">=9.1.19", + "flatted": "^3.4.2", + "rollup": "^4.59.0", + "qs": "^6.14.2", + "mdast-util-to-hast": "^13.2.1", + "js-yaml": "^4.1.1", + "storybook": "^9.1.19", "tar": ">=7.5.11", "chokidar": { "picomatch": "^2.3.2" diff --git a/package-lock.json b/package-lock.json index 22a8027ba05..612c3058a6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -78,6 +78,37 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", @@ -104,6 +135,37 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -562,29 +624,6 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -629,6 +668,13 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -780,6 +826,37 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -959,6 +1036,37 @@ "node": ">=10.13.0" } }, + "node_modules/glob/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -1173,22 +1281,6 @@ "loose-envify": "cli.js" } }, - "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -1614,9 +1706,36 @@ "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": ">=4.1.1", - "minimatch": ">=3.1.3", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.3", "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "@eslint/js": { @@ -1633,7 +1752,34 @@ "requires": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", - "minimatch": ">=3.1.3" + "minimatch": "^3.1.3" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "@humanwhocodes/module-importer": { @@ -1679,7 +1825,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", "requires": { - "@babel/runtime": ">=7.26.10" + "@babel/runtime": "^7.26.10" } }, "@radix-ui/react-collection": { @@ -1687,7 +1833,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/react-compose-refs": "1.0.1", "@radix-ui/react-context": "1.0.1", "@radix-ui/react-primitive": "1.0.3", @@ -1699,7 +1845,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", "requires": { - "@babel/runtime": ">=7.26.10" + "@babel/runtime": "^7.26.10" } }, "@radix-ui/react-context": { @@ -1707,7 +1853,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", "requires": { - "@babel/runtime": ">=7.26.10" + "@babel/runtime": "^7.26.10" } }, "@radix-ui/react-direction": { @@ -1715,7 +1861,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", "requires": { - "@babel/runtime": ">=7.26.10" + "@babel/runtime": "^7.26.10" } }, "@radix-ui/react-id": { @@ -1723,7 +1869,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/react-use-layout-effect": "1.0.1" } }, @@ -1732,7 +1878,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/react-compose-refs": "1.0.1", "@radix-ui/react-use-layout-effect": "1.0.1" } @@ -1742,7 +1888,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/react-slot": "1.0.2" } }, @@ -1751,7 +1897,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.1.3.tgz", "integrity": "sha512-x+yELayyefNeKeTx4fjK6j99Fs6c4qKm3aY38G3swQVTN6xMpsrbigC0uHs2L//g8q4qR7qOcww8430jJmi2ag==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/primitive": "1.0.1", "@radix-ui/react-compose-refs": "1.0.1", "@radix-ui/react-context": "1.0.1", @@ -1769,7 +1915,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/primitive": "1.0.1", "@radix-ui/react-collection": "1.0.3", "@radix-ui/react-compose-refs": "1.0.1", @@ -1786,7 +1932,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/react-compose-refs": "1.0.1" } }, @@ -1795,7 +1941,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", "requires": { - "@babel/runtime": ">=7.26.10" + "@babel/runtime": "^7.26.10" } }, "@radix-ui/react-use-controllable-state": { @@ -1803,7 +1949,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/react-use-callback-ref": "1.0.1" } }, @@ -1812,7 +1958,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", "requires": { - "@babel/runtime": ">=7.26.10" + "@babel/runtime": "^7.26.10" } }, "@radix-ui/react-use-previous": { @@ -1820,7 +1966,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", "requires": { - "@babel/runtime": ">=7.26.10" + "@babel/runtime": "^7.26.10" } }, "@radix-ui/react-use-size": { @@ -1828,7 +1974,7 @@ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", "requires": { - "@babel/runtime": ">=7.26.10", + "@babel/runtime": "^7.26.10", "@radix-ui/react-use-layout-effect": "1.0.1" } }, @@ -1890,21 +2036,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true - }, - "brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "requires": { - "balanced-match": "^4.0.2" - } - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -1936,6 +2067,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, "cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -2012,15 +2149,42 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-yaml": ">=4.1.1", + "js-yaml": "^4.1.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": ">=3.1.3", + "minimatch": "^3.1.3", "natural-compare": "^1.4.0", "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "text-table": "^0.2.0" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "eslint-scope": { @@ -2132,7 +2296,7 @@ "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "requires": { - "flatted": ">=3.4.2", + "flatted": "^3.4.2", "rimraf": "^3.0.2" } }, @@ -2157,9 +2321,36 @@ "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": ">=3.1.3", + "minimatch": "^3.1.3", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } } }, "glob-parent": { @@ -2324,15 +2515,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "requires": { - "brace-expansion": "^5.0.5" - } - }, "ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/package.json b/package.json index ba707399ac6..0e94b6a6724 100644 --- a/package.json +++ b/package.json @@ -14,10 +14,10 @@ "prepare": "husky install" }, "overrides": { - "flatted": ">=3.4.2", - "minimatch": ">=3.1.3", - "js-yaml": ">=4.1.1", - "@babel/runtime": ">=7.26.10" + "flatted": "^3.4.2", + "minimatch": "^3.1.3", + "js-yaml": "^4.1.1", + "@babel/runtime": "^7.26.10" }, "devDependencies": { "@types/uuid": "^9.0.7", From 2c4370c92a1d1866b2215fe3904673d71fa9be44 Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Wed, 15 Apr 2026 10:55:19 -0300 Subject: [PATCH 120/562] fix(permission): update error message structure in ForbiddenRequestError for consistency --- backend/src/ee/services/permission/permission-service.ts | 4 ++-- backend/src/lib/cache/with-cache.test.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/ee/services/permission/permission-service.ts b/backend/src/ee/services/permission/permission-service.ts index 2927a300284..109971f6c4f 100644 --- a/backend/src/ee/services/permission/permission-service.ts +++ b/backend/src/ee/services/permission/permission-service.ts @@ -337,7 +337,7 @@ export const permissionServiceFactory = ({ } if (projectDetails.orgId !== actorOrgId) { - throw new ForbiddenRequestError({ name: "This project does not belong to your selected organization." }); + throw new ForbiddenRequestError({ message: "This project does not belong to your selected organization." }); } if (actionProjectType !== ActionProjectType.Any && actionProjectType !== projectDetails.type) { @@ -478,7 +478,7 @@ export const permissionServiceFactory = ({ // Re-validate org and project type on cache hit (actorOrgId is not in cache key) if (projectDetails.orgId !== actorOrgId) { - throw new ForbiddenRequestError({ name: "This project does not belong to your selected organization." }); + throw new ForbiddenRequestError({ message: "This projec t does not belong to your selected organization." }); } if (actionProjectType !== ActionProjectType.Any && actionProjectType !== projectDetails.type) { throw new BadRequestError({ diff --git a/backend/src/lib/cache/with-cache.test.ts b/backend/src/lib/cache/with-cache.test.ts index 211469b92b2..6a261912a3a 100644 --- a/backend/src/lib/cache/with-cache.test.ts +++ b/backend/src/lib/cache/with-cache.test.ts @@ -593,7 +593,7 @@ describe("withCacheFingerprint", () => { expect(dataFetcher).toHaveBeenCalledOnce(); expect(mockKeyStore.setItemWithExpiry).not.toHaveBeenCalled(); expect(logger.error).toHaveBeenCalledWith( - expect.objectContaining({ err: expect.any(Error) }) as unknown as Record, + expect.objectContaining({ err: expect.any(Error) as Error }) as unknown as Record, expect.stringContaining("fingerprint fetch failed") ); }); From cad1ee17daf2a3968d3f9683f0948f51f6e5d94e Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Wed, 15 Apr 2026 10:57:20 -0300 Subject: [PATCH 121/562] fix(permission): correct typo in error message for ForbiddenRequestError --- backend/src/ee/services/permission/permission-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/ee/services/permission/permission-service.ts b/backend/src/ee/services/permission/permission-service.ts index 109971f6c4f..a7747d1b97e 100644 --- a/backend/src/ee/services/permission/permission-service.ts +++ b/backend/src/ee/services/permission/permission-service.ts @@ -478,7 +478,7 @@ export const permissionServiceFactory = ({ // Re-validate org and project type on cache hit (actorOrgId is not in cache key) if (projectDetails.orgId !== actorOrgId) { - throw new ForbiddenRequestError({ message: "This projec t does not belong to your selected organization." }); + throw new ForbiddenRequestError({ message: "This project does not belong to your selected organization." }); } if (actionProjectType !== ActionProjectType.Any && actionProjectType !== projectDetails.type) { throw new BadRequestError({ From 2c169f40b99a2bc54fa94bdbca7957c25131a536 Mon Sep 17 00:00:00 2001 From: Jake Hulberg Date: Wed, 15 Apr 2026 10:14:45 -0500 Subject: [PATCH 122/562] fix: consolidate self-hosting overview cards into single grid The Docker Swarm card removal left Docker Compose alone in its own CardGroup and Linux package outside any group, creating visual gaps. Co-Authored-By: Claude Opus 4.6 (1M context) --- docs/self-hosting/overview.mdx | 46 +++++++++++++++------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/docs/self-hosting/overview.mdx b/docs/self-hosting/overview.mdx index 4de59c66bf5..30b3a84292d 100644 --- a/docs/self-hosting/overview.mdx +++ b/docs/self-hosting/overview.mdx @@ -13,25 +13,23 @@ Self-hosting Infisical lets you retain data on your own infrastructure and netwo Choose from a number of deployment options listed below to get started. - - - Use the fully packaged docker image to deploy Infisical anywhere. - - - Deploy Infisical on Kubernetes using our Helm chart. - - - + + + Use the fully packaged docker image to deploy Infisical anywhere. + + + Deploy Infisical on Kubernetes using our Helm chart. + Install Infisical using our Docker Compose template. - - - Deploy Infisical on GCP using GKE. - - - Install Infisical on your system without containers using our Linux package. - + + From 6570a8f9f8c27dfbd20647963e88a302ec82f86c Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Wed, 15 Apr 2026 13:02:32 -0300 Subject: [PATCH 123/562] refactor(permission): improve type handling for temporaryAccessEndTime and enforce organization context in permission checks --- backend/src/ee/services/group/group-types.ts | 1 - .../ee/services/permission/permission-service.ts | 15 +++++++++------ backend/src/lib/cache/with-cache.ts | 6 ++++-- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/backend/src/ee/services/group/group-types.ts b/backend/src/ee/services/group/group-types.ts index 48f301769b9..6c42df5272c 100644 --- a/backend/src/ee/services/group/group-types.ts +++ b/backend/src/ee/services/group/group-types.ts @@ -130,7 +130,6 @@ export type TAddIdentitiesToGroup = { identityDAL: Pick; identityGroupMembershipDAL: Pick; membershipDAL: Pick; - membershipGroupDAL: Pick; }; export type TRemoveUsersFromGroupByUserIds = { diff --git a/backend/src/ee/services/permission/permission-service.ts b/backend/src/ee/services/permission/permission-service.ts index a7747d1b97e..7567e38b832 100644 --- a/backend/src/ee/services/permission/permission-service.ts +++ b/backend/src/ee/services/permission/permission-service.ts @@ -299,19 +299,19 @@ export const permissionServiceFactory = ({ const reviveCachedPermissionDates = ( memberships: { - roles?: { temporaryAccessEndTime?: unknown }[]; - additionalPrivileges?: { temporaryAccessEndTime?: unknown }[]; + roles?: { temporaryAccessEndTime?: string | Date | null }[]; + additionalPrivileges?: { temporaryAccessEndTime?: string | Date | null }[]; }[] ) => { for (const membership of memberships) { for (const role of membership.roles ?? []) { if (role.temporaryAccessEndTime) { - role.temporaryAccessEndTime = new Date(role.temporaryAccessEndTime as string); + role.temporaryAccessEndTime = new Date(role.temporaryAccessEndTime); } } for (const priv of membership.additionalPrivileges ?? []) { if (priv.temporaryAccessEndTime) { - priv.temporaryAccessEndTime = new Date(priv.temporaryAccessEndTime as string); + priv.temporaryAccessEndTime = new Date(priv.temporaryAccessEndTime); } } } @@ -407,6 +407,10 @@ export const permissionServiceFactory = ({ let actor = inputActor; let actorId = inputActorId; + if (!actorOrgId) { + throw new BadRequestError({ message: "Organization context is required for project permission checks" }); + } + if (actor === ActorType.SERVICE) { return getServiceTokenProjectPermission({ serviceTokenId: actorId, @@ -463,7 +467,7 @@ export const permissionServiceFactory = ({ fingerprintFetcher: () => permissionDAL.getPermissionFingerprint({ projectId, - orgId: actorOrgId || "", + orgId: actorOrgId, actorId, actorType: narrowedActor }), @@ -476,7 +480,6 @@ export const permissionServiceFactory = ({ const { permissionData, projectDetails, username, canBypassSso } = cached; - // Re-validate org and project type on cache hit (actorOrgId is not in cache key) if (projectDetails.orgId !== actorOrgId) { throw new ForbiddenRequestError({ message: "This project does not belong to your selected organization." }); } diff --git a/backend/src/lib/cache/with-cache.ts b/backend/src/lib/cache/with-cache.ts index 4aa3e32361c..8b1747f524d 100644 --- a/backend/src/lib/cache/with-cache.ts +++ b/backend/src/lib/cache/with-cache.ts @@ -115,8 +115,10 @@ export const withCacheFingerprint = async ({ dataFetcher, reviver }: TWithCacheFingerprintOpts): Promise => { - const markerValue = await cacheGet(keyStore, markerKey, "withCacheFingerprint: marker read failed"); - const cachedDataStr = await cacheGet(keyStore, dataKey, "withCacheFingerprint: data read failed"); + const [markerValue, cachedDataStr] = await Promise.all([ + cacheGet(keyStore, markerKey, "withCacheFingerprint: marker read failed"), + cacheGet(keyStore, dataKey, "withCacheFingerprint: data read failed") + ]); // Marker + data hit: return cached data directly (fast path, 0 DB reads) if (markerValue !== null && cachedDataStr !== null) { From 04bb4a3d5e340a077a28d65602b9f041ae103d62 Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Wed, 15 Apr 2026 13:13:02 -0300 Subject: [PATCH 124/562] refactor(group): remove unused membershipGroupDAL from group service factory --- backend/src/ee/services/group/group-service.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/src/ee/services/group/group-service.ts b/backend/src/ee/services/group/group-service.ts index 0b99b657613..5133cda1621 100644 --- a/backend/src/ee/services/group/group-service.ts +++ b/backend/src/ee/services/group/group-service.ts @@ -996,8 +996,7 @@ export const groupServiceFactory = ({ identityIds: [identityId], identityDAL, membershipDAL, - identityGroupMembershipDAL, - membershipGroupDAL + identityGroupMembershipDAL }); return identities[0]; From eff661afc5a8add6fbe0eff9f3c178a9ee050733 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 12:16:30 -0400 Subject: [PATCH 125/562] refactor: remove name column from enrollment tokens, revert V2 register to required fields - Remove name from gateway_enrollment_tokens (redundant with gateway record) - Revert V2 register endpoint relayName and name to required (enrollment flow uses V3 connect) - Use gatewayName from gateway record in audit logs --- .../migrations/20260413000001_gateway-enrollment-tokens.ts | 1 - backend/src/db/schemas/gateway-enrollment-tokens.ts | 1 - backend/src/ee/routes/v2/gateway-router.ts | 4 ++-- backend/src/ee/routes/v3/gateway-router.ts | 2 +- backend/src/ee/services/gateway-v2/gateway-v2-service.ts | 5 ++--- frontend/src/hooks/api/gateways-v2/types.ts | 1 - 6 files changed, 5 insertions(+), 9 deletions(-) diff --git a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts index bf06cf03852..d182def0ce3 100644 --- a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts +++ b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts @@ -15,7 +15,6 @@ export async function up(knex: Knex): Promise { t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); t.uuid("orgId").notNullable(); t.foreign("orgId").references("id").inTable(TableName.Organization).onDelete("CASCADE"); - t.string("name", 64).notNullable(); t.string("tokenHash", 128).notNullable().unique(); t.integer("ttl").notNullable().defaultTo(3600); t.timestamp("expiresAt").notNullable(); diff --git a/backend/src/db/schemas/gateway-enrollment-tokens.ts b/backend/src/db/schemas/gateway-enrollment-tokens.ts index 11d1d7c8fa0..99cc5ebfd67 100644 --- a/backend/src/db/schemas/gateway-enrollment-tokens.ts +++ b/backend/src/db/schemas/gateway-enrollment-tokens.ts @@ -10,7 +10,6 @@ import { TImmutableDBKeys } from "./models"; export const GatewayEnrollmentTokensSchema = z.object({ id: z.string().uuid(), orgId: z.string().uuid(), - name: z.string(), tokenHash: z.string(), ttl: z.number().default(3600), expiresAt: z.date(), diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index 2f18e29d7c3..754043dfbeb 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -24,8 +24,8 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { schema: { operationId: "registerGateway", body: z.object({ - relayName: slugSchema({ min: 1, max: 32, field: "relayName" }).optional(), - name: slugSchema({ min: 1, max: 32, field: "name" }).optional() + relayName: slugSchema({ min: 1, max: 32, field: "relayName" }), + name: slugSchema({ min: 1, max: 32, field: "name" }) }), response: { 200: z.object({ diff --git a/backend/src/ee/routes/v3/gateway-router.ts b/backend/src/ee/routes/v3/gateway-router.ts index 3efe490868e..0939316a230 100644 --- a/backend/src/ee/routes/v3/gateway-router.ts +++ b/backend/src/ee/routes/v3/gateway-router.ts @@ -91,7 +91,7 @@ export const registerGatewayV3Router = async (server: FastifyZodProvider) => { type: EventType.GATEWAY_ENROLLMENT_TOKEN_CREATE, metadata: { tokenId: result.id, - name: result.name + name: result.gatewayName } } }); diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index aa49d5cd499..c59e82f736c 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1282,7 +1282,6 @@ export const gatewayV2ServiceFactory = ({ return gatewayEnrollmentTokenDAL.create( { orgId: orgPermission.orgId, - name: gateway.name, tokenHash: gatewayToken.tokenHash, ttl: ENROLLMENT_TOKEN_TTL_SECONDS, expiresAt: gatewayToken.expiresAt, @@ -1292,7 +1291,7 @@ export const gatewayV2ServiceFactory = ({ ); }); - return { ...record, token: gatewayToken.plainToken }; + return { ...record, token: gatewayToken.plainToken, gatewayName: gateway.name }; }; const connectGateway = async ({ @@ -1348,7 +1347,7 @@ export const gatewayV2ServiceFactory = ({ throw new BadRequestError({ message: "Enrollment token has expired" }); } - const { orgId, name } = tokenRecord; + const { orgId } = tokenRecord; // Resolve the relay before consuming the token so a missing relay doesn't burn it. let relay: TRelays | undefined; diff --git a/frontend/src/hooks/api/gateways-v2/types.ts b/frontend/src/hooks/api/gateways-v2/types.ts index 6821df819e9..d2281fceeda 100644 --- a/frontend/src/hooks/api/gateways-v2/types.ts +++ b/frontend/src/hooks/api/gateways-v2/types.ts @@ -21,7 +21,6 @@ export type TGatewayV2 = { export type TGatewayEnrollmentToken = { id: string; - name: string; ttl: number; expiresAt: string; usedAt: string | null; From 0d2e170be36a9bf2e9af52339caf101cadf5999c Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 12:23:41 -0400 Subject: [PATCH 126/562] chore: remove comment --- backend/src/ee/routes/v2/gateway-router.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/ee/routes/v2/gateway-router.ts b/backend/src/ee/routes/v2/gateway-router.ts index 754043dfbeb..ccf9d5e3a0f 100644 --- a/backend/src/ee/routes/v2/gateway-router.ts +++ b/backend/src/ee/routes/v2/gateway-router.ts @@ -271,6 +271,4 @@ export const registerGatewayV2Router = async (server: FastifyZodProvider) => { return resources; } }); - - // Enrollment endpoints have moved to V3: /api/v3/gateways }; From 4ff3fb4a1830cf17c6519e6ea9ea5c9adc43cd9a Mon Sep 17 00:00:00 2001 From: Tre Dubrava Date: Mon, 13 Apr 2026 16:50:33 -0500 Subject: [PATCH 127/562] improvement(eng-4792): speed up CI --- .github/workflows/check-be-ts-and-lint.yml | 50 ++++++++++++++++++--- .github/workflows/check-fe-ts-and-lint.yml | 50 ++++++++++++++++++--- .github/workflows/run-backend-bdd-tests.yml | 15 ++++--- .github/workflows/run-backend-tests.yml | 15 ++++--- backend/tsconfig.json | 2 + frontend/tsconfig.app.json | 1 + 6 files changed, 109 insertions(+), 24 deletions(-) diff --git a/.github/workflows/check-be-ts-and-lint.yml b/.github/workflows/check-be-ts-and-lint.yml index c0c5796048d..aa10cdd7fba 100644 --- a/.github/workflows/check-be-ts-and-lint.yml +++ b/.github/workflows/check-be-ts-and-lint.yml @@ -10,26 +10,62 @@ on: - "backend/.eslintrc.js" jobs: - check-be-pr: - name: Check TS and Lint + type-check: + name: Type Check runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: ☁️ Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 🔧 Setup Node 22 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "22" - cache: "npm" - cache-dependency-path: backend/package-lock.json + - name: 📦 Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: backend/node_modules + key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} + - name: 📦 Cache tsbuildinfo + uses: actions/cache@v4 + with: + path: backend/node_modules/.tmp/tsconfig.tsbuildinfo + key: backend-tsbuildinfo-${{ github.ref }}-${{ github.sha }} + restore-keys: | + backend-tsbuildinfo-${{ github.ref }}- + backend-tsbuildinfo- - name: Install dependencies - run: npm install + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci working-directory: backend - name: Run type check run: npm run type:check working-directory: backend + + lint: + name: Lint + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - name: ☁️ Checkout source + uses: actions/checkout@v4 + - name: 🔧 Setup Node 22 + uses: actions/setup-node@v4 + with: + node-version: "22" + - name: 📦 Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: backend/node_modules + key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} + - name: Install dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci + working-directory: backend - name: Run lint check run: npm run lint working-directory: backend diff --git a/.github/workflows/check-fe-ts-and-lint.yml b/.github/workflows/check-fe-ts-and-lint.yml index 12c59dbb049..9587987f2b1 100644 --- a/.github/workflows/check-fe-ts-and-lint.yml +++ b/.github/workflows/check-fe-ts-and-lint.yml @@ -10,26 +10,62 @@ on: - "frontend/.eslintrc.js" jobs: - check-fe-ts-lint: - name: Check Frontend Type and Lint check + type-check: + name: Type Check runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: ☁️ Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: 🔧 Setup Node 22 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "22" - cache: "npm" - cache-dependency-path: frontend/package-lock.json + - name: 📦 Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: frontend/node_modules + key: frontend-node-modules-${{ hashFiles('frontend/package-lock.json') }} + - name: 📦 Cache tsbuildinfo + uses: actions/cache@v4 + with: + path: frontend/node_modules/.tmp/tsconfig.app.tsbuildinfo + key: frontend-tsbuildinfo-${{ github.ref }}-${{ github.sha }} + restore-keys: | + frontend-tsbuildinfo-${{ github.ref }}- + frontend-tsbuildinfo- - name: 📦 Install dependencies - run: npm install + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci working-directory: frontend - name: 🏗️ Run Type check run: npm run type:check working-directory: frontend + + lint: + name: Lint + runs-on: ubuntu-latest + timeout-minutes: 15 + + steps: + - name: ☁️ Checkout source + uses: actions/checkout@v4 + - name: 🔧 Setup Node 22 + uses: actions/setup-node@v4 + with: + node-version: "22" + - name: 📦 Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: frontend/node_modules + key: frontend-node-modules-${{ hashFiles('frontend/package-lock.json') }} + - name: 📦 Install dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci + working-directory: frontend - name: 🏗️ Run Lint check run: npm run lint working-directory: frontend diff --git a/.github/workflows/run-backend-bdd-tests.yml b/.github/workflows/run-backend-bdd-tests.yml index 2fd2c844a13..27d2127e629 100644 --- a/.github/workflows/run-backend-bdd-tests.yml +++ b/.github/workflows/run-backend-bdd-tests.yml @@ -25,7 +25,7 @@ jobs: docker system prune -af - name: ☁️ Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install uv uses: astral-sh/setup-uv@v5 - name: Install Python @@ -36,11 +36,9 @@ jobs: with: version: "2.14.2" - name: 🔧 Setup Node 22 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "22" - cache: "npm" - cache-dependency-path: backend/package-lock.json - name: Setup Python 3.11 uses: actions/setup-python@v5 with: @@ -52,8 +50,15 @@ jobs: cmake -S /tmp/sscep-build -B /tmp/sscep-build/build make -C /tmp/sscep-build/build -j$(nproc) sudo cp /tmp/sscep-build/build/sscep /usr/local/bin/sscep + - name: 📦 Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: backend/node_modules + key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} - name: Install dependencies - run: npm install + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci working-directory: backend - name: Output .env file and enable feature flags for BDD tests diff --git a/.github/workflows/run-backend-tests.yml b/.github/workflows/run-backend-tests.yml index 1e702dec870..ec0cb8e2506 100644 --- a/.github/workflows/run-backend-tests.yml +++ b/.github/workflows/run-backend-tests.yml @@ -25,20 +25,25 @@ jobs: docker system prune -af - name: ☁️ Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 - uses: KengoTODA/actions-setup-docker-compose@v1 if: ${{ env.ACT }} name: Install `docker compose` for local simulations with: version: "2.14.2" - name: 🔧 Setup Node 22 - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: "22" - cache: "npm" - cache-dependency-path: backend/package-lock.json + - name: 📦 Cache node_modules + id: cache-node-modules + uses: actions/cache@v4 + with: + path: backend/node_modules + key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} - name: Install dependencies - run: npm install + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci working-directory: backend - name: Start postgres and redis run: touch .env && docker compose -f docker-compose.dev.yml up -d db redis diff --git a/backend/tsconfig.json b/backend/tsconfig.json index db076a30d67..fffc1390faa 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -22,6 +22,8 @@ "moduleResolution": "Node", "allowSyntheticDefaultImports": true, "skipLibCheck": true, + "incremental": true, + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo", "baseUrl": ".", "paths": { "@app/*": ["./src/*"], diff --git a/frontend/tsconfig.app.json b/frontend/tsconfig.app.json index f9379c1c1e5..3dc42b9198f 100644 --- a/frontend/tsconfig.app.json +++ b/frontend/tsconfig.app.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "incremental": true, "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "target": "ES2020", "useDefineForClassFields": true, From c97e1a5074846e7c656a9cbd09822feac604f1c6 Mon Sep 17 00:00:00 2001 From: Tre Dubrava Date: Tue, 14 Apr 2026 14:52:03 -0500 Subject: [PATCH 128/562] improvement(eng-4792): speed up prod docker build --- ...standalone-docker-img-postgres-offical.yml | 12 ++-- Dockerfile.standalone-infisical | 59 +++++++++---------- backend/Dockerfile | 58 ++++++++++-------- 3 files changed, 68 insertions(+), 61 deletions(-) diff --git a/.github/workflows/release-standalone-docker-img-postgres-offical.yml b/.github/workflows/release-standalone-docker-img-postgres-offical.yml index 98901969086..93cc55b5945 100644 --- a/.github/workflows/release-standalone-docker-img-postgres-offical.yml +++ b/.github/workflows/release-standalone-docker-img-postgres-offical.yml @@ -21,7 +21,7 @@ jobs: id: extract_version run: echo "::set-output name=version::${GITHUB_REF_NAME}" - name: ☁️ Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: 📦 Install dependencies to test all dependencies @@ -39,9 +39,9 @@ jobs: id: commit uses: pr-mpt/actions-commit-hash@v2 - name: 🔧 Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: 🐋 Login to Docker Hub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} @@ -84,7 +84,7 @@ jobs: id: extract_version run: echo "::set-output name=version::${GITHUB_REF_NAME}" - name: ☁️ Checkout source - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: 📦 Install dependencies to test all dependencies @@ -102,9 +102,9 @@ jobs: id: commit uses: pr-mpt/actions-commit-hash@v2 - name: 🔧 Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: 🐋 Login to Docker Hub - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/Dockerfile.standalone-infisical b/Dockerfile.standalone-infisical index 443bd5c26b1..b9b29aa5355 100644 --- a/Dockerfile.standalone-infisical +++ b/Dockerfile.standalone-infisical @@ -87,14 +87,12 @@ RUN npm i -g tsconfig-paths ENV NODE_OPTIONS="--max-old-space-size=8192" RUN npm run build -# Production stage -FROM base AS backend-runner - -ENV ChrystokiConfigurationPath=/usr/safenet/lunaclient/ +# Production dependencies (runs in parallel with backend-build) +FROM base AS backend-prod-deps WORKDIR /app -# Install all required dependencies for runtime +# Install build tools needed to compile native modules during npm ci RUN apt-get update && apt-get install -y \ python3 \ make \ @@ -106,39 +104,48 @@ RUN apt-get update && apt-get install -y \ freetds-dev \ && rm -rf /var/lib/apt/lists/* +COPY backend/package*.json ./ +RUN npm ci --omit=dev + +# Production stage +FROM base AS backend-runner + +ENV ChrystokiConfigurationPath=/usr/safenet/lunaclient/ + +WORKDIR /app + +# Only runtime libraries needed — no compilation happens here +RUN apt-get update && apt-get install -y \ + unixodbc \ + freetds-bin \ + && rm -rf /var/lib/apt/lists/* + # Configure ODBC RUN printf "[FreeTDS]\nDescription = FreeTDS Driver\nDriver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nSetup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so\nFileUsage = 1\n" > /etc/odbcinst.ini COPY --from=backend-build /app . RUN rm -rf ./node_modules ./bdd ./e2e-test -RUN npm ci --omit=dev +COPY --from=backend-prod-deps /app/node_modules ./node_modules RUN mkdir frontend-build # Production stage FROM base AS production +# Only runtime dependencies — no compilation happens in this stage RUN apt-get update && apt-get install -y \ - build-essential \ - autoconf \ - automake \ - libtool \ - libssl-dev \ ca-certificates \ bash \ curl \ git \ - python3 \ - make \ - g++ \ unixodbc \ freetds-bin \ - unixodbc-dev \ - libc-dev \ - freetds-dev \ wget \ perl \ openssh-client \ + libaio1t64 \ + unzip \ + smbclient \ && rm -rf /var/lib/apt/lists/* # Install Oracle Instant Client for OracleDB mTLS wallet support @@ -147,7 +154,6 @@ RUN ARCH=$(dpkg --print-architecture) && \ ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5" && \ - apt-get update && apt-get install -y libaio1t64 unzip && \ ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1 && \ wget -q "$ORACLE_URL" && \ echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ @@ -157,7 +163,6 @@ RUN ARCH=$(dpkg --print-architecture) && \ ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32" && \ - apt-get update && apt-get install -y libaio1t64 unzip && \ ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1 && \ wget -q "$ORACLE_URL" && \ echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ @@ -165,11 +170,7 @@ RUN ARCH=$(dpkg --print-architecture) && \ rm "$ORACLE_ZIP"; \ fi && \ echo /opt/oracle/instantclient_23_26 > /etc/ld.so.conf.d/oracle-instantclient.conf && \ - ldconfig && \ - rm -rf /var/lib/apt/lists/* - -# Install smbclient for Windows SMB operations -RUN apt-get update && apt-get install -y smbclient && rm -rf /var/lib/apt/lists/* + ldconfig # Build OpenSSL 3.5.6 for PQC (ML-DSA / SLH-DSA) certificate support. # Installed to /opt/openssl-pqc so it does not conflict with the system OpenSSL. @@ -199,12 +200,10 @@ RUN groupadd --system --gid 1001 nodejs \ && useradd --system --uid 1001 --gid nodejs non-root-user # Give non-root-user permission to update SSL certs -RUN chown -R non-root-user /etc/ssl/certs -RUN chown non-root-user /etc/ssl/certs/ca-certificates.crt -RUN chmod -R u+rwx /etc/ssl/certs -RUN chmod u+rw /etc/ssl/certs/ca-certificates.crt -RUN chown non-root-user /usr/sbin/update-ca-certificates -RUN chmod u+rx /usr/sbin/update-ca-certificates +RUN chown -R non-root-user /etc/ssl/certs \ + && chmod -R u+rwx /etc/ssl/certs \ + && chown non-root-user /usr/sbin/update-ca-certificates \ + && chmod u+rx /usr/sbin/update-ca-certificates ## set pre baked keys ARG POSTHOG_API_KEY diff --git a/backend/Dockerfile b/backend/Dockerfile index ad555bb8d68..992375e8ca6 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -3,48 +3,60 @@ FROM node:22.22.0-trixie-slim AS build WORKDIR /app -# Required for pkcs11js +# Required for pkcs11js and TDS driver (SAP ASE dynamic secrets) RUN apt-get update && apt-get install -y \ python3 \ make \ g++ \ openssh-client \ - openssl - -# Install dependencies for TDS driver (required for SAP ASE dynamic secrets) -RUN apt-get install -y \ + openssl \ unixodbc \ freetds-bin \ freetds-dev \ unixodbc-dev \ - libc-dev + libc-dev \ + && rm -rf /var/lib/apt/lists/* COPY package*.json ./ -RUN npm ci --only-production +RUN npm ci COPY . . RUN npm run build -# Production stage -FROM node:22.22.0-trixie-slim -WORKDIR /app - -ENV npm_config_cache /home/node/.npm +# Production dependencies (runs in parallel with build) +FROM node:22.22.0-trixie-slim AS prod-deps -COPY package*.json ./ +WORKDIR /app +# Build tools needed to compile native modules during npm ci RUN apt-get update && apt-get install -y \ python3 \ make \ - g++ - -# Install dependencies for TDS driver (required for SAP ASE dynamic secrets) -RUN apt-get install -y \ + g++ \ unixodbc \ freetds-bin \ freetds-dev \ unixodbc-dev \ - libc-dev + libc-dev \ + && rm -rf /var/lib/apt/lists/* + +COPY package*.json ./ +RUN npm ci --omit=dev + +# Production stage +FROM node:22.22.0-trixie-slim +WORKDIR /app + +ENV npm_config_cache /home/node/.npm + +# Only runtime dependencies — no compilation happens here +RUN apt-get update && apt-get install -y \ + unixodbc \ + freetds-bin \ + libaio1t64 \ + unzip \ + wget \ + && rm -rf /var/lib/apt/lists/* RUN printf "[FreeTDS]\nDescription = FreeTDS Driver\nDriver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nSetup = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nFileUsage = 1\n" > /etc/odbcinst.ini @@ -54,7 +66,6 @@ RUN ARCH=$(dpkg --print-architecture) && \ ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5" && \ - apt-get update && apt-get install -y libaio1t64 unzip wget && \ ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1 && \ wget -q "$ORACLE_URL" && \ echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ @@ -64,7 +75,6 @@ RUN ARCH=$(dpkg --print-architecture) && \ ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32" && \ - apt-get update && apt-get install -y libaio1t64 unzip wget && \ ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1 && \ wget -q "$ORACLE_URL" && \ echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ @@ -72,13 +82,11 @@ RUN ARCH=$(dpkg --print-architecture) && \ rm "$ORACLE_ZIP"; \ fi && \ echo /opt/oracle/instantclient_23_26 > /etc/ld.so.conf.d/oracle-instantclient.conf && \ - ldconfig && \ - rm -rf /var/lib/apt/lists/* - -RUN npm ci --only-production && npm cache clean --force + ldconfig COPY --from=build /app . -RUN rm -rf ./bdd ./e2e-test +RUN rm -rf ./node_modules ./bdd ./e2e-test +COPY --from=prod-deps /app/node_modules ./node_modules # Install smbclient for Windows SMB operations RUN apt-get update && apt-get install -y smbclient From b95f8304eac238ea9e462c3f5819f39c7feb8798 Mon Sep 17 00:00:00 2001 From: Tre Dubrava Date: Tue, 14 Apr 2026 16:45:32 -0500 Subject: [PATCH 129/562] fix: address PR review feedback for CI speed improvements --- .github/workflows/check-be-ts-and-lint.yml | 16 +++++++++------- .github/workflows/check-fe-ts-and-lint.yml | 16 +++++++++------- .github/workflows/run-backend-bdd-tests.yml | 3 ++- .github/workflows/run-backend-tests.yml | 3 ++- backend/.gitignore | 1 + backend/tsconfig.json | 2 +- frontend/.gitignore | 1 + frontend/tsconfig.app.json | 2 +- 8 files changed, 26 insertions(+), 18 deletions(-) diff --git a/.github/workflows/check-be-ts-and-lint.yml b/.github/workflows/check-be-ts-and-lint.yml index aa10cdd7fba..0d17b98dfdf 100644 --- a/.github/workflows/check-be-ts-and-lint.yml +++ b/.github/workflows/check-be-ts-and-lint.yml @@ -19,6 +19,7 @@ jobs: - name: ☁️ Checkout source uses: actions/checkout@v4 - name: 🔧 Setup Node 22 + id: setup-node uses: actions/setup-node@v4 with: node-version: "22" @@ -27,19 +28,19 @@ jobs: uses: actions/cache@v4 with: path: backend/node_modules - key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} + key: backend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('backend/package-lock.json') }} + - name: Install dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci + working-directory: backend - name: 📦 Cache tsbuildinfo uses: actions/cache@v4 with: - path: backend/node_modules/.tmp/tsconfig.tsbuildinfo + path: backend/.cache/tsconfig.tsbuildinfo key: backend-tsbuildinfo-${{ github.ref }}-${{ github.sha }} restore-keys: | backend-tsbuildinfo-${{ github.ref }}- backend-tsbuildinfo- - - name: Install dependencies - if: steps.cache-node-modules.outputs.cache-hit != 'true' - run: npm ci - working-directory: backend - name: Run type check run: npm run type:check working-directory: backend @@ -53,6 +54,7 @@ jobs: - name: ☁️ Checkout source uses: actions/checkout@v4 - name: 🔧 Setup Node 22 + id: setup-node uses: actions/setup-node@v4 with: node-version: "22" @@ -61,7 +63,7 @@ jobs: uses: actions/cache@v4 with: path: backend/node_modules - key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} + key: backend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('backend/package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci diff --git a/.github/workflows/check-fe-ts-and-lint.yml b/.github/workflows/check-fe-ts-and-lint.yml index 9587987f2b1..6a5fcec8ce2 100644 --- a/.github/workflows/check-fe-ts-and-lint.yml +++ b/.github/workflows/check-fe-ts-and-lint.yml @@ -19,6 +19,7 @@ jobs: - name: ☁️ Checkout source uses: actions/checkout@v4 - name: 🔧 Setup Node 22 + id: setup-node uses: actions/setup-node@v4 with: node-version: "22" @@ -27,19 +28,19 @@ jobs: uses: actions/cache@v4 with: path: frontend/node_modules - key: frontend-node-modules-${{ hashFiles('frontend/package-lock.json') }} + key: frontend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('frontend/package-lock.json') }} + - name: 📦 Install dependencies + if: steps.cache-node-modules.outputs.cache-hit != 'true' + run: npm ci + working-directory: frontend - name: 📦 Cache tsbuildinfo uses: actions/cache@v4 with: - path: frontend/node_modules/.tmp/tsconfig.app.tsbuildinfo + path: frontend/.cache/tsconfig.app.tsbuildinfo key: frontend-tsbuildinfo-${{ github.ref }}-${{ github.sha }} restore-keys: | frontend-tsbuildinfo-${{ github.ref }}- frontend-tsbuildinfo- - - name: 📦 Install dependencies - if: steps.cache-node-modules.outputs.cache-hit != 'true' - run: npm ci - working-directory: frontend - name: 🏗️ Run Type check run: npm run type:check working-directory: frontend @@ -53,6 +54,7 @@ jobs: - name: ☁️ Checkout source uses: actions/checkout@v4 - name: 🔧 Setup Node 22 + id: setup-node uses: actions/setup-node@v4 with: node-version: "22" @@ -61,7 +63,7 @@ jobs: uses: actions/cache@v4 with: path: frontend/node_modules - key: frontend-node-modules-${{ hashFiles('frontend/package-lock.json') }} + key: frontend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('frontend/package-lock.json') }} - name: 📦 Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci diff --git a/.github/workflows/run-backend-bdd-tests.yml b/.github/workflows/run-backend-bdd-tests.yml index 27d2127e629..e5fffbf9e74 100644 --- a/.github/workflows/run-backend-bdd-tests.yml +++ b/.github/workflows/run-backend-bdd-tests.yml @@ -36,6 +36,7 @@ jobs: with: version: "2.14.2" - name: 🔧 Setup Node 22 + id: setup-node uses: actions/setup-node@v4 with: node-version: "22" @@ -55,7 +56,7 @@ jobs: uses: actions/cache@v4 with: path: backend/node_modules - key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} + key: backend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('backend/package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci diff --git a/.github/workflows/run-backend-tests.yml b/.github/workflows/run-backend-tests.yml index ec0cb8e2506..153aeeba4da 100644 --- a/.github/workflows/run-backend-tests.yml +++ b/.github/workflows/run-backend-tests.yml @@ -32,6 +32,7 @@ jobs: with: version: "2.14.2" - name: 🔧 Setup Node 22 + id: setup-node uses: actions/setup-node@v4 with: node-version: "22" @@ -40,7 +41,7 @@ jobs: uses: actions/cache@v4 with: path: backend/node_modules - key: backend-node-modules-${{ hashFiles('backend/package-lock.json') }} + key: backend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('backend/package-lock.json') }} - name: Install dependencies if: steps.cache-node-modules.outputs.cache-hit != 'true' run: npm ci diff --git a/backend/.gitignore b/backend/.gitignore index 00425e090d9..dbb2683fb46 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -1,3 +1,4 @@ dist +.cache /wallet diff --git a/backend/tsconfig.json b/backend/tsconfig.json index fffc1390faa..c79668ce7e0 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -23,7 +23,7 @@ "allowSyntheticDefaultImports": true, "skipLibCheck": true, "incremental": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.tsbuildinfo", + "tsBuildInfoFile": "./.cache/tsconfig.tsbuildinfo", "baseUrl": ".", "paths": { "@app/*": ["./src/*"], diff --git a/frontend/.gitignore b/frontend/.gitignore index f52343a92d1..10fab08e9dd 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -9,6 +9,7 @@ lerna-debug.log* node_modules dist +.cache dist-ssr *.local diff --git a/frontend/tsconfig.app.json b/frontend/tsconfig.app.json index 3dc42b9198f..1f6b29873ad 100644 --- a/frontend/tsconfig.app.json +++ b/frontend/tsconfig.app.json @@ -1,7 +1,7 @@ { "compilerOptions": { "incremental": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "tsBuildInfoFile": "./.cache/tsconfig.app.tsbuildinfo", "target": "ES2020", "useDefineForClassFields": true, "lib": ["ES2021", "DOM", "DOM.Iterable"], From 9b8d90971d552ce4f2c78069e62bbecf20098c8b Mon Sep 17 00:00:00 2001 From: Tre Dubrava Date: Wed, 15 Apr 2026 11:35:42 -0500 Subject: [PATCH 130/562] fix: address feedback --- .github/workflows/check-be-ts-and-lint.yml | 14 ++--- .github/workflows/check-fe-ts-and-lint.yml | 14 ++--- .github/workflows/run-backend-tests.yml | 8 +-- Dockerfile.fips.standalone-infisical | 62 +++++++++++----------- Dockerfile.standalone-infisical | 50 +++++++++-------- backend/Dockerfile | 57 ++++++++++---------- backend/Dockerfile.dev | 40 ++++++-------- backend/Dockerfile.dev.fips | 42 ++++++--------- 8 files changed, 136 insertions(+), 151 deletions(-) diff --git a/.github/workflows/check-be-ts-and-lint.yml b/.github/workflows/check-be-ts-and-lint.yml index 0d17b98dfdf..cd128d11b84 100644 --- a/.github/workflows/check-be-ts-and-lint.yml +++ b/.github/workflows/check-be-ts-and-lint.yml @@ -17,15 +17,15 @@ jobs: steps: - name: ☁️ Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: 🔧 Setup Node 22 id: setup-node - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: "22" - name: 📦 Cache node_modules id: cache-node-modules - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: backend/node_modules key: backend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('backend/package-lock.json') }} @@ -34,7 +34,7 @@ jobs: run: npm ci working-directory: backend - name: 📦 Cache tsbuildinfo - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: backend/.cache/tsconfig.tsbuildinfo key: backend-tsbuildinfo-${{ github.ref }}-${{ github.sha }} @@ -52,15 +52,15 @@ jobs: steps: - name: ☁️ Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: 🔧 Setup Node 22 id: setup-node - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: "22" - name: 📦 Cache node_modules id: cache-node-modules - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: backend/node_modules key: backend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('backend/package-lock.json') }} diff --git a/.github/workflows/check-fe-ts-and-lint.yml b/.github/workflows/check-fe-ts-and-lint.yml index 6a5fcec8ce2..f568772c134 100644 --- a/.github/workflows/check-fe-ts-and-lint.yml +++ b/.github/workflows/check-fe-ts-and-lint.yml @@ -17,15 +17,15 @@ jobs: steps: - name: ☁️ Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: 🔧 Setup Node 22 id: setup-node - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: "22" - name: 📦 Cache node_modules id: cache-node-modules - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: frontend/node_modules key: frontend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('frontend/package-lock.json') }} @@ -34,7 +34,7 @@ jobs: run: npm ci working-directory: frontend - name: 📦 Cache tsbuildinfo - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: frontend/.cache/tsconfig.app.tsbuildinfo key: frontend-tsbuildinfo-${{ github.ref }}-${{ github.sha }} @@ -52,15 +52,15 @@ jobs: steps: - name: ☁️ Checkout source - uses: actions/checkout@v4 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - name: 🔧 Setup Node 22 id: setup-node - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: "22" - name: 📦 Cache node_modules id: cache-node-modules - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: frontend/node_modules key: frontend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('frontend/package-lock.json') }} diff --git a/.github/workflows/run-backend-tests.yml b/.github/workflows/run-backend-tests.yml index 153aeeba4da..8f306794dc5 100644 --- a/.github/workflows/run-backend-tests.yml +++ b/.github/workflows/run-backend-tests.yml @@ -25,20 +25,20 @@ jobs: docker system prune -af - name: ☁️ Checkout source - uses: actions/checkout@v4 - - uses: KengoTODA/actions-setup-docker-compose@v1 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - uses: KengoTODA/actions-setup-docker-compose@477353946803dd64eaa44008b865b6bfc88cab4e # v1.2.4 if: ${{ env.ACT }} name: Install `docker compose` for local simulations with: version: "2.14.2" - name: 🔧 Setup Node 22 id: setup-node - uses: actions/setup-node@v4 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: "22" - name: 📦 Cache node_modules id: cache-node-modules - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: backend/node_modules key: backend-node-modules-${{ runner.os }}-node${{ steps.setup-node.outputs.node-version }}-${{ hashFiles('backend/package-lock.json') }} diff --git a/Dockerfile.fips.standalone-infisical b/Dockerfile.fips.standalone-infisical index 1d617355b5f..cbdc8ad72b6 100644 --- a/Dockerfile.fips.standalone-infisical +++ b/Dockerfile.fips.standalone-infisical @@ -55,6 +55,27 @@ USER non-root-user ## ## BACKEND ## + +# Oracle Instant Client (parallel stage — downloads while other stages build) +FROM debian:trixie-slim AS oracle +RUN apt-get update && apt-get install -y unzip wget ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +RUN ARCH=$(dpkg --print-architecture) && \ + if [ "$ARCH" = "amd64" ]; then \ + ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ + EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5"; \ + elif [ "$ARCH" = "arm64" ]; then \ + ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ + EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32"; \ + fi && \ + ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ + wget -q "$ORACLE_URL" && \ + echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ + mkdir -p /opt/oracle && \ + unzip "$ORACLE_ZIP" -d /opt/oracle && \ + rm "$ORACLE_ZIP" + FROM base AS backend-build ENV ChrystokiConfigurationPath=/usr/safenet/lunaclient/ @@ -117,7 +138,7 @@ RUN mkdir frontend-build # Production stage FROM base AS production -# Install necessary packages including ODBC +# Install all required runtime packages RUN apt-get update && apt-get install -y \ build-essential \ autoconf \ @@ -137,40 +158,27 @@ RUN apt-get update && apt-get install -y \ freetds-dev \ freetds-bin \ tdsodbc \ + libaio1t64 \ + smbclient \ openssh-client \ + && curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash \ + && apt-get update && apt-get install -y infisical=0.43.47 \ && rm -rf /var/lib/apt/lists/* -# Install Oracle Instant Client for OracleDB mTLS wallet support +# Copy Oracle Instant Client from parallel stage +COPY --from=oracle /opt/oracle /opt/oracle RUN ARCH=$(dpkg --print-architecture) && \ if [ "$ARCH" = "amd64" ]; then \ - ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ - ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ - EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5" && \ - apt-get update && apt-get install -y libaio1t64 unzip && \ - ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1 && \ - wget -q "$ORACLE_URL" && \ - echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ - unzip "$ORACLE_ZIP" -d /opt/oracle && \ - rm "$ORACLE_ZIP"; \ + ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1; \ elif [ "$ARCH" = "arm64" ]; then \ - ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ - ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ - EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32" && \ - apt-get update && apt-get install -y libaio1t64 unzip && \ - ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1 && \ - wget -q "$ORACLE_URL" && \ - echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ - unzip "$ORACLE_ZIP" -d /opt/oracle && \ - rm "$ORACLE_ZIP"; \ + ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1; \ fi && \ echo /opt/oracle/instantclient_23_26 > /etc/ld.so.conf.d/oracle-instantclient.conf && \ - ldconfig && \ - rm -rf /var/lib/apt/lists/* + ldconfig # Configure ODBC in production RUN printf "[FreeTDS]\nDescription = FreeTDS Driver\nDriver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nSetup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so\nFileUsage = 1\n" > /etc/odbcinst.ini - WORKDIR /openssl-build RUN wget https://www.openssl.org/source/openssl-3.1.2.tar.gz \ && tar -xf openssl-3.1.2.tar.gz \ @@ -183,9 +191,6 @@ RUN wget https://www.openssl.org/source/openssl-3.1.2.tar.gz \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* -# Install smbclient for Windows SMB operations -RUN apt-get update && apt-get install -y smbclient && rm -rf /var/lib/apt/lists/* - # Build OpenSSL 3.5.6 for PQC (ML-DSA / SLH-DSA) certificate support. # Installed to /opt/openssl-pqc so it does not conflict with the FIPS OpenSSL above. WORKDIR /tmp/openssl-pqc-build @@ -199,11 +204,6 @@ RUN wget -q https://github.com/openssl/openssl/releases/download/openssl-3.5.6/o && cd / \ && rm -rf /tmp/openssl-pqc-build -# Install Infisical CLI -RUN curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash \ - && apt-get update && apt-get install -y infisical=0.43.47 \ - && rm -rf /var/lib/apt/lists/* - RUN groupadd -r -g 1001 nodejs && useradd -r -u 1001 -g nodejs non-root-user # Give non-root-user permission to update SSL certs diff --git a/Dockerfile.standalone-infisical b/Dockerfile.standalone-infisical index b9b29aa5355..e822265bd4c 100644 --- a/Dockerfile.standalone-infisical +++ b/Dockerfile.standalone-infisical @@ -57,6 +57,27 @@ USER non-root-user ## ## BACKEND ## + +# Oracle Instant Client (parallel stage — downloads while other stages build) +FROM debian:trixie-slim AS oracle +RUN apt-get update && apt-get install -y unzip wget ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +RUN ARCH=$(dpkg --print-architecture) && \ + if [ "$ARCH" = "amd64" ]; then \ + ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ + EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5"; \ + elif [ "$ARCH" = "arm64" ]; then \ + ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ + EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32"; \ + fi && \ + ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ + wget -q "$ORACLE_URL" && \ + echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ + mkdir -p /opt/oracle && \ + unzip "$ORACLE_ZIP" -d /opt/oracle && \ + rm "$ORACLE_ZIP" + FROM base AS backend-build ENV ChrystokiConfigurationPath=/usr/safenet/lunaclient/ @@ -144,30 +165,18 @@ RUN apt-get update && apt-get install -y \ perl \ openssh-client \ libaio1t64 \ - unzip \ smbclient \ + && curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash \ + && apt-get update && apt-get install -y infisical=0.43.47 \ && rm -rf /var/lib/apt/lists/* -# Install Oracle Instant Client for OracleDB mTLS wallet support +# Copy Oracle Instant Client from parallel stage +COPY --from=oracle /opt/oracle /opt/oracle RUN ARCH=$(dpkg --print-architecture) && \ if [ "$ARCH" = "amd64" ]; then \ - ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ - ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ - EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5" && \ - ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1 && \ - wget -q "$ORACLE_URL" && \ - echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ - unzip "$ORACLE_ZIP" -d /opt/oracle && \ - rm "$ORACLE_ZIP"; \ + ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1; \ elif [ "$ARCH" = "arm64" ]; then \ - ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ - ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ - EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32" && \ - ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1 && \ - wget -q "$ORACLE_URL" && \ - echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ - unzip "$ORACLE_ZIP" -d /opt/oracle && \ - rm "$ORACLE_ZIP"; \ + ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1; \ fi && \ echo /opt/oracle/instantclient_23_26 > /etc/ld.so.conf.d/oracle-instantclient.conf && \ ldconfig @@ -185,11 +194,6 @@ RUN wget -q https://github.com/openssl/openssl/releases/download/openssl-3.5.6/o && cd / \ && rm -rf /tmp/openssl-build -# Install Infisical CLI -RUN curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash \ - && apt-get update && apt-get install -y infisical=0.43.47 \ - && rm -rf /var/lib/apt/lists/* - WORKDIR / # Configure ODBC in production diff --git a/backend/Dockerfile b/backend/Dockerfile index 992375e8ca6..4feea997d8c 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -23,6 +23,26 @@ RUN npm ci COPY . . RUN npm run build +# Oracle Instant Client (parallel stage — downloads while other stages build) +FROM debian:trixie-slim AS oracle +RUN apt-get update && apt-get install -y unzip wget ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +RUN ARCH=$(dpkg --print-architecture) && \ + if [ "$ARCH" = "amd64" ]; then \ + ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ + EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5"; \ + elif [ "$ARCH" = "arm64" ]; then \ + ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ + EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32"; \ + fi && \ + ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ + wget -q "$ORACLE_URL" && \ + echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ + mkdir -p /opt/oracle && \ + unzip "$ORACLE_ZIP" -d /opt/oracle && \ + rm "$ORACLE_ZIP" + # Production dependencies (runs in parallel with build) FROM node:22.22.0-trixie-slim AS prod-deps @@ -54,32 +74,23 @@ RUN apt-get update && apt-get install -y \ unixodbc \ freetds-bin \ libaio1t64 \ - unzip \ - wget \ + smbclient \ + curl \ + bash \ + git \ + && curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash \ + && apt-get update && apt-get install -y infisical=0.43.14 \ && rm -rf /var/lib/apt/lists/* RUN printf "[FreeTDS]\nDescription = FreeTDS Driver\nDriver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nSetup = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nFileUsage = 1\n" > /etc/odbcinst.ini -# Install Oracle Instant Client for OracleDB mTLS wallet support +# Copy Oracle Instant Client from parallel stage +COPY --from=oracle /opt/oracle /opt/oracle RUN ARCH=$(dpkg --print-architecture) && \ if [ "$ARCH" = "amd64" ]; then \ - ORACLE_ZIP="instantclient-basic-linux.x64-23.26.0.0.0.zip" && \ - ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ - EXPECTED_SHA="d6c79cbcf0ff209363e779855c690d4fc730aed847e9198a2c439bcf34760af5" && \ - ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1 && \ - wget -q "$ORACLE_URL" && \ - echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ - unzip "$ORACLE_ZIP" -d /opt/oracle && \ - rm "$ORACLE_ZIP"; \ + ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1; \ elif [ "$ARCH" = "arm64" ]; then \ - ORACLE_ZIP="instantclient-basic-linux.arm64-23.26.0.0.0.zip" && \ - ORACLE_URL="https://download.oracle.com/otn_software/linux/instantclient/2326000/${ORACLE_ZIP}" && \ - EXPECTED_SHA="9c9a32051e97f087016fb334b7ad5c0aea8511ca8363afd8e0dc6ec4fc515c32" && \ - ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1 && \ - wget -q "$ORACLE_URL" && \ - echo "$EXPECTED_SHA $ORACLE_ZIP" | sha256sum -c - && \ - unzip "$ORACLE_ZIP" -d /opt/oracle && \ - rm "$ORACLE_ZIP"; \ + ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1; \ fi && \ echo /opt/oracle/instantclient_23_26 > /etc/ld.so.conf.d/oracle-instantclient.conf && \ ldconfig @@ -88,14 +99,6 @@ COPY --from=build /app . RUN rm -rf ./node_modules ./bdd ./e2e-test COPY --from=prod-deps /app/node_modules ./node_modules -# Install smbclient for Windows SMB operations -RUN apt-get update && apt-get install -y smbclient - -# Install Infisical CLI -RUN apt-get update && apt-get install -y curl bash && \ - curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash && \ - apt-get update && apt-get install -y infisical=0.43.14 git - HEALTHCHECK --interval=10s --timeout=3s --start-period=10s \ CMD node healthcheck.js diff --git a/backend/Dockerfile.dev b/backend/Dockerfile.dev index a072ce5a9f8..67c1e762a6f 100644 --- a/backend/Dockerfile.dev +++ b/backend/Dockerfile.dev @@ -7,7 +7,7 @@ ARG SOFTHSM2_VERSION=2.5.0 ENV SOFTHSM2_VERSION=${SOFTHSM2_VERSION} \ SOFTHSM2_SOURCES=/tmp/softhsm2 -# Install build dependencies including python3 (required for pkcs11js and partially TDS driver) +# Install all build and runtime dependencies RUN apt-get update && apt-get install -y \ build-essential \ autoconf \ @@ -24,26 +24,27 @@ RUN apt-get update && apt-get install -y \ wget \ perl \ pkg-config \ - unzip - -# Install libaio (required for Oracle Instant Client) - architecture-specific for Debian Trixie + unzip \ + libaio1t64 \ + unixodbc \ + unixodbc-dev \ + freetds-dev \ + freetds-bin \ + tdsodbc \ + opensc \ + smbclient \ + && curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash \ + && apt-get update && apt-get install -y infisical=0.43.14 \ + && rm -rf /var/lib/apt/lists/* + +# Create libaio symlink for Oracle Instant Client RUN ARCH=$(dpkg --print-architecture) && \ if [ "$ARCH" = "arm64" ]; then \ - apt-get install -y libaio1t64 && \ ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1; \ else \ - apt-get install -y libaio1t64 && \ ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1; \ fi -# Install dependencies for TDS driver (required for SAP ASE dynamic secrets) -RUN apt-get install -y \ - unixodbc \ - unixodbc-dev \ - freetds-dev \ - freetds-bin \ - tdsodbc - RUN printf "[FreeTDS]\nDescription = FreeTDS Driver\nDriver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nSetup = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nFileUsage = 1\n" > /etc/odbcinst.ini # Build and install SoftHSM2 @@ -59,9 +60,6 @@ RUN git checkout ${SOFTHSM2_VERSION} -b ${SOFTHSM2_VERSION} \ WORKDIR /root RUN rm -fr ${SOFTHSM2_SOURCES} -# Install pkcs11-tool -RUN apt-get install -y opensc - # Install Oracle Instant Client for OracleDB mTLS (Wallet) support RUN mkdir -p /opt/oracle && \ ARCH=$(dpkg --print-architecture) && \ @@ -92,14 +90,6 @@ RUN wget -q https://github.com/openssl/openssl/releases/download/openssl-3.5.6/o # ? App setup -# Install smbclient for Windows SMB operations -RUN apt-get update && apt-get install -y smbclient - -# Install Infisical CLI -RUN curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash && \ - apt-get update && \ - apt-get install -y infisical=0.43.14 - WORKDIR /app COPY package.json package.json diff --git a/backend/Dockerfile.dev.fips b/backend/Dockerfile.dev.fips index 911799f17e8..c119abdb233 100644 --- a/backend/Dockerfile.dev.fips +++ b/backend/Dockerfile.dev.fips @@ -7,7 +7,7 @@ ARG SOFTHSM2_VERSION=2.5.0 ENV SOFTHSM2_VERSION=${SOFTHSM2_VERSION} \ SOFTHSM2_SOURCES=/tmp/softhsm2 -# Install build dependencies including python3 (required for pkcs11js and partially TDS driver) +# Install all build and runtime dependencies RUN apt-get update && apt-get install -y \ build-essential \ autoconf \ @@ -23,25 +23,24 @@ RUN apt-get update && apt-get install -y \ pkg-config \ perl \ wget \ - unzip - -# Install libaio (required for Oracle Instant Client) - architecture-specific for Debian Trixie -RUN ARCH=$(dpkg --print-architecture) && \ - if [ "$ARCH" = "arm64" ]; then \ - apt-get install -y libaio1t64 && \ - ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1; \ - else \ - apt-get install -y libaio1t64 && \ - ln -sf /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1; \ - fi - -# Install dependencies for TDS driver (required for SAP ASE dynamic secrets) -RUN apt-get install -y \ + unzip \ + libaio1t64 \ unixodbc \ unixodbc-dev \ freetds-dev \ freetds-bin \ - tdsodbc + tdsodbc \ + opensc \ + smbclient \ + && curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash \ + && apt-get update && apt-get install -y infisical=0.43.14 \ + && rm -rf /var/lib/apt/lists/* + +# Create libaio symlink for Oracle Instant Client +RUN ARCH=$(dpkg --print-architecture) && \ + if [ "$ARCH" = "arm64" ]; then \ + ln -sf /lib/aarch64-linux-gnu/libaio.so.1t64 /lib/aarch64-linux-gnu/libaio.so.1; \ + fi RUN printf "[FreeTDS]\nDescription = FreeTDS Driver\nDriver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nSetup = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so\nFileUsage = 1\n" > /etc/odbcinst.ini @@ -58,9 +57,6 @@ RUN git checkout ${SOFTHSM2_VERSION} -b ${SOFTHSM2_VERSION} \ WORKDIR /root RUN rm -fr ${SOFTHSM2_SOURCES} -# Install pkcs11-tool -RUN apt-get install -y opensc - # Install Oracle Instant Client for OracleDB mTLS (Wallet) support RUN mkdir -p /opt/oracle && \ ARCH=$(dpkg --print-architecture) && \ @@ -103,14 +99,6 @@ RUN wget -q https://github.com/openssl/openssl/releases/download/openssl-3.5.6/o # ? App setup -# Install smbclient for Windows SMB operations -RUN apt-get update && apt-get install -y smbclient - -# Install Infisical CLI -RUN curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | bash && \ - apt-get update && \ - apt-get install -y infisical=0.43.14 - WORKDIR /app COPY package.json package.json From 2d027bbcdf2e6baca80bb3c2fb4f3d113497c521 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 12:47:18 -0400 Subject: [PATCH 131/562] refactor: remove confirmation dialog from re-enroll, remove expired token state Re-enrollment is non-destructive (old gateway keeps running), so the confirmation dialog is unnecessary. The modal now generates the token immediately and shows the CLI command. Expired tokens show as Pending instead of a separate Expired state. --- frontend/src/hooks/api/gateways/queries.tsx | 6 +- .../components/GatewayTab/GatewayTab.tsx | 22 +-- .../components/ReEnrollGatewayModal.tsx | 142 +++++++----------- 3 files changed, 55 insertions(+), 115 deletions(-) diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index 2e2f5dac4c0..9015f2bb171 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -48,20 +48,18 @@ export const gatewaysQueryKeys = { ...g, isV1: true as const, isPending: false as const, - isExpired: false as const, hasReEnrollToken: false as const })), ...dataV2.map((g) => { const hasHeartbeat = !!g.heartbeat; - const isPending = g.enrollmentTokenStatus === "pending" && !hasHeartbeat; + const hasToken = g.enrollmentTokenStatus === "pending" || g.enrollmentTokenStatus === "expired"; + const isPending = hasToken && !hasHeartbeat; const hasReEnrollToken = g.enrollmentTokenStatus === "pending" && hasHeartbeat; - const isExpired = g.enrollmentTokenStatus === "expired" && !hasHeartbeat; return { ...g, isV1: false as const, isPending, - isExpired, hasReEnrollToken }; }) diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 77f0bacb0d7..b30d5c49c92 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -59,24 +59,12 @@ import { ReEnrollGatewayModal } from "./components/ReEnrollGatewayModal"; const GatewayHealthStatus = ({ heartbeat, lastHealthCheckStatus, - isPending, - isExpired + isPending }: { heartbeat?: string | null; lastHealthCheckStatus?: GatewayHealthCheckStatus | null; isPending?: boolean; - isExpired?: boolean; }) => { - if (isExpired) { - return ( - - - Expired - - - ); - } - if (isPending) { return ( @@ -267,13 +255,6 @@ export const GatewayTab = withPermission(
{el.name} {(() => { - if ("isExpired" in el && el.isExpired) { - return ( - - Expired - - ); - } if (el.isPending) { return ( @@ -317,7 +298,6 @@ export const GatewayTab = withPermission( "lastHealthCheckStatus" in el ? el.lastHealthCheckStatus : null } isPending={el.isPending} - isExpired={"isExpired" in el ? el.isExpired : false} /> diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx index a37f98f0c89..6c10cc8d13e 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/ReEnrollGatewayModal.tsx @@ -1,11 +1,10 @@ -import { useMemo, useState } from "react"; +import { useEffect, useMemo, useState } from "react"; import { faCopy } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { createNotification } from "@app/components/notifications"; import { Button, - FormControl, FormLabel, IconButton, Input, @@ -26,24 +25,27 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop const portSuffix = port && port !== "80" ? `:${port}` : ""; const siteURL = `${protocol}//${hostname}${portSuffix}`; - const [step, setStep] = useState<"confirm" | "command">("confirm"); const [enrollmentToken, setEnrollmentToken] = useState(""); - const [confirmText, setConfirmText] = useState(""); + const [isLoading, setIsLoading] = useState(false); - const { mutateAsync: configureTokenAuth, isPending: isReEnrolling } = - useConfigureGatewayTokenAuth(); + const { mutateAsync: configureTokenAuth } = useConfigureGatewayTokenAuth(); - const handleReEnroll = async () => { - if (!gatewayData || confirmText !== "confirm") return; + useEffect(() => { + if (!isOpen || !gatewayData) return; - try { - const result = await configureTokenAuth({ gatewayId: gatewayData.id }); - setEnrollmentToken(result.token); - setStep("command"); - } catch { - createNotification({ type: "error", text: "Failed to re-enroll gateway" }); - } - }; + setIsLoading(true); + configureTokenAuth({ gatewayId: gatewayData.id }) + .then((result) => { + setEnrollmentToken(result.token); + }) + .catch(() => { + createNotification({ type: "error", text: "Failed to generate enrollment token" }); + onOpenChange(false); + }) + .finally(() => { + setIsLoading(false); + }); + }, [isOpen, gatewayData?.id]); const command = useMemo(() => { const gatewayName = gatewayData?.name ?? ""; @@ -52,9 +54,7 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop const handleClose = (open: boolean) => { if (!open) { - setStep("confirm"); setEnrollmentToken(""); - setConfirmText(""); } onOpenChange(open); }; @@ -63,83 +63,45 @@ export const ReEnrollGatewayModal = ({ isOpen, onOpenChange, gatewayData }: Prop return ( - {step === "confirm" && ( - - + + +
+
-
- } - > -
{ - evt.preventDefault(); - if (confirmText === "confirm") handleReEnroll(); - }} - > - - Type confirm to perform this action -
- } - className="mb-0" - > - setConfirmText(e.target.value)} - placeholder="Type confirm here" - /> - - - - )} - {step === "command" && ( - -

- Run the following command on the machine where you want to deploy the gateway. The token - expires in 1 hour and can only be used once. -

- -
- - { - navigator.clipboard.writeText(command); - createNotification({ text: "Command copied to clipboard", type: "info" }); - }} - className="w-10" - > - - -
-
- - - -
-
- )} + + )} + ); }; From 6c289d267e8247b718703ef68d5e439beab3b51d Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 12:57:02 -0400 Subject: [PATCH 132/562] refactor: start tokenVersion at 0 instead of 1 --- .../db/migrations/20260413000001_gateway-enrollment-tokens.ts | 2 +- backend/src/db/schemas/gateways-v2.ts | 2 +- backend/src/ee/services/gateway-v2/gateway-v2-service.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts index d182def0ce3..e3913b2e4b7 100644 --- a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts +++ b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts @@ -7,7 +7,7 @@ export async function up(knex: Knex): Promise { // Make identityId nullable and add tokenVersion to support enrollment-token-based gateways await knex.schema.alterTable(TableName.GatewayV2, (t) => { t.uuid("identityId").nullable().alter(); - t.integer("tokenVersion").notNullable().defaultTo(1); + t.integer("tokenVersion").notNullable().defaultTo(0); }); if (!(await knex.schema.hasTable(TableName.GatewayEnrollmentTokens))) { diff --git a/backend/src/db/schemas/gateways-v2.ts b/backend/src/db/schemas/gateways-v2.ts index cd1d69fd138..aa286fe5875 100644 --- a/backend/src/db/schemas/gateways-v2.ts +++ b/backend/src/db/schemas/gateways-v2.ts @@ -21,7 +21,7 @@ export const GatewaysV2Schema = z.object({ encryptedPamSessionKey: zodBuffer.nullable().optional(), healthAlertedAt: z.date().nullable().optional(), lastHealthCheckStatus: z.string().nullable().optional(), - tokenVersion: z.number().default(1) + tokenVersion: z.number().default(0) }); export type TGatewaysV2 = z.infer; diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index c59e82f736c..13e39af7cb6 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1408,7 +1408,7 @@ export const gatewayV2ServiceFactory = ({ gatewayId: gateway.id, orgId, authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN, - tokenVersion: gateway.tokenVersion ?? 1 + tokenVersion: gateway.tokenVersion }, appCfg.AUTH_SECRET ); From 7ff6495856f73c8743fb791886480745c8ece5a4 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 13:05:13 -0400 Subject: [PATCH 133/562] refactor: remove redundant duplicate name pre-check in createGateway --- backend/src/ee/services/gateway-v2/gateway-v2-service.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index 13e39af7cb6..cf4063c3b3e 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1223,11 +1223,6 @@ export const gatewayV2ServiceFactory = ({ OrgPermissionSubjects.Gateway ); - const existingGateway = await gatewayV2DAL.find({ orgId, name }); - if (existingGateway.length > 0) { - throw new BadRequestError({ message: `A gateway named "${name}" already exists` }); - } - try { const gateway = await gatewayV2DAL.create({ orgId, name }); return gateway; From 959c2e371d82715f9b9b6115f8cd130ee16f095d Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 13:11:49 -0400 Subject: [PATCH 134/562] chore: remove accidentally staged worktree --- .claude/worktrees/pam-ai-session-insights-v3 | 1 - 1 file changed, 1 deletion(-) delete mode 160000 .claude/worktrees/pam-ai-session-insights-v3 diff --git a/.claude/worktrees/pam-ai-session-insights-v3 b/.claude/worktrees/pam-ai-session-insights-v3 deleted file mode 160000 index 2faf2381201..00000000000 --- a/.claude/worktrees/pam-ai-session-insights-v3 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2faf23812015e52a74d92c243b6758ac54e72e83 From 9cdae2529e024598c322cc16402f0f7a8ef0efb8 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 15 Apr 2026 14:23:37 -0300 Subject: [PATCH 135/562] Address PR comments --- ...d-shared-to-certificate-inventory-views.ts | 47 + .../db/schemas/certificate-inventory-views.ts | 1 + .../ee/services/audit-log/audit-log-types.ts | 7 + .../ee/services/permission/default-roles.ts | 19 + .../services/permission/project-permission.ts | 10 + backend/src/lib/api-docs/constants.ts | 3 +- .../v1/certificate-inventory-view-router.ts | 58 +- .../src/server/routes/v1/project-router.ts | 15 +- .../certificate-inventory-view-dal.ts | 5 +- .../certificate-inventory-view-service.ts | 90 +- .../certificate-inventory-view-types.ts | 6 +- .../services/certificate/certificate-dal.ts | 68 +- .../src/services/project/project-service.ts | 14 +- backend/src/services/project/project-types.ts | 5 +- .../v3/generic/Dropdown/Dropdown.tsx | 2 +- .../context/ProjectPermissionContext/types.ts | 2 + .../certificateInventoryViews/mutations.tsx | 21 +- .../api/certificateInventoryViews/types.ts | 10 +- .../src/hooks/api/certificates/mutations.tsx | 15 + .../src/hooks/api/certificates/queries.tsx | 8 +- frontend/src/hooks/api/projects/queries.tsx | 8 +- .../src/hooks/api/projects/query-keys.tsx | 7 +- .../components/ActiveFilterChips.tsx | 22 +- .../components/CertificatesSection.tsx | 107 +- .../components/CertificatesTable.tsx | 1057 +++++++++-------- .../components/ColumnVisibilityToggle.tsx | 38 +- .../components/FilterBuilder.tsx | 11 +- .../components/SaveViewModal.tsx | 16 +- .../components/ViewsDropdown.tsx | 136 ++- .../components/inventory-types.ts | 16 +- .../DashboardPage/DashboardPage.tsx | 4 +- .../components/ActivityTrend.tsx | 31 +- .../components/DistributionCharts.tsx | 11 +- .../components/ExpirationTimeline.tsx | 7 +- .../DashboardPage/components/KpiCards.tsx | 4 +- .../components/ValidityReadinessSection.tsx | 27 +- .../DashboardPage/components/chart-theme.tsx | 21 +- .../ProjectRoleModifySection.utils.tsx | 23 + 38 files changed, 1190 insertions(+), 762 deletions(-) create mode 100644 backend/src/db/migrations/20260415122043_add-shared-to-certificate-inventory-views.ts diff --git a/backend/src/db/migrations/20260415122043_add-shared-to-certificate-inventory-views.ts b/backend/src/db/migrations/20260415122043_add-shared-to-certificate-inventory-views.ts new file mode 100644 index 00000000000..3373a9533d3 --- /dev/null +++ b/backend/src/db/migrations/20260415122043_add-shared-to-certificate-inventory-views.ts @@ -0,0 +1,47 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; + +export async function up(knex: Knex): Promise { + const hasTable = await knex.schema.hasTable(TableName.CertificateInventoryView); + if (!hasTable) return; + + const hasColumn = await knex.schema.hasColumn(TableName.CertificateInventoryView, "isShared"); + if (hasColumn) return; + + await knex.schema.alterTable(TableName.CertificateInventoryView, (t) => { + t.boolean("isShared").notNullable().defaultTo(false); + }); + + await knex.schema.alterTable(TableName.CertificateInventoryView, (t) => { + t.dropUnique(["projectId", "name", "createdByUserId"]); + }); + + await knex.raw( + `CREATE UNIQUE INDEX "cert_inv_view_personal_unique" ON "${TableName.CertificateInventoryView}" ("projectId", "name", "createdByUserId") WHERE "isShared" = false` + ); + + // Shared views: name must be unique per project + await knex.raw( + `CREATE UNIQUE INDEX "cert_inv_view_shared_unique" ON "${TableName.CertificateInventoryView}" ("projectId", "name") WHERE "isShared" = true` + ); +} + +export async function down(knex: Knex): Promise { + const hasTable = await knex.schema.hasTable(TableName.CertificateInventoryView); + if (!hasTable) return; + + const hasColumn = await knex.schema.hasColumn(TableName.CertificateInventoryView, "isShared"); + if (!hasColumn) return; + + await knex.raw(`DROP INDEX IF EXISTS "cert_inv_view_personal_unique"`); + await knex.raw(`DROP INDEX IF EXISTS "cert_inv_view_shared_unique"`); + + await knex.schema.alterTable(TableName.CertificateInventoryView, (t) => { + t.unique(["projectId", "name", "createdByUserId"]); + }); + + await knex.schema.alterTable(TableName.CertificateInventoryView, (t) => { + t.dropColumn("isShared"); + }); +} diff --git a/backend/src/db/schemas/certificate-inventory-views.ts b/backend/src/db/schemas/certificate-inventory-views.ts index 78b54e1d146..9f7790fba48 100644 --- a/backend/src/db/schemas/certificate-inventory-views.ts +++ b/backend/src/db/schemas/certificate-inventory-views.ts @@ -14,6 +14,7 @@ export const CertificateInventoryViewsSchema = z.object({ filters: z.unknown(), columns: z.unknown().nullable().optional(), createdByUserId: z.string().uuid().nullable().optional(), + isShared: z.boolean().default(false), createdAt: z.date(), updatedAt: z.date() }); diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index d84b5039e63..ab86e0b84a4 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -3016,6 +3016,9 @@ interface CreateCertificateInventoryView { metadata: { viewId: string; name: string; + filters?: Record; + columns?: string[]; + isShared?: boolean; }; } @@ -3024,6 +3027,9 @@ interface UpdateCertificateInventoryView { metadata: { viewId: string; name?: string; + filters?: Record; + columns?: string[]; + isShared?: boolean; }; } @@ -3031,6 +3037,7 @@ interface DeleteCertificateInventoryView { type: EventType.DELETE_CERTIFICATE_INVENTORY_VIEW; metadata: { viewId: string; + name: string; }; } diff --git a/backend/src/ee/services/permission/default-roles.ts b/backend/src/ee/services/permission/default-roles.ts index 797c569af32..199c40ddaeb 100644 --- a/backend/src/ee/services/permission/default-roles.ts +++ b/backend/src/ee/services/permission/default-roles.ts @@ -58,6 +58,7 @@ const buildAdminPermissionRules = () => { ProjectPermissionSub.IpAllowList, ProjectPermissionSub.PkiAlerts, ProjectPermissionSub.PkiCollections, + ProjectPermissionSub.CertificateInventoryViews, ProjectPermissionSub.SshCertificateAuthorities, ProjectPermissionSub.SshCertificates, ProjectPermissionSub.SshCertificateTemplates, @@ -610,6 +611,15 @@ const buildMemberPermissionRules = () => { can([ProjectPermissionActions.Read], ProjectPermissionSub.PkiAlerts); can([ProjectPermissionActions.Read], ProjectPermissionSub.PkiCollections); + can( + [ + ProjectPermissionActions.Read, + ProjectPermissionActions.Create, + ProjectPermissionActions.Edit, + ProjectPermissionActions.Delete + ], + ProjectPermissionSub.CertificateInventoryViews + ); can([ProjectPermissionActions.Read], ProjectPermissionSub.SshCertificates); can([ProjectPermissionActions.Create], ProjectPermissionSub.SshCertificates); @@ -743,6 +753,15 @@ const buildViewerPermissionRules = () => { can(ProjectPermissionActions.Read, ProjectPermissionSub.IpAllowList); can(ProjectPermissionCertificateAuthorityActions.Read, ProjectPermissionSub.CertificateAuthorities); can(ProjectPermissionCertificateActions.Read, ProjectPermissionSub.Certificates); + can( + [ + ProjectPermissionActions.Read, + ProjectPermissionActions.Create, + ProjectPermissionActions.Edit, + ProjectPermissionActions.Delete + ], + ProjectPermissionSub.CertificateInventoryViews + ); can(ProjectPermissionPkiTemplateActions.Read, ProjectPermissionSub.CertificateTemplates); can(ProjectPermissionCertificatePolicyActions.Read, ProjectPermissionSub.CertificatePolicies); can(ProjectPermissionCmekActions.Read, ProjectPermissionSub.Cmek); diff --git a/backend/src/ee/services/permission/project-permission.ts b/backend/src/ee/services/permission/project-permission.ts index b9a54294ea6..8abff74d24b 100644 --- a/backend/src/ee/services/permission/project-permission.ts +++ b/backend/src/ee/services/permission/project-permission.ts @@ -337,6 +337,7 @@ export enum ProjectPermissionSub { PkiSubscribers = "pki-subscribers", PkiAlerts = "pki-alerts", PkiCollections = "pki-collections", + CertificateInventoryViews = "certificate-inventory-views", Kms = "kms", Cmek = "cmek", SecretSyncs = "secret-syncs", @@ -635,6 +636,7 @@ export type ProjectPermissionSet = | [ProjectPermissionActions, ProjectPermissionSub.SshHostGroups] | [ProjectPermissionActions, ProjectPermissionSub.PkiAlerts] | [ProjectPermissionActions, ProjectPermissionSub.PkiCollections] + | [ProjectPermissionActions, ProjectPermissionSub.CertificateInventoryViews] | [ProjectPermissionKmipActions, ProjectPermissionSub.Kmip] | [ProjectPermissionCmekActions, ProjectPermissionSub.Cmek] | [ProjectPermissionActions.Delete, ProjectPermissionSub.Project] @@ -1563,6 +1565,14 @@ const GeneralPermissionSchema = [ "Describe what action an entity can take." ) }), + z.object({ + subject: z + .literal(ProjectPermissionSub.CertificateInventoryViews) + .describe("The entity this permission pertains to."), + action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionActions).describe( + "Describe what action an entity can take." + ) + }), z.object({ subject: z.literal(ProjectPermissionSub.PkiDiscovery).describe("The entity this permission pertains to."), action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionPkiDiscoveryActions).describe( diff --git a/backend/src/lib/api-docs/constants.ts b/backend/src/lib/api-docs/constants.ts index 9c359c6aa9f..50a771fab0c 100644 --- a/backend/src/lib/api-docs/constants.ts +++ b/backend/src/lib/api-docs/constants.ts @@ -1028,8 +1028,7 @@ export const PROJECTS = { "Filter by extended key usage. Only certificates containing this EKU will be returned (e.g. 'codeSigning', 'serverAuth').", keyAlgorithm: "Filter by key algorithm (e.g. 'RSA_2048', 'EC_prime256v1').", signatureAlgorithm: "Filter by signature algorithm (e.g. 'RSA-SHA256', 'ECDSA-SHA256').", - keySize: "Filter by key size in bits (e.g. 2048, 4096, 256).", - keySizes: "Filter by multiple key sizes in bits (e.g. [2048, 4096]).", + keySizes: "Filter by key sizes in bits (e.g. [2048, 4096]).", caIds: "Filter by certificate authority IDs.", enrollmentTypes: "Filter by enrollment types (e.g. 'api', 'est', 'acme', 'scep').", source: "Filter by certificate source ('issued', 'discovered', 'imported').", diff --git a/backend/src/server/routes/v1/certificate-inventory-view-router.ts b/backend/src/server/routes/v1/certificate-inventory-view-router.ts index 36b487ad0c1..80909783ffc 100644 --- a/backend/src/server/routes/v1/certificate-inventory-view-router.ts +++ b/backend/src/server/routes/v1/certificate-inventory-view-router.ts @@ -15,15 +15,29 @@ const InventoryViewFiltersSchema = z notBeforeTo: z.coerce.date().optional(), notBeforeFrom: z.coerce.date().optional(), enrollmentTypes: z.array(z.string().max(64)).max(10).optional(), - keyAlgorithm: z.string().max(64).optional(), + keyAlgorithm: z.union([z.string().max(64), z.array(z.string().max(64)).max(10)]).optional(), keySizes: z.array(z.number().int().positive()).max(10).optional(), caIds: z.array(z.string().uuid()).max(50).optional(), profileIds: z.array(z.string().uuid()).max(50).optional(), - source: z.string().max(64).optional() + source: z.union([z.string().max(64), z.array(z.string().max(64)).max(10)]).optional() }) .strict(); -const ColumnsSchema = z.array(z.string().max(64)).max(20); +const ValidColumns = [ + "sanCn", + "serialNumber", + "enrollmentMethod", + "status", + "health", + "issuedAt", + "expiresAt", + "ca", + "profile", + "algorithm", + "source" +] as const; + +const ColumnsSchema = z.array(z.enum(ValidColumns)).max(20); export const registerCertificateInventoryViewRouter = async (server: FastifyZodProvider) => { server.route({ @@ -33,7 +47,7 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP rateLimit: readLimit }, schema: { - hide: false, + hide: true, operationId: "listCertificateInventoryViews", tags: [ApiDocsTags.PkiCertificates], description: "List system and custom certificate inventory views for a project.", @@ -55,9 +69,16 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP createdByUserId: z.null() }) ), + sharedViews: z.array( + CertificateInventoryViewsSchema.extend({ + isSystem: z.literal(false), + isShared: z.literal(true) + }) + ), customViews: z.array( CertificateInventoryViewsSchema.extend({ - isSystem: z.literal(false) + isSystem: z.literal(false), + isShared: z.literal(false) }) ) }) @@ -82,7 +103,7 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP rateLimit: writeLimit }, schema: { - hide: false, + hide: true, operationId: "createCertificateInventoryView", tags: [ApiDocsTags.PkiCertificates], description: "Create a custom certificate inventory view.", @@ -92,7 +113,8 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP body: z.object({ name: z.string().trim().min(1).max(255), filters: InventoryViewFiltersSchema.default({}), - columns: ColumnsSchema.optional() + columns: ColumnsSchema.optional(), + isShared: z.boolean().default(false).optional() }), response: { 200: z.object({ @@ -107,6 +129,7 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP name: req.body.name, filters: req.body.filters, columns: req.body.columns, + isShared: req.body.isShared, actorId: req.permission.id, actorOrgId: req.permission.orgId, actorAuthMethod: req.permission.authMethod, @@ -119,7 +142,10 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP type: EventType.CREATE_CERTIFICATE_INVENTORY_VIEW, metadata: { viewId: view.id, - name: view.name + name: view.name, + filters: req.body.filters, + columns: req.body.columns, + isShared: req.body.isShared } } }); @@ -134,7 +160,7 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP rateLimit: writeLimit }, schema: { - hide: false, + hide: true, operationId: "updateCertificateInventoryView", tags: [ApiDocsTags.PkiCertificates], description: "Update a custom certificate inventory view.", @@ -145,7 +171,8 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP body: z.object({ name: z.string().trim().min(1).max(255).optional(), filters: InventoryViewFiltersSchema.optional(), - columns: ColumnsSchema.optional() + columns: ColumnsSchema.optional(), + isShared: z.boolean().optional() }), response: { 200: z.object({ @@ -161,6 +188,7 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP name: req.body.name, filters: req.body.filters, columns: req.body.columns, + isShared: req.body.isShared, actorId: req.permission.id, actorOrgId: req.permission.orgId, actorAuthMethod: req.permission.authMethod, @@ -173,7 +201,10 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP type: EventType.UPDATE_CERTIFICATE_INVENTORY_VIEW, metadata: { viewId: view.id, - name: view.name + name: view.name, + filters: req.body.filters, + columns: req.body.columns, + isShared: req.body.isShared } } }); @@ -188,7 +219,7 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP rateLimit: writeLimit }, schema: { - hide: false, + hide: true, operationId: "deleteCertificateInventoryView", tags: [ApiDocsTags.PkiCertificates], description: "Delete a custom certificate inventory view.", @@ -218,7 +249,8 @@ export const registerCertificateInventoryViewRouter = async (server: FastifyZodP event: { type: EventType.DELETE_CERTIFICATE_INVENTORY_VIEW, metadata: { - viewId: req.params.viewId + viewId: req.params.viewId, + name: view.name } } }); diff --git a/backend/src/server/routes/v1/project-router.ts b/backend/src/server/routes/v1/project-router.ts index e2b6c1a1138..eefa1f0cf47 100644 --- a/backend/src/server/routes/v1/project-router.ts +++ b/backend/src/server/routes/v1/project-router.ts @@ -1309,13 +1309,18 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { .optional() .describe(PROJECTS.SEARCH_CERTIFICATES.metadata), extendedKeyUsage: z.string().trim().optional().describe(PROJECTS.SEARCH_CERTIFICATES.extendedKeyUsage), - keyAlgorithm: z.string().trim().optional().describe(PROJECTS.SEARCH_CERTIFICATES.keyAlgorithm), + keyAlgorithm: z + .union([z.string().trim(), z.array(z.string().trim())]) + .optional() + .describe(PROJECTS.SEARCH_CERTIFICATES.keyAlgorithm), signatureAlgorithm: z.string().trim().optional().describe(PROJECTS.SEARCH_CERTIFICATES.signatureAlgorithm), - keySize: z.number().optional().describe(PROJECTS.SEARCH_CERTIFICATES.keySize), keySizes: z.array(z.number()).optional().describe(PROJECTS.SEARCH_CERTIFICATES.keySizes), caIds: z.array(z.string().uuid()).optional().describe(PROJECTS.SEARCH_CERTIFICATES.caIds), enrollmentTypes: z.array(z.string().trim()).optional().describe(PROJECTS.SEARCH_CERTIFICATES.enrollmentTypes), - source: z.string().trim().optional().describe(PROJECTS.SEARCH_CERTIFICATES.source), + source: z + .union([z.string().trim(), z.array(z.string().trim())]) + .optional() + .describe(PROJECTS.SEARCH_CERTIFICATES.source), notAfterFrom: z.coerce.date().optional().describe(PROJECTS.SEARCH_CERTIFICATES.notAfterFrom), notAfterTo: z.coerce.date().optional().describe(PROJECTS.SEARCH_CERTIFICATES.notAfterTo), notBeforeFrom: z.coerce.date().optional().describe(PROJECTS.SEARCH_CERTIFICATES.notBeforeFrom), @@ -1368,7 +1373,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { rateLimit: readLimit }, schema: { - hide: false, + hide: true, operationId: "getCertificateDashboardStats", tags: [ApiDocsTags.PkiCertificates], description: "Get aggregated dashboard statistics for certificates in a project.", @@ -1419,7 +1424,7 @@ export const registerProjectRouter = async (server: FastifyZodProvider) => { rateLimit: readLimit }, schema: { - hide: false, + hide: true, operationId: "getCertificateActivityTrend", tags: [ApiDocsTags.PkiCertificates], description: "Get certificate lifecycle activity trend over time.", diff --git a/backend/src/services/certificate-inventory-view/certificate-inventory-view-dal.ts b/backend/src/services/certificate-inventory-view/certificate-inventory-view-dal.ts index 896f51c9e2a..be3b1283012 100644 --- a/backend/src/services/certificate-inventory-view/certificate-inventory-view-dal.ts +++ b/backend/src/services/certificate-inventory-view/certificate-inventory-view-dal.ts @@ -14,8 +14,11 @@ export const certificateInventoryViewDALFactory = (db: TDbClient) => { .replicaNode()(TableName.CertificateInventoryView) .where({ projectId }) .andWhere((qb) => { + void qb.where({ isShared: true }); if (userId) { - void qb.where({ createdByUserId: userId }); + void qb.orWhere((inner) => { + void inner.where({ createdByUserId: userId, isShared: false }); + }); } }) .orderBy("name", "asc"); diff --git a/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts b/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts index e9554751aff..11180d72222 100644 --- a/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts +++ b/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts @@ -5,10 +5,7 @@ import { BadRequestError, NotFoundError } from "@app/lib/errors"; import { TProjectPermission } from "@app/lib/types"; import { TPermissionServiceFactory } from "../../ee/services/permission/permission-service-types"; -import { - ProjectPermissionCertificateActions, - ProjectPermissionSub -} from "../../ee/services/permission/project-permission"; +import { ProjectPermissionActions, ProjectPermissionSub } from "../../ee/services/permission/project-permission"; import { TCertificateInventoryViewDALFactory } from "./certificate-inventory-view-dal"; import { TCreateInventoryViewDTO, @@ -80,7 +77,7 @@ export const certificateInventoryViewServiceFactory = ({ }: TCertificateInventoryViewServiceFactoryDep) => { const checkProjectPermission = async ( dto: Pick & { projectId: string }, - action: ProjectPermissionCertificateActions = ProjectPermissionCertificateActions.Read + action: ProjectPermissionActions = ProjectPermissionActions.Read ) => { const { permission } = await permissionService.getProjectPermission({ actor: dto.actor, @@ -91,7 +88,7 @@ export const certificateInventoryViewServiceFactory = ({ actionProjectType: ActionProjectType.CertificateManager }); - ForbiddenError.from(permission).throwUnlessCan(action, ProjectPermissionSub.Certificates); + ForbiddenError.from(permission).throwUnlessCan(action, ProjectPermissionSub.CertificateInventoryViews); return permission; }; @@ -99,13 +96,22 @@ export const certificateInventoryViewServiceFactory = ({ const listViews = async ({ projectId, actor, actorId, actorOrgId, actorAuthMethod }: TListInventoryViewsDTO) => { await checkProjectPermission({ projectId, actor, actorId, actorOrgId, actorAuthMethod }); - const customViews = await certificateInventoryViewDAL.findByProjectId(projectId, actorId); + const allViews = await certificateInventoryViewDAL.findByProjectId(projectId, actorId); + + const sharedViews = allViews.filter((v) => v.isShared); + const customViews = allViews.filter((v) => !v.isShared); return { systemViews: SYSTEM_VIEWS, + sharedViews: sharedViews.map((v) => ({ + ...v, + isSystem: false as const, + isShared: true as const + })), customViews: customViews.map((v) => ({ ...v, - isSystem: false as const + isSystem: false as const, + isShared: false as const })) }; }; @@ -115,6 +121,7 @@ export const certificateInventoryViewServiceFactory = ({ name, filters, columns, + isShared = false, actor, actorId, actorOrgId, @@ -122,18 +129,32 @@ export const certificateInventoryViewServiceFactory = ({ }: TCreateInventoryViewDTO) => { await checkProjectPermission( { projectId, actor, actorId, actorOrgId, actorAuthMethod }, - ProjectPermissionCertificateActions.Edit + ProjectPermissionActions.Create ); - const view = await certificateInventoryViewDAL.create({ - projectId, - name, - filters: JSON.stringify(filters), - columns: columns ? JSON.stringify(columns) : undefined, - createdByUserId: actorId - }); - - return view; + try { + const view = await certificateInventoryViewDAL.create({ + projectId, + name, + filters: JSON.stringify(filters), + columns: columns ? JSON.stringify(columns) : undefined, + createdByUserId: actorId, + isShared + }); + + return view; + } catch (error) { + const pgError = error as { code?: string }; + if (pgError.code === "23505") { + // unique constraint violation + throw new BadRequestError({ + message: isShared + ? "A shared view with this name already exists in this project" + : "You already have a view with this name" + }); + } + throw error; + } }; const updateView = async ({ @@ -142,6 +163,7 @@ export const certificateInventoryViewServiceFactory = ({ name, filters, columns, + isShared, actor, actorId, actorOrgId, @@ -149,7 +171,7 @@ export const certificateInventoryViewServiceFactory = ({ }: TUpdateInventoryViewDTO) => { await checkProjectPermission( { projectId, actor, actorId, actorOrgId, actorAuthMethod }, - ProjectPermissionCertificateActions.Edit + ProjectPermissionActions.Edit ); const existing = await certificateInventoryViewDAL.findById(viewId); @@ -161,13 +183,27 @@ export const certificateInventoryViewServiceFactory = ({ throw new BadRequestError({ message: "You can only update your own views" }); } - const view = await certificateInventoryViewDAL.updateById(viewId, { - ...(name !== undefined && { name }), - ...(filters !== undefined && { filters: JSON.stringify(filters) }), - ...(columns !== undefined && { columns: columns ? JSON.stringify(columns) : null }) - }); - - return view; + try { + const view = await certificateInventoryViewDAL.updateById(viewId, { + ...(name !== undefined && { name }), + ...(filters !== undefined && { filters: JSON.stringify(filters) }), + ...(columns !== undefined && { columns: columns ? JSON.stringify(columns) : null }), + ...(isShared !== undefined && { isShared }) + }); + + return view; + } catch (error) { + const pgError = error as { code?: string }; + if (pgError.code === "23505") { + // unique constraint violation + throw new BadRequestError({ + message: isShared + ? "A shared view with this name already exists in this project" + : "You already have a view with this name" + }); + } + throw error; + } }; const deleteView = async ({ @@ -180,7 +216,7 @@ export const certificateInventoryViewServiceFactory = ({ }: TDeleteInventoryViewDTO) => { await checkProjectPermission( { projectId, actor, actorId, actorOrgId, actorAuthMethod }, - ProjectPermissionCertificateActions.Edit + ProjectPermissionActions.Delete ); const existing = await certificateInventoryViewDAL.findById(viewId); diff --git a/backend/src/services/certificate-inventory-view/certificate-inventory-view-types.ts b/backend/src/services/certificate-inventory-view/certificate-inventory-view-types.ts index 59d940e9c0a..a5b941505e9 100644 --- a/backend/src/services/certificate-inventory-view/certificate-inventory-view-types.ts +++ b/backend/src/services/certificate-inventory-view/certificate-inventory-view-types.ts @@ -7,11 +7,11 @@ export type TInventoryViewFilters = { notBeforeTo?: Date; notBeforeFrom?: Date; enrollmentTypes?: string[]; - keyAlgorithm?: string; + keyAlgorithm?: string | string[]; keySizes?: number[]; caIds?: string[]; profileIds?: string[]; - source?: string; + source?: string | string[]; }; export type TListInventoryViewsDTO = { @@ -23,6 +23,7 @@ export type TCreateInventoryViewDTO = { name: string; filters: TInventoryViewFilters; columns?: string[]; + isShared?: boolean; } & Omit; export type TUpdateInventoryViewDTO = { @@ -31,6 +32,7 @@ export type TUpdateInventoryViewDTO = { name?: string; filters?: TInventoryViewFilters; columns?: string[]; + isShared?: boolean; } & Omit; export type TDeleteInventoryViewDTO = { diff --git a/backend/src/services/certificate/certificate-dal.ts b/backend/src/services/certificate/certificate-dal.ts index e5a3927dfef..010248d9aec 100644 --- a/backend/src/services/certificate/certificate-dal.ts +++ b/backend/src/services/certificate/certificate-dal.ts @@ -59,13 +59,12 @@ export const certificateDALFactory = (db: TDbClient) => { toDate?: Date; metadataFilter?: Array<{ key: string; value?: string }>; extendedKeyUsage?: string; - keyAlgorithm?: string; + keyAlgorithm?: string | string[]; signatureAlgorithm?: string; - keySize?: number; keySizes?: number[]; caIds?: string[]; enrollmentTypes?: string[]; - source?: string; + source?: string | string[]; notAfterFrom?: Date; notAfterTo?: Date; notBeforeFrom?: Date; @@ -152,18 +151,17 @@ export const certificateDALFactory = (db: TDbClient) => { } if (filters.keyAlgorithm) { - q = q.andWhere(`${TableName.Certificate}.keyAlgorithm`, filters.keyAlgorithm); + if (Array.isArray(filters.keyAlgorithm)) { + q = q.whereIn(`${TableName.Certificate}.keyAlgorithm`, filters.keyAlgorithm); + } else { + q = q.andWhere(`${TableName.Certificate}.keyAlgorithm`, filters.keyAlgorithm); + } } if (filters.signatureAlgorithm) { q = q.andWhere(`${TableName.Certificate}.signatureAlgorithm`, filters.signatureAlgorithm); } - if (filters.keySize) { - const algorithms = keySizeToAlgorithms(filters.keySize); - q = q.whereIn(`${TableName.Certificate}.keyAlgorithm`, algorithms); - } - if (filters.keySizes && filters.keySizes.length > 0) { const allAlgorithms = filters.keySizes.flatMap((size) => keySizeToAlgorithms(size)); q = q.whereIn(`${TableName.Certificate}.keyAlgorithm`, allAlgorithms); @@ -178,13 +176,18 @@ export const certificateDALFactory = (db: TDbClient) => { } if (filters.source) { - if (filters.source === "issued") { - q = q.andWhere((qb: Knex.QueryBuilder) => { - void qb.where(`${TableName.Certificate}.source`, "issued").orWhereNull(`${TableName.Certificate}.source`); - }); - } else { - q = q.andWhere(`${TableName.Certificate}.source`, filters.source); - } + const sources = Array.isArray(filters.source) ? filters.source : [filters.source]; + const includesIssued = sources.includes("issued"); + const otherSources = sources.filter((s) => s !== "issued"); + + q = q.andWhere((qb: Knex.QueryBuilder) => { + if (otherSources.length > 0) { + void qb.whereIn(`${TableName.Certificate}.source`, otherSources); + } + if (includesIssued) { + void qb.orWhere(`${TableName.Certificate}.source`, "issued").orWhereNull(`${TableName.Certificate}.source`); + } + }); } if (filters.notAfterFrom) { @@ -309,7 +312,7 @@ export const certificateDALFactory = (db: TDbClient) => { }; const findActiveCertificatesForSync = async ( - filter: Partial & TInventoryFilterParams>, + filter: Partial & TInventoryFilterParams>, options?: { limit?: number; offset?: number }, permissionFilters?: ProcessedPermissionRules ): Promise<(TCertificates & { hasPrivateKey: boolean })[]> => { @@ -448,7 +451,7 @@ export const certificateDALFactory = (db: TDbClient) => { }; const findWithPrivateKeyInfo = async ( - filter: Partial & TInventoryFilterParams>, + filter: Partial & TInventoryFilterParams>, options?: { offset?: number; limit?: number; sort?: [string, "asc" | "desc"][] }, permissionFilters?: ProcessedPermissionRules ): Promise => { @@ -484,7 +487,6 @@ export const certificateDALFactory = (db: TDbClient) => { extendedKeyUsage, keyAlgorithm, signatureAlgorithm, - keySize, keySizes, caIds, enrollmentTypes, @@ -516,7 +518,6 @@ export const certificateDALFactory = (db: TDbClient) => { extendedKeyUsage, keyAlgorithm, signatureAlgorithm, - keySize, keySizes, caIds, enrollmentTypes, @@ -813,17 +814,16 @@ export const certificateDALFactory = (db: TDbClient) => { const truncUnit = useDaily ? "day" : "month"; const dateFormat = useDaily ? "YYYY-MM-DD" : "YYYY-MM"; + const periodExpr = (col: string) => + db.raw(`to_char(date_trunc(?, "${TableName.Certificate}"."${col}"), ?) as period`, [truncUnit, dateFormat]); + const issued = await db .replicaNode()(TableName.Certificate) .join(TableName.CertificateAuthority, `${TableName.Certificate}.caId`, `${TableName.CertificateAuthority}.id`) .where(`${TableName.CertificateAuthority}.projectId`, projectId) .where(`${TableName.Certificate}.notBefore`, ">=", startDate) .where(`${TableName.Certificate}.notBefore`, "<=", now) - .select( - db.raw( - `to_char(date_trunc('${truncUnit}', "${TableName.Certificate}"."notBefore"), '${dateFormat}') as period` - ) - ) + .select(periodExpr("notBefore")) .select(db.raw("count(*)::int as count")) .groupBy("period") .orderBy("period"); @@ -835,11 +835,7 @@ export const certificateDALFactory = (db: TDbClient) => { .where(`${TableName.Certificate}.notAfter`, ">=", startDate) .where(`${TableName.Certificate}.notAfter`, "<=", now) .where(`${TableName.Certificate}.status`, "!=", CertStatus.REVOKED) - .select( - db.raw( - `to_char(date_trunc('${truncUnit}', "${TableName.Certificate}"."notAfter"), '${dateFormat}') as period` - ) - ) + .select(periodExpr("notAfter")) .select(db.raw("count(*)::int as count")) .groupBy("period") .orderBy("period"); @@ -851,11 +847,7 @@ export const certificateDALFactory = (db: TDbClient) => { .where(`${TableName.Certificate}.status`, CertStatus.REVOKED) .where(`${TableName.Certificate}.revokedAt`, ">=", startDate) .where(`${TableName.Certificate}.revokedAt`, "<=", now) - .select( - db.raw( - `to_char(date_trunc('${truncUnit}', "${TableName.Certificate}"."revokedAt"), '${dateFormat}') as period` - ) - ) + .select(periodExpr("revokedAt")) .select(db.raw("count(*)::int as count")) .groupBy("period") .orderBy("period"); @@ -867,11 +859,7 @@ export const certificateDALFactory = (db: TDbClient) => { .whereNotNull(`${TableName.Certificate}.renewedFromCertificateId`) .where(`${TableName.Certificate}.notBefore`, ">=", startDate) .where(`${TableName.Certificate}.notBefore`, "<=", now) - .select( - db.raw( - `to_char(date_trunc('${truncUnit}', "${TableName.Certificate}"."notBefore"), '${dateFormat}') as period` - ) - ) + .select(periodExpr("notBefore")) .select(db.raw("count(*)::int as count")) .groupBy("period") .orderBy("period"); diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index 6c399f62dfb..929ba7bf6ee 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -47,6 +47,7 @@ import { crypto } from "@app/lib/crypto/cryptography"; import { DatabaseErrorCode } from "@app/lib/error-codes"; import { BadRequestError, DatabaseError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors"; import { groupBy } from "@app/lib/fn"; +import { logger } from "@app/lib/logger"; import { alphaNumericNanoId } from "@app/lib/nanoid"; import { TProjectPermission } from "@app/lib/types"; import { TPkiSubscriberDALFactory } from "@app/services/pki-subscriber/pki-subscriber-dal"; @@ -122,7 +123,7 @@ import { TUpgradeProjectDTO } from "./project-types"; -const DASHBOARD_CACHE_TTL = 300; +const DASHBOARD_CACHE_TTL = 600; export const DEFAULT_PROJECT_ENVS = [ { name: "Development", slug: "dev" }, @@ -1220,7 +1221,6 @@ export const projectServiceFactory = ({ extendedKeyUsage, keyAlgorithm, signatureAlgorithm, - keySize, keySizes, caIds, enrollmentTypes, @@ -1269,7 +1269,6 @@ export const projectServiceFactory = ({ ...(extendedKeyUsage && { extendedKeyUsage }), ...(keyAlgorithm && { keyAlgorithm }), ...(signatureAlgorithm && { signatureAlgorithm }), - ...(keySize && { keySize }), ...(keySizes && keySizes.length > 0 && { keySizes }), ...(caIds && { caIds }), ...(enrollmentTypes && { enrollmentTypes }), @@ -1320,13 +1319,12 @@ export const projectServiceFactory = ({ ...(regularFilters.toDate && { toDate: regularFilters.toDate }), ...(regularFilters.metadataFilter && { metadataFilter: regularFilters.metadataFilter }), ...(regularFilters.extendedKeyUsage && { extendedKeyUsage: String(regularFilters.extendedKeyUsage) }), - ...(regularFilters.keyAlgorithm && { keyAlgorithm: String(regularFilters.keyAlgorithm) }), + ...(regularFilters.keyAlgorithm && { keyAlgorithm: regularFilters.keyAlgorithm }), ...(regularFilters.signatureAlgorithm && { signatureAlgorithm: String(regularFilters.signatureAlgorithm) }), - ...(regularFilters.keySize && { keySize: regularFilters.keySize }), ...(regularFilters.keySizes && { keySizes: regularFilters.keySizes }), ...(regularFilters.caIds && { caIds: regularFilters.caIds }), ...(regularFilters.enrollmentTypes && { enrollmentTypes: regularFilters.enrollmentTypes }), - ...(regularFilters.source && { source: String(regularFilters.source) }), + ...(regularFilters.source && { source: regularFilters.source }), ...(regularFilters.notAfterFrom && { notAfterFrom: regularFilters.notAfterFrom }), ...(regularFilters.notAfterTo && { notAfterTo: regularFilters.notAfterTo }), ...(regularFilters.notBeforeFrom && { notBeforeFrom: regularFilters.notBeforeFrom }), @@ -1367,7 +1365,7 @@ export const projectServiceFactory = ({ try { return JSON.parse(cached) as Awaited>; } catch { - // stale entry — recompute + logger.error(`Malformed dashboard stats cache entry [projectId=${projectId}]`); } } @@ -1410,7 +1408,7 @@ export const projectServiceFactory = ({ try { return JSON.parse(cached) as Awaited>; } catch { - // stale entry — recompute + logger.error(`Malformed activity trend cache entry [projectId=${projectId}] [range=${range}]`); } } diff --git a/backend/src/services/project/project-types.ts b/backend/src/services/project/project-types.ts index b264280eed5..59f8fe8a3c4 100644 --- a/backend/src/services/project/project-types.ts +++ b/backend/src/services/project/project-types.ts @@ -152,13 +152,12 @@ export type TListProjectCertsDTO = { toDate?: Date; metadataFilter?: Array<{ key: string; value?: string }>; extendedKeyUsage?: string; - keyAlgorithm?: string; + keyAlgorithm?: string | string[]; signatureAlgorithm?: string; - keySize?: number; keySizes?: number[]; caIds?: string[]; enrollmentTypes?: string[]; - source?: string; + source?: string | string[]; notAfterFrom?: Date; notAfterTo?: Date; notBeforeFrom?: Date; diff --git a/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx b/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx index 91d0dd60391..43a69e5eff2 100644 --- a/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx +++ b/frontend/src/components/v3/generic/Dropdown/Dropdown.tsx @@ -2,7 +2,7 @@ import * as React from "react"; import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"; -import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"; +import { CheckIcon, ChevronRightIcon } from "lucide-react"; import { cn } from "@app/components/v3/utils"; diff --git a/frontend/src/context/ProjectPermissionContext/types.ts b/frontend/src/context/ProjectPermissionContext/types.ts index f7109018e3e..27169a1ad2f 100644 --- a/frontend/src/context/ProjectPermissionContext/types.ts +++ b/frontend/src/context/ProjectPermissionContext/types.ts @@ -414,6 +414,7 @@ export enum ProjectPermissionSub { SshHostGroups = "ssh-host-groups", PkiAlerts = "pki-alerts", PkiCollections = "pki-collections", + CertificateInventoryViews = "certificate-inventory-views", PkiSubscribers = "pki-subscribers", CertificateProfiles = "certificate-profiles", CertificatePolicies = "certificate-policies", @@ -672,6 +673,7 @@ export type ProjectPermissionSet = ] | [ProjectPermissionActions, ProjectPermissionSub.PkiAlerts] | [ProjectPermissionActions, ProjectPermissionSub.PkiCollections] + | [ProjectPermissionActions, ProjectPermissionSub.CertificateInventoryViews] | [ProjectPermissionPkiDiscoveryActions, ProjectPermissionSub.PkiDiscovery] | [ ProjectPermissionPkiCertificateInstallationActions, diff --git a/frontend/src/hooks/api/certificateInventoryViews/mutations.tsx b/frontend/src/hooks/api/certificateInventoryViews/mutations.tsx index 42baf0cde61..d6b7a1fd076 100644 --- a/frontend/src/hooks/api/certificateInventoryViews/mutations.tsx +++ b/frontend/src/hooks/api/certificateInventoryViews/mutations.tsx @@ -14,10 +14,16 @@ export const useCreateCertificateInventoryView = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ projectId, name, filters, columns }: TCreateInventoryViewDTO) => { + mutationFn: async ({ + projectId, + name, + filters, + columns, + isShared + }: TCreateInventoryViewDTO) => { const { data } = await apiRequest.post<{ view: TCertificateInventoryView }>( `/api/v1/projects/${projectId}/certificate-inventory-views`, - { name, filters, columns } + { name, filters, columns, isShared } ); return data.view; }, @@ -31,10 +37,17 @@ export const useUpdateCertificateInventoryView = () => { const queryClient = useQueryClient(); return useMutation({ - mutationFn: async ({ projectId, viewId, name, filters, columns }: TUpdateInventoryViewDTO) => { + mutationFn: async ({ + projectId, + viewId, + name, + filters, + columns, + isShared + }: TUpdateInventoryViewDTO) => { const { data } = await apiRequest.patch<{ view: TCertificateInventoryView }>( `/api/v1/projects/${projectId}/certificate-inventory-views/${viewId}`, - { name, filters, columns } + { name, filters, columns, isShared } ); return data.view; }, diff --git a/frontend/src/hooks/api/certificateInventoryViews/types.ts b/frontend/src/hooks/api/certificateInventoryViews/types.ts index f5496a5a312..9efb9c8aad4 100644 --- a/frontend/src/hooks/api/certificateInventoryViews/types.ts +++ b/frontend/src/hooks/api/certificateInventoryViews/types.ts @@ -5,11 +5,11 @@ export type TInventoryViewFilters = { notBeforeTo?: string | Date; notBeforeFrom?: string | Date; enrollmentTypes?: string[]; - keyAlgorithm?: string; + keyAlgorithm?: string | string[]; keySizes?: number[]; caIds?: string[]; profileIds?: string[]; - source?: string; + source?: string | string[]; }; export type TCertificateInventoryView = { @@ -19,6 +19,7 @@ export type TCertificateInventoryView = { filters: TInventoryViewFilters; columns: string[] | null; createdByUserId: string | null; + isShared: boolean; createdAt: string; updatedAt: string; }; @@ -39,7 +40,8 @@ export type TSystemView = { export type TListInventoryViewsResponse = { systemViews: TSystemView[]; - customViews: (TCertificateInventoryView & { isSystem: false })[]; + sharedViews: (TCertificateInventoryView & { isSystem: false; isShared: true })[]; + customViews: (TCertificateInventoryView & { isSystem: false; isShared: false })[]; }; export type TCreateInventoryViewDTO = { @@ -47,6 +49,7 @@ export type TCreateInventoryViewDTO = { name: string; filters: TInventoryViewFilters; columns?: string[]; + isShared?: boolean; }; export type TUpdateInventoryViewDTO = { @@ -55,6 +58,7 @@ export type TUpdateInventoryViewDTO = { name?: string; filters?: TInventoryViewFilters; columns?: string[]; + isShared?: boolean; }; export type TDeleteInventoryViewDTO = { diff --git a/frontend/src/hooks/api/certificates/mutations.tsx b/frontend/src/hooks/api/certificates/mutations.tsx index f70d6138c96..bdc623318c3 100644 --- a/frontend/src/hooks/api/certificates/mutations.tsx +++ b/frontend/src/hooks/api/certificates/mutations.tsx @@ -47,6 +47,9 @@ export const useDeleteCert = () => { queryClient.invalidateQueries({ queryKey: projectKeys.forProjectCertificates(projectId) }); + queryClient.invalidateQueries({ + queryKey: certKeys.getDashboardStats(projectId) + }); } }); }; @@ -81,6 +84,9 @@ export const useRevokeCert = () => { queryClient.invalidateQueries({ queryKey: projectKeys.forProjectCertificates(projectId) }); + queryClient.invalidateQueries({ + queryKey: certKeys.getDashboardStats(projectId) + }); } }); }; @@ -99,6 +105,9 @@ export const useImportCertificate = () => { queryClient.invalidateQueries({ queryKey: projectKeys.forProjectCertificates(projectSlug) }); + queryClient.invalidateQueries({ + queryKey: ["cert-dashboard-stats"] + }); } }); }; @@ -130,6 +139,9 @@ export const useRenewCertificate = () => { queryClient.invalidateQueries({ queryKey: projectKeys.forProjectCertificates(data.projectId) }); + queryClient.invalidateQueries({ + queryKey: certKeys.getDashboardStats(data.projectId) + }); } } }); @@ -256,6 +268,9 @@ export const useUnifiedCertificateIssuance = () => { queryClient.invalidateQueries({ queryKey: ["certificateRequests", "list", projectSlug] }); + queryClient.invalidateQueries({ + queryKey: ["cert-dashboard-stats"] + }); } }); }; diff --git a/frontend/src/hooks/api/certificates/queries.tsx b/frontend/src/hooks/api/certificates/queries.tsx index 1d29dcc450a..4401e1f978b 100644 --- a/frontend/src/hooks/api/certificates/queries.tsx +++ b/frontend/src/hooks/api/certificates/queries.tsx @@ -36,11 +36,9 @@ export const certKeys = { params.sortOrder, params.metadataFilter ], - getDashboardStats: (projectId: string) => [{ projectId }, "cert-dashboard-stats"], - getActivityTrend: (projectId: string, range: string) => [ - { projectId, range }, - "cert-activity-trend" - ] + getDashboardStats: (projectId: string) => ["cert-dashboard-stats", { projectId }] as const, + getActivityTrend: (projectId: string, range: string) => + ["cert-activity-trend", { projectId }, { range }] as const }; export const useGetCert = (serialNumber: string) => { diff --git a/frontend/src/hooks/api/projects/queries.tsx b/frontend/src/hooks/api/projects/queries.tsx index d00de22c143..bfa53f4a236 100644 --- a/frontend/src/hooks/api/projects/queries.tsx +++ b/frontend/src/hooks/api/projects/queries.tsx @@ -525,7 +525,6 @@ export const useListWorkspaceCertificates = ({ extendedKeyUsage, keyAlgorithm, signatureAlgorithm, - keySize, keySizes, caIds, enrollmentTypes, @@ -550,13 +549,12 @@ export const useListWorkspaceCertificates = ({ toDate?: Date; metadataFilter?: Array<{ key: string; value?: string }>; extendedKeyUsage?: string; - keyAlgorithm?: string; + keyAlgorithm?: string | string[]; signatureAlgorithm?: string; - keySize?: number; keySizes?: number[]; caIds?: string[]; enrollmentTypes?: string[]; - source?: string; + source?: string | string[]; notAfterFrom?: Date; notAfterTo?: Date; notBeforeFrom?: Date; @@ -581,7 +579,6 @@ export const useListWorkspaceCertificates = ({ extendedKeyUsage, keyAlgorithm, signatureAlgorithm, - keySize, keySizes, caIds, enrollmentTypes, @@ -613,7 +610,6 @@ export const useListWorkspaceCertificates = ({ ...(extendedKeyUsage && { extendedKeyUsage }), ...(keyAlgorithm && { keyAlgorithm }), ...(signatureAlgorithm && { signatureAlgorithm }), - ...(keySize && { keySize }), ...(keySizes && keySizes.length > 0 && { keySizes }), ...(caIds && caIds.length > 0 && { caIds }), ...(enrollmentTypes && enrollmentTypes.length > 0 && { enrollmentTypes }), diff --git a/frontend/src/hooks/api/projects/query-keys.tsx b/frontend/src/hooks/api/projects/query-keys.tsx index 589f6c2b4d2..eaaae4027bc 100644 --- a/frontend/src/hooks/api/projects/query-keys.tsx +++ b/frontend/src/hooks/api/projects/query-keys.tsx @@ -57,7 +57,6 @@ export const projectKeys = { extendedKeyUsage, keyAlgorithm, signatureAlgorithm, - keySize, keySizes, caIds, enrollmentTypes, @@ -82,13 +81,12 @@ export const projectKeys = { toDate?: Date; metadataFilter?: Array<{ key: string; value?: string }>; extendedKeyUsage?: string; - keyAlgorithm?: string; + keyAlgorithm?: string | string[]; signatureAlgorithm?: string; - keySize?: number; keySizes?: number[]; caIds?: string[]; enrollmentTypes?: string[]; - source?: string; + source?: string | string[]; notAfterFrom?: Date; notAfterTo?: Date; notBeforeFrom?: Date; @@ -113,7 +111,6 @@ export const projectKeys = { extendedKeyUsage, keyAlgorithm, signatureAlgorithm, - keySize, keySizes, caIds, enrollmentTypes, diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/ActiveFilterChips.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/ActiveFilterChips.tsx index bae66a9ba30..704a1d3e9ec 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/ActiveFilterChips.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/ActiveFilterChips.tsx @@ -24,14 +24,10 @@ const FilterChip = ({ const isCollapsed = Array.isArray(rule.value) && rule.value.length > 1; const chip = ( - - {label} - ); @@ -58,7 +54,7 @@ export const ActiveFilterChips = ({ rules, onRemove, onClearAll, dynamicFieldOpt if (rules.length === 0) return null; return ( -
+
Active filters: {rules.map((rule) => ( ))} - + +
); }; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx index fb14ffb4c39..20815c11a5d 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx @@ -3,7 +3,15 @@ import { ArrowRightIcon } from "lucide-react"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { DeleteActionModal } from "@app/components/v2"; -import { Button, DocumentationLinkBadge } from "@app/components/v3"; +import { + Button, + DocumentationLinkBadge, + UnstableCard, + UnstableCardAction, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle +} from "@app/components/v3"; import { ProjectPermissionCertificateActions, ProjectPermissionSub, @@ -20,12 +28,13 @@ import { CertificateManageRenewalModal } from "./CertificateManageRenewalModal"; import { CertificateRenewalModal } from "./CertificateRenewalModal"; import { CertificateRevocationModal } from "./CertificateRevocationModal"; import { CertificatesTable } from "./CertificatesTable"; +import type { FilterRule } from "./inventory-types"; type CertificatesSectionProps = { externalFilter?: { search?: string; }; - dashboardFilters?: import("./inventory-types").FilterRule[]; + dashboardFilters?: FilterRule[]; }; export const CertificatesSection = ({ @@ -110,18 +119,16 @@ export const CertificatesSection = ({ }; return ( -
-
-
-
-

Certificates

- -
-

- View, filter, and manage all certificates across your project. -

-
-
+ + + + Certificates + + +

+ View, filter, and manage all certificates across your project. +

+ )} -
-
- - - - - - - - - handlePopUpToggle("deleteCertificate", isOpen)} - deleteKey="confirm" - onDeleteApproved={() => - onRemoveCertificateSubmit( - (popUp?.deleteCertificate?.data as { certificateId: string })?.certificateId - ) - } - /> -
+ + + + + + + + + + + + handlePopUpToggle("deleteCertificate", isOpen)} + deleteKey="confirm" + onDeleteApproved={() => + onRemoveCertificateSubmit( + (popUp?.deleteCertificate?.data as { certificateId: string })?.certificateId + ) + } + /> + + ); }; diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx index f564ae43aab..d0f0b57a5d4 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesTable.tsx @@ -60,7 +60,8 @@ import { ProjectPermissionSub, useOrganization, useProject, - useProjectPermission + useProjectPermission, + useUser } from "@app/context"; import { useUpdateRenewalConfig } from "@app/hooks/api"; import { caSupportsCapability } from "@app/hooks/api/ca/constants"; @@ -68,7 +69,8 @@ import { CaCapability, CaType } from "@app/hooks/api/ca/enums"; import { useListCasByProjectId } from "@app/hooks/api/ca/queries"; import { useDeleteCertificateInventoryView, - useListCertificateInventoryViews + useListCertificateInventoryViews, + useUpdateCertificateInventoryView } from "@app/hooks/api/certificateInventoryViews"; import type { TInventoryViewFilters, @@ -177,8 +179,6 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi const [sortBy, setSortBy] = useState(undefined); const [sortOrder, setSortOrder] = useState<"asc" | "desc" | undefined>(undefined); - const [visibleColumns, setVisibleColumns] = useState>(getDefaultVisibleColumns); - useEffect(() => { const timeoutId = setTimeout(() => { setAppliedSearch(search); @@ -192,6 +192,11 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi const { currentProject } = useProject(); const { permission } = useProjectPermission(); + const projectId = currentProject?.id ?? ""; + const [visibleColumns, setVisibleColumns] = useState>(() => + getDefaultVisibleColumns(projectId) + ); + const { data: profilesData } = useListCertificateProfiles({ projectId: currentProject?.id ?? "", limit: 100 @@ -200,7 +205,9 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi const { data: caData } = useListCasByProjectId(currentProject?.id ?? ""); const { data: viewsData } = useListCertificateInventoryViews(currentProject?.id ?? ""); const { mutateAsync: deleteView } = useDeleteCertificateInventoryView(); + const { mutateAsync: updateView } = useUpdateCertificateInventoryView(); const { mutateAsync: updateRenewalConfig } = useUpdateRenewalConfig(); + const { user } = useUser(); const caCapabilityMap = useMemo(() => { if (!caData) return {}; @@ -430,11 +437,14 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi }); } if (customFilters.keyAlgorithm) { + const algoValue = Array.isArray(customFilters.keyAlgorithm) + ? customFilters.keyAlgorithm + : [customFilters.keyAlgorithm]; rules.push({ id: "cv-algo", field: "keyAlgorithm", - operator: "is", - value: customFilters.keyAlgorithm + operator: "in", + value: algoValue }); } if (customFilters.keySizes && customFilters.keySizes.length > 0) { @@ -457,11 +467,14 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi }); } if (customFilters.source) { + const sourceValue = Array.isArray(customFilters.source) + ? customFilters.source + : [customFilters.source]; rules.push({ id: "cv-source", field: "source", - operator: "is", - value: customFilters.source + operator: "in", + value: sourceValue }); } setAppliedFilters(rules); @@ -483,6 +496,19 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi } }; + const handleToggleShare = async (viewId: string, isShared: boolean) => { + if (!currentProject?.id) return; + try { + await updateView({ projectId: currentProject.id, viewId, isShared }); + createNotification({ + text: isShared ? "View shared with team" : "View made personal", + type: "success" + }); + } catch { + createNotification({ text: "Failed to update view sharing", type: "error" }); + } + }; + useEffect(() => { if (hasRestoredView || !viewsData) return; setHasRestoredView(true); @@ -495,6 +521,12 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi return; } + const sharedView = viewsData.sharedViews?.find((v) => v.id === activeViewId); + if (sharedView) { + handleSelectView(sharedView.id, sharedView.filters); + return; + } + const customView = viewsData.customViews.find((v) => v.id === activeViewId); if (customView) { handleSelectView(customView.id, customView.filters); @@ -585,14 +617,21 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi { handleDeleteView(viewId); }} + onToggleShare={handleToggleShare} /> - +
- - - - {visibleColumns.has("sanCn") && ( - - SAN / CN - - )} - {visibleColumns.has("serialNumber") && ( - Serial # - )} - {visibleColumns.has("enrollmentMethod") && ( - Enrollment Method - )} - {visibleColumns.has("status") && ( - Status - )} - {visibleColumns.has("health") && ( - Health - )} - {visibleColumns.has("issuedAt") && ( - handleSort("notBefore")} - > - Issued - - - )} - {visibleColumns.has("expiresAt") && ( - handleSort("notAfter")} - > - Expires - - - )} - {visibleColumns.has("ca") && ( - CA - )} - {visibleColumns.has("profile") && ( - Profile - )} - {visibleColumns.has("algorithm") && ( - Algorithm - )} - {visibleColumns.has("source") && ( - Source - )} - - - - - {isPending && - Array.from({ length: 10 }).map((_, i) => ( - - {Array.from({ length: visibleColumns.size + 1 }).map((__, j) => ( - - - - ))} + {(isPending || certificates.length > 0) && ( + <> + + + + {visibleColumns.has("sanCn") && ( + + SAN / CN + + )} + {visibleColumns.has("serialNumber") && ( + + Serial # + + )} + {visibleColumns.has("enrollmentMethod") && ( + Enrollment Method + )} + {visibleColumns.has("status") && ( + Status + )} + {visibleColumns.has("health") && ( + Health + )} + {visibleColumns.has("issuedAt") && ( + handleSort("notBefore")} + > + Issued + + + )} + {visibleColumns.has("expiresAt") && ( + handleSort("notAfter")} + > + Expires + + + )} + {visibleColumns.has("ca") && ( + CA + )} + {visibleColumns.has("profile") && ( + + Profile + + )} + {visibleColumns.has("algorithm") && ( + Algorithm + )} + {visibleColumns.has("source") && ( + Source + )} + - ))} - {!isPending && - certificates.map((certificate) => { - const { variant, label } = getCertValidUntilBadgeDetails(certificate.notAfter); - const isRevoked = certificate.status === CertStatus.REVOKED; - const isExpired = new Date(certificate.notAfter) < new Date(); - const isExpiringWithinDay = isExpiringWithinOneDay(certificate.notAfter); - const hasFailed = Boolean(certificate.renewalError); - const isAutoRenewalEnabled = Boolean( - certificate.renewBeforeDays && certificate.renewBeforeDays > 0 - ); - const canShowAutoRenewalIcon = Boolean( - certificate.profileId && - certificate.hasPrivateKey !== false && - !certificate.renewedByCertificateId && - !isRevoked && - !isExpired && - !isExpiringWithinDay - ); - const { originalDisplayName } = getCertificateDisplayName(certificate, 64, "—"); + + + {isPending && + Array.from({ length: 10 }).map((_, i) => ( + + {Array.from({ length: visibleColumns.size + 1 }).map((__, j) => ( + + + + ))} + + ))} + {!isPending && + certificates.map((certificate) => { + const { variant, label } = getCertValidUntilBadgeDetails(certificate.notAfter); + const isRevoked = certificate.status === CertStatus.REVOKED; + const isExpired = new Date(certificate.notAfter) < new Date(); + const isExpiringWithinDay = isExpiringWithinOneDay(certificate.notAfter); + const hasFailed = Boolean(certificate.renewalError); + const isAutoRenewalEnabled = Boolean( + certificate.renewBeforeDays && certificate.renewBeforeDays > 0 + ); + const canShowAutoRenewalIcon = Boolean( + certificate.profileId && + certificate.hasPrivateKey !== false && + !certificate.renewedByCertificateId && + !isRevoked && + !isExpired && + !isExpiringWithinDay + ); + const { originalDisplayName } = getCertificateDisplayName(certificate, 64, "—"); - return ( - { - navigate({ - to: "/organizations/$orgId/projects/cert-manager/$projectId/certificates/$certificateId", - params: { - orgId: currentOrg.id, - projectId: currentProject.id, - certificateId: certificate.id - } - }); - }} - > - {visibleColumns.has("sanCn") && ( - - - - )} - {visibleColumns.has("serialNumber") && ( - - {truncateSerialNumber(certificate.serialNumber)} - - )} - {visibleColumns.has("enrollmentMethod") && ( - - {getEnrollmentMethodBadge(certificate.enrollmentType)} - - )} - {visibleColumns.has("status") && ( - - {isRevoked ? ( - Revoked - ) : isExpired ? ( - Expired - ) : ( - Active + return ( + { + navigate({ + to: "/organizations/$orgId/projects/cert-manager/$projectId/certificates/$certificateId", + params: { + orgId: currentOrg.id, + projectId: currentProject.id, + certificateId: certificate.id + } + }); + }} + > + {visibleColumns.has("sanCn") && ( + + + )} - - )} - {visibleColumns.has("health") && ( - - {isRevoked ? ( - Critical - ) : ( - {label} + {visibleColumns.has("serialNumber") && ( + + {truncateSerialNumber(certificate.serialNumber)} + )} - - )} - {visibleColumns.has("issuedAt") && ( - - {certificate.notBefore - ? format(new Date(certificate.notBefore), "MMM d, yyyy") - : "-"} - - )} - {visibleColumns.has("expiresAt") && ( - - {certificate.notAfter - ? format(new Date(certificate.notAfter), "MMM d, yyyy") - : "-"} - - )} - {visibleColumns.has("ca") && ( - {certificate.caName || "-"} - )} - {visibleColumns.has("profile") && ( - - {certificate.profileName || "-"} - - )} - {visibleColumns.has("algorithm") && ( - - - {certificate.keyAlgorithm?.replace("_", "-") || "-"} - - - )} - {visibleColumns.has("source") && ( - - - {getCertSourceLabel(certificate.source ?? null)} - - - )} - -
-
{ - if (!canShowAutoRenewalIcon) return ""; - if (isAutoRenewalEnabled) return "opacity-100"; - return "opacity-0 group-hover:opacity-100"; - })()}`} - > - {canShowAutoRenewalIcon && - (() => { - const canEditCertificate = permission.can( - ProjectPermissionCertificateActions.Edit, - subject(ProjectPermissionSub.Certificates, { - commonName: certificate.commonName, - altNames: certificate.altNames?.split(",").map((s) => s.trim()), - serialNumber: certificate.serialNumber, - metadata: certificate.metadata - }) - ); - - const tooltipText = (() => { - if (hasFailed && certificate.renewalError) { - return `Auto-renewal failed: ${certificate.renewalError}`; - } - if (isAutoRenewalEnabled) { - const daysUntilExpiry = Math.ceil( - (new Date(certificate.notAfter).getTime() - - new Date().getTime()) / - MS_PER_DAY - ); - const daysUntilRenewal = Math.max( - 0, - daysUntilExpiry - (certificate.renewBeforeDays || 0) + {visibleColumns.has("enrollmentMethod") && ( + + {getEnrollmentMethodBadge(certificate.enrollmentType)} + + )} + {visibleColumns.has("status") && ( + + {isRevoked ? ( + Revoked + ) : isExpired ? ( + Expired + ) : ( + Active + )} + + )} + {visibleColumns.has("health") && ( + + {isRevoked ? ( + Critical + ) : ( + {label} + )} + + )} + {visibleColumns.has("issuedAt") && ( + + {certificate.notBefore + ? format(new Date(certificate.notBefore), "MMM d, yyyy") + : "-"} + + )} + {visibleColumns.has("expiresAt") && ( + + {certificate.notAfter + ? format(new Date(certificate.notAfter), "MMM d, yyyy") + : "-"} + + )} + {visibleColumns.has("ca") && ( + + {certificate.caName || "-"} + + )} + {visibleColumns.has("profile") && ( + + {certificate.profileName || "-"} + + )} + {visibleColumns.has("algorithm") && ( + + + {certificate.keyAlgorithm?.replace("_", "-") || "-"} + + + )} + {visibleColumns.has("source") && ( + + + {getCertSourceLabel(certificate.source ?? null)} + + + )} + +
+
{ + if (!canShowAutoRenewalIcon) return ""; + if (isAutoRenewalEnabled) return "opacity-100"; + return "opacity-0 group-hover:opacity-100"; + })()}`} + > + {canShowAutoRenewalIcon && + (() => { + const canEditCertificate = permission.can( + ProjectPermissionCertificateActions.Edit, + subject(ProjectPermissionSub.Certificates, { + commonName: certificate.commonName, + altNames: certificate.altNames?.split(",").map((s) => s.trim()), + serialNumber: certificate.serialNumber, + metadata: certificate.metadata + }) ); - return `Auto-renews in ${daysUntilRenewal}d`; - } - return "Set auto renewal"; - })(); - - return ( - - - - - {tooltipText} - - ); - })()} -
- - - e.stopPropagation()} - > - - - - - s.trim()), - serialNumber: certificate.serialNumber, - friendlyName: certificate.friendlyName, - metadata: certificate.metadata - })} - > - {(isAllowed) => ( - { - e.stopPropagation(); - handlePopUpOpen("certificateExport", { - certificateId: certificate.id, - serialNumber: certificate.serialNumber - }); - }} - > - - Export Certificate - - )} - - s.trim()), - serialNumber: certificate.serialNumber, - friendlyName: certificate.friendlyName, - metadata: certificate.metadata - })} - > - {(isAllowed) => ( - { - e.stopPropagation(); - handlePopUpOpen("certificateCert", { - serialNumber: certificate.serialNumber - }); - }} - > - - View Details - - )} - - {(() => { - const canManageRenewal = - certificate.profileId && - certificate.hasPrivateKey !== false && - !certificate.renewedByCertificateId && - !isRevoked && - !isExpired && - !hasFailed && - !isExpiringWithinDay; + const tooltipText = (() => { + if (hasFailed && certificate.renewalError) { + return `Auto-renewal failed: ${certificate.renewalError}`; + } + if (isAutoRenewalEnabled) { + const daysUntilExpiry = Math.ceil( + (new Date(certificate.notAfter).getTime() - + new Date().getTime()) / + MS_PER_DAY + ); + const daysUntilRenewal = Math.max( + 0, + daysUntilExpiry - (certificate.renewBeforeDays || 0) + ); + return `Auto-renews in ${daysUntilRenewal}d`; + } + return "Set auto renewal"; + })(); - if (!canManageRenewal) return null; + return ( + + + + + {tooltipText} + + ); + })()} +
+ + + e.stopPropagation()} + > + + + + s.trim()), @@ -942,55 +926,19 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi isDisabled={!isAllowed} onClick={(e) => { e.stopPropagation(); - const notAfterDate = new Date(certificate.notAfter); - const notBeforeDate = certificate.notBefore - ? new Date(certificate.notBefore) - : new Date(notAfterDate.getTime() - 365 * MS_PER_DAY); - const ttlDays = Math.max( - 1, - Math.ceil( - (notAfterDate.getTime() - notBeforeDate.getTime()) / - MS_PER_DAY - ) - ); - handlePopUpOpen("manageRenewal", { + handlePopUpOpen("certificateExport", { certificateId: certificate.id, - commonName: certificate.commonName, - profileId: certificate.profileId, - renewBeforeDays: certificate.renewBeforeDays, - ttlDays, - notAfter: certificate.notAfter, - renewalError: certificate.renewalError, - renewedFromCertificateId: - certificate.renewedFromCertificateId, - renewedByCertificateId: certificate.renewedByCertificateId + serialNumber: certificate.serialNumber }); }} > - - {isAutoRenewalEnabled - ? "Manage auto renewal" - : "Enable auto renewal"} + + Export Certificate )} - ); - })()} - {(() => { - const canDisableRenewal = - certificate.profileId && - certificate.hasPrivateKey !== false && - !certificate.renewedByCertificateId && - !isRevoked && - !isExpired && - !isExpiringWithinDay && - isAutoRenewalEnabled; - - if (!canDisableRenewal) return null; - - return ( s.trim()), @@ -1002,99 +950,236 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi {(isAllowed) => ( { + onClick={(e) => { e.stopPropagation(); - await handleDisableAutoRenewal( - certificate.id, - certificate.commonName - ); + handlePopUpOpen("certificateCert", { + serialNumber: certificate.serialNumber + }); }} > - - Disable auto renewal + + View Details )} - ); - })()} - {(() => { - const canRenew = - (certificate.profileId || certificate.caId) && - certificate.hasPrivateKey !== false && - !certificate.renewedByCertificateId && - !isRevoked && - !isExpired; + {(() => { + const canManageRenewal = + certificate.profileId && + certificate.hasPrivateKey !== false && + !certificate.renewedByCertificateId && + !isRevoked && + !isExpired && + !hasFailed && + !isExpiringWithinDay; - if (!canRenew) return null; + if (!canManageRenewal) return null; - return ( - s.trim()), - serialNumber: certificate.serialNumber, - friendlyName: certificate.friendlyName, - metadata: certificate.metadata - })} - > - {(isAllowed) => ( - { - e.stopPropagation(); - handlePopUpOpen("renewCertificate", { - certificateId: certificate.id, - commonName: certificate.commonName - }); - }} + return ( + s.trim()), + serialNumber: certificate.serialNumber, + friendlyName: certificate.friendlyName, + metadata: certificate.metadata + })} > - - Renew Now - - )} - - ); - })()} - {certificate.status === CertStatus.ACTIVE && - !certificate.renewedByCertificateId && - certificate.source !== CertSource.Discovered && ( - - {(isAllowed) => ( - { - e.stopPropagation(); - handlePopUpOpen("managePkiSyncs", { - certificateId: certificate.id, - commonName: certificate.commonName - }); - }} + {(isAllowed) => ( + { + e.stopPropagation(); + const notAfterDate = new Date(certificate.notAfter); + const notBeforeDate = certificate.notBefore + ? new Date(certificate.notBefore) + : new Date(notAfterDate.getTime() - 365 * MS_PER_DAY); + const ttlDays = Math.max( + 1, + Math.ceil( + (notAfterDate.getTime() - notBeforeDate.getTime()) / + MS_PER_DAY + ) + ); + handlePopUpOpen("manageRenewal", { + certificateId: certificate.id, + commonName: certificate.commonName, + profileId: certificate.profileId, + renewBeforeDays: certificate.renewBeforeDays, + ttlDays, + notAfter: certificate.notAfter, + renewalError: certificate.renewalError, + renewedFromCertificateId: + certificate.renewedFromCertificateId, + renewedByCertificateId: + certificate.renewedByCertificateId + }); + }} + > + + {isAutoRenewalEnabled + ? "Manage auto renewal" + : "Enable auto renewal"} + + )} + + ); + })()} + {(() => { + const canDisableRenewal = + certificate.profileId && + certificate.hasPrivateKey !== false && + !certificate.renewedByCertificateId && + !isRevoked && + !isExpired && + !isExpiringWithinDay && + isAutoRenewalEnabled; + + if (!canDisableRenewal) return null; + + return ( + s.trim()), + serialNumber: certificate.serialNumber, + friendlyName: certificate.friendlyName, + metadata: certificate.metadata + })} > - - Manage PKI Syncs - + {(isAllowed) => ( + { + e.stopPropagation(); + await handleDisableAutoRenewal( + certificate.id, + certificate.commonName + ); + }} + > + + Disable auto renewal + + )} + + ); + })()} + {(() => { + const canRenew = + (certificate.profileId || certificate.caId) && + certificate.hasPrivateKey !== false && + !certificate.renewedByCertificateId && + !isRevoked && + !isExpired; + + if (!canRenew) return null; + + return ( + s.trim()), + serialNumber: certificate.serialNumber, + friendlyName: certificate.friendlyName, + metadata: certificate.metadata + })} + > + {(isAllowed) => ( + { + e.stopPropagation(); + handlePopUpOpen("renewCertificate", { + certificateId: certificate.id, + commonName: certificate.commonName + }); + }} + > + + Renew Now + + )} + + ); + })()} + {certificate.status === CertStatus.ACTIVE && + !certificate.renewedByCertificateId && + certificate.source !== CertSource.Discovered && ( + + {(isAllowed) => ( + { + e.stopPropagation(); + handlePopUpOpen("managePkiSyncs", { + certificateId: certificate.id, + commonName: certificate.commonName + }); + }} + > + + Manage PKI Syncs + + )} + )} - - )} - {(() => { - const caType = caCapabilityMap[certificate.caId]; - const supportsRevocation = - !caType || - caSupportsCapability(caType, CaCapability.REVOKE_CERTIFICATES); + {(() => { + const caType = caCapabilityMap[certificate.caId]; + const supportsRevocation = + !caType || + caSupportsCapability(caType, CaCapability.REVOKE_CERTIFICATES); - if ( - !supportsRevocation || - isRevoked || - certificate.source === CertSource.Discovered - ) { - return null; - } + if ( + !supportsRevocation || + isRevoked || + certificate.source === CertSource.Discovered + ) { + return null; + } - return ( + return ( + s.trim()), + serialNumber: certificate.serialNumber, + friendlyName: certificate.friendlyName, + metadata: certificate.metadata + })} + > + {(isAllowed) => ( + { + e.stopPropagation(); + handlePopUpOpen("revokeCertificate", { + certificateId: certificate.id + }); + }} + > + + Revoke Certificate + + )} + + ); + })()} { e.stopPropagation(); - handlePopUpOpen("revokeCertificate", { - certificateId: certificate.id + handlePopUpOpen("deleteCertificate", { + certificateId: certificate.id, + commonName: certificate.commonName }); }} > - - Revoke Certificate + + Delete Certificate )} - ); - })()} - s.trim()), - serialNumber: certificate.serialNumber, - friendlyName: certificate.friendlyName, - metadata: certificate.metadata - })} - > - {(isAllowed) => ( - { - e.stopPropagation(); - handlePopUpOpen("deleteCertificate", { - certificateId: certificate.id, - commonName: certificate.commonName - }); - }} - > - - Delete Certificate - - )} - - - -
- - - ); - })} - - - {!isPending && (data?.totalCount || 0) >= PER_PAGE_INIT && ( - setPage(newPage)} - onChangePerPage={(newPerPage) => setPerPage(newPerPage)} - /> + + +
+
+
+ ); + })} +
+
+ {!isPending && (data?.totalCount || 0) >= PER_PAGE_INIT && ( + setPage(newPage)} + onChangePerPage={(newPerPage) => setPerPage(newPerPage)} + /> + )} + )} {!isPending && !certificates.length && ( @@ -1184,7 +1243,7 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi isOpen={isSaveViewOpen} onOpenChange={setIsSaveViewOpen} projectId={currentProject?.id ?? ""} - filters={appliedFilters.length > 0 ? appliedFilters : pendingFilters} + filters={pendingFilters.length > 0 ? pendingFilters : appliedFilters} onViewCreated={(viewId, viewFilters) => { handleSelectView(viewId, viewFilters); }} diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx index d950b592d51..135c34ae546 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx @@ -5,6 +5,7 @@ import { UnstableDropdownMenuCheckboxItem, UnstableDropdownMenuContent, UnstableDropdownMenuLabel, + UnstableDropdownMenuSeparator, UnstableDropdownMenuTrigger, UnstableIconButton } from "@app/components/v3"; @@ -29,11 +30,13 @@ export const INVENTORY_COLUMNS: ColumnDef[] = [ { key: "source", label: "Source", defaultVisible: false } ]; -const STORAGE_KEY = "cert-inventory-columns"; +const STORAGE_KEY_PREFIX = "cert-inventory-columns"; -export const getDefaultVisibleColumns = (): Set => { +const getStorageKey = (projectId: string) => `${STORAGE_KEY_PREFIX}:${projectId}`; + +export const getDefaultVisibleColumns = (projectId: string): Set => { try { - const stored = localStorage.getItem(STORAGE_KEY); + const stored = localStorage.getItem(getStorageKey(projectId)); if (stored) { return new Set(JSON.parse(stored) as string[]); } @@ -43,9 +46,9 @@ export const getDefaultVisibleColumns = (): Set => { return new Set(INVENTORY_COLUMNS.filter((c) => c.defaultVisible).map((c) => c.key)); }; -export const saveVisibleColumns = (columns: Set) => { +export const saveVisibleColumns = (columns: Set, projectId: string) => { try { - localStorage.setItem(STORAGE_KEY, JSON.stringify([...columns])); + localStorage.setItem(getStorageKey(projectId), JSON.stringify([...columns])); } catch { // ignore } @@ -54,10 +57,18 @@ export const saveVisibleColumns = (columns: Set) => { type Props = { visibleColumns: Set; onChange: (columns: Set) => void; + projectId: string; }; -export const ColumnVisibilityToggle = ({ visibleColumns, onChange }: Props) => { - const hasHiddenColumns = visibleColumns.size < INVENTORY_COLUMNS.length; +export const ColumnVisibilityToggle = ({ visibleColumns, onChange, projectId }: Props) => { + const allColumnKeys = INVENTORY_COLUMNS.map((c) => c.key); + const allVisible = visibleColumns.size === INVENTORY_COLUMNS.length; + + const handleToggleAll = () => { + const next = allVisible ? new Set() : new Set(allColumnKeys); + onChange(next); + saveVisibleColumns(next, projectId); + }; const handleToggle = (key: string) => { const next = new Set(visibleColumns); @@ -67,7 +78,7 @@ export const ColumnVisibilityToggle = ({ visibleColumns, onChange }: Props) => { next.add(key); } onChange(next); - saveVisibleColumns(next); + saveVisibleColumns(next, projectId); }; return ( @@ -75,7 +86,7 @@ export const ColumnVisibilityToggle = ({ visibleColumns, onChange }: Props) => {
@@ -85,11 +96,20 @@ export const ColumnVisibilityToggle = ({ visibleColumns, onChange }: Props) => { Columns + e.preventDefault()} + > + {allVisible ? "Hide All" : "Show All"} + + {INVENTORY_COLUMNS.map((col) => ( handleToggle(col.key)} + onSelect={(e) => e.preventDefault()} > {col.label} diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx index 139c7befd32..f0807c3031f 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx @@ -42,6 +42,11 @@ const getFieldDef = ( return baseDef; }; +const parseLocalDate = (dateStr: string): Date => { + const [year, month, day] = dateStr.split("-").map(Number); + return new Date(year, month - 1, day); +}; + const DatePickerInput = ({ value, onChange @@ -49,7 +54,7 @@ const DatePickerInput = ({ value: string | null; onChange: (val: string) => void; }) => { - const selectedDate = value ? new Date(value) : undefined; + const selectedDate = value ? parseLocalDate(value) : undefined; return ( @@ -127,6 +132,8 @@ const FilterRow = ({ placeholder="Select..." className="w-full text-sm" maxMenuHeight={160} + menuPortalTarget={document.body} + menuPosition="fixed" /> ); } @@ -273,7 +280,7 @@ export const FilterBuilder = ({ No filters applied. Click "Add filter" to get started.

) : ( -
+
{rules.map((rule, index) => (
{index > 0 && ( diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx index e84511c1b74..47dc9bda769 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx @@ -9,6 +9,7 @@ import { DialogFooter, DialogHeader, DialogTitle, + Switch, UnstableInput } from "@app/components/v3"; import { useCreateCertificateInventoryView } from "@app/hooks/api/certificateInventoryViews"; @@ -32,6 +33,7 @@ export const SaveViewModal = ({ onViewCreated }: Props) => { const [name, setName] = useState(""); + const [isShared, setIsShared] = useState(false); const { mutateAsync: createView, isPending } = useCreateCertificateInventoryView(); const handleSave = async () => { @@ -42,13 +44,15 @@ export const SaveViewModal = ({ const result = await createView({ projectId, name: name.trim(), - filters: apiFilters + filters: apiFilters, + isShared }); createNotification({ text: `View "${name}" saved successfully`, type: "success" }); setName(""); + setIsShared(false); onOpenChange(false); if (onViewCreated && result?.id) { onViewCreated(result.id, apiFilters); @@ -65,7 +69,10 @@ export const SaveViewModal = ({ { - if (!open) setName(""); + if (!open) { + setName(""); + setIsShared(false); + } onOpenChange(open); }} > @@ -86,6 +93,11 @@ export const SaveViewModal = ({ autoFocus className="mt-2" /> + {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */} + diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/ViewsDropdown.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/ViewsDropdown.tsx index 39de85f1684..f932351f503 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/ViewsDropdown.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/ViewsDropdown.tsx @@ -1,13 +1,18 @@ -import { ChevronDownIcon, Trash2Icon } from "lucide-react"; +import { useState } from "react"; +import { CheckIcon, ChevronDownIcon, GlobeIcon, Trash2Icon, XIcon } from "lucide-react"; import { + Tooltip, + TooltipContent, + TooltipTrigger, UnstableDropdownMenu, UnstableDropdownMenuContent, UnstableDropdownMenuLabel, UnstableDropdownMenuRadioGroup, UnstableDropdownMenuRadioItem, UnstableDropdownMenuSeparator, - UnstableDropdownMenuTrigger + UnstableDropdownMenuTrigger, + UnstableIconButton } from "@app/components/v3"; import { TSystemView } from "@app/hooks/api/certificateInventoryViews"; import type { @@ -19,25 +24,106 @@ import type { type Props = { activeViewId: string | null; systemViews: TSystemView[]; - customViews: (TCertificateInventoryView & { isSystem: false })[]; + sharedViews: (TCertificateInventoryView & { isSystem: false; isShared: true })[]; + customViews: (TCertificateInventoryView & { isSystem: false; isShared: false })[]; + currentUserId?: string; onSelectView: (viewId: string, filters: TInventoryViewFilters | TSystemViewFilters) => void; onDeleteView: (viewId: string) => void; + onToggleShare?: (viewId: string, isShared: boolean) => void; }; export const ViewsDropdown = ({ activeViewId, systemViews, + sharedViews, customViews, + currentUserId, onSelectView, - onDeleteView + onDeleteView, + onToggleShare }: Props) => { + const [pendingDeleteId, setPendingDeleteId] = useState(null); + const activeView = systemViews.find((v) => v.id === activeViewId) || + sharedViews.find((v) => v.id === activeViewId) || customViews.find((v) => v.id === activeViewId); const label = activeView?.name || "All Certificates"; + const renderActions = (viewId: string, isShared: boolean) => { + if (pendingDeleteId === viewId) { + return ( +
+ { + e.stopPropagation(); + onDeleteView(viewId); + setPendingDeleteId(null); + }} + className="text-red-400 hover:text-red-300" + > + + + { + e.stopPropagation(); + setPendingDeleteId(null); + }} + className="text-muted hover:text-foreground" + > + + +
+ ); + } + + return ( +
+ {onToggleShare && ( + + + { + e.stopPropagation(); + onToggleShare(viewId, !isShared); + }} + className="text-muted hover:text-foreground" + > + + + + + {isShared ? "Make personal" : "Share with team"} + + + )} + { + e.stopPropagation(); + setPendingDeleteId(viewId); + }} + className="text-muted hover:text-red-400" + > + + +
+ ); + }; + return ( - + setPendingDeleteId(null)}> + {view.name} + {renderActions(view.id, false)} ))} diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/inventory-types.ts b/frontend/src/pages/cert-manager/CertificatesPage/components/inventory-types.ts index 46be045d55a..0375ebf1d54 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/inventory-types.ts +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/inventory-types.ts @@ -60,8 +60,8 @@ export const FILTER_FIELDS: FilterFieldDefinition[] = [ { key: "keyAlgorithm", label: "Algorithm", - operators: [{ value: "is", label: "is" }], - valueType: "select", + operators: [{ value: "in", label: "in" }], + valueType: "multi-select", options: [ { value: "RSA_2048", label: "RSA-2048" }, { value: "RSA_3072", label: "RSA-3072" }, @@ -88,8 +88,8 @@ export const FILTER_FIELDS: FilterFieldDefinition[] = [ { key: "source", label: "Source", - operators: [{ value: "is", label: "is" }], - valueType: "select", + operators: [{ value: "in", label: "in" }], + valueType: "multi-select", options: [ { value: "issued", label: "Managed" }, { value: "discovered", label: "Discovered" }, @@ -142,12 +142,16 @@ export const filtersToSearchParams = (rules: FilterRule[]): TInventoryViewFilter } break; case "keyAlgorithm": - if (rule.value) { + if (Array.isArray(rule.value) && rule.value.length > 0) { + params.keyAlgorithm = rule.value; + } else if (rule.value) { params.keyAlgorithm = rule.value as string; } break; case "source": - if (rule.value) { + if (Array.isArray(rule.value) && rule.value.length > 0) { + params.source = rule.value; + } else if (rule.value) { params.source = rule.value as string; } break; diff --git a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx index 14ebcaadca2..ffe659fe6d0 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx @@ -75,20 +75,20 @@ export const DashboardPage = () => { ) : (
-
+
- +
)} diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx index 1288411f5f9..2facd20ccd2 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx @@ -12,6 +12,7 @@ import { import { Button, UnstableCard, + UnstableCardAction, UnstableCardContent, UnstableCardHeader, UnstableCardTitle, @@ -43,20 +44,22 @@ export const ActivityTrend = ({ data, onRangeChange, currentRange }: Props) => { ); return ( - - Certificate Activity Trend -
- {ranges.map((r) => ( - - ))} -
+ + Certificate Activity Trend + +
+ {ranges.map((r) => ( + + ))} +
+
{!hasAnyData ? ( diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx index 4c5d862309e..daf272a21f7 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx @@ -6,6 +6,7 @@ import { TooltipTrigger, UnstableCard, UnstableCardContent, + UnstableCardDescription, UnstableCardHeader, UnstableCardTitle, UnstableEmpty, @@ -51,12 +52,12 @@ const DonutChart = ({ }; return ( - + -
- {title} - {subtitle &&

{subtitle}

} -
+ {title} + {subtitle && ( + {subtitle} + )}
{nonZeroData.length === 0 ? ( diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx index 2322a0af502..ca96919b65e 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx @@ -7,6 +7,7 @@ import { TooltipTrigger, UnstableCard, UnstableCardContent, + UnstableCardDescription, UnstableCardHeader, UnstableCardTitle, UnstableEmpty, @@ -63,12 +64,14 @@ export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { const total = chartData.reduce((sum, d) => sum + d.count, 0); return ( - + Expiration Timeline -

Certificates by time to expiry

+ + Certificates by time to expiry +
{nonZeroData.length === 0 ? ( diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/KpiCards.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/KpiCards.tsx index 47476d2d6f5..426ec310056 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/KpiCards.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/KpiCards.tsx @@ -95,7 +95,7 @@ const getBadge = (key: string, stats: TDashboardStats) => { export const KpiCards = ({ stats, onNavigate }: Props) => { return ( -
+
{cards.map((card) => { const Icon = card.icon; const count = stats.totals[card.key]; @@ -103,7 +103,7 @@ export const KpiCards = ({ stats, onNavigate }: Props) => { return ( onNavigate(card.filters)} > diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx index 242387b8f0d..7720ad0c403 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx @@ -80,7 +80,7 @@ const MandateCountdown = () => { ); return ( - + CA/B Forum Mandate Deadlines @@ -110,11 +110,11 @@ const MandateCountdown = () => {
{daysUntil} - days + days

{phase.description}

-

+

{phase.date.toLocaleDateString("en-US", { month: "short", day: "numeric", @@ -156,7 +156,7 @@ const ProjectedRenewals = ({ activeCerts }: { activeCerts: number }) => { if (activeCerts === 0) return null; return ( - + Projected Annual Renewals @@ -193,9 +193,24 @@ const ProjectedRenewals = ({ activeCerts }: { activeCerts: number }) => { formatter={(value) => [Number(value).toLocaleString(), "Renewals/year"]} cursor={{ fill: "none" }} /> + + {data.map((entry) => ( + + + + + ))} + {data.map((entry) => ( - + ))} @@ -225,7 +240,7 @@ const ValidityDistribution = ({ buckets }: { buckets: TDashboardStats["validityB if (total === 0) return null; return ( - + Certificates by Validity Period diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/chart-theme.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/chart-theme.tsx index 240198b2bae..5642f494bb2 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/chart-theme.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/chart-theme.tsx @@ -10,14 +10,19 @@ export const CHART_COLORS = [ ]; export const CHART_COLORS_HEX = [ - "#63b0bd", - "#f1c40f", - "#adaeb0", - "#7d7f80", - "#707174", - "#2ecc71", - "#30b3ff", - "#e74c3c" + "#63b0bd", // teal (info) + "#f1c40f", // gold (warning) + "#6dbf8b", // sage green + "#c084d8", // soft purple + "#e8855e", // burnt orange + "#5b9bd5", // steel blue + "#e06b8f", // dusty rose + "#85c46c", // leaf green + "#d4a054", // amber + "#7b8ec4", // periwinkle + "#cb6b6b", // muted red + "#4fc1b0", // seafoam + "#b8a060" // olive gold ]; export const TREND_COLORS = { diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx index 6cb08599cdd..6f33b2c5104 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx @@ -710,6 +710,9 @@ export const projectRoleFormSchema = z.object({ .default([]), [ProjectPermissionSub.PkiAlerts]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.PkiCollections]: GeneralPolicyActionSchema.array().default([]), + [ProjectPermissionSub.CertificateInventoryViews]: GeneralPolicyActionSchema.array().default( + [] + ), [ProjectPermissionSub.PkiDiscovery]: z .object({ read: z.boolean().optional(), @@ -1031,6 +1034,7 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => { ProjectPermissionSub.Member, ProjectPermissionSub.Groups, ProjectPermissionSub.PkiCollections, + ProjectPermissionSub.CertificateInventoryViews, ProjectPermissionSub.Tags, ProjectPermissionSub.SecretRotation, ProjectPermissionSub.Kms, @@ -2740,6 +2744,16 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = { { label: "Remove", value: "delete", description: "Delete PKI alerts" } ] }, + [ProjectPermissionSub.CertificateInventoryViews]: { + title: "Inventory Views", + description: "Manage saved certificate inventory views and filters", + actions: [ + { label: "Read", value: "read", description: "View saved inventory views" }, + { label: "Create", value: "create", description: "Create new inventory views" }, + { label: "Modify", value: "edit", description: "Update inventory views and toggle sharing" }, + { label: "Remove", value: "delete", description: "Delete inventory views" } + ] + }, [ProjectPermissionSub.SecretApproval]: { title: "Approval Policies", description: "Define approval workflows for secret changes and access requests", @@ -3392,6 +3406,7 @@ const KmsPermissionSubjects = (enabled = false) => ({ const CertificateManagerPermissionSubjects = (enabled = false) => ({ [ProjectPermissionSub.PkiCollections]: enabled, [ProjectPermissionSub.PkiAlerts]: enabled, + [ProjectPermissionSub.CertificateInventoryViews]: enabled, [ProjectPermissionSub.PkiSubscribers]: enabled, [ProjectPermissionSub.PkiSyncs]: enabled, [ProjectPermissionSub.CertificateAuthorities]: enabled, @@ -3688,6 +3703,10 @@ export const RoleTemplates: Record = { subject: ProjectPermissionSub.PkiAlerts, actions: [ProjectPermissionActions.Read] }, + { + subject: ProjectPermissionSub.CertificateInventoryViews, + actions: Object.values(ProjectPermissionActions) + }, { subject: ProjectPermissionSub.CertificateAuthorities, actions: [ProjectPermissionActions.Read] @@ -3726,6 +3745,10 @@ export const RoleTemplates: Record = { subject: ProjectPermissionSub.PkiAlerts, actions: Object.values(ProjectPermissionActions) }, + { + subject: ProjectPermissionSub.CertificateInventoryViews, + actions: Object.values(ProjectPermissionActions) + }, { subject: ProjectPermissionSub.CertificateAuthorities, actions: Object.values(ProjectPermissionActions) From deb255f4e7b33895fd58939607190eba5fc70f54 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 13:28:46 -0400 Subject: [PATCH 136/562] fix: lint error from removed name variable in error message --- backend/src/ee/services/gateway-v2/gateway-v2-service.ts | 4 ++-- frontend/src/hooks/api/gateways/queries.tsx | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index cf4063c3b3e..c3e56a6f038 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -841,7 +841,7 @@ export const gatewayV2ServiceFactory = ({ return await $issueGatewayCerts({ orgId, orgCAs, relayName, gateway }); } catch (err) { if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { - throw new BadRequestError({ message: `Gateway with name "${name}" already exists` }); + throw new BadRequestError({ message: "A gateway with this name already exists" }); } throw err; @@ -1416,7 +1416,7 @@ export const gatewayV2ServiceFactory = ({ }; } catch (err) { if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { - throw new BadRequestError({ message: `Gateway with name "${name}" already exists` }); + throw new BadRequestError({ message: "A gateway with this name already exists" }); } throw err; } diff --git a/frontend/src/hooks/api/gateways/queries.tsx b/frontend/src/hooks/api/gateways/queries.tsx index 9015f2bb171..89f662db9b2 100644 --- a/frontend/src/hooks/api/gateways/queries.tsx +++ b/frontend/src/hooks/api/gateways/queries.tsx @@ -52,7 +52,8 @@ export const gatewaysQueryKeys = { })), ...dataV2.map((g) => { const hasHeartbeat = !!g.heartbeat; - const hasToken = g.enrollmentTokenStatus === "pending" || g.enrollmentTokenStatus === "expired"; + const hasToken = + g.enrollmentTokenStatus === "pending" || g.enrollmentTokenStatus === "expired"; const isPending = hasToken && !hasHeartbeat; const hasReEnrollToken = g.enrollmentTokenStatus === "pending" && hasHeartbeat; From a84247b716947840d4c75c7150d5105c2d3cc7bb Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 15 Apr 2026 14:46:15 -0300 Subject: [PATCH 137/562] Fix schema issue --- backend/src/db/schemas/certificate-inventory-views.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/db/schemas/certificate-inventory-views.ts b/backend/src/db/schemas/certificate-inventory-views.ts index 9f7790fba48..d500d35bb62 100644 --- a/backend/src/db/schemas/certificate-inventory-views.ts +++ b/backend/src/db/schemas/certificate-inventory-views.ts @@ -14,9 +14,9 @@ export const CertificateInventoryViewsSchema = z.object({ filters: z.unknown(), columns: z.unknown().nullable().optional(), createdByUserId: z.string().uuid().nullable().optional(), - isShared: z.boolean().default(false), createdAt: z.date(), - updatedAt: z.date() + updatedAt: z.date(), + isShared: z.boolean().default(false) }); export type TCertificateInventoryViews = z.infer; From 5ea6e3dfbfd7919bdb91225153d4eb2e04354567 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 15 Apr 2026 10:56:17 -0700 Subject: [PATCH 138/562] chore: update to shared with cache util --- .../ee/services/insights/insights-service.ts | 504 +++++++++--------- 1 file changed, 258 insertions(+), 246 deletions(-) diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts index 4b819407b7a..a1071ea1480 100644 --- a/backend/src/ee/services/insights/insights-service.ts +++ b/backend/src/ee/services/insights/insights-service.ts @@ -9,6 +9,7 @@ import { TPermissionServiceFactory } from "@app/ee/services/permission/permissio import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; import { KeyStorePrefixes, KeyStoreTtls, TKeyStoreFactory } from "@app/keystore/keystore"; +import { withCache } from "@app/lib/cache/with-cache"; import { BadRequestError } from "@app/lib/errors"; import { OrgServiceActor } from "@app/lib/types"; import { ActorType } from "@app/services/auth/auth-type"; @@ -87,15 +88,6 @@ export const insightsServiceFactory = ({ userDAL, keyStore }: TInsightsServiceFactoryDep) => { - const withCache = async (cacheKey: string, fn: () => Promise): Promise => { - const cached = await keyStore.getItem(cacheKey); - if (cached) return JSON.parse(cached) as T; - - const result = await fn(); - await keyStore.setItemWithExpiry(cacheKey, KeyStoreTtls.InsightsCacheInSeconds, JSON.stringify(result)); - return result; - }; - const fetchReminders = async (projectId: string, startDate: Date, endDate: Date) => { const rawReminders = await reminderDAL.findByProjectAndDateRange({ projectId, startDate, endDate }); if (!rawReminders.length) return []; @@ -123,35 +115,40 @@ export const insightsServiceFactory = ({ await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `calendar:${dto.year}-${dto.month}`); - return withCache(cacheKey, async () => { - const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); - if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - - // Pad by 1 day on each side so events near month boundaries are captured - // regardless of the caller's timezone offset from UTC. - const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 0)); - const endDate = new Date(Date.UTC(dto.year, dto.month, 1, 23, 59, 59, 999)); - - const [rotations, reminders] = await Promise.all([ - secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), - fetchReminders(dto.projectId, startDate, endDate) - ]); - - return { - rotations: rotations.map((r) => ({ - id: r.id, - name: r.name, - type: r.type, - nextRotationAt: r.nextRotationAt ?? null, - environment: r.environment.slug, - secretPath: r.folder.path, - secretKeys: r.secretKeys, - rotationInterval: r.rotationInterval, - rotationStatus: r.rotationStatus, - isAutoRotationEnabled: r.isAutoRotationEnabled - })), - reminders - }; + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + + // Pad by 1 day on each side so events near month boundaries are captured + // regardless of the caller's timezone offset from UTC. + const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 0)); + const endDate = new Date(Date.UTC(dto.year, dto.month, 1, 23, 59, 59, 999)); + + const [rotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), + fetchReminders(dto.projectId, startDate, endDate) + ]); + + return { + rotations: rotations.map((r) => ({ + id: r.id, + name: r.name, + type: r.type, + nextRotationAt: r.nextRotationAt ?? null, + environment: r.environment.slug, + secretPath: r.folder.path, + secretKeys: r.secretKeys, + rotationInterval: r.rotationInterval, + rotationStatus: r.rotationStatus, + isAutoRotationEnabled: r.isAutoRotationEnabled + })), + reminders + }; + } }); }; @@ -159,78 +156,83 @@ export const insightsServiceFactory = ({ await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, "access-volume"); - return withCache(cacheKey, async () => { - const now = new Date(); - const todayStr = now.toISOString().slice(0, 10); - const endDate = new Date(`${todayStr}T23:59:59.999Z`); - const startDate = new Date(`${todayStr}T00:00:00.000Z`); - startDate.setUTCDate(startDate.getUTCDate() - 6); - - const rows = await auditLogDAL.countByDateAndActor({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); - - // Resolve user display names from userIds in audit log metadata - const userIds = [ - ...new Set( - rows - .filter((r) => r.actor === ActorType.USER) - .map((r) => (r.actorMetadata as Record | null)?.userId) - .filter(Boolean) as string[] - ) - ]; - const userNameMap = new Map(); - if (userIds.length > 0) { - const users = await userDAL.find({ $in: { id: userIds } }); - users.forEach((u) => { - const displayName = [u.firstName, u.lastName].filter(Boolean).join(" "); - if (displayName) userNameMap.set(u.id, displayName); + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const now = new Date(); + const todayStr = now.toISOString().slice(0, 10); + const endDate = new Date(`${todayStr}T23:59:59.999Z`); + const startDate = new Date(`${todayStr}T00:00:00.000Z`); + startDate.setUTCDate(startDate.getUTCDate() - 6); + + const rows = await auditLogDAL.countByDateAndActor({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() }); - } - - // Pre-populate the last 7 days - const dayMap = new Map>(); - for (let i = 6; i >= 0; i -= 1) { - const d = new Date(`${todayStr}T00:00:00.000Z`); - d.setUTCDate(d.getUTCDate() - i); - dayMap.set(d.toISOString().slice(0, 10), new Map()); - } - rows.forEach((row) => { - const dateKey = typeof row.date === "string" ? row.date : new Date(row.date).toISOString().slice(0, 10); - const actorMap = dayMap.get(dateKey); - if (!actorMap) return; - - const actorMeta = row.actorMetadata as Record | null; - let actorName: string; - if (row.actor === ActorType.USER && actorMeta?.userId) { - actorName = userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; - } else if (row.actor === ActorType.USER) { - actorName = actorMeta?.email || actorMeta?.username || "Unknown"; - } else { - actorName = actorMeta?.name || actorMeta?.identityId || "Unknown"; + // Resolve user display names from userIds in audit log metadata + const userIds = [ + ...new Set( + rows + .filter((r) => r.actor === ActorType.USER) + .map((r) => (r.actorMetadata as Record | null)?.userId) + .filter(Boolean) as string[] + ) + ]; + const userNameMap = new Map(); + if (userIds.length > 0) { + const users = await userDAL.find({ $in: { id: userIds } }); + users.forEach((u) => { + const displayName = [u.firstName, u.lastName].filter(Boolean).join(" "); + if (displayName) userNameMap.set(u.id, displayName); + }); } - const actorKey = `${row.actor}:${actorName}`; - const existing = actorMap.get(actorKey); - if (existing) { - existing.count += row.count; - } else { - actorMap.set(actorKey, { name: actorName, type: row.actor, count: row.count }); + // Pre-populate the last 7 days + const dayMap = new Map>(); + for (let i = 6; i >= 0; i -= 1) { + const d = new Date(`${todayStr}T00:00:00.000Z`); + d.setUTCDate(d.getUTCDate() - i); + dayMap.set(d.toISOString().slice(0, 10), new Map()); } - }); - const days = Array.from(dayMap.entries()).map(([date, actorMap]) => { - const actors = Array.from(actorMap.values()).sort((a, b) => b.count - a.count); - const total = actors.reduce((sum, a) => sum + a.count, 0); - return { date, total, actors }; - }); + rows.forEach((row) => { + const dateKey = typeof row.date === "string" ? row.date : new Date(row.date).toISOString().slice(0, 10); + const actorMap = dayMap.get(dateKey); + if (!actorMap) return; + + const actorMeta = row.actorMetadata as Record | null; + let actorName: string; + if (row.actor === ActorType.USER && actorMeta?.userId) { + actorName = userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; + } else if (row.actor === ActorType.USER) { + actorName = actorMeta?.email || actorMeta?.username || "Unknown"; + } else { + actorName = actorMeta?.name || actorMeta?.identityId || "Unknown"; + } + const actorKey = `${row.actor}:${actorName}`; + + const existing = actorMap.get(actorKey); + if (existing) { + existing.count += row.count; + } else { + actorMap.set(actorKey, { name: actorName, type: row.actor, count: row.count }); + } + }); + + const days = Array.from(dayMap.entries()).map(([date, actorMap]) => { + const actors = Array.from(actorMap.values()).sort((a, b) => b.count - a.count); + const total = actors.reduce((sum, a) => sum + a.count, 0); + return { date, total, actors }; + }); - return { days }; + return { days }; + } }); }; @@ -317,75 +319,80 @@ export const insightsServiceFactory = ({ await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `auth-methods:${dto.days}`); - return withCache(cacheKey, async () => { - const endDate = new Date(); - const startDate = new Date(); - startDate.setUTCDate(startDate.getUTCDate() - dto.days); - - const authRows = await auditLogDAL.countByAuthMethod({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); - - const methodCounts = new Map(); - - const authMethodLabels: Record = { - email: "Email", - google: "Google", - github: "GitHub", - gitlab: "GitLab", - "okta-saml": "Okta SAML", - "azure-saml": "Azure SAML", - "jumpcloud-saml": "JumpCloud SAML", - "google-saml": "Google SAML", - "keycloak-saml": "Keycloak SAML", - ldap: "LDAP", - oidc: "OIDC" - }; - - const identityAuthMethodLabels: Record = { - [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", - [IdentityAuthMethod.TOKEN_AUTH]: "Token Auth", - [IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes", - [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", - [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", - [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth", - [IdentityAuthMethod.OIDC_AUTH]: "OIDC", - [IdentityAuthMethod.JWT_AUTH]: "JWT Auth", - [IdentityAuthMethod.LDAP_AUTH]: "LDAP Auth", - [IdentityAuthMethod.ALICLOUD_AUTH]: "AliCloud Auth", - [IdentityAuthMethod.TLS_CERT_AUTH]: "TLS Certificate", - [IdentityAuthMethod.OCI_AUTH]: "OCI Auth", - [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" - }; - - authRows.forEach((row) => { - const actorMeta = row.actorMetadata as Record | null; - let method = "Unknown"; - - if (row.actor === "user") { - const raw = (actorMeta?.authMethod as string) || "Unknown"; - method = authMethodLabels[raw] || raw; - } else if (row.actor === "identity") { - const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; - method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; - } else if (row.actor === "service") { - method = "Service Token"; - } else { - method = row.actor; - } + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const endDate = new Date(); + const startDate = new Date(); + startDate.setUTCDate(startDate.getUTCDate() - dto.days); + + const authRows = await auditLogDAL.countByAuthMethod({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() + }); - methodCounts.set(method, (methodCounts.get(method) || 0) + (row.count || 0)); - }); + const methodCounts = new Map(); + + const authMethodLabels: Record = { + email: "Email", + google: "Google", + github: "GitHub", + gitlab: "GitLab", + "okta-saml": "Okta SAML", + "azure-saml": "Azure SAML", + "jumpcloud-saml": "JumpCloud SAML", + "google-saml": "Google SAML", + "keycloak-saml": "Keycloak SAML", + ldap: "LDAP", + oidc: "OIDC" + }; + + const identityAuthMethodLabels: Record = { + [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", + [IdentityAuthMethod.TOKEN_AUTH]: "Token Auth", + [IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes", + [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", + [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", + [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth", + [IdentityAuthMethod.OIDC_AUTH]: "OIDC", + [IdentityAuthMethod.JWT_AUTH]: "JWT Auth", + [IdentityAuthMethod.LDAP_AUTH]: "LDAP Auth", + [IdentityAuthMethod.ALICLOUD_AUTH]: "AliCloud Auth", + [IdentityAuthMethod.TLS_CERT_AUTH]: "TLS Certificate", + [IdentityAuthMethod.OCI_AUTH]: "OCI Auth", + [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" + }; + + authRows.forEach((row) => { + const actorMeta = row.actorMetadata as Record | null; + let method = "Unknown"; + + if (row.actor === "user") { + const raw = (actorMeta?.authMethod as string) || "Unknown"; + method = authMethodLabels[raw] || raw; + } else if (row.actor === "identity") { + const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; + method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; + } else if (row.actor === "service") { + method = "Service Token"; + } else { + method = row.actor; + } + + methodCounts.set(method, (methodCounts.get(method) || 0) + (row.count || 0)); + }); - const methods = Array.from(methodCounts.entries()) - .map(([method, count]) => ({ method, count })) - .sort((a, b) => b.count - a.count); + const methods = Array.from(methodCounts.entries()) + .map(([method, count]) => ({ method, count })) + .sort((a, b) => b.count - a.count); - return { methods }; + return { methods }; + } }); }; @@ -396,83 +403,88 @@ export const insightsServiceFactory = ({ dto.projectId, `summary:${dto.staleSecretsOffset ?? 0}:${dto.staleSecretsLimit ?? 50}` ); - return withCache(cacheKey, async () => { - const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); - if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - - const now = new Date(); - const in7Days = new Date(now); - in7Days.setDate(now.getDate() + 7); - const lookback90Days = new Date(now); - lookback90Days.setDate(now.getDate() - 90); - const staleThreshold = lookback90Days; - - // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel - // Use 90-day lookback to capture overdue items without unbounded historical queries - const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ - secretRotationV2DAL.findByProjectAndDateRange({ - projectId: dto.projectId, - startDate: lookback90Days, - endDate: in7Days - }), - secretRotationV2DAL.findByProject(dto.projectId), - fetchReminders(dto.projectId, lookback90Days, in7Days) - ]); - - const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ - name: r.name, - environment: r.environment.slug, - secretPath: r.folder.path, - nextRotationAt: r.nextRotationAt ?? null, - rotationStatus: r.rotationStatus - }); - - const mapReminder = (r: (typeof reminders)[number]) => ({ - secretKey: r.secretKey, - environment: r.environment, - secretPath: r.secretPath, - nextReminderDate: r.nextReminderDate - }); - - const upcomingRotations = upcomingRotationsRaw.map(mapRotation); - - const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); - const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); - const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); - - const [rawStaleSecrets, totalStaleCount] = await Promise.all([ - secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold, { - offset: dto.staleSecretsOffset ?? 0, - limit: dto.staleSecretsLimit ?? 50 - }), - secretV2BridgeDAL.countStaleByProject(dto.projectId, staleThreshold) - ]); - - // Resolve folder paths for stale secrets - const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; - const staleFolders = staleFolderIds.length - ? await folderDAL.findSecretPathByFolderIds(dto.projectId, staleFolderIds) - : []; - const staleFolderMap: Record = {}; - staleFolders.forEach((f) => { - if (f) staleFolderMap[f.id] = f.path; - }); - - const staleSecrets = rawStaleSecrets.map((s) => ({ - key: s.key, - environment: s.environment, - secretPath: staleFolderMap[s.folderId] ?? "/", - updatedAt: s.updatedAt - })); - - return { - upcomingRotations, - failedRotations, - upcomingReminders, - overdueReminders, - staleSecrets, - totalStaleCount - }; + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + + const now = new Date(); + const in7Days = new Date(now); + in7Days.setDate(now.getDate() + 7); + const lookback90Days = new Date(now); + lookback90Days.setDate(now.getDate() - 90); + const staleThreshold = lookback90Days; + + // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel + // Use 90-day lookback to capture overdue items without unbounded historical queries + const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ + projectId: dto.projectId, + startDate: lookback90Days, + endDate: in7Days + }), + secretRotationV2DAL.findByProject(dto.projectId), + fetchReminders(dto.projectId, lookback90Days, in7Days) + ]); + + const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ + name: r.name, + environment: r.environment.slug, + secretPath: r.folder.path, + nextRotationAt: r.nextRotationAt ?? null, + rotationStatus: r.rotationStatus + }); + + const mapReminder = (r: (typeof reminders)[number]) => ({ + secretKey: r.secretKey, + environment: r.environment, + secretPath: r.secretPath, + nextReminderDate: r.nextReminderDate + }); + + const upcomingRotations = upcomingRotationsRaw.map(mapRotation); + + const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); + const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); + const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); + + const [rawStaleSecrets, totalStaleCount] = await Promise.all([ + secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold, { + offset: dto.staleSecretsOffset ?? 0, + limit: dto.staleSecretsLimit ?? 50 + }), + secretV2BridgeDAL.countStaleByProject(dto.projectId, staleThreshold) + ]); + + // Resolve folder paths for stale secrets + const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; + const staleFolders = staleFolderIds.length + ? await folderDAL.findSecretPathByFolderIds(dto.projectId, staleFolderIds) + : []; + const staleFolderMap: Record = {}; + staleFolders.forEach((f) => { + if (f) staleFolderMap[f.id] = f.path; + }); + + const staleSecrets = rawStaleSecrets.map((s) => ({ + key: s.key, + environment: s.environment, + secretPath: staleFolderMap[s.folderId] ?? "/", + updatedAt: s.updatedAt + })); + + return { + upcomingRotations, + failedRotations, + upcomingReminders, + overdueReminders, + staleSecrets, + totalStaleCount + }; + } }); }; From 78f2b80c362dd4427e512af670938067afc80de1 Mon Sep 17 00:00:00 2001 From: x032205 Date: Wed, 15 Apr 2026 14:01:56 -0400 Subject: [PATCH 139/562] bump axios frontend --- frontend/package-lock.json | 8 ++++---- frontend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 00d260b85d3..13bcf64e244 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -73,7 +73,7 @@ "@xterm/xterm": "^5.5.0", "@xyflow/react": "^12.4.4", "argon2-browser": "^1.18.0", - "axios": "^1.14.0", + "axios": "^1.15.0", "classnames": "^2.5.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", @@ -7942,9 +7942,9 @@ } }, "node_modules/axios": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", - "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.0.tgz", + "integrity": "sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==", "license": "MIT", "dependencies": { "follow-redirects": "^1.15.11", diff --git a/frontend/package.json b/frontend/package.json index edb9285bb20..d02a2468f91 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -101,7 +101,7 @@ "@xterm/xterm": "^5.5.0", "@xyflow/react": "^12.4.4", "argon2-browser": "^1.18.0", - "axios": "^1.14.0", + "axios": "^1.15.0", "classnames": "^2.5.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", From 5cf251fc2f67a10b8bcb4713838a729d31810507 Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 15 Apr 2026 11:28:02 -0700 Subject: [PATCH 140/562] style: make bar chart cards equal height --- .../DashboardPage/components/DistributionCharts.tsx | 4 ++-- .../DashboardPage/components/ExpirationTimeline.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx index daf272a21f7..dff0b4f6f6b 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx @@ -52,14 +52,14 @@ const DonutChart = ({ }; return ( - + {title} {subtitle && ( {subtitle} )} - + {nonZeroData.length === 0 ? ( diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx index ca96919b65e..c9a7544899a 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx @@ -64,7 +64,7 @@ export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { const total = chartData.reduce((sum, d) => sum + d.count, 0); return ( - + Expiration Timeline @@ -73,7 +73,7 @@ export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { Certificates by time to expiry - + {nonZeroData.length === 0 ? ( From 69006ff666a6eab9aca63d56f583633867ab6cfc Mon Sep 17 00:00:00 2001 From: x032205 Date: Wed, 15 Apr 2026 15:03:13 -0400 Subject: [PATCH 141/562] fix: strip CA private key from discovery resource API response --- .../ee/services/pam-discovery/pam-discovery-schemas.ts | 8 ++++---- .../ee/services/pam-resource/ssh/ssh-resource-schemas.ts | 5 +++++ .../windows-server/windows-server-resource-schemas.ts | 5 +++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts b/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts index 1d5ddbb862b..a814f76b9b1 100644 --- a/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts +++ b/backend/src/ee/services/pam-discovery/pam-discovery-schemas.ts @@ -10,10 +10,10 @@ import { slugSchema } from "@app/server/lib/schemas"; import { ActiveDirectoryAccountMetadataSchema } from "../pam-resource/active-directory/active-directory-resource-schemas"; import { PamResource } from "../pam-resource/pam-resource-enums"; -import { SSHResourceInternalMetadataSchema } from "../pam-resource/ssh/ssh-resource-schemas"; +import { SanitizedSSHResourceInternalMetadataSchema } from "../pam-resource/ssh/ssh-resource-schemas"; import { - WindowsAccountMetadataSchema, - WindowsResourceInternalMetadataSchema + SanitizedWindowsResourceInternalMetadataSchema, + WindowsAccountMetadataSchema } from "../pam-resource/windows-server/windows-server-resource-schemas"; import { PamDiscoverySchedule, @@ -57,7 +57,7 @@ export const DiscoveredResourceSchema = PamDiscoverySourceResourcesSchema.extend resourceName: z.string(), resourceType: z.nativeEnum(PamResource), resourceInternalMetadata: z - .union([SSHResourceInternalMetadataSchema, WindowsResourceInternalMetadataSchema]) + .union([SanitizedSSHResourceInternalMetadataSchema, SanitizedWindowsResourceInternalMetadataSchema]) .optional(), dependencyCount: z.number().default(0) }); diff --git a/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts b/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts index fa06bfb3534..fcef3f6ce24 100644 --- a/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/ssh/ssh-resource-schemas.ts @@ -100,6 +100,11 @@ export const SSHResourceInternalMetadataSchema = z.object({ caKeyAlgorithm: z.string() }); +export const SanitizedSSHResourceInternalMetadataSchema = SSHResourceInternalMetadataSchema.pick({ + caPublicKey: true, + caKeyAlgorithm: true +}); + // Accounts export const SSHAccountSchema = BasePamAccountSchema.extend({ credentials: SSHAccountCredentialsSchema diff --git a/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts b/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts index 29385e2f613..6127265c3a5 100644 --- a/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts +++ b/backend/src/ee/services/pam-resource/windows-server/windows-server-resource-schemas.ts @@ -64,6 +64,11 @@ export const WindowsResourceInternalMetadataSchema = z.object({ osVersionDetail: z.string().optional() }); +export const SanitizedWindowsResourceInternalMetadataSchema = WindowsResourceInternalMetadataSchema.pick({ + osVersion: true, + osVersionDetail: true +}); + export const WindowsResourceSchema = BaseWindowsResourceSchema.extend({ connectionDetails: WindowsResourceConnectionDetailsSchema, rotationAccountCredentials: WindowsAccountCredentialsSchema.nullable().optional() From 287ee07c6544d0a420899f84667890723b5e42f5 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 15 Apr 2026 16:34:56 -0300 Subject: [PATCH 142/562] Last improvements on PKI dashboard --- .../ee/services/permission/default-roles.ts | 10 +-- .../src/services/project/project-service.ts | 40 ++++------- .../components/CertificatesSection.tsx | 5 +- .../components/CertificatesTable.tsx | 70 +++++++++++++------ .../components/ColumnVisibilityToggle.tsx | 5 +- .../components/FilterBuilder.tsx | 37 ++++++++-- .../components/ViewsDropdown.tsx | 45 ++++++------ .../components/ValidityReadinessSection.tsx | 2 +- 8 files changed, 125 insertions(+), 89 deletions(-) diff --git a/backend/src/ee/services/permission/default-roles.ts b/backend/src/ee/services/permission/default-roles.ts index 199c40ddaeb..7c3809538fc 100644 --- a/backend/src/ee/services/permission/default-roles.ts +++ b/backend/src/ee/services/permission/default-roles.ts @@ -753,15 +753,7 @@ const buildViewerPermissionRules = () => { can(ProjectPermissionActions.Read, ProjectPermissionSub.IpAllowList); can(ProjectPermissionCertificateAuthorityActions.Read, ProjectPermissionSub.CertificateAuthorities); can(ProjectPermissionCertificateActions.Read, ProjectPermissionSub.Certificates); - can( - [ - ProjectPermissionActions.Read, - ProjectPermissionActions.Create, - ProjectPermissionActions.Edit, - ProjectPermissionActions.Delete - ], - ProjectPermissionSub.CertificateInventoryViews - ); + can([ProjectPermissionActions.Read], ProjectPermissionSub.CertificateInventoryViews); can(ProjectPermissionPkiTemplateActions.Read, ProjectPermissionSub.CertificateTemplates); can(ProjectPermissionCertificatePolicyActions.Read, ProjectPermissionSub.CertificatePolicies); can(ProjectPermissionCmekActions.Read, ProjectPermissionSub.Cmek); diff --git a/backend/src/services/project/project-service.ts b/backend/src/services/project/project-service.ts index 929ba7bf6ee..80d15230695 100644 --- a/backend/src/services/project/project-service.ts +++ b/backend/src/services/project/project-service.ts @@ -41,13 +41,13 @@ import { TSshCertificateTemplateDALFactory } from "@app/ee/services/ssh-certific import { TSshHostDALFactory } from "@app/ee/services/ssh-host/ssh-host-dal"; import { TSshHostGroupDALFactory } from "@app/ee/services/ssh-host-group/ssh-host-group-dal"; import { KeyStorePrefixes, PgSqlLock, TKeyStoreFactory } from "@app/keystore/keystore"; +import { withCache } from "@app/lib/cache/with-cache"; import { getProcessedPermissionRules } from "@app/lib/casl/permission-filter-utils"; import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto/cryptography"; import { DatabaseErrorCode } from "@app/lib/error-codes"; import { BadRequestError, DatabaseError, ForbiddenRequestError, NotFoundError } from "@app/lib/errors"; import { groupBy } from "@app/lib/fn"; -import { logger } from "@app/lib/logger"; import { alphaNumericNanoId } from "@app/lib/nanoid"; import { TProjectPermission } from "@app/lib/types"; import { TPkiSubscriberDALFactory } from "@app/services/pki-subscriber/pki-subscriber-dal"; @@ -1359,19 +1359,12 @@ export const projectServiceFactory = ({ ProjectPermissionSub.Certificates ); - const cacheKey = KeyStorePrefixes.CertDashboardStats(projectId); - const cached = await keyStore.getItem(cacheKey); - if (cached) { - try { - return JSON.parse(cached) as Awaited>; - } catch { - logger.error(`Malformed dashboard stats cache entry [projectId=${projectId}]`); - } - } - - const stats = await certificateDAL.getDashboardStats(projectId); - await keyStore.setItemWithExpiry(cacheKey, DASHBOARD_CACHE_TTL, JSON.stringify(stats)); - return stats; + return withCache({ + keyStore, + key: KeyStorePrefixes.CertDashboardStats(projectId), + ttlSeconds: DASHBOARD_CACHE_TTL, + fetcher: () => certificateDAL.getDashboardStats(projectId) + }); }; const getActivityTrend = async ({ @@ -1402,19 +1395,12 @@ export const projectServiceFactory = ({ const rangeDaysMap: Record = { "7d": 7, "30d": 30, "6m": 180 }; const daysBack = rangeDaysMap[range]; - const cacheKey = KeyStorePrefixes.CertActivityTrend(projectId, range); - const cached = await keyStore.getItem(cacheKey); - if (cached) { - try { - return JSON.parse(cached) as Awaited>; - } catch { - logger.error(`Malformed activity trend cache entry [projectId=${projectId}] [range=${range}]`); - } - } - - const trend = await certificateDAL.getActivityTrend(projectId, daysBack); - await keyStore.setItemWithExpiry(cacheKey, DASHBOARD_CACHE_TTL, JSON.stringify(trend)); - return trend; + return withCache({ + keyStore, + key: KeyStorePrefixes.CertActivityTrend(projectId, range), + ttlSeconds: DASHBOARD_CACHE_TTL, + fetcher: () => certificateDAL.getActivityTrend(projectId, daysBack) + }); }; /** diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx index 20815c11a5d..8f7b2e0d594 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/CertificatesSection.tsx @@ -9,6 +9,7 @@ import { UnstableCard, UnstableCardAction, UnstableCardContent, + UnstableCardDescription, UnstableCardHeader, UnstableCardTitle } from "@app/components/v3"; @@ -125,9 +126,9 @@ export const CertificatesSection = ({ Certificates -

+ View, filter, and manage all certificates across your project. -

+ ; + const getEnrollmentMethodBadge = (enrollmentType: string | null | undefined) => { - if (!enrollmentType) return null; + if (!enrollmentType) return ; const label = enrollmentType.toUpperCase(); return {label}; }; @@ -192,6 +195,23 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi const { currentProject } = useProject(); const { permission } = useProjectPermission(); + const canReadViews = permission.can( + ProjectPermissionActions.Read, + ProjectPermissionSub.CertificateInventoryViews + ); + const canCreateViews = permission.can( + ProjectPermissionActions.Create, + ProjectPermissionSub.CertificateInventoryViews + ); + const canEditViews = permission.can( + ProjectPermissionActions.Edit, + ProjectPermissionSub.CertificateInventoryViews + ); + const canDeleteViews = permission.can( + ProjectPermissionActions.Delete, + ProjectPermissionSub.CertificateInventoryViews + ); + const projectId = currentProject?.id ?? ""; const [visibleColumns, setVisibleColumns] = useState>(() => getDefaultVisibleColumns(projectId) @@ -598,7 +618,7 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi handleClearAllFilters(); setIsFilterOpen(false); }} - onSaveView={() => setIsSaveViewOpen(true)} + onSaveView={canCreateViews ? () => setIsSaveViewOpen(true) : undefined} dynamicFieldOptions={dynamicFieldOptions} /> @@ -614,18 +634,18 @@ export const CertificatesTable = ({ handlePopUpOpen, externalFilter, dashboardFi - { - handleDeleteView(viewId); - }} - onToggleShare={handleToggleShare} - /> + {canReadViews && ( + handleDeleteView(viewId) : undefined} + onToggleShare={canEditViews ? handleToggleShare : undefined} + /> + )} - {certificate.notBefore - ? format(new Date(certificate.notBefore), "MMM d, yyyy") - : "-"} + {certificate.notBefore ? ( + format(new Date(certificate.notBefore), "MMM d, yyyy") + ) : ( + + )} )} {visibleColumns.has("expiresAt") && ( - {certificate.notAfter - ? format(new Date(certificate.notAfter), "MMM d, yyyy") - : "-"} + {certificate.notAfter ? ( + format(new Date(certificate.notAfter), "MMM d, yyyy") + ) : ( + + )} )} {visibleColumns.has("ca") && ( - {certificate.caName || "-"} + {certificate.caName || } )} {visibleColumns.has("profile") && ( - {certificate.profileName || "-"} + {certificate.profileName || } )} {visibleColumns.has("algorithm") && ( - {certificate.keyAlgorithm?.replace("_", "-") || "-"} + {certificate.keyAlgorithm?.replace("_", "-") || } )} diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx index 135c34ae546..eafcfab4ffb 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/ColumnVisibilityToggle.tsx @@ -64,8 +64,10 @@ export const ColumnVisibilityToggle = ({ visibleColumns, onChange, projectId }: const allColumnKeys = INVENTORY_COLUMNS.map((c) => c.key); const allVisible = visibleColumns.size === INVENTORY_COLUMNS.length; + const MIN_COLUMN = "sanCn"; + const handleToggleAll = () => { - const next = allVisible ? new Set() : new Set(allColumnKeys); + const next = allVisible ? new Set([MIN_COLUMN]) : new Set(allColumnKeys); onChange(next); saveVisibleColumns(next, projectId); }; @@ -73,6 +75,7 @@ export const ColumnVisibilityToggle = ({ visibleColumns, onChange, projectId }: const handleToggle = (key: string) => { const next = new Set(visibleColumns); if (next.has(key)) { + if (next.size <= 1) return; next.delete(key); } else { next.add(key); diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx index f0807c3031f..bd81315f1c2 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/FilterBuilder.tsx @@ -25,7 +25,7 @@ type Props = { onApply: () => void; onCancel: () => void; onClearAll: () => void; - onSaveView: () => void; + onSaveView?: () => void; dynamicFieldOptions?: Record; }; @@ -84,6 +84,12 @@ const DatePickerInput = ({ ); }; +const isRuleEmpty = (rule: FilterRule): boolean => { + if (rule.value === null || rule.value === undefined || rule.value === "") return true; + if (Array.isArray(rule.value) && rule.value.length === 0) return true; + return false; +}; + const FilterRow = ({ rule, onUpdate, @@ -186,8 +192,10 @@ const FilterRow = ({ } }; + const empty = isRuleEmpty(rule); + return ( -
+
@@ -330,7 +328,7 @@ export const FilterBuilder = ({ )}
{hasEmptyRules && ( - Empty filters will be removed + Empty filters will be ignored )} )} -
+
{hasEmptyRules && ( Empty filters will be ignored )} From b6d318eb28bece2923debc76b11945e1c1ab7cdc Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 17:34:31 -0400 Subject: [PATCH 152/562] refactor: move relay selection out of enrollment into connect Enrollment now only exchanges the token for a JWT. Relay selection and cert issuance happen in the connect call, which runs after enrollment when the CLI has a valid access token and can do client-side relay auto-selection. --- backend/src/ee/routes/v3/gateway-router.ts | 19 +---- .../services/gateway-v2/gateway-v2-service.ts | 75 +++++-------------- 2 files changed, 23 insertions(+), 71 deletions(-) diff --git a/backend/src/ee/routes/v3/gateway-router.ts b/backend/src/ee/routes/v3/gateway-router.ts index 0939316a230..eea110b64f3 100644 --- a/backend/src/ee/routes/v3/gateway-router.ts +++ b/backend/src/ee/routes/v3/gateway-router.ts @@ -108,31 +108,18 @@ export const registerGatewayV3Router = async (server: FastifyZodProvider) => { schema: { operationId: "enrollGatewayWithToken", body: z.object({ - token: z.string().min(1), - relayName: slugSchema({ min: 1, max: 32, field: "relayName" }).optional() + token: z.string().min(1) }), response: { 200: z.object({ accessToken: z.string(), - gatewayId: z.string(), - relayHost: z.string(), - pki: z.object({ - serverCertificate: z.string(), - serverPrivateKey: z.string(), - clientCertificateChain: z.string() - }), - ssh: z.object({ - clientCertificate: z.string(), - clientPrivateKey: z.string(), - serverCAPublicKey: z.string() - }) + gatewayId: z.string() }) } }, handler: async (req) => { const result = await server.services.gatewayV2.enrollGateway({ - token: req.body.token, - relayName: req.body.relayName + token: req.body.token }); await server.services.auditLog diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index c3e56a6f038..d6cc2cfe3d7 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -1330,7 +1330,7 @@ export const gatewayV2ServiceFactory = ({ throw new BadRequestError({ message: "Invalid actor type for gateway connect" }); }; - const enrollGateway = async ({ token, relayName }: { token: string; relayName?: string }) => { + const enrollGateway = async ({ token }: { token: string }) => { const tokenHash = crypto.nativeCrypto.createHash("sha256").update(token).digest("hex"); const tokenRecord = await gatewayEnrollmentTokenDAL.findOne({ tokenHash }); @@ -1342,39 +1342,13 @@ export const gatewayV2ServiceFactory = ({ throw new BadRequestError({ message: "Enrollment token has expired" }); } - const { orgId } = tokenRecord; - - // Resolve the relay before consuming the token so a missing relay doesn't burn it. - let relay: TRelays | undefined; - if (relayName) { - relay = await relayDAL.findOne({ orgId, name: relayName }); - if (!relay) relay = await relayDAL.findOne({ name: relayName, orgId: null }); - if (!relay) throw new NotFoundError({ message: `Relay ${relayName} not found` }); - } else { - // Auto-select: prefer a healthy org-specific relay, fall back to a healthy global one - const oneHourAgo = new Date(Date.now() - 60 * 60 * 1000); - const isHealthy = (r: TRelays) => r.heartbeat && r.heartbeat > oneHourAgo; - - const orgRelays = await relayDAL.find({ orgId }); - relay = orgRelays.find(isHealthy) ?? orgRelays[0]; - - if (!relay) { - const globalRelays = await relayDAL.find({ orgId: null }); - relay = globalRelays.find(isHealthy) ?? globalRelays[0]; - } - - if (!relay) throw new NotFoundError({ message: "No relay available for auto-selection" }); - } - if (!tokenRecord.gatewayId) { throw new BadRequestError({ message: "Enrollment token is not linked to a gateway" }); } - // Fetch org CAs before the transaction to avoid holding a long DB lock during KMS calls. - const orgCAs = await $getOrgCAs(orgId); + const { orgId } = tokenRecord; - // Consume the token and update the gateway in a single transaction. - // If the gateway update fails, the token consumption is rolled back. + // Consume the token and bump tokenVersion in a single transaction. const gateway = await gatewayEnrollmentTokenDAL.transaction(async (tx) => { const rows = await tx(TableName.GatewayEnrollmentTokens) .where({ id: tokenRecord.id }) @@ -1389,37 +1363,28 @@ export const gatewayV2ServiceFactory = ({ if (!existing) throw new NotFoundError({ message: `Gateway ${tokenRecord.gatewayId} not found` }); return gatewayV2DAL.updateById( existing.id, - { $incr: { tokenVersion: 1 }, relayId: relay!.id, heartbeat: null, lastHealthCheckStatus: null }, + { $incr: { tokenVersion: 1 }, heartbeat: null, lastHealthCheckStatus: null }, tx ); }); - try { - const certs = await $issueGatewayCerts({ orgId, orgCAs, relayName: relay.name, gateway }); - - const appCfg = getConfig(); - const accessToken = crypto.jwt().sign( - { - gatewayId: gateway.id, - orgId, - authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN, - tokenVersion: gateway.tokenVersion - }, - appCfg.AUTH_SECRET - ); - - return { - accessToken, - gatewayName: gateway.name, + const appCfg = getConfig(); + const accessToken = crypto.jwt().sign( + { + gatewayId: gateway.id, orgId, - ...certs - }; - } catch (err) { - if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { - throw new BadRequestError({ message: "A gateway with this name already exists" }); - } - throw err; - } + authTokenType: AuthTokenType.GATEWAY_ACCESS_TOKEN, + tokenVersion: gateway.tokenVersion + }, + appCfg.AUTH_SECRET + ); + + return { + accessToken, + gatewayId: gateway.id, + gatewayName: gateway.name, + orgId + }; }; return { From f90dc4966ad6105f5b484519a63fc56743279e7f Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 17:55:19 -0400 Subject: [PATCH 153/562] fix: add GATEWAY_ACCESS_TOKEN to relay list endpoint for CLI relay selection --- backend/src/ee/routes/v1/relay-router.ts | 2 +- .../src/ee/services/relay/relay-service.ts | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/backend/src/ee/routes/v1/relay-router.ts b/backend/src/ee/routes/v1/relay-router.ts index 89b2a9531bf..66e6640e45c 100644 --- a/backend/src/ee/routes/v1/relay-router.ts +++ b/backend/src/ee/routes/v1/relay-router.ts @@ -114,7 +114,7 @@ export const registerRelayRouter = async (server: FastifyZodProvider) => { config: { rateLimit: readLimit }, - onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN, AuthMode.GATEWAY_ACCESS_TOKEN]), handler: async (req) => { return server.services.relay.getRelays({ actorId: req.permission.id, diff --git a/backend/src/ee/services/relay/relay-service.ts b/backend/src/ee/services/relay/relay-service.ts index f1b98ba530f..4f0b9c34392 100644 --- a/backend/src/ee/services/relay/relay-service.ts +++ b/backend/src/ee/services/relay/relay-service.ts @@ -1154,16 +1154,18 @@ export const relayServiceFactory = ({ actorAuthMethod: ActorAuthMethod; actorOrgId: string; }) => { - const { permission } = await permissionService.getOrgPermission({ - scope: OrganizationActionScope.Any, - actor, - actorId, - orgId: actorOrgId, - actorAuthMethod: actorAuthMethod!, - actorOrgId - }); + if (actor !== ActorType.GATEWAY) { + const { permission } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor, + actorId, + orgId: actorOrgId, + actorAuthMethod: actorAuthMethod!, + actorOrgId + }); - ForbiddenError.from(permission).throwUnlessCan(OrgPermissionRelayActions.ListRelays, OrgPermissionSubjects.Relay); + ForbiddenError.from(permission).throwUnlessCan(OrgPermissionRelayActions.ListRelays, OrgPermissionSubjects.Relay); + } const instanceRelays = await relayDAL.find({ orgId: null From cf447f84153cda3d0bfa382176cecdb745f92db7 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 18:01:44 -0400 Subject: [PATCH 154/562] docs: remove redundant FAQ about moving gateways --- docs/documentation/platform/gateways/gateway-deployment.mdx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index 9ce51525e49..d29955680de 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -147,10 +147,6 @@ Check gateway logs for detailed error information: Enrollment tokens expire after 1 hour. If the token expires before you run the CLI command, click the context menu (three dots) next to the gateway and select **Re-enroll** to generate a new token. - -Click the context menu next to the gateway and select **Re-enroll**. This generates a new enrollment token you can use on the new machine. The existing gateway continues running until the new machine enrolls, so there is no downtime during the migration. - - Each gateway's access token and domain are saved to a config file scoped by gateway name: From 9594f805418bf355d3495ad7ef2a54b064f3d2b4 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 18:11:59 -0400 Subject: [PATCH 155/562] docs: add screenshot of Create Gateway button --- .../platform/gateways/gateway-deployment.mdx | 1 + .../gateways/gateway-create-button.png | Bin 0 -> 491423 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/images/platform/gateways/gateway-create-button.png diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index d29955680de..5c37ad8ed52 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -17,6 +17,7 @@ This guide covers everything you need to deploy and configure Infisical Gateways 1. Navigate to **Organization Settings > Networking > Gateways**. 2. Click **Create Gateway**. + ![Create Gateway button](/images/platform/gateways/gateway-create-button.png) 3. Enter a name for your gateway and select a relay (or use "Auto Select Relay"). 4. Choose your deployment method (CLI or systemd). 5. Copy the generated CLI command. The command includes a one-time enrollment token that expires in 1 hour. diff --git a/docs/images/platform/gateways/gateway-create-button.png b/docs/images/platform/gateways/gateway-create-button.png new file mode 100644 index 0000000000000000000000000000000000000000..df34e314dfc0cf9ea67d7144cef031817518324d GIT binary patch literal 491423 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�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%0Do0itzq>+ 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 Date: Wed, 15 Apr 2026 18:13:17 -0400 Subject: [PATCH 156/562] docs: add screenshot of Create Gateway form --- .../platform/gateways/gateway-deployment.mdx | 1 + .../platform/gateways/gateway-create-form.png | Bin 0 -> 288017 bytes 2 files changed, 1 insertion(+) create mode 100644 docs/images/platform/gateways/gateway-create-form.png diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index 5c37ad8ed52..97af05b3d51 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -19,6 +19,7 @@ This guide covers everything you need to deploy and configure Infisical Gateways 2. Click **Create Gateway**. ![Create Gateway button](/images/platform/gateways/gateway-create-button.png) 3. Enter a name for your gateway and select a relay (or use "Auto Select Relay"). + ![Create Gateway form](/images/platform/gateways/gateway-create-form.png) 4. Choose your deployment method (CLI or systemd). 5. Copy the generated CLI command. The command includes a one-time enrollment token that expires in 1 hour. diff --git a/docs/images/platform/gateways/gateway-create-form.png b/docs/images/platform/gateways/gateway-create-form.png new file mode 100644 index 0000000000000000000000000000000000000000..8b1cfcf3ec4d9b6c9e51379ff3664ba21646e568 GIT binary patch literal 288017 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

)s)!Z7 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 literal 0 HcmV?d00001 From f24b9cdadcf9d7728ccd7a178cac0849576454c2 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Wed, 15 Apr 2026 18:14:24 -0400 Subject: [PATCH 157/562] docs: update Create Gateway form screenshot --- .../platform/gateways/gateway-create-form.png | Bin 288017 -> 286949 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/platform/gateways/gateway-create-form.png b/docs/images/platform/gateways/gateway-create-form.png index 8b1cfcf3ec4d9b6c9e51379ff3664ba21646e568..821764b10f52a4627b79fa0c321212837bf0deba 100644 GIT binary patch literal 286949 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 z%0D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 KYT+H5Xa5K8EnmU_ literal 288017 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

)s)!Z7 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 From cbe6274d452507a1db41d81dd214a68b9371068b Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 15 Apr 2026 19:15:48 -0300 Subject: [PATCH 158/562] Fix license change for testing --- .../src/ee/services/license/license-fns.ts | 2 +- .../certificate-inventory-view-service.ts | 10 ++--- .../components/SaveViewModal.tsx | 39 ++++++++----------- 3 files changed, 20 insertions(+), 31 deletions(-) diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index fe1d5effd52..b75ef22b5ee 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -68,7 +68,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ secretVersioning: true, pitRecovery: false, ipAllowlisting: false, - rbac: true, + rbac: false, githubOrgSync: false, customRateLimits: false, subOrganization: false, diff --git a/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts b/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts index 11180d72222..2401bf406b4 100644 --- a/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts +++ b/backend/src/services/certificate-inventory-view/certificate-inventory-view-service.ts @@ -1,7 +1,7 @@ import { ForbiddenError } from "@casl/ability"; import { ActionProjectType } from "@app/db/schemas"; -import { BadRequestError, NotFoundError } from "@app/lib/errors"; +import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; import { TProjectPermission } from "@app/lib/types"; import { TPermissionServiceFactory } from "../../ee/services/permission/permission-service-types"; @@ -144,9 +144,7 @@ export const certificateInventoryViewServiceFactory = ({ return view; } catch (error) { - const pgError = error as { code?: string }; - if (pgError.code === "23505") { - // unique constraint violation + if (error instanceof DatabaseError && (error.error as { code?: string })?.code === "23505") { throw new BadRequestError({ message: isShared ? "A shared view with this name already exists in this project" @@ -193,9 +191,7 @@ export const certificateInventoryViewServiceFactory = ({ return view; } catch (error) { - const pgError = error as { code?: string }; - if (pgError.code === "23505") { - // unique constraint violation + if (error instanceof DatabaseError && (error.error as { code?: string })?.code === "23505") { throw new BadRequestError({ message: isShared ? "A shared view with this name already exists in this project" diff --git a/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx b/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx index 47dc9bda769..cbeb3fe5a15 100644 --- a/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx +++ b/frontend/src/pages/cert-manager/CertificatesPage/components/SaveViewModal.tsx @@ -39,29 +39,22 @@ export const SaveViewModal = ({ const handleSave = async () => { if (!name.trim()) return; - try { - const apiFilters = filtersToSearchParams(filters); - const result = await createView({ - projectId, - name: name.trim(), - filters: apiFilters, - isShared - }); - createNotification({ - text: `View "${name}" saved successfully`, - type: "success" - }); - setName(""); - setIsShared(false); - onOpenChange(false); - if (onViewCreated && result?.id) { - onViewCreated(result.id, apiFilters); - } - } catch { - createNotification({ - text: "Failed to save view", - type: "error" - }); + const apiFilters = filtersToSearchParams(filters); + const result = await createView({ + projectId, + name: name.trim(), + filters: apiFilters, + isShared + }); + createNotification({ + text: `View "${name}" saved successfully`, + type: "success" + }); + setName(""); + setIsShared(false); + onOpenChange(false); + if (onViewCreated && result?.id) { + onViewCreated(result.id, apiFilters); } }; From a38284f04535aef90d1ccbfdf4c60b2acdefad8d Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Wed, 15 Apr 2026 20:23:30 -0300 Subject: [PATCH 159/562] fix(refetch-interval): standardize refetch intervals across various components to improve consistency --- frontend/src/hooks/api/secretApprovalRequest/queries.tsx | 2 +- .../components/PkiSubscriberCertificatesTable.tsx | 2 +- .../components/PkiSubscriberDetailsSection.tsx | 2 +- .../components/PkiSyncAuditLogsSection.tsx | 2 +- .../IntegrationsDetailsByIDPage/IntegrationsDetailsByIDPage.tsx | 2 +- .../components/IntegrationAuditLogsSection.tsx | 2 +- .../components/SecretSyncAuditLogsSection.tsx | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx index 4c8d77371b4..4c55f342159 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/queries.tsx +++ b/frontend/src/hooks/api/secretApprovalRequest/queries.tsx @@ -156,7 +156,7 @@ export const useGetSecretApprovalRequestCount = ({ useQuery({ queryKey: secretApprovalRequestKeys.count({ projectId, policyId }), queryFn: () => fetchSecretApprovalRequestCount({ projectId, policyId }), - enabled: Boolean(projectId) && (options?.enabled ?? true), ...options, + enabled: Boolean(projectId) && (options?.enabled ?? true), refetchInterval: options?.refetchInterval ?? 30_000 }); diff --git a/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx b/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx index 5540ab4d622..83622298481 100644 --- a/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx +++ b/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberCertificatesTable.tsx @@ -59,7 +59,7 @@ export const PkiSubscriberCertificatesTable = ({ subscriberName, handlePopUpOpen limit: perPage }, { - refetchInterval: 5000 + refetchInterval: 30_000 } ); diff --git a/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberDetailsSection.tsx b/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberDetailsSection.tsx index 5da5be55a4d..dd1dcbbc7d1 100644 --- a/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberDetailsSection.tsx +++ b/frontend/src/pages/cert-manager/PkiSubscriberDetailsByIDPage/components/PkiSubscriberDetailsSection.tsx @@ -59,7 +59,7 @@ export const PkiSubscriberDetailsSection = ({ subscriberName, handlePopUpOpen }: projectId }, { - refetchInterval: 5000 + refetchInterval: 30_000 } ); diff --git a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx index 4be7e0b3e7d..e6d1af95045 100644 --- a/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx +++ b/frontend/src/pages/cert-manager/PkiSyncDetailsByIDPage/components/PkiSyncAuditLogsSection.tsx @@ -35,7 +35,7 @@ export const PkiSyncAuditLogsSection = ({ pkiSync }: Props) => {

{subscription.auditLogs ? ( { }); const { data: integration } = useGetIntegration(integrationId, { - refetchInterval: 4000 + refetchInterval: 30_000 }); const [shouldDeleteSecrets, setShouldDeleteSecrets] = useToggle(false); diff --git a/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx b/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx index fc0e31245bc..13ba3512595 100644 --- a/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx +++ b/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/components/IntegrationAuditLogsSection.tsx @@ -30,7 +30,7 @@ export const IntegrationAuditLogsSection = ({ integration }: Props) => {

{
{subscription.auditLogs ? ( Date: Wed, 15 Apr 2026 17:03:49 -0700 Subject: [PATCH 160/562] additional interval bumps --- frontend/src/hooks/api/ca/queries.tsx | 2 +- .../pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/hooks/api/ca/queries.tsx b/frontend/src/hooks/api/ca/queries.tsx index c629f0fb808..d441eca5d42 100644 --- a/frontend/src/hooks/api/ca/queries.tsx +++ b/frontend/src/hooks/api/ca/queries.tsx @@ -249,7 +249,7 @@ export const useGetCaAutoRenewal = (caId: string, options?: { enabled?: boolean enabled: options?.enabled !== undefined ? options.enabled : Boolean(caId), refetchInterval: (query) => { const { data } = query.state; - if (data?.lastRenewalStatus === CaRenewalStatus.PENDING) return 3000; + if (data?.lastRenewalStatus === CaRenewalStatus.PENDING) return 10_000; return false; } }); diff --git a/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx b/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx index 4ef0ac44864..fc94f657942 100644 --- a/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx +++ b/frontend/src/pages/pam/PamDiscoveryDetailPage/PamDiscoveryDetailPage.tsx @@ -418,7 +418,7 @@ const RunsTab = ({ discoverySourceId, discoveryType, { offset, limit: perPage }, - { refetchInterval: isPolling ? 3000 : false } + { refetchInterval: isPolling ? 10_000 : false } ); const runs = data?.runs || []; From 62e2f4c4d4aefb39f3f1c9a3a6942f40d4b68b4d Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 15 Apr 2026 17:51:25 -0700 Subject: [PATCH 161/562] feat: add bulk tag modal to overview page --- frontend/src/hooks/api/secrets/types.ts | 2 +- .../SelectionPanel/SelectionPanel.tsx | 49 ++- .../BulkTagDialog/BulkTagDialog.tsx | 400 ++++++++++++++++++ .../components/BulkTagDialog/index.ts | 1 + .../SelectionPanel/components/index.ts | 1 + 5 files changed, 449 insertions(+), 4 deletions(-) create mode 100644 frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx create mode 100644 frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/index.ts diff --git a/frontend/src/hooks/api/secrets/types.ts b/frontend/src/hooks/api/secrets/types.ts index 381999f615a..93f72c2d06c 100644 --- a/frontend/src/hooks/api/secrets/types.ts +++ b/frontend/src/hooks/api/secrets/types.ts @@ -230,7 +230,7 @@ export type TUpdateSecretBatchDTO = { secrets: Array<{ type: SecretType; secretKey: string; - secretValue: string; + secretValue?: string; secretComment?: string; skipMultilineEncoding?: boolean | null; tagIds?: string[]; diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx index 833b47b4c3d..c841a7cd6db 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx @@ -1,6 +1,6 @@ import { useMemo } from "react"; import { subject } from "@casl/ability"; -import { FolderInputIcon, TrashIcon } from "lucide-react"; +import { FolderInputIcon, TagsIcon, TrashIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; @@ -27,6 +27,7 @@ import { } from "@app/hooks/api/types"; import { BulkDeleteDialog, + BulkTagDialog, MoveSecretsModal } from "@app/pages/secret-manager/OverviewPage/components/SelectionPanel/components"; @@ -62,7 +63,8 @@ export const SelectionPanel = ({ const { handlePopUpOpen, handlePopUpToggle, handlePopUpClose, popUp } = usePopUp([ "bulkDeleteEntries", - "bulkMoveSecrets" + "bulkMoveSecrets", + "bulkTagSecrets" ] as const); const selectedFolderCount = Object.keys(selectedEntries.folder).length; @@ -92,6 +94,20 @@ export const SelectionPanel = ({ ) ); + const canEditSecretsInAnyEnv = userAvailableEnvs.some((env) => + permission.can( + ProjectPermissionSecretActions.Edit, + subject(ProjectPermissionSub.Secrets, { + environment: env.slug, + secretPath, + secretName: "*", + secretTags: ["*"] + }) + ) + ); + const canReadTags = permission.can(ProjectPermissionActions.Read, ProjectPermissionSub.Tags); + const isTagActionDisabled = !canEditSecretsInAnyEnv || !canReadTags; + const usedBySecretSyncsFiltered = useMemo(() => { if (selectedKeysCount === 0 || usedBySecretSyncs.length === 0) return null; const envs = Object.values(selectedEntries.secret).flatMap((entries) => Object.keys(entries)); @@ -289,9 +305,26 @@ export const SelectionPanel = ({ {isRotatedSecretSelected && ( - Rotated Secrets will not be affected by action. + Rotated Secrets will not be affected by move or delete action. )} + {selectedKeysCount > 0 && ( + + + + + Access denied + + )} {shouldShowDelete && ( <> @@ -333,6 +366,16 @@ export const SelectionPanel = ({ secrets={selectedEntries[EntryType.SECRET]} onComplete={resetSelectedEntries} /> + handlePopUpToggle("bulkTagSecrets", isOpen)} + projectId={projectId} + secretPath={secretPath} + secrets={selectedEntries[EntryType.SECRET]} + environments={userAvailableEnvs} + visibleEnvs={visibleEnvs} + onComplete={resetSelectedEntries} + /> handlePopUpToggle("bulkDeleteEntries", isOpen)} diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx new file mode 100644 index 00000000000..2517d92738c --- /dev/null +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx @@ -0,0 +1,400 @@ +import { useMemo, useState } from "react"; +import { Controller, useForm } from "react-hook-form"; +import { subject } from "@casl/ability"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { KeyIcon, TagsIcon } from "lucide-react"; +import { z } from "zod"; + +import { createNotification } from "@app/components/notifications"; +import { + Button, + CreatableSelect, + Dialog, + DialogClose, + DialogContent, + DialogDescription, + DialogFooter, + DialogHeader, + DialogTitle, + Field, + FieldContent, + FieldDescription, + FieldLabel, + Switch, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow +} from "@app/components/v3"; +import { ProjectPermissionActions, ProjectPermissionSub, useProjectPermission } from "@app/context"; +import { ProjectPermissionSecretActions } from "@app/context/ProjectPermissionContext/types"; +import { useCreateWsTag, useGetWsTags, useUpdateSecretBatch } from "@app/hooks/api"; +import { ProjectEnv } from "@app/hooks/api/projects/types"; +import { SecretType, SecretV3RawSanitized } from "@app/hooks/api/secrets/types"; +import { slugSchema } from "@app/lib/schemas"; + +const formSchema = z.object({ + tags: z + .array(z.object({ label: z.string(), value: z.string() })) + .min(1, "Select at least one tag"), + isReplaceMode: z.boolean().default(false) +}); + +type TFormSchema = z.infer; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + projectId: string; + secretPath: string; + secrets: Record>; + environments: ProjectEnv[]; + visibleEnvs: ProjectEnv[]; + onComplete: () => void; +}; + +type ContentProps = Omit & { + onClose: () => void; +}; + +const BulkTagDialogContent = ({ + projectId, + secretPath, + secrets, + environments, + visibleEnvs, + onComplete, + onClose +}: ContentProps) => { + const { permission } = useProjectPermission(); + const { mutateAsync: updateSecretBatch } = useUpdateSecretBatch(); + const { mutateAsync: createWsTag } = useCreateWsTag(); + + const canReadTags = permission.can(ProjectPermissionActions.Read, ProjectPermissionSub.Tags); + const canAddTags = permission.can(ProjectPermissionActions.Create, ProjectPermissionSub.Tags); + + const { data: projectTags, isPending: isTagsLoading } = useGetWsTags( + canReadTags ? projectId : "" + ); + + const [isSubmitting, setIsSubmitting] = useState(false); + + const { + handleSubmit, + control, + setValue, + getValues, + watch, + formState: { isValid } + } = useForm({ + defaultValues: { + tags: [], + isReplaceMode: false + }, + resolver: zodResolver(formSchema) + }); + + const isReplaceMode = watch("isReplaceMode"); + + const selectedResources = useMemo( + () => + Object.entries(secrets).map(([name, envRecord]) => ({ + name, + envSlugs: new Set(Object.keys(envRecord)) + })), + [secrets] + ); + + const tagOptions = useMemo( + () => projectTags?.map((tag) => ({ label: tag.slug, value: tag.id })), + [projectTags] + ); + + const handleCreateTag = async (inputValue: string) => { + const parsedSlug = slugSchema().safeParse(inputValue); + if (!parsedSlug.success) return; + + const newTag = await createWsTag({ + projectId, + tagSlug: parsedSlug.data, + tagColor: "" + }); + const currentTags = getValues("tags"); + setValue("tags", [...currentTags, { label: newTag.slug, value: newTag.id }], { + shouldDirty: true, + shouldValidate: true + }); + }; + + const onSubmit = async (data: TFormSchema) => { + setIsSubmitting(true); + + const selectedTagIds = data.tags.map((t) => t.value); + + // Group secrets by environment + const secretsByEnv = Object.values(secrets).reduce>( + (acc, secretRecord) => { + Object.entries(secretRecord).forEach(([envSlug, secret]) => { + const canEditSecret = permission.can( + ProjectPermissionSecretActions.Edit, + subject(ProjectPermissionSub.Secrets, { + environment: envSlug, + secretPath, + secretName: secret.key, + secretTags: (secret.tags || []).map((t) => t.slug) + }) + ); + if (!canEditSecret) return; + + if (!acc[envSlug]) acc[envSlug] = []; + acc[envSlug].push(secret); + }); + return acc; + }, + {} + ); + + const envSlugs = Object.keys(secretsByEnv); + + if (envSlugs.length === 0) { + createNotification({ + type: "info", + text: "You don't have access to tag the selected secrets" + }); + setIsSubmitting(false); + return; + } + + let hasApprovalRequest = false; + let hasDirectUpdate = false; + + const results = await Promise.allSettled( + envSlugs.map(async (envSlug) => { + const envSecrets = secretsByEnv[envSlug]; + + const secretUpdates = envSecrets.map((secret) => { + let tagIds: string[]; + if (data.isReplaceMode) { + tagIds = selectedTagIds; + } else { + const existingTagIds = (secret.tags || []).map((t) => t.id); + tagIds = [...new Set([...existingTagIds, ...selectedTagIds])]; + } + + return { + secretKey: secret.key, + type: SecretType.Shared, + tagIds + }; + }); + + const result = await updateSecretBatch({ + projectId, + environment: envSlug, + secretPath, + secrets: secretUpdates + }); + + if (result && "approval" in result) { + hasApprovalRequest = true; + } else { + hasDirectUpdate = true; + } + + return { environment: envSlug }; + }) + ); + + const allSucceeded = results.every((r) => r.status === "fulfilled"); + const someSucceeded = results.some((r) => r.status === "fulfilled"); + + const failedEnvs = environments + .filter( + (env) => !results.some((r) => r.status === "fulfilled" && r.value.environment === env.slug) + ) + .filter((env) => secretsByEnv[env.slug]) + .map((env) => env.name); + + if (allSucceeded) { + onClose(); + onComplete(); + if (hasDirectUpdate && hasApprovalRequest) { + createNotification({ + type: "info", + text: "Tags updated and an approval request was generated for protected environments" + }); + } else if (hasApprovalRequest) { + createNotification({ + type: "info", + text: "An approval request has been generated for the tag changes" + }); + } else { + createNotification({ + type: "success", + text: "Successfully updated tags on selected secrets" + }); + } + } else if (someSucceeded) { + createNotification({ + type: "warning", + text: `Tag update partially completed. The following environments could not be processed: ${failedEnvs.join(", ")}.` + }); + } else { + createNotification({ + type: "error", + text: "Failed to update tags on selected secrets" + }); + } + + setIsSubmitting(false); + }; + + const selectedSecretCount = Object.keys(secrets).length; + + return ( +
{ + if (e.key === "Enter") e.preventDefault(); + }} + > + + Bulk Tag Secrets + + Apply tags to {selectedSecretCount} selected secret{selectedSecretCount !== 1 ? "s" : ""}{" "} + across all environments. + + + {selectedResources.length > 0 && ( + + + + + Type + + + Name + + {visibleEnvs.map((env) => ( + + {env.name} + + ))} + + + + {selectedResources.map((item) => ( + + + + + + {item.name} + + {visibleEnvs.map((env) => ( + + {item.envSlugs.has(env.slug) ? ( + + ) : ( + + )} + + ))} + + ))} + + + )} + +
+ + Tags + + ( + + inputValue && !slugSchema().safeParse(inputValue).success + ? "Tag must be slug-friendly" + : "No tags match search" + } + isLoading={isTagsLoading} + placeholder="Select or create tags..." + options={tagOptions} + value={field.value} + onChange={(newValue) => field.onChange(newValue)} + onCreateOption={handleCreateTag} + isValidNewOption={(inputValue) => + !canAddTags + ? false + : slugSchema().safeParse(inputValue).success && + !projectTags?.map((tag) => tag.slug).includes(inputValue) + } + /> + )} + /> + + + +
+ ( + + )} + /> + + Replace existing tags + +
+ + {isReplaceMode + ? "All existing tags on selected secrets will be removed and replaced with the tags selected above." + : "Selected tags will be added to each secret, keeping any existing tags."} + +
+
+ + + + + + +
+ ); +}; + +export const BulkTagDialog = ({ isOpen, onOpenChange, ...contentProps }: Props) => { + return ( + + {isOpen && ( + + onOpenChange(false)} /> + + )} + + ); +}; diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/index.ts b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/index.ts new file mode 100644 index 00000000000..638fe9d824f --- /dev/null +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/index.ts @@ -0,0 +1 @@ +export * from "./BulkTagDialog"; diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/index.ts b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/index.ts index 2189b40e8ee..433ba042f00 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/index.ts +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/index.ts @@ -1,2 +1,3 @@ export * from "./BulkDeleteDialog"; +export * from "./BulkTagDialog"; export * from "./MoveSecretsDialog"; From 0c9a596e51b1a1f1179f02bab5e56771bbcd6bfc Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Wed, 15 Apr 2026 18:35:00 -0700 Subject: [PATCH 162/562] improvement: address feedback --- .../SelectionPanel/SelectionPanel.tsx | 2 +- .../BulkTagDialog/BulkTagDialog.tsx | 211 +++++++++--------- 2 files changed, 108 insertions(+), 105 deletions(-) diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx index c841a7cd6db..19956fc0021 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/SelectionPanel.tsx @@ -319,7 +319,7 @@ export const SelectionPanel = ({ size="xs" > - Tags + Add Tags Access denied diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx index 2517d92738c..9b0b13b7b80 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SelectionPanel/components/BulkTagDialog/BulkTagDialog.tsx @@ -131,129 +131,132 @@ const BulkTagDialogContent = ({ const onSubmit = async (data: TFormSchema) => { setIsSubmitting(true); - const selectedTagIds = data.tags.map((t) => t.value); - - // Group secrets by environment - const secretsByEnv = Object.values(secrets).reduce>( - (acc, secretRecord) => { - Object.entries(secretRecord).forEach(([envSlug, secret]) => { - const canEditSecret = permission.can( - ProjectPermissionSecretActions.Edit, - subject(ProjectPermissionSub.Secrets, { - environment: envSlug, - secretPath, - secretName: secret.key, - secretTags: (secret.tags || []).map((t) => t.slug) - }) - ); - if (!canEditSecret) return; - - if (!acc[envSlug]) acc[envSlug] = []; - acc[envSlug].push(secret); + try { + const selectedTagIds = data.tags.map((t) => t.value); + + // Group secrets by environment + const secretsByEnv = Object.values(secrets).reduce>( + (acc, secretRecord) => { + Object.entries(secretRecord).forEach(([envSlug, secret]) => { + const canEditSecret = permission.can( + ProjectPermissionSecretActions.Edit, + subject(ProjectPermissionSub.Secrets, { + environment: envSlug, + secretPath, + secretName: secret.key, + secretTags: (secret.tags || []).map((t) => t.slug) + }) + ); + if (!canEditSecret) return; + + if (!acc[envSlug]) acc[envSlug] = []; + acc[envSlug].push(secret); + }); + return acc; + }, + {} + ); + + const envSlugs = Object.keys(secretsByEnv); + + if (envSlugs.length === 0) { + createNotification({ + type: "info", + text: "You don't have access to tag the selected secrets" }); - return acc; - }, - {} - ); - - const envSlugs = Object.keys(secretsByEnv); - - if (envSlugs.length === 0) { - createNotification({ - type: "info", - text: "You don't have access to tag the selected secrets" - }); - setIsSubmitting(false); - return; - } - - let hasApprovalRequest = false; - let hasDirectUpdate = false; - - const results = await Promise.allSettled( - envSlugs.map(async (envSlug) => { - const envSecrets = secretsByEnv[envSlug]; + return; + } - const secretUpdates = envSecrets.map((secret) => { - let tagIds: string[]; - if (data.isReplaceMode) { - tagIds = selectedTagIds; + let hasApprovalRequest = false; + let hasDirectUpdate = false; + + const results = await Promise.allSettled( + envSlugs.map(async (envSlug) => { + const envSecrets = secretsByEnv[envSlug]; + + const secretUpdates = envSecrets.map((secret) => { + let tagIds: string[]; + if (data.isReplaceMode) { + tagIds = selectedTagIds; + } else { + const existingTagIds = (secret.tags || []).map((t) => t.id); + tagIds = [...new Set([...existingTagIds, ...selectedTagIds])]; + } + + return { + secretKey: secret.key, + type: SecretType.Shared, + tagIds + }; + }); + + const result = await updateSecretBatch({ + projectId, + environment: envSlug, + secretPath, + secrets: secretUpdates + }); + + if (result && "approval" in result) { + hasApprovalRequest = true; } else { - const existingTagIds = (secret.tags || []).map((t) => t.id); - tagIds = [...new Set([...existingTagIds, ...selectedTagIds])]; + hasDirectUpdate = true; } - return { - secretKey: secret.key, - type: SecretType.Shared, - tagIds - }; - }); - - const result = await updateSecretBatch({ - projectId, - environment: envSlug, - secretPath, - secrets: secretUpdates - }); - - if (result && "approval" in result) { - hasApprovalRequest = true; + return { environment: envSlug }; + }) + ); + + const allSucceeded = results.every((r) => r.status === "fulfilled"); + const someSucceeded = results.some((r) => r.status === "fulfilled"); + + const failedEnvs = environments + .filter( + (env) => + !results.some((r) => r.status === "fulfilled" && r.value.environment === env.slug) + ) + .filter((env) => secretsByEnv[env.slug]) + .map((env) => env.name); + + if (allSucceeded) { + onClose(); + onComplete(); + if (hasDirectUpdate && hasApprovalRequest) { + createNotification({ + type: "info", + text: "Tags updated and an approval request was generated for protected environments" + }); + } else if (hasApprovalRequest) { + createNotification({ + type: "info", + text: "An approval request has been generated for the tag changes" + }); } else { - hasDirectUpdate = true; + createNotification({ + type: "success", + text: "Successfully updated tags on selected secrets" + }); } - - return { environment: envSlug }; - }) - ); - - const allSucceeded = results.every((r) => r.status === "fulfilled"); - const someSucceeded = results.some((r) => r.status === "fulfilled"); - - const failedEnvs = environments - .filter( - (env) => !results.some((r) => r.status === "fulfilled" && r.value.environment === env.slug) - ) - .filter((env) => secretsByEnv[env.slug]) - .map((env) => env.name); - - if (allSucceeded) { - onClose(); - onComplete(); - if (hasDirectUpdate && hasApprovalRequest) { - createNotification({ - type: "info", - text: "Tags updated and an approval request was generated for protected environments" - }); - } else if (hasApprovalRequest) { + } else if (someSucceeded) { createNotification({ - type: "info", - text: "An approval request has been generated for the tag changes" + type: "warning", + text: `Tag update partially completed. The following environments could not be processed: ${failedEnvs.join(", ")}.` }); } else { createNotification({ - type: "success", - text: "Successfully updated tags on selected secrets" + type: "error", + text: "Failed to update tags on selected secrets" }); } - } else if (someSucceeded) { - createNotification({ - type: "warning", - text: `Tag update partially completed. The following environments could not be processed: ${failedEnvs.join(", ")}.` - }); - } else { - createNotification({ - type: "error", - text: "Failed to update tags on selected secrets" - }); + } finally { + setIsSubmitting(false); } - - setIsSubmitting(false); }; const selectedSecretCount = Object.keys(secrets).length; return ( + // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
{ From c50ff9e9a85dcccd49464f7222555bab54899f91 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 15 Apr 2026 23:36:44 -0300 Subject: [PATCH 163/562] Restructure Certificate Manager navigation --- .../components/v3/generic/Sidebar/Sidebar.tsx | 75 ++++++++++++++- .../components/OrgSidebar/CertManagerNav.tsx | 96 ++++++++++++++----- .../components/OrgSidebar/ProjectNav.tsx | 11 +-- .../components/OrgSidebar/ProjectNavLink.tsx | 19 +++- .../components/OrgSidebar/SshNav.tsx | 5 +- .../components/OrgSidebar/submenus.ts | 23 ++--- .../components/OrgSidebar/types.ts | 2 + .../IntegrationsListPage.tsx | 7 +- .../AppConnectionsTab/AppConnectionsTab.tsx | 18 ++++ .../components/AppConnectionsTab/index.ts | 1 + .../IntegrationsListPage/components/index.ts | 1 + 11 files changed, 205 insertions(+), 53 deletions(-) create mode 100644 frontend/src/pages/cert-manager/IntegrationsListPage/components/AppConnectionsTab/AppConnectionsTab.tsx create mode 100644 frontend/src/pages/cert-manager/IntegrationsListPage/components/AppConnectionsTab/index.ts diff --git a/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx b/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx index d75c098d2a5..8cffcd56573 100644 --- a/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx +++ b/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx @@ -3,7 +3,7 @@ import * as React from "react"; import { Slot } from "@radix-ui/react-slot"; import { cva, type VariantProps } from "cva"; -import { PanelLeftIcon } from "lucide-react"; +import { ChevronDown, PanelLeftIcon } from "lucide-react"; import { cn } from "../../utils"; import { UnstableIconButton } from "../IconButton"; @@ -508,6 +508,78 @@ function SidebarGroupContent({ className, ...props }: React.ComponentProps<"div" ); } +function SidebarCollapsibleGroup({ + label, + collapsedLabel, + defaultOpen = true, + children, + className +}: { + label: string; + /** Short label shown when the sidebar is collapsed. Defaults to initials of the label. */ + collapsedLabel?: string; + defaultOpen?: boolean; + children: React.ReactNode; + className?: string; +}) { + const [isOpen, setIsOpen] = React.useState(defaultOpen); + const { state, isMobile } = useSidebar(); + const isCollapsed = state === "collapsed" && !isMobile; + + const abbreviation = + collapsedLabel || + label + .split(" ") + .map((w) => w[0]) + .join(""); + + return ( + + {isCollapsed ? ( + + +
+ + {abbreviation} + +
+
+ + {label} + +
+ ) : ( + + )} +
+
{children}
+
+
+ ); +} + function SidebarMenu({ className, ...props }: React.ComponentProps<"ul">) { return (
    0) + } + ]; + + const codeSigningItems: NavItem[] = [ + { + label: "Signers", + icon: PenTool, + pathSuffix: "code-signing", + activeMatch: /\/code-signing/, + search: { selectedTab: "signers" } + }, + { + label: "Signing Requests", + icon: FileCheck, + pathSuffix: "code-signing", + activeMatch: /\/code-signing/, + search: { selectedTab: "signing-requests" } + }, + { + label: "Signing Policies", + icon: Shield, + pathSuffix: "code-signing", + activeMatch: /\/code-signing/, + search: { selectedTab: "signing-policies" } + }, + { + label: "Grants", + icon: Key, + pathSuffix: "code-signing", + activeMatch: /\/code-signing/, + search: { selectedTab: "grants" } + } + ]; + + const generalItems: NavItem[] = [ + { + label: "Integrations", + icon: Plug, + pathSuffix: "integrations", + submenu: CERT_INTEGRATIONS_SUBMENU }, { label: "Access Control", @@ -112,5 +146,21 @@ export const CertManagerNav = ({ submenu: CERT_SETTINGS_SUBMENU } ]; - return ; + + return ( + <> + + + + + + + + + + + + + + ); }; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx index 1950782bff7..97bf3f90997 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx @@ -3,7 +3,7 @@ import { useLocation, useNavigate } from "@tanstack/react-router"; import { AnimatePresence, motion } from "framer-motion"; import { ChevronLeft, DoorOpen, FileKey, Shield } from "lucide-react"; -import { SidebarGroup, SidebarGroupLabel, SidebarMenu } from "@app/components/v3"; +import { SidebarGroup, SidebarGroupLabel } from "@app/components/v3"; import { useOrganization, useProject } from "@app/context"; import { ProjectType } from "@app/hooks/api/projects/types"; @@ -17,8 +17,8 @@ import { SshNav } from "./SshNav"; import { CERT_APPROVALS_SUBMENU, CERT_CERTIFICATES_SUBMENU, - CERT_CODE_SIGNING_SUBMENU, CERT_DISCOVERY_SUBMENU, + CERT_INTEGRATIONS_SUBMENU, CERT_SETTINGS_SUBMENU, INTEGRATIONS_SUBMENU, MCP_SUBMENU, @@ -68,7 +68,6 @@ export const ProjectNav = () => { const isCertManager = currentProject.type === ProjectType.CertificateManager; const isOnCertPolicies = isCertManager && pathname.includes("/policies"); const isOnCertDiscovery = isCertManager && pathname.includes("/discovery"); - const isOnCertCodeSigning = isCertManager && pathname.includes("/code-signing"); const isOnCertApprovals = isCertManager && pathname.includes("/approvals"); const getInitialProjectSubmenu = (): Submenu | null => { @@ -78,6 +77,7 @@ export const ProjectNav = () => { : PROJECT_ACCESS_CONTROL_SUBMENU; if (isOnIntegrations && currentProject.type === ProjectType.SecretManager) return INTEGRATIONS_SUBMENU; + if (isOnIntegrations && isCertManager) return CERT_INTEGRATIONS_SUBMENU; if (isOnProjectSettings && currentProject.type === ProjectType.SecretManager) return SM_SETTINGS_SUBMENU; if (isOnProjectSettings && isCertManager) return CERT_SETTINGS_SUBMENU; @@ -86,7 +86,6 @@ export const ProjectNav = () => { if (isOnMcpOverview) return MCP_SUBMENU; if (isOnCertPolicies) return CERT_CERTIFICATES_SUBMENU; if (isOnCertDiscovery) return CERT_DISCOVERY_SUBMENU; - if (isOnCertCodeSigning) return CERT_CODE_SIGNING_SUBMENU; if (isOnCertApprovals) return CERT_APPROVALS_SUBMENU; if (currentProject.type === ProjectType.PAM && pathname.includes("/approvals")) return PAM_APPROVALS_SUBMENU; @@ -161,9 +160,7 @@ export const ProjectNav = () => { {projectLabel} - - - + )} diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx index 7f3546ddb3e..63618364bd5 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx @@ -2,7 +2,7 @@ import { Link, useLocation } from "@tanstack/react-router"; import { ChevronRight } from "lucide-react"; import { twMerge } from "tailwind-merge"; -import { Badge, SidebarMenuButton, SidebarMenuItem } from "@app/components/v3"; +import { Badge, SidebarMenu, SidebarMenuButton, SidebarMenuItem } from "@app/components/v3"; import { useOrganization, useProject } from "@app/context"; import type { NavItem, Submenu } from "./types"; @@ -19,12 +19,19 @@ export const ProjectNavLink = ({ }) => { const { currentOrg } = useOrganization(); const { currentProject } = useProject(); - const { pathname } = useLocation(); + const { pathname, search: locationSearch } = useLocation(); const typePath = PROJECT_TYPE_PATH[currentProject.type]; const basePath = `/organizations/${currentOrg.id}/projects/${typePath}/${currentProject.id}`; const fullPath = `${basePath}/${item.pathSuffix}`; - const isActive = pathname.startsWith(fullPath) || Boolean(item.activeMatch?.test(pathname)); + + const pathMatch = pathname.startsWith(fullPath) || Boolean(item.activeMatch?.test(pathname)); + const isActive = item.search + ? pathMatch && + Object.entries(item.search).every( + ([key, value]) => (locationSearch as Record)?.[key] === value + ) + : pathMatch; if (item.submenu && onSubmenuOpen) { return ( @@ -57,6 +64,8 @@ export const ProjectNavLink = ({ to={`/organizations/$orgId/projects/${typePath}/$projectId/${item.pathSuffix}` as any} // eslint-disable-next-line @typescript-eslint/no-explicit-any params={{ orgId: currentOrg.id, projectId: currentProject.id } as any} + // eslint-disable-next-line @typescript-eslint/no-explicit-any + search={item.search as any} > {item.label} @@ -78,7 +87,7 @@ export const ProjectNavList = ({ items: NavItem[]; onSubmenuOpen: (submenu: Submenu) => void; }) => ( - <> + {items .filter((i) => !i.hidden) .map((item) => ( @@ -88,5 +97,5 @@ export const ProjectNavList = ({ onSubmenuOpen={item.submenu ? onSubmenuOpen : undefined} /> ))} - + ); diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SshNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SshNav.tsx index c601d4a804b..2d632f111bf 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SshNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SshNav.tsx @@ -1,6 +1,7 @@ import { FileText, Server, Settings, Shield, ShieldCheck } from "lucide-react"; import { ProjectPermissionCan } from "@app/components/permissions"; +import { SidebarMenu } from "@app/components/v3"; import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context"; import { ProjectNavLink } from "./ProjectNavLink"; @@ -29,7 +30,7 @@ export const SshNav = ({ onSubmenuOpen }: { onSubmenuOpen: (submenu: Submenu) => ]; return ( - <> + {items .filter((i) => !i.hidden) .map((item) => { @@ -52,6 +53,6 @@ export const SshNav = ({ onSubmenuOpen }: { onSubmenuOpen: (submenu: Submenu) => /> ); })} - + ); }; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/submenus.ts b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/submenus.ts index 017e8008b07..a514b310958 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/submenus.ts +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/submenus.ts @@ -18,7 +18,6 @@ import { Key, Lock, MapPin, - PenTool, Plug, Route, ScanSearch, @@ -190,18 +189,6 @@ export const CERT_DISCOVERY_SUBMENU: Submenu = { ] }; -export const CERT_CODE_SIGNING_SUBMENU: Submenu = { - title: "Code Signing", - pathSuffix: "code-signing", - defaultTab: "signers", - items: [ - { label: "Signers", icon: PenTool, tab: "signers" }, - { label: "Signing Requests", icon: FileCheck, tab: "signing-requests" }, - { label: "Signing Policies", icon: Shield, tab: "signing-policies" }, - { label: "Grants", icon: Key, tab: "grants" } - ] -}; - export const CERT_APPROVALS_SUBMENU: Submenu = { title: "Approvals", pathSuffix: "approvals", @@ -222,6 +209,16 @@ export const CERT_SETTINGS_SUBMENU: Submenu = { ] }; +export const CERT_INTEGRATIONS_SUBMENU: Submenu = { + title: "Integrations", + pathSuffix: "integrations", + defaultTab: "app-connections", + items: [ + { label: "App Connections", icon: Cable, tab: "app-connections" }, + { label: "Certificate Syncs", icon: ArrowLeftRight, tab: "pki-syncs" } + ] +}; + // --- Secret scanning submenus --- export const SECRET_SCANNING_SETTINGS_SUBMENU: Submenu = { diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts index cdb218a7a03..89e634caca8 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts @@ -38,6 +38,8 @@ export type NavItem = { submenu?: Submenu; /** For SSH CA permission gating */ permissionCheck?: boolean; + /** Query params to append to the link and use for active state matching */ + search?: Record; }; export type OrgNavItem = { diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx b/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx index 06f2fa9654e..687c36e2235 100644 --- a/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx +++ b/frontend/src/pages/cert-manager/IntegrationsListPage/IntegrationsListPage.tsx @@ -10,7 +10,7 @@ import { ProjectPermissionPkiSyncActions } from "@app/context/ProjectPermissionC import { ProjectType } from "@app/hooks/api/projects/types"; import { IntegrationsListPageTabs } from "@app/types/integrations"; -import { PkiSyncsTab } from "./components"; +import { AppConnectionsTab, PkiSyncsTab } from "./components"; export const IntegrationsListPage = () => { const navigate = useNavigate(); @@ -22,7 +22,7 @@ export const IntegrationsListPage = () => { from: ROUTE_PATHS.CertManager.IntegrationsListPage.id }); - const currentTab = selectedTab || IntegrationsListPageTabs.PkiSyncs; + const currentTab = selectedTab || IntegrationsListPageTabs.AppConnections; const updateSelectedTab = (tab: string) => { navigate({ @@ -53,6 +53,9 @@ export const IntegrationsListPage = () => { description="Manage integrations with third-party certificate services." /> + + + { + const { currentProject } = useProject(); + + return ( + + + + ); +}; diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/components/AppConnectionsTab/index.ts b/frontend/src/pages/cert-manager/IntegrationsListPage/components/AppConnectionsTab/index.ts new file mode 100644 index 00000000000..79649edaff1 --- /dev/null +++ b/frontend/src/pages/cert-manager/IntegrationsListPage/components/AppConnectionsTab/index.ts @@ -0,0 +1 @@ +export { AppConnectionsTab } from "./AppConnectionsTab"; diff --git a/frontend/src/pages/cert-manager/IntegrationsListPage/components/index.ts b/frontend/src/pages/cert-manager/IntegrationsListPage/components/index.ts index 00ab571657a..a5c2bd8e479 100644 --- a/frontend/src/pages/cert-manager/IntegrationsListPage/components/index.ts +++ b/frontend/src/pages/cert-manager/IntegrationsListPage/components/index.ts @@ -1 +1,2 @@ +export { AppConnectionsTab } from "./AppConnectionsTab"; export { PkiSyncsTab } from "./PkiSyncsTab"; From 4459b7a56da3530d47a80196bfd224a19ca53b75 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 15 Apr 2026 23:55:22 -0300 Subject: [PATCH 164/562] Improve PostHog dedicated instances flow --- backend/src/lib/config/env.ts | 1 + backend/src/services/telemetry/telemetry-service.ts | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/lib/config/env.ts b/backend/src/lib/config/env.ts index 63ad119b5d2..3adc11969ed 100644 --- a/backend/src/lib/config/env.ts +++ b/backend/src/lib/config/env.ts @@ -297,6 +297,7 @@ const envSchema = z .transform((val) => val === "true" || IS_PACKAGED) .optional(), INFISICAL_CLOUD: zodStrBool.default("false"), + INFISICAL_DEDICATED: zodStrBool.default("false"), MAINTENANCE_MODE: zodStrBool.default("false"), CAPTCHA_SECRET: zpStr(z.string().optional()), CAPTCHA_SITE_KEY: zpStr(z.string().optional()), diff --git a/backend/src/services/telemetry/telemetry-service.ts b/backend/src/services/telemetry/telemetry-service.ts index 46ff97026f7..c6d5de38181 100644 --- a/backend/src/services/telemetry/telemetry-service.ts +++ b/backend/src/services/telemetry/telemetry-service.ts @@ -74,17 +74,17 @@ export enum DeploymentType { * Computes the deployment type based on the instance type and environment configuration. * - US Cloud: instanceType is Cloud and INTERNAL_REGION is "us" (or unset, defaults to US) * - EU Cloud: instanceType is Cloud and INTERNAL_REGION is "eu" - * - Dedicated: INFISICAL_CLOUD is true but instanceType is not Cloud (uses self-hosted license keys) + * - Dedicated: INFISICAL_DEDICATED is true * - Self-Hosted: everything else */ const getDeploymentType = ( instanceType: InstanceType, - appConfig: { INFISICAL_CLOUD: boolean; INTERNAL_REGION?: string } + appConfig: { INFISICAL_CLOUD: boolean; INFISICAL_DEDICATED: boolean; INTERNAL_REGION?: string } ) => { if (instanceType === InstanceType.Cloud) { return appConfig.INTERNAL_REGION === "eu" ? DeploymentType.EUCloud : DeploymentType.USCloud; } - if (appConfig.INFISICAL_CLOUD) { + if (appConfig.INFISICAL_DEDICATED) { return DeploymentType.Dedicated; } return DeploymentType.SelfHosted; @@ -218,7 +218,7 @@ To opt into telemetry, you can set "TELEMETRY_ENABLED=true" within the environme }; const sendPostHogEvents = async (event: TPostHogEvent) => { - if (!appCfg.INFISICAL_CLOUD && postHog) { + if (!appCfg.INFISICAL_CLOUD && !appCfg.INFISICAL_DEDICATED && postHog) { if ( [ PostHogEventTypes.SecretPulled, From c3570046d2c6daf0cbaa082e6cd80d60ec704a17 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Wed, 15 Apr 2026 23:57:48 -0300 Subject: [PATCH 165/562] Remove test condition --- backend/src/services/telemetry/telemetry-service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/services/telemetry/telemetry-service.ts b/backend/src/services/telemetry/telemetry-service.ts index c6d5de38181..b58249c2ba5 100644 --- a/backend/src/services/telemetry/telemetry-service.ts +++ b/backend/src/services/telemetry/telemetry-service.ts @@ -218,7 +218,7 @@ To opt into telemetry, you can set "TELEMETRY_ENABLED=true" within the environme }; const sendPostHogEvents = async (event: TPostHogEvent) => { - if (!appCfg.INFISICAL_CLOUD && !appCfg.INFISICAL_DEDICATED && postHog) { + if (!appCfg.INFISICAL_CLOUD && postHog) { if ( [ PostHogEventTypes.SecretPulled, From 57caabea49899b04539ee809a2ae2e94278423b2 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Thu, 16 Apr 2026 00:19:36 -0300 Subject: [PATCH 166/562] Address cluade-bot comments --- .../src/components/v3/generic/Sidebar/Sidebar.tsx | 13 ++++++++++++- .../components/OrgSidebar/CertManagerNav.tsx | 3 ++- .../components/OrgSidebar/ProjectNavLink.tsx | 7 ++++--- .../components/OrgSidebar/types.ts | 2 ++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx b/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx index 8cffcd56573..9221425ebee 100644 --- a/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx +++ b/frontend/src/components/v3/generic/Sidebar/Sidebar.tsx @@ -525,6 +525,13 @@ function SidebarCollapsibleGroup({ const [isOpen, setIsOpen] = React.useState(defaultOpen); const { state, isMobile } = useSidebar(); const isCollapsed = state === "collapsed" && !isMobile; + const contentRef = React.useRef(null); + + React.useEffect(() => { + if (isOpen || isCollapsed) return; + const hasActiveChild = contentRef.current?.querySelector('[data-active="true"]'); + if (hasActiveChild) setIsOpen(true); + }); const abbreviation = collapsedLabel || @@ -569,12 +576,16 @@ function SidebarCollapsibleGroup({ )}
    -
    {children}
    +
    + {children} +
    ); diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/CertManagerNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/CertManagerNav.tsx index 7a3478022a0..dcc5aa4d49f 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/CertManagerNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/CertManagerNav.tsx @@ -99,7 +99,8 @@ export const CertManagerNav = ({ icon: PenTool, pathSuffix: "code-signing", activeMatch: /\/code-signing/, - search: { selectedTab: "signers" } + search: { selectedTab: "signers" }, + isDefaultSearch: true }, { label: "Signing Requests", diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx index 63618364bd5..c848ba6ac82 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNavLink.tsx @@ -28,9 +28,10 @@ export const ProjectNavLink = ({ const pathMatch = pathname.startsWith(fullPath) || Boolean(item.activeMatch?.test(pathname)); const isActive = item.search ? pathMatch && - Object.entries(item.search).every( - ([key, value]) => (locationSearch as Record)?.[key] === value - ) + Object.entries(item.search).every(([key, value]) => { + const urlValue = (locationSearch as Record)?.[key]; + return urlValue === value || (urlValue === undefined && item.isDefaultSearch); + }) : pathMatch; if (item.submenu && onSubmenuOpen) { diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts index 89e634caca8..181d781cbe5 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/types.ts @@ -40,6 +40,8 @@ export type NavItem = { permissionCheck?: boolean; /** Query params to append to the link and use for active state matching */ search?: Record; + /** When true, this item is also active when the path matches but search keys are absent from the URL */ + isDefaultSearch?: boolean; }; export type OrgNavItem = { From 39abd7f48ba0dc675657317627337874846c5bc6 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Thu, 16 Apr 2026 09:22:58 -0400 Subject: [PATCH 167/562] docs: use placeholder for gateway name in systemd command --- docs/documentation/platform/gateways/gateway-deployment.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/documentation/platform/gateways/gateway-deployment.mdx b/docs/documentation/platform/gateways/gateway-deployment.mdx index 97af05b3d51..487eb9660fb 100644 --- a/docs/documentation/platform/gateways/gateway-deployment.mdx +++ b/docs/documentation/platform/gateways/gateway-deployment.mdx @@ -45,7 +45,7 @@ This guide covers everything you need to deploy and configure Infisical Gateways For production deployments on Linux, install as a systemd service: ```bash - sudo infisical gateway systemd install my-gateway \ + sudo infisical gateway systemd install \ --enroll-method=token \ --token= \ --domain= From f9ec74cb2eac58421c1a9d894b46814e4b906165 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Thu, 16 Apr 2026 23:11:49 +0800 Subject: [PATCH 168/562] fix: made totp verify lax --- backend/src/services/totp/totp-service.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/src/services/totp/totp-service.ts b/backend/src/services/totp/totp-service.ts index 193a27d90db..461d43ac12a 100644 --- a/backend/src/services/totp/totp-service.ts +++ b/backend/src/services/totp/totp-service.ts @@ -22,6 +22,8 @@ type TTotpServiceFactoryDep = { kmsService: TKmsServiceFactory; }; +authenticator.options = { window: 1 }; + export type TTotpServiceFactory = ReturnType; const MAX_RECOVERY_CODE_LIMIT = 10; From 2eca4030e890997e5164b966085615b53df7a4a6 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Thu, 16 Apr 2026 12:18:36 -0300 Subject: [PATCH 169/562] Address PR comments --- ...60413325231_add-scep-dynamic-challenges.ts | 11 ++- .../db/schemas/pki-scep-dynamic-challenges.ts | 2 - .../db/schemas/pki-scep-enrollment-configs.ts | 4 +- backend/src/ee/routes/scep/pki-scep-router.ts | 5 +- .../ee/services/audit-log/audit-log-types.ts | 1 - .../ee/services/pki-scep/challenge/index.ts | 2 +- .../challenge/scep-challenge-dynamic.ts | 17 ++--- .../pki-scep-dynamic-challenge-dal.ts | 46 ++++++------- .../ee/services/pki-scep/pki-scep-service.ts | 17 +++-- .../ee/services/pki-scep/pki-scep-types.ts | 1 - .../server/plugins/auth/inject-identity.ts | 2 +- backend/src/server/routes/index.ts | 1 + .../routes/v1/certificate-profiles-router.ts | 19 ++--- .../certificate-profile-service.test.ts | 1 + .../certificate-profile-service.ts | 45 +++++++++--- .../certificate-profile-types.ts | 4 +- .../platform/pki/enrollment-methods/scep.mdx | 2 +- .../pki/integration-guides/jamf-pro-scep.mdx | 4 +- .../src/hooks/api/auditLogs/constants.tsx | 4 ++ frontend/src/hooks/api/auditLogs/enums.tsx | 4 ++ .../hooks/api/certificateProfiles/types.ts | 4 +- .../CreateProfileModal.tsx | 69 +++++++++++++------ 22 files changed, 146 insertions(+), 119 deletions(-) diff --git a/backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts b/backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts index 744318b29b2..64185f31ee4 100644 --- a/backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts +++ b/backend/src/db/migrations/20260413325231_add-scep-dynamic-challenges.ts @@ -12,15 +12,12 @@ export async function up(knex: Knex): Promise { t.foreign("scepConfigId").references("id").inTable(TableName.PkiScepEnrollmentConfig).onDelete("CASCADE"); t.index("scepConfigId"); - t.text("hashedChallenge").notNullable(); + t.string("hashedChallenge", 64).notNullable(); + t.index("hashedChallenge"); t.timestamp("expiresAt").notNullable(); t.index("expiresAt"); - t.timestamp("usedAt").nullable(); - - t.string("clientIp", 45).nullable(); - t.timestamps(true, true, true); }); @@ -30,8 +27,8 @@ export async function up(knex: Knex): Promise { if (!(await knex.schema.hasColumn(TableName.PkiScepEnrollmentConfig, "challengeType"))) { await knex.schema.alterTable(TableName.PkiScepEnrollmentConfig, (t) => { t.string("challengeType", 32).notNullable().defaultTo("static"); - t.integer("dynamicChallengeExpiryMinutes").notNullable().defaultTo(60); - t.integer("dynamicChallengeMaxPending").notNullable().defaultTo(100); + t.integer("dynamicChallengeExpiryMinutes").nullable(); + t.integer("dynamicChallengeMaxPending").nullable(); }); } diff --git a/backend/src/db/schemas/pki-scep-dynamic-challenges.ts b/backend/src/db/schemas/pki-scep-dynamic-challenges.ts index d990e0c07d3..cbc005ab2a4 100644 --- a/backend/src/db/schemas/pki-scep-dynamic-challenges.ts +++ b/backend/src/db/schemas/pki-scep-dynamic-challenges.ts @@ -12,8 +12,6 @@ export const PkiScepDynamicChallengesSchema = z.object({ scepConfigId: z.string().uuid(), hashedChallenge: z.string(), expiresAt: z.date(), - usedAt: z.date().nullable().optional(), - clientIp: z.string().nullable().optional(), createdAt: z.date(), updatedAt: z.date() }); diff --git a/backend/src/db/schemas/pki-scep-enrollment-configs.ts b/backend/src/db/schemas/pki-scep-enrollment-configs.ts index dced3b93885..616b4ee18b9 100644 --- a/backend/src/db/schemas/pki-scep-enrollment-configs.ts +++ b/backend/src/db/schemas/pki-scep-enrollment-configs.ts @@ -20,8 +20,8 @@ export const PkiScepEnrollmentConfigsSchema = z.object({ createdAt: z.date(), updatedAt: z.date(), challengeType: z.string().default("static"), - dynamicChallengeExpiryMinutes: z.number().default(60), - dynamicChallengeMaxPending: z.number().default(100) + dynamicChallengeExpiryMinutes: z.number().nullable().optional(), + dynamicChallengeMaxPending: z.number().nullable().optional() }); export type TPkiScepEnrollmentConfigs = z.infer; diff --git a/backend/src/ee/routes/scep/pki-scep-router.ts b/backend/src/ee/routes/scep/pki-scep-router.ts index 5de4b84f265..f7f27e1f372 100644 --- a/backend/src/ee/routes/scep/pki-scep-router.ts +++ b/backend/src/ee/routes/scep/pki-scep-router.ts @@ -132,11 +132,9 @@ export const registerPkiScepRouter = async (server: FastifyZodProvider) => { onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), handler: async (req, res) => { const { profileId } = req.params; - const clientIp = req.ip || "unknown"; const result = await server.services.pkiScep.generateDynamicChallenge({ profileId, - clientIp, actor: req.permission.type, actorId: req.permission.id, actorAuthMethod: req.permission.authMethod, @@ -151,8 +149,7 @@ export const registerPkiScepRouter = async (server: FastifyZodProvider) => { metadata: { profileId, profileSlug: result.profileSlug, - expiresAt: result.expiresAt, - clientIp: clientIp || "unknown" + expiresAt: result.expiresAt } } }); diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index c81eb548006..670b1a3f21f 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -5838,7 +5838,6 @@ interface ScepDynamicChallengeGeneratedEvent { profileId: string; profileSlug: string; expiresAt: string; - clientIp: string; }; } diff --git a/backend/src/ee/services/pki-scep/challenge/index.ts b/backend/src/ee/services/pki-scep/challenge/index.ts index 62e862b0a11..a327cc0ddb6 100644 --- a/backend/src/ee/services/pki-scep/challenge/index.ts +++ b/backend/src/ee/services/pki-scep/challenge/index.ts @@ -11,7 +11,7 @@ export { ScepChallengeType } from "./scep-challenge-types"; type TScepChallengeValidatorFactoryDep = { scepEnrollmentConfigDAL: Pick; - scepDynamicChallengeDAL: Pick; + scepDynamicChallengeDAL: Pick; }; export const getScepChallengeValidator = ( diff --git a/backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts b/backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts index 33c11a7e255..c7c636adf78 100644 --- a/backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts +++ b/backend/src/ee/services/pki-scep/challenge/scep-challenge-dynamic.ts @@ -4,7 +4,7 @@ import { TScepDynamicChallengeDALFactory } from "../pki-scep-dynamic-challenge-d import { IScepChallengeValidator } from "./scep-challenge-types"; type TDynamicChallengeValidatorDep = { - scepDynamicChallengeDAL: Pick; + scepDynamicChallengeDAL: Pick; }; export const dynamicChallengeValidator = ({ @@ -13,18 +13,9 @@ export const dynamicChallengeValidator = ({ validate: async (challengePassword: string, scepConfigId: string): Promise => { if (!challengePassword) return false; - const pendingChallenges = await scepDynamicChallengeDAL.findUnusedByConfigId(scepConfigId); + const hashedChallenge = crypto.nativeCrypto.createHash("sha256").update(challengePassword).digest("hex"); + const claimed = await scepDynamicChallengeDAL.consumeByHash(hashedChallenge, scepConfigId); - for (const challenge of pendingChallenges) { - // eslint-disable-next-line no-await-in-loop - const matches = await crypto.hashing().compareHash(challengePassword, challenge.hashedChallenge); - if (matches) { - // eslint-disable-next-line no-await-in-loop - const claimed = await scepDynamicChallengeDAL.markUsed(challenge.id); - if (claimed) return true; - } - } - - return false; + return !!claimed; } }); diff --git a/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts b/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts index 6862627c6d0..5207645dd0c 100644 --- a/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts +++ b/backend/src/ee/services/pki-scep/pki-scep-dynamic-challenge-dal.ts @@ -10,16 +10,17 @@ export type TScepDynamicChallengeDALFactory = ReturnType { const orm = ormify(db, TableName.PkiScepDynamicChallenge); - const findUnusedByConfigId = async (scepConfigId: string, tx?: Knex) => { + const consumeByHash = async (hashedChallenge: string, scepConfigId: string, tx?: Knex) => { try { - const results = await (tx || db)(TableName.PkiScepDynamicChallenge) - .where({ scepConfigId }) - .whereNull("usedAt") - .where("expiresAt", ">", new Date()); + const [result] = await (tx || db)(TableName.PkiScepDynamicChallenge) + .where({ hashedChallenge, scepConfigId }) + .where("expiresAt", ">", new Date()) + .delete() + .returning("*"); - return results; + return result; } catch (error) { - throw new DatabaseError({ error, name: "Find unused SCEP dynamic challenges" }); + throw new DatabaseError({ error, name: "Consume SCEP dynamic challenge by hash" }); } }; @@ -27,7 +28,6 @@ export const scepDynamicChallengeDALFactory = (db: TDbClient) => { try { const result = await (tx || db)(TableName.PkiScepDynamicChallenge) .where({ scepConfigId }) - .whereNull("usedAt") .where("expiresAt", ">", new Date()) .count("id as count") .first(); @@ -38,20 +38,6 @@ export const scepDynamicChallengeDALFactory = (db: TDbClient) => { } }; - const markUsed = async (id: string, tx?: Knex) => { - try { - const [result] = await (tx || db)(TableName.PkiScepDynamicChallenge) - .where({ id }) - .whereNull("usedAt") - .update({ usedAt: new Date() }) - .returning("*"); - - return result; - } catch (error) { - throw new DatabaseError({ error, name: "Mark SCEP dynamic challenge as used" }); - } - }; - const pruneExpired = async (scepConfigId: string, tx?: Knex) => { try { const deletedCount = await (tx || db)(TableName.PkiScepDynamicChallenge) @@ -65,11 +51,21 @@ export const scepDynamicChallengeDALFactory = (db: TDbClient) => { } }; + const deleteByConfigId = async (scepConfigId: string, tx?: Knex) => { + try { + const deletedCount = await (tx || db)(TableName.PkiScepDynamicChallenge).where({ scepConfigId }).delete(); + + return deletedCount; + } catch (error) { + throw new DatabaseError({ error, name: "Delete SCEP dynamic challenges by config" }); + } + }; + return { ...orm, - findUnusedByConfigId, + consumeByHash, countPending, - markUsed, - pruneExpired + pruneExpired, + deleteByConfigId }; }; diff --git a/backend/src/ee/services/pki-scep/pki-scep-service.ts b/backend/src/ee/services/pki-scep/pki-scep-service.ts index 07a62e19d32..5e0d63b9ed4 100644 --- a/backend/src/ee/services/pki-scep/pki-scep-service.ts +++ b/backend/src/ee/services/pki-scep/pki-scep-service.ts @@ -9,7 +9,6 @@ import { ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; import { extractX509CertFromChain } from "@app/lib/certificates/extract-certificate"; -import { getConfig } from "@app/lib/config/env"; import { crypto } from "@app/lib/crypto/cryptography"; import { BadRequestError, NotFoundError } from "@app/lib/errors"; import { ActorType } from "@app/services/auth/auth-type"; @@ -858,7 +857,6 @@ export const pkiScepServiceFactory = ({ const generateDynamicChallenge = async ({ profileId, - clientIp, actor, actorId, actorAuthMethod, @@ -909,17 +907,19 @@ export const pkiScepServiceFactory = ({ const challengePlaintext = randomBytes(32).toString("hex"); - const appCfg = getConfig(); - const hashedChallenge = await crypto.hashing().createHash(challengePlaintext, appCfg.SALT_ROUNDS); + const hashedChallenge = crypto.nativeCrypto.createHash("sha256").update(challengePlaintext).digest("hex"); + + const expiryMinutes = scepConfig.dynamicChallengeExpiryMinutes ?? 60; + const maxPending = scepConfig.dynamicChallengeMaxPending ?? 100; const expiresAt = new Date(); - expiresAt.setMinutes(expiresAt.getMinutes() + scepConfig.dynamicChallengeExpiryMinutes); + expiresAt.setMinutes(expiresAt.getMinutes() + expiryMinutes); await scepDynamicChallengeDAL.transaction(async (tx) => { const pendingCount = await scepDynamicChallengeDAL.countPending(scepConfig.id, tx); - if (pendingCount >= scepConfig.dynamicChallengeMaxPending) { + if (pendingCount >= maxPending) { throw new BadRequestError({ - message: `Maximum number of pending challenges (${scepConfig.dynamicChallengeMaxPending}) reached. Wait for existing challenges to expire or be used.` + message: `Maximum number of pending challenges (${maxPending}) reached. Wait for existing challenges to expire or be used.` }); } @@ -927,8 +927,7 @@ export const pkiScepServiceFactory = ({ { scepConfigId: scepConfig.id, hashedChallenge, - expiresAt, - clientIp: clientIp || null + expiresAt }, tx ); diff --git a/backend/src/ee/services/pki-scep/pki-scep-types.ts b/backend/src/ee/services/pki-scep/pki-scep-types.ts index f343c815066..321940dab68 100644 --- a/backend/src/ee/services/pki-scep/pki-scep-types.ts +++ b/backend/src/ee/services/pki-scep/pki-scep-types.ts @@ -68,7 +68,6 @@ export type THandlePkiOperationDTO = { export type TGenerateDynamicChallengeDTO = { profileId: string; - clientIp: string; actor: ActorType; actorId: string; actorAuthMethod: ActorAuthMethod; diff --git a/backend/src/server/plugins/auth/inject-identity.ts b/backend/src/server/plugins/auth/inject-identity.ts index 2974e784bc5..0cff32d81a2 100644 --- a/backend/src/server/plugins/auth/inject-identity.ts +++ b/backend/src/server/plugins/auth/inject-identity.ts @@ -166,7 +166,7 @@ export const injectIdentity = fp( return; } - if (req.url.includes("/scep/") && !req.url.includes("/challenge")) { + if (req.url.includes("/scep/") && req.url.includes("pkiclient.exe")) { return; } diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 54f121785d4..eb8fdffb180 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -1376,6 +1376,7 @@ export const registerRoutes = async ( estEnrollmentConfigDAL, acmeEnrollmentConfigDAL, scepEnrollmentConfigDAL, + scepDynamicChallengeDAL, certificateBodyDAL, certificateSecretDAL, certificateAuthorityDAL, diff --git a/backend/src/server/routes/v1/certificate-profiles-router.ts b/backend/src/server/routes/v1/certificate-profiles-router.ts index f78a6099c8e..2e3f354ebf2 100644 --- a/backend/src/server/routes/v1/certificate-profiles-router.ts +++ b/backend/src/server/routes/v1/certificate-profiles-router.ts @@ -367,8 +367,8 @@ export const registerCertificateProfilesRouter = async ( allowCertBasedRenewal: z.boolean(), challengeType: z.string(), challengeEndpointUrl: z.string().optional(), - dynamicChallengeExpiryMinutes: z.number(), - dynamicChallengeMaxPending: z.number() + dynamicChallengeExpiryMinutes: z.number().optional(), + dynamicChallengeMaxPending: z.number().optional() }) .optional(), externalConfigs: ExternalConfigUnionSchema, @@ -473,8 +473,8 @@ export const registerCertificateProfilesRouter = async ( allowCertBasedRenewal: z.boolean(), challengeType: z.string(), challengeEndpointUrl: z.string().optional(), - dynamicChallengeExpiryMinutes: z.number(), - dynamicChallengeMaxPending: z.number() + dynamicChallengeExpiryMinutes: z.number().optional(), + dynamicChallengeMaxPending: z.number().optional() }) .optional(), externalConfigs: ExternalConfigUnionSchema @@ -664,17 +664,6 @@ export const registerCertificateProfilesRouter = async ( { message: "SCEP static challenge requires a challenge password with at least 8 characters" } - ) - .refine( - (data) => { - if (data.scepConfig?.challengeType === ScepChallengeType.STATIC) { - return !!data.scepConfig.challengePassword; - } - return true; - }, - { - message: "Switching to static challenge type requires providing a challenge password" - } ), response: { 200: z.object({ diff --git a/backend/src/services/certificate-profile/certificate-profile-service.test.ts b/backend/src/services/certificate-profile/certificate-profile-service.test.ts index d7739441a10..b9bdd39d651 100644 --- a/backend/src/services/certificate-profile/certificate-profile-service.test.ts +++ b/backend/src/services/certificate-profile/certificate-profile-service.test.ts @@ -271,6 +271,7 @@ describe("CertificateProfileService", () => { estEnrollmentConfigDAL: mockEstEnrollmentConfigDAL, acmeEnrollmentConfigDAL: mockAcmeEnrollmentConfigDAL, scepEnrollmentConfigDAL: mockScepEnrollmentConfigDAL, + scepDynamicChallengeDAL: { deleteByConfigId: vi.fn() }, certificateBodyDAL: mockCertificateBodyDAL, certificateSecretDAL: mockCertificateSecretDAL, certificateAuthorityDAL: mockCertificateAuthorityDAL, diff --git a/backend/src/services/certificate-profile/certificate-profile-service.ts b/backend/src/services/certificate-profile/certificate-profile-service.ts index b52cb862bb6..784d1f2f44c 100644 --- a/backend/src/services/certificate-profile/certificate-profile-service.ts +++ b/backend/src/services/certificate-profile/certificate-profile-service.ts @@ -10,6 +10,7 @@ import { } from "@app/ee/services/permission/project-permission"; import { buildUrl } from "@app/ee/services/pki-acme/pki-acme-fns"; import { ScepChallengeType } from "@app/ee/services/pki-scep/challenge"; +import { TScepDynamicChallengeDALFactory } from "@app/ee/services/pki-scep/pki-scep-dynamic-challenge-dal"; import { generateRaCertificate } from "@app/ee/services/pki-scep/pki-scep-fns"; import { getProcessedPermissionRules } from "@app/lib/casl/permission-filter-utils"; import { extractX509CertFromChain } from "@app/lib/certificates/extract-certificate"; @@ -242,6 +243,7 @@ type TCertificateProfileServiceFactoryDep = { estEnrollmentConfigDAL: TEstEnrollmentConfigDALFactory; acmeEnrollmentConfigDAL: TAcmeEnrollmentConfigDALFactory; scepEnrollmentConfigDAL: TScepEnrollmentConfigDALFactory; + scepDynamicChallengeDAL: Pick; certificateBodyDAL: Pick; certificateSecretDAL: Pick; certificateAuthorityDAL: Pick; @@ -285,6 +287,7 @@ export const certificateProfileServiceFactory = ({ estEnrollmentConfigDAL, acmeEnrollmentConfigDAL, scepEnrollmentConfigDAL, + scepDynamicChallengeDAL, certificateBodyDAL, certificateSecretDAL, certificateAuthorityDAL, @@ -419,8 +422,8 @@ export const certificateProfileServiceFactory = ({ challengeType: string; includeCaCertInResponse: boolean; allowCertBasedRenewal: boolean; - dynamicChallengeExpiryMinutes: number; - dynamicChallengeMaxPending: number; + dynamicChallengeExpiryMinutes: number | null; + dynamicChallengeMaxPending: number | null; } | undefined; @@ -455,8 +458,10 @@ export const certificateProfileServiceFactory = ({ challengeType, includeCaCertInResponse: data.scepConfig.includeCaCertInResponse ?? true, allowCertBasedRenewal: data.scepConfig.allowCertBasedRenewal ?? true, - dynamicChallengeExpiryMinutes: data.scepConfig.dynamicChallengeExpiryMinutes ?? 60, - dynamicChallengeMaxPending: data.scepConfig.dynamicChallengeMaxPending ?? 100 + dynamicChallengeExpiryMinutes: + challengeType === ScepChallengeType.DYNAMIC ? (data.scepConfig.dynamicChallengeExpiryMinutes ?? 60) : null, + dynamicChallengeMaxPending: + challengeType === ScepChallengeType.DYNAMIC ? (data.scepConfig.dynamicChallengeMaxPending ?? 100) : null }; } @@ -725,19 +730,35 @@ export const certificateProfileServiceFactory = ({ } if (scepConfig && existingProfile.scepConfigId) { + const existingScepConfig = await scepEnrollmentConfigDAL.findById(existingProfile.scepConfigId, tx); + const scepUpdateData: { hashedChallengePassword?: string | null; challengeType?: string; includeCaCertInResponse?: boolean; allowCertBasedRenewal?: boolean; - dynamicChallengeExpiryMinutes?: number; - dynamicChallengeMaxPending?: number; + dynamicChallengeExpiryMinutes?: number | null; + dynamicChallengeMaxPending?: number | null; } = {}; if (scepConfig.challengeType !== undefined) { scepUpdateData.challengeType = scepConfig.challengeType; if (scepConfig.challengeType === ScepChallengeType.DYNAMIC) { scepUpdateData.hashedChallengePassword = null; + scepUpdateData.dynamicChallengeExpiryMinutes = scepConfig.dynamicChallengeExpiryMinutes ?? 60; + scepUpdateData.dynamicChallengeMaxPending = scepConfig.dynamicChallengeMaxPending ?? 100; + } + if (scepConfig.challengeType === ScepChallengeType.STATIC) { + // Require password when switching from dynamic to static + const isSwitchingFromDynamic = existingScepConfig?.challengeType === ScepChallengeType.DYNAMIC; + if (isSwitchingFromDynamic && !scepConfig.challengePassword) { + throw new BadRequestError({ + message: "Switching to static challenge type requires providing a challenge password" + }); + } + await scepDynamicChallengeDAL.deleteByConfigId(existingProfile.scepConfigId, tx); + scepUpdateData.dynamicChallengeExpiryMinutes = null; + scepUpdateData.dynamicChallengeMaxPending = null; } } if (scepConfig.challengePassword && scepUpdateData.challengeType !== ScepChallengeType.DYNAMIC) { @@ -751,10 +772,10 @@ export const certificateProfileServiceFactory = ({ if (scepConfig.allowCertBasedRenewal !== undefined) { scepUpdateData.allowCertBasedRenewal = scepConfig.allowCertBasedRenewal; } - if (scepConfig.dynamicChallengeExpiryMinutes !== undefined) { + if (scepUpdateData.challengeType === undefined && scepConfig.dynamicChallengeExpiryMinutes !== undefined) { scepUpdateData.dynamicChallengeExpiryMinutes = scepConfig.dynamicChallengeExpiryMinutes; } - if (scepConfig.dynamicChallengeMaxPending !== undefined) { + if (scepUpdateData.challengeType === undefined && scepConfig.dynamicChallengeMaxPending !== undefined) { scepUpdateData.dynamicChallengeMaxPending = scepConfig.dynamicChallengeMaxPending; } if (Object.keys(scepUpdateData).length > 0) { @@ -871,6 +892,9 @@ export const certificateProfileServiceFactory = ({ profile.scepConfig.scepEndpointUrl = `${siteUrl}/scep/${profile.id}/pkiclient.exe`; if (profile.scepConfig.challengeType === ScepChallengeType.DYNAMIC) { profile.scepConfig.challengeEndpointUrl = `${siteUrl}/scep/${profile.id}/challenge`; + } else { + delete profile.scepConfig.dynamicChallengeExpiryMinutes; + delete profile.scepConfig.dynamicChallengeMaxPending; } } @@ -1055,7 +1079,10 @@ export const certificateProfileServiceFactory = ({ scepEndpointUrl: `${siteUrl}/scep/${profile.id}/pkiclient.exe`, ...(profileWithConfigs.scepConfig.challengeType === ScepChallengeType.DYNAMIC ? { challengeEndpointUrl: `${siteUrl}/scep/${profile.id}/challenge` } - : {}) + : { + dynamicChallengeExpiryMinutes: undefined, + dynamicChallengeMaxPending: undefined + }) } : undefined }; diff --git a/backend/src/services/certificate-profile/certificate-profile-types.ts b/backend/src/services/certificate-profile/certificate-profile-types.ts index b8bf90f4cc3..213750fc0fb 100644 --- a/backend/src/services/certificate-profile/certificate-profile-types.ts +++ b/backend/src/services/certificate-profile/certificate-profile-types.ts @@ -135,8 +135,8 @@ export type TCertificateProfileWithConfigs = TCertificateProfile & { allowCertBasedRenewal: boolean; challengeType: string; challengeEndpointUrl?: string; - dynamicChallengeExpiryMinutes: number; - dynamicChallengeMaxPending: number; + dynamicChallengeExpiryMinutes?: number; + dynamicChallengeMaxPending?: number; }; }; diff --git a/docs/documentation/platform/pki/enrollment-methods/scep.mdx b/docs/documentation/platform/pki/enrollment-methods/scep.mdx index ba6ec25ebda..662c08b6c02 100644 --- a/docs/documentation/platform/pki/enrollment-methods/scep.mdx +++ b/docs/documentation/platform/pki/enrollment-methods/scep.mdx @@ -53,7 +53,7 @@ Infisical supports two challenge authentication modes for SCEP enrollment: The endpoint accepts authenticated `POST` requests and returns a plain-text one-time challenge password. The caller must authenticate using a [Machine Identity](/documentation/platform/identities/machine-identities) access token. - Configuration options for dynamic challenges: + The following settings are part of the certificate profile configuration and apply to all challenges generated for this profile: - **Challenge Expiry (minutes)**: How long each generated challenge remains valid before expiring. Default: 60 minutes. Maximum: 1440 minutes (24 hours). - **Max Pending Challenges**: Maximum number of unused challenges that can exist at once. Default: 100. Maximum: 1000. diff --git a/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx b/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx index 2a47e759c39..8d4b6723aeb 100644 --- a/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx +++ b/docs/documentation/platform/pki/integration-guides/jamf-pro-scep.mdx @@ -93,14 +93,14 @@ Before you begin, make sure you have: Next, configure the challenge authentication: - + - **Challenge Type**: Select **Static** from the dropdown. - **Challenge**: Enter the **Challenge Password** from your Infisical certificate profile. - **Verify Challenge**: Re-enter the challenge password to confirm. ![SCEP configuration — Challenge and certificate options](/images/platform/pki/integrations/jamf-pro/scep-config-challenge.png) - + - **Challenge Type**: Select **Dynamic** from the dropdown. No manual challenge password entry is needed, Jamf Pro automatically calls the webhook configured in step 1 to fetch a one-time challenge for each device enrollment. diff --git a/frontend/src/hooks/api/auditLogs/constants.tsx b/frontend/src/hooks/api/auditLogs/constants.tsx index ca3efb411d4..9274f57e701 100644 --- a/frontend/src/hooks/api/auditLogs/constants.tsx +++ b/frontend/src/hooks/api/auditLogs/constants.tsx @@ -319,6 +319,10 @@ export const eventToNameMap: { [K in EventType]: string } = { [EventType.GET_CERTIFICATE_PROFILE_LATEST_ACTIVE_BUNDLE]: "Get Certificate Profile Latest Active Bundle", + [EventType.SCEP_ENROLLMENT]: "SCEP Certificate Enrollment", + [EventType.SCEP_RENEWAL]: "SCEP Certificate Renewal", + [EventType.SCEP_DYNAMIC_CHALLENGE_GENERATED]: "SCEP Dynamic Challenge Generated", + [EventType.APPROVAL_POLICY_CREATE]: "Create Approval Policy", [EventType.APPROVAL_POLICY_UPDATE]: "Update Approval Policy", [EventType.APPROVAL_POLICY_DELETE]: "Delete Approval Policy", diff --git a/frontend/src/hooks/api/auditLogs/enums.tsx b/frontend/src/hooks/api/auditLogs/enums.tsx index 5c12c354eff..a74bb03096f 100644 --- a/frontend/src/hooks/api/auditLogs/enums.tsx +++ b/frontend/src/hooks/api/auditLogs/enums.tsx @@ -313,6 +313,10 @@ export enum EventType { ORDER_CERTIFICATE_FROM_PROFILE = "order-certificate-from-profile", GET_CERTIFICATE_PROFILE_LATEST_ACTIVE_BUNDLE = "get-certificate-profile-latest-active-bundle", + SCEP_ENROLLMENT = "scep-enrollment", + SCEP_RENEWAL = "scep-renewal", + SCEP_DYNAMIC_CHALLENGE_GENERATED = "scep-dynamic-challenge-generated", + APPROVAL_POLICY_CREATE = "approval-policy-create", APPROVAL_POLICY_UPDATE = "approval-policy-update", APPROVAL_POLICY_DELETE = "approval-policy-delete", diff --git a/frontend/src/hooks/api/certificateProfiles/types.ts b/frontend/src/hooks/api/certificateProfiles/types.ts index 40ddde69526..6443f997833 100644 --- a/frontend/src/hooks/api/certificateProfiles/types.ts +++ b/frontend/src/hooks/api/certificateProfiles/types.ts @@ -96,8 +96,8 @@ export type TCertificateProfileWithDetails = TCertificateProfile & { allowCertBasedRenewal: boolean; challengeType: ScepChallengeType; challengeEndpointUrl?: string; - dynamicChallengeExpiryMinutes: number; - dynamicChallengeMaxPending: number; + dynamicChallengeExpiryMinutes?: number; + dynamicChallengeMaxPending?: number; }; }; diff --git a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx index efb21cebe76..441b077620c 100644 --- a/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx +++ b/frontend/src/pages/cert-manager/PoliciesPage/components/CertificateProfilesTab/CreateProfileModal.tsx @@ -361,9 +361,12 @@ const editSchema = z.preprocess( .optional(), scepConfig: z .object({ - challengePassword: z.string().min(8, "Challenge password must be at least 8 characters"), + challengeType: z.nativeEnum(ScepChallengeType).optional(), + challengePassword: z.string().optional(), includeCaCertInResponse: z.boolean().optional(), - allowCertBasedRenewal: z.boolean().optional() + allowCertBasedRenewal: z.boolean().optional(), + dynamicChallengeExpiryMinutes: z.number().min(1).max(1440).optional(), + dynamicChallengeMaxPending: z.number().min(1).max(1000).optional() }) .optional(), externalConfigs: z @@ -421,6 +424,22 @@ const editSchema = z.preprocess( path: ["enrollmentType"] } ) + .refine( + (data) => { + if ( + data.enrollmentType === EnrollmentType.SCEP && + data.scepConfig?.challengePassword && + data.scepConfig.challengeType !== ScepChallengeType.DYNAMIC + ) { + return data.scepConfig.challengePassword.length >= 8; + } + return true; + }, + { + message: "Challenge password must be at least 8 characters", + path: ["scepConfig", "challengePassword"] + } + ) ); export type FormData = z.infer; @@ -1573,26 +1592,32 @@ export const CreateProfileModal = ({ isOpen, onClose, profile, mode = "create" } ( - - - - )} + render={({ field, fieldState: { error } }) => { + const hadStaticPassword = + isEdit && + profile?.scepConfig?.challengeType === ScepChallengeType.STATIC; + + return ( + + + + ); + }} /> )} From 6cdf91e5c09790976889d0b0a67330c1376f5abf Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Fri, 17 Apr 2026 00:44:06 +0800 Subject: [PATCH 170/562] chore: minor patches --- ...0260413000001_gateway-enrollment-tokens.ts | 11 ++++-- .../ee/services/gateway-v2/gateway-v2-dal.ts | 11 +++++- .../services/gateway-v2/gateway-v2-service.ts | 36 ++++++++++++++----- backend/src/keystore/keystore.ts | 1 + .../components/GatewayTab/GatewayTab.tsx | 7 ++-- 5 files changed, 52 insertions(+), 14 deletions(-) diff --git a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts index e3913b2e4b7..375a3e5a782 100644 --- a/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts +++ b/backend/src/db/migrations/20260413000001_gateway-enrollment-tokens.ts @@ -4,10 +4,17 @@ import { TableName } from "../schemas"; import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; export async function up(knex: Knex): Promise { + const hasTokenVersionColumn = await knex.schema.hasColumn(TableName.GatewayV2, "tokenVersion"); + const hasIdentityIdColumn = await knex.schema.hasColumn(TableName.GatewayV2, "identityId"); + // Make identityId nullable and add tokenVersion to support enrollment-token-based gateways await knex.schema.alterTable(TableName.GatewayV2, (t) => { - t.uuid("identityId").nullable().alter(); - t.integer("tokenVersion").notNullable().defaultTo(0); + if (hasIdentityIdColumn) { + t.uuid("identityId").nullable().alter(); + } + if (!hasTokenVersionColumn) { + t.integer("tokenVersion").notNullable().defaultTo(0); + } }); if (!(await knex.schema.hasTable(TableName.GatewayEnrollmentTokens))) { diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts b/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts index 68898b00cf8..9c03e50e1fa 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-dal.ts @@ -76,5 +76,14 @@ export const gatewayV2DalFactory = (db: TDbClient) => { } }; - return { ...orm, find, findById }; + const countByOrgId = async (orgId: string, tx?: Knex) => { + try { + const result = await (tx || db.replicaNode())(TableName.GatewayV2).where({ orgId }).count("id").first(); + return parseInt(String(result?.count || "0"), 10); + } catch (error) { + throw new DatabaseError({ error, name: `${TableName.GatewayV2}: Count by org id` }); + } + }; + + return { ...orm, find, findById, countByOrgId }; }; diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts index d6cc2cfe3d7..ed2d525d14e 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-service.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-service.ts @@ -46,6 +46,9 @@ import { TGatewayV2DALFactory } from "./gateway-v2-dal"; import { GatewayHealthCheckStatus, TGatewayV2ConnectionDetails } from "./gateway-v2-types"; import { TOrgGatewayConfigV2DALFactory } from "./org-gateway-config-v2-dal"; +// Temporary limit until gateway limiting is implemented at the relay level +const MAX_GATEWAYS_PER_ORG = 50; + type TGatewayV2ServiceFactoryDep = { orgGatewayConfigV2DAL: Pick; kmsService: TKmsServiceFactory; @@ -1223,15 +1226,32 @@ export const gatewayV2ServiceFactory = ({ OrgPermissionSubjects.Gateway ); - try { - const gateway = await gatewayV2DAL.create({ orgId, name }); - return gateway; - } catch (err) { - if (err instanceof DatabaseError && (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation) { - throw new BadRequestError({ message: `A gateway named "${name}" already exists` }); + const gateway = await gatewayV2DAL.transaction(async (tx) => { + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.CreateGateway(orgId)]); + + // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment + const existingGatewayCount = await gatewayV2DAL.countByOrgId(orgId, tx); + if (existingGatewayCount >= MAX_GATEWAYS_PER_ORG) { + throw new BadRequestError({ + message: `Organization has reached the maximum limit of ${MAX_GATEWAYS_PER_ORG} gateways` + }); } - throw err; - } + + try { + return await gatewayV2DAL.create({ orgId, name }, tx); + } catch (err) { + if ( + err instanceof DatabaseError && + (err.error as { code: string })?.code === DatabaseErrorCode.UniqueViolation + ) { + throw new BadRequestError({ message: `A gateway named "${name}" already exists` }); + } + throw err; + } + }); + + return gateway; }; const configureTokenAuth = async ({ diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index 74fe5d786ff..6247c90a2ab 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -31,6 +31,7 @@ export const PgSqlLock = { IdentityLogin: (identityId: string, nonce: string) => pgAdvisoryLockHashText(`identity-login:${identityId}:${nonce}`), PamResourceSshCaInit: (resourceId: string) => pgAdvisoryLockHashText(`pam-resource-ssh-ca-init:${resourceId}`), CreateIdentity: (orgId: string) => pgAdvisoryLockHashText(`create-identity:${orgId}`), + CreateGateway: (orgId: string) => pgAdvisoryLockHashText(`create-gateway:${orgId}`), AccessSharedSecret: (sharedSecretId: string) => pgAdvisoryLockHashText(`access-shared-secret:${sharedSecretId}`), KmsOrgKeyCreation: (orgId: string) => pgAdvisoryLockHashText(`kms-org-key:${orgId}`), KmsOrgDataKeyCreation: (orgId: string) => pgAdvisoryLockHashText(`kms-org-data-key:${orgId}`), diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index b30d5c49c92..27fb2e00bc9 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -136,9 +136,10 @@ export const GatewayTab = withPermission( id: string; name: string; } | null>(null); - const { data: gateways, isPending: isGatewaysLoading } = useQuery( - gatewaysQueryKeys.listWithTokens() - ); + const { data: gateways, isPending: isGatewaysLoading } = useQuery({ + ...gatewaysQueryKeys.listWithTokens(), + refetchInterval: 15_000 + }); const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ "deployGateway", From f41d439b3328f534aa5d0882b716c6142cddf27b Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Thu, 16 Apr 2026 10:51:16 -0700 Subject: [PATCH 171/562] improvement: make email verifcation required banner less spooky --- .../src/components/v3/generic/Alert/Alert.tsx | 2 +- .../components/OrgSsoTab/OrgSsoTab.tsx | 30 ++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/v3/generic/Alert/Alert.tsx b/frontend/src/components/v3/generic/Alert/Alert.tsx index 319e19cb61a..1a02fa5ba0a 100644 --- a/frontend/src/components/v3/generic/Alert/Alert.tsx +++ b/frontend/src/components/v3/generic/Alert/Alert.tsx @@ -53,7 +53,7 @@ function UnstableAlertDescription({ className, ...props }: React.ComponentProps<
    {subscription?.emailDomainVerification && !isPending && !emailDomains?.length && ( - - - Email domain verification is required to use an identity provider. - - + + + Email domain verification required + + You must verify at least one email domain before configuring an identity + provider. Add a domain in the Email Domains section above. + + )}
    {shouldDisplaySection(LoginMethod.SAML) && ( @@ -224,11 +229,14 @@ export const OrgSsoTab = withPermission( ) && !isPending && !emailDomains?.length && ( - - - Email domain verification is required to use an identity provider. - - + + + Email domain verification required + + You must verify at least one email domain before configuring an identity + provider. Add a domain in the Email Domains section above. + + )}
    {isSamlConfigured && shouldDisplaySection(LoginMethod.SAML) && } From b6cfa6d2b4dcbd9f3f2fab8809b6ee0e7675e594 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 17:59:35 +0000 Subject: [PATCH 172/562] fix(pam): increase web access idle timeout from 5 to 20 minutes Co-Authored-By: saif --- backend/src/ee/services/pam-web-access/pam-web-access-types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/ee/services/pam-web-access/pam-web-access-types.ts b/backend/src/ee/services/pam-web-access/pam-web-access-types.ts index ee7bf4182b0..1263290f0a5 100644 --- a/backend/src/ee/services/pam-web-access/pam-web-access-types.ts +++ b/backend/src/ee/services/pam-web-access/pam-web-access-types.ts @@ -44,7 +44,7 @@ export const MAX_WEB_SESSIONS_PER_USER = 5; export const WS_PING_INTERVAL_MS = 30000; // Idle timeout (ms) — auto-close sessions with no user input/control messages -export const WS_IDLE_TIMEOUT_MS = 5 * 60 * 1000; +export const WS_IDLE_TIMEOUT_MS = 20 * 60 * 1000; export type TSessionContext = { socket: WebSocket; From 158f218649f765eb663c881ebee46025ea6668ea Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Thu, 16 Apr 2026 12:12:02 -0700 Subject: [PATCH 173/562] improvement: add rotation icon to rotated secrets in single env display --- .../SecretTableRow/SecretTableRow.tsx | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SecretTableRow/SecretTableRow.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SecretTableRow/SecretTableRow.tsx index 187c0fd61b1..a09fce31d76 100644 --- a/frontend/src/pages/secret-manager/OverviewPage/components/SecretTableRow/SecretTableRow.tsx +++ b/frontend/src/pages/secret-manager/OverviewPage/components/SecretTableRow/SecretTableRow.tsx @@ -10,7 +10,8 @@ import { GitBranchIcon, ImportIcon, KeyIcon, - RefreshCcwIcon + RefreshCcwIcon, + RefreshCwIcon } from "lucide-react"; import { twMerge } from "tailwind-merge"; @@ -224,7 +225,7 @@ export const SecretTableRow = ({ className={twMerge( !isSingleEnvView && "sticky left-0 z-10", !singleEnvPendingAction && - "bg-container transition-colors duration-75 group-hover:bg-container-hover", + "relative bg-container transition-colors duration-75 group-hover:bg-container-hover", !isSingleEnvView && isFormExpanded && "border-b-0 bg-container-hover", isSingleEnvView && singleEnvShowOverride && "border-b-border/50", isSingleEnvView && "pt-3 align-top", @@ -256,13 +257,24 @@ export const SecretTableRow = ({ )} /> ) : ( - + + {singleEnvSecret?.isRotatedSecret && isSingleEnvView && ( + )} - /> + )} {isSingleEnvView ? ( From e3714cc3ab8ee4762747df7e4dabca57c5e30118 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Thu, 16 Apr 2026 11:51:22 -0400 Subject: [PATCH 174/562] feat: add gateway pools for high-availability failover Introduces gateway pools as an enterprise feature that provides automatic failover when a gateway goes down. The platform picks a random healthy member from the pool at request time. Backend: - New tables: gateway_pools, gateway_pool_memberships - gatewayPoolId column on identity_kubernetes_auths - Full CRUD + membership API under /api/v2/gateway-pools - Connected resources endpoint for pools - RBAC with separate GatewayPool permission subject - Enterprise license gate on all pool endpoints - Audit log events for pool CRUD and membership changes - Random healthy gateway selection via pickRandomHealthyGateway Frontend: - Gateway Pools sub-tab with segmented toggle in Gateways page - Pool detail sheet (v3) with member management and health checks - Reusable GatewayPicker component with grouped sections - Pool health badges, connected resources drawer - Kubernetes auth form updated to support pool selection - Enterprise upgrade prompt for non-enterprise users --- backend/src/@types/fastify.d.ts | 2 + backend/src/@types/knex.d.ts | 12 + .../20260414000001_add-gateway-pools.ts | 60 ++ .../db/schemas/gateway-pool-memberships.ts | 22 + backend/src/db/schemas/gateway-pools.ts | 20 + .../db/schemas/identity-kubernetes-auths.ts | 3 +- backend/src/db/schemas/index.ts | 2 + backend/src/db/schemas/models.ts | 2 + .../src/ee/routes/v2/gateway-pool-router.ts | 309 +++++++++ backend/src/ee/routes/v2/index.ts | 3 + .../ee/services/audit-log/audit-log-types.ts | 56 +- .../services/gateway-pool/gateway-pool-dal.ts | 79 +++ .../gateway-pool-membership-dal.ts | 37 ++ .../gateway-pool/gateway-pool-service.ts | 284 +++++++++ .../gateway-pool/gateway-pool-types.ts | 36 ++ .../gateway-v2/gateway-v2-constants.ts | 2 + .../src/ee/services/license/license-types.ts | 1 + .../ee/services/permission/org-permission.ts | 26 + backend/src/server/routes/index.ts | 19 +- .../v1/identity-kubernetes-auth-router.ts | 32 +- .../identity-kubernetes-auth-dal.ts | 24 +- .../identity-kubernetes-auth-service.ts | 174 ++++- .../identity-kubernetes-auth-types.ts | 2 + .../platform/GatewayPicker/GatewayPicker.tsx | 140 ++++ .../v3/platform/GatewayPicker/index.ts | 1 + frontend/src/components/v3/platform/index.ts | 1 + .../src/context/OrgPermissionContext/types.ts | 10 + .../src/hooks/api/gateway-pools/index.tsx | 19 + .../src/hooks/api/gateway-pools/mutations.tsx | 86 +++ .../src/hooks/api/gateway-pools/queries.tsx | 49 ++ frontend/src/hooks/api/gateway-pools/types.ts | 61 ++ .../src/hooks/api/identities/mutations.tsx | 7 + frontend/src/hooks/api/identities/types.ts | 3 + frontend/src/hooks/api/index.tsx | 1 + frontend/src/hooks/api/subscriptions/types.ts | 1 + .../IdentityKubernetesAuthForm.tsx | 116 ++-- .../components/GatewayTab/GatewayTab.tsx | 599 ++++++++++-------- .../components/CreateGatewayPoolModal.tsx | 71 +++ .../components/EditGatewayPoolModal.tsx | 80 +++ .../components/GatewayHealthStatus.tsx | 62 ++ .../components/GatewayPoolsContent.tsx | 219 +++++++ .../PoolConnectedResourcesDrawer.tsx | 129 ++++ .../GatewayTab/components/PoolDetailSheet.tsx | 278 ++++++++ .../GatewayTab/components/PoolHealthBadge.tsx | 18 + 44 files changed, 2781 insertions(+), 377 deletions(-) create mode 100644 backend/src/db/migrations/20260414000001_add-gateway-pools.ts create mode 100644 backend/src/db/schemas/gateway-pool-memberships.ts create mode 100644 backend/src/db/schemas/gateway-pools.ts create mode 100644 backend/src/ee/routes/v2/gateway-pool-router.ts create mode 100644 backend/src/ee/services/gateway-pool/gateway-pool-dal.ts create mode 100644 backend/src/ee/services/gateway-pool/gateway-pool-membership-dal.ts create mode 100644 backend/src/ee/services/gateway-pool/gateway-pool-service.ts create mode 100644 backend/src/ee/services/gateway-pool/gateway-pool-types.ts create mode 100644 frontend/src/components/v3/platform/GatewayPicker/GatewayPicker.tsx create mode 100644 frontend/src/components/v3/platform/GatewayPicker/index.ts create mode 100644 frontend/src/hooks/api/gateway-pools/index.tsx create mode 100644 frontend/src/hooks/api/gateway-pools/mutations.tsx create mode 100644 frontend/src/hooks/api/gateway-pools/queries.tsx create mode 100644 frontend/src/hooks/api/gateway-pools/types.ts create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayHealthStatus.tsx create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayPoolsContent.tsx create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolConnectedResourcesDrawer.tsx create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx create mode 100644 frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolHealthBadge.tsx diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 5d47ec9c5f2..f9f5d8520bc 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -19,6 +19,7 @@ import { TEmailDomainServiceFactory } from "@app/ee/services/email-domain/email- import { TEventBusService as TInternalEventBusService } from "@app/ee/services/event-bus"; import { TExternalKmsServiceFactory } from "@app/ee/services/external-kms/external-kms-service"; import { TGatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; +import { TGatewayPoolServiceFactory } from "@app/ee/services/gateway-pool/gateway-pool-service"; import { TGatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2-service"; import { TGithubOrgSyncServiceFactory } from "@app/ee/services/github-org-sync/github-org-sync-service"; import { TGroupServiceFactory } from "@app/ee/services/group/group-service"; @@ -369,6 +370,7 @@ declare module "fastify" { insights: TInsightsServiceFactory; relay: TRelayServiceFactory; gatewayV2: TGatewayV2ServiceFactory; + gatewayPool: TGatewayPoolServiceFactory; githubOrgSync: TGithubOrgSyncServiceFactory; folderCommit: TFolderCommitServiceFactory; pit: TPitServiceFactory; diff --git a/backend/src/@types/knex.d.ts b/backend/src/@types/knex.d.ts index 1ad9dfdc2c9..ae0b7a0e1d1 100644 --- a/backend/src/@types/knex.d.ts +++ b/backend/src/@types/knex.d.ts @@ -164,6 +164,12 @@ import { TGatewayEnrollmentTokens, TGatewayEnrollmentTokensInsert, TGatewayEnrollmentTokensUpdate, + TGatewayPoolMemberships, + TGatewayPoolMembershipsInsert, + TGatewayPoolMembershipsUpdate, + TGatewayPools, + TGatewayPoolsInsert, + TGatewayPoolsUpdate, TGateways, TGatewaysInsert, TGatewaysUpdate, @@ -1596,6 +1602,12 @@ declare module "knex/types/tables" { TGatewayEnrollmentTokensInsert, TGatewayEnrollmentTokensUpdate >; + [TableName.GatewayPool]: KnexOriginal.CompositeTableType; + [TableName.GatewayPoolMembership]: KnexOriginal.CompositeTableType< + TGatewayPoolMemberships, + TGatewayPoolMembershipsInsert, + TGatewayPoolMembershipsUpdate + >; [TableName.UserNotifications]: KnexOriginal.CompositeTableType< TUserNotifications, TUserNotificationsInsert, diff --git a/backend/src/db/migrations/20260414000001_add-gateway-pools.ts b/backend/src/db/migrations/20260414000001_add-gateway-pools.ts new file mode 100644 index 00000000000..fa4205dc997 --- /dev/null +++ b/backend/src/db/migrations/20260414000001_add-gateway-pools.ts @@ -0,0 +1,60 @@ +import { Knex } from "knex"; + +import { TableName } from "../schemas"; +import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; + +export async function up(knex: Knex): Promise { + // Create gateway_pools table + if (!(await knex.schema.hasTable(TableName.GatewayPool))) { + await knex.schema.createTable(TableName.GatewayPool, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + t.uuid("orgId").notNullable(); + t.foreign("orgId").references("id").inTable(TableName.Organization).onDelete("CASCADE"); + t.string("name", 255).notNullable(); + t.timestamps(true, true, true); + t.unique(["orgId", "name"]); + }); + + await createOnUpdateTrigger(knex, TableName.GatewayPool); + } + + // Create gateway_pool_memberships join table + if (!(await knex.schema.hasTable(TableName.GatewayPoolMembership))) { + await knex.schema.createTable(TableName.GatewayPoolMembership, (t) => { + t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); + t.uuid("gatewayPoolId").notNullable(); + t.foreign("gatewayPoolId").references("id").inTable(TableName.GatewayPool).onDelete("CASCADE"); + t.uuid("gatewayId").notNullable(); + t.foreign("gatewayId").references("id").inTable(TableName.GatewayV2).onDelete("CASCADE"); + t.timestamps(true, true, true); + t.unique(["gatewayPoolId", "gatewayId"]); + }); + + await createOnUpdateTrigger(knex, TableName.GatewayPoolMembership); + } + + // Add gatewayPoolId to identity_kubernetes_auths + const hasGatewayPoolId = await knex.schema.hasColumn(TableName.IdentityKubernetesAuth, "gatewayPoolId"); + if (!hasGatewayPoolId) { + await knex.schema.alterTable(TableName.IdentityKubernetesAuth, (t) => { + t.uuid("gatewayPoolId").nullable(); + t.foreign("gatewayPoolId").references("id").inTable(TableName.GatewayPool).onDelete("SET NULL"); + }); + } +} + +export async function down(knex: Knex): Promise { + // Remove gatewayPoolId from identity_kubernetes_auths + const hasGatewayPoolId = await knex.schema.hasColumn(TableName.IdentityKubernetesAuth, "gatewayPoolId"); + if (hasGatewayPoolId) { + await knex.schema.alterTable(TableName.IdentityKubernetesAuth, (t) => { + t.dropColumn("gatewayPoolId"); + }); + } + + await dropOnUpdateTrigger(knex, TableName.GatewayPoolMembership); + await knex.schema.dropTableIfExists(TableName.GatewayPoolMembership); + + await dropOnUpdateTrigger(knex, TableName.GatewayPool); + await knex.schema.dropTableIfExists(TableName.GatewayPool); +} diff --git a/backend/src/db/schemas/gateway-pool-memberships.ts b/backend/src/db/schemas/gateway-pool-memberships.ts new file mode 100644 index 00000000000..53b636ca728 --- /dev/null +++ b/backend/src/db/schemas/gateway-pool-memberships.ts @@ -0,0 +1,22 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { TImmutableDBKeys } from "./models"; + +export const GatewayPoolMembershipsSchema = z.object({ + id: z.string().uuid(), + gatewayPoolId: z.string().uuid(), + gatewayId: z.string().uuid(), + createdAt: z.date(), + updatedAt: z.date() +}); + +export type TGatewayPoolMemberships = z.infer; +export type TGatewayPoolMembershipsInsert = Omit, TImmutableDBKeys>; +export type TGatewayPoolMembershipsUpdate = Partial< + Omit, TImmutableDBKeys> +>; diff --git a/backend/src/db/schemas/gateway-pools.ts b/backend/src/db/schemas/gateway-pools.ts new file mode 100644 index 00000000000..8da7e271a5e --- /dev/null +++ b/backend/src/db/schemas/gateway-pools.ts @@ -0,0 +1,20 @@ +// Code generated by automation script, DO NOT EDIT. +// Automated by pulling database and generating zod schema +// To update. Just run npm run generate:schema +// Written by akhilmhdh. + +import { z } from "zod"; + +import { TImmutableDBKeys } from "./models"; + +export const GatewayPoolsSchema = z.object({ + id: z.string().uuid(), + orgId: z.string().uuid(), + name: z.string(), + createdAt: z.date(), + updatedAt: z.date() +}); + +export type TGatewayPools = z.infer; +export type TGatewayPoolsInsert = Omit, TImmutableDBKeys>; +export type TGatewayPoolsUpdate = Partial, TImmutableDBKeys>>; diff --git a/backend/src/db/schemas/identity-kubernetes-auths.ts b/backend/src/db/schemas/identity-kubernetes-auths.ts index 4789ef36593..e9cfe9c4b04 100644 --- a/backend/src/db/schemas/identity-kubernetes-auths.ts +++ b/backend/src/db/schemas/identity-kubernetes-auths.ts @@ -33,7 +33,8 @@ export const IdentityKubernetesAuthsSchema = z.object({ gatewayId: z.string().uuid().nullable().optional(), accessTokenPeriod: z.coerce.number().default(0), tokenReviewMode: z.string().default("api"), - gatewayV2Id: z.string().uuid().nullable().optional() + gatewayV2Id: z.string().uuid().nullable().optional(), + gatewayPoolId: z.string().uuid().nullable().optional() }); export type TIdentityKubernetesAuths = z.infer; diff --git a/backend/src/db/schemas/index.ts b/backend/src/db/schemas/index.ts index c2c8367e555..a7b8becba01 100644 --- a/backend/src/db/schemas/index.ts +++ b/backend/src/db/schemas/index.ts @@ -54,6 +54,8 @@ export * from "./folder-commits"; export * from "./folder-tree-checkpoint-resources"; export * from "./folder-tree-checkpoints"; export * from "./gateway-enrollment-tokens"; +export * from "./gateway-pool-memberships"; +export * from "./gateway-pools"; export * from "./gateways"; export * from "./gateways-v2"; export * from "./git-app-install-sessions"; diff --git a/backend/src/db/schemas/models.ts b/backend/src/db/schemas/models.ts index 47758b2db83..cbcfedb8c43 100644 --- a/backend/src/db/schemas/models.ts +++ b/backend/src/db/schemas/models.ts @@ -221,6 +221,8 @@ export enum TableName { Relay = "relays", GatewayV2 = "gateways_v2", GatewayEnrollmentTokens = "gateway_enrollment_tokens", + GatewayPool = "gateway_pools", + GatewayPoolMembership = "gateway_pool_memberships", KeyValueStore = "key_value_store", diff --git a/backend/src/ee/routes/v2/gateway-pool-router.ts b/backend/src/ee/routes/v2/gateway-pool-router.ts new file mode 100644 index 00000000000..ebe688b0200 --- /dev/null +++ b/backend/src/ee/routes/v2/gateway-pool-router.ts @@ -0,0 +1,309 @@ +import z from "zod"; + +import { GatewayPoolMembershipsSchema, GatewayPoolsSchema, GatewaysV2Schema } from "@app/db/schemas"; +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; + +const SanitizedGatewayPoolSchema = GatewayPoolsSchema.pick({ + id: true, + orgId: true, + name: true, + createdAt: true, + updatedAt: true +}); + +const SanitizedPoolMemberSchema = GatewaysV2Schema.pick({ + id: true, + name: true, + heartbeat: true, + lastHealthCheckStatus: true +}); + +export const registerGatewayPoolRouter = async (server: FastifyZodProvider) => { + // Create a gateway pool + server.route({ + method: "POST", + url: "/", + schema: { + operationId: "createGatewayPool", + body: z.object({ + name: z.string().min(1).max(255).describe("Name for the gateway pool") + }), + response: { + 200: SanitizedGatewayPoolSchema + } + }, + config: { rateLimit: writeLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const pool = await server.services.gatewayPool.createGatewayPool({ + name: req.body.name, + ...req.permission + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_POOL_CREATE, + metadata: { + poolId: pool.id, + name: pool.name + } + } + }); + + return pool; + } + }); + + // List gateway pools + server.route({ + method: "GET", + url: "/", + schema: { + operationId: "listGatewayPools", + response: { + 200: z.array( + SanitizedGatewayPoolSchema.extend({ + memberCount: z.number(), + healthyMemberCount: z.number(), + memberGatewayIds: z.array(z.string().uuid()), + connectedResourcesCount: z.number() + }) + ) + } + }, + config: { rateLimit: readLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + return server.services.gatewayPool.listGatewayPools(req.permission); + } + }); + + // Get gateway pool by ID + server.route({ + method: "GET", + url: "/:poolId", + schema: { + operationId: "getGatewayPoolById", + params: z.object({ + poolId: z.string().uuid() + }), + response: { + 200: SanitizedGatewayPoolSchema.extend({ + gateways: z.array(SanitizedPoolMemberSchema) + }) + } + }, + config: { rateLimit: readLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + return server.services.gatewayPool.getGatewayPoolById({ + poolId: req.params.poolId, + ...req.permission + }); + } + }); + + // Update gateway pool + server.route({ + method: "PATCH", + url: "/:poolId", + schema: { + operationId: "updateGatewayPool", + params: z.object({ + poolId: z.string().uuid() + }), + body: z.object({ + name: z.string().min(1).max(255).optional().describe("New name for the pool") + }), + response: { + 200: SanitizedGatewayPoolSchema + } + }, + config: { rateLimit: writeLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const pool = await server.services.gatewayPool.updateGatewayPool({ + poolId: req.params.poolId, + name: req.body.name, + ...req.permission + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_POOL_UPDATE, + metadata: { + poolId: pool.id, + name: pool.name + } + } + }); + + return pool; + } + }); + + // Delete gateway pool + server.route({ + method: "DELETE", + url: "/:poolId", + schema: { + operationId: "deleteGatewayPool", + params: z.object({ + poolId: z.string().uuid() + }), + response: { + 200: SanitizedGatewayPoolSchema + } + }, + config: { rateLimit: writeLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const pool = await server.services.gatewayPool.deleteGatewayPool({ + poolId: req.params.poolId, + ...req.permission + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_POOL_DELETE, + metadata: { + poolId: pool.id, + name: pool.name + } + } + }); + + return pool; + } + }); + + // Add gateway to pool + server.route({ + method: "POST", + url: "/:poolId/memberships", + schema: { + operationId: "addGatewayToPool", + params: z.object({ + poolId: z.string().uuid() + }), + body: z.object({ + gatewayId: z.string().uuid().describe("ID of the gateway to add to the pool") + }), + response: { + 200: GatewayPoolMembershipsSchema.pick({ + id: true, + gatewayPoolId: true, + gatewayId: true, + createdAt: true + }) + } + }, + config: { rateLimit: writeLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const membership = await server.services.gatewayPool.addGatewayToPool({ + poolId: req.params.poolId, + gatewayId: req.body.gatewayId, + ...req.permission + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_POOL_ADD_MEMBER, + metadata: { + poolId: req.params.poolId, + gatewayId: req.body.gatewayId + } + } + }); + + return membership; + } + }); + + // Remove gateway from pool + server.route({ + method: "DELETE", + url: "/:poolId/memberships/:gatewayId", + schema: { + operationId: "removeGatewayFromPool", + params: z.object({ + poolId: z.string().uuid(), + gatewayId: z.string().uuid() + }), + response: { + 200: GatewayPoolMembershipsSchema.pick({ + id: true, + gatewayPoolId: true, + gatewayId: true, + createdAt: true + }) + } + }, + config: { rateLimit: writeLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + const membership = await server.services.gatewayPool.removeGatewayFromPool({ + poolId: req.params.poolId, + gatewayId: req.params.gatewayId, + ...req.permission + }); + + await server.services.auditLog.createAuditLog({ + ...req.auditLogInfo, + orgId: req.permission.orgId, + event: { + type: EventType.GATEWAY_POOL_REMOVE_MEMBER, + metadata: { + poolId: req.params.poolId, + gatewayId: req.params.gatewayId + } + } + }); + + return membership; + } + }); + + // Get connected resources for a pool + server.route({ + method: "GET", + url: "/:poolId/resources", + schema: { + operationId: "getGatewayPoolConnectedResources", + params: z.object({ + poolId: z.string().uuid() + }), + response: { + 200: z.object({ + kubernetesAuths: z.array( + z.object({ + id: z.string(), + identityId: z.string(), + identityName: z.string().nullable() + }) + ) + }) + } + }, + config: { rateLimit: readLimit }, + onRequest: verifyAuth([AuthMode.JWT, AuthMode.IDENTITY_ACCESS_TOKEN]), + handler: async (req) => { + return server.services.gatewayPool.getConnectedResources({ + poolId: req.params.poolId, + ...req.permission + }); + } + }); +}; diff --git a/backend/src/ee/routes/v2/index.ts b/backend/src/ee/routes/v2/index.ts index 0119f3ec4ad..01a306e576a 100644 --- a/backend/src/ee/routes/v2/index.ts +++ b/backend/src/ee/routes/v2/index.ts @@ -8,6 +8,7 @@ import { } from "@app/ee/routes/v2/secret-scanning-v2-routers"; import { registerDeprecatedProjectRoleRouter } from "./deprecated-project-role-router"; +import { registerGatewayPoolRouter } from "./gateway-pool-router"; import { registerGatewayV2Router } from "./gateway-router"; import { registerIdentityProjectAdditionalPrivilegeRouter } from "./identity-project-additional-privilege-router"; import { registerSecretApprovalPolicyRouter } from "./secret-approval-policy-router"; @@ -28,6 +29,8 @@ export const registerV2EERoutes = async (server: FastifyZodProvider) => { await server.register(registerGatewayV2Router, { prefix: "/gateways" }); + await server.register(registerGatewayPoolRouter, { prefix: "/gateway-pools" }); + await server.register(registerSecretApprovalPolicyRouter, { prefix: "/secret-approvals" }); await server.register( diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index d30a1e3a33b..f4cb65bc5fe 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -760,7 +760,14 @@ export enum EventType { // Gateway Enrollment Tokens GATEWAY_CREATE = "gateway-create", GATEWAY_ENROLLMENT_TOKEN_CREATE = "gateway-enrollment-token-create", - GATEWAY_ENROLL = "gateway-enroll" + GATEWAY_ENROLL = "gateway-enroll", + + // Gateway Pools + GATEWAY_POOL_CREATE = "gateway-pool-create", + GATEWAY_POOL_UPDATE = "gateway-pool-update", + GATEWAY_POOL_DELETE = "gateway-pool-delete", + GATEWAY_POOL_ADD_MEMBER = "gateway-pool-add-member", + GATEWAY_POOL_REMOVE_MEMBER = "gateway-pool-remove-member" } // Maps each actor type to the JSONB key that holds the actor's primary ID in actorMetadata. @@ -6005,6 +6012,46 @@ interface GatewayEnrollEvent { }; } +interface GatewayPoolCreateEvent { + type: EventType.GATEWAY_POOL_CREATE; + metadata: { + poolId: string; + name: string; + }; +} + +interface GatewayPoolUpdateEvent { + type: EventType.GATEWAY_POOL_UPDATE; + metadata: { + poolId: string; + name: string; + }; +} + +interface GatewayPoolDeleteEvent { + type: EventType.GATEWAY_POOL_DELETE; + metadata: { + poolId: string; + name: string; + }; +} + +interface GatewayPoolAddMemberEvent { + type: EventType.GATEWAY_POOL_ADD_MEMBER; + metadata: { + poolId: string; + gatewayId: string; + }; +} + +interface GatewayPoolRemoveMemberEvent { + type: EventType.GATEWAY_POOL_REMOVE_MEMBER; + metadata: { + poolId: string; + gatewayId: string; + }; +} + export type Event = | CreateSubOrganizationEvent | UpdateSubOrganizationEvent @@ -6549,4 +6596,9 @@ export type Event = | DeleteEmailDomainEvent | GatewayCreateEvent | GatewayEnrollmentTokenCreateEvent - | GatewayEnrollEvent; + | GatewayEnrollEvent + | GatewayPoolCreateEvent + | GatewayPoolUpdateEvent + | GatewayPoolDeleteEvent + | GatewayPoolAddMemberEvent + | GatewayPoolRemoveMemberEvent; diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-dal.ts b/backend/src/ee/services/gateway-pool/gateway-pool-dal.ts new file mode 100644 index 00000000000..397d3e0ddaf --- /dev/null +++ b/backend/src/ee/services/gateway-pool/gateway-pool-dal.ts @@ -0,0 +1,79 @@ +import { TDbClient } from "@app/db"; +import { TableName } from "@app/db/schemas"; +import { DatabaseError } from "@app/lib/errors"; +import { ormify, selectAllTableCols } from "@app/lib/knex"; + +import { GATEWAY_HEARTBEAT_TIMEOUT_MS } from "../gateway-v2/gateway-v2-constants"; +import { GatewayHealthCheckStatus } from "../gateway-v2/gateway-v2-types"; + +export type TGatewayPoolDALFactory = ReturnType; + +export const gatewayPoolDalFactory = (db: TDbClient) => { + const orm = ormify(db, TableName.GatewayPool); + + const findByOrgIdWithDetails = async (orgId: string) => { + try { + const oneHourAgo = new Date(Date.now() - GATEWAY_HEARTBEAT_TIMEOUT_MS); + + const pools = await db + .replicaNode()(TableName.GatewayPool) + .where(`${TableName.GatewayPool}.orgId`, orgId) + .leftJoin( + TableName.GatewayPoolMembership, + `${TableName.GatewayPool}.id`, + `${TableName.GatewayPoolMembership}.gatewayPoolId` + ) + .leftJoin(TableName.GatewayV2, `${TableName.GatewayPoolMembership}.gatewayId`, `${TableName.GatewayV2}.id`) + .select(selectAllTableCols(TableName.GatewayPool)) + .select( + db.raw(`COUNT(DISTINCT ${TableName.GatewayPoolMembership}."gatewayId") AS "memberCount"`), + db.raw( + `COUNT(DISTINCT CASE WHEN ${TableName.GatewayV2}."heartbeat" > ? AND (${TableName.GatewayV2}."lastHealthCheckStatus" IS NULL OR ${TableName.GatewayV2}."lastHealthCheckStatus" != ?) THEN ${TableName.GatewayPoolMembership}."gatewayId" END) AS "healthyMemberCount"`, + [oneHourAgo, GatewayHealthCheckStatus.Failed] + ), + db.raw( + `COALESCE(array_agg(DISTINCT ${TableName.GatewayPoolMembership}."gatewayId") FILTER (WHERE ${TableName.GatewayPoolMembership}."gatewayId" IS NOT NULL), '{}') AS "memberGatewayIds"` + ) + ) + .groupBy(`${TableName.GatewayPool}.id`) + .orderBy(`${TableName.GatewayPool}.name`, "asc"); + + return pools.map((p) => { + const raw = p as Record; + return { + ...p, + memberCount: Number(raw.memberCount ?? 0), + healthyMemberCount: Number(raw.healthyMemberCount ?? 0), + memberGatewayIds: (raw.memberGatewayIds as string[]) ?? [] + }; + }); + } catch (error) { + throw new DatabaseError({ error, name: `${TableName.GatewayPool}: FindByOrgId` }); + } + }; + + const findByIdWithMembers = async (poolId: string) => { + try { + const pool = await db.replicaNode()(TableName.GatewayPool).where(`${TableName.GatewayPool}.id`, poolId).first(); + + if (!pool) return null; + + const members = await db + .replicaNode()(TableName.GatewayPoolMembership) + .where(`${TableName.GatewayPoolMembership}.gatewayPoolId`, poolId) + .join(TableName.GatewayV2, `${TableName.GatewayPoolMembership}.gatewayId`, `${TableName.GatewayV2}.id`) + .select( + `${TableName.GatewayV2}.id`, + `${TableName.GatewayV2}.name`, + `${TableName.GatewayV2}.heartbeat`, + `${TableName.GatewayV2}.lastHealthCheckStatus` + ); + + return { ...pool, gateways: members }; + } catch (error) { + throw new DatabaseError({ error, name: `${TableName.GatewayPool}: FindByIdWithMembers` }); + } + }; + + return { ...orm, findByOrgIdWithDetails, findByIdWithMembers }; +}; diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-membership-dal.ts b/backend/src/ee/services/gateway-pool/gateway-pool-membership-dal.ts new file mode 100644 index 00000000000..d3a4b7b8f8e --- /dev/null +++ b/backend/src/ee/services/gateway-pool/gateway-pool-membership-dal.ts @@ -0,0 +1,37 @@ +import { TDbClient } from "@app/db"; +import { TableName, TGatewaysV2 } from "@app/db/schemas"; +import { DatabaseError } from "@app/lib/errors"; +import { ormify } from "@app/lib/knex"; + +import { GATEWAY_HEARTBEAT_TIMEOUT_MS } from "../gateway-v2/gateway-v2-constants"; +import { GatewayHealthCheckStatus } from "../gateway-v2/gateway-v2-types"; + +export type TGatewayPoolMembershipDALFactory = ReturnType; + +export const gatewayPoolMembershipDalFactory = (db: TDbClient) => { + const orm = ormify(db, TableName.GatewayPoolMembership); + + const findHealthyGatewaysByPoolId = async (poolId: string): Promise => { + try { + const oneHourAgo = new Date(Date.now() - GATEWAY_HEARTBEAT_TIMEOUT_MS); + + const gateways = await db + .replicaNode()(TableName.GatewayPoolMembership) + .where(`${TableName.GatewayPoolMembership}.gatewayPoolId`, poolId) + .join(TableName.GatewayV2, `${TableName.GatewayPoolMembership}.gatewayId`, `${TableName.GatewayV2}.id`) + .where(`${TableName.GatewayV2}.heartbeat`, ">", oneHourAgo) + .where((builder) => { + void builder + .whereNull(`${TableName.GatewayV2}.lastHealthCheckStatus`) + .orWhereNot(`${TableName.GatewayV2}.lastHealthCheckStatus`, GatewayHealthCheckStatus.Failed); + }) + .select(`${TableName.GatewayV2}.*`); + + return gateways as TGatewaysV2[]; + } catch (error) { + throw new DatabaseError({ error, name: `${TableName.GatewayPoolMembership}: FindHealthyGateways` }); + } + }; + + return { ...orm, findHealthyGatewaysByPoolId }; +}; diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-service.ts b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts new file mode 100644 index 00000000000..def0cad7c64 --- /dev/null +++ b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts @@ -0,0 +1,284 @@ +import { ForbiddenError } from "@casl/ability"; + +import { OrganizationActionScope } from "@app/db/schemas"; +import { DatabaseErrorCode } from "@app/lib/error-codes"; +import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; +import { logger } from "@app/lib/logger"; +import { OrgServiceActor } from "@app/lib/types"; +import { TIdentityKubernetesAuthDALFactory } from "@app/services/identity-kubernetes-auth/identity-kubernetes-auth-dal"; + +import { TGatewayV2DALFactory } from "../gateway-v2/gateway-v2-dal"; +import { TGatewayV2ServiceFactory } from "../gateway-v2/gateway-v2-service"; +import { TGatewayV2ConnectionDetails } from "../gateway-v2/gateway-v2-types"; +import { TLicenseServiceFactory } from "../license/license-service"; +import { OrgPermissionGatewayPoolActions, OrgPermissionSubjects } from "../permission/org-permission"; +import { TPermissionServiceFactory } from "../permission/permission-service-types"; +import { TGatewayPoolDALFactory } from "./gateway-pool-dal"; +import { TGatewayPoolMembershipDALFactory } from "./gateway-pool-membership-dal"; +import { + TAddGatewayToPoolDTO, + TCreateGatewayPoolDTO, + TDeleteGatewayPoolDTO, + TGetGatewayPoolByIdDTO, + TGetPlatformConnectionDetailsByPoolIdDTO, + TListGatewayPoolsDTO, + TRemoveGatewayFromPoolDTO, + TUpdateGatewayPoolDTO +} from "./gateway-pool-types"; + +type TGatewayPoolServiceFactoryDep = { + gatewayPoolDAL: TGatewayPoolDALFactory; + gatewayPoolMembershipDAL: TGatewayPoolMembershipDALFactory; + gatewayV2DAL: Pick; + gatewayV2Service: Pick; + permissionService: TPermissionServiceFactory; + licenseService: Pick; + identityKubernetesAuthDAL: Pick< + TIdentityKubernetesAuthDALFactory, + "findByGatewayPoolId" | "countByGatewayPoolId" + >; +}; + +export type TGatewayPoolServiceFactory = ReturnType; + +export const gatewayPoolServiceFactory = ({ + gatewayPoolDAL, + gatewayPoolMembershipDAL, + gatewayV2DAL, + gatewayV2Service, + permissionService, + licenseService, + identityKubernetesAuthDAL +}: TGatewayPoolServiceFactoryDep) => { + const $checkPermission = async (actor: OrgServiceActor, action: OrgPermissionGatewayPoolActions) => { + const { permission } = await permissionService.getOrgPermission({ + actor: actor.type, + actorId: actor.id, + orgId: actor.orgId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + scope: OrganizationActionScope.Any + }); + ForbiddenError.from(permission).throwUnlessCan(action, OrgPermissionSubjects.GatewayPool); + }; + + const $checkLicense = async (orgId: string) => { + const plan = await licenseService.getPlan(orgId); + if (!plan.gatewayPool) { + throw new BadRequestError({ + message: "Your current plan does not support gateway pools. Please upgrade to an Enterprise plan." + }); + } + }; + + const createGatewayPool = async ({ name, ...actor }: TCreateGatewayPoolDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.CreateGatewayPools); + await $checkLicense(actor.orgId); + + try { + const pool = await gatewayPoolDAL.create({ + orgId: actor.orgId, + name + }); + return pool; + } catch (error) { + if ( + error instanceof DatabaseError && + (error as DatabaseError & { code?: string }).code === DatabaseErrorCode.UniqueViolation + ) { + throw new BadRequestError({ message: `A gateway pool named "${name}" already exists in this organization.` }); + } + throw error; + } + }; + + const listGatewayPools = async (actor: TListGatewayPoolsDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.ListGatewayPools); + await $checkLicense(actor.orgId); + + const pools = await gatewayPoolDAL.findByOrgIdWithDetails(actor.orgId); + + const poolsWithCounts = await Promise.all( + pools.map(async (pool) => { + // Add more DAL counts here as pool support expands to other consumers + const k8sCount = await identityKubernetesAuthDAL.countByGatewayPoolId(pool.id); + return { ...pool, connectedResourcesCount: k8sCount }; + }) + ); + + return poolsWithCounts; + }; + + const getGatewayPoolById = async ({ poolId, ...actor }: TGetGatewayPoolByIdDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.ListGatewayPools); + await $checkLicense(actor.orgId); + + const pool = await gatewayPoolDAL.findByIdWithMembers(poolId); + if (!pool || pool.orgId !== actor.orgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); + } + + return pool; + }; + + const updateGatewayPool = async ({ poolId, name, ...actor }: TUpdateGatewayPoolDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.EditGatewayPools); + await $checkLicense(actor.orgId); + + const existingPool = await gatewayPoolDAL.findById(poolId); + if (!existingPool || existingPool.orgId !== actor.orgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); + } + + try { + const updated = await gatewayPoolDAL.updateById(poolId, { + ...(name !== undefined && { name }) + }); + return updated; + } catch (error) { + if ( + error instanceof DatabaseError && + (error as DatabaseError & { code?: string }).code === DatabaseErrorCode.UniqueViolation + ) { + throw new BadRequestError({ message: `A gateway pool named "${name}" already exists in this organization.` }); + } + throw error; + } + }; + + const deleteGatewayPool = async ({ poolId, ...actor }: TDeleteGatewayPoolDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.DeleteGatewayPools); + await $checkLicense(actor.orgId); + + const existingPool = await gatewayPoolDAL.findById(poolId); + if (!existingPool || existingPool.orgId !== actor.orgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); + } + + // Check for referencing consumer configs (add more DAL counts here as pool support expands) + const k8sAuthCount = await identityKubernetesAuthDAL.countByGatewayPoolId(poolId); + const totalReferences = k8sAuthCount; + if (totalReferences > 0) { + throw new BadRequestError({ + message: `Cannot delete pool "${existingPool.name}" because it is referenced by ${totalReferences} consumer configuration(s). Remove the pool reference from those configs first.` + }); + } + + await gatewayPoolDAL.deleteById(poolId); + return existingPool; + }; + + const addGatewayToPool = async ({ poolId, gatewayId, ...actor }: TAddGatewayToPoolDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.EditGatewayPools); + await $checkLicense(actor.orgId); + + const pool = await gatewayPoolDAL.findById(poolId); + if (!pool || pool.orgId !== actor.orgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); + } + + const gateway = await gatewayV2DAL.findById(gatewayId); + if (!gateway || gateway.orgId !== actor.orgId) { + throw new NotFoundError({ message: `Gateway with ID ${gatewayId} not found` }); + } + + try { + const membership = await gatewayPoolMembershipDAL.create({ gatewayPoolId: poolId, gatewayId }); + return membership; + } catch (error) { + if ( + error instanceof DatabaseError && + (error as DatabaseError & { code?: string }).code === DatabaseErrorCode.UniqueViolation + ) { + throw new BadRequestError({ message: "This gateway is already a member of the pool." }); + } + throw error; + } + }; + + const removeGatewayFromPool = async ({ poolId, gatewayId, ...actor }: TRemoveGatewayFromPoolDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.EditGatewayPools); + await $checkLicense(actor.orgId); + + const pool = await gatewayPoolDAL.findById(poolId); + if (!pool || pool.orgId !== actor.orgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); + } + + const [deleted] = await gatewayPoolMembershipDAL.delete({ gatewayPoolId: poolId, gatewayId }); + if (!deleted) { + throw new NotFoundError({ message: "Gateway is not a member of this pool." }); + } + + return deleted; + }; + + const pickRandomHealthyGateway = async (poolId: string) => { + const healthyGateways = await gatewayPoolMembershipDAL.findHealthyGatewaysByPoolId(poolId); + if (healthyGateways.length === 0) { + throw new BadRequestError({ + message: "Gateway pool has no healthy gateways." + }); + } + const selected = healthyGateways[Math.floor(Math.random() * healthyGateways.length)]; + logger.info( + { poolId, selectedGatewayId: selected.id }, + `Pool gateway selection: picked gateway [gatewayId=${selected.id}] from pool [poolId=${poolId}]` + ); + return selected; + }; + + const getPlatformConnectionDetailsByPoolId = async ({ + poolId, + targetHost, + targetPort + }: TGetPlatformConnectionDetailsByPoolIdDTO): Promise => { + const pool = await gatewayPoolDAL.findById(poolId); + if (!pool) { + throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); + } + + const selectedGateway = await pickRandomHealthyGateway(poolId); + + return gatewayV2Service.getPlatformConnectionDetailsByGatewayId({ + gatewayId: selectedGateway.id, + targetHost, + targetPort + }); + }; + + const getConnectedResources = async ({ poolId, ...actor }: TGetGatewayPoolByIdDTO) => { + await $checkPermission(actor, OrgPermissionGatewayPoolActions.ListGatewayPools); + await $checkLicense(actor.orgId); + + const pool = await gatewayPoolDAL.findById(poolId); + if (!pool || pool.orgId !== actor.orgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); + } + + // Add more DAL calls here as pool support expands to other consumers + const kubernetesAuths = await identityKubernetesAuthDAL.findByGatewayPoolId(poolId); + + return { kubernetesAuths }; + }; + + const getConnectedResourcesCount = async (poolId: string): Promise => { + // Add more DAL counts here as pool support expands to other consumers + const k8sAuthCount = await identityKubernetesAuthDAL.countByGatewayPoolId(poolId); + return k8sAuthCount; + }; + + return { + createGatewayPool, + listGatewayPools, + getGatewayPoolById, + updateGatewayPool, + deleteGatewayPool, + addGatewayToPool, + removeGatewayFromPool, + pickRandomHealthyGateway, + getPlatformConnectionDetailsByPoolId, + getConnectedResources, + getConnectedResourcesCount + }; +}; diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-types.ts b/backend/src/ee/services/gateway-pool/gateway-pool-types.ts new file mode 100644 index 00000000000..d6fcf7dc7a5 --- /dev/null +++ b/backend/src/ee/services/gateway-pool/gateway-pool-types.ts @@ -0,0 +1,36 @@ +import { OrgServiceActor } from "@app/lib/types"; + +export type TCreateGatewayPoolDTO = { + name: string; +} & OrgServiceActor; + +export type TListGatewayPoolsDTO = OrgServiceActor; + +export type TGetGatewayPoolByIdDTO = { + poolId: string; +} & OrgServiceActor; + +export type TUpdateGatewayPoolDTO = { + poolId: string; + name?: string; +} & OrgServiceActor; + +export type TDeleteGatewayPoolDTO = { + poolId: string; +} & OrgServiceActor; + +export type TAddGatewayToPoolDTO = { + poolId: string; + gatewayId: string; +} & OrgServiceActor; + +export type TRemoveGatewayFromPoolDTO = { + poolId: string; + gatewayId: string; +} & OrgServiceActor; + +export type TGetPlatformConnectionDetailsByPoolIdDTO = { + poolId: string; + targetHost: string; + targetPort: number; +}; diff --git a/backend/src/ee/services/gateway-v2/gateway-v2-constants.ts b/backend/src/ee/services/gateway-v2/gateway-v2-constants.ts index 7e41de91c61..971c58bea30 100644 --- a/backend/src/ee/services/gateway-v2/gateway-v2-constants.ts +++ b/backend/src/ee/services/gateway-v2/gateway-v2-constants.ts @@ -1,3 +1,5 @@ +export const GATEWAY_HEARTBEAT_TIMEOUT_MS = 60 * 60 * 1000; // 1 hour + export const GATEWAY_ROUTING_INFO_OID = "1.3.6.1.4.1.12345.100.1"; export const GATEWAY_ACTOR_OID = "1.3.6.1.4.1.12345.100.2"; export const PAM_INFO_OID = "1.3.6.1.4.1.12345.100.3"; diff --git a/backend/src/ee/services/license/license-types.ts b/backend/src/ee/services/license/license-types.ts index bd556a50658..6dd0214a988 100644 --- a/backend/src/ee/services/license/license-types.ts +++ b/backend/src/ee/services/license/license-types.ts @@ -84,6 +84,7 @@ export type TFeatureSet = { projectTemplates: false; kmip: false; gateway: false; + gatewayPool: false; sshHostGroups: false; secretScanning: false; enterpriseSecretSyncs: false; diff --git a/backend/src/ee/services/permission/org-permission.ts b/backend/src/ee/services/permission/org-permission.ts index ceb2e9683fa..b28bc990c79 100644 --- a/backend/src/ee/services/permission/org-permission.ts +++ b/backend/src/ee/services/permission/org-permission.ts @@ -74,6 +74,14 @@ export enum OrgPermissionGatewayActions { AttachGateways = "attach-gateways" } +export enum OrgPermissionGatewayPoolActions { + CreateGatewayPools = "create-gateway-pools", + ListGatewayPools = "list-gateway-pools", + EditGatewayPools = "edit-gateway-pools", + DeleteGatewayPools = "delete-gateway-pools", + AttachGatewayPools = "attach-gateway-pools" +} + export enum OrgPermissionRelayActions { CreateRelays = "create-relays", ListRelays = "list-relays", @@ -141,6 +149,7 @@ export enum OrgPermissionSubjects { AppConnections = "app-connections", Kmip = "kmip", Gateway = "gateway", + GatewayPool = "gateway-pool", Relay = "relay", SecretShare = "secret-share", SubOrganization = "sub-organization", @@ -172,6 +181,7 @@ export type OrgPermissionSet = | [OrgPermissionAuditLogsActions, OrgPermissionSubjects.AuditLogs] | [OrgPermissionActions, OrgPermissionSubjects.ProjectTemplates] | [OrgPermissionGatewayActions, OrgPermissionSubjects.Gateway] + | [OrgPermissionGatewayPoolActions, OrgPermissionSubjects.GatewayPool] | [OrgPermissionRelayActions, OrgPermissionSubjects.Relay] | [ OrgPermissionAppConnectionActions, @@ -330,6 +340,12 @@ export const OrgPermissionSchema = z.discriminatedUnion("subject", [ "Describe what action an entity can take." ) }), + z.object({ + subject: z.literal(OrgPermissionSubjects.GatewayPool).describe("The entity this permission pertains to."), + action: CASL_ACTION_SCHEMA_NATIVE_ENUM(OrgPermissionGatewayPoolActions).describe( + "Describe what action an entity can take." + ) + }), z.object({ subject: z.literal(OrgPermissionSubjects.Relay).describe("The entity this permission pertains to."), action: CASL_ACTION_SCHEMA_NATIVE_ENUM(OrgPermissionRelayActions).describe( @@ -456,6 +472,12 @@ const buildAdminPermission = () => { can(OrgPermissionGatewayActions.DeleteGateways, OrgPermissionSubjects.Gateway); can(OrgPermissionGatewayActions.AttachGateways, OrgPermissionSubjects.Gateway); + can(OrgPermissionGatewayPoolActions.ListGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionGatewayPoolActions.CreateGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionGatewayPoolActions.EditGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionGatewayPoolActions.DeleteGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionGatewayPoolActions.AttachGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionRelayActions.ListRelays, OrgPermissionSubjects.Relay); can(OrgPermissionRelayActions.CreateRelays, OrgPermissionSubjects.Relay); can(OrgPermissionRelayActions.EditRelays, OrgPermissionSubjects.Relay); @@ -526,6 +548,10 @@ const buildMemberPermission = () => { can(OrgPermissionGatewayActions.CreateGateways, OrgPermissionSubjects.Gateway); can(OrgPermissionGatewayActions.AttachGateways, OrgPermissionSubjects.Gateway); + can(OrgPermissionGatewayPoolActions.ListGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionGatewayPoolActions.CreateGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionGatewayPoolActions.AttachGatewayPools, OrgPermissionSubjects.GatewayPool); + can(OrgPermissionRelayActions.ListRelays, OrgPermissionSubjects.Relay); can(OrgPermissionRelayActions.CreateRelays, OrgPermissionSubjects.Relay); can(OrgPermissionRelayActions.EditRelays, OrgPermissionSubjects.Relay); diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 7b7eb0dc3a4..072310fcaab 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -59,6 +59,9 @@ import { externalKmsServiceFactory } from "@app/ee/services/external-kms/externa import { gatewayDALFactory } from "@app/ee/services/gateway/gateway-dal"; import { gatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; import { orgGatewayConfigDALFactory } from "@app/ee/services/gateway/org-gateway-config-dal"; +import { gatewayPoolDalFactory } from "@app/ee/services/gateway-pool/gateway-pool-dal"; +import { gatewayPoolMembershipDalFactory } from "@app/ee/services/gateway-pool/gateway-pool-membership-dal"; +import { gatewayPoolServiceFactory } from "@app/ee/services/gateway-pool/gateway-pool-service"; import { gatewayEnrollmentTokenDALFactory } from "@app/ee/services/gateway-v2/gateway-enrollment-token-dal"; import { gatewayV2DalFactory } from "@app/ee/services/gateway-v2/gateway-v2-dal"; import { gatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2-service"; @@ -1294,6 +1297,8 @@ export const registerRoutes = async ( const relayDAL = relayDalFactory(db); const gatewayV2DAL = gatewayV2DalFactory(db); const gatewayEnrollmentTokenDAL = gatewayEnrollmentTokenDALFactory(db); + const gatewayPoolDAL = gatewayPoolDalFactory(db); + const gatewayPoolMembershipDAL = gatewayPoolMembershipDalFactory(db); const approvalPolicyDAL = approvalPolicyDALFactory(db); @@ -1467,6 +1472,16 @@ export const registerRoutes = async ( pkiDiscoveryConfigDAL }); + const gatewayPoolService = gatewayPoolServiceFactory({ + gatewayPoolDAL, + gatewayPoolMembershipDAL, + gatewayV2DAL, + gatewayV2Service, + permissionService, + licenseService, + identityKubernetesAuthDAL + }); + const secretSyncQueue = secretSyncQueueFactory({ queueService, secretSyncDAL, @@ -1957,7 +1972,8 @@ export const registerRoutes = async ( gatewayV2DAL, gatewayDAL, kmsService, - membershipIdentityDAL + membershipIdentityDAL, + gatewayPoolService }); const identityGcpAuthService = identityGcpAuthServiceFactory({ identityDAL, @@ -3216,6 +3232,7 @@ export const registerRoutes = async ( gateway: gatewayService, relay: relayService, gatewayV2: gatewayV2Service, + gatewayPool: gatewayPoolService, secretRotationV2: secretRotationV2Service, microsoftTeams: microsoftTeamsService, assumePrivileges: assumePrivilegeService, diff --git a/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts b/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts index 46aa20732ce..d8f169213fc 100644 --- a/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts +++ b/backend/src/server/routes/v1/identity-kubernetes-auth-router.ts @@ -30,7 +30,8 @@ const IdentityKubernetesAuthResponseSchema = IdentityKubernetesAuthsSchema.pick( allowedNamespaces: true, allowedNames: true, allowedAudience: true, - gatewayId: true + gatewayId: true, + gatewayPoolId: true }).extend({ caCert: z.string(), tokenReviewerJwt: z.string().optional().nullable() @@ -189,6 +190,7 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide allowedNames: z.string().describe(KUBERNETES_AUTH.ATTACH.allowedNames), allowedAudience: z.string().describe(KUBERNETES_AUTH.ATTACH.allowedAudience), gatewayId: z.string().uuid().optional().nullable().describe(KUBERNETES_AUTH.ATTACH.gatewayId), + gatewayPoolId: z.string().uuid().optional().nullable(), accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() @@ -226,11 +228,22 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide message: "When token review mode is set to API, a Kubernetes host must be provided" }); } - if (data.tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway && !data.gatewayId) { + if ( + data.tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway && + !data.gatewayId && + !data.gatewayPoolId + ) { ctx.addIssue({ path: ["gatewayId"], code: z.ZodIssueCode.custom, - message: "When token review mode is set to Gateway, a gateway must be selected" + message: "When token review mode is set to Gateway, a gateway or gateway pool must be selected" + }); + } + if (data.gatewayId && data.gatewayPoolId) { + ctx.addIssue({ + path: ["gatewayPoolId"], + code: z.ZodIssueCode.custom, + message: "Cannot specify both a gateway and a gateway pool" }); } @@ -353,6 +366,7 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide allowedNames: z.string().optional().describe(KUBERNETES_AUTH.UPDATE.allowedNames), allowedAudience: z.string().optional().describe(KUBERNETES_AUTH.UPDATE.allowedAudience), gatewayId: z.string().uuid().optional().nullable().describe(KUBERNETES_AUTH.UPDATE.gatewayId), + gatewayPoolId: z.string().uuid().optional().nullable(), accessTokenTrustedIps: z .object({ ipAddress: z.string().trim() @@ -386,12 +400,20 @@ export const registerIdentityKubernetesRouter = async (server: FastifyZodProvide if ( data.tokenReviewMode && data.tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway && - !data.gatewayId + !data.gatewayId && + !data.gatewayPoolId ) { ctx.addIssue({ path: ["gatewayId"], code: z.ZodIssueCode.custom, - message: "When token review mode is set to Gateway, a gateway must be selected" + message: "When token review mode is set to Gateway, a gateway or gateway pool must be selected" + }); + } + if (data.gatewayId && data.gatewayPoolId) { + ctx.addIssue({ + path: ["gatewayPoolId"], + code: z.ZodIssueCode.custom, + message: "Cannot specify both a gateway and a gateway pool" }); } if (data.accessTokenMaxTTL && data.accessTokenTTL ? data.accessTokenTTL > data.accessTokenMaxTTL : false) { diff --git a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-dal.ts b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-dal.ts index f1ba2e1dff0..ef1149a9096 100644 --- a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-dal.ts +++ b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-dal.ts @@ -31,5 +31,27 @@ export const identityKubernetesAuthDALFactory = (db: TDbClient) => { return parseInt(String(result?.count || "0"), 10); }; - return { ...kubernetesAuthOrm, findByGatewayId, countByGatewayId }; + const findByGatewayPoolId = async (gatewayPoolId: string, tx?: Knex) => { + const docs = await (tx || db.replicaNode())(TableName.IdentityKubernetesAuth) + .leftJoin(TableName.Identity, `${TableName.IdentityKubernetesAuth}.identityId`, `${TableName.Identity}.id`) + .where(`${TableName.IdentityKubernetesAuth}.gatewayPoolId`, gatewayPoolId) + .select( + db.ref("id").withSchema(TableName.IdentityKubernetesAuth), + db.ref("identityId").withSchema(TableName.IdentityKubernetesAuth), + db.ref("name").withSchema(TableName.Identity).as("identityName") + ); + + return docs; + }; + + const countByGatewayPoolId = async (gatewayPoolId: string, tx?: Knex) => { + const result = await (tx || db.replicaNode())(TableName.IdentityKubernetesAuth) + .where(`${TableName.IdentityKubernetesAuth}.gatewayPoolId`, gatewayPoolId) + .count("id") + .first(); + + return parseInt(String(result?.count || "0"), 10); + }; + + return { ...kubernetesAuthOrm, findByGatewayId, countByGatewayId, findByGatewayPoolId, countByGatewayPoolId }; }; diff --git a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts index dac0274e09d..d64ff1a329c 100644 --- a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts +++ b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts @@ -14,11 +14,13 @@ import { } from "@app/db/schemas"; import { TGatewayDALFactory } from "@app/ee/services/gateway/gateway-dal"; import { TGatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; +import { TGatewayPoolServiceFactory } from "@app/ee/services/gateway-pool/gateway-pool-service"; import { TGatewayV2DALFactory } from "@app/ee/services/gateway-v2/gateway-v2-dal"; import { TGatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2-service"; import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; import { OrgPermissionGatewayActions, + OrgPermissionGatewayPoolActions, OrgPermissionIdentityActions, OrgPermissionSubjects } from "@app/ee/services/permission/org-permission"; @@ -87,6 +89,7 @@ type TIdentityKubernetesAuthServiceFactoryDep = { gatewayV2Service: TGatewayV2ServiceFactory; gatewayDAL: Pick; gatewayV2DAL: Pick; + gatewayPoolService: Pick; orgDAL: Pick; }; @@ -106,11 +109,13 @@ export const identityKubernetesAuthServiceFactory = ({ gatewayDAL, gatewayV2DAL, kmsService, + gatewayPoolService, orgDAL }: TIdentityKubernetesAuthServiceFactoryDep) => { const $gatewayProxyWrapper = async ( inputs: { - gatewayId: string; + gatewayId?: string; + gatewayPoolId?: string; targetHost?: string; targetPort?: number; caCert?: string; @@ -118,11 +123,17 @@ export const identityKubernetesAuthServiceFactory = ({ }, gatewayCallback: (host: string, port: number, httpsAgent?: https.Agent) => Promise ): Promise => { - const gatewayV2ConnectionDetails = await gatewayV2Service.getPlatformConnectionDetailsByGatewayId({ - gatewayId: inputs.gatewayId, - targetHost: inputs.targetHost ?? GATEWAY_AUTH_DEFAULT_HOST, - targetPort: inputs.targetPort ?? 443 - }); + const gatewayV2ConnectionDetails = inputs.gatewayPoolId + ? await gatewayPoolService.getPlatformConnectionDetailsByPoolId({ + poolId: inputs.gatewayPoolId, + targetHost: inputs.targetHost ?? GATEWAY_AUTH_DEFAULT_HOST, + targetPort: inputs.targetPort ?? 443 + }) + : await gatewayV2Service.getPlatformConnectionDetailsByGatewayId({ + gatewayId: inputs.gatewayId!, + targetHost: inputs.targetHost ?? GATEWAY_AUTH_DEFAULT_HOST, + targetPort: inputs.targetPort ?? 443 + }); if (gatewayV2ConnectionDetails) { let httpsAgent: https.Agent | undefined; @@ -154,7 +165,7 @@ export const identityKubernetesAuthServiceFactory = ({ return callbackResult; } - const relayDetails = await gatewayService.fnGetGatewayClientTlsByGatewayId(inputs.gatewayId); + const relayDetails = await gatewayService.fnGetGatewayClientTlsByGatewayId(inputs.gatewayId!); const callbackResult = await withGatewayProxy( async (port, httpsAgent) => { @@ -437,15 +448,22 @@ export const identityKubernetesAuthServiceFactory = ({ let data: TCreateTokenReviewResponse | undefined; if (identityKubernetesAuth.tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway) { - if (!identityKubernetesAuth.gatewayId && !identityKubernetesAuth.gatewayV2Id) { + if ( + !identityKubernetesAuth.gatewayId && + !identityKubernetesAuth.gatewayV2Id && + !identityKubernetesAuth.gatewayPoolId + ) { throw new BadRequestError({ - message: "Gateway ID is required when token review mode is set to Gateway" + message: "Gateway or Gateway Pool is required when token review mode is set to Gateway" }); } data = await $gatewayProxyWrapper( { - gatewayId: (identityKubernetesAuth.gatewayV2Id ?? identityKubernetesAuth.gatewayId) as string, + gatewayId: identityKubernetesAuth.gatewayPoolId + ? undefined + : ((identityKubernetesAuth.gatewayV2Id ?? identityKubernetesAuth.gatewayId) as string), + gatewayPoolId: identityKubernetesAuth.gatewayPoolId ?? undefined, reviewTokenThroughGateway: true }, tokenReviewCallbackThroughGateway @@ -464,18 +482,25 @@ export const identityKubernetesAuthServiceFactory = ({ const [k8sHost, k8sPort] = kubernetesHost.split(":"); - data = - identityKubernetesAuth.gatewayId || identityKubernetesAuth.gatewayV2Id - ? await $gatewayProxyWrapper( - { - gatewayId: (identityKubernetesAuth.gatewayV2Id ?? identityKubernetesAuth.gatewayId) as string, - targetHost: k8sHost, - targetPort: k8sPort ? Number(k8sPort) : 443, - reviewTokenThroughGateway: false - }, - tokenReviewCallbackRaw - ) - : await tokenReviewCallbackRaw(); + const hasGateway = + identityKubernetesAuth.gatewayId || + identityKubernetesAuth.gatewayV2Id || + identityKubernetesAuth.gatewayPoolId; + + data = hasGateway + ? await $gatewayProxyWrapper( + { + gatewayId: identityKubernetesAuth.gatewayPoolId + ? undefined + : ((identityKubernetesAuth.gatewayV2Id ?? identityKubernetesAuth.gatewayId) as string), + gatewayPoolId: identityKubernetesAuth.gatewayPoolId ?? undefined, + targetHost: k8sHost, + targetPort: k8sPort ? Number(k8sPort) : 443, + reviewTokenThroughGateway: false + }, + tokenReviewCallbackRaw + ) + : await tokenReviewCallbackRaw(); } else { throw new BadRequestError({ message: `Invalid token review mode: ${identityKubernetesAuth.tokenReviewMode}` @@ -705,6 +730,7 @@ export const identityKubernetesAuthServiceFactory = ({ const attachKubernetesAuth = async ({ identityId, gatewayId, + gatewayPoolId, kubernetesHost, caCert, tokenReviewerJwt, @@ -843,6 +869,42 @@ export const identityKubernetesAuthServiceFactory = ({ await validateTokenReviewerPermissions({ gatewayExecutor, tokenReviewerJwt }); } } + } else if (gatewayPoolId) { + if (!plan.gatewayPool) { + throw new BadRequestError({ + message: "Your current plan does not support gateway pools. Please upgrade to an Enterprise plan." + }); + } + + const { permission: orgPermission } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor, + actorId, + orgId: identityMembershipOrg.scopeOrgId, + actorAuthMethod, + actorOrgId + }); + ForbiddenError.from(orgPermission).throwUnlessCan( + OrgPermissionGatewayPoolActions.AttachGatewayPools, + OrgPermissionSubjects.GatewayPool + ); + + // Validate connectivity through a random healthy pool member + const validationGateway = await gatewayPoolService.pickRandomHealthyGateway(gatewayPoolId); + if (tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway) { + const gatewayExecutor = $createGatewayValidationRequest(validationGateway.id); + await validateKubernetesHostConnectivity({ gatewayExecutor }); + await validateTokenReviewerPermissions({ gatewayExecutor }); + } else if (tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Api && kubernetesHost) { + const gatewayExecutor = $createGatewayValidationRequest(validationGateway.id, { + kubernetesHost, + caCert: caCert || undefined + }); + await validateKubernetesHostConnectivity({ gatewayExecutor }); + if (tokenReviewerJwt) { + await validateTokenReviewerPermissions({ gatewayExecutor, tokenReviewerJwt }); + } + } } else if (tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Api && kubernetesHost) { logger.info({ kubernetesHost }, "Validating Kubernetes host connectivity for new auth method"); await validateKubernetesHostConnectivity({ @@ -877,8 +939,9 @@ export const identityKubernetesAuthServiceFactory = ({ accessTokenMaxTTL, accessTokenTTL, accessTokenNumUsesLimit, - gatewayId: isGatewayV1 ? gatewayId : null, - gatewayV2Id: isGatewayV1 ? null : gatewayId, + gatewayId: gatewayPoolId ? null : isGatewayV1 ? gatewayId : null, + gatewayV2Id: gatewayPoolId ? null : isGatewayV1 ? null : gatewayId, + gatewayPoolId: gatewayPoolId ?? null, accessTokenTrustedIps: JSON.stringify(reformattedAccessTokenTrustedIps), encryptedKubernetesTokenReviewerJwt: tokenReviewerJwt ? encryptor({ plainText: Buffer.from(tokenReviewerJwt) }).cipherTextBlob @@ -903,6 +966,7 @@ export const identityKubernetesAuthServiceFactory = ({ allowedNames, allowedAudience, gatewayId, + gatewayPoolId, accessTokenTTL, accessTokenMaxTTL, accessTokenNumUsesLimit, @@ -1019,16 +1083,42 @@ export const identityKubernetesAuthServiceFactory = ({ ); } + // Handle gateway pool permission check + if (gatewayPoolId) { + if (!plan.gatewayPool) { + throw new BadRequestError({ + message: "Your current plan does not support gateway pools. Please upgrade to an Enterprise plan." + }); + } + const { permission: orgPermission } = await permissionService.getOrgPermission({ + scope: OrganizationActionScope.Any, + actor, + actorId, + orgId: identityMembershipOrg.scopeOrgId, + actorAuthMethod, + actorOrgId + }); + ForbiddenError.from(orgPermission).throwUnlessCan( + OrgPermissionGatewayPoolActions.AttachGatewayPools, + OrgPermissionSubjects.GatewayPool + ); + } + // Strict check to see if gateway ID is undefined. It should update the gateway ID to null if its strictly set to null. - const shouldUpdateGatewayId = Boolean(gatewayId !== undefined); - const gatewayIdValue = isGatewayV1 ? gatewayId : null; - const gatewayV2IdValue = isGatewayV1 ? null : gatewayId; + const shouldUpdateGatewayId = Boolean(gatewayId !== undefined || gatewayPoolId !== undefined); + const gatewayIdValue = gatewayPoolId ? null : isGatewayV1 ? gatewayId : null; + const gatewayV2IdValue = gatewayPoolId ? null : isGatewayV1 ? null : gatewayId; + const gatewayPoolIdValue = gatewayPoolId ?? (gatewayId !== undefined ? null : undefined); const effectiveTokenReviewMode = tokenReviewMode ?? identityKubernetesAuth.tokenReviewMode; const effectiveKubernetesHost = kubernetesHost !== undefined ? kubernetesHost : identityKubernetesAuth.kubernetesHost; - const effectiveGatewayId = - gatewayId !== undefined ? gatewayId : (identityKubernetesAuth.gatewayV2Id ?? identityKubernetesAuth.gatewayId); + const effectiveGatewayPoolId = gatewayPoolId !== undefined ? gatewayPoolId : identityKubernetesAuth.gatewayPoolId; + const effectiveGatewayId = effectiveGatewayPoolId + ? null + : gatewayId !== undefined + ? gatewayId + : (identityKubernetesAuth.gatewayV2Id ?? identityKubernetesAuth.gatewayId); const { encryptor, decryptor } = await kmsService.createCipherPairWithDataKey({ type: KmsDataKey.Organization, @@ -1046,23 +1136,38 @@ export const identityKubernetesAuthServiceFactory = ({ effectiveCaCert = undefined; } - if (effectiveGatewayId) { + // Resolve the gateway ID to validate through (either direct or from pool) + let validationGatewayId: string | null = effectiveGatewayId ?? null; + if (!validationGatewayId && effectiveGatewayPoolId) { + try { + const picked = await gatewayPoolService.pickRandomHealthyGateway(effectiveGatewayPoolId); + validationGatewayId = picked.id; + } catch { + // No healthy gateways in pool, skip validation + } + } + + if (validationGatewayId) { if (effectiveTokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway) { - const gatewayExecutor = $createGatewayValidationRequest(effectiveGatewayId); + const gatewayExecutor = $createGatewayValidationRequest(validationGatewayId); logger.info( - { gatewayId: effectiveGatewayId }, + { gatewayId: validationGatewayId, gatewayPoolId: effectiveGatewayPoolId }, "Validating gateway connectivity to Kubernetes for auth method update" ); await validateKubernetesHostConnectivity({ gatewayExecutor }); await validateTokenReviewerPermissions({ gatewayExecutor }); } else if (effectiveTokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Api && effectiveKubernetesHost) { - const gatewayExecutor = $createGatewayValidationRequest(effectiveGatewayId, { + const gatewayExecutor = $createGatewayValidationRequest(validationGatewayId, { kubernetesHost: effectiveKubernetesHost, caCert: effectiveCaCert }); logger.info( - { gatewayId: effectiveGatewayId, kubernetesHost: effectiveKubernetesHost }, + { + gatewayId: validationGatewayId, + gatewayPoolId: effectiveGatewayPoolId, + kubernetesHost: effectiveKubernetesHost + }, "Validating Kubernetes connectivity through gateway for auth method update" ); @@ -1101,6 +1206,7 @@ export const identityKubernetesAuthServiceFactory = ({ allowedAudience, gatewayId: shouldUpdateGatewayId ? gatewayIdValue : undefined, gatewayV2Id: shouldUpdateGatewayId ? gatewayV2IdValue : undefined, + gatewayPoolId: gatewayPoolIdValue, accessTokenMaxTTL, accessTokenTTL, accessTokenNumUsesLimit, diff --git a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-types.ts b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-types.ts index 8f06bfd5d33..a64018f6b90 100644 --- a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-types.ts +++ b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-types.ts @@ -21,6 +21,7 @@ export type TAttachKubernetesAuthDTO = { allowedNames: string; allowedAudience: string; gatewayId?: string | null; + gatewayPoolId?: string | null; accessTokenTTL: number; accessTokenMaxTTL: number; accessTokenNumUsesLimit: number; @@ -38,6 +39,7 @@ export type TUpdateKubernetesAuthDTO = { allowedNames?: string; allowedAudience?: string; gatewayId?: string | null; + gatewayPoolId?: string | null; accessTokenTTL?: number; accessTokenMaxTTL?: number; accessTokenNumUsesLimit?: number; diff --git a/frontend/src/components/v3/platform/GatewayPicker/GatewayPicker.tsx b/frontend/src/components/v3/platform/GatewayPicker/GatewayPicker.tsx new file mode 100644 index 00000000000..291cd45f446 --- /dev/null +++ b/frontend/src/components/v3/platform/GatewayPicker/GatewayPicker.tsx @@ -0,0 +1,140 @@ +import { faGlobe, faLayerGroup, faServer } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useQuery } from "@tanstack/react-query"; + +import { Select, SelectItem, Tooltip } from "@app/components/v2"; +import { useSubscription } from "@app/context"; +import { gatewayPoolsQueryKeys } from "@app/hooks/api/gateway-pools/queries"; +import { gatewaysQueryKeys } from "@app/hooks/api/gateways/queries"; +import { GatewayHealthCheckStatus } from "@app/hooks/api/gateways-v2/types"; +import { PoolHealthBadge } from "@app/pages/organization/NetworkingPage/components/GatewayTab/components/PoolHealthBadge"; + +type GatewayPickerValue = { + gatewayId: string | null; + gatewayPoolId: string | null; +}; + +type Props = { + value: GatewayPickerValue; + onChange: (value: GatewayPickerValue) => void; + isDisabled?: boolean; + className?: string; +}; + +const SectionLabel = ({ children }: { children: React.ReactNode }) => ( +
    {children}
    +); + +const SectionDivider = () =>
    ; + +export const GatewayPicker = ({ value, onChange, isDisabled, className }: Props) => { + const { subscription } = useSubscription(); + const showPools = subscription?.gatewayPool; + + const { data: gateways, isPending: isGatewaysLoading } = useQuery(gatewaysQueryKeys.list()); + const { data: pools, isPending: isPoolsLoading } = useQuery({ + ...gatewayPoolsQueryKeys.list(), + enabled: Boolean(showPools) + }); + + const isLoading = isGatewaysLoading || (showPools && isPoolsLoading); + + let selectValue = "internet"; + if (value.gatewayPoolId) { + selectValue = `pool:${value.gatewayPoolId}`; + } else if (value.gatewayId) { + selectValue = `gateway:${value.gatewayId}`; + } + + const handleChange = (v: string) => { + if (v === "internet") { + onChange({ gatewayId: null, gatewayPoolId: null }); + } else if (v.startsWith("pool:")) { + onChange({ gatewayId: null, gatewayPoolId: v.replace("pool:", "") }); + } else if (v.startsWith("gateway:")) { + onChange({ gatewayId: v.replace("gateway:", ""), gatewayPoolId: null }); + } + }; + + const v2Gateways = gateways?.filter((g) => !g.isV1) ?? []; + + const isOnline = (gw: (typeof v2Gateways)[number]) => + "heartbeat" in gw && + gw.heartbeat && + new Date(gw.heartbeat).getTime() > Date.now() - 60 * 60 * 1000 && + (!("lastHealthCheckStatus" in gw) || + gw.lastHealthCheckStatus !== GatewayHealthCheckStatus.Failed); + + return ( + + ); +}; diff --git a/frontend/src/components/v3/platform/GatewayPicker/index.ts b/frontend/src/components/v3/platform/GatewayPicker/index.ts new file mode 100644 index 00000000000..0bb0a7844d6 --- /dev/null +++ b/frontend/src/components/v3/platform/GatewayPicker/index.ts @@ -0,0 +1 @@ +export { GatewayPicker } from "./GatewayPicker"; diff --git a/frontend/src/components/v3/platform/index.ts b/frontend/src/components/v3/platform/index.ts index ab583961838..3866b25f22f 100644 --- a/frontend/src/components/v3/platform/index.ts +++ b/frontend/src/components/v3/platform/index.ts @@ -1,2 +1,3 @@ export * from "./DocumentationLinkBadge"; +export * from "./GatewayPicker"; export * from "./ScopeIcons"; diff --git a/frontend/src/context/OrgPermissionContext/types.ts b/frontend/src/context/OrgPermissionContext/types.ts index 8700b817cac..a5862bd7e9c 100644 --- a/frontend/src/context/OrgPermissionContext/types.ts +++ b/frontend/src/context/OrgPermissionContext/types.ts @@ -29,6 +29,14 @@ export enum OrgGatewayPermissionActions { AttachGateways = "attach-gateways" } +export enum OrgGatewayPoolPermissionActions { + CreateGatewayPools = "create-gateway-pools", + ListGatewayPools = "list-gateway-pools", + EditGatewayPools = "edit-gateway-pools", + DeleteGatewayPools = "delete-gateway-pools", + AttachGatewayPools = "attach-gateway-pools" +} + export enum OrgRelayPermissionActions { CreateRelays = "create-relays", ListRelays = "list-relays", @@ -66,6 +74,7 @@ export enum OrgPermissionSubjects { AppConnections = "app-connections", Kmip = "kmip", Gateway = "gateway", + GatewayPool = "gateway-pool", Relay = "relay", SecretShare = "secret-share", GithubOrgSync = "github-org-sync", @@ -168,6 +177,7 @@ export type OrgPermissionSet = OrgPermissionSubjects.MachineIdentityAuthTemplate ] | [OrgGatewayPermissionActions, OrgPermissionSubjects.Gateway] + | [OrgGatewayPoolPermissionActions, OrgPermissionSubjects.GatewayPool] | [OrgRelayPermissionActions, OrgPermissionSubjects.Relay] | [OrgPermissionSecretShareAction, OrgPermissionSubjects.SecretShare] | [ diff --git a/frontend/src/hooks/api/gateway-pools/index.tsx b/frontend/src/hooks/api/gateway-pools/index.tsx new file mode 100644 index 00000000000..43063fa0ee1 --- /dev/null +++ b/frontend/src/hooks/api/gateway-pools/index.tsx @@ -0,0 +1,19 @@ +export { + useAddGatewayToPool, + useCreateGatewayPool, + useDeleteGatewayPool, + useRemoveGatewayFromPool, + useUpdateGatewayPool +} from "./mutations"; +export { + gatewayPoolsQueryKeys, + useGetGatewayPool, + useGetGatewayPoolConnectedResources, + useListGatewayPools +} from "./queries"; +export type { + TGatewayPool, + TGatewayPoolConnectedResources, + TGatewayPoolMember, + TGatewayPoolWithMembers +} from "./types"; diff --git a/frontend/src/hooks/api/gateway-pools/mutations.tsx b/frontend/src/hooks/api/gateway-pools/mutations.tsx new file mode 100644 index 00000000000..57f4e40f1ba --- /dev/null +++ b/frontend/src/hooks/api/gateway-pools/mutations.tsx @@ -0,0 +1,86 @@ +import { useMutation, useQueryClient } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { gatewaysQueryKeys } from "../gateways/queries"; +import { gatewayPoolsQueryKeys } from "./queries"; +import { + TAddGatewayToPoolDTO, + TCreateGatewayPoolDTO, + TGatewayPool, + TGatewayPoolMembership, + TRemoveGatewayFromPoolDTO, + TUpdateGatewayPoolDTO +} from "./types"; + +export const useCreateGatewayPool = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async (dto: TCreateGatewayPoolDTO) => { + const { data } = await apiRequest.post("/api/v2/gateway-pools", dto); + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: gatewayPoolsQueryKeys.allKey() }); + } + }); +}; + +export const useUpdateGatewayPool = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ poolId, ...dto }: TUpdateGatewayPoolDTO) => { + const { data } = await apiRequest.patch(`/api/v2/gateway-pools/${poolId}`, dto); + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: gatewayPoolsQueryKeys.allKey() }); + } + }); +}; + +export const useDeleteGatewayPool = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async (poolId: string) => { + const { data } = await apiRequest.delete(`/api/v2/gateway-pools/${poolId}`); + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: gatewayPoolsQueryKeys.allKey() }); + } + }); +}; + +export const useAddGatewayToPool = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ poolId, gatewayId }: TAddGatewayToPoolDTO) => { + const { data } = await apiRequest.post( + `/api/v2/gateway-pools/${poolId}/memberships`, + { gatewayId } + ); + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: gatewayPoolsQueryKeys.allKey() }); + queryClient.invalidateQueries({ queryKey: gatewaysQueryKeys.allKey() }); + } + }); +}; + +export const useRemoveGatewayFromPool = () => { + const queryClient = useQueryClient(); + return useMutation({ + mutationFn: async ({ poolId, gatewayId }: TRemoveGatewayFromPoolDTO) => { + const { data } = await apiRequest.delete( + `/api/v2/gateway-pools/${poolId}/memberships/${gatewayId}` + ); + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: gatewayPoolsQueryKeys.allKey() }); + queryClient.invalidateQueries({ queryKey: gatewaysQueryKeys.allKey() }); + } + }); +}; diff --git a/frontend/src/hooks/api/gateway-pools/queries.tsx b/frontend/src/hooks/api/gateway-pools/queries.tsx new file mode 100644 index 00000000000..cd383117697 --- /dev/null +++ b/frontend/src/hooks/api/gateway-pools/queries.tsx @@ -0,0 +1,49 @@ +import { useQuery } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { TGatewayPool, TGatewayPoolConnectedResources, TGatewayPoolWithMembers } from "./types"; + +export const gatewayPoolsQueryKeys = { + allKey: () => ["gateway-pools"], + listKey: () => [...gatewayPoolsQueryKeys.allKey(), "list"], + list: () => ({ + queryKey: gatewayPoolsQueryKeys.listKey(), + queryFn: async () => { + const { data } = await apiRequest.get("/api/v2/gateway-pools"); + return data; + } + }), + detailKey: (poolId: string) => [...gatewayPoolsQueryKeys.allKey(), "detail", poolId], + detail: (poolId: string) => ({ + queryKey: gatewayPoolsQueryKeys.detailKey(poolId), + queryFn: async () => { + const { data } = await apiRequest.get( + `/api/v2/gateway-pools/${poolId}` + ); + return data; + }, + enabled: Boolean(poolId) + }) +}; + +export const useListGatewayPools = () => { + return useQuery(gatewayPoolsQueryKeys.list()); +}; + +export const useGetGatewayPool = (poolId: string) => { + return useQuery(gatewayPoolsQueryKeys.detail(poolId)); +}; + +export const useGetGatewayPoolConnectedResources = (poolId: string) => { + return useQuery({ + queryKey: [...gatewayPoolsQueryKeys.allKey(), "connected-resources", poolId], + queryFn: async () => { + const { data } = await apiRequest.get( + `/api/v2/gateway-pools/${poolId}/resources` + ); + return data; + }, + enabled: Boolean(poolId) + }); +}; diff --git a/frontend/src/hooks/api/gateway-pools/types.ts b/frontend/src/hooks/api/gateway-pools/types.ts new file mode 100644 index 00000000000..1a6675e9aae --- /dev/null +++ b/frontend/src/hooks/api/gateway-pools/types.ts @@ -0,0 +1,61 @@ +export type TGatewayPool = { + id: string; + orgId: string; + name: string; + createdAt: string; + updatedAt: string; + memberCount: number; + healthyMemberCount: number; + memberGatewayIds: string[]; + connectedResourcesCount: number; +}; + +export type TGatewayPoolConnectedResources = { + kubernetesAuths: { + id: string; + identityId: string; + identityName: string | null; + }[]; +}; + +export type TGatewayPoolMember = { + id: string; + name: string; + heartbeat: string | null; + lastHealthCheckStatus: string | null; +}; + +export type TGatewayPoolWithMembers = { + id: string; + orgId: string; + name: string; + createdAt: string; + updatedAt: string; + gateways: TGatewayPoolMember[]; +}; + +export type TGatewayPoolMembership = { + id: string; + gatewayPoolId: string; + gatewayId: string; + createdAt: string; +}; + +export type TCreateGatewayPoolDTO = { + name: string; +}; + +export type TUpdateGatewayPoolDTO = { + poolId: string; + name?: string; +}; + +export type TAddGatewayToPoolDTO = { + poolId: string; + gatewayId: string; +}; + +export type TRemoveGatewayFromPoolDTO = { + poolId: string; + gatewayId: string; +}; diff --git a/frontend/src/hooks/api/identities/mutations.tsx b/frontend/src/hooks/api/identities/mutations.tsx index 8a39b2fb067..8e475e61f7c 100644 --- a/frontend/src/hooks/api/identities/mutations.tsx +++ b/frontend/src/hooks/api/identities/mutations.tsx @@ -3,6 +3,7 @@ import { useMutation, useQueryClient } from "@tanstack/react-query"; import { apiRequest } from "@app/config/request"; import { projectIdentityQuery, projectKeys } from "@app/hooks/api"; +import { gatewayPoolsQueryKeys as gatewayPoolsKeys } from "../gateway-pools/queries"; import { organizationKeys } from "../organization/queries"; import { identitiesKeys } from "./queries"; import { @@ -1414,6 +1415,7 @@ export const useAddIdentityKubernetesAuth = () => { accessTokenNumUsesLimit, accessTokenTrustedIps, gatewayId, + gatewayPoolId, tokenReviewMode }) => { const { @@ -1432,6 +1434,7 @@ export const useAddIdentityKubernetesAuth = () => { accessTokenNumUsesLimit, accessTokenTrustedIps, gatewayId, + gatewayPoolId, tokenReviewMode } ); @@ -1533,6 +1536,7 @@ export const useDeleteIdentityAzureAuth = () => { } queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityById(identityId) }); queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityAzureAuth(identityId) }); + queryClient.invalidateQueries({ queryKey: gatewayPoolsKeys.allKey() }); } }); }; @@ -1553,6 +1557,7 @@ export const useUpdateIdentityKubernetesAuth = () => { accessTokenNumUsesLimit, accessTokenTrustedIps, gatewayId, + gatewayPoolId, tokenReviewMode }) => { const { @@ -1571,6 +1576,7 @@ export const useUpdateIdentityKubernetesAuth = () => { accessTokenNumUsesLimit, accessTokenTrustedIps, gatewayId, + gatewayPoolId, tokenReviewMode } ); @@ -1595,6 +1601,7 @@ export const useUpdateIdentityKubernetesAuth = () => { queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityKubernetesAuth(identityId) }); + queryClient.invalidateQueries({ queryKey: gatewayPoolsKeys.allKey() }); } }); }; diff --git a/frontend/src/hooks/api/identities/types.ts b/frontend/src/hooks/api/identities/types.ts index 38d8f9b8ec6..cee4aa4cda3 100644 --- a/frontend/src/hooks/api/identities/types.ts +++ b/frontend/src/hooks/api/identities/types.ts @@ -516,6 +516,7 @@ export type IdentityKubernetesAuth = { accessTokenNumUsesLimit: number; accessTokenTrustedIps: IdentityTrustedIp[]; gatewayId?: string | null; + gatewayPoolId?: string | null; }; export type AddIdentityKubernetesAuthDTO = { @@ -529,6 +530,7 @@ export type AddIdentityKubernetesAuthDTO = { allowedNames: string; allowedAudience: string; gatewayId?: string | null; + gatewayPoolId?: string | null; caCert: string; accessTokenTTL: number; accessTokenMaxTTL: number; @@ -549,6 +551,7 @@ export type UpdateIdentityKubernetesAuthDTO = { allowedNames?: string; allowedAudience?: string; gatewayId?: string | null; + gatewayPoolId?: string | null; caCert?: string; accessTokenTTL?: number; accessTokenMaxTTL?: number; diff --git a/frontend/src/hooks/api/index.tsx b/frontend/src/hooks/api/index.tsx index 4221f193e26..9b05658586f 100644 --- a/frontend/src/hooks/api/index.tsx +++ b/frontend/src/hooks/api/index.tsx @@ -21,6 +21,7 @@ export * from "./certificateTemplates"; export * from "./dynamicSecret"; export * from "./dynamicSecretLease"; export * from "./emailDomains"; +export * from "./gateway-pools"; export * from "./gateways"; export * from "./githubOrgSyncConfig"; export * from "./groups"; diff --git a/frontend/src/hooks/api/subscriptions/types.ts b/frontend/src/hooks/api/subscriptions/types.ts index a67a6e604e3..7009bfe9ad4 100644 --- a/frontend/src/hooks/api/subscriptions/types.ts +++ b/frontend/src/hooks/api/subscriptions/types.ts @@ -57,6 +57,7 @@ export type SubscriptionPlan = { caCrl: boolean; instanceUserManagement: boolean; gateway: boolean; + gatewayPool: boolean; externalKms: boolean; pkiEst: boolean; pkiAcme: boolean; diff --git a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx index 89ed93b6654..4640f7b555b 100644 --- a/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx +++ b/frontend/src/pages/organization/AccessManagementPage/components/OrgIdentityTab/components/IdentitySection/IdentityKubernetesAuthForm.tsx @@ -3,7 +3,6 @@ import { Controller, useFieldArray, useForm } from "react-hook-form"; import { faInfoCircle, faPlus, faXmark } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { zodResolver } from "@hookform/resolvers/zod"; -import { useQuery } from "@tanstack/react-query"; import { useParams } from "@tanstack/react-router"; import { z } from "zod"; @@ -23,6 +22,7 @@ import { TextArea, Tooltip } from "@app/components/v2"; +import { GatewayPicker } from "@app/components/v3"; import { useOrganization, useOrgPermission, useSubscription } from "@app/context"; import { OrgGatewayPermissionActions, @@ -30,7 +30,6 @@ import { } from "@app/context/OrgPermissionContext/types"; import { OrgMembershipRole } from "@app/helpers/roles"; import { - gatewaysQueryKeys, useAddIdentityKubernetesAuth, useGetIdentityKubernetesAuth, useUpdateIdentityKubernetesAuth @@ -54,6 +53,7 @@ const schema = z kubernetesHost: z.string().optional().nullable(), tokenReviewerJwt: z.string().optional(), gatewayId: z.string().optional().nullable(), + gatewayPoolId: z.string().optional().nullable(), allowedNames: z.string(), allowedNamespaces: z.string(), allowedAudience: z.string(), @@ -85,11 +85,16 @@ const schema = z }); } - if (data.tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway && !data.gatewayId) { + if ( + data.tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway && + !data.gatewayId && + !data.gatewayPoolId + ) { ctx.addIssue({ path: ["gatewayId"], code: z.ZodIssueCode.custom, - message: "When token review mode is set to Gateway, a gateway must be selected" + message: + "When token review mode is set to Gateway, a gateway or gateway pool must be selected" }); } }); @@ -125,8 +130,6 @@ export const IdentityKubernetesAuthForm = ({ const { mutateAsync: updateMutateAsync } = useUpdateIdentityKubernetesAuth(); const [tabValue, setTabValue] = useState(IdentityFormTab.Configuration); - const { data: gateways, isPending: isGatewayLoading } = useQuery(gatewaysQueryKeys.list()); - const { data } = useGetIdentityKubernetesAuth(identityId ?? "", { enabled: isUpdate }); @@ -181,7 +184,8 @@ export const IdentityKubernetesAuthForm = ({ allowedNamespaces: data.allowedNamespaces, allowedAudience: data.allowedAudience, caCert: data.caCert, - gatewayId: data.gatewayId || null, + gatewayId: data.gatewayPoolId ? null : data.gatewayId || null, + gatewayPoolId: data.gatewayPoolId || null, accessTokenTTL: String(data.accessTokenTTL), accessTokenMaxTTL: String(data.accessTokenMaxTTL), accessTokenNumUsesLimit: data.accessTokenNumUsesLimit @@ -308,6 +312,7 @@ export const IdentityKubernetesAuthForm = ({ accessTokenMaxTTL, accessTokenNumUsesLimit, gatewayId, + gatewayPoolId, tokenReviewMode, accessTokenTrustedIps }: FormData) => { @@ -329,7 +334,8 @@ export const IdentityKubernetesAuthForm = ({ allowedAudience, caCert, identityId, - gatewayId: gatewayId || null, + gatewayId: gatewayPoolId ? null : gatewayId || null, + gatewayPoolId: gatewayPoolId || null, tokenReviewMode, accessTokenTTL: Number(accessTokenTTL), accessTokenMaxTTL: Number(accessTokenMaxTTL), @@ -351,7 +357,8 @@ export const IdentityKubernetesAuthForm = ({ allowedNames: allowedNames || "", allowedNamespaces: allowedNamespaces || "", allowedAudience: allowedAudience || "", - gatewayId: gatewayId || null, + gatewayId: gatewayPoolId ? null : gatewayId || null, + gatewayPoolId: gatewayPoolId || null, caCert: caCert || "", tokenReviewMode, accessTokenTTL: Number(accessTokenTTL), @@ -441,61 +448,46 @@ export const IdentityKubernetesAuthForm = ({ control={control} name="gatewayId" defaultValue="" - render={({ field: { value, onChange }, fieldState: { error } }) => ( - - { + const gatewayPoolIdVal = watch("gatewayPoolId"); + const gatewayIdVal = watch("gatewayId"); + + return ( + -
    - -
    -
    -
    - )} + isDisabled={!isAllowed} + className="w-full" + /> +
    + + + ); + }} /> )} diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx index 27fb2e00bc9..e34def0196a 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/GatewayTab.tsx @@ -1,7 +1,6 @@ import { useState } from "react"; import { faArrowsRotate, - faClock, faCopy, faDoorClosed, faEdit, @@ -43,64 +42,24 @@ import { import { DocumentationLinkBadge } from "@app/components/v3"; import { OrgGatewayPermissionActions, + OrgGatewayPoolPermissionActions, OrgPermissionSubjects } from "@app/context/OrgPermissionContext/types"; +import { useSubscription } from "@app/context/SubscriptionContext"; import { withPermission } from "@app/hoc"; import { usePopUp } from "@app/hooks"; +import { useListGatewayPools } from "@app/hooks/api/gateway-pools"; import { gatewaysQueryKeys, useDeleteGatewayById } from "@app/hooks/api/gateways"; import { useDeleteGatewayV2ById, useTriggerGatewayV2Heartbeat } from "@app/hooks/api/gateways-v2"; -import { GatewayHealthCheckStatus } from "@app/hooks/api/gateways-v2/types"; +import { CreateGatewayPoolModal } from "./components/CreateGatewayPoolModal"; import { EditGatewayDetailsModal } from "./components/EditGatewayDetailsModal"; import { GatewayConnectedResourcesDrawer } from "./components/GatewayConnectedResourcesDrawer"; import { GatewayDeployModal } from "./components/GatewayDeployModal"; +import { GatewayHealthStatus } from "./components/GatewayHealthStatus"; +import { GatewayPoolsContent } from "./components/GatewayPoolsContent"; import { ReEnrollGatewayModal } from "./components/ReEnrollGatewayModal"; -const GatewayHealthStatus = ({ - heartbeat, - lastHealthCheckStatus, - isPending -}: { - heartbeat?: string | null; - lastHealthCheckStatus?: GatewayHealthCheckStatus | null; - isPending?: boolean; -}) => { - if (isPending) { - return ( - - - - Pending - - - ); - } - - if (!heartbeat && !lastHealthCheckStatus) { - return ( - - Unregistered - - ); - } - - const heartbeatDate = heartbeat ? new Date(heartbeat) : null; - - const isHealthy = lastHealthCheckStatus === GatewayHealthCheckStatus.Healthy; - - const tooltipContent = heartbeatDate - ? `Last health check: ${heartbeatDate.toLocaleString()}` - : "No health check data available"; - - return ( - - - {isHealthy ? "Healthy" : "Unreachable"} - - - ); -}; - type GatewayConnectedCellProps = { isV1: boolean; connectedResourcesCount: number; @@ -131,6 +90,11 @@ const GatewayConnectedCell = ({ export const GatewayTab = withPermission( () => { + const [activeSubTab, setActiveSubTab] = useState<"all-gateways" | "gateway-pools">( + "all-gateways" + ); + const { subscription } = useSubscription(); + const showPoolsTab = subscription?.gatewayPool; const [search, setSearch] = useState(""); const [selectedGateway, setSelectedGateway] = useState<{ id: string; @@ -140,13 +104,27 @@ export const GatewayTab = withPermission( ...gatewaysQueryKeys.listWithTokens(), refetchInterval: 15_000 }); + const { data: pools } = useListGatewayPools(); + + // Build reverse map: gatewayId -> pool names + const gatewayPoolMap = new Map(); + if (showPoolsTab && pools) { + pools.forEach((pool) => { + pool.memberGatewayIds.forEach((gwId) => { + const existing = gatewayPoolMap.get(gwId) ?? []; + existing.push(pool.name); + gatewayPoolMap.set(gwId, existing); + }); + }); + } const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ "deployGateway", "deleteGateway", "editDetails", "connectedResources", - "reEnrollGateway" + "reEnrollGateway", + "createPool" ] as const); const deleteGatewayById = useDeleteGatewayById(); @@ -196,251 +174,330 @@ export const GatewayTab = withPermission(

    Gateways

    +
    + + +
    - - {(isAllowed: boolean) => ( - + )} + + ) : ( + showPoolsTab && ( + - Create Gateway - - )} - + {(isAllowed: boolean) => ( + + )} + + ) + )}
    -

    - Create and configure gateway to access private network resources from Infisical -

    -
    -
    - setSearch(e.target.value)} - leftIcon={} - placeholder="Search gateway..." - className="flex-1" - /> -
    - - - - - - - - - - - {isGatewaysLoading && ( - - )} - {filteredGateway?.map((el) => ( - - + + ))} + +
    NameConnected - Health Check - - - - -
    -
    - {el.name} - {(() => { - if (el.isPending) { - return ( + {activeSubTab === "gateway-pools" ? ( + + ) : ( + <> +

    + Create and configure gateway to access private network resources from Infisical +

    +
    +
    + setSearch(e.target.value)} + leftIcon={} + placeholder="Search gateway..." + className="flex-1" + /> +
    + + + + + + {showPoolsTab && } + + + + + + {isGatewaysLoading && ( + + )} + {filteredGateway?.map((el) => ( + + - - - + {showPoolsTab && ( + + )} + + + - - ))} - -
    NamePoolsConnected + Health Check + + + + +
    +
    + {el.name} + {(() => { + if ("isExpired" in el && el.isExpired) { + return ( + + Expired + + ); + } + if (el.isPending) { + return ( + + Pending + + ); + } + return ( + + Gateway v{el.isV1 ? "1" : "2"} + + ); + })()} + {"hasReEnrollToken" in el && el.hasReEnrollToken && ( - Pending + Re-enrolling - ); - } - return ( - - Gateway v{el.isV1 ? "1" : "2"} - - ); - })()} - {"hasReEnrollToken" in el && el.hasReEnrollToken && ( - - Re-enrolling - - )} -
    -
    - {el.isPending ? ( - - ) : ( - { - setSelectedGateway({ id: el.id, name: el.name }); - handlePopUpOpen("connectedResources"); - }} - /> - )} - - - - - - - - - - - - } - onClick={() => navigator.clipboard.writeText(el.id)} - > - Copy ID - - {!el.isV1 && !el.isPending && ( - } - onClick={() => handleTriggerHealthCheck(el.id)} - > - Trigger Health Check - )} - {el.isV1 && ( - - {(isAllowed: boolean) => ( + + + {(gatewayPoolMap.get(el.id) ?? []).length > 0 ? ( +
    + {(gatewayPoolMap.get(el.id) ?? []).map((poolName) => ( + + {poolName} + + ))} +
    + ) : ( + + )} +
    + {el.isPending ? ( + + ) : ( + { + setSelectedGateway({ id: el.id, name: el.name }); + handlePopUpOpen("connectedResources"); + }} + /> + )} + + + + + + + + + + + + } + onClick={() => navigator.clipboard.writeText(el.id)} + > + Copy ID + + {!el.isV1 && !el.isPending && ( } - onClick={() => handlePopUpOpen("editDetails", el)} + icon={} + onClick={() => handleTriggerHealthCheck(el.id)} > - Edit Details + Trigger Health Check )} - - )} - {!el.isV1 && - (el.isPending || ("identityId" in el && !el.identityId)) && ( + {el.isV1 && ( + + {(isAllowed: boolean) => ( + } + onClick={() => handlePopUpOpen("editDetails", el)} + > + Edit Details + + )} + + )} + {!el.isV1 && + (el.isPending || ("identityId" in el && !el.identityId)) && ( + + {(isAllowed: boolean) => ( + } + onClick={() => handlePopUpOpen("reEnrollGateway", el)} + > + Re-enroll + + )} + + )} {(isAllowed: boolean) => ( } - onClick={() => handlePopUpOpen("reEnrollGateway", el)} + icon={} + className="text-red" + onClick={() => handlePopUpOpen("deleteGateway", el)} > - Re-enroll + Delete Gateway )} - )} - - {(isAllowed: boolean) => ( - } - className="text-red" - onClick={() => handlePopUpOpen("deleteGateway", el)} - > - Delete Gateway - - )} - - - - -
    - handlePopUpToggle("editDetails", isOpen)} - > - - handlePopUpToggle("editDetails")} + + + +
    + handlePopUpToggle("editDetails", isOpen)} + > + + handlePopUpToggle("editDetails")} + /> + + + {!isGatewaysLoading && !filteredGateway?.length && ( + + )} + handlePopUpToggle("deleteGateway", isOpen)} + deleteKey="confirm" + onDeleteApproved={() => handleDeleteGateway()} /> - - - {!isGatewaysLoading && !filteredGateway?.length && ( - - )} - handlePopUpToggle("deleteGateway", isOpen)} - deleteKey="confirm" - onDeleteApproved={() => handleDeleteGateway()} - /> - handlePopUpToggle("deployGateway", isOpen)} - /> - handlePopUpToggle("reEnrollGateway", isOpen)} - gatewayData={ - popUp.reEnrollGateway.data as { - id: string; - name: string; - isPending: boolean; - } | null - } - /> - {selectedGateway && ( - { - handlePopUpToggle("connectedResources", isOpen); - if (!isOpen) setSelectedGateway(null); - }} - gatewayId={selectedGateway.id} - gatewayName={selectedGateway.name} - /> - )} -
    -
    + handlePopUpToggle("deployGateway", isOpen)} + /> + handlePopUpToggle("reEnrollGateway", isOpen)} + gatewayData={ + popUp.reEnrollGateway.data as { + id: string; + name: string; + isPending: boolean; + } | null + } + /> + {selectedGateway && ( + { + handlePopUpToggle("connectedResources", isOpen); + if (!isOpen) setSelectedGateway(null); + }} + gatewayId={selectedGateway.id} + gatewayName={selectedGateway.name} + /> + )} + +
    + + )} + handlePopUpToggle("createPool", isOpen)} + />
); }, diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx new file mode 100644 index 00000000000..8fdb8801481 --- /dev/null +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx @@ -0,0 +1,71 @@ +import { useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { z } from "zod"; + +import { createNotification } from "@app/components/notifications"; +import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2"; +import { useCreateGatewayPool } from "@app/hooks/api/gateway-pools"; + +const schema = z.object({ + name: z.string().min(1, "Name is required").max(255) +}); + +type FormData = z.infer; + +type Props = { + isOpen: boolean; + onToggle: (isOpen: boolean) => void; +}; + +export const CreateGatewayPoolModal = ({ isOpen, onToggle }: Props) => { + const createPool = useCreateGatewayPool(); + + const { + register, + handleSubmit, + reset, + formState: { errors, isSubmitting } + } = useForm({ + resolver: zodResolver(schema), + defaultValues: { name: "" } + }); + + const onSubmit = async (data: FormData) => { + try { + await createPool.mutateAsync({ + name: data.name + }); + createNotification({ type: "success", text: `Pool "${data.name}" created` }); + reset(); + onToggle(false); + } catch (err: unknown) { + const message = err instanceof Error ? err.message : "Failed to create pool"; + createNotification({ type: "error", text: message }); + } + }; + + return ( + + + + + + +
+ + +
+ +
+
+ ); +}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx new file mode 100644 index 00000000000..2a16a6dd5c9 --- /dev/null +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx @@ -0,0 +1,80 @@ +import { useEffect } from "react"; +import { useForm } from "react-hook-form"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { z } from "zod"; + +import { createNotification } from "@app/components/notifications"; +import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2"; +import { useUpdateGatewayPool } from "@app/hooks/api/gateway-pools"; +import { TGatewayPool } from "@app/hooks/api/gateway-pools/types"; + +const schema = z.object({ + name: z.string().min(1, "Name is required").max(255) +}); + +type FormData = z.infer; + +type Props = { + isOpen: boolean; + onToggle: (isOpen: boolean) => void; + pool?: TGatewayPool; +}; + +export const EditGatewayPoolModal = ({ isOpen, onToggle, pool }: Props) => { + const updatePool = useUpdateGatewayPool(); + + const { + register, + handleSubmit, + reset, + formState: { errors, isSubmitting } + } = useForm({ + resolver: zodResolver(schema) + }); + + useEffect(() => { + if (pool) { + reset({ name: pool.name }); + } + }, [pool, reset]); + + const onSubmit = async (data: FormData) => { + if (!pool) return; + try { + await updatePool.mutateAsync({ + poolId: pool.id, + name: data.name + }); + createNotification({ type: "success", text: "Pool updated" }); + onToggle(false); + } catch (err: unknown) { + const message = err instanceof Error ? err.message : "Failed to update pool"; + createNotification({ type: "error", text: message }); + } + }; + + return ( + + +
+ + + +
+ + +
+
+
+
+ ); +}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayHealthStatus.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayHealthStatus.tsx new file mode 100644 index 00000000000..a4b74def49b --- /dev/null +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayHealthStatus.tsx @@ -0,0 +1,62 @@ +import { faClock } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { Tooltip } from "@app/components/v2"; +import { GatewayHealthCheckStatus } from "@app/hooks/api/gateways-v2/types"; + +export const GatewayHealthStatus = ({ + heartbeat, + lastHealthCheckStatus, + isPending, + isExpired +}: { + heartbeat?: string | null; + lastHealthCheckStatus?: GatewayHealthCheckStatus | null; + isPending?: boolean; + isExpired?: boolean; +}) => { + if (isExpired) { + return ( + + + Expired + + + ); + } + + if (isPending) { + return ( + + + + Pending + + + ); + } + + if (!heartbeat && !lastHealthCheckStatus) { + return ( + + Unregistered + + ); + } + + const heartbeatDate = heartbeat ? new Date(heartbeat) : null; + + const isHealthy = lastHealthCheckStatus === GatewayHealthCheckStatus.Healthy; + + const tooltipContent = heartbeatDate + ? `Last health check: ${heartbeatDate.toLocaleString()}` + : "No health check data available"; + + return ( + + + {isHealthy ? "Healthy" : "Unreachable"} + + + ); +}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayPoolsContent.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayPoolsContent.tsx new file mode 100644 index 00000000000..6529c8a48db --- /dev/null +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/GatewayPoolsContent.tsx @@ -0,0 +1,219 @@ +import { useState } from "react"; +import { faEllipsisV, faMagnifyingGlass, faTrash } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; +import { createNotification } from "@app/components/notifications"; +import { + Button, + DeleteActionModal, + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, + EmptyState, + IconButton, + Input, + Table, + TableContainer, + TableSkeleton, + TBody, + Td, + Th, + THead, + Tr +} from "@app/components/v2"; +import { useSubscription } from "@app/context/SubscriptionContext"; +import { usePopUp } from "@app/hooks"; +import { useDeleteGatewayPool, useListGatewayPools } from "@app/hooks/api/gateway-pools"; +import { TGatewayPool } from "@app/hooks/api/gateway-pools/types"; + +import { EditGatewayPoolModal } from "./EditGatewayPoolModal"; +import { PoolConnectedResourcesDrawer } from "./PoolConnectedResourcesDrawer"; +import { PoolDetailSheet } from "./PoolDetailSheet"; +import { PoolHealthBadge } from "./PoolHealthBadge"; + +export const GatewayPoolsContent = () => { + const { subscription } = useSubscription(); + const isEnterprise = subscription?.gatewayPool; + const [search, setSearch] = useState(""); + const [selectedPoolId, setSelectedPoolId] = useState(null); + const [resourcesPool, setResourcesPool] = useState<{ id: string; name: string } | null>(null); + const { data: pools, isPending: isPoolsLoading } = useListGatewayPools(); + const deletePool = useDeleteGatewayPool(); + + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ + "editPool", + "deletePool", + "upgradePlan" + ] as const); + + const filteredPools = pools?.filter((p) => p.name.toLowerCase().includes(search.toLowerCase())); + const selectedPool = pools?.find((p) => p.id === selectedPoolId) ?? null; + + const handleDeletePool = async () => { + const pool = popUp.deletePool.data as TGatewayPool; + if (!pool) return; + + try { + await deletePool.mutateAsync(pool.id); + createNotification({ type: "success", text: `Pool "${pool.name}" deleted` }); + handlePopUpToggle("deletePool", false); + if (selectedPoolId === pool.id) setSelectedPoolId(null); + } catch (err: unknown) { + const message = err instanceof Error ? err.message : "Failed to delete pool"; + createNotification({ type: "error", text: message }); + } + }; + + if (!isEnterprise) { + return ( +
+

+ Pool gateways for high availability and automatic failover +

+
+
🛡️
+

Enterprise Feature

+

+ Gateway Pools provide high availability and automatic failover. When a gateway goes + down, the platform automatically routes through a healthy member of the pool. +

+ +
+ handlePopUpToggle("upgradePlan", isOpen)} + text="To use gateway pools, upgrade to Infisical's Enterprise plan." + /> +
+ ); + } + + return ( +
+

+ Pool gateways for high availability and automatic failover +

+
+ setSearch(e.target.value)} + leftIcon={} + placeholder="Search pool..." + className="flex-1" + /> +
+ + + + + + + + + + + {isPoolsLoading && } + {filteredPools?.map((pool) => ( + setSelectedPoolId(pool.id)} + > + + + + + + ))} + {!isPoolsLoading && filteredPools?.length === 0 && ( + + + + )} + +
NameConnectedHealth +
{pool.name} + {pool.connectedResourcesCount > 0 ? ( + + ) : ( + + )} + + + +
e.stopPropagation()} + onKeyDown={(e) => e.stopPropagation()} + role="presentation" + > + + + + + + + + handlePopUpOpen("editPool", pool)}> + Edit + + } + onClick={() => handlePopUpOpen("deletePool", pool)} + className="text-red-500" + > + Delete + + + +
+
+ +
+
+ + { + if (!open) setSelectedPoolId(null); + }} + pool={selectedPool} + /> + {resourcesPool && ( + { + if (!open) setResourcesPool(null); + }} + poolId={resourcesPool.id} + poolName={resourcesPool.name} + /> + )} + handlePopUpToggle("editPool", isOpen)} + pool={popUp.editPool.data as TGatewayPool} + /> + handlePopUpToggle("deletePool", isOpen)} + deleteKey="confirm" + onDeleteApproved={handleDeletePool} + /> +
+ ); +}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolConnectedResourcesDrawer.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolConnectedResourcesDrawer.tsx new file mode 100644 index 00000000000..290acfb2c1a --- /dev/null +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolConnectedResourcesDrawer.tsx @@ -0,0 +1,129 @@ +import { Link } from "@tanstack/react-router"; +import { ExternalLinkIcon } from "lucide-react"; + +import { Spinner } from "@app/components/v2"; +import { + Badge, + Sheet, + SheetContent, + SheetDescription, + SheetHeader, + SheetTitle, + UnstableAccordion, + UnstableAccordionContent, + UnstableAccordionItem, + UnstableAccordionTrigger +} from "@app/components/v3"; +import { useOrganization } from "@app/context"; +import { + TGatewayPoolConnectedResources, + useGetGatewayPoolConnectedResources +} from "@app/hooks/api/gateway-pools"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + poolId: string; + poolName: string; +}; + +const getTotalResourceCount = (resources: TGatewayPoolConnectedResources | undefined): number => { + if (!resources) return 0; + return resources.kubernetesAuths.length; +}; + +type ResourceRowProps = { + name: string; + subtitle: string; + to: string; + params: Record; + isLast?: boolean; +}; + +const ResourceRow = ({ name, subtitle, to, params, isLast }: ResourceRowProps) => { + return ( + +
+ {name} + {subtitle} +
+ + + ); +}; + +export const PoolConnectedResourcesDrawer = ({ isOpen, onOpenChange, poolId, poolName }: Props) => { + const { currentOrg } = useOrganization(); + const { data: resources, isPending } = useGetGatewayPoolConnectedResources(isOpen ? poolId : ""); + + const totalCount = getTotalResourceCount(resources); + + const defaultOpenSections = [resources?.kubernetesAuths.length ? "kubernetes-auth" : null].filter( + Boolean + ) as string[]; + + return ( + + + + Connected Resources + {poolName} + + +
+ {isPending ? ( +
+ +
+ ) : ( +
+

+ {totalCount > 0 ? ( + <> + {totalCount} resource{totalCount !== 1 ? "s" : ""} connected + + ) : ( + "No resources connected to this pool" + )} +

+ + {totalCount > 0 && ( + + {(resources?.kubernetesAuths.length ?? 0) > 0 && ( + + + Kubernetes Auth + {resources?.kubernetesAuths.length} + + + {resources?.kubernetesAuths.map((auth, idx) => ( + + ))} + + + )} + + )} +
+ )} +
+
+
+ ); +}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx new file mode 100644 index 00000000000..1a2d04b1ae3 --- /dev/null +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx @@ -0,0 +1,278 @@ +import { useMemo } from "react"; +import { faEllipsisV, faHeartPulse, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { useQuery } from "@tanstack/react-query"; + +import { createNotification } from "@app/components/notifications"; +import { OrgPermissionCan } from "@app/components/permissions"; +import { Button, DeleteActionModal, IconButton } from "@app/components/v2"; +import { + Badge, + Command, + CommandEmpty, + CommandGroup, + CommandInput, + CommandItem, + CommandList, + Popover, + PopoverContent, + PopoverTrigger, + Sheet, + SheetContent, + SheetHeader, + SheetTitle, + UnstableDropdownMenu, + UnstableDropdownMenuContent, + UnstableDropdownMenuItem, + UnstableDropdownMenuTrigger, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow +} from "@app/components/v3"; +import { + OrgGatewayPoolPermissionActions, + OrgPermissionSubjects +} from "@app/context/OrgPermissionContext/types"; +import { usePopUp } from "@app/hooks"; +import { useAddGatewayToPool, useRemoveGatewayFromPool } from "@app/hooks/api/gateway-pools"; +import { TGatewayPool } from "@app/hooks/api/gateway-pools/types"; +import { gatewaysQueryKeys } from "@app/hooks/api/gateways/queries"; +import { useTriggerGatewayV2Heartbeat } from "@app/hooks/api/gateways-v2"; +import { GatewayHealthCheckStatus } from "@app/hooks/api/gateways-v2/types"; + +import { PoolHealthBadge } from "./PoolHealthBadge"; + +type Props = { + isOpen: boolean; + onOpenChange: (isOpen: boolean) => void; + pool: TGatewayPool | null; +}; + +export const PoolDetailSheet = ({ isOpen, onOpenChange, pool }: Props) => { + const { data: allGateways } = useQuery({ + ...gatewaysQueryKeys.list(), + enabled: isOpen + }); + const addGateway = useAddGatewayToPool(); + const removeGateway = useRemoveGatewayFromPool(); + const triggerHealthCheck = useTriggerGatewayV2Heartbeat(); + + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["removeGateway"] as const); + + const memberGateways = useMemo( + () => allGateways?.filter((g) => pool?.memberGatewayIds.includes(g.id)) ?? [], + [allGateways, pool?.memberGatewayIds] + ); + + const availableGateways = useMemo( + () => allGateways?.filter((g) => !g.isV1 && !pool?.memberGatewayIds.includes(g.id)) ?? [], + [allGateways, pool?.memberGatewayIds] + ); + + const handleAdd = async (gatewayId: string) => { + if (!pool) return; + try { + await addGateway.mutateAsync({ poolId: pool.id, gatewayId }); + createNotification({ type: "success", text: "Gateway added to pool" }); + } catch (err: unknown) { + const message = err instanceof Error ? err.message : "Failed to add gateway"; + createNotification({ type: "error", text: message }); + } + }; + + const handleRemove = async () => { + if (!pool) return; + const gwData = popUp.removeGateway.data as { id: string; name: string } | undefined; + if (!gwData) return; + try { + await removeGateway.mutateAsync({ poolId: pool.id, gatewayId: gwData.id }); + handlePopUpToggle("removeGateway", false); + createNotification({ type: "success", text: `Removed "${gwData.name}" from pool` }); + } catch (err: unknown) { + const message = err instanceof Error ? err.message : "Failed to remove gateway"; + createNotification({ type: "error", text: message }); + } + }; + + const handleHealthCheck = async (gatewayId: string) => { + try { + await triggerHealthCheck.mutateAsync(gatewayId); + createNotification({ type: "success", text: "Health check successful" }); + } catch { + createNotification({ type: "error", text: "Health check failed - gateway is unreachable" }); + } + }; + + if (!pool) return null; + + const createdDate = new Date(pool.createdAt).toLocaleDateString("en-US", { + year: "numeric", + month: "numeric", + day: "numeric" + }); + + return ( + + + + {pool.name} + + +
+
+
Health
+
+ +
+
+
+
+
Total Gateways
+
{pool.memberCount}
+
+
+
+
Created
+
{createdDate}
+
+
+ +
+
+

Member Gateways

+ + {(isAllowed: boolean) => { + const isDisabled = !isAllowed || availableGateways.length === 0; + return ( + + + + + + + + + No gateways available. + + {availableGateways.map((gw) => ( + handleAdd(gw.id)} + > + {gw.name} + + ))} + + + + + + ); + }} + +
+ + + + + Name + Status + + + + + {memberGateways.length === 0 && ( + + + No gateways in this pool + + + )} + {memberGateways.map((gw) => { + const isHealthy = + "lastHealthCheckStatus" in gw && + gw.lastHealthCheckStatus === GatewayHealthCheckStatus.Healthy; + const hasHeartbeat = + "heartbeat" in gw && + gw.heartbeat && + new Date(gw.heartbeat).getTime() > Date.now() - 60 * 60 * 1000; + const isOnline = hasHeartbeat && isHealthy; + + return ( + + +
+ {gw.name} + Gateway v{gw.isV1 ? "1" : "2"} +
+
+ + + {isOnline ? "Healthy" : "Unreachable"} + + + + + + + + + + + {!gw.isV1 && ( + handleHealthCheck(gw.id)}> + + Trigger health check + + )} + + handlePopUpOpen("removeGateway", { id: gw.id, name: gw.name }) + } + > + + Remove from pool + + + + +
+ ); + })} +
+
+
+ + handlePopUpToggle("removeGateway", open)} + deleteKey="confirm" + buttonText="Remove" + onDeleteApproved={handleRemove} + /> + + + ); +}; diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolHealthBadge.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolHealthBadge.tsx new file mode 100644 index 00000000000..792b600d6ca --- /dev/null +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolHealthBadge.tsx @@ -0,0 +1,18 @@ +import { TGatewayPool } from "@app/hooks/api/gateway-pools/types"; + +export const PoolHealthBadge = ({ pool }: { pool: TGatewayPool }) => { + if (pool.memberCount === 0) { + return No members; + } + let colorClass = "text-yellow-500"; + if (pool.healthyMemberCount === 0) { + colorClass = "text-red-400"; + } else if (pool.healthyMemberCount === pool.memberCount) { + colorClass = "text-green-500"; + } + return ( + + {pool.healthyMemberCount}/{pool.memberCount} healthy + + ); +}; From 88a28211579ad85067b595c1f968d7eea2414f93 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Thu, 16 Apr 2026 12:16:46 -0400 Subject: [PATCH 175/562] chore: lint auto-format --- backend/src/ee/services/gateway-pool/gateway-pool-service.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-service.ts b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts index def0cad7c64..a6660dc1b75 100644 --- a/backend/src/ee/services/gateway-pool/gateway-pool-service.ts +++ b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts @@ -33,10 +33,7 @@ type TGatewayPoolServiceFactoryDep = { gatewayV2Service: Pick; permissionService: TPermissionServiceFactory; licenseService: Pick; - identityKubernetesAuthDAL: Pick< - TIdentityKubernetesAuthDALFactory, - "findByGatewayPoolId" | "countByGatewayPoolId" - >; + identityKubernetesAuthDAL: Pick; }; export type TGatewayPoolServiceFactory = ReturnType; From f0f81c4fb58e2007a2a2b464dbc2bc1f1bf510c0 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Thu, 16 Apr 2026 12:25:22 -0400 Subject: [PATCH 176/562] fix: replace nested ternaries with if/else blocks --- .../identity-kubernetes-auth-service.ts | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts index d64ff1a329c..877caffba15 100644 --- a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts +++ b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts @@ -927,6 +927,16 @@ export const identityKubernetesAuthServiceFactory = ({ orgId: identityMembershipOrg.scopeOrgId }); + let resolvedGatewayId: string | null | undefined = null; + let resolvedGatewayV2Id: string | null | undefined = null; + if (!gatewayPoolId && gatewayId) { + if (isGatewayV1) { + resolvedGatewayId = gatewayId; + } else { + resolvedGatewayV2Id = gatewayId; + } + } + const identityKubernetesAuth = await identityKubernetesAuthDAL.transaction(async (tx) => { const doc = await identityKubernetesAuthDAL.create( { @@ -939,8 +949,8 @@ export const identityKubernetesAuthServiceFactory = ({ accessTokenMaxTTL, accessTokenTTL, accessTokenNumUsesLimit, - gatewayId: gatewayPoolId ? null : isGatewayV1 ? gatewayId : null, - gatewayV2Id: gatewayPoolId ? null : isGatewayV1 ? null : gatewayId, + gatewayId: resolvedGatewayId, + gatewayV2Id: resolvedGatewayV2Id, gatewayPoolId: gatewayPoolId ?? null, accessTokenTrustedIps: JSON.stringify(reformattedAccessTokenTrustedIps), encryptedKubernetesTokenReviewerJwt: tokenReviewerJwt @@ -1106,8 +1116,15 @@ export const identityKubernetesAuthServiceFactory = ({ // Strict check to see if gateway ID is undefined. It should update the gateway ID to null if its strictly set to null. const shouldUpdateGatewayId = Boolean(gatewayId !== undefined || gatewayPoolId !== undefined); - const gatewayIdValue = gatewayPoolId ? null : isGatewayV1 ? gatewayId : null; - const gatewayV2IdValue = gatewayPoolId ? null : isGatewayV1 ? null : gatewayId; + let gatewayIdValue: string | null | undefined = null; + let gatewayV2IdValue: string | null | undefined = null; + if (!gatewayPoolId && gatewayId) { + if (isGatewayV1) { + gatewayIdValue = gatewayId; + } else { + gatewayV2IdValue = gatewayId; + } + } const gatewayPoolIdValue = gatewayPoolId ?? (gatewayId !== undefined ? null : undefined); const effectiveTokenReviewMode = tokenReviewMode ?? identityKubernetesAuth.tokenReviewMode; From edc64da7e71e19b92af64f62e314bc81a45cb7eb Mon Sep 17 00:00:00 2001 From: bernie-g Date: Thu, 16 Apr 2026 13:45:00 -0400 Subject: [PATCH 177/562] fix: org-scoping, race conditions, pool limit, query invalidation - Add org-scoping check when attaching gateway pool to k8s auth - Wrap pool deletion count+delete in transaction to prevent race condition - Add MAX_GATEWAY_POOLS_PER_ORG=50 limit with advisory lock - Add orgId parameter to findByIdWithMembers DAL method - Fix useAddIdentityKubernetesAuth invalidating wrong query key --- .../services/gateway-pool/gateway-pool-dal.ts | 21 +++++- .../gateway-pool/gateway-pool-service.ts | 69 ++++++++++++------- backend/src/keystore/keystore.ts | 1 + backend/src/server/routes/index.ts | 3 +- .../identity-kubernetes-auth-service.ts | 18 ++++- .../src/hooks/api/identities/mutations.tsx | 5 +- 6 files changed, 86 insertions(+), 31 deletions(-) diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-dal.ts b/backend/src/ee/services/gateway-pool/gateway-pool-dal.ts index 397d3e0ddaf..118b2942936 100644 --- a/backend/src/ee/services/gateway-pool/gateway-pool-dal.ts +++ b/backend/src/ee/services/gateway-pool/gateway-pool-dal.ts @@ -1,3 +1,5 @@ +import { Knex } from "knex"; + import { TDbClient } from "@app/db"; import { TableName } from "@app/db/schemas"; import { DatabaseError } from "@app/lib/errors"; @@ -52,9 +54,13 @@ export const gatewayPoolDalFactory = (db: TDbClient) => { } }; - const findByIdWithMembers = async (poolId: string) => { + const findByIdWithMembers = async (poolId: string, orgId: string) => { try { - const pool = await db.replicaNode()(TableName.GatewayPool).where(`${TableName.GatewayPool}.id`, poolId).first(); + const pool = await db + .replicaNode()(TableName.GatewayPool) + .where(`${TableName.GatewayPool}.id`, poolId) + .where(`${TableName.GatewayPool}.orgId`, orgId) + .first(); if (!pool) return null; @@ -75,5 +81,14 @@ export const gatewayPoolDalFactory = (db: TDbClient) => { } }; - return { ...orm, findByOrgIdWithDetails, findByIdWithMembers }; + const countByOrgId = async (orgId: string, tx?: Knex) => { + try { + const result = await (tx || db.replicaNode())(TableName.GatewayPool).where({ orgId }).count("id").first(); + return parseInt(String(result?.count || "0"), 10); + } catch (error) { + throw new DatabaseError({ error, name: `${TableName.GatewayPool}: CountByOrgId` }); + } + }; + + return { ...orm, findByOrgIdWithDetails, findByIdWithMembers, countByOrgId }; }; diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-service.ts b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts index a6660dc1b75..23fdfbfd47c 100644 --- a/backend/src/ee/services/gateway-pool/gateway-pool-service.ts +++ b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts @@ -1,10 +1,14 @@ import { ForbiddenError } from "@casl/ability"; import { OrganizationActionScope } from "@app/db/schemas"; +import { PgSqlLock } from "@app/keystore/keystore"; import { DatabaseErrorCode } from "@app/lib/error-codes"; import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; import { logger } from "@app/lib/logger"; import { OrgServiceActor } from "@app/lib/types"; + +// Temporary limit until pool limiting is implemented at the plan level +const MAX_GATEWAY_POOLS_PER_ORG = 50; import { TIdentityKubernetesAuthDALFactory } from "@app/services/identity-kubernetes-auth/identity-kubernetes-auth-dal"; import { TGatewayV2DALFactory } from "../gateway-v2/gateway-v2-dal"; @@ -72,21 +76,32 @@ export const gatewayPoolServiceFactory = ({ await $checkPermission(actor, OrgPermissionGatewayPoolActions.CreateGatewayPools); await $checkLicense(actor.orgId); - try { - const pool = await gatewayPoolDAL.create({ - orgId: actor.orgId, - name - }); - return pool; - } catch (error) { - if ( - error instanceof DatabaseError && - (error as DatabaseError & { code?: string }).code === DatabaseErrorCode.UniqueViolation - ) { - throw new BadRequestError({ message: `A gateway pool named "${name}" already exists in this organization.` }); + const pool = await gatewayPoolDAL.transaction(async (tx) => { + await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.CreateGatewayPool(actor.orgId)]); + + const existingCount = await gatewayPoolDAL.countByOrgId(actor.orgId, tx); + if (existingCount >= MAX_GATEWAY_POOLS_PER_ORG) { + throw new BadRequestError({ + message: `Organization has reached the maximum limit of ${MAX_GATEWAY_POOLS_PER_ORG} gateway pools` + }); } - throw error; - } + + try { + return await gatewayPoolDAL.create({ orgId: actor.orgId, name }, tx); + } catch (error) { + if ( + error instanceof DatabaseError && + (error as DatabaseError & { code?: string }).code === DatabaseErrorCode.UniqueViolation + ) { + throw new BadRequestError({ + message: `A gateway pool named "${name}" already exists in this organization.` + }); + } + throw error; + } + }); + + return pool; }; const listGatewayPools = async (actor: TListGatewayPoolsDTO) => { @@ -110,8 +125,8 @@ export const gatewayPoolServiceFactory = ({ await $checkPermission(actor, OrgPermissionGatewayPoolActions.ListGatewayPools); await $checkLicense(actor.orgId); - const pool = await gatewayPoolDAL.findByIdWithMembers(poolId); - if (!pool || pool.orgId !== actor.orgId) { + const pool = await gatewayPoolDAL.findByIdWithMembers(poolId, actor.orgId); + if (!pool) { throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); } @@ -152,16 +167,20 @@ export const gatewayPoolServiceFactory = ({ throw new NotFoundError({ message: `Gateway pool with ID ${poolId} not found` }); } - // Check for referencing consumer configs (add more DAL counts here as pool support expands) - const k8sAuthCount = await identityKubernetesAuthDAL.countByGatewayPoolId(poolId); - const totalReferences = k8sAuthCount; - if (totalReferences > 0) { - throw new BadRequestError({ - message: `Cannot delete pool "${existingPool.name}" because it is referenced by ${totalReferences} consumer configuration(s). Remove the pool reference from those configs first.` - }); - } + await gatewayPoolDAL.transaction(async (tx) => { + // Check for referencing consumer configs inside transaction to prevent race conditions + // Add more DAL counts here as pool support expands + const k8sAuthCount = await identityKubernetesAuthDAL.countByGatewayPoolId(poolId, tx); + const totalReferences = k8sAuthCount; + if (totalReferences > 0) { + throw new BadRequestError({ + message: `Cannot delete pool "${existingPool.name}" because it is referenced by ${totalReferences} consumer configuration(s). Remove the pool reference from those configs first.` + }); + } + + await gatewayPoolDAL.deleteById(poolId, tx); + }); - await gatewayPoolDAL.deleteById(poolId); return existingPool; }; diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index a640b1dddea..de08aecbc21 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -32,6 +32,7 @@ export const PgSqlLock = { PamResourceSshCaInit: (resourceId: string) => pgAdvisoryLockHashText(`pam-resource-ssh-ca-init:${resourceId}`), CreateIdentity: (orgId: string) => pgAdvisoryLockHashText(`create-identity:${orgId}`), CreateGateway: (orgId: string) => pgAdvisoryLockHashText(`create-gateway:${orgId}`), + CreateGatewayPool: (orgId: string) => pgAdvisoryLockHashText(`create-gateway-pool:${orgId}`), AccessSharedSecret: (sharedSecretId: string) => pgAdvisoryLockHashText(`access-shared-secret:${sharedSecretId}`), KmsOrgKeyCreation: (orgId: string) => pgAdvisoryLockHashText(`kms-org-key:${orgId}`), KmsOrgDataKeyCreation: (orgId: string) => pgAdvisoryLockHashText(`kms-org-data-key:${orgId}`), diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 072310fcaab..99eb7080463 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -1973,7 +1973,8 @@ export const registerRoutes = async ( gatewayDAL, kmsService, membershipIdentityDAL, - gatewayPoolService + gatewayPoolService, + gatewayPoolDAL }); const identityGcpAuthService = identityGcpAuthServiceFactory({ identityDAL, diff --git a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts index 877caffba15..73e902cfa5d 100644 --- a/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts +++ b/backend/src/services/identity-kubernetes-auth/identity-kubernetes-auth-service.ts @@ -14,6 +14,7 @@ import { } from "@app/db/schemas"; import { TGatewayDALFactory } from "@app/ee/services/gateway/gateway-dal"; import { TGatewayServiceFactory } from "@app/ee/services/gateway/gateway-service"; +import { TGatewayPoolDALFactory } from "@app/ee/services/gateway-pool/gateway-pool-dal"; import { TGatewayPoolServiceFactory } from "@app/ee/services/gateway-pool/gateway-pool-service"; import { TGatewayV2DALFactory } from "@app/ee/services/gateway-v2/gateway-v2-dal"; import { TGatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2-service"; @@ -89,7 +90,11 @@ type TIdentityKubernetesAuthServiceFactoryDep = { gatewayV2Service: TGatewayV2ServiceFactory; gatewayDAL: Pick; gatewayV2DAL: Pick; - gatewayPoolService: Pick; + gatewayPoolService: Pick< + TGatewayPoolServiceFactory, + "getPlatformConnectionDetailsByPoolId" | "pickRandomHealthyGateway" + >; + gatewayPoolDAL: Pick; orgDAL: Pick; }; @@ -110,6 +115,7 @@ export const identityKubernetesAuthServiceFactory = ({ gatewayV2DAL, kmsService, gatewayPoolService, + gatewayPoolDAL, orgDAL }: TIdentityKubernetesAuthServiceFactoryDep) => { const $gatewayProxyWrapper = async ( @@ -889,6 +895,11 @@ export const identityKubernetesAuthServiceFactory = ({ OrgPermissionSubjects.GatewayPool ); + const pool = await gatewayPoolDAL.findById(gatewayPoolId); + if (!pool || pool.orgId !== identityMembershipOrg.scopeOrgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${gatewayPoolId} not found` }); + } + // Validate connectivity through a random healthy pool member const validationGateway = await gatewayPoolService.pickRandomHealthyGateway(gatewayPoolId); if (tokenReviewMode === IdentityKubernetesAuthTokenReviewMode.Gateway) { @@ -1112,6 +1123,11 @@ export const identityKubernetesAuthServiceFactory = ({ OrgPermissionGatewayPoolActions.AttachGatewayPools, OrgPermissionSubjects.GatewayPool ); + + const pool = await gatewayPoolDAL.findById(gatewayPoolId); + if (!pool || pool.orgId !== identityMembershipOrg.scopeOrgId) { + throw new NotFoundError({ message: `Gateway pool with ID ${gatewayPoolId} not found` }); + } } // Strict check to see if gateway ID is undefined. It should update the gateway ID to null if its strictly set to null. diff --git a/frontend/src/hooks/api/identities/mutations.tsx b/frontend/src/hooks/api/identities/mutations.tsx index 8e475e61f7c..f815823da28 100644 --- a/frontend/src/hooks/api/identities/mutations.tsx +++ b/frontend/src/hooks/api/identities/mutations.tsx @@ -1456,7 +1456,10 @@ export const useAddIdentityKubernetesAuth = () => { }); } queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityById(identityId) }); - queryClient.invalidateQueries({ queryKey: identitiesKeys.getIdentityAzureAuth(identityId) }); + queryClient.invalidateQueries({ + queryKey: identitiesKeys.getIdentityKubernetesAuth(identityId) + }); + queryClient.invalidateQueries({ queryKey: gatewayPoolsKeys.allKey() }); } }); }; From 25dca914dd0911d879aef690060b44ea8934542e Mon Sep 17 00:00:00 2001 From: bernie-g Date: Thu, 16 Apr 2026 14:51:22 -0400 Subject: [PATCH 178/562] fix: add gatewayPool to license defaults and mock, remove pool limit - Add gatewayPool: false to getDefaultOnPremFeatures free-tier defaults - Add gatewayPool: false to test mock license-fns - Remove MAX_GATEWAY_POOLS_PER_ORG limit and advisory lock --- .../gateway-pool/gateway-pool-service.ts | 41 +++++++------------ .../services/license/__mocks__/license-fns.ts | 3 +- .../src/ee/services/license/license-fns.ts | 1 + 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/backend/src/ee/services/gateway-pool/gateway-pool-service.ts b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts index 23fdfbfd47c..7d2ce85c120 100644 --- a/backend/src/ee/services/gateway-pool/gateway-pool-service.ts +++ b/backend/src/ee/services/gateway-pool/gateway-pool-service.ts @@ -1,14 +1,10 @@ import { ForbiddenError } from "@casl/ability"; import { OrganizationActionScope } from "@app/db/schemas"; -import { PgSqlLock } from "@app/keystore/keystore"; import { DatabaseErrorCode } from "@app/lib/error-codes"; import { BadRequestError, DatabaseError, NotFoundError } from "@app/lib/errors"; import { logger } from "@app/lib/logger"; import { OrgServiceActor } from "@app/lib/types"; - -// Temporary limit until pool limiting is implemented at the plan level -const MAX_GATEWAY_POOLS_PER_ORG = 50; import { TIdentityKubernetesAuthDALFactory } from "@app/services/identity-kubernetes-auth/identity-kubernetes-auth-dal"; import { TGatewayV2DALFactory } from "../gateway-v2/gateway-v2-dal"; @@ -76,32 +72,23 @@ export const gatewayPoolServiceFactory = ({ await $checkPermission(actor, OrgPermissionGatewayPoolActions.CreateGatewayPools); await $checkLicense(actor.orgId); - const pool = await gatewayPoolDAL.transaction(async (tx) => { - await tx.raw("SELECT pg_advisory_xact_lock(?)", [PgSqlLock.CreateGatewayPool(actor.orgId)]); - - const existingCount = await gatewayPoolDAL.countByOrgId(actor.orgId, tx); - if (existingCount >= MAX_GATEWAY_POOLS_PER_ORG) { + try { + const pool = await gatewayPoolDAL.create({ + orgId: actor.orgId, + name + }); + return pool; + } catch (error) { + if ( + error instanceof DatabaseError && + (error as DatabaseError & { code?: string }).code === DatabaseErrorCode.UniqueViolation + ) { throw new BadRequestError({ - message: `Organization has reached the maximum limit of ${MAX_GATEWAY_POOLS_PER_ORG} gateway pools` + message: `A gateway pool named "${name}" already exists in this organization.` }); } - - try { - return await gatewayPoolDAL.create({ orgId: actor.orgId, name }, tx); - } catch (error) { - if ( - error instanceof DatabaseError && - (error as DatabaseError & { code?: string }).code === DatabaseErrorCode.UniqueViolation - ) { - throw new BadRequestError({ - message: `A gateway pool named "${name}" already exists in this organization.` - }); - } - throw error; - } - }); - - return pool; + throw error; + } }; const listGatewayPools = async (actor: TListGatewayPoolsDTO) => { diff --git a/backend/src/ee/services/license/__mocks__/license-fns.ts b/backend/src/ee/services/license/__mocks__/license-fns.ts index 7ea2ab6c1b1..e0553daea05 100644 --- a/backend/src/ee/services/license/__mocks__/license-fns.ts +++ b/backend/src/ee/services/license/__mocks__/license-fns.ts @@ -36,7 +36,8 @@ export const getDefaultOnPremFeatures = () => { enterpriseAppConnections: true, machineIdentityAuthTemplates: false, pkiLegacyTemplates: false, - emailDomainVerification: true + emailDomainVerification: true, + gatewayPool: false }; }; diff --git a/backend/src/ee/services/license/license-fns.ts b/backend/src/ee/services/license/license-fns.ts index b75ef22b5ee..15e350d2de2 100644 --- a/backend/src/ee/services/license/license-fns.ts +++ b/backend/src/ee/services/license/license-fns.ts @@ -105,6 +105,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({ projectTemplates: false, kmip: false, gateway: false, + gatewayPool: false, sshHostGroups: false, secretScanning: false, enterpriseSecretSyncs: false, From 48d39d81b881ac91f30b6e649fd9b2e1f0d19f97 Mon Sep 17 00:00:00 2001 From: bernie-g Date: Thu, 16 Apr 2026 15:16:06 -0400 Subject: [PATCH 179/562] fix: slug validation, name uniqueness check, popover close on select - Use slugSchema for pool names (max 32, lowercase alphanumeric + hyphens) - Match gateway form pattern: manual state + safeParse on submit - Add client-side name uniqueness check before API call - Close Add Gateway popover after selecting a gateway - Update migration column width to match slug max length --- .../20260414000001_add-gateway-pools.ts | 2 +- .../src/ee/routes/v2/gateway-pool-router.ts | 5 +- .../components/CreateGatewayPoolModal.tsx | 108 +++++++++++------- .../components/EditGatewayPoolModal.tsx | 96 +++++++++------- .../GatewayTab/components/PoolDetailSheet.tsx | 10 +- 5 files changed, 133 insertions(+), 88 deletions(-) diff --git a/backend/src/db/migrations/20260414000001_add-gateway-pools.ts b/backend/src/db/migrations/20260414000001_add-gateway-pools.ts index fa4205dc997..ad9ced4acd6 100644 --- a/backend/src/db/migrations/20260414000001_add-gateway-pools.ts +++ b/backend/src/db/migrations/20260414000001_add-gateway-pools.ts @@ -10,7 +10,7 @@ export async function up(knex: Knex): Promise { t.uuid("id", { primaryKey: true }).defaultTo(knex.fn.uuid()); t.uuid("orgId").notNullable(); t.foreign("orgId").references("id").inTable(TableName.Organization).onDelete("CASCADE"); - t.string("name", 255).notNullable(); + t.string("name", 32).notNullable(); t.timestamps(true, true, true); t.unique(["orgId", "name"]); }); diff --git a/backend/src/ee/routes/v2/gateway-pool-router.ts b/backend/src/ee/routes/v2/gateway-pool-router.ts index ebe688b0200..0382acf73fe 100644 --- a/backend/src/ee/routes/v2/gateway-pool-router.ts +++ b/backend/src/ee/routes/v2/gateway-pool-router.ts @@ -3,6 +3,7 @@ import z from "zod"; import { GatewayPoolMembershipsSchema, GatewayPoolsSchema, GatewaysV2Schema } from "@app/db/schemas"; import { EventType } from "@app/ee/services/audit-log/audit-log-types"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; +import { slugSchema } from "@app/server/lib/schemas"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { AuthMode } from "@app/services/auth/auth-type"; @@ -29,7 +30,7 @@ export const registerGatewayPoolRouter = async (server: FastifyZodProvider) => { schema: { operationId: "createGatewayPool", body: z.object({ - name: z.string().min(1).max(255).describe("Name for the gateway pool") + name: slugSchema({ min: 1, max: 32, field: "name" }).describe("Name for the gateway pool") }), response: { 200: SanitizedGatewayPoolSchema @@ -118,7 +119,7 @@ export const registerGatewayPoolRouter = async (server: FastifyZodProvider) => { poolId: z.string().uuid() }), body: z.object({ - name: z.string().min(1).max(255).optional().describe("New name for the pool") + name: slugSchema({ min: 1, max: 32, field: "name" }).optional().describe("New name for the pool") }), response: { 200: SanitizedGatewayPoolSchema diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx index 8fdb8801481..19a1352aaa0 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/CreateGatewayPoolModal.tsx @@ -1,17 +1,15 @@ -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; +import { useMemo, useState } from "react"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2"; -import { useCreateGatewayPool } from "@app/hooks/api/gateway-pools"; +import { useCreateGatewayPool, useListGatewayPools } from "@app/hooks/api/gateway-pools"; +import { slugSchema } from "@app/lib/schemas"; -const schema = z.object({ - name: z.string().min(1, "Name is required").max(255) +const formSchema = z.object({ + name: slugSchema({ field: "name" }) }); -type FormData = z.infer; - type Props = { isOpen: boolean; onToggle: (isOpen: boolean) => void; @@ -19,24 +17,40 @@ type Props = { export const CreateGatewayPoolModal = ({ isOpen, onToggle }: Props) => { const createPool = useCreateGatewayPool(); + const { data: pools } = useListGatewayPools(); + const [name, setName] = useState(""); + const [formErrors, setFormErrors] = useState([]); - const { - register, - handleSubmit, - reset, - formState: { errors, isSubmitting } - } = useForm({ - resolver: zodResolver(schema), - defaultValues: { name: "" } - }); + const errors = useMemo(() => { + const errorMap: Record = {}; + formErrors.forEach((issue) => { + if (issue.path.length > 0) errorMap[String(issue.path[0])] = issue.message; + }); + return errorMap; + }, [formErrors]); - const onSubmit = async (data: FormData) => { - try { - await createPool.mutateAsync({ - name: data.name + const handleSubmit = async () => { + setFormErrors([]); + const validation = formSchema.safeParse({ name }); + if (!validation.success) { + setFormErrors(validation.error.issues); + return; + } + + const existingNames = pools?.map((p) => p.name) || []; + if (existingNames.includes(name.trim())) { + createNotification({ + type: "error", + text: "A gateway pool with this name already exists." }); - createNotification({ type: "success", text: `Pool "${data.name}" created` }); - reset(); + return; + } + + try { + await createPool.mutateAsync({ name }); + createNotification({ type: "success", text: `Pool "${name}" created` }); + setName(""); + setFormErrors([]); onToggle(false); } catch (err: unknown) { const message = err instanceof Error ? err.message : "Failed to create pool"; @@ -45,26 +59,38 @@ export const CreateGatewayPoolModal = ({ isOpen, onToggle }: Props) => { }; return ( - + { + if (!open) { + setName(""); + setFormErrors([]); + } + onToggle(open); + }} + > -
- - - -
- - -
-
+ + setName(e.target.value)} + placeholder="Enter gateway pool name" + autoFocus + /> + +
+ + +
); diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx index 2a16a6dd5c9..4addba0d694 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/EditGatewayPoolModal.tsx @@ -1,19 +1,16 @@ -import { useEffect } from "react"; -import { useForm } from "react-hook-form"; -import { zodResolver } from "@hookform/resolvers/zod"; +import { useEffect, useMemo, useState } from "react"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2"; -import { useUpdateGatewayPool } from "@app/hooks/api/gateway-pools"; +import { useListGatewayPools, useUpdateGatewayPool } from "@app/hooks/api/gateway-pools"; import { TGatewayPool } from "@app/hooks/api/gateway-pools/types"; +import { slugSchema } from "@app/lib/schemas"; -const schema = z.object({ - name: z.string().min(1, "Name is required").max(255) +const formSchema = z.object({ + name: slugSchema({ field: "name" }) }); -type FormData = z.infer; - type Props = { isOpen: boolean; onToggle: (isOpen: boolean) => void; @@ -22,29 +19,45 @@ type Props = { export const EditGatewayPoolModal = ({ isOpen, onToggle, pool }: Props) => { const updatePool = useUpdateGatewayPool(); + const { data: pools } = useListGatewayPools(); + const [name, setName] = useState(""); + const [formErrors, setFormErrors] = useState([]); - const { - register, - handleSubmit, - reset, - formState: { errors, isSubmitting } - } = useForm({ - resolver: zodResolver(schema) - }); + const errors = useMemo(() => { + const errorMap: Record = {}; + formErrors.forEach((issue) => { + if (issue.path.length > 0) errorMap[String(issue.path[0])] = issue.message; + }); + return errorMap; + }, [formErrors]); useEffect(() => { if (pool) { - reset({ name: pool.name }); + setName(pool.name); + setFormErrors([]); } - }, [pool, reset]); + }, [pool]); - const onSubmit = async (data: FormData) => { + const handleSubmit = async () => { if (!pool) return; - try { - await updatePool.mutateAsync({ - poolId: pool.id, - name: data.name + setFormErrors([]); + const validation = formSchema.safeParse({ name }); + if (!validation.success) { + setFormErrors(validation.error.issues); + return; + } + + const existingNames = pools?.filter((p) => p.id !== pool.id).map((p) => p.name) || []; + if (existingNames.includes(name.trim())) { + createNotification({ + type: "error", + text: "A gateway pool with this name already exists." }); + return; + } + + try { + await updatePool.mutateAsync({ poolId: pool.id, name }); createNotification({ type: "success", text: "Pool updated" }); onToggle(false); } catch (err: unknown) { @@ -56,24 +69,25 @@ export const EditGatewayPoolModal = ({ isOpen, onToggle, pool }: Props) => { return ( -
- - - -
- - -
-
+ + setName(e.target.value)} + /> + +
+ + +
); diff --git a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx index 1a2d04b1ae3..d425a75a720 100644 --- a/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx +++ b/frontend/src/pages/organization/NetworkingPage/components/GatewayTab/components/PoolDetailSheet.tsx @@ -1,4 +1,4 @@ -import { useMemo } from "react"; +import { useMemo, useState } from "react"; import { faEllipsisV, faHeartPulse, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useQuery } from "@tanstack/react-query"; @@ -59,6 +59,7 @@ export const PoolDetailSheet = ({ isOpen, onOpenChange, pool }: Props) => { const addGateway = useAddGatewayToPool(); const removeGateway = useRemoveGatewayFromPool(); const triggerHealthCheck = useTriggerGatewayV2Heartbeat(); + const [isAddGatewayOpen, setIsAddGatewayOpen] = useState(false); const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["removeGateway"] as const); @@ -150,7 +151,7 @@ export const PoolDetailSheet = ({ isOpen, onOpenChange, pool }: Props) => { {(isAllowed: boolean) => { const isDisabled = !isAllowed || availableGateways.length === 0; return ( - +
+ ); + } + + if (appliedValue.type === DateRangeFilterType.Fixed) { + return ( + + ); + } + + return ( + + ); + }; + + return ( + + {renderTrigger()} + + +
+ {/* Body */} +
+ {/* Left sidebar */} +
+ {[DateRangeFilterType.Last, DateRangeFilterType.Fixed].map((m) => ( + + ))} +
+ + {/* Right content */} +
+ {mode === DateRangeFilterType.Last && ( +
+ + Quick ranges + +
+ {SECONDARY_PRESETS.map(({ value: val, label }) => { + const parsed = parseLastValue(val); + const isPresetActive = + parsed && customDuration === parsed.duration && customUnit === parsed.unit; + return ( + + ); + })} +
+ + + Custom + +
+ { + const val = e.target.value; + if (val === "" || /^[1-9]\d*$/.test(val)) { + setCustomDuration(val); + } + }} + /> + +
+ +
+ {selectedCustomUnit?.values.map((val) => { + const isChipActive = customDuration === String(val); + return ( + + ); + })} +
+
+ )} + + {mode === DateRangeFilterType.Fixed && ( +
+ {/* Calendar */} + { + // If a complete range (with distinct start/end) is already selected, restart from the clicked date + if ( + pendingRange?.from && + pendingRange?.to && + pendingRange.from.getTime() !== pendingRange.to.getTime() + ) { + setPendingRange({ from: selectedDay, to: undefined }); + return; + } + setPendingRange(range); + }} + numberOfMonths={2} + showOutsideDays={false} + captionLayout="dropdown" + disabled={[ + { after: today }, + { before: addDays(subMonths(today, MAX_RANGE_MONTHS), 1) } + ]} + defaultMonth={calendarDefaultMonth} + startMonth={addDays(subMonths(today, MAX_RANGE_MONTHS), 1)} + endMonth={today} + className="p-0" + classNames={{ + range_start: + "rounded-l-(--cell-radius) bg-muted/[12%] relative after:bg-muted/[12%] after:absolute after:inset-y-0 after:w-4 after:right-0 z-0 isolate", + range_end: + "rounded-r-(--cell-radius) bg-muted/[12%] relative after:bg-muted/[12%] after:absolute after:inset-y-0 after:w-4 after:left-0 z-0 isolate", + range_middle: "rounded-none" + }} + components={{ + DayButton + }} + /> + + {/* Time inputs */} +
+
+
+ Start Time + setStartTime(e.target.value)} + className="h-9 w-full text-sm scheme-dark [&::-webkit-calendar-picker-indicator]:hidden" + /> +
+ +
+ End Time + setEndTime(e.target.value)} + className="h-9 w-full text-sm scheme-dark [&::-webkit-calendar-picker-indicator]:hidden" + /> +
+
+ {isInvalidFixedRange && ( +

Start date must be before end date.

+ )} +
+
+ )} +
+
+ + {/* Footer */} +
+ {mode === DateRangeFilterType.Fixed ? ( +
+ + Local + + + {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */} + +
+ ) : ( +
+ )} +
+ + +
+
+
+ + + ); +} diff --git a/frontend/src/components/v3/generic/DateRangeFilter/DateRangeQuickPresets.tsx b/frontend/src/components/v3/generic/DateRangeFilter/DateRangeQuickPresets.tsx new file mode 100644 index 00000000000..e676da35436 --- /dev/null +++ b/frontend/src/components/v3/generic/DateRangeFilter/DateRangeQuickPresets.tsx @@ -0,0 +1,84 @@ +import { cn } from "@app/components/v3/utils"; + +import { Button } from "../Button"; +import type { DateRangeFilterAccent, DateRangeFilterResult } from "./DateRangeFilter"; +import { ACCENT_STYLES } from "./DateRangeFilter"; + +export type QuickPreset = { + label: string; + value: string; + resolve: () => { startDate: Date; endDate: Date }; +}; + +export const DEFAULT_QUICK_PRESETS: QuickPreset[] = [ + { + label: "5m", + value: "5m", + resolve: () => ({ startDate: new Date(Date.now() - 5 * 60 * 1000), endDate: new Date() }) + }, + { + label: "30m", + value: "30m", + resolve: () => ({ startDate: new Date(Date.now() - 30 * 60 * 1000), endDate: new Date() }) + }, + { + label: "1h", + value: "1h", + resolve: () => ({ startDate: new Date(Date.now() - 60 * 60 * 1000), endDate: new Date() }) + }, + { + label: "3h", + value: "3h", + resolve: () => ({ startDate: new Date(Date.now() - 3 * 60 * 60 * 1000), endDate: new Date() }) + }, + { + label: "12h", + value: "12h", + resolve: () => ({ + startDate: new Date(Date.now() - 12 * 60 * 60 * 1000), + endDate: new Date() + }) + } +]; + +type Props = { + value?: string; + onChange: (presetValue: string, result: DateRangeFilterResult) => void; + presets?: QuickPreset[]; + isUtc?: boolean; + accent?: DateRangeFilterAccent; + className?: string; +}; + +export function DateRangeQuickPresets({ + value, + onChange, + presets = DEFAULT_QUICK_PRESETS, + isUtc = false, + accent = "primary", + className +}: Props) { + const accentStyles = ACCENT_STYLES[accent]; + + return ( + <> + {presets.map((preset) => { + const isActive = value === preset.value; + return ( + + ); + })} + + ); +} diff --git a/frontend/src/components/v3/generic/DateRangeFilter/index.ts b/frontend/src/components/v3/generic/DateRangeFilter/index.ts new file mode 100644 index 00000000000..a3c9bd147af --- /dev/null +++ b/frontend/src/components/v3/generic/DateRangeFilter/index.ts @@ -0,0 +1,2 @@ +export * from "./DateRangeFilter"; +export * from "./DateRangeQuickPresets"; diff --git a/frontend/src/components/v3/generic/index.ts b/frontend/src/components/v3/generic/index.ts index 180111b3836..34e5e445cbe 100644 --- a/frontend/src/components/v3/generic/index.ts +++ b/frontend/src/components/v3/generic/index.ts @@ -10,6 +10,7 @@ export * from "./Card"; export * from "./Checkbox"; export * from "./Command"; export * from "./DataGrid"; +export * from "./DateRangeFilter"; export * from "./Detail"; export * from "./Dialog"; export * from "./Dropdown"; diff --git a/frontend/src/pages/organization/AuditLogsPage/components/LogsDateFilter.tsx b/frontend/src/pages/organization/AuditLogsPage/components/LogsDateFilter.tsx deleted file mode 100644 index 3407043a2f8..00000000000 --- a/frontend/src/pages/organization/AuditLogsPage/components/LogsDateFilter.tsx +++ /dev/null @@ -1,342 +0,0 @@ -import { useState } from "react"; -import { Controller, useForm } from "react-hook-form"; -import { faCalendar, faChevronRight } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { zodResolver } from "@hookform/resolvers/zod"; -import ms from "ms"; -import { twMerge } from "tailwind-merge"; - -import { - Button, - DatePicker, - DropdownMenu, - DropdownMenuContent, - DropdownMenuTrigger, - FormControl, - Input, - Select, - SelectItem -} from "@app/components/v2"; -import { formatDateTime, Timezone } from "@app/helpers/datetime"; - -import { - auditLogDateFilterFormSchema, - AuditLogDateFilterType, - TAuditLogDateFilterFormData -} from "./types"; - -type Props = { - setFilter: (data: TAuditLogDateFilterFormData) => void; - filter: TAuditLogDateFilterFormData; - setTimezone: (timezone: Timezone) => void; - timezone: Timezone; -}; -const RELATIVE_VALUES = ["5m", "30m", "1h", "3h", "12h"]; - -const RELATIVE_OPTIONS = [ - { label: "Minutes", unit: "m", values: [5, 10, 15, 30, 45] }, - { label: "Hours", unit: "h", values: [1, 2, 3, 6, 8, 12] }, - { label: "Days", unit: "d", values: [1, 2, 3, 4, 5, 6] }, - { label: "Weeks", unit: "w", values: [1, 2, 3, 4] } -]; - -export const LogsDateFilter = ({ setFilter, filter, timezone, setTimezone }: Props) => { - const [isStartDatePickerOpen, setIsStartDatePickerOpen] = useState(false); - const [isEndDatePickerOpen, setIsEndDatePickerOpen] = useState(false); - const [isPopupOpen, setIsPopOpen] = useState(false); - - const { control, watch, handleSubmit, formState } = useForm({ - resolver: zodResolver(auditLogDateFilterFormSchema), - values: filter - }); - const selectType = watch("type"); - const isCustomRelative = - filter.type === AuditLogDateFilterType.Relative && - !RELATIVE_VALUES.includes(filter.relativeModeValue || ""); - - const onSubmit = (data: TAuditLogDateFilterFormData) => { - const endDate = data.type === AuditLogDateFilterType.Relative ? new Date() : data.endDate; - const startDate = - data.type === AuditLogDateFilterType.Relative && data.relativeModeValue - ? new Date(Number(new Date()) - ms(data.relativeModeValue)) - : data.startDate; - setFilter({ - ...data, - startDate, - endDate - }); - setIsPopOpen(false); - }; - - return ( - <> - setIsPopOpen(el)}> -
- {filter.type === AuditLogDateFilterType.Relative ? ( - <> - {RELATIVE_VALUES.map((el) => ( - - ))} - - ) : ( -
-
- {formatDateTime({ - timezone, - timestamp: filter.startDate, - dateFormat: "yyyy/MM/dd HH:mm" - })} -
-
- -
-
- {formatDateTime({ - timezone, - timestamp: filter.endDate, - dateFormat: "yyyy/MM/dd HH:mm" - })} -
-
- )} - - - -
- -
- ( -
- - -
- )} - /> - {selectType === AuditLogDateFilterType.Relative && ( - { - const duration = field.value?.substring(0, field.value.length - 1); - const unitOfTime = field.value?.at(-1); - return ( -
- {RELATIVE_OPTIONS.map(({ label, unit, values }) => ( -
-
{label}
- {values.map((v) => { - const value = `${v}${unit}`; - return ( - - ); - })} -
- ))} -
-
- - { - const durationVal = val.target.value - ? Number(val.target.value) - : undefined; - field.onChange(`${durationVal}${unitOfTime}`); - }} - max={60} - min={1} - /> - - - - -
- {error && ( - - {error.message} - - )} -
-
- ); - }} - /> - )} - {selectType === AuditLogDateFilterType.Absolute && ( -
- { - return ( - - - - ); - }} - /> - - { - return ( - - - - ); - }} - /> -
- )} -
- -
- -
-
- - - ); -}; diff --git a/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx b/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx index 533f9776bef..bc2a6f5d5ce 100644 --- a/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx +++ b/frontend/src/pages/organization/AuditLogsPage/components/LogsSection.tsx @@ -1,11 +1,15 @@ import { useEffect, useMemo, useState } from "react"; -import ms from "ms"; import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; import { + DateRangeFilter, + type DateRangeFilterResult, + DateRangeFilterType, + DateRangeQuickPresets, DocumentationLinkBadge, UnstableAlert, - UnstableAlertDescription + UnstableAlertDescription, + UnstableButtonGroup } from "@app/components/v3"; import { OrgPermissionAuditLogsActions, @@ -27,15 +31,9 @@ import { AuditSearchFilter, logFilterToAppliedFilters } from "./AuditSearchFilter"; -import { LogsDateFilter } from "./LogsDateFilter"; import { LogsFilter } from "./LogsFilter"; import { LogsTable } from "./LogsTable"; -import { - AuditLogDateFilterType, - Presets, - TAuditLogDateFilterFormData, - TAuditLogFilterFormData -} from "./types"; +import { Presets, TAuditLogFilterFormData } from "./types"; type Props = { presets?: Presets; @@ -70,8 +68,6 @@ const LogsSectionComponent = ({ actor: presets?.actorId, eventMetadata: presets?.eventMetadata }); - const [timezone, setTimezone] = useState(Timezone.Local); - const [searchFilters, setSearchFilters] = useState(() => logFilterToAppliedFilters({ eventType: presets?.eventType, @@ -81,20 +77,23 @@ const LogsSectionComponent = ({ const searchDerived = useMemo(() => appliedFiltersToLogFilter(searchFilters), [searchFilters]); - const [dateFilter, setDateFilter] = useState( - presets?.endDate || presets?.startDate - ? { - type: AuditLogDateFilterType.Absolute, - startDate: presets?.startDate || new Date(Number(new Date()) - ms("1h")), - endDate: presets?.endDate || new Date() - } - : { - startDate: new Date(Number(new Date()) - ms("1h")), - endDate: new Date(), - type: AuditLogDateFilterType.Relative, - relativeModeValue: "1h" - } - ); + const hasPresetDates = Boolean(presets?.startDate || presets?.endDate); + const defaultCustomValue = hasPresetDates + ? { + type: DateRangeFilterType.Fixed as const, + startDate: presets?.startDate ?? new Date(Date.now() - 60 * 60 * 1000), + endDate: presets?.endDate ?? new Date() + } + : undefined; + const [activePreset, setActivePreset] = useState(hasPresetDates ? "" : "1h"); + const [dateRange, setDateRange] = useState({ + startDate: presets?.startDate ?? new Date(Date.now() - 60 * 60 * 1000), + endDate: presets?.endDate ?? new Date(), + isUtc: false + }); + + const timezone = dateRange.isUtc ? Timezone.UTC : Timezone.Local; + const dateRangeAccent = project ? "primary" : "secondary"; useEffect(() => { if (subscription && !subscription.auditLogs) { @@ -142,12 +141,25 @@ const LogsSectionComponent = ({
{showFilters && ( - + + { + setActivePreset(preset); + setDateRange(result); + }} + accent={dateRangeAccent} + /> + { + setActivePreset(""); + setDateRange(result); + }} + accent={dateRangeAccent} + /> + )}
@@ -180,8 +192,8 @@ const LogsSectionComponent = ({ environment: searchDerived.environment || logFilter?.environment?.slug, secretPath: searchDerived.secretPath, secretKey: searchDerived.secretKey, - startDate: dateFilter?.startDate, - endDate: dateFilter?.endDate, + startDate: dateRange.startDate, + endDate: dateRange.endDate, limit: 15 }} timezone={timezone} @@ -229,12 +241,25 @@ const LogsSectionComponent = ({ )}
{showFilters && ( - + + { + setActivePreset(preset); + setDateRange(result); + }} + accent={dateRangeAccent} + /> + { + setActivePreset(""); + setDateRange(result); + }} + accent={dateRangeAccent} + /> + )} {showFilters && ( @@ -251,8 +276,8 @@ const LogsSectionComponent = ({ limit: 15, eventType: logFilter?.eventType, userAgentType: logFilter?.userAgentType, - startDate: dateFilter?.startDate, - endDate: dateFilter?.endDate, + startDate: dateRange.startDate, + endDate: dateRange.endDate, environment: logFilter?.environment?.slug, actor: logFilter?.actor }} From 9d4a9a8ae7a7db1ac388689e840539759eb53b42 Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Fri, 17 Apr 2026 07:28:16 +0800 Subject: [PATCH 195/562] fix: addressed feedback --- .../secret-folder/secret-folder-service.ts | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/backend/src/services/secret-folder/secret-folder-service.ts b/backend/src/services/secret-folder/secret-folder-service.ts index 46c26c11178..afa04af4ed8 100644 --- a/backend/src/services/secret-folder/secret-folder-service.ts +++ b/backend/src/services/secret-folder/secret-folder-service.ts @@ -462,6 +462,16 @@ export const secretFolderServiceFactory = ({ } const { newFolder, newFolderPath, oldFolderPath } = await folderDAL.transaction(async (tx) => { + // Read the old folder path BEFORE the update to capture the original name in the path. + // This must be done inside the transaction to ensure read-after-write consistency + // when using read replicas, but before the UPDATE to get the old state. + const [oldFolderWithPath] = await folderDAL.findSecretPathByFolderIds(projectId, [folder.id], tx); + if (!oldFolderWithPath) { + throw new NotFoundError({ + message: `Failed to retrieve path for folder with ID '${folder.id}'` + }); + } + const [doc] = await folderDAL.update( { envId: env.id, id: folder.id, parentId: parentFolder.id, isReserved: false }, { name, description }, @@ -499,25 +509,15 @@ export const secretFolderServiceFactory = ({ ); if (!doc) throw new NotFoundError({ message: `Failed to update folder with ID '${id}'`, name: "UpdateFolder" }); - // Read the folder paths inside the transaction to avoid replication lag issues - // when using read replicas. The transaction ensures we read from the primary. - const foldersWithFullPaths = await folderDAL.findSecretPathByFolderIds(projectId, [doc.id, folder.id], tx); - - const newFolderWithFullPath = foldersWithFullPaths.find((f) => f?.id === doc.id); - if (!newFolderWithFullPath) { + // Read the new folder path AFTER the update to get the updated name in the path. + const [newFolderWithPath] = await folderDAL.findSecretPathByFolderIds(projectId, [doc.id], tx); + if (!newFolderWithPath) { throw new NotFoundError({ message: `Failed to retrieve path for folder with ID '${doc.id}'` }); } - const folderWithFullPath = foldersWithFullPaths.find((f) => f?.id === folder.id); - if (!folderWithFullPath) { - throw new NotFoundError({ - message: `Failed to retrieve path for folder with ID '${folder.id}'` - }); - } - - return { newFolder: doc, newFolderPath: newFolderWithFullPath.path, oldFolderPath: folderWithFullPath.path }; + return { newFolder: doc, newFolderPath: newFolderWithPath.path, oldFolderPath: oldFolderWithPath.path }; }); await snapshotService.performSnapshot(newFolder.parentId as string); From 550b25d0562a2a525070c2bf23817d2393b570e1 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 16 Apr 2026 19:35:28 -0400 Subject: [PATCH 196/562] Revert "fix(frontend): invalidate auth token after org select; default query staleTime" --- frontend/CLAUDE.md | 12 ----- .../src/hooks/api/accessApproval/queries.tsx | 6 +-- frontend/src/hooks/api/auth/queries.tsx | 6 +-- .../hooks/api/dynamicSecretLease/queries.ts | 2 - frontend/src/hooks/api/identities/queries.tsx | 12 ++--- frontend/src/hooks/api/reactQuery.tsx | 3 +- .../api/secretApprovalRequest/mutation.tsx | 4 +- .../hooks/api/secretApprovalRequest/types.ts | 1 - .../components/OrgSidebar/ProjectNav.tsx | 27 +++++----- .../OrgSidebar/SecretManagerNav.tsx | 50 +++++++++++++++++-- .../OrgSidebar/useApprovalSubmenu.ts | 45 ----------------- .../SecretApprovalRequestChanges.tsx | 3 +- 12 files changed, 68 insertions(+), 103 deletions(-) delete mode 100644 frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index c46e5f4752c..3b277b39592 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -48,18 +48,6 @@ Each API domain in `src/hooks/api/` (100+ domain folders) follows this structure HTTP client in `src/config/request.ts`: Axios instance with automatic token injection and 401/403 interceptors. -#### React Query Global Defaults (`src/hooks/api/reactQuery.tsx`) - -The `QueryClient` sets these global defaults for all queries: -- **`staleTime: 60_000`** (60 seconds) — data fetched within the last 60s is considered fresh and won't be refetched on component mount/remount. This prevents redundant API calls during normal page navigation. Queries that need real-time data (e.g., identity auth configs, dynamic secret leases) override this with `staleTime: 0`. -- **`refetchOnWindowFocus: false`** — queries do not refetch when the browser tab regains focus. -- **`retry: 1`** — failed queries retry once. - -When adding new queries, consider whether the default 60s staleTime is appropriate: -- For data that changes only on explicit user action (secrets, folders, org metadata): the 60s default is fine or could be longer. -- For data that must always be fresh (auth configs, lease TTLs): override with `staleTime: 0, gcTime: 0`. -- For rarely-changing data (server config, user profile): use `staleTime: Infinity` as the context providers do. - ### State Management - **Server state**: TanStack React Query (query key factories in each API domain) diff --git a/frontend/src/hooks/api/accessApproval/queries.tsx b/frontend/src/hooks/api/accessApproval/queries.tsx index d9470634a47..2be6c9535fb 100644 --- a/frontend/src/hooks/api/accessApproval/queries.tsx +++ b/frontend/src/hooks/api/accessApproval/queries.tsx @@ -104,8 +104,7 @@ export const useGetAccessRequestsCount = ({ queryKey: accessApprovalKeys.getAccessApprovalRequestCount(projectSlug, policyId), queryFn: () => fetchAccessRequestsCount(projectSlug, policyId), ...options, - enabled: Boolean(projectSlug) && (options?.enabled ?? true), - refetchInterval: options?.refetchInterval ?? 30_000 + enabled: Boolean(projectSlug) && (options?.enabled ?? true) }); export const useGetAccessApprovalPolicies = ({ @@ -132,6 +131,5 @@ export const useGetAccessApprovalRequests = ({ queryFn: () => fetchApprovalRequests({ projectSlug, envSlug, authorUserId }), ...options, enabled: Boolean(projectSlug) && (options?.enabled ?? true), - placeholderData: (previousData) => previousData, - refetchInterval: options?.refetchInterval ?? 30_000 + placeholderData: (previousData) => previousData }); diff --git a/frontend/src/hooks/api/auth/queries.tsx b/frontend/src/hooks/api/auth/queries.tsx index f920941544f..488a2667be4 100644 --- a/frontend/src/hooks/api/auth/queries.tsx +++ b/frontend/src/hooks/api/auth/queries.tsx @@ -101,9 +101,11 @@ export const useSelectOrganization = () => { return data; }, onSuccess: () => { + // Invalidate the auth token cache so the authenticate middleware + // re-calls fetchAuthToken (which reads the new in-memory token with orgId) queryClient.invalidateQueries({ queryKey: authKeys.getAuthToken }); queryClient.invalidateQueries({ queryKey: organizationKeys.getUserOrganizations }); - queryClient.invalidateQueries({ queryKey: projectKeys.getAllUserProjects() }); + queryClient.invalidateQueries({ queryKey: projectKeys.getAllUserProjects }); } }); }; @@ -251,8 +253,6 @@ export const useGetAuthToken = () => useQuery({ queryKey: authKeys.getAuthToken, queryFn: fetchAuthToken, - staleTime: 0, - gcTime: 0, retry: 0 }); diff --git a/frontend/src/hooks/api/dynamicSecretLease/queries.ts b/frontend/src/hooks/api/dynamicSecretLease/queries.ts index c7e64dbd369..095ece0f73f 100644 --- a/frontend/src/hooks/api/dynamicSecretLease/queries.ts +++ b/frontend/src/hooks/api/dynamicSecretLease/queries.ts @@ -24,8 +24,6 @@ export const useGetDynamicSecretLeases = ({ dynamicSecretName }), enabled: Boolean(projectSlug && environmentSlug && path && dynamicSecretName && enabled), - staleTime: 0, - gcTime: 0, queryFn: async () => { const { data } = await apiRequest.get<{ leases: TDynamicSecretLease[] }>( `/api/v1/dynamic-secrets/${dynamicSecretName}/leases`, diff --git a/frontend/src/hooks/api/identities/queries.tsx b/frontend/src/hooks/api/identities/queries.tsx index 39e88b338c3..5614802ceb6 100644 --- a/frontend/src/hooks/api/identities/queries.tsx +++ b/frontend/src/hooks/api/identities/queries.tsx @@ -330,11 +330,9 @@ export const useGetIdentityLdapAuth = ( }); }; -export const useGetIdentityTokensTokenAuth = ( - identityId: string, - options?: TReactQueryOptions["options"] -) => { +export const useGetIdentityTokensTokenAuth = (identityId: string) => { return useQuery({ + enabled: Boolean(identityId), queryKey: identitiesKeys.getIdentityTokensTokenAuth(identityId), queryFn: async () => { const { @@ -343,11 +341,7 @@ export const useGetIdentityTokensTokenAuth = ( `/api/v1/auth/token-auth/identities/${identityId}/tokens` ); return tokens; - }, - staleTime: 0, - gcTime: 0, - ...options, - enabled: Boolean(identityId) && (options?.enabled ?? true) + } }); }; diff --git a/frontend/src/hooks/api/reactQuery.tsx b/frontend/src/hooks/api/reactQuery.tsx index b7a558dad27..b80393cf51f 100644 --- a/frontend/src/hooks/api/reactQuery.tsx +++ b/frontend/src/hooks/api/reactQuery.tsx @@ -220,8 +220,7 @@ export const queryClient = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, - retry: 1, - staleTime: 60_000 // 60s — prevents refetch on every component mount/remount + retry: 1 } } }); diff --git a/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx b/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx index 52f37848f1f..6a03b431cab 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx +++ b/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx @@ -20,10 +20,8 @@ export const useUpdateSecretApprovalReviewStatus = () => { }); return data; }, - onSuccess: (_, { id, projectId }) => { + onSuccess: (_, { id }) => { queryClient.invalidateQueries({ queryKey: secretApprovalRequestKeys.detail({ id }) }); - queryClient.invalidateQueries({ queryKey: secretApprovalRequestKeys.list({ projectId }) }); - queryClient.invalidateQueries({ queryKey: secretApprovalRequestKeys.count({ projectId }) }); } }); }; diff --git a/frontend/src/hooks/api/secretApprovalRequest/types.ts b/frontend/src/hooks/api/secretApprovalRequest/types.ts index e65d3de5e3e..38bd1c27969 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/types.ts +++ b/frontend/src/hooks/api/secretApprovalRequest/types.ts @@ -134,7 +134,6 @@ export type TUpdateSecretApprovalReviewStatusDTO = { status: ApprovalStatus; comment?: string; id: string; - projectId: string; }; export type TUpdateSecretApprovalRequestStatusDTO = { diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx index add508a3a7b..1950782bff7 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import { useLocation, useNavigate } from "@tanstack/react-router"; import { AnimatePresence, motion } from "framer-motion"; -import { ChevronLeft } from "lucide-react"; +import { ChevronLeft, DoorOpen, FileKey, Shield } from "lucide-react"; import { SidebarGroup, SidebarGroupLabel, SidebarMenu } from "@app/components/v3"; import { useOrganization, useProject } from "@app/context"; @@ -31,7 +31,6 @@ import { import { ProjectSubmenuView } from "./SubmenuViews"; import type { Submenu } from "./types"; import { PROJECT_TYPE_PATH } from "./types"; -import { useApprovalSubmenu } from "./useApprovalSubmenu"; const PROJECT_NAV_COMPONENT: Record< ProjectType, @@ -53,8 +52,6 @@ export const ProjectNav = () => { const { currentOrg, isSubOrganization } = useOrganization(); const { pathname } = useLocation(); const navigate = useNavigate(); - const { submenu: smApprovalsSubmenu, pendingRequestsCount: smPendingCount } = - useApprovalSubmenu(); const projectLabel = isSubOrganization ? "Sub-Organization" : "Organization"; const NavComponent = PROJECT_NAV_COMPONENT[currentProject.type]; @@ -93,7 +90,17 @@ export const ProjectNav = () => { if (isOnCertApprovals) return CERT_APPROVALS_SUBMENU; if (currentProject.type === ProjectType.PAM && pathname.includes("/approvals")) return PAM_APPROVALS_SUBMENU; - if (isOnApproval) return smApprovalsSubmenu; + if (isOnApproval) + return { + title: "Approvals", + pathSuffix: "approval", + defaultTab: "approval-requests", + items: [ + { label: "Change Requests", icon: FileKey, tab: "approval-requests" }, + { label: "Access Requests", icon: DoorOpen, tab: "resource-requests" }, + { label: "Policies", icon: Shield, tab: "policies" } + ] + }; return null; }; @@ -103,16 +110,6 @@ export const ProjectNav = () => { setActiveSubmenu(getInitialProjectSubmenu()); }, [pathname]); // eslint-disable-line react-hooks/exhaustive-deps - // Keep the active submenu in sync when badge data changes - useEffect(() => { - setActiveSubmenu((current) => { - if (current && current.pathSuffix === smApprovalsSubmenu.pathSuffix) { - return smApprovalsSubmenu; - } - return current; - }); - }, [smPendingCount]); // eslint-disable-line react-hooks/exhaustive-deps - const handleSubmenuOpen = (submenu: Submenu) => { setActiveSubmenu(submenu); const typePath = PROJECT_TYPE_PATH[currentProject.type]; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx index 7a6f21392af..fd031544fa0 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx @@ -1,8 +1,22 @@ -import { ActivityIcon, BookCheck, FileText, Plug, RefreshCw, Settings, Shield } from "lucide-react"; +import { + ActivityIcon, + BookCheck, + DoorOpen, + FileKey, + FileText, + Plug, + RefreshCw, + Settings, + Shield +} from "lucide-react"; import { ProjectIcon } from "@app/components/v3"; import { useProject } from "@app/context"; -import { useGetSecretRotations } from "@app/hooks/api"; +import { + useGetAccessRequestsCount, + useGetSecretApprovalRequestCount, + useGetSecretRotations +} from "@app/hooks/api"; import { ProjectNavList } from "./ProjectNavLink"; import { @@ -11,21 +25,47 @@ import { SM_SETTINGS_SUBMENU } from "./submenus"; import type { NavItem, Submenu } from "./types"; -import { useApprovalSubmenu } from "./useApprovalSubmenu"; export const SecretManagerNav = ({ onSubmenuOpen }: { onSubmenuOpen: (submenu: Submenu) => void; }) => { - const { projectId } = useProject(); + const { currentProject, projectId } = useProject(); - const { submenu: approvalsSubmenu, pendingRequestsCount } = useApprovalSubmenu(); + const { data: secretApprovalReqCount } = useGetSecretApprovalRequestCount({ projectId }); + const { data: accessApprovalRequestCount } = useGetAccessRequestsCount({ + projectSlug: currentProject?.slug || "" + }); const { data: secretRotations } = useGetSecretRotations({ workspaceId: projectId, options: { refetchOnMount: false } }); + const pendingRequestsCount = + (secretApprovalReqCount?.open || 0) + (accessApprovalRequestCount?.pendingCount || 0); + + const approvalsSubmenu: Submenu = { + title: "Approvals", + pathSuffix: "approval", + defaultTab: "approval-requests", + items: [ + { + label: "Change Requests", + icon: FileKey, + tab: "approval-requests", + badgeCount: secretApprovalReqCount?.open || undefined + }, + { + label: "Access Requests", + icon: DoorOpen, + tab: "resource-requests", + badgeCount: accessApprovalRequestCount?.pendingCount || undefined + }, + { label: "Policies", icon: Shield, tab: "policies" } + ] + }; + const items: NavItem[] = [ { label: "Overview", diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts deleted file mode 100644 index baf5187a422..00000000000 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { DoorOpen, FileKey, Shield } from "lucide-react"; - -import { useProject } from "@app/context"; -import { useGetAccessRequestsCount, useGetSecretApprovalRequestCount } from "@app/hooks/api"; - -import type { Submenu } from "./types"; - -export const useApprovalSubmenu = (): { - submenu: Submenu; - pendingRequestsCount: number; -} => { - const { currentProject, projectId } = useProject(); - - const { data: secretApprovalReqCount } = useGetSecretApprovalRequestCount({ projectId }); - const { data: accessApprovalRequestCount } = useGetAccessRequestsCount({ - projectSlug: currentProject?.slug || "" - }); - - const pendingRequestsCount = - (secretApprovalReqCount?.open || 0) + (accessApprovalRequestCount?.pendingCount || 0); - - return { - submenu: { - title: "Approvals", - pathSuffix: "approval", - defaultTab: "approval-requests", - items: [ - { - label: "Change Requests", - icon: FileKey, - tab: "approval-requests", - badgeCount: secretApprovalReqCount?.open || undefined - }, - { - label: "Access Requests", - icon: DoorOpen, - tab: "resource-requests", - badgeCount: accessApprovalRequestCount?.pendingCount || undefined - }, - { label: "Policies", icon: Shield, tab: "policies" } - ] - }, - pendingRequestsCount - }; -}; diff --git a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx index 64cc5691257..a26977e2421 100644 --- a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx +++ b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx @@ -188,8 +188,7 @@ export const SecretApprovalRequestChanges = ({ approvalRequestId, onGoBack }: Pr await updateSecretApprovalRequestStatus({ id: approvalRequestId, status, - comment, - projectId + comment }); createNotification({ type: "success", From 5a376ea55c005d3312c2586a61b463e0705afe54 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Thu, 16 Apr 2026 19:35:41 -0400 Subject: [PATCH 197/562] Revert "Revert "fix(frontend): invalidate auth token after org select; default query staleTime"" --- frontend/CLAUDE.md | 12 +++++ .../src/hooks/api/accessApproval/queries.tsx | 6 ++- frontend/src/hooks/api/auth/queries.tsx | 6 +-- .../hooks/api/dynamicSecretLease/queries.ts | 2 + frontend/src/hooks/api/identities/queries.tsx | 12 +++-- frontend/src/hooks/api/reactQuery.tsx | 3 +- .../api/secretApprovalRequest/mutation.tsx | 4 +- .../hooks/api/secretApprovalRequest/types.ts | 1 + .../components/OrgSidebar/ProjectNav.tsx | 27 +++++----- .../OrgSidebar/SecretManagerNav.tsx | 50 ++----------------- .../OrgSidebar/useApprovalSubmenu.ts | 45 +++++++++++++++++ .../SecretApprovalRequestChanges.tsx | 3 +- 12 files changed, 103 insertions(+), 68 deletions(-) create mode 100644 frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index 3b277b39592..c46e5f4752c 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -48,6 +48,18 @@ Each API domain in `src/hooks/api/` (100+ domain folders) follows this structure HTTP client in `src/config/request.ts`: Axios instance with automatic token injection and 401/403 interceptors. +#### React Query Global Defaults (`src/hooks/api/reactQuery.tsx`) + +The `QueryClient` sets these global defaults for all queries: +- **`staleTime: 60_000`** (60 seconds) — data fetched within the last 60s is considered fresh and won't be refetched on component mount/remount. This prevents redundant API calls during normal page navigation. Queries that need real-time data (e.g., identity auth configs, dynamic secret leases) override this with `staleTime: 0`. +- **`refetchOnWindowFocus: false`** — queries do not refetch when the browser tab regains focus. +- **`retry: 1`** — failed queries retry once. + +When adding new queries, consider whether the default 60s staleTime is appropriate: +- For data that changes only on explicit user action (secrets, folders, org metadata): the 60s default is fine or could be longer. +- For data that must always be fresh (auth configs, lease TTLs): override with `staleTime: 0, gcTime: 0`. +- For rarely-changing data (server config, user profile): use `staleTime: Infinity` as the context providers do. + ### State Management - **Server state**: TanStack React Query (query key factories in each API domain) diff --git a/frontend/src/hooks/api/accessApproval/queries.tsx b/frontend/src/hooks/api/accessApproval/queries.tsx index 2be6c9535fb..d9470634a47 100644 --- a/frontend/src/hooks/api/accessApproval/queries.tsx +++ b/frontend/src/hooks/api/accessApproval/queries.tsx @@ -104,7 +104,8 @@ export const useGetAccessRequestsCount = ({ queryKey: accessApprovalKeys.getAccessApprovalRequestCount(projectSlug, policyId), queryFn: () => fetchAccessRequestsCount(projectSlug, policyId), ...options, - enabled: Boolean(projectSlug) && (options?.enabled ?? true) + enabled: Boolean(projectSlug) && (options?.enabled ?? true), + refetchInterval: options?.refetchInterval ?? 30_000 }); export const useGetAccessApprovalPolicies = ({ @@ -131,5 +132,6 @@ export const useGetAccessApprovalRequests = ({ queryFn: () => fetchApprovalRequests({ projectSlug, envSlug, authorUserId }), ...options, enabled: Boolean(projectSlug) && (options?.enabled ?? true), - placeholderData: (previousData) => previousData + placeholderData: (previousData) => previousData, + refetchInterval: options?.refetchInterval ?? 30_000 }); diff --git a/frontend/src/hooks/api/auth/queries.tsx b/frontend/src/hooks/api/auth/queries.tsx index 488a2667be4..f920941544f 100644 --- a/frontend/src/hooks/api/auth/queries.tsx +++ b/frontend/src/hooks/api/auth/queries.tsx @@ -101,11 +101,9 @@ export const useSelectOrganization = () => { return data; }, onSuccess: () => { - // Invalidate the auth token cache so the authenticate middleware - // re-calls fetchAuthToken (which reads the new in-memory token with orgId) queryClient.invalidateQueries({ queryKey: authKeys.getAuthToken }); queryClient.invalidateQueries({ queryKey: organizationKeys.getUserOrganizations }); - queryClient.invalidateQueries({ queryKey: projectKeys.getAllUserProjects }); + queryClient.invalidateQueries({ queryKey: projectKeys.getAllUserProjects() }); } }); }; @@ -253,6 +251,8 @@ export const useGetAuthToken = () => useQuery({ queryKey: authKeys.getAuthToken, queryFn: fetchAuthToken, + staleTime: 0, + gcTime: 0, retry: 0 }); diff --git a/frontend/src/hooks/api/dynamicSecretLease/queries.ts b/frontend/src/hooks/api/dynamicSecretLease/queries.ts index 095ece0f73f..c7e64dbd369 100644 --- a/frontend/src/hooks/api/dynamicSecretLease/queries.ts +++ b/frontend/src/hooks/api/dynamicSecretLease/queries.ts @@ -24,6 +24,8 @@ export const useGetDynamicSecretLeases = ({ dynamicSecretName }), enabled: Boolean(projectSlug && environmentSlug && path && dynamicSecretName && enabled), + staleTime: 0, + gcTime: 0, queryFn: async () => { const { data } = await apiRequest.get<{ leases: TDynamicSecretLease[] }>( `/api/v1/dynamic-secrets/${dynamicSecretName}/leases`, diff --git a/frontend/src/hooks/api/identities/queries.tsx b/frontend/src/hooks/api/identities/queries.tsx index 5614802ceb6..39e88b338c3 100644 --- a/frontend/src/hooks/api/identities/queries.tsx +++ b/frontend/src/hooks/api/identities/queries.tsx @@ -330,9 +330,11 @@ export const useGetIdentityLdapAuth = ( }); }; -export const useGetIdentityTokensTokenAuth = (identityId: string) => { +export const useGetIdentityTokensTokenAuth = ( + identityId: string, + options?: TReactQueryOptions["options"] +) => { return useQuery({ - enabled: Boolean(identityId), queryKey: identitiesKeys.getIdentityTokensTokenAuth(identityId), queryFn: async () => { const { @@ -341,7 +343,11 @@ export const useGetIdentityTokensTokenAuth = (identityId: string) => { `/api/v1/auth/token-auth/identities/${identityId}/tokens` ); return tokens; - } + }, + staleTime: 0, + gcTime: 0, + ...options, + enabled: Boolean(identityId) && (options?.enabled ?? true) }); }; diff --git a/frontend/src/hooks/api/reactQuery.tsx b/frontend/src/hooks/api/reactQuery.tsx index b80393cf51f..b7a558dad27 100644 --- a/frontend/src/hooks/api/reactQuery.tsx +++ b/frontend/src/hooks/api/reactQuery.tsx @@ -220,7 +220,8 @@ export const queryClient = new QueryClient({ defaultOptions: { queries: { refetchOnWindowFocus: false, - retry: 1 + retry: 1, + staleTime: 60_000 // 60s — prevents refetch on every component mount/remount } } }); diff --git a/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx b/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx index 6a03b431cab..52f37848f1f 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx +++ b/frontend/src/hooks/api/secretApprovalRequest/mutation.tsx @@ -20,8 +20,10 @@ export const useUpdateSecretApprovalReviewStatus = () => { }); return data; }, - onSuccess: (_, { id }) => { + onSuccess: (_, { id, projectId }) => { queryClient.invalidateQueries({ queryKey: secretApprovalRequestKeys.detail({ id }) }); + queryClient.invalidateQueries({ queryKey: secretApprovalRequestKeys.list({ projectId }) }); + queryClient.invalidateQueries({ queryKey: secretApprovalRequestKeys.count({ projectId }) }); } }); }; diff --git a/frontend/src/hooks/api/secretApprovalRequest/types.ts b/frontend/src/hooks/api/secretApprovalRequest/types.ts index 38bd1c27969..e65d3de5e3e 100644 --- a/frontend/src/hooks/api/secretApprovalRequest/types.ts +++ b/frontend/src/hooks/api/secretApprovalRequest/types.ts @@ -134,6 +134,7 @@ export type TUpdateSecretApprovalReviewStatusDTO = { status: ApprovalStatus; comment?: string; id: string; + projectId: string; }; export type TUpdateSecretApprovalRequestStatusDTO = { diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx index 1950782bff7..add508a3a7b 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/ProjectNav.tsx @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import { useLocation, useNavigate } from "@tanstack/react-router"; import { AnimatePresence, motion } from "framer-motion"; -import { ChevronLeft, DoorOpen, FileKey, Shield } from "lucide-react"; +import { ChevronLeft } from "lucide-react"; import { SidebarGroup, SidebarGroupLabel, SidebarMenu } from "@app/components/v3"; import { useOrganization, useProject } from "@app/context"; @@ -31,6 +31,7 @@ import { import { ProjectSubmenuView } from "./SubmenuViews"; import type { Submenu } from "./types"; import { PROJECT_TYPE_PATH } from "./types"; +import { useApprovalSubmenu } from "./useApprovalSubmenu"; const PROJECT_NAV_COMPONENT: Record< ProjectType, @@ -52,6 +53,8 @@ export const ProjectNav = () => { const { currentOrg, isSubOrganization } = useOrganization(); const { pathname } = useLocation(); const navigate = useNavigate(); + const { submenu: smApprovalsSubmenu, pendingRequestsCount: smPendingCount } = + useApprovalSubmenu(); const projectLabel = isSubOrganization ? "Sub-Organization" : "Organization"; const NavComponent = PROJECT_NAV_COMPONENT[currentProject.type]; @@ -90,17 +93,7 @@ export const ProjectNav = () => { if (isOnCertApprovals) return CERT_APPROVALS_SUBMENU; if (currentProject.type === ProjectType.PAM && pathname.includes("/approvals")) return PAM_APPROVALS_SUBMENU; - if (isOnApproval) - return { - title: "Approvals", - pathSuffix: "approval", - defaultTab: "approval-requests", - items: [ - { label: "Change Requests", icon: FileKey, tab: "approval-requests" }, - { label: "Access Requests", icon: DoorOpen, tab: "resource-requests" }, - { label: "Policies", icon: Shield, tab: "policies" } - ] - }; + if (isOnApproval) return smApprovalsSubmenu; return null; }; @@ -110,6 +103,16 @@ export const ProjectNav = () => { setActiveSubmenu(getInitialProjectSubmenu()); }, [pathname]); // eslint-disable-line react-hooks/exhaustive-deps + // Keep the active submenu in sync when badge data changes + useEffect(() => { + setActiveSubmenu((current) => { + if (current && current.pathSuffix === smApprovalsSubmenu.pathSuffix) { + return smApprovalsSubmenu; + } + return current; + }); + }, [smPendingCount]); // eslint-disable-line react-hooks/exhaustive-deps + const handleSubmenuOpen = (submenu: Submenu) => { setActiveSubmenu(submenu); const typePath = PROJECT_TYPE_PATH[currentProject.type]; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx index fd031544fa0..7a6f21392af 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx @@ -1,22 +1,8 @@ -import { - ActivityIcon, - BookCheck, - DoorOpen, - FileKey, - FileText, - Plug, - RefreshCw, - Settings, - Shield -} from "lucide-react"; +import { ActivityIcon, BookCheck, FileText, Plug, RefreshCw, Settings, Shield } from "lucide-react"; import { ProjectIcon } from "@app/components/v3"; import { useProject } from "@app/context"; -import { - useGetAccessRequestsCount, - useGetSecretApprovalRequestCount, - useGetSecretRotations -} from "@app/hooks/api"; +import { useGetSecretRotations } from "@app/hooks/api"; import { ProjectNavList } from "./ProjectNavLink"; import { @@ -25,47 +11,21 @@ import { SM_SETTINGS_SUBMENU } from "./submenus"; import type { NavItem, Submenu } from "./types"; +import { useApprovalSubmenu } from "./useApprovalSubmenu"; export const SecretManagerNav = ({ onSubmenuOpen }: { onSubmenuOpen: (submenu: Submenu) => void; }) => { - const { currentProject, projectId } = useProject(); + const { projectId } = useProject(); - const { data: secretApprovalReqCount } = useGetSecretApprovalRequestCount({ projectId }); - const { data: accessApprovalRequestCount } = useGetAccessRequestsCount({ - projectSlug: currentProject?.slug || "" - }); + const { submenu: approvalsSubmenu, pendingRequestsCount } = useApprovalSubmenu(); const { data: secretRotations } = useGetSecretRotations({ workspaceId: projectId, options: { refetchOnMount: false } }); - const pendingRequestsCount = - (secretApprovalReqCount?.open || 0) + (accessApprovalRequestCount?.pendingCount || 0); - - const approvalsSubmenu: Submenu = { - title: "Approvals", - pathSuffix: "approval", - defaultTab: "approval-requests", - items: [ - { - label: "Change Requests", - icon: FileKey, - tab: "approval-requests", - badgeCount: secretApprovalReqCount?.open || undefined - }, - { - label: "Access Requests", - icon: DoorOpen, - tab: "resource-requests", - badgeCount: accessApprovalRequestCount?.pendingCount || undefined - }, - { label: "Policies", icon: Shield, tab: "policies" } - ] - }; - const items: NavItem[] = [ { label: "Overview", diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts new file mode 100644 index 00000000000..baf5187a422 --- /dev/null +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/useApprovalSubmenu.ts @@ -0,0 +1,45 @@ +import { DoorOpen, FileKey, Shield } from "lucide-react"; + +import { useProject } from "@app/context"; +import { useGetAccessRequestsCount, useGetSecretApprovalRequestCount } from "@app/hooks/api"; + +import type { Submenu } from "./types"; + +export const useApprovalSubmenu = (): { + submenu: Submenu; + pendingRequestsCount: number; +} => { + const { currentProject, projectId } = useProject(); + + const { data: secretApprovalReqCount } = useGetSecretApprovalRequestCount({ projectId }); + const { data: accessApprovalRequestCount } = useGetAccessRequestsCount({ + projectSlug: currentProject?.slug || "" + }); + + const pendingRequestsCount = + (secretApprovalReqCount?.open || 0) + (accessApprovalRequestCount?.pendingCount || 0); + + return { + submenu: { + title: "Approvals", + pathSuffix: "approval", + defaultTab: "approval-requests", + items: [ + { + label: "Change Requests", + icon: FileKey, + tab: "approval-requests", + badgeCount: secretApprovalReqCount?.open || undefined + }, + { + label: "Access Requests", + icon: DoorOpen, + tab: "resource-requests", + badgeCount: accessApprovalRequestCount?.pendingCount || undefined + }, + { label: "Policies", icon: Shield, tab: "policies" } + ] + }, + pendingRequestsCount + }; +}; diff --git a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx index a26977e2421..64cc5691257 100644 --- a/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx +++ b/frontend/src/pages/secret-manager/SecretApprovalsPage/components/SecretApprovalRequest/components/SecretApprovalRequestChanges.tsx @@ -188,7 +188,8 @@ export const SecretApprovalRequestChanges = ({ approvalRequestId, onGoBack }: Pr await updateSecretApprovalRequestStatus({ id: approvalRequestId, status, - comment + comment, + projectId }); createNotification({ type: "success", From 041c1f7c65e630465a98372649e556962d6d13bb Mon Sep 17 00:00:00 2001 From: varonix <62331820+varonix0@users.noreply.github.com> Date: Fri, 17 Apr 2026 01:48:25 +0200 Subject: [PATCH 198/562] Revert "feat: add insights page to secrets management product type" --- backend/src/@types/fastify.d.ts | 2 - backend/src/ee/routes/v1/index.ts | 3 - backend/src/ee/routes/v1/insights-router.ts | 238 --------- .../ee/services/audit-log/audit-log-dal.ts | 125 +---- .../ee/services/audit-log/audit-log-types.ts | 52 +- .../ee/services/insights/insights-service.ts | 498 ------------------ .../ee/services/insights/insights-types.ts | 25 - .../ee/services/permission/default-roles.ts | 3 - .../services/permission/project-permission.ts | 16 +- .../secret-rotation-v2-dal.ts | 151 ------ backend/src/keystore/keystore.ts | 6 +- backend/src/server/plugins/audit-log.ts | 3 - backend/src/server/routes/index.ts | 15 - backend/src/services/reminder/reminder-dal.ts | 49 +- .../secret-v2-bridge/secret-v2-bridge-dal.ts | 48 -- .../permissions/project-permissions.mdx | 6 - frontend/src/const/routes.ts | 4 - .../ProjectPermissionContext/index.tsx | 1 - .../context/ProjectPermissionContext/types.ts | 8 +- frontend/src/context/index.tsx | 1 - .../src/hooks/api/auditLogs/constants.tsx | 9 - frontend/src/hooks/api/auditLogs/enums.tsx | 6 - frontend/src/hooks/api/index.tsx | 1 - .../src/hooks/api/secretInsights/index.ts | 23 - .../src/hooks/api/secretInsights/queries.tsx | 162 ------ .../src/hooks/api/secretInsights/types.ts | 122 ----- .../OrgSidebar/SecretManagerNav.tsx | 7 - .../ProjectRoleModifySection.utils.tsx | 21 +- .../InsightsPage/InsightsPage.tsx | 68 --- .../components/AuthMethodChart.tsx | 178 ------- .../InsightsPage/components/CalendarCard.tsx | 79 --- .../components/CalendarDayCell.tsx | 79 --- .../components/CalendarEventDetail.tsx | 172 ------ .../components/CalendarEventPill.tsx | 36 -- .../InsightsPage/components/CalendarGrid.tsx | 87 --- .../components/CalendarLegend.tsx | 14 - .../components/InsightsSummaryCards.tsx | 496 ----------------- .../InsightsPage/components/LineChart.tsx | 78 --- .../components/SecretAccessChart.tsx | 83 --- .../InsightsPage/components/WorldMap.tsx | 348 ------------ .../components/countries-110m.json | 1 - .../InsightsPage/components/index.ts | 8 - .../InsightsPage/components/types.ts | 5 - .../secret-manager/InsightsPage/route.tsx | 19 - frontend/src/routeTree.gen.ts | 28 - frontend/src/routes.ts | 1 - 46 files changed, 9 insertions(+), 3376 deletions(-) delete mode 100644 backend/src/ee/routes/v1/insights-router.ts delete mode 100644 backend/src/ee/services/insights/insights-service.ts delete mode 100644 backend/src/ee/services/insights/insights-types.ts delete mode 100644 frontend/src/hooks/api/secretInsights/index.ts delete mode 100644 frontend/src/hooks/api/secretInsights/queries.tsx delete mode 100644 frontend/src/hooks/api/secretInsights/types.ts delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/index.ts delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/types.ts delete mode 100644 frontend/src/pages/secret-manager/InsightsPage/route.tsx diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 5d47ec9c5f2..3879659cbae 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -23,7 +23,6 @@ import { TGatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2 import { TGithubOrgSyncServiceFactory } from "@app/ee/services/github-org-sync/github-org-sync-service"; import { TGroupServiceFactory } from "@app/ee/services/group/group-service"; import { TIdentityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template"; -import { TInsightsServiceFactory } from "@app/ee/services/insights/insights-service"; import { TKmipClientDALFactory } from "@app/ee/services/kmip/kmip-client-dal"; import { TKmipOperationServiceFactory } from "@app/ee/services/kmip/kmip-operation-service"; import { TKmipServiceFactory } from "@app/ee/services/kmip/kmip-service"; @@ -366,7 +365,6 @@ declare module "fastify" { secretRotationV2: TSecretRotationV2ServiceFactory; microsoftTeams: TMicrosoftTeamsServiceFactory; assumePrivileges: TAssumePrivilegeServiceFactory; - insights: TInsightsServiceFactory; relay: TRelayServiceFactory; gatewayV2: TGatewayV2ServiceFactory; githubOrgSync: TGithubOrgSyncServiceFactory; diff --git a/backend/src/ee/routes/v1/index.ts b/backend/src/ee/routes/v1/index.ts index 46882a1ac7e..c8b353f6eab 100644 --- a/backend/src/ee/routes/v1/index.ts +++ b/backend/src/ee/routes/v1/index.ts @@ -22,7 +22,6 @@ import { registerGithubOrgSyncRouter } from "./github-org-sync-router"; import { registerGroupRouter } from "./group-router"; import { registerIdentityProjectAdditionalPrivilegeRouter } from "./identity-project-additional-privilege-router"; import { registerIdentityTemplateRouter } from "./identity-template-router"; -import { registerInsightsRouter } from "./insights-router"; import { registerKmipRouter } from "./kmip-router"; import { registerKmipSpecRouter } from "./kmip-spec-router"; import { registerLdapRouter } from "./ldap-router"; @@ -118,8 +117,6 @@ export const registerV1EERoutes = async (server: FastifyZodProvider) => { await server.register(registerRelayRouter, { prefix: "/relays" }); await server.register(registerGithubOrgSyncRouter, { prefix: "/github-org-sync-config" }); - await server.register(registerInsightsRouter, { prefix: "/insights" }); - await server.register( async (pkiRouter) => { await pkiRouter.register(registerCaCrlRouter, { prefix: "/crl" }); diff --git a/backend/src/ee/routes/v1/insights-router.ts b/backend/src/ee/routes/v1/insights-router.ts deleted file mode 100644 index 6fcdf6e0dd8..00000000000 --- a/backend/src/ee/routes/v1/insights-router.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { z } from "zod"; - -import { EventType } from "@app/ee/services/audit-log/audit-log-types"; -import { readLimit } from "@app/server/config/rateLimiter"; -import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; -import { AuthMode } from "@app/services/auth/auth-type"; - -export const registerInsightsRouter = async (server: FastifyZodProvider) => { - server.route({ - method: "GET", - url: "/secrets/calendar", - config: { rateLimit: readLimit }, - schema: { - operationId: "getInsightsCalendar", - description: "Get secret rotation and reminder events for a calendar month view", - security: [{ bearerAuth: [] }], - querystring: z.object({ - projectId: z.string().trim(), - month: z.coerce.number().min(1).max(12), - year: z.coerce.number().min(2000).max(2100) - }), - response: { - 200: z.object({ - rotations: z.array( - z.object({ - id: z.string(), - name: z.string(), - type: z.string(), - nextRotationAt: z.date().nullable(), - environment: z.string(), - secretPath: z.string(), - secretKeys: z.string().array(), - rotationInterval: z.number(), - rotationStatus: z.string().nullable(), - isAutoRotationEnabled: z.boolean() - }) - ), - reminders: z.array( - z.object({ - id: z.string(), - secretId: z.string().nullable(), - secretKey: z.string(), - nextReminderDate: z.date(), - message: z.string().nullable().optional(), - environment: z.string(), - secretPath: z.string(), - repeatDays: z.number().nullable().optional() - }) - ) - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const { projectId, month, year } = req.query; - const result = await server.services.insights.getCalendar({ projectId, month, year }, req.permission); - await server.services.auditLog.createAuditLog({ - projectId, - event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR, metadata: { projectId, month, year } }, - ...req.auditLogInfo - }); - return result; - } - }); - - server.route({ - method: "GET", - url: "/secrets/access-volume", - config: { rateLimit: readLimit }, - schema: { - operationId: "getInsightsAccessVolume", - description: "Get secret access volume aggregated by day and actor for the past week", - security: [{ bearerAuth: [] }], - querystring: z.object({ - projectId: z.string().trim() - }), - response: { - 200: z.object({ - days: z.array( - z.object({ - date: z.string(), - total: z.number(), - actors: z.array(z.object({ name: z.string(), type: z.string(), count: z.number() })) - }) - ) - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const { projectId } = req.query; - const result = await server.services.insights.getAccessVolume({ projectId }, req.permission); - await server.services.auditLog.createAuditLog({ - projectId, - event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME, metadata: { projectId } }, - ...req.auditLogInfo - }); - return result; - } - }); - - // server.route({ - // method: "GET", - // url: "/secrets/access-locations", - // config: { rateLimit: readLimit }, - // schema: { - // operationId: "getInsightsAccessLocations", - // description: "Get geographic locations of secret access based on audit log IP addresses", - // security: [{ bearerAuth: [] }], - // querystring: z.object({ - // projectId: z.string().trim(), - // days: z.coerce.number().min(1).max(90).default(30) - // }), - // response: { - // 200: z.object({ - // locations: z.array( - // z.object({ lat: z.number(), lng: z.number(), city: z.string(), country: z.string(), count: z.number() }) - // ) - // }) - // } - // }, - // onRequest: verifyAuth([AuthMode.JWT]), - // handler: async (req) => { - // const { projectId, days } = req.query; - // const result = await server.services.insights.getAccessLocations({ projectId, days }, req.permission); - // await server.services.auditLog.createAuditLog({ - // projectId, - // event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS, metadata: { projectId, days } }, - // ...req.auditLogInfo - // }); - // return result; - // } - // }); - - server.route({ - method: "GET", - url: "/auth/method-distribution", - config: { rateLimit: readLimit }, - schema: { - operationId: "getInsightsAuthMethodDistribution", - description: "Get distribution of authentication methods from secret access audit logs", - security: [{ bearerAuth: [] }], - querystring: z.object({ - projectId: z.string().trim(), - days: z.coerce.number().min(1).max(90).default(30) - }), - response: { - 200: z.object({ - methods: z.array(z.object({ method: z.string(), count: z.number() })) - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const { projectId, days } = req.query; - const result = await server.services.insights.getAuthMethodDistribution({ projectId, days }, req.permission); - await server.services.auditLog.createAuditLog({ - projectId, - event: { type: EventType.VIEW_INSIGHTS_AUTH_METHODS, metadata: { projectId, days } }, - ...req.auditLogInfo - }); - return result; - } - }); - - server.route({ - method: "GET", - url: "/secrets/summary", - config: { rateLimit: readLimit }, - schema: { - operationId: "getInsightsSummary", - description: - "Get summary stats for the insights dashboard: upcoming rotations, upcoming reminders, and stale secrets", - security: [{ bearerAuth: [] }], - querystring: z.object({ - projectId: z.string().trim(), - staleSecretsOffset: z.coerce.number().min(0).default(0), - staleSecretsLimit: z.coerce.number().min(1).max(100).default(50) - }), - response: { - 200: z.object({ - upcomingRotations: z.array( - z.object({ - name: z.string(), - environment: z.string(), - secretPath: z.string(), - nextRotationAt: z.date().nullable(), - rotationStatus: z.string().nullable() - }) - ), - failedRotations: z.array( - z.object({ - name: z.string(), - environment: z.string(), - secretPath: z.string(), - nextRotationAt: z.date().nullable(), - rotationStatus: z.string().nullable() - }) - ), - upcomingReminders: z.array( - z.object({ - secretKey: z.string(), - environment: z.string(), - secretPath: z.string(), - nextReminderDate: z.date() - }) - ), - overdueReminders: z.array( - z.object({ - secretKey: z.string(), - environment: z.string(), - secretPath: z.string(), - nextReminderDate: z.date() - }) - ), - staleSecrets: z.array( - z.object({ key: z.string(), environment: z.string(), secretPath: z.string(), updatedAt: z.date() }) - ), - totalStaleCount: z.number() - }) - } - }, - onRequest: verifyAuth([AuthMode.JWT]), - handler: async (req) => { - const { projectId, staleSecretsOffset, staleSecretsLimit } = req.query; - const result = await server.services.insights.getSummary( - { projectId, staleSecretsOffset, staleSecretsLimit }, - req.permission - ); - await server.services.auditLog.createAuditLog({ - projectId, - event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY, metadata: { projectId } }, - ...req.auditLogInfo - }); - return result; - } - }); -}; diff --git a/backend/src/ee/services/audit-log/audit-log-dal.ts b/backend/src/ee/services/audit-log/audit-log-dal.ts index cf4d8763f9f..7ad9233d0cf 100644 --- a/backend/src/ee/services/audit-log/audit-log-dal.ts +++ b/backend/src/ee/services/audit-log/audit-log-dal.ts @@ -13,14 +13,6 @@ import { ActorType } from "@app/services/auth/auth-type"; import { ACTOR_TYPE_TO_METADATA_ID_KEY, EventType, filterableSecretEvents } from "./audit-log-types"; -type TAggregateQuery = { - orgId: string; - projectId: string; - eventTypes: EventType[]; - startDate: string; - endDate: string; -}; - export interface TAuditLogDALFactory extends Omit, "find"> { pruneAuditLog: () => Promise; getApproximateRowCount: () => Promise; @@ -35,15 +27,6 @@ export interface TAuditLogDALFactory extends Omit, " }, tx?: knex.Knex ) => Promise; - countByDateAndActor: ( - arg: TAggregateQuery, - tx?: knex.Knex - ) => Promise<{ date: string; actor: string; actorMetadata: unknown; count: number }[]>; - countByIpAddress: (arg: TAggregateQuery, tx?: knex.Knex) => Promise<{ ipAddress: string; count: number }[]>; - countByAuthMethod: ( - arg: TAggregateQuery, - tx?: knex.Knex - ) => Promise<{ actor: string; actorMetadata: unknown; count: number }[]>; } type TFindQuery = { @@ -265,111 +248,5 @@ export const auditLogDALFactory = (db: TDbClient) => { return auditLogOrm.create(tx); }; - const countByDateAndActor = async ( - { - orgId, - projectId, - eventTypes, - startDate, - endDate - }: { - orgId: string; - projectId: string; - eventTypes: EventType[]; - startDate: string; - endDate: string; - }, - tx?: knex.Knex - ) => { - const rows = await (tx || db.replicaNode())(TableName.AuditLog) - .where(`${TableName.AuditLog}.orgId`, orgId) - .where(`${TableName.AuditLog}.projectId`, projectId) - .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) - .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) - .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) - .select( - db.raw(`DATE("${TableName.AuditLog}"."createdAt") as date`), - `${TableName.AuditLog}.actor`, - `${TableName.AuditLog}.actorMetadata` - ) - .groupByRaw( - `DATE("${TableName.AuditLog}"."createdAt"), "${TableName.AuditLog}"."actor", "${TableName.AuditLog}"."actorMetadata"` - ) - .select(db.raw("COUNT(*)::int as count")) - .timeout(1000 * 120); - - return rows as { date: string; actor: string; actorMetadata: unknown; count: number }[]; - }; - - const countByIpAddress = async ( - { - orgId, - projectId, - eventTypes, - startDate, - endDate - }: { - orgId: string; - projectId: string; - eventTypes: EventType[]; - startDate: string; - endDate: string; - }, - tx?: knex.Knex - ) => { - const rows = await (tx || db.replicaNode())(TableName.AuditLog) - .where(`${TableName.AuditLog}.orgId`, orgId) - .where(`${TableName.AuditLog}.projectId`, projectId) - .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) - .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) - .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) - .whereNotNull(`${TableName.AuditLog}.ipAddress`) - .select(`${TableName.AuditLog}.ipAddress`) - .groupBy(`${TableName.AuditLog}.ipAddress`) - .select(db.raw("COUNT(*)::int as count")) - .timeout(1000 * 120); - - return rows as { ipAddress: string; count: number }[]; - }; - - const countByAuthMethod = async ( - { - orgId, - projectId, - eventTypes, - startDate, - endDate - }: { - orgId: string; - projectId: string; - eventTypes: EventType[]; - startDate: string; - endDate: string; - }, - tx?: knex.Knex - ) => { - const rows = await (tx || db.replicaNode())(TableName.AuditLog) - .where(`${TableName.AuditLog}.orgId`, orgId) - .where(`${TableName.AuditLog}.projectId`, projectId) - .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) - .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) - .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) - .select(`${TableName.AuditLog}.actor`, `${TableName.AuditLog}.actorMetadata`) - .groupBy(`${TableName.AuditLog}.actor`, `${TableName.AuditLog}.actorMetadata`) - .select(db.raw("COUNT(*)::int as count")) - .timeout(1000 * 120); - - return rows as { actor: string; actorMetadata: unknown; count: number }[]; - }; - - return { - ...auditLogOrm, - create, - pruneAuditLog, - getApproximateRowCount, - find, - countByDateAndActor, - countByIpAddress, - countByAuthMethod - }; + return { ...auditLogOrm, create, pruneAuditLog, getApproximateRowCount, find }; }; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index 41d5206eb28..f3600ccaf74 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -601,12 +601,6 @@ export enum EventType { DASHBOARD_GET_SECRET_VALUE = "dashboard-get-secret-value", DASHBOARD_GET_SECRET_VERSION_VALUE = "dashboard-get-secret-version-value", - VIEW_INSIGHTS_AUTH_METHODS = "view-insights-auth-methods", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR = "view-insights-secrets-management-calendar", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME = "view-insights-secrets-management-access-volume", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS = "view-insights-secrets-management-access-locations", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY = "view-insights-secrets-management-summary", - PAM_SESSION_CREDENTIALS_GET = "pam-session-credentials-get", PAM_SESSION_START = "pam-session-start", PAM_SESSION_LOGS_UPDATE = "pam-session-logs-update", @@ -808,7 +802,7 @@ interface IdentityActorMetadata { identityId: string; name: string; permission?: Record; - authMethod?: string; + aws?: TAWSAuthDetails; kubernetes?: TKubernetesAuthDetails; oidc?: TOidcAuthDetails; @@ -4712,45 +4706,6 @@ interface DashboardGetSecretVersionValueEvent { }; } -interface ViewSecretManagementInsightsCalendarEvent { - type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR; - metadata: { - projectId: string; - month: number; - year: number; - }; -} - -interface ViewSecretManagementInsightsAccessVolumeEvent { - type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME; - metadata: { - projectId: string; - }; -} - -interface ViewSecretManagementInsightsAccessLocationsEvent { - type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS; - metadata: { - projectId: string; - days: number; - }; -} - -interface ViewInsightsAuthMethodsEvent { - type: EventType.VIEW_INSIGHTS_AUTH_METHODS; - metadata: { - projectId: string; - days: number; - }; -} - -interface ViewSecretManagementInsightsSummaryEvent { - type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY; - metadata: { - projectId: string; - }; -} - interface ProjectRoleCreateEvent { type: EventType.CREATE_PROJECT_ROLE; metadata: { @@ -6421,11 +6376,6 @@ export type Event = | DashboardListSecretsEvent | DashboardGetSecretValueEvent | DashboardGetSecretVersionValueEvent - | ViewSecretManagementInsightsCalendarEvent - | ViewSecretManagementInsightsAccessVolumeEvent - | ViewSecretManagementInsightsAccessLocationsEvent - | ViewInsightsAuthMethodsEvent - | ViewSecretManagementInsightsSummaryEvent | ProjectRoleCreateEvent | ProjectRoleUpdateEvent | ProjectRoleDeleteEvent diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts deleted file mode 100644 index a1071ea1480..00000000000 --- a/backend/src/ee/services/insights/insights-service.ts +++ /dev/null @@ -1,498 +0,0 @@ -import { ForbiddenError } from "@casl/ability"; - -// import geoip from "geoip-lite"; -import { ActionProjectType, IdentityAuthMethod } from "@app/db/schemas"; -import { TAuditLogDALFactory } from "@app/ee/services/audit-log/audit-log-dal"; -import { EventType } from "@app/ee/services/audit-log/audit-log-types"; -import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; -import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; -import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; -import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; -import { KeyStorePrefixes, KeyStoreTtls, TKeyStoreFactory } from "@app/keystore/keystore"; -import { withCache } from "@app/lib/cache/with-cache"; -import { BadRequestError } from "@app/lib/errors"; -import { OrgServiceActor } from "@app/lib/types"; -import { ActorType } from "@app/services/auth/auth-type"; -import { TProjectBotServiceFactory } from "@app/services/project-bot/project-bot-service"; -import { TReminderDALFactory } from "@app/services/reminder/reminder-dal"; -import { TSecretFolderDALFactory } from "@app/services/secret-folder/secret-folder-dal"; -import { TSecretV2BridgeDALFactory } from "@app/services/secret-v2-bridge/secret-v2-bridge-dal"; -import { TUserDALFactory } from "@app/services/user/user-dal"; - -import { - // TGetAccessLocationsDTO, - TGetAccessVolumeDTO, - TGetAuthMethodDistributionDTO, - TGetInsightsCalendarDTO, - TGetInsightsSummaryDTO -} from "./insights-types"; - -type TInsightsServiceFactoryDep = { - permissionService: Pick; - licenseService: Pick; - auditLogDAL: Pick; - secretRotationV2DAL: Pick; - reminderDAL: Pick; - folderDAL: Pick; - secretV2BridgeDAL: Pick; - projectBotService: Pick; - userDAL: Pick; - keyStore: Pick; -}; - -export type TInsightsServiceFactory = ReturnType; - -const VALUE_EVENT_TYPES = [ - EventType.GET_SECRETS, - EventType.GET_SECRET, - EventType.DASHBOARD_GET_SECRET_VALUE, - EventType.DASHBOARD_GET_SECRET_VERSION_VALUE, - EventType.GET_SECRET_ROTATION_GENERATED_CREDENTIALS, - EventType.CREATE_DYNAMIC_SECRET_LEASE -]; - -const checkInsightsPermission = async ( - permissionService: TInsightsServiceFactoryDep["permissionService"], - licenseService: TInsightsServiceFactoryDep["licenseService"], - projectId: string, - actor: OrgServiceActor -) => { - const plan = await licenseService.getPlan(actor.orgId); - if (!plan.secretAccessInsights) { - throw new BadRequestError({ - message: "Failed to access insights due to plan restriction. Upgrade your plan to access insights." - }); - } - - const { permission } = await permissionService.getProjectPermission({ - actor: actor.type, - actorId: actor.id, - projectId, - actorAuthMethod: actor.authMethod, - actorOrgId: actor.orgId, - actionProjectType: ActionProjectType.SecretManager - }); - - ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionInsightsActions.Read, ProjectPermissionSub.Insights); -}; - -export const insightsServiceFactory = ({ - permissionService, - licenseService, - auditLogDAL, - secretRotationV2DAL, - reminderDAL, - folderDAL, - secretV2BridgeDAL, - projectBotService, - userDAL, - keyStore -}: TInsightsServiceFactoryDep) => { - const fetchReminders = async (projectId: string, startDate: Date, endDate: Date) => { - const rawReminders = await reminderDAL.findByProjectAndDateRange({ projectId, startDate, endDate }); - if (!rawReminders.length) return []; - - const folderIds = [...new Set(rawReminders.map((r) => r.folderId))]; - const foldersWithPath = await folderDAL.findSecretPathByFolderIds(projectId, folderIds); - const folderRecord: Record = {}; - foldersWithPath.forEach((folder) => { - if (folder) folderRecord[folder.id] = folder.path; - }); - - return rawReminders.map((r) => ({ - id: r.id, - secretId: r.secretId ?? null, - secretKey: r.secretKey, - nextReminderDate: r.nextReminderDate, - message: r.message ?? null, - environment: r.envSlug, - secretPath: folderRecord[r.folderId] ?? "/", - repeatDays: r.repeatDays ?? null - })); - }; - - const getCalendar = async (dto: TGetInsightsCalendarDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); - - const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `calendar:${dto.year}-${dto.month}`); - return withCache({ - keyStore, - key: cacheKey, - ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, - fetcher: async () => { - const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); - if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - - // Pad by 1 day on each side so events near month boundaries are captured - // regardless of the caller's timezone offset from UTC. - const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 0)); - const endDate = new Date(Date.UTC(dto.year, dto.month, 1, 23, 59, 59, 999)); - - const [rotations, reminders] = await Promise.all([ - secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), - fetchReminders(dto.projectId, startDate, endDate) - ]); - - return { - rotations: rotations.map((r) => ({ - id: r.id, - name: r.name, - type: r.type, - nextRotationAt: r.nextRotationAt ?? null, - environment: r.environment.slug, - secretPath: r.folder.path, - secretKeys: r.secretKeys, - rotationInterval: r.rotationInterval, - rotationStatus: r.rotationStatus, - isAutoRotationEnabled: r.isAutoRotationEnabled - })), - reminders - }; - } - }); - }; - - const getAccessVolume = async (dto: TGetAccessVolumeDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); - - const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, "access-volume"); - return withCache({ - keyStore, - key: cacheKey, - ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, - fetcher: async () => { - const now = new Date(); - const todayStr = now.toISOString().slice(0, 10); - const endDate = new Date(`${todayStr}T23:59:59.999Z`); - const startDate = new Date(`${todayStr}T00:00:00.000Z`); - startDate.setUTCDate(startDate.getUTCDate() - 6); - - const rows = await auditLogDAL.countByDateAndActor({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); - - // Resolve user display names from userIds in audit log metadata - const userIds = [ - ...new Set( - rows - .filter((r) => r.actor === ActorType.USER) - .map((r) => (r.actorMetadata as Record | null)?.userId) - .filter(Boolean) as string[] - ) - ]; - const userNameMap = new Map(); - if (userIds.length > 0) { - const users = await userDAL.find({ $in: { id: userIds } }); - users.forEach((u) => { - const displayName = [u.firstName, u.lastName].filter(Boolean).join(" "); - if (displayName) userNameMap.set(u.id, displayName); - }); - } - - // Pre-populate the last 7 days - const dayMap = new Map>(); - for (let i = 6; i >= 0; i -= 1) { - const d = new Date(`${todayStr}T00:00:00.000Z`); - d.setUTCDate(d.getUTCDate() - i); - dayMap.set(d.toISOString().slice(0, 10), new Map()); - } - - rows.forEach((row) => { - const dateKey = typeof row.date === "string" ? row.date : new Date(row.date).toISOString().slice(0, 10); - const actorMap = dayMap.get(dateKey); - if (!actorMap) return; - - const actorMeta = row.actorMetadata as Record | null; - let actorName: string; - if (row.actor === ActorType.USER && actorMeta?.userId) { - actorName = userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; - } else if (row.actor === ActorType.USER) { - actorName = actorMeta?.email || actorMeta?.username || "Unknown"; - } else { - actorName = actorMeta?.name || actorMeta?.identityId || "Unknown"; - } - const actorKey = `${row.actor}:${actorName}`; - - const existing = actorMap.get(actorKey); - if (existing) { - existing.count += row.count; - } else { - actorMap.set(actorKey, { name: actorName, type: row.actor, count: row.count }); - } - }); - - const days = Array.from(dayMap.entries()).map(([date, actorMap]) => { - const actors = Array.from(actorMap.values()).sort((a, b) => b.count - a.count); - const total = actors.reduce((sum, a) => sum + a.count, 0); - return { date, total, actors }; - }); - - return { days }; - } - }); - }; - - // const getAccessLocations = async (dto: TGetAccessLocationsDTO, actorDto: OrgServiceActor) => { - // await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); - - // const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `access-locations:${dto.days}`); - // return withCache(cacheKey, async () => { - // const endDate = new Date(); - // const startDate = new Date(); - // startDate.setUTCDate(startDate.getUTCDate() - dto.days); - - // const ipRows = await auditLogDAL.countByIpAddress({ - // orgId: actorDto.orgId, - // projectId: dto.projectId, - // eventTypes: VALUE_EVENT_TYPES, - // startDate: startDate.toISOString(), - // endDate: endDate.toISOString() - // }); - - // const locationMap = new Map(); - - // const isPrivateIp = (ip: string) => - // ip === "127.0.0.1" || - // ip === "::1" || - // ip === "::ffff:127.0.0.1" || - // ip.startsWith("10.") || - // ip.startsWith("172.16.") || - // ip.startsWith("172.17.") || - // ip.startsWith("172.18.") || - // ip.startsWith("172.19.") || - // ip.startsWith("172.20.") || - // ip.startsWith("172.21.") || - // ip.startsWith("172.22.") || - // ip.startsWith("172.23.") || - // ip.startsWith("172.24.") || - // ip.startsWith("172.25.") || - // ip.startsWith("172.26.") || - // ip.startsWith("172.27.") || - // ip.startsWith("172.28.") || - // ip.startsWith("172.29.") || - // ip.startsWith("172.30.") || - // ip.startsWith("172.31.") || - // ip.startsWith("192.168."); - - // ipRows.forEach(({ ipAddress: ip, count }) => { - // if (isPrivateIp(ip)) { - // const key = "Local Network:LOCAL"; - // const existing = locationMap.get(key); - // if (existing) { - // existing.count += count; - // } else { - // locationMap.set(key, { lat: 0, lng: 0, city: "Local Network", country: "LOCAL", count }); - // } - // return; - // } - - // const geo = geoip.lookup(ip); - // if (!geo || !geo.ll) return; - - // const city = geo.city || geo.region || ""; - // const key = `${city}:${geo.country}`; - // const existing = locationMap.get(key); - // if (existing) { - // existing.count += count; - // } else { - // locationMap.set(key, { - // lat: geo.ll[0], - // lng: geo.ll[1], - // city, - // country: geo.country, - // count - // }); - // } - // }); - - // return { - // locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) - // }; - // }); - // }; - - const getAuthMethodDistribution = async (dto: TGetAuthMethodDistributionDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); - - const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `auth-methods:${dto.days}`); - return withCache({ - keyStore, - key: cacheKey, - ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, - fetcher: async () => { - const endDate = new Date(); - const startDate = new Date(); - startDate.setUTCDate(startDate.getUTCDate() - dto.days); - - const authRows = await auditLogDAL.countByAuthMethod({ - orgId: actorDto.orgId, - projectId: dto.projectId, - eventTypes: VALUE_EVENT_TYPES, - startDate: startDate.toISOString(), - endDate: endDate.toISOString() - }); - - const methodCounts = new Map(); - - const authMethodLabels: Record = { - email: "Email", - google: "Google", - github: "GitHub", - gitlab: "GitLab", - "okta-saml": "Okta SAML", - "azure-saml": "Azure SAML", - "jumpcloud-saml": "JumpCloud SAML", - "google-saml": "Google SAML", - "keycloak-saml": "Keycloak SAML", - ldap: "LDAP", - oidc: "OIDC" - }; - - const identityAuthMethodLabels: Record = { - [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", - [IdentityAuthMethod.TOKEN_AUTH]: "Token Auth", - [IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes", - [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", - [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", - [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth", - [IdentityAuthMethod.OIDC_AUTH]: "OIDC", - [IdentityAuthMethod.JWT_AUTH]: "JWT Auth", - [IdentityAuthMethod.LDAP_AUTH]: "LDAP Auth", - [IdentityAuthMethod.ALICLOUD_AUTH]: "AliCloud Auth", - [IdentityAuthMethod.TLS_CERT_AUTH]: "TLS Certificate", - [IdentityAuthMethod.OCI_AUTH]: "OCI Auth", - [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" - }; - - authRows.forEach((row) => { - const actorMeta = row.actorMetadata as Record | null; - let method = "Unknown"; - - if (row.actor === "user") { - const raw = (actorMeta?.authMethod as string) || "Unknown"; - method = authMethodLabels[raw] || raw; - } else if (row.actor === "identity") { - const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; - method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; - } else if (row.actor === "service") { - method = "Service Token"; - } else { - method = row.actor; - } - - methodCounts.set(method, (methodCounts.get(method) || 0) + (row.count || 0)); - }); - - const methods = Array.from(methodCounts.entries()) - .map(([method, count]) => ({ method, count })) - .sort((a, b) => b.count - a.count); - - return { methods }; - } - }); - }; - - const getSummary = async (dto: TGetInsightsSummaryDTO, actorDto: OrgServiceActor) => { - await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); - - const cacheKey = KeyStorePrefixes.InsightsCache( - dto.projectId, - `summary:${dto.staleSecretsOffset ?? 0}:${dto.staleSecretsLimit ?? 50}` - ); - return withCache({ - keyStore, - key: cacheKey, - ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, - fetcher: async () => { - const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); - if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); - - const now = new Date(); - const in7Days = new Date(now); - in7Days.setDate(now.getDate() + 7); - const lookback90Days = new Date(now); - lookback90Days.setDate(now.getDate() - 90); - const staleThreshold = lookback90Days; - - // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel - // Use 90-day lookback to capture overdue items without unbounded historical queries - const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ - secretRotationV2DAL.findByProjectAndDateRange({ - projectId: dto.projectId, - startDate: lookback90Days, - endDate: in7Days - }), - secretRotationV2DAL.findByProject(dto.projectId), - fetchReminders(dto.projectId, lookback90Days, in7Days) - ]); - - const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ - name: r.name, - environment: r.environment.slug, - secretPath: r.folder.path, - nextRotationAt: r.nextRotationAt ?? null, - rotationStatus: r.rotationStatus - }); - - const mapReminder = (r: (typeof reminders)[number]) => ({ - secretKey: r.secretKey, - environment: r.environment, - secretPath: r.secretPath, - nextReminderDate: r.nextReminderDate - }); - - const upcomingRotations = upcomingRotationsRaw.map(mapRotation); - - const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); - const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); - const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); - - const [rawStaleSecrets, totalStaleCount] = await Promise.all([ - secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold, { - offset: dto.staleSecretsOffset ?? 0, - limit: dto.staleSecretsLimit ?? 50 - }), - secretV2BridgeDAL.countStaleByProject(dto.projectId, staleThreshold) - ]); - - // Resolve folder paths for stale secrets - const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; - const staleFolders = staleFolderIds.length - ? await folderDAL.findSecretPathByFolderIds(dto.projectId, staleFolderIds) - : []; - const staleFolderMap: Record = {}; - staleFolders.forEach((f) => { - if (f) staleFolderMap[f.id] = f.path; - }); - - const staleSecrets = rawStaleSecrets.map((s) => ({ - key: s.key, - environment: s.environment, - secretPath: staleFolderMap[s.folderId] ?? "/", - updatedAt: s.updatedAt - })); - - return { - upcomingRotations, - failedRotations, - upcomingReminders, - overdueReminders, - staleSecrets, - totalStaleCount - }; - } - }); - }; - - return { - getCalendar, - getAccessVolume, - // getAccessLocations, - getAuthMethodDistribution, - getSummary - }; -}; diff --git a/backend/src/ee/services/insights/insights-types.ts b/backend/src/ee/services/insights/insights-types.ts deleted file mode 100644 index 4705b5c6093..00000000000 --- a/backend/src/ee/services/insights/insights-types.ts +++ /dev/null @@ -1,25 +0,0 @@ -export type TGetInsightsCalendarDTO = { - projectId: string; - month: number; - year: number; -}; - -export type TGetAccessVolumeDTO = { - projectId: string; -}; - -export type TGetAccessLocationsDTO = { - projectId: string; - days: number; -}; - -export type TGetAuthMethodDistributionDTO = { - projectId: string; - days: number; -}; - -export type TGetInsightsSummaryDTO = { - projectId: string; - staleSecretsOffset?: number; - staleSecretsLimit?: number; -}; diff --git a/backend/src/ee/services/permission/default-roles.ts b/backend/src/ee/services/permission/default-roles.ts index 32f09b6f8b0..7c3809538fc 100644 --- a/backend/src/ee/services/permission/default-roles.ts +++ b/backend/src/ee/services/permission/default-roles.ts @@ -16,7 +16,6 @@ import { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, - ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, @@ -450,8 +449,6 @@ const buildAdminPermissionRules = () => { can([ProjectPermissionSecretApprovalRequestActions.Read], ProjectPermissionSub.SecretApprovalRequest); - can([ProjectPermissionInsightsActions.Read], ProjectPermissionSub.Insights); - return rules; }; diff --git a/backend/src/ee/services/permission/project-permission.ts b/backend/src/ee/services/permission/project-permission.ts index 480dc0b56f8..8abff74d24b 100644 --- a/backend/src/ee/services/permission/project-permission.ts +++ b/backend/src/ee/services/permission/project-permission.ts @@ -248,10 +248,6 @@ export enum ProjectPermissionAuditLogsActions { Read = "read" } -export enum ProjectPermissionInsightsActions { - Read = "read" -} - export enum ProjectPermissionPamAccountActions { Access = "access", Read = "read", @@ -367,8 +363,7 @@ export enum ProjectPermissionSub { ApprovalRequestGrants = "approval-request-grants", McpEndpoints = "mcp-endpoints", McpServers = "mcp-servers", - McpActivityLogs = "mcp-activity-logs", - Insights = "insights" + McpActivityLogs = "mcp-activity-logs" } // Structure: { [subject]: { [action]: allowedConditionKeys[] } } @@ -701,8 +696,7 @@ export type ProjectPermissionSet = ] | [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests] | [ProjectPermissionApprovalRequestGrantActions, ProjectPermissionSub.ApprovalRequestGrants] - | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest] - | [ProjectPermissionInsightsActions, ProjectPermissionSub.Insights]; + | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest]; const SECRET_PATH_MISSING_SLASH_ERR_MSG = "Invalid Secret Path; it must start with a '/'"; const SECRET_PATH_PERMISSION_OPERATOR_SCHEMA = z.union([ @@ -1525,12 +1519,6 @@ const GeneralPermissionSchema = [ "Describe what action an entity can take." ) }), - z.object({ - subject: z.literal(ProjectPermissionSub.Insights).describe("The entity this permission pertains to."), - action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionInsightsActions).describe( - "Describe what action an entity can take." - ) - }), z.object({ subject: z.literal(ProjectPermissionSub.IpAllowList).describe("The entity this permission pertains to."), action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionActions).describe( diff --git a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts index 01f85dbab5d..4ef50038ccd 100644 --- a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts +++ b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts @@ -469,88 +469,6 @@ export const secretRotationV2DALFactory = ( } }; - const findByProjectAndDateRange = async ( - { - projectId, - startDate, - endDate - }: { - projectId: string; - startDate: Date; - endDate: Date; - }, - tx?: Knex - ) => { - try { - const query = (tx || db.replicaNode())(TableName.SecretRotationV2) - .join(TableName.SecretFolder, `${TableName.SecretRotationV2}.folderId`, `${TableName.SecretFolder}.id`) - .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) - .join(TableName.AppConnection, `${TableName.SecretRotationV2}.connectionId`, `${TableName.AppConnection}.id`) - .join( - TableName.SecretRotationV2SecretMapping, - `${TableName.SecretRotationV2SecretMapping}.rotationId`, - `${TableName.SecretRotationV2}.id` - ) - .join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretRotationV2SecretMapping}.secretId`) - .where(`${TableName.Environment}.projectId`, projectId) - .whereNotNull(`${TableName.SecretRotationV2}.nextRotationAt`); - - const rawRotations = await query - .whereBetween(`${TableName.SecretRotationV2}.nextRotationAt`, [startDate, endDate]) - .select( - selectAllTableCols(TableName.SecretRotationV2), - db.ref("name").withSchema(TableName.Environment).as("envName"), - db.ref("id").withSchema(TableName.Environment).as("envId"), - db.ref("slug").withSchema(TableName.Environment).as("envSlug"), - db.ref("id").withSchema(TableName.AppConnection).as("connectionAppId"), - db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), - db.ref("id").withSchema(TableName.SecretV2).as("secretId") - ); - - if (!rawRotations.length) return []; - - const foldersWithPath = await folderDAL.findSecretPathByFolderIds( - projectId, - rawRotations.map((r) => r.folderId), - tx - ); - - const folderRecord: Record = {}; - foldersWithPath.forEach((folder) => { - if (folder) folderRecord[folder.id] = folder; - }); - - return sqlNestRelationships({ - data: rawRotations, - key: "id", - parentMapper: (rotation) => ({ - id: rotation.id, - name: rotation.name, - type: rotation.type, - nextRotationAt: rotation.nextRotationAt, - rotationInterval: rotation.rotationInterval, - rotationStatus: rotation.rotationStatus, - isAutoRotationEnabled: rotation.isAutoRotationEnabled, - environment: { slug: rotation.envSlug, name: rotation.envName, id: rotation.envId }, - folder: { - id: rotation.folderId, - path: folderRecord[rotation.folderId]?.path ?? "/" - }, - connection: { id: rotation.connectionAppId } - }), - childrenMapper: [ - { - key: "secretKey", - label: "secretKeys" as const, - mapper: ({ secretKey }) => secretKey - } - ] - }); - } catch (error) { - throw new DatabaseError({ error, name: "Find Calendar Rotations - Secret Rotation V2" }); - } - }; - const findSecretRotationsToQueue = async (rotateBy: Date, tx?: Knex) => { const secretRotations = await (tx || db.replicaNode())(TableName.SecretRotationV2) .where(`${TableName.SecretRotationV2}.isAutoRotationEnabled`, true) @@ -561,73 +479,6 @@ export const secretRotationV2DALFactory = ( return secretRotations; }; - const findByProject = async (projectId: string, tx?: Knex) => { - try { - const rawRotations = await (tx || db.replicaNode())(TableName.SecretRotationV2) - .join(TableName.SecretFolder, `${TableName.SecretRotationV2}.folderId`, `${TableName.SecretFolder}.id`) - .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) - .join(TableName.AppConnection, `${TableName.SecretRotationV2}.connectionId`, `${TableName.AppConnection}.id`) - .join( - TableName.SecretRotationV2SecretMapping, - `${TableName.SecretRotationV2SecretMapping}.rotationId`, - `${TableName.SecretRotationV2}.id` - ) - .join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretRotationV2SecretMapping}.secretId`) - .where(`${TableName.Environment}.projectId`, projectId) - .select( - selectAllTableCols(TableName.SecretRotationV2), - db.ref("name").withSchema(TableName.Environment).as("envName"), - db.ref("id").withSchema(TableName.Environment).as("envId"), - db.ref("slug").withSchema(TableName.Environment).as("envSlug"), - db.ref("id").withSchema(TableName.AppConnection).as("connectionAppId"), - db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), - db.ref("id").withSchema(TableName.SecretV2).as("secretId") - ); - - if (!rawRotations.length) return []; - - const foldersWithPath = await folderDAL.findSecretPathByFolderIds( - projectId, - rawRotations.map((r) => r.folderId), - tx - ); - - const folderRecord: Record = {}; - foldersWithPath.forEach((folder) => { - if (folder) folderRecord[folder.id] = folder; - }); - - return sqlNestRelationships({ - data: rawRotations, - key: "id", - parentMapper: (rotation) => ({ - id: rotation.id, - name: rotation.name, - type: rotation.type, - nextRotationAt: rotation.nextRotationAt, - rotationInterval: rotation.rotationInterval, - rotationStatus: rotation.rotationStatus, - isAutoRotationEnabled: rotation.isAutoRotationEnabled, - environment: { slug: rotation.envSlug, name: rotation.envName, id: rotation.envId }, - folder: { - id: rotation.folderId, - path: folderRecord[rotation.folderId]?.path ?? "/" - }, - connection: { id: rotation.connectionAppId } - }), - childrenMapper: [ - { - key: "secretKey", - label: "secretKeys" as const, - mapper: ({ secretKey }) => secretKey - } - ] - }); - } catch (error) { - throw new DatabaseError({ error, name: "Find by Project - Secret Rotation V2" }); - } - }; - return { ...secretRotationV2Orm, find, @@ -639,8 +490,6 @@ export const secretRotationV2DALFactory = ( insertSecretMappings: secretRotationV2SecretMappingOrm.insertMany, findWithMappedSecrets, findWithMappedSecretsCount, - findByProjectAndDateRange, - findByProject, findSecretRotationsToQueue }; }; diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index a640b1dddea..41460bf8192 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -109,8 +109,7 @@ export const KeyStorePrefixes = { CertDashboardStats: (projectId: string) => `cert-dashboard-stats:${projectId}` as const, CertActivityTrend: (projectId: string, range: string) => `cert-activity-trend:${projectId}:${range}` as const, - RefreshTokenGrace: (sessionId: string) => `refresh-token-grace:${sessionId}` as const, - InsightsCache: (projectId: string, endpoint: string) => `insights-cache:${projectId}:${endpoint}` as const + RefreshTokenGrace: (sessionId: string) => `refresh-token-grace:${sessionId}` as const }; export const KeyStoreTtls = { @@ -123,8 +122,7 @@ export const KeyStoreTtls = { WebAuthnChallengeInSeconds: 300, // 5 minutes ProjectSSEConnectionTtlSeconds: 180, // Must be > heartbeat interval (60s) * 2 TelemetryIdentifyIdentityInSeconds: 86400, // 24 hours - RefreshTokenGraceInSeconds: 30, - InsightsCacheInSeconds: 300 // 5 minutes + RefreshTokenGraceInSeconds: 30 }; type TDeleteItems = { diff --git a/backend/src/server/plugins/audit-log.ts b/backend/src/server/plugins/audit-log.ts index 725f8b5ca5f..47120d0bea5 100644 --- a/backend/src/server/plugins/audit-log.ts +++ b/backend/src/server/plugins/audit-log.ts @@ -50,12 +50,10 @@ export const injectAuditLogInfo = fp(async (server: FastifyZodProvider) => { req.auditLogInfo = payload; return; } - if (req.auth.actor === ActorType.USER) { payload.actor = { type: ActorType.USER, metadata: { - ...(req.auth.authMethod ? { authMethod: req.auth.authMethod } : {}), email: req.auth.user.email, username: req.auth.user.username, userId: req.permission.id @@ -77,7 +75,6 @@ export const injectAuditLogInfo = fp(async (server: FastifyZodProvider) => { metadata: { name: req.auth.identityName, identityId: req.auth.identityId, - ...(identityAuthInfo?.authMethod ? { authMethod: identityAuthInfo.authMethod } : {}), ...(identityAuthInfo?.aws ? { aws: identityAuthInfo.aws } : {}), ...(identityAuthInfo?.kubernetes ? { kubernetes: identityAuthInfo.kubernetes } : {}), ...(identityAuthInfo?.oidc ? { oidc: identityAuthInfo.oidc } : {}) diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index de8a5cf5586..6e0a2449796 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -73,7 +73,6 @@ import { isHsmActiveAndEnabled } from "@app/ee/services/hsm/hsm-fns"; import { THsmServiceFactory } from "@app/ee/services/hsm/hsm-service"; import { identityAuthTemplateDALFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-dal"; import { identityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-service"; -import { insightsServiceFactory } from "@app/ee/services/insights/insights-service"; import { kmipClientCertificateDALFactory } from "@app/ee/services/kmip/kmip-client-certificate-dal"; import { kmipClientDALFactory } from "@app/ee/services/kmip/kmip-client-dal"; import { kmipOperationServiceFactory } from "@app/ee/services/kmip/kmip-operation-service"; @@ -2381,19 +2380,6 @@ export const registerRoutes = async ( gatewayV2Service }); - const insightsService = insightsServiceFactory({ - permissionService, - licenseService, - auditLogDAL, - secretRotationV2DAL, - reminderDAL, - folderDAL, - secretV2BridgeDAL, - projectBotService, - userDAL, - keyStore - }); - const pkiSyncQueue = pkiSyncQueueFactory({ queueService, kmsService, @@ -3224,7 +3210,6 @@ export const registerRoutes = async ( secretRotationV2: secretRotationV2Service, microsoftTeams: microsoftTeamsService, assumePrivileges: assumePrivilegeService, - insights: insightsService, githubOrgSync: githubOrgSyncConfigService, folderCommit: folderCommitService, secretScanningV2: secretScanningV2Service, diff --git a/backend/src/services/reminder/reminder-dal.ts b/backend/src/services/reminder/reminder-dal.ts index bad70197169..4161552a95e 100644 --- a/backend/src/services/reminder/reminder-dal.ts +++ b/backend/src/services/reminder/reminder-dal.ts @@ -148,58 +148,11 @@ export const reminderDALFactory = (db: TDbClient) => { return reminders; }; - const findByProjectAndDateRange = async ( - { - projectId, - startDate, - endDate - }: { - projectId: string; - startDate: Date; - endDate: Date; - }, - tx?: Knex - ) => { - const query = (tx || db.replicaNode())(TableName.Reminder) - .whereNotNull(`${TableName.Reminder}.secretId`) - .whereBetween(`${TableName.Reminder}.nextReminderDate`, [startDate, endDate]) - .join(TableName.SecretV2, `${TableName.Reminder}.secretId`, `${TableName.SecretV2}.id`) - .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) - .join( - TableName.Environment, - `${TableName.SecretFolder}.envId`, - `${TableName.Environment}.id` - ) - .where(`${TableName.Environment}.projectId`, projectId); - - const rawReminders = await query - .select(selectAllTableCols(TableName.Reminder)) - .select( - db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), - db.ref("folderId").withSchema(TableName.SecretV2).as("secretFolderId"), - db.ref("slug").withSchema(TableName.Environment).as("envSlug"), - db.ref("name").withSchema(TableName.Environment).as("envName") - ); - - return rawReminders.map((r) => ({ - id: r.id, - secretId: r.secretId, - secretKey: (r as unknown as Record).secretKey, - nextReminderDate: r.nextReminderDate, - message: r.message, - repeatDays: r.repeatDays, - folderId: (r as unknown as Record).secretFolderId, - envSlug: (r as unknown as Record).envSlug, - envName: (r as unknown as Record).envName - })); - }; - return { ...reminderOrm, findSecretDailyReminders, findUpcomingReminders, findSecretReminder, - findSecretReminders, - findByProjectAndDateRange + findSecretReminders }; }; diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts index c01fc9178c0..13295398038 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts @@ -1128,52 +1128,6 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { } }; - const findStaleByProject = async ( - projectId: string, - staleBeforeDate: Date, - pagination?: { offset: number; limit: number }, - tx?: Knex - ) => { - try { - const result = await (tx || db.replicaNode())(TableName.SecretV2) - .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) - .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) - .where(`${TableName.Environment}.projectId`, projectId) - .whereNull(`${TableName.SecretV2}.userId`) - .where(`${TableName.SecretV2}.updatedAt`, "<", staleBeforeDate) - .select( - `${TableName.SecretV2}.key`, - `${TableName.SecretV2}.updatedAt`, - `${TableName.SecretV2}.folderId`, - `${TableName.Environment}.slug as environment` - ) - .orderBy(`${TableName.SecretV2}.updatedAt`, "asc") - .offset(pagination?.offset ?? 0) - .limit(pagination?.limit ?? 50); - - return result as { key: string; updatedAt: Date; folderId: string; environment: string }[]; - } catch (error) { - throw new DatabaseError({ error, name: "findStaleByProject" }); - } - }; - - const countStaleByProject = async (projectId: string, staleBeforeDate: Date, tx?: Knex) => { - try { - const result = await (tx || db.replicaNode())(TableName.SecretV2) - .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) - .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) - .where(`${TableName.Environment}.projectId`, projectId) - .whereNull(`${TableName.SecretV2}.userId`) - .where(`${TableName.SecretV2}.updatedAt`, "<", staleBeforeDate) - .count("* as count") - .first(); - - return Number((result as { count?: string | number })?.count ?? 0); - } catch (error) { - throw new DatabaseError({ error, name: "countStaleByProject" }); - } - }; - return { ...secretOrm, update, @@ -1190,8 +1144,6 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { findReferencedSecretReferences, findAllProjectSecretValues, countByFolderIds, - findStaleByProject, - countStaleByProject, findOne, find, invalidateSecretCacheByProjectId, diff --git a/docs/internals/permissions/project-permissions.mdx b/docs/internals/permissions/project-permissions.mdx index 820057b098e..a225341a559 100644 --- a/docs/internals/permissions/project-permissions.mdx +++ b/docs/internals/permissions/project-permissions.mdx @@ -284,12 +284,6 @@ Supports conditions and permission inversion. | `delete-root-credential` | Remove dynamic secrets | `environment`, `secretPath`, `metadata` | | `lease` | Create dynamic secret leases | `environment`, `secretPath`, `metadata` | -#### Subject: `insights` - -| Action | Description | -| ------ | ------------------------------------------------------------------------------------ | -| `read` | View project insights dashboard, including secret access volume, access locations, auth method distribution, and rotation/reminder calendar | - ### Key Management Service (KMS) #### Subject: `kms` diff --git a/frontend/src/const/routes.ts b/frontend/src/const/routes.ts index c724a707461..97934d127e2 100644 --- a/frontend/src/const/routes.ts +++ b/frontend/src/const/routes.ts @@ -111,10 +111,6 @@ export const ROUTE_PATHS = Object.freeze({ "/organizations/$orgId/projects/secret-management/$projectId/settings", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings" ), - InsightsPage: setRoute( - "/organizations/$orgId/projects/secret-management/$projectId/insights", - "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights" - ), IntegrationDetailsByIDPage: setRoute( "/organizations/$orgId/projects/secret-management/$projectId/integrations/$integrationId", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/$integrationId" diff --git a/frontend/src/context/ProjectPermissionContext/index.tsx b/frontend/src/context/ProjectPermissionContext/index.tsx index 742ddd9726c..9b46b386870 100644 --- a/frontend/src/context/ProjectPermissionContext/index.tsx +++ b/frontend/src/context/ProjectPermissionContext/index.tsx @@ -12,7 +12,6 @@ export { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, - ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, diff --git a/frontend/src/context/ProjectPermissionContext/types.ts b/frontend/src/context/ProjectPermissionContext/types.ts index 1ab4d19aad4..27169a1ad2f 100644 --- a/frontend/src/context/ProjectPermissionContext/types.ts +++ b/frontend/src/context/ProjectPermissionContext/types.ts @@ -227,10 +227,6 @@ export enum ProjectPermissionAuditLogsActions { Read = "read" } -export enum ProjectPermissionInsightsActions { - Read = "read" -} - export enum ProjectPermissionAppConnectionActions { Read = "read-app-connections", Create = "create-app-connections", @@ -446,8 +442,7 @@ export enum ProjectPermissionSub { McpServers = "mcp-servers", McpActivityLogs = "mcp-activity-logs", ApprovalRequests = "approval-requests", - ApprovalRequestGrants = "approval-request-grants", - Insights = "insights" + ApprovalRequestGrants = "approval-request-grants" } export type SecretSubjectFields = { @@ -734,7 +729,6 @@ export type ProjectPermissionSet = | [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests] | [ProjectPermissionApprovalRequestGrantActions, ProjectPermissionSub.ApprovalRequestGrants] | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest] - | [ProjectPermissionInsightsActions, ProjectPermissionSub.Insights] | [ ProjectPermissionMcpEndpointActions, ( diff --git a/frontend/src/context/index.tsx b/frontend/src/context/index.tsx index 12d6ef9d01f..8a34bfceeac 100644 --- a/frontend/src/context/index.tsx +++ b/frontend/src/context/index.tsx @@ -25,7 +25,6 @@ export { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, - ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, diff --git a/frontend/src/hooks/api/auditLogs/constants.tsx b/frontend/src/hooks/api/auditLogs/constants.tsx index 16574165527..9274f57e701 100644 --- a/frontend/src/hooks/api/auditLogs/constants.tsx +++ b/frontend/src/hooks/api/auditLogs/constants.tsx @@ -245,15 +245,6 @@ export const eventToNameMap: { [K in EventType]: string } = { [EventType.DASHBOARD_GET_SECRET_VALUE]: "Dashboard Get Secret Value", [EventType.DASHBOARD_GET_SECRET_VERSION_VALUE]: "Dashboard Get Secret Version Value", - [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR]: - "View Secrets Management Calendar Insights", - [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME]: - "View Secrets Management Access Volume Insights", - [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS]: - "View Secrets Management Access Locations Insights", - [EventType.VIEW_INSIGHTS_AUTH_METHODS]: "View Machine Identity Auth Methods Insights", - [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY]: "View Secrets Management Summary Insights", - [EventType.CREATE_PROJECT_ROLE]: "Create Project Role", [EventType.UPDATE_PROJECT_ROLE]: "Update Project Role", [EventType.DELETE_PROJECT_ROLE]: "Delete Project Role", diff --git a/frontend/src/hooks/api/auditLogs/enums.tsx b/frontend/src/hooks/api/auditLogs/enums.tsx index 0dea9377f3e..a74bb03096f 100644 --- a/frontend/src/hooks/api/auditLogs/enums.tsx +++ b/frontend/src/hooks/api/auditLogs/enums.tsx @@ -240,12 +240,6 @@ export enum EventType { DASHBOARD_GET_SECRET_VALUE = "dashboard-get-secret-value", DASHBOARD_GET_SECRET_VERSION_VALUE = "dashboard-get-secret-version-value", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR = "view-insights-secrets-management-calendar", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME = "view-insights-secrets-management-access-volume", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS = "view-insights-secrets-management-access-locations", - VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY = "view-insights-secrets-management-summary", - VIEW_INSIGHTS_AUTH_METHODS = "view-insights-auth-methods", - CREATE_PROJECT_ROLE = "create-project-role", UPDATE_PROJECT_ROLE = "update-project-role", DELETE_PROJECT_ROLE = "delete-project-role", diff --git a/frontend/src/hooks/api/index.tsx b/frontend/src/hooks/api/index.tsx index 4221f193e26..a3b6fe219e1 100644 --- a/frontend/src/hooks/api/index.tsx +++ b/frontend/src/hooks/api/index.tsx @@ -55,7 +55,6 @@ export * from "./secretApproval"; export * from "./secretApprovalRequest"; export * from "./secretFolders"; export * from "./secretImports"; -export * from "./secretInsights"; export * from "./secretRotation"; export * from "./secrets"; export * from "./secretSharing"; diff --git a/frontend/src/hooks/api/secretInsights/index.ts b/frontend/src/hooks/api/secretInsights/index.ts deleted file mode 100644 index 6f6a248854a..00000000000 --- a/frontend/src/hooks/api/secretInsights/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -export { - useGetAuthMethodDistribution, - useGetCalendarInsights, - useGetInsightsSummary, - // useGetSecretAccessLocations, - useGetSecretAccessVolume -} from "./queries"; -export type { - TAccessLocation, - TAuthMethodCount, - TCalendarReminder, - TCalendarRotation, - TGetAuthMethodDistributionDTO, - TGetAuthMethodDistributionResponse, - TGetCalendarInsightsDTO, - TGetCalendarInsightsResponse, - TGetSecretAccessLocationsDTO, - TGetSecretAccessLocationsResponse, - TGetSecretAccessVolumeDTO, - TGetSecretAccessVolumeResponse, - TSecretAccessVolumeActor, - TSecretAccessVolumeDay -} from "./types"; diff --git a/frontend/src/hooks/api/secretInsights/queries.tsx b/frontend/src/hooks/api/secretInsights/queries.tsx deleted file mode 100644 index c0d72b17053..00000000000 --- a/frontend/src/hooks/api/secretInsights/queries.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import { useQuery, UseQueryOptions } from "@tanstack/react-query"; - -import { apiRequest } from "@app/config/request"; - -import { - TGetAuthMethodDistributionDTO, - TGetAuthMethodDistributionResponse, - TGetCalendarInsightsDTO, - TGetCalendarInsightsResponse, - TGetInsightsSummaryDTO, - TGetInsightsSummaryResponse, - // TGetSecretAccessLocationsDTO, - // TGetSecretAccessLocationsResponse, - TGetSecretAccessVolumeDTO, - TGetSecretAccessVolumeResponse -} from "./types"; - -export const secretInsightsKeys = { - all: () => ["secret-insights"] as const, - calendarEvents: (params: TGetCalendarInsightsDTO) => - [...secretInsightsKeys.all(), "calendar-events", params] as const, - accessVolume: (params: TGetSecretAccessVolumeDTO) => - [...secretInsightsKeys.all(), "access-volume", params] as const, - // accessLocations: (params: TGetSecretAccessLocationsDTO) => - // [...secretInsightsKeys.all(), "access-locations", params] as const, - authMethodDistribution: (params: TGetAuthMethodDistributionDTO) => - [...secretInsightsKeys.all(), "auth-method-distribution", params] as const, - summary: (params: TGetInsightsSummaryDTO) => - [...secretInsightsKeys.all(), "summary", params] as const -}; - -const INSIGHTS_STALE_TIME = 5 * 60 * 1000; // 5 minutes - -export const useGetCalendarInsights = ( - params: TGetCalendarInsightsDTO, - options?: Omit< - UseQueryOptions< - TGetCalendarInsightsResponse, - unknown, - TGetCalendarInsightsResponse, - ReturnType - >, - "queryKey" | "queryFn" - > -) => { - return useQuery({ - queryKey: secretInsightsKeys.calendarEvents(params), - queryFn: async () => { - const { data } = await apiRequest.get( - "/api/v1/insights/secrets/calendar", - { params } - ); - return data; - }, - staleTime: INSIGHTS_STALE_TIME, - ...options - }); -}; - -export const useGetSecretAccessVolume = ( - params: TGetSecretAccessVolumeDTO, - options?: Omit< - UseQueryOptions< - TGetSecretAccessVolumeResponse, - unknown, - TGetSecretAccessVolumeResponse, - ReturnType - >, - "queryKey" | "queryFn" - > -) => { - return useQuery({ - queryKey: secretInsightsKeys.accessVolume(params), - queryFn: async () => { - const { data } = await apiRequest.get( - "/api/v1/insights/secrets/access-volume", - { params } - ); - return data; - }, - staleTime: INSIGHTS_STALE_TIME, - ...options - }); -}; - -// export const useGetSecretAccessLocations = ( -// params: TGetSecretAccessLocationsDTO, -// options?: Omit< -// UseQueryOptions< -// TGetSecretAccessLocationsResponse, -// unknown, -// TGetSecretAccessLocationsResponse, -// ReturnType -// >, -// "queryKey" | "queryFn" -// > -// ) => { -// return useQuery({ -// queryKey: secretInsightsKeys.accessLocations(params), -// queryFn: async () => { -// const { data } = await apiRequest.get( -// "/api/v1/insights/secrets/access-locations", -// { params } -// ); -// return data; -// }, -// staleTime: INSIGHTS_STALE_TIME, -// ...options -// }); -// }; - -export const useGetAuthMethodDistribution = ( - params: TGetAuthMethodDistributionDTO, - options?: Omit< - UseQueryOptions< - TGetAuthMethodDistributionResponse, - unknown, - TGetAuthMethodDistributionResponse, - ReturnType - >, - "queryKey" | "queryFn" - > -) => { - return useQuery({ - queryKey: secretInsightsKeys.authMethodDistribution(params), - queryFn: async () => { - const { data } = await apiRequest.get( - "/api/v1/insights/auth/method-distribution", - { params } - ); - return data; - }, - staleTime: INSIGHTS_STALE_TIME, - ...options - }); -}; - -export const useGetInsightsSummary = ( - params: TGetInsightsSummaryDTO, - options?: Omit< - UseQueryOptions< - TGetInsightsSummaryResponse, - unknown, - TGetInsightsSummaryResponse, - ReturnType - >, - "queryKey" | "queryFn" - > -) => { - return useQuery({ - queryKey: secretInsightsKeys.summary(params), - queryFn: async () => { - const { data } = await apiRequest.get( - "/api/v1/insights/secrets/summary", - { params } - ); - return data; - }, - staleTime: INSIGHTS_STALE_TIME, - ...options - }); -}; diff --git a/frontend/src/hooks/api/secretInsights/types.ts b/frontend/src/hooks/api/secretInsights/types.ts deleted file mode 100644 index 71f6909fa38..00000000000 --- a/frontend/src/hooks/api/secretInsights/types.ts +++ /dev/null @@ -1,122 +0,0 @@ -export type TCalendarRotation = { - id: string; - name: string; - type: string; - nextRotationAt: string | null; - environment: string; - secretPath: string; - secretKeys: string[]; - rotationInterval: number; - rotationStatus: string | null; - isAutoRotationEnabled: boolean; -}; - -export type TCalendarReminder = { - id: string; - secretId: string | null; - secretKey: string; - nextReminderDate: string; - message?: string | null; - environment: string; - secretPath: string; - repeatDays?: number | null; -}; - -export type TGetCalendarInsightsDTO = { - projectId: string; - month: number; - year: number; -}; - -export type TGetCalendarInsightsResponse = { - rotations: TCalendarRotation[]; - reminders: TCalendarReminder[]; -}; - -export type TSecretAccessVolumeActor = { - name: string; - type: string; - count: number; -}; - -export type TSecretAccessVolumeDay = { - date: string; - total: number; - actors: TSecretAccessVolumeActor[]; -}; - -export type TGetSecretAccessVolumeDTO = { - projectId: string; -}; - -export type TGetInsightsSummaryDTO = { - projectId: string; - staleSecretsOffset?: number; - staleSecretsLimit?: number; -}; - -export type TInsightRotationItem = { - name: string; - environment: string; - secretPath: string; - nextRotationAt: string | null; - rotationStatus: string | null; -}; - -export type TInsightReminderItem = { - secretKey: string; - environment: string; - secretPath: string; - nextReminderDate: string; -}; - -export type TInsightStaleSecretItem = { - key: string; - environment: string; - secretPath: string; - updatedAt: string; -}; - -export type TGetInsightsSummaryResponse = { - upcomingRotations: TInsightRotationItem[]; - failedRotations: TInsightRotationItem[]; - upcomingReminders: TInsightReminderItem[]; - overdueReminders: TInsightReminderItem[]; - staleSecrets: TInsightStaleSecretItem[]; - totalStaleCount: number; -}; - -export type TGetSecretAccessVolumeResponse = { - days: TSecretAccessVolumeDay[]; -}; - -export type TAccessLocation = { - lat: number; - lng: number; - city: string; - country: string; - count: number; -}; - -export type TGetSecretAccessLocationsDTO = { - projectId: string; - days?: number; -}; - -export type TGetSecretAccessLocationsResponse = { - locations: TAccessLocation[]; -}; - -export type TAuthMethodCount = { - method: string; - count: number; -}; - -export type TGetAuthMethodDistributionDTO = { - projectId: string; - days?: number; -}; - -export type TGetAuthMethodDistributionResponse = { - methods: TAuthMethodCount[]; -}; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx index fd031544fa0..c8b4bde57b4 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx @@ -1,5 +1,4 @@ import { - ActivityIcon, BookCheck, DoorOpen, FileKey, @@ -92,7 +91,6 @@ export const SecretManagerNav = ({ pathSuffix: "secret-rotation", hidden: !secretRotations?.length }, - { label: "Access Control", icon: Shield, @@ -100,11 +98,6 @@ export const SecretManagerNav = ({ activeMatch: /\/groups\/|\/identities\/|\/members\/|\/roles\//, submenu: SECRET_MANAGER_ACCESS_CONTROL_SUBMENU }, - { - label: "Insights", - icon: ActivityIcon, - pathSuffix: "insights" - }, { label: "Audit Logs", icon: FileText, pathSuffix: "audit-logs" }, { label: "Settings", icon: Settings, pathSuffix: "settings", submenu: SM_SETTINGS_SUBMENU } ]; diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx index 442cb5f2a96..6f33b2c5104 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx @@ -21,7 +21,6 @@ import { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, - ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, @@ -60,10 +59,6 @@ const AuditLogsPolicyActionSchema = z.object({ [ProjectPermissionAuditLogsActions.Read]: z.boolean().optional() }); -const InsightsPolicyActionSchema = z.object({ - [ProjectPermissionInsightsActions.Read]: z.boolean().optional() -}); - const CertificatePolicyActionSchema = z.object({ [ProjectPermissionCertificateActions.Create]: z.boolean().optional(), [ProjectPermissionCertificateActions.Delete]: z.boolean().optional(), @@ -694,7 +689,6 @@ export const projectRoleFormSchema = z.object({ [ProjectPermissionSub.Settings]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.Environments]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.AuditLogs]: AuditLogsPolicyActionSchema.array().default([]), - [ProjectPermissionSub.Insights]: InsightsPolicyActionSchema.array().default([]), [ProjectPermissionSub.IpAllowList]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.CertificateAuthorities]: CertificateAuthorityPolicyActionSchema.extend({ inverted: z.boolean().optional(), @@ -1056,8 +1050,7 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => { ProjectPermissionSub.PamResources, ProjectPermissionSub.McpEndpoints, ProjectPermissionSub.McpServers, - ProjectPermissionSub.McpActivityLogs, - ProjectPermissionSub.Insights + ProjectPermissionSub.McpActivityLogs ].includes(subject) ) { // from above statement we are sure it won't be undefined @@ -2464,17 +2457,6 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = { } ] }, - [ProjectPermissionSub.Insights]: { - title: "Insights", - description: "View project analytics and insights dashboards", - actions: [ - { - label: "Read", - value: ProjectPermissionInsightsActions.Read, - description: "View secret access volume, locations, auth methods, and calendar insights" - } - ] - }, [ProjectPermissionSub.IpAllowList]: { title: "IP Allowlist", description: "Restrict project access by IP address", @@ -3412,7 +3394,6 @@ const SecretsManagerPermissionSubjects = (enabled = false) => ({ [ProjectPermissionSub.SecretRotation]: enabled, [ProjectPermissionSub.ServiceTokens]: enabled, [ProjectPermissionSub.Commits]: enabled, - [ProjectPermissionSub.Insights]: enabled, [ProjectPermissionSub.SecretEventSubscriptions]: enabled, [ProjectPermissionSub.SecretApprovalRequest]: enabled }); diff --git a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx deleted file mode 100644 index add4ba9c722..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import { useEffect } from "react"; -import { Helmet } from "react-helmet"; - -import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; -import { PageHeader } from "@app/components/v2"; -import { - ProjectPermissionInsightsActions, - ProjectPermissionSub, - useSubscription -} from "@app/context"; -import { withProjectPermission } from "@app/hoc"; -import { ProjectType } from "@app/hooks/api/projects/types"; -import { usePopUp } from "@app/hooks/usePopUp"; - -import { - AuthMethodChart, - CalendarCard, - InsightsSummaryCards, - SecretAccessChart -} from "./components"; - -export const InsightsPage = withProjectPermission( - () => { - const { subscription } = useSubscription(); - const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["upgradePlan"] as const); - - useEffect(() => { - if (subscription && !subscription.secretAccessInsights) { - handlePopUpOpen("upgradePlan"); - } - }, [subscription]); - - return ( - <> - - Insights - - - -
-
- {/* */} - -
-
- - -
-
- { - handlePopUpToggle("upgradePlan", isOpen); - }} - text="Your current plan does not include access to secret insights. To unlock this feature, please upgrade your Infisical plan." - /> - - ); - }, - { - action: ProjectPermissionInsightsActions.Read, - subject: ProjectPermissionSub.Insights - } -); diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx deleted file mode 100644 index 7db2e3fdaa9..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { useMemo } from "react"; -import { InfoIcon } from "lucide-react"; -import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip } from "recharts"; - -import { - Skeleton, - Tooltip as V3Tooltip, - TooltipContent, - TooltipTrigger, - UnstableCard, - UnstableCardContent, - UnstableCardDescription, - UnstableCardHeader, - UnstableCardTitle, - UnstableEmpty, - UnstableEmptyHeader, - UnstableEmptyTitle -} from "@app/components/v3"; -import { useProject } from "@app/context"; -import { useGetAuthMethodDistribution } from "@app/hooks/api"; - -// Palette using theme-aligned colors -// 13 muted, dark-theme-friendly base colors (used for legend dots and gradient outer stops) -const COLORS = [ - "#63b0bd", // teal (info) - "#f1c40f", // gold (warning) - "#6dbf8b", // sage green - "#c084d8", // soft purple - "#e8855e", // burnt orange - "#5b9bd5", // steel blue - "#e06b8f", // dusty rose - "#85c46c", // leaf green - "#d4a054", // amber - "#7b8ec4", // periwinkle - "#cb6b6b", // muted red - "#4fc1b0", // seafoam - "#b8a060" // olive gold -]; - -// Radial gradient IDs for each color — fades from color at outer edge to transparent at center -const gradientId = (index: number) => `pie-radial-${index}`; - -export const AuthMethodChart = () => { - const { projectId } = useProject(); - - const { data, isPending } = useGetAuthMethodDistribution( - { projectId, days: 30 }, - { enabled: !!projectId } - ); - - const methods = data?.methods ?? []; - const total = useMemo(() => methods.reduce((sum, m) => sum + m.count, 0), [methods]); - - return ( - - - Authentication Methods - - Distribution of auth methods used for secret access over the past 30 days - - - - {isPending && } - {!isPending && methods.length === 0 && ( - - - No secret access data available - - - )} - {!isPending && methods.length > 0 && ( -
-
- - - - {COLORS.map((color, i) => ( - - - - - - ))} - - - {methods.map((entry, index) => ( - - ))} - - [ - `${Number(value).toLocaleString()} (${total > 0 ? Math.round((Number(value) / total) * 100) : 0}%)`, - String(name) - ]} - /> - - -
-
- {methods.map((entry, index) => { - const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; - return ( -
- - - {entry.method} - {entry.method === "Unknown" && ( - - - - - -

- Only new requests will display the auth method. Older requests may not - have this information recorded. -

-
-
- )} -
- {pct}% - - {entry.count.toLocaleString()} - -
- ); - })} -
-
- - Total - - - {total.toLocaleString()} - -
-
-
-
- )} -
-
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx deleted file mode 100644 index 34de74e0798..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { useState } from "react"; -import { addMonths, format, subMonths } from "date-fns"; -import { ChevronLeft, ChevronRight } from "lucide-react"; - -import { Lottie } from "@app/components/v2"; -import { - UnstableCard, - UnstableCardAction, - UnstableCardContent, - UnstableCardDescription, - UnstableCardHeader, - UnstableCardTitle, - UnstableIconButton -} from "@app/components/v3"; -import { useProject } from "@app/context"; -import { useGetCalendarInsights } from "@app/hooks/api"; - -import { CalendarGrid } from "./CalendarGrid"; -import { CalendarLegend } from "./CalendarLegend"; - -export const CalendarCard = () => { - const { projectId } = useProject(); - const [currentMonth, setCurrentMonth] = useState(new Date()); - - const month = currentMonth.getMonth() + 1; - const year = currentMonth.getFullYear(); - - const { data, isPending } = useGetCalendarInsights( - { projectId, month, year }, - { enabled: !!projectId } - ); - - return ( - - - Rotation & Reminder Calendar - - View upcoming secret rotations and reminders - - -
- setCurrentMonth((prev) => subMonths(prev, 1))} - > - - - - {format(currentMonth, "MMMM yyyy")} - - setCurrentMonth((prev) => addMonths(prev, 1))} - > - - -
-
-
- -
- - {isPending && ( -
- -
- )} -
- -
-
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx deleted file mode 100644 index e7a12842a7e..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { useState } from "react"; -import { isToday } from "date-fns"; - -import { Badge } from "@app/components/v3/generic/Badge"; -import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; - -import { CalendarEventPill } from "./CalendarEventPill"; -import { CalendarEvent } from "./types"; - -const MAX_SLOTS = 2; - -const getBgClass = (today: boolean, isCurrentMonth: boolean) => { - if (today) return isCurrentMonth ? "bg-muted/5" : "bg-card/50"; - return isCurrentMonth ? "bg-container" : "bg-card"; -}; - -export const CalendarDayCell = ({ - date, - isCurrentMonth, - events -}: { - date: Date; - isCurrentMonth: boolean; - events: CalendarEvent[]; -}) => { - const [overflowOpen, setOverflowOpen] = useState(false); - const today = isToday(date); - const dayNum = date.getDate(); - // If everything fits in MAX_SLOTS, show all. Otherwise reserve 1 slot for the overflow badge. - const hasOverflow = events.length > MAX_SLOTS; - const visibleCount = hasOverflow ? MAX_SLOTS - 1 : events.length; - const visibleEvents = events.slice(0, visibleCount); - const overflowCount = events.length - visibleCount; - - return ( -
-
- {today ? ( - - {dayNum} - - ) : ( - {dayNum} - )} -
-
- {visibleEvents.map((event) => ( - - ))} - {hasOverflow && ( - - - - - - - -
- {events.map((event) => ( - - ))} -
-
-
- )} -
-
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx deleted file mode 100644 index 7fc58e5d5b7..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import { Link, useParams } from "@tanstack/react-router"; -import { format, formatDistanceToNow } from "date-fns"; -import { BanIcon, BellIcon, ExternalLink, RefreshCwIcon, XIcon } from "lucide-react"; - -import { - Badge, - Button, - Detail, - DetailGroup, - DetailLabel, - DetailValue, - UnstableSeparator -} from "@app/components/v3"; - -import { CalendarEvent } from "./types"; - -const RotationStatusBadge = ({ - status, - nextRotationAt, - isAutoRotationEnabled -}: { - status: string | null; - nextRotationAt: string | null; - isAutoRotationEnabled: boolean; -}) => { - if (status === "failed") { - return ( - - - Rotation Failed - - ); - } - - if (!isAutoRotationEnabled) { - return ( - - - Auto-Rotation Disabled - - ); - } - - if (!nextRotationAt) { - return Active; - } - - const daysToRotation = (new Date(nextRotationAt).getTime() - Date.now()) / (1000 * 60 * 60 * 24); - - return ( - = 7 ? "info" : "warning"} className="capitalize"> - - {daysToRotation < 0 - ? "Rotating" - : `Rotates ${formatDistanceToNow(new Date(nextRotationAt), { addSuffix: true })}`} - - ); -}; - -const getDateString = (event: CalendarEvent): string => { - if (event.type === "rotation") { - if (!event.data.nextRotationAt) return "N/A"; - return format(new Date(event.data.nextRotationAt), "MMM d, yyyy 'at' h:mm a"); - } - return format(new Date(event.data.nextReminderDate), "MMM d, yyyy"); -}; - -export const CalendarEventDetail = ({ event }: { event: CalendarEvent }) => { - const { orgId, projectId } = useParams({ - strict: false, - select: (p) => ({ - orgId: (p as Record).orgId, - projectId: (p as Record).projectId - }) - }); - - const isRotation = event.type === "rotation"; - const title = isRotation ? event.data.name : event.data.secretKey; - const dateStr = getDateString(event); - const { environment, secretPath } = event.data; - - return ( -
-
-

{title}

- - {isRotation ? : } - {isRotation ? "Rotation" : "Reminder"} - -
- - - - Date - {dateStr} - - - Environment - {environment} - - - Path - {secretPath} - - - {isRotation && ( - <> - - Interval - - Every {event.data.rotationInterval} day - {event.data.rotationInterval !== 1 ? "s" : ""} - - - - Status - - - - - - Secret Keys - - {event.data.secretKeys.map((key) =>

{key}

) || "—"} -
-
- - )} - - {!isRotation && ( - <> - {event.data.message && ( - - Message - {event.data.message} - - )} - {event.data.repeatDays && ( - - Repeat - - Every {event.data.repeatDays} day - {event.data.repeatDays !== 1 ? "s" : ""} - - - )} - - )} -
- - -
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx deleted file mode 100644 index 226aab3f868..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx +++ /dev/null @@ -1,36 +0,0 @@ -import { useState } from "react"; -import { BellIcon, RefreshCwIcon } from "lucide-react"; - -import { Badge } from "@app/components/v3/generic/Badge"; -import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; - -import { CalendarEventDetail } from "./CalendarEventDetail"; -import { CalendarEvent } from "./types"; - -export const CalendarEventPill = ({ event }: { event: CalendarEvent }) => { - const [open, setOpen] = useState(false); - const label = event.type === "rotation" ? event.data.name : event.data.secretKey; - const isRotation = event.type === "rotation"; - - return ( - - - - - - - - - - - ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx deleted file mode 100644 index 1d7cdc81125..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { useMemo } from "react"; -import { - eachDayOfInterval, - endOfMonth, - endOfWeek, - format, - isSameMonth, - startOfMonth, - startOfWeek -} from "date-fns"; - -import { TCalendarReminder, TCalendarRotation } from "@app/hooks/api/secretInsights/types"; - -import { CalendarDayCell } from "./CalendarDayCell"; -import { CalendarEvent } from "./types"; - -const DAY_NAMES = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; - -const groupEventsByDate = ( - rotations: TCalendarRotation[], - reminders: TCalendarReminder[] -): Record => { - const map: Record = {}; - - rotations.forEach((r) => { - if (!r.nextRotationAt) return; - const key = format(new Date(r.nextRotationAt), "yyyy-MM-dd"); - if (!map[key]) map[key] = []; - map[key].push({ type: "rotation", data: r }); - }); - - reminders.forEach((r) => { - const key = format(new Date(r.nextReminderDate), "yyyy-MM-dd"); - if (!map[key]) map[key] = []; - map[key].push({ type: "reminder", data: r }); - }); - - return map; -}; - -export const CalendarGrid = ({ - currentMonth, - rotations, - reminders -}: { - currentMonth: Date; - rotations: TCalendarRotation[]; - reminders: TCalendarReminder[]; -}) => { - const days = useMemo(() => { - const monthStart = startOfMonth(currentMonth); - const monthEnd = endOfMonth(currentMonth); - const gridStart = startOfWeek(monthStart, { weekStartsOn: 1 }); - const gridEnd = endOfWeek(monthEnd, { weekStartsOn: 1 }); - return eachDayOfInterval({ start: gridStart, end: gridEnd }); - }, [currentMonth]); - - const eventsByDate = useMemo( - () => groupEventsByDate(rotations, reminders), - [rotations, reminders] - ); - - return ( -
-
- {DAY_NAMES.map((day) => ( -
- {day} -
- ))} -
-
- {days.map((day) => { - const dateKey = format(day, "yyyy-MM-dd"); - return ( - - ); - })} -
-
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx deleted file mode 100644 index 871fea844ed..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx +++ /dev/null @@ -1,14 +0,0 @@ -export const CalendarLegend = () => { - return ( -
-
- - Rotation -
-
- - Reminder -
-
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx deleted file mode 100644 index 3e748e5e4ba..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx +++ /dev/null @@ -1,496 +0,0 @@ -import { useState } from "react"; -import { useNavigate, useParams } from "@tanstack/react-router"; -import { formatDistanceToNow, parseISO } from "date-fns"; -import { - AlertTriangleIcon, - BellIcon, - CheckIcon, - ChevronLeftIcon, - ChevronRightIcon, - ClockIcon, - ExternalLinkIcon, - RefreshCwIcon -} from "lucide-react"; -import { twMerge } from "tailwind-merge"; - -import { - Badge, - Button, - Skeleton, - UnstableCard, - UnstableCardAction, - UnstableCardContent, - UnstableCardHeader, - UnstableCardTitle, - UnstableIconButton, - UnstableSeparator, - UnstableTable, - UnstableTableBody, - UnstableTableCell, - UnstableTableHead, - UnstableTableHeader, - UnstableTableRow -} from "@app/components/v3"; -import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; -import { cn } from "@app/components/v3/utils"; -import { useProject } from "@app/context"; -import { useGetInsightsSummary } from "@app/hooks/api"; - -type StatCardProps = { - title: string; - icon: React.ReactNode; - iconVariant: "warning" | "info" | "danger"; - count: number; - totalItems: number; - subtitle: string; - footnote: string; - footnoteVariant: "warning" | "danger" | "success"; - viewLabel: string; - popoverContent?: React.ReactNode; -}; - -const StatCard = ({ - title, - icon, - iconVariant, - count, - totalItems, - subtitle, - footnote, - footnoteVariant, - viewLabel, - popoverContent -}: StatCardProps) => { - const [open, setOpen] = useState(false); - - return ( - - - {title} - -
svg]:size-5", - iconVariant === "info" && "border-info/15 bg-info/10 text-info", - iconVariant === "warning" && "border-warning/15 bg-warning/10 text-warning", - iconVariant === "danger" && "border-danger/15 bg-danger/10 text-danger" - )} - > - {icon} -
-
-
- -
- {count} - {subtitle} -
- -
- - {footnoteVariant === "success" ? : } - {footnote} - - {popoverContent && ( - - - - - - {popoverContent} - - - )} -
-
-
- ); -}; - -const overviewRoute = - "/organizations/$orgId/projects/secret-management/$projectId/overview" as const; - -type RotationItem = { - name: string; - environment: string; - secretPath: string; - nextRotationAt: string | null; -}; - -const RotationTable = ({ - failed, - upcoming, - orgId, - projectId -}: { - failed: RotationItem[]; - upcoming: RotationItem[]; - orgId: string; - projectId: string; -}) => { - const navigate = useNavigate(); - const allItems = [ - ...failed.map((item) => ({ ...item, status: "failed" as const })), - ...upcoming.map((item) => ({ ...item, status: "upcoming" as const })) - ]; - - if (!allItems.length) return

No rotations

; - - return ( - - - - Name - Env - Path - Status - - - - - {allItems.map((item) => ( - - navigate({ - to: overviewRoute, - params: { orgId, projectId }, - search: { - search: item.name, - environments: [item.environment], - filterBy: "rotation" - } - }) - } - > - - {item.name} - - - {item.environment} - - - {item.secretPath} - - - {item.status === "failed" ? ( - - {item.nextRotationAt - ? `retries ${formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true })}` - : "failed"} - - ) : ( - - {item.nextRotationAt - ? formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true }) - : "scheduled"} - - )} - - - - - - ))} - - - ); -}; - -type ReminderItem = { - secretKey: string; - environment: string; - secretPath: string; - nextReminderDate: string; -}; - -const ReminderTable = ({ - overdue, - upcoming, - orgId, - projectId -}: { - overdue: ReminderItem[]; - upcoming: ReminderItem[]; - orgId: string; - projectId: string; -}) => { - const navigate = useNavigate(); - const allItems = [ - ...overdue.map((item) => ({ ...item, status: "overdue" as const })), - ...upcoming.map((item) => ({ ...item, status: "upcoming" as const })) - ]; - - if (!allItems.length) return

No reminders

; - - return ( - - - - Secret - Env - Path - Due - - - - - {allItems.map((item) => ( - - navigate({ - to: overviewRoute, - params: { orgId, projectId }, - search: { - search: item.secretKey, - environments: [item.environment], - filterBy: "secret" - } - }) - } - > - - {item.secretKey} - - - {item.environment} - - - {item.secretPath} - - - - {formatDistanceToNow(parseISO(item.nextReminderDate), { addSuffix: true })} - - - - - - - ))} - - - ); -}; - -const PAGE_SIZE = 10; - -const StaleSecretsTable = ({ - items, - totalCount, - page, - onPageChange, - orgId, - projectId -}: { - items: { key: string; environment: string; secretPath: string; updatedAt: string }[]; - totalCount: number; - page: number; - onPageChange: (p: number) => void; - orgId: string; - projectId: string; -}) => { - const navigate = useNavigate(); - const totalPages = Math.ceil(totalCount / PAGE_SIZE); - - if (!totalCount) return

No stale secrets

; - - return ( -
- - - - Secret - Env - Path - Last Modified - - - - - {items.map((item) => ( - - navigate({ - to: overviewRoute, - params: { orgId, projectId }, - search: { - search: item.key, - environments: [item.environment], - filterBy: "secret" - } - }) - } - > - - {item.key} - - - {item.environment} - - - {item.secretPath} - - - {formatDistanceToNow(parseISO(item.updatedAt), { addSuffix: true })} - - - - - - ))} - - - {totalPages > 1 && ( -
- - {page * PAGE_SIZE + 1}–{Math.min((page + 1) * PAGE_SIZE, totalCount)} of{" "} - {totalCount} - -
- onPageChange(page - 1)} - > - - - = totalPages - 1} - onClick={() => onPageChange(page + 1)} - > - - -
-
- )} -
- ); -}; - -export const InsightsSummaryCards = () => { - const { projectId } = useProject(); - const { orgId } = useParams({ - strict: false, - select: (p) => ({ orgId: (p as Record).orgId }) - }); - - const [stalePage, setStalePage] = useState(0); - - const { data, isPending } = useGetInsightsSummary( - { - projectId, - staleSecretsOffset: stalePage * PAGE_SIZE, - staleSecretsLimit: PAGE_SIZE - }, - { enabled: !!projectId, placeholderData: (prev) => prev } - ); - - if (isPending) { - return ( -
- - - -
- ); - } - - const upcomingRotations = data?.upcomingRotations ?? []; - const failedRotations = data?.failedRotations ?? []; - const upcomingReminders = data?.upcomingReminders ?? []; - const overdueReminders = data?.overdueReminders ?? []; - const staleSecrets = data?.staleSecrets ?? []; - const totalStaleCount = data?.totalStaleCount ?? staleSecrets.length; - - return ( -
- } - iconVariant="info" - count={upcomingRotations.length} - totalItems={upcomingRotations.length + failedRotations.length} - subtitle="In the next 7 days" - footnote={ - failedRotations.length ? `${failedRotations.length} failed` : "No failed rotations" - } - footnoteVariant={failedRotations.length ? "danger" : "success"} - viewLabel={failedRotations.length ? "View Failed Rotations" : "View Rotations"} - popoverContent={ - - } - /> - } - iconVariant="warning" - count={upcomingReminders.length} - totalItems={upcomingReminders.length + overdueReminders.length} - subtitle="In the next 7 days" - footnote={ - overdueReminders.length ? `${overdueReminders.length} overdue` : "No overdue reminders" - } - footnoteVariant={overdueReminders.length ? "danger" : "success"} - viewLabel={overdueReminders.length ? "View Overdue Reminders" : "View Upcoming Reminders"} - popoverContent={ - - } - /> - } - iconVariant="danger" - count={totalStaleCount} - totalItems={totalStaleCount} - subtitle="Unmodified > 90 days" - footnote={ - totalStaleCount - ? `${totalStaleCount} need${totalStaleCount === 1 ? "s" : ""} review` - : "All secrets up to date" - } - footnoteVariant={totalStaleCount ? "warning" : "success"} - viewLabel="View Stale Secrets" - popoverContent={ - - } - /> -
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx deleted file mode 100644 index 0dd06fe9942..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx +++ /dev/null @@ -1,78 +0,0 @@ -import { - Area, - AreaChart, - CartesianGrid, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from "recharts"; - -export type LineChartDataPoint = { - label: string; - value: number; -}; - -type LineChartProps = { - data: LineChartDataPoint[]; - height?: number; -}; - -export const LineChart = ({ data, height = 280 }: LineChartProps) => { - return ( - - - - - - - - - - - - [Number(value).toLocaleString(), "Requests"]} - /> - - - - ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx deleted file mode 100644 index 4a0dd476d10..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import { useMemo } from "react"; -import { format, parseISO } from "date-fns"; - -import { - Skeleton, - UnstableCard, - UnstableCardContent, - UnstableCardDescription, - UnstableCardHeader, - UnstableCardTitle -} from "@app/components/v3"; -import { useProject } from "@app/context"; -import { useGetSecretAccessVolume } from "@app/hooks/api"; - -import { LineChart } from "./LineChart"; - -export const SecretAccessChart = () => { - const { projectId } = useProject(); - - const { data, isPending } = useGetSecretAccessVolume({ projectId }, { enabled: !!projectId }); - - const chartData = useMemo(() => { - if (!data?.days) return []; - return data.days.map((day) => ({ - label: format(parseISO(day.date), "EEE"), - value: day.total - })); - }, [data]); - - const topActors = useMemo(() => { - if (!data?.days) return []; - const totals = new Map(); - data.days.forEach((day) => { - day.actors.forEach((actor) => { - const key = `${actor.type}:${actor.name}`; - const existing = totals.get(key); - if (existing) { - existing.count += actor.count; - } else { - totals.set(key, { ...actor }); - } - }); - }); - return Array.from(totals.values()) - .sort((a, b) => b.count - a.count) - .slice(0, 5); - }, [data]); - - const totalRequests = chartData.reduce((sum, d) => sum + d.value, 0); - - return ( - - - Secret Access Volume - Secret read requests over the past 7 days - - - {isPending ? ( - - ) : ( -
- - {topActors.length > 0 && ( -
- - Top actors — {totalRequests.toLocaleString()} total requests - -
- {topActors.map((actor) => ( - - {actor.type}: {actor.name}{" "} - ({actor.count.toLocaleString()}) - - ))} -
-
- )} -
- )} -
-
- ); -}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx deleted file mode 100644 index fd236013c97..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx +++ /dev/null @@ -1,348 +0,0 @@ -// import { useMemo, useState } from "react"; -// import { geoNaturalEarth1, geoPath } from "d3-geo"; -// import { feature } from "topojson-client"; -// import type { Topology } from "topojson-specification"; - -// import { -// Badge, -// Skeleton, -// Tooltip, -// TooltipContent, -// TooltipProvider, -// TooltipTrigger, -// UnstableCard, -// UnstableCardContent, -// UnstableCardDescription, -// UnstableCardHeader, -// UnstableCardTitle -// } from "@app/components/v3"; -// import { useProject } from "@app/context"; -// import { useGetSecretAccessLocations } from "@app/hooks/api"; -// import { TAccessLocation } from "@app/hooks/api/secretInsights/types"; - -// import worldTopoJson from "./countries-110m.json"; - -// // ISO 3166-1 alpha-2 → numeric mapping (covers common countries; extend as needed) -// /* eslint-disable @typescript-eslint/naming-convention */ -// const ALPHA2_TO_NUMERIC: Record = { -// AF: "004", -// AL: "008", -// DZ: "012", -// AR: "032", -// AU: "036", -// AT: "040", -// BD: "050", -// BE: "056", -// BR: "076", -// BG: "100", -// CA: "124", -// CL: "152", -// CN: "156", -// CO: "170", -// HR: "191", -// CZ: "203", -// DK: "208", -// EG: "818", -// EE: "233", -// FI: "246", -// FR: "250", -// DE: "276", -// GR: "300", -// HK: "344", -// HU: "348", -// IN: "356", -// ID: "360", -// IR: "364", -// IQ: "368", -// IE: "372", -// IL: "376", -// IT: "380", -// JP: "392", -// KE: "404", -// KR: "410", -// LV: "428", -// LT: "440", -// MY: "458", -// MX: "484", -// MA: "504", -// NL: "528", -// NZ: "554", -// NG: "566", -// NO: "578", -// PK: "586", -// PE: "604", -// PH: "608", -// PL: "616", -// PT: "620", -// RO: "642", -// RU: "643", -// SA: "682", -// SG: "702", -// ZA: "710", -// ES: "724", -// SE: "752", -// CH: "756", -// TW: "158", -// TH: "764", -// TR: "792", -// UA: "804", -// AE: "784", -// GB: "826", -// US: "840", -// VN: "704", -// KZ: "398", -// CY: "196" -// }; -// /* eslint-enable @typescript-eslint/naming-convention */ - -// const MAX_RADIUS = 10; -// const MIN_RADIUS = 3; - -// // Natural Earth 1 projection — trimmed left (before Hawaii), padded right -// const SVG_WIDTH = 960; -// const SVG_HEIGHT = 460; - -// const projection = geoNaturalEarth1() -// .scale(170) -// .translate([SVG_WIDTH / 2 - 25, SVG_HEIGHT / 2 + 5]); - -// const pathGenerator = geoPath(projection); - -// const geoFeatures = ( -// feature( -// worldTopoJson as unknown as Topology, -// (worldTopoJson as unknown as Topology).objects.countries -// ) as GeoJSON.FeatureCollection -// ).features; - -// // Inactive country base: dark but visible against the card bg -// const INACTIVE_FILL = "#242629"; -// // Stroke between countries -// const BORDER_STROKE = "#3a3c40"; -// // Info color for active country gradient -// const INFO_COLOR = "#63b0bd"; - -// const ResponsiveWorldMap = ({ -// mapLocations, -// countryActivity, -// countryMaxCount, -// getRadius -// }: { -// mapLocations: TAccessLocation[]; -// countryActivity: Map; -// countryMaxCount: number; -// getRadius: (count: number) => number; -// }) => { -// const [hovered, setHovered] = useState(null); - -// // Build gradient definitions for each active country -// const activeCountryGradients = useMemo(() => { -// const gradients: { id: string; topOpacity: number; bottomOpacity: number }[] = []; -// countryActivity.forEach((count, numericCode) => { -// const ratio = count / countryMaxCount; -// // Top of gradient is brighter, bottom fades to the base -// const topOpacity = 0.25 + ratio * 0.55; // 0.25 → 0.80 -// const bottomOpacity = 0.08 + ratio * 0.15; // 0.08 → 0.23 -// gradients.push({ id: numericCode, topOpacity, bottomOpacity }); -// }); -// return gradients; -// }, [countryActivity, countryMaxCount]); - -// const getFill = (id: string, isHover: boolean) => { -// const isActive = countryActivity.has(id); -// if (isHover) { -// return isActive ? `url(#grad-hover-${id})` : "#2f3136"; -// } -// return isActive ? `url(#grad-${id})` : INACTIVE_FILL; -// }; - -// return ( -//
-// -// -// {activeCountryGradients.map((g) => ( -// -// -// -// -// ))} -// {activeCountryGradients.map((g) => ( -// -// -// -// -// ))} -// -// -// {geoFeatures.map((geo) => { -// const id = String(geo.id ?? ""); -// const d = pathGenerator(geo) ?? ""; -// const isHover = hovered === id; -// return ( -// setHovered(id)} -// onMouseLeave={() => setHovered(null)} -// style={{ outline: "none", transition: "fill 0.15s, opacity 0.15s" }} -// /> -// ); -// })} -// -// -// {mapLocations.map((loc) => { -// const coords = projection([loc.lng, loc.lat]); -// if (!coords) return null; -// return ( -// -// -// -// -// -//

-// {loc.city ? `${loc.city}, ${loc.country}` : loc.country} -//

-//

-// {loc.count.toLocaleString()} access{loc.count !== 1 ? "es" : ""} -//

-// -// -// ); -// })} -// -// -//
-// ); -// }; - -// export const WorldMap = () => { -// const { projectId } = useProject(); - -// const { data, isPending } = useGetSecretAccessLocations( -// { projectId, days: 30 }, -// { enabled: !!projectId } -// ); - -// const allLocations = data?.locations ?? []; - -// // Separate local network entries from geo-resolvable locations -// const { mapLocations, localCount } = useMemo(() => { -// const geo: TAccessLocation[] = []; -// let local = 0; -// allLocations.forEach((loc) => { -// if (loc.country === "LOCAL") { -// local += loc.count; -// } else { -// geo.push(loc); -// } -// }); -// return { mapLocations: geo, localCount: local }; -// }, [allLocations]); - -// // Aggregate total access count per country (numeric code) for choropleth fill -// const { countryActivity, countryMaxCount } = useMemo(() => { -// const activity = new Map(); -// mapLocations.forEach((loc) => { -// const numericCode = ALPHA2_TO_NUMERIC[loc.country]; -// if (!numericCode) return; -// activity.set(numericCode, (activity.get(numericCode) || 0) + loc.count); -// }); -// const maxVal = Math.max(...Array.from(activity.values()), 1); -// return { countryActivity: activity, countryMaxCount: maxVal }; -// }, [mapLocations]); - -// const maxCount = useMemo(() => Math.max(...mapLocations.map((l) => l.count), 1), [mapLocations]); - -// const getRadius = (count: number) => { -// const ratio = count / maxCount; -// return MIN_RADIUS + ratio * (MAX_RADIUS - MIN_RADIUS); -// }; - -// const totalAccess = allLocations.reduce((sum, l) => sum + l.count, 0); - -// return ( -// -// -// Secret Access Locations -// -// Geographic distribution of secret access over the past 30 days -// -// -// -// {isPending ? ( -// -// ) : ( -// -// -// {totalAccess > 0 && ( -//
-// {mapLocations.map((loc) => ( -// -// -// {loc.city ? `${loc.city}, ${loc.country}` : loc.country}: -// {" "} -// {loc.count.toLocaleString()} -// -// ))} -// {localCount > 0 && ( -// -// -// -// Local Network: {localCount.toLocaleString()} -// -// -// -//

Local / Private Network

-//

-// {localCount.toLocaleString()} access{localCount !== 1 ? "es" : ""} from -// localhost, Docker, or private IP ranges (127.x, 10.x, 192.168.x) -//

-//
-//
-// )} -//
-// )} -//
-// )} -//
-//
-// ); -// }; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json b/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json deleted file mode 100644 index 055d19ffcf3..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json +++ /dev/null @@ -1 +0,0 @@ -{"type":"Topology","objects":{"countries":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[0]],[[1]]],"id":"242","properties":{"name":"Fiji"}},{"type":"Polygon","arcs":[[2,3,4,5,6,7,8,9,10]],"id":"834","properties":{"name":"Tanzania"}},{"type":"Polygon","arcs":[[11,12,13,14]],"id":"732","properties":{"name":"W. Sahara"}},{"type":"MultiPolygon","arcs":[[[15,16,17,18]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]],[[44]],[[45]],[[46]],[[47]]],"id":"124","properties":{"name":"Canada"}},{"type":"MultiPolygon","arcs":[[[-19,48,49,50]],[[51]],[[52]],[[53]],[[54]],[[55]],[[56]],[[57]],[[-17,58]],[[59]]],"id":"840","properties":{"name":"United States of America"}},{"type":"Polygon","arcs":[[60,61,62,63,64,65]],"id":"398","properties":{"name":"Kazakhstan"}},{"type":"Polygon","arcs":[[-63,66,67,68,69]],"id":"860","properties":{"name":"Uzbekistan"}},{"type":"MultiPolygon","arcs":[[[70,71]],[[72]],[[73]],[[74]]],"id":"598","properties":{"name":"Papua New Guinea"}},{"type":"MultiPolygon","arcs":[[[-72,75]],[[76,77]],[[78]],[[79,80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]]],"id":"360","properties":{"name":"Indonesia"}},{"type":"MultiPolygon","arcs":[[[90,91]],[[92,93,94,95,96,97]]],"id":"032","properties":{"name":"Argentina"}},{"type":"MultiPolygon","arcs":[[[-92,98]],[[99,-95,100,101]]],"id":"152","properties":{"name":"Chile"}},{"type":"Polygon","arcs":[[-8,102,103,104,105,106,107,108,109,110,111]],"id":"180","properties":{"name":"Dem. Rep. Congo"}},{"type":"Polygon","arcs":[[112,113,114,115]],"id":"706","properties":{"name":"Somalia"}},{"type":"Polygon","arcs":[[-3,116,117,118,-113,119]],"id":"404","properties":{"name":"Kenya"}},{"type":"Polygon","arcs":[[120,121,122,123,124,125,126,127]],"id":"729","properties":{"name":"Sudan"}},{"type":"Polygon","arcs":[[-122,128,129,130,131]],"id":"148","properties":{"name":"Chad"}},{"type":"Polygon","arcs":[[132,133]],"id":"332","properties":{"name":"Haiti"}},{"type":"Polygon","arcs":[[-133,134]],"id":"214","properties":{"name":"Dominican Rep."}},{"type":"MultiPolygon","arcs":[[[135]],[[136]],[[137]],[[138]],[[139]],[[140]],[[141,142,143]],[[144]],[[145]],[[146,147,148,149,-66,150,151,152,153,154,155,156,157,158,159,160,161]],[[162]],[[163,164]]],"id":"643","properties":{"name":"Russia"}},{"type":"MultiPolygon","arcs":[[[165]],[[166]],[[167]]],"id":"044","properties":{"name":"Bahamas"}},{"type":"Polygon","arcs":[[168]],"id":"238","properties":{"name":"Falkland Is."}},{"type":"MultiPolygon","arcs":[[[169]],[[-161,170,171,172]],[[173]],[[174]]],"id":"578","properties":{"name":"Norway"}},{"type":"Polygon","arcs":[[175]],"id":"304","properties":{"name":"Greenland"}},{"type":"Polygon","arcs":[[176]],"id":"260","properties":{"name":"Fr. S. Antarctic Lands"}},{"type":"Polygon","arcs":[[177,-77]],"id":"626","properties":{"name":"Timor-Leste"}},{"type":"Polygon","arcs":[[178,179,180,181,182,183,184],[185]],"id":"710","properties":{"name":"South Africa"}},{"type":"Polygon","arcs":[[-186]],"id":"426","properties":{"name":"Lesotho"}},{"type":"Polygon","arcs":[[-50,186,187,188,189]],"id":"484","properties":{"name":"Mexico"}},{"type":"Polygon","arcs":[[190,191,-93]],"id":"858","properties":{"name":"Uruguay"}},{"type":"Polygon","arcs":[[-191,-98,192,193,194,195,196,197,198,199,200]],"id":"076","properties":{"name":"Brazil"}},{"type":"Polygon","arcs":[[-194,201,-96,-100,202]],"id":"068","properties":{"name":"Bolivia"}},{"type":"Polygon","arcs":[[-195,-203,-102,203,204,205]],"id":"604","properties":{"name":"Peru"}},{"type":"Polygon","arcs":[[-196,-206,206,207,208,209,210]],"id":"170","properties":{"name":"Colombia"}},{"type":"Polygon","arcs":[[-209,211,212,213]],"id":"591","properties":{"name":"Panama"}},{"type":"Polygon","arcs":[[-213,214,215,216]],"id":"188","properties":{"name":"Costa Rica"}},{"type":"Polygon","arcs":[[-216,217,218,219]],"id":"558","properties":{"name":"Nicaragua"}},{"type":"Polygon","arcs":[[-219,220,221,222,223]],"id":"340","properties":{"name":"Honduras"}},{"type":"Polygon","arcs":[[-222,224,225]],"id":"222","properties":{"name":"El Salvador"}},{"type":"Polygon","arcs":[[-189,226,227,-223,-226,228]],"id":"320","properties":{"name":"Guatemala"}},{"type":"Polygon","arcs":[[-188,229,-227]],"id":"084","properties":{"name":"Belize"}},{"type":"Polygon","arcs":[[-197,-211,230,231]],"id":"862","properties":{"name":"Venezuela"}},{"type":"Polygon","arcs":[[-198,-232,232,233]],"id":"328","properties":{"name":"Guyana"}},{"type":"Polygon","arcs":[[-199,-234,234,235]],"id":"740","properties":{"name":"Suriname"}},{"type":"MultiPolygon","arcs":[[[-200,-236,236]],[[237,238,239,240,241,242,243,244]],[[245]]],"id":"250","properties":{"name":"France"}},{"type":"Polygon","arcs":[[-205,246,-207]],"id":"218","properties":{"name":"Ecuador"}},{"type":"Polygon","arcs":[[247]],"id":"630","properties":{"name":"Puerto Rico"}},{"type":"Polygon","arcs":[[248]],"id":"388","properties":{"name":"Jamaica"}},{"type":"Polygon","arcs":[[249]],"id":"192","properties":{"name":"Cuba"}},{"type":"Polygon","arcs":[[-181,250,251,252]],"id":"716","properties":{"name":"Zimbabwe"}},{"type":"Polygon","arcs":[[-180,253,254,-251]],"id":"072","properties":{"name":"Botswana"}},{"type":"Polygon","arcs":[[-179,255,256,257,-254]],"id":"516","properties":{"name":"Namibia"}},{"type":"Polygon","arcs":[[258,259,260,261,262,263,264]],"id":"686","properties":{"name":"Senegal"}},{"type":"Polygon","arcs":[[-261,265,266,267,268,269,270]],"id":"466","properties":{"name":"Mali"}},{"type":"Polygon","arcs":[[-13,271,-266,-260,272]],"id":"478","properties":{"name":"Mauritania"}},{"type":"Polygon","arcs":[[273,274,275,276,277]],"id":"204","properties":{"name":"Benin"}},{"type":"Polygon","arcs":[[-131,278,279,-277,280,-268,281,282]],"id":"562","properties":{"name":"Niger"}},{"type":"Polygon","arcs":[[-278,-280,283,284]],"id":"566","properties":{"name":"Nigeria"}},{"type":"Polygon","arcs":[[-130,285,286,287,288,289,-284,-279]],"id":"120","properties":{"name":"Cameroon"}},{"type":"Polygon","arcs":[[-275,290,291,292]],"id":"768","properties":{"name":"Togo"}},{"type":"Polygon","arcs":[[-292,293,294,295]],"id":"288","properties":{"name":"Ghana"}},{"type":"Polygon","arcs":[[-270,296,-295,297,298,299]],"id":"384","properties":{"name":"Côte d'Ivoire"}},{"type":"Polygon","arcs":[[-262,-271,-300,300,301,302,303]],"id":"324","properties":{"name":"Guinea"}},{"type":"Polygon","arcs":[[-263,-304,304]],"id":"624","properties":{"name":"Guinea-Bissau"}},{"type":"Polygon","arcs":[[-299,305,306,-301]],"id":"430","properties":{"name":"Liberia"}},{"type":"Polygon","arcs":[[-302,-307,307]],"id":"694","properties":{"name":"Sierra Leone"}},{"type":"Polygon","arcs":[[-269,-281,-276,-293,-296,-297]],"id":"854","properties":{"name":"Burkina Faso"}},{"type":"Polygon","arcs":[[-108,308,-286,-129,-121,309]],"id":"140","properties":{"name":"Central African Rep."}},{"type":"Polygon","arcs":[[-107,310,311,312,-287,-309]],"id":"178","properties":{"name":"Congo"}},{"type":"Polygon","arcs":[[-288,-313,313,314]],"id":"266","properties":{"name":"Gabon"}},{"type":"Polygon","arcs":[[-289,-315,315]],"id":"226","properties":{"name":"Eq. Guinea"}},{"type":"Polygon","arcs":[[-7,316,317,-252,-255,-258,318,-103]],"id":"894","properties":{"name":"Zambia"}},{"type":"Polygon","arcs":[[-6,319,-317]],"id":"454","properties":{"name":"Malawi"}},{"type":"Polygon","arcs":[[-5,320,-184,321,-182,-253,-318,-320]],"id":"508","properties":{"name":"Mozambique"}},{"type":"Polygon","arcs":[[-183,-322]],"id":"748","properties":{"name":"eSwatini"}},{"type":"MultiPolygon","arcs":[[[-106,322,-311]],[[-104,-319,-257,323]]],"id":"024","properties":{"name":"Angola"}},{"type":"Polygon","arcs":[[-9,-112,324]],"id":"108","properties":{"name":"Burundi"}},{"type":"Polygon","arcs":[[325,326,327,328,329,330,331]],"id":"376","properties":{"name":"Israel"}},{"type":"Polygon","arcs":[[-331,332,333]],"id":"422","properties":{"name":"Lebanon"}},{"type":"Polygon","arcs":[[334]],"id":"450","properties":{"name":"Madagascar"}},{"type":"Polygon","arcs":[[-327,335]],"id":"275","properties":{"name":"Palestine"}},{"type":"Polygon","arcs":[[-265,336]],"id":"270","properties":{"name":"Gambia"}},{"type":"Polygon","arcs":[[337,338,339]],"id":"788","properties":{"name":"Tunisia"}},{"type":"Polygon","arcs":[[-12,340,341,-338,342,-282,-267,-272]],"id":"012","properties":{"name":"Algeria"}},{"type":"Polygon","arcs":[[-326,343,344,345,346,-328,-336]],"id":"400","properties":{"name":"Jordan"}},{"type":"Polygon","arcs":[[347,348,349,350,351]],"id":"784","properties":{"name":"United Arab Emirates"}},{"type":"Polygon","arcs":[[352,353]],"id":"634","properties":{"name":"Qatar"}},{"type":"Polygon","arcs":[[354,355,356]],"id":"414","properties":{"name":"Kuwait"}},{"type":"Polygon","arcs":[[-345,357,358,359,360,-357,361]],"id":"368","properties":{"name":"Iraq"}},{"type":"MultiPolygon","arcs":[[[-351,362,363,364]],[[-349,365]]],"id":"512","properties":{"name":"Oman"}},{"type":"MultiPolygon","arcs":[[[366]],[[367]]],"id":"548","properties":{"name":"Vanuatu"}},{"type":"Polygon","arcs":[[368,369,370,371]],"id":"116","properties":{"name":"Cambodia"}},{"type":"Polygon","arcs":[[-369,372,373,374,375,376]],"id":"764","properties":{"name":"Thailand"}},{"type":"Polygon","arcs":[[-370,-377,377,378,379]],"id":"418","properties":{"name":"Laos"}},{"type":"Polygon","arcs":[[-376,380,381,382,383,-378]],"id":"104","properties":{"name":"Myanmar"}},{"type":"Polygon","arcs":[[-371,-380,384,385]],"id":"704","properties":{"name":"Vietnam"}},{"type":"MultiPolygon","arcs":[[[386,386,386]],[[-147,387,388,389,390]]],"id":"408","properties":{"name":"North Korea"}},{"type":"Polygon","arcs":[[-389,391]],"id":"410","properties":{"name":"South Korea"}},{"type":"Polygon","arcs":[[-149,392]],"id":"496","properties":{"name":"Mongolia"}},{"type":"Polygon","arcs":[[-383,393,394,395,396,397,398,399,400]],"id":"356","properties":{"name":"India"}},{"type":"Polygon","arcs":[[-382,401,-394]],"id":"050","properties":{"name":"Bangladesh"}},{"type":"Polygon","arcs":[[-400,402]],"id":"064","properties":{"name":"Bhutan"}},{"type":"Polygon","arcs":[[-398,403]],"id":"524","properties":{"name":"Nepal"}},{"type":"Polygon","arcs":[[-396,404,405,406,407]],"id":"586","properties":{"name":"Pakistan"}},{"type":"Polygon","arcs":[[-69,408,409,-407,410,411]],"id":"004","properties":{"name":"Afghanistan"}},{"type":"Polygon","arcs":[[-68,412,413,-409]],"id":"762","properties":{"name":"Tajikistan"}},{"type":"Polygon","arcs":[[-62,414,-413,-67]],"id":"417","properties":{"name":"Kyrgyzstan"}},{"type":"Polygon","arcs":[[-64,-70,-412,415,416]],"id":"795","properties":{"name":"Turkmenistan"}},{"type":"Polygon","arcs":[[-360,417,418,419,420,421,-416,-411,-406,422]],"id":"364","properties":{"name":"Iran"}},{"type":"Polygon","arcs":[[-332,-334,423,424,-358,-344]],"id":"760","properties":{"name":"Syria"}},{"type":"Polygon","arcs":[[-420,425,426,427,428]],"id":"051","properties":{"name":"Armenia"}},{"type":"Polygon","arcs":[[-172,429,430]],"id":"752","properties":{"name":"Sweden"}},{"type":"Polygon","arcs":[[-156,431,432,433,434]],"id":"112","properties":{"name":"Belarus"}},{"type":"Polygon","arcs":[[-155,435,-164,436,437,438,439,440,441,442,-432]],"id":"804","properties":{"name":"Ukraine"}},{"type":"Polygon","arcs":[[-433,-443,443,444,445,446,-142,447]],"id":"616","properties":{"name":"Poland"}},{"type":"Polygon","arcs":[[448,449,450,451,452,453,454]],"id":"040","properties":{"name":"Austria"}},{"type":"Polygon","arcs":[[-441,455,456,457,458,-449,459]],"id":"348","properties":{"name":"Hungary"}},{"type":"Polygon","arcs":[[-439,460]],"id":"498","properties":{"name":"Moldova"}},{"type":"Polygon","arcs":[[-438,461,462,463,-456,-440,-461]],"id":"642","properties":{"name":"Romania"}},{"type":"Polygon","arcs":[[-434,-448,-144,464,465]],"id":"440","properties":{"name":"Lithuania"}},{"type":"Polygon","arcs":[[-157,-435,-466,466,467]],"id":"428","properties":{"name":"Latvia"}},{"type":"Polygon","arcs":[[-158,-468,468]],"id":"233","properties":{"name":"Estonia"}},{"type":"Polygon","arcs":[[-446,469,-453,470,-238,471,472,473,474,475,476]],"id":"276","properties":{"name":"Germany"}},{"type":"Polygon","arcs":[[-463,477,478,479,480,481]],"id":"100","properties":{"name":"Bulgaria"}},{"type":"MultiPolygon","arcs":[[[482]],[[-480,483,484,485,486]]],"id":"300","properties":{"name":"Greece"}},{"type":"MultiPolygon","arcs":[[[-359,-425,487,488,-427,-418]],[[-479,489,-484]]],"id":"792","properties":{"name":"Turkey"}},{"type":"Polygon","arcs":[[-486,490,491,492,493]],"id":"008","properties":{"name":"Albania"}},{"type":"Polygon","arcs":[[-458,494,495,496,497,498]],"id":"191","properties":{"name":"Croatia"}},{"type":"Polygon","arcs":[[-452,499,-239,-471]],"id":"756","properties":{"name":"Switzerland"}},{"type":"Polygon","arcs":[[-472,-245,500]],"id":"442","properties":{"name":"Luxembourg"}},{"type":"Polygon","arcs":[[-473,-501,-244,501,502]],"id":"056","properties":{"name":"Belgium"}},{"type":"Polygon","arcs":[[-474,-503,503]],"id":"528","properties":{"name":"Netherlands"}},{"type":"Polygon","arcs":[[504,505]],"id":"620","properties":{"name":"Portugal"}},{"type":"Polygon","arcs":[[-505,506,-242,507]],"id":"724","properties":{"name":"Spain"}},{"type":"Polygon","arcs":[[508,509]],"id":"372","properties":{"name":"Ireland"}},{"type":"Polygon","arcs":[[510]],"id":"540","properties":{"name":"New Caledonia"}},{"type":"MultiPolygon","arcs":[[[511]],[[512]],[[513]],[[514]],[[515]]],"id":"090","properties":{"name":"Solomon Is."}},{"type":"MultiPolygon","arcs":[[[516]],[[517]]],"id":"554","properties":{"name":"New Zealand"}},{"type":"MultiPolygon","arcs":[[[518]],[[519]]],"id":"036","properties":{"name":"Australia"}},{"type":"Polygon","arcs":[[520]],"id":"144","properties":{"name":"Sri Lanka"}},{"type":"MultiPolygon","arcs":[[[521]],[[-61,-150,-393,-148,-391,522,-385,-379,-384,-401,-403,-399,-404,-397,-408,-410,-414,-415]]],"id":"156","properties":{"name":"China"}},{"type":"Polygon","arcs":[[523]],"id":"158","properties":{"name":"Taiwan"}},{"type":"MultiPolygon","arcs":[[[-451,524,525,-240,-500]],[[526]],[[527]]],"id":"380","properties":{"name":"Italy"}},{"type":"MultiPolygon","arcs":[[[-476,528]],[[529]]],"id":"208","properties":{"name":"Denmark"}},{"type":"MultiPolygon","arcs":[[[-510,530]],[[531]]],"id":"826","properties":{"name":"United Kingdom"}},{"type":"Polygon","arcs":[[532]],"id":"352","properties":{"name":"Iceland"}},{"type":"MultiPolygon","arcs":[[[-152,533,-421,-429,534]],[[-419,-426]]],"id":"031","properties":{"name":"Azerbaijan"}},{"type":"Polygon","arcs":[[-153,-535,-428,-489,535]],"id":"268","properties":{"name":"Georgia"}},{"type":"MultiPolygon","arcs":[[[536]],[[537]],[[538]],[[539]],[[540]],[[541]],[[542]]],"id":"608","properties":{"name":"Philippines"}},{"type":"MultiPolygon","arcs":[[[-374,543]],[[-81,544,545,546]]],"id":"458","properties":{"name":"Malaysia"}},{"type":"Polygon","arcs":[[-546,547]],"id":"096","properties":{"name":"Brunei"}},{"type":"Polygon","arcs":[[-450,-459,-499,548,-525]],"id":"705","properties":{"name":"Slovenia"}},{"type":"Polygon","arcs":[[-160,549,-430,-171]],"id":"246","properties":{"name":"Finland"}},{"type":"Polygon","arcs":[[-442,-460,-455,550,-444]],"id":"703","properties":{"name":"Slovakia"}},{"type":"Polygon","arcs":[[-445,-551,-454,-470]],"id":"203","properties":{"name":"Czechia"}},{"type":"Polygon","arcs":[[-126,551,552,553]],"id":"232","properties":{"name":"Eritrea"}},{"type":"MultiPolygon","arcs":[[[554]],[[555]],[[556]]],"id":"392","properties":{"name":"Japan"}},{"type":"Polygon","arcs":[[-193,-97,-202]],"id":"600","properties":{"name":"Paraguay"}},{"type":"Polygon","arcs":[[-364,557,558]],"id":"887","properties":{"name":"Yemen"}},{"type":"Polygon","arcs":[[-346,-362,-356,559,-354,560,-352,-365,-559,561]],"id":"682","properties":{"name":"Saudi Arabia"}},{"type":"MultiPolygon","arcs":[[[562]],[[563]],[[564]],[[565]],[[566]],[[567]],[[568]],[[569]]],"id":"010","properties":{"name":"Antarctica"}},{"type":"Polygon","arcs":[[570,571]],"properties":{"name":"N. Cyprus"}},{"type":"Polygon","arcs":[[-572,572]],"id":"196","properties":{"name":"Cyprus"}},{"type":"Polygon","arcs":[[-341,-15,573]],"id":"504","properties":{"name":"Morocco"}},{"type":"Polygon","arcs":[[-124,574,575,-329,576]],"id":"818","properties":{"name":"Egypt"}},{"type":"Polygon","arcs":[[-123,-132,-283,-343,-340,577,-575]],"id":"434","properties":{"name":"Libya"}},{"type":"Polygon","arcs":[[-114,-119,578,-127,-554,579,580]],"id":"231","properties":{"name":"Ethiopia"}},{"type":"Polygon","arcs":[[-553,581,582,-580]],"id":"262","properties":{"name":"Djibouti"}},{"type":"Polygon","arcs":[[-115,-581,-583,583]],"properties":{"name":"Somaliland"}},{"type":"Polygon","arcs":[[-11,584,-110,585,-117]],"id":"800","properties":{"name":"Uganda"}},{"type":"Polygon","arcs":[[-10,-325,-111,-585]],"id":"646","properties":{"name":"Rwanda"}},{"type":"Polygon","arcs":[[-496,586,587]],"id":"070","properties":{"name":"Bosnia and Herz."}},{"type":"Polygon","arcs":[[-481,-487,-494,588,589]],"id":"807","properties":{"name":"Macedonia"}},{"type":"Polygon","arcs":[[-457,-464,-482,-590,590,591,-587,-495]],"id":"688","properties":{"name":"Serbia"}},{"type":"Polygon","arcs":[[-492,592,-497,-588,-592,593]],"id":"499","properties":{"name":"Montenegro"}},{"type":"Polygon","arcs":[[-493,-594,-591,-589]],"properties":{"name":"Kosovo"}},{"type":"Polygon","arcs":[[594]],"id":"780","properties":{"name":"Trinidad and Tobago"}},{"type":"Polygon","arcs":[[-109,-310,-128,-579,-118,-586]],"id":"728","properties":{"name":"S. Sudan"}}]},"land":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[0]],[[1]],[[3,320,184,255,323,104,322,311,313,315,289,284,273,290,293,297,305,307,302,304,263,336,258,272,13,573,341,338,577,575,329,332,423,487,535,153,435,164,436,461,477,489,484,490,592,497,548,525,240,507,505,506,242,501,503,474,528,476,446,142,464,466,468,158,549,430,172,161,387,391,389,522,385,371,372,543,374,380,401,394,404,422,360,354,559,352,560,347,365,349,362,557,561,346,576,124,551,581,583,115,119],[421,416,64,150,533]],[[17,48,186,229,227,223,219,216,213,209,230,232,234,236,200,191,93,100,203,246,207,211,214,217,220,224,228,189,50,15,58]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]],[[44]],[[45]],[[46]],[[47]],[[51]],[[52]],[[53]],[[54]],[[55]],[[56]],[[57]],[[59]],[[70,75]],[[72]],[[73]],[[74]],[[77,177]],[[78]],[[546,79,544,547]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90,98]],[[133,134]],[[135]],[[136]],[[137]],[[138]],[[139]],[[140]],[[144]],[[145]],[[162]],[[165]],[[166]],[[167]],[[168]],[[169]],[[173]],[[174]],[[175]],[[176]],[[245]],[[247]],[[248]],[[249]],[[334]],[[366]],[[367]],[[482]],[[508,530]],[[510]],[[511]],[[512]],[[513]],[[514]],[[515]],[[516]],[[517]],[[518]],[[519]],[[520]],[[521]],[[523]],[[526]],[[527]],[[529]],[[531]],[[532]],[[536]],[[537]],[[538]],[[539]],[[540]],[[541]],[[542]],[[554]],[[555]],[[556]],[[562]],[[563]],[[564]],[[565]],[[566]],[[567]],[[568]],[[569]],[[570,572]],[[594]]]}]}},"arcs":[[[99478,40237],[69,98],[96,-171],[-46,-308],[-172,-81],[-153,73],[-27,260],[107,203],[126,-74]],[[0,41087],[57,27],[-34,-284],[-23,-32],[99822,-145],[-177,-124],[-36,220],[139,121],[88,33],[163,184],[-99999,0]],[[59417,50018],[47,-65],[1007,-1203],[19,-343],[399,-590]],[[60889,47817],[-128,-728],[16,-335],[178,-216],[8,-153],[-76,-357],[16,-180],[-18,-282],[97,-370],[115,-583],[101,-129]],[[61198,44484],[-221,-342],[-303,-230],[-167,10],[-99,-177],[-193,-16],[-73,-74],[-334,166],[-209,-48]],[[59599,43773],[-77,804],[-95,275],[-55,164],[-273,110]],[[59099,45126],[-157,177],[-177,100],[-111,99],[-116,150]],[[58538,45652],[-150,745],[-161,330],[-55,343],[27,307],[-50,544]],[[58149,47921],[115,28],[101,214],[108,308],[69,124],[-3,192],[-60,134],[-16,233]],[[58463,49154],[80,74],[16,348],[-110,333]],[[58449,49909],[98,71],[304,-7],[566,45]],[[47592,66920],[1,-40],[-6,-114]],[[47587,66766],[-1,-895],[-911,31],[9,-1512],[-261,-53],[-68,-304],[53,-853],[-1088,4],[-60,-197]],[[45260,62987],[12,249]],[[45272,63236],[5,-1],[625,48],[33,213],[114,265],[92,816],[386,637],[131,745],[86,44],[91,460],[234,63],[100,-76],[126,0],[90,134],[172,19],[-7,317],[42,0]],[[15878,79530],[-38,1],[-537,581],[-199,255],[-503,244],[-155,523],[40,363],[-356,252],[-48,476],[-336,429],[-6,304]],[[13740,82958],[154,285],[-7,373],[-473,376],[-284,674],[-173,424],[-255,266],[-187,242],[-147,306],[-279,-192],[-270,-330],[-247,388],[-194,259],[-271,164],[-273,17],[1,3364],[2,2193]],[[10837,91767],[518,-142],[438,-285],[289,-54],[244,247],[336,184],[413,-72],[416,259],[455,148],[191,-245],[207,138],[62,278],[192,-63],[470,-530],[369,401],[38,-449],[341,97],[105,173],[337,-34],[424,-248],[650,-217],[383,-100],[272,38],[374,-300],[-390,-293],[502,-127],[750,70],[236,103],[296,-354],[302,299],[-283,251],[179,202],[338,27],[223,59],[224,-141],[279,-321],[310,47],[491,-266],[431,94],[405,-14],[-32,367],[247,103],[431,-200],[-2,-559],[177,471],[223,-16],[126,594],[-298,364],[-324,239],[22,653],[329,429],[366,-95],[281,-261],[378,-666],[-247,-290],[517,-120],[-1,-604],[371,463],[332,-380],[-83,-438],[269,-399],[290,427],[202,510],[16,649],[394,-46],[411,-87],[373,-293],[17,-293],[-207,-315],[196,-316],[-36,-288],[-544,-413],[-386,-91],[-287,178],[-83,-297],[-268,-498],[-81,-259],[-322,-399],[-397,-39],[-220,-250],[-18,-384],[-323,-74],[-340,-479],[-301,-665],[-108,-466],[-16,-686],[409,-99],[125,-553],[130,-448],[388,117],[517,-256],[277,-225],[199,-279],[348,-163],[294,-248],[459,-34],[302,-58],[-45,-511],[86,-594],[201,-661],[414,-561],[214,192],[150,607],[-145,934],[-196,311],[445,276],[314,415],[154,411],[-23,395],[-188,502],[-338,445],[328,619],[-121,535],[-93,922],[194,137],[476,-161],[286,-57],[230,155],[258,-200],[342,-343],[85,-229],[495,-45],[-8,-496],[92,-747],[254,-92],[201,-348],[402,328],[266,652],[184,274],[216,-527],[362,-754],[307,-709],[-112,-371],[370,-333],[250,-338],[442,-152],[179,-189],[110,-500],[216,-78],[112,-223],[20,-664],[-202,-222],[-199,-207],[-458,-210],[-349,-486],[-470,-96],[-594,125],[-417,4],[-287,-41],[-233,-424],[-354,-262],[-401,-782],[-320,-545],[236,97],[446,776],[583,493],[415,58],[246,-289],[-262,-397],[88,-637],[91,-446],[361,-295],[459,86],[278,664],[19,-429],[180,-214],[-344,-387],[-615,-351],[-276,-239],[-310,-426],[-211,44],[-11,500],[483,488],[-445,-19],[-309,-72]],[[31350,77248],[-181,334],[0,805],[-123,171],[-187,-100],[-92,155],[-212,-446],[-84,-460],[-99,-269],[-118,-91],[-89,-30],[-28,-146],[-512,0],[-422,-4],[-125,-109],[-294,-425],[-34,-46],[-89,-231],[-255,1],[-273,-3],[-125,-93],[44,-116],[25,-181],[-5,-60],[-363,-293],[-286,-93],[-323,-316],[-70,0],[-94,93],[-31,85],[6,61],[61,207],[131,325],[81,349],[-56,514],[-59,536],[-290,277],[35,105],[-41,73],[-76,0],[-56,93],[-14,140],[-54,-61],[-75,18],[17,59],[-65,58],[-27,155],[-216,189],[-224,197],[-272,229],[-261,214],[-248,-167],[-91,-6],[-342,154],[-225,-77],[-269,183],[-284,94],[-194,36],[-86,100],[-49,325],[-94,-3],[-1,-227],[-575,0],[-951,0],[-944,0],[-833,0],[-834,0],[-819,0],[-847,0],[-273,0],[-824,0],[-789,0]],[[26668,87478],[207,273],[381,-6],[-6,-114],[-325,-326],[-196,13],[-61,160]],[[27840,93593],[-306,313],[12,213],[133,39],[636,-63],[479,-325],[25,-163],[-296,17],[-299,13],[-304,-80],[-80,36]],[[27690,87261],[107,177],[114,-13],[70,-121],[-108,-310],[-123,50],[-73,176],[13,41]],[[23996,94879],[-151,-229],[-403,44],[-337,155],[148,266],[399,159],[243,-208],[101,-187]],[[23933,96380],[-126,-17],[-521,38],[-74,165],[559,-9],[195,-109],[-33,-68]],[[23124,97116],[332,-205],[-76,-214],[-411,-122],[-226,138],[-119,221],[-22,245],[360,-24],[162,-39]],[[25514,94532],[-449,73],[-738,190],[-96,325],[-34,293],[-279,258],[-574,72],[-322,183],[104,242],[573,-37],[308,-190],[547,1],[240,-194],[-64,-222],[319,-134],[177,-140],[374,-26],[406,-50],[441,128],[566,51],[451,-42],[298,-223],[62,-244],[-174,-157],[-414,-127],[-355,72],[-797,-91],[-570,-11]],[[19093,96754],[392,-92],[-93,-177],[-518,-170],[-411,191],[224,188],[406,60]],[[19177,97139],[361,-120],[-339,-115],[-461,1],[5,84],[285,177],[149,-27]],[[34555,80899],[-148,-372],[-184,-517],[181,199],[187,-126],[-98,-206],[247,-162],[128,144],[277,-182],[-86,-433],[194,101],[36,-313],[86,-367],[-117,-520],[-125,-22],[-183,111],[60,484],[-77,75],[-322,-513],[-166,21],[196,277],[-267,144],[-298,-35],[-539,18],[-43,175],[173,208],[-121,160],[234,356],[287,941],[172,336],[241,204],[129,-26],[-54,-160]],[[26699,89048],[304,-203],[318,-184],[25,-281],[204,46],[199,-196],[-247,-186],[-432,142],[-156,266],[-275,-314],[-396,-306],[-95,346],[-377,-57],[242,292],[35,465],[95,542],[201,-49],[51,-259],[143,91],[161,-155]],[[28119,93327],[263,235],[616,-299],[383,-282],[36,-258],[515,134],[290,-376],[670,-234],[242,-238],[263,-553],[-510,-275],[654,-386],[441,-130],[400,-543],[437,-39],[-87,-414],[-487,-687],[-342,253],[-437,568],[-359,-74],[-35,-338],[292,-344],[377,-272],[114,-157],[181,-584],[-96,-425],[-350,160],[-697,473],[393,-509],[289,-357],[45,-206],[-753,236],[-596,343],[-337,287],[97,167],[-414,304],[-405,286],[5,-171],[-803,-94],[-235,203],[183,435],[522,10],[571,76],[-92,211],[96,294],[360,576],[-77,261],[-107,203],[-425,286],[-563,201],[178,150],[-294,367],[-245,34],[-219,201],[-149,-175],[-503,-76],[-1011,132],[-588,174],[-450,89],[-231,207],[290,270],[-394,2],[-88,599],[213,528],[286,241],[717,158],[-204,-382],[219,-369],[256,477],[704,242],[477,-611],[-42,-387],[550,172]],[[23749,94380],[579,-20],[530,-144],[-415,-526],[-331,-115],[-298,-442],[-317,22],[-173,519],[4,294],[145,251],[276,161]],[[15873,95551],[472,442],[570,383],[426,-9],[381,87],[-38,-454],[-214,-205],[-259,-29],[-517,-252],[-444,-91],[-377,128]],[[13136,82508],[267,47],[-84,-671],[242,-475],[-111,1],[-167,270],[-103,272],[-140,184],[-51,260],[16,188],[131,-76]],[[20696,97433],[546,-81],[751,-215],[212,-281],[108,-247],[-453,66],[-457,192],[-619,21],[268,176],[-335,142],[-21,227]],[[15692,79240],[-140,-82],[-456,269],[-84,209],[-248,207],[-50,168],[-286,107],[-107,321],[24,137],[291,-129],[171,-89],[261,-63],[94,-204],[138,-280],[277,-244],[115,-327]],[[16239,94566],[397,-123],[709,-33],[270,-171],[298,-249],[-349,-149],[-681,-415],[-344,-414],[0,-257],[-731,-285],[-147,259],[-641,312],[119,250],[192,432],[241,388],[-272,362],[939,93]],[[20050,95391],[247,99],[291,-26],[49,-289],[-169,-281],[-940,-91],[-701,-256],[-423,-14],[-35,193],[577,261],[-1255,-70],[-389,106],[379,577],[262,165],[782,-199],[493,-350],[485,-45],[-397,565],[255,215],[286,-68],[94,-282],[109,-210]],[[20410,93755],[311,-239],[175,-575],[86,-417],[466,-293],[502,-279],[-31,-260],[-456,-48],[178,-227],[-94,-217],[-503,93],[-478,160],[-322,-36],[-522,-201],[-704,-88],[-494,-56],[-151,279],[-379,161],[-246,-66],[-343,468],[185,62],[429,101],[392,-26],[362,103],[-537,138],[-594,-47],[-394,12],[-146,217],[644,237],[-428,-9],[-485,156],[233,443],[193,235],[744,359],[284,-114],[-139,-277],[618,179],[386,-298],[314,302],[254,-194],[227,-580],[140,244],[-197,606],[244,86],[276,-94]],[[22100,93536],[-306,386],[329,286],[331,-124],[496,75],[72,-172],[-259,-283],[420,-254],[-50,-532],[-455,-229],[-268,50],[-192,225],[-690,456],[5,189],[567,-73]],[[20389,94064],[372,24],[211,-130],[-244,-390],[-434,413],[95,83]],[[22639,95907],[212,-273],[9,-303],[-127,-440],[-458,-60],[-298,94],[5,345],[-455,-46],[-18,457],[299,-18],[419,201],[390,-34],[22,77]],[[23329,98201],[192,180],[285,42],[-122,135],[646,30],[355,-315],[468,-127],[455,-112],[220,-390],[334,-190],[-381,-176],[-513,-445],[-492,-42],[-575,76],[-299,240],[4,215],[220,157],[-508,-4],[-306,196],[-176,268],[193,262]],[[24559,98965],[413,112],[324,19],[545,96],[409,220],[344,-30],[300,-166],[211,319],[367,95],[498,65],[849,24],[148,-63],[802,100],[601,-38],[602,-37],[742,-47],[597,-75],[508,-161],[-12,-157],[-678,-257],[-672,-119],[-251,-133],[605,3],[-656,-358],[-452,-167],[-476,-483],[-573,-98],[-177,-120],[-841,-64],[383,-74],[-192,-105],[230,-292],[-264,-202],[-429,-167],[-132,-232],[-388,-176],[39,-134],[475,23],[6,-144],[-742,-355],[-726,163],[-816,-91],[-414,71],[-525,31],[-35,284],[514,133],[-137,427],[170,41],[742,-255],[-379,379],[-450,113],[225,229],[492,141],[79,206],[-392,231],[-118,304],[759,-26],[220,-64],[433,216],[-625,68],[-972,-38],[-491,201],[-232,239],[-324,173],[-61,202]],[[29106,90427],[-180,-174],[-312,-30],[-69,289],[118,331],[255,82],[217,-163],[3,-253],[-32,-82]],[[23262,91636],[169,-226],[-173,-207],[-374,179],[-226,-65],[-380,266],[245,183],[194,256],[295,-168],[166,-106],[84,-112]],[[32078,80046],[96,49],[365,-148],[284,-247],[8,-108],[-135,-11],[-360,186],[-258,279]],[[32218,78370],[97,-288],[202,-79],[257,16],[-137,-242],[-102,-38],[-353,250],[-69,198],[105,183]],[[31350,77248],[48,-194],[-296,-286],[-286,-204],[-293,-175],[-147,-351],[-47,-133],[-3,-313],[92,-313],[115,-15],[-29,216],[83,-131],[-22,-169],[-188,-96],[-133,11],[-205,-103],[-121,-29],[-162,-29],[-231,-171],[408,111],[82,-112],[-389,-177],[-177,-1],[8,72],[-84,-164],[82,-27],[-60,-424],[-203,-455],[-20,152],[-61,30],[-91,148],[57,-318],[69,-105],[5,-223],[-89,-230],[-157,-472],[-25,24],[86,402],[-142,225],[-33,491],[-53,-255],[59,-375],[-183,93],[191,-191],[12,-562],[79,-41],[29,-204],[39,-591],[-176,-439],[-288,-175],[-182,-346],[-139,-38],[-141,-217],[-39,-199],[-305,-383],[-157,-281],[-131,-351],[-43,-419],[50,-411],[92,-505],[124,-418],[1,-256],[132,-685],[-9,-398],[-12,-230],[-69,-361],[-83,-75],[-137,72],[-44,259],[-105,136],[-148,508],[-129,452],[-42,231],[57,393],[-77,325],[-217,494],[-108,90],[-281,-268],[-49,30],[-135,275],[-174,147],[-314,-75],[-247,66],[-212,-41],[-114,-92],[50,-157],[-5,-240],[59,-117],[-53,-77],[-103,87],[-104,-112],[-202,18],[-207,312],[-242,-73],[-202,137],[-173,-42],[-234,-138],[-253,-438],[-276,-255],[-152,-282],[-63,-266],[-3,-407],[14,-284],[52,-201]],[[23016,65864],[-108,-18],[-197,130],[-217,184],[-78,277],[-61,414],[-164,337],[-96,346],[-139,404],[-196,236],[-227,-11],[-175,-467],[-230,177],[-144,178],[-69,325],[-92,309],[-165,260],[-142,186],[-102,210],[-481,0],[0,-244],[-221,0],[-552,-4],[-634,416],[-419,287],[26,116],[-353,-64],[-316,-46]],[[17464,69802],[-46,302],[-180,340],[-130,71],[-30,169],[-156,30],[-100,159],[-258,59],[-71,95],[-33,324],[-270,594],[-231,821],[10,137],[-123,195],[-215,495],[-38,482],[-148,323],[61,489],[-10,507],[-89,453],[109,557],[34,536],[33,536],[-50,792],[-88,506],[-80,274],[33,115],[402,-200],[148,-558],[69,156],[-45,484],[-94,485]],[[6833,62443],[49,-51],[45,-79],[71,-207],[-7,-33],[-108,-126],[-89,-92],[-41,-99],[-69,84],[8,165],[-46,216],[14,65],[48,97],[-19,116],[16,55],[21,-11],[107,-100]],[[6668,62848],[-23,-71],[-94,-43],[-47,125],[-32,48],[-3,37],[27,50],[99,-56],[73,-90]],[[6456,63091],[-9,-63],[-149,17],[21,72],[137,-26]],[[6104,63411],[23,-38],[80,-196],[-15,-34],[-19,8],[-97,21],[-35,133],[-11,24],[74,82]],[[5732,63705],[5,-138],[-33,-58],[-93,107],[14,43],[43,58],[64,-12]],[[3759,86256],[220,-54],[27,-226],[-171,-92],[-182,110],[-168,161],[274,101]],[[7436,84829],[185,-40],[117,-183],[-240,-281],[-277,-225],[-142,152],[-43,277],[252,210],[148,90]],[[13740,82958],[-153,223],[-245,188],[-78,515],[-358,478],[-150,558],[-267,38],[-441,15],[-326,170],[-574,613],[-266,112],[-486,211],[-385,-51],[-546,272],[-330,252],[-309,-125],[58,-411],[-154,-38],[-321,-123],[-245,-199],[-308,-126],[-39,348],[125,580],[295,182],[-76,148],[-354,-329],[-190,-394],[-400,-420],[203,-287],[-262,-424],[-299,-248],[-278,-180],[-69,-261],[-434,-305],[-87,-278],[-325,-252],[-191,45],[-259,-165],[-282,-201],[-231,-197],[-477,-169],[-43,99],[304,276],[271,182],[296,324],[345,66],[137,243],[385,353],[62,119],[205,208],[48,448],[141,349],[-320,-179],[-90,102],[-150,-215],[-181,300],[-75,-212],[-104,294],[-278,-236],[-170,0],[-24,352],[50,216],[-179,211],[-361,-113],[-235,277],[-190,142],[-1,334],[-214,252],[108,340],[226,330],[99,303],[225,43],[191,-94],[224,285],[201,-51],[212,183],[-52,270],[-155,106],[205,228],[-170,-7],[-295,-128],[-85,-131],[-219,131],[-392,-67],[-407,142],[-117,238],[-351,343],[390,247],[620,289],[228,0],[-38,-296],[586,23],[-225,366],[-342,225],[-197,296],[-267,252],[-381,187],[155,309],[493,19],[350,270],[66,287],[284,281],[271,68],[526,262],[256,-40],[427,315],[421,-124],[201,-266],[123,114],[469,-35],[-16,-136],[425,-101],[283,59],[585,-186],[534,-56],[214,-77],[370,96],[421,-177],[302,-83]],[[2297,88264],[171,-113],[173,61],[225,-156],[276,-79],[-23,-64],[-211,-125],[-211,128],[-106,107],[-245,-34],[-66,52],[17,223]],[[74266,79657],[-212,-393],[-230,-56],[-13,-592],[-155,-267],[-551,194],[-200,-1058],[-143,-131],[-550,-236],[250,-1026],[-190,-154],[22,-337]],[[72294,75601],[-171,87],[-140,212],[-412,62],[-461,16],[-100,-65],[-396,248],[-158,-122],[-43,-349],[-457,204],[-183,-84],[-62,-259]],[[69711,75551],[-159,-109],[-367,-412],[-121,-422],[-104,-4],[-76,280],[-353,19],[-57,484],[-135,4],[21,593],[-333,431],[-476,-46],[-326,-86],[-265,533],[-227,223],[-431,423],[-52,51],[-715,-349],[11,-2178]],[[65546,74986],[-142,-29],[-195,463],[-188,166],[-315,-123],[-123,-197]],[[64583,75266],[-15,144],[68,246],[-53,206],[-322,202],[-125,530],[-154,150],[-9,192],[270,-56],[11,432],[236,96],[243,-88],[50,576],[-50,365],[-278,-28],[-236,144],[-321,-260],[-259,-124]],[[63639,77993],[-142,96],[29,304],[-177,395],[-207,-17],[-235,401],[160,448],[-81,120],[222,649],[285,-342],[35,431],[573,643],[434,15],[612,-409],[329,-239],[295,249],[440,12],[356,-306],[80,175],[391,-25],[69,280],[-450,406],[267,288],[-52,161],[266,153],[-200,405],[127,202],[1039,205],[136,146],[695,218],[250,245],[499,-127],[88,-612],[290,144],[356,-202],[-23,-322],[267,33],[696,558],[-102,-185],[355,-457],[620,-1500],[148,309],[383,-340],[399,151],[154,-106],[133,-341],[194,-115],[119,-251],[358,79],[147,-361]],[[69711,75551],[83,-58],[-234,-382],[205,-223],[198,147],[329,-311],[-355,-425],[-212,58]],[[69725,74357],[-114,-15],[-40,164],[58,274],[-371,-137],[-89,-380],[-132,-326],[-232,28],[-72,-261],[204,-140],[60,-440],[-156,-598]],[[68841,72526],[-210,124],[-154,4]],[[68477,72654],[7,362],[-369,253],[-291,289],[-181,278],[-317,408],[-137,609],[-93,108],[-301,-27],[-106,121],[-30,471],[-374,312],[-234,-343],[-237,-204],[45,-297],[-313,-8]],[[89166,49043],[482,-407],[513,-338],[192,-302],[154,-297],[43,-349],[462,-365],[68,-313],[-256,-64],[62,-393],[248,-388],[180,-627],[159,20],[-11,-262],[215,-100],[-84,-111],[295,-249],[-30,-171],[-184,-41],[-69,153],[-238,66],[-281,89],[-216,377],[-158,325],[-144,517],[-362,259],[-235,-169],[-170,-195],[35,-436],[-218,-203],[-155,99],[-288,25]],[[89175,45193],[-4,1925],[-5,1925]],[[92399,48417],[106,-189],[33,-307],[-87,-157],[-52,348],[-65,229],[-126,193],[-158,252],[-200,174],[77,143],[150,-166],[94,-130],[117,-142],[111,-248]],[[92027,47129],[-152,-144],[-142,-138],[-148,1],[-228,171],[-158,165],[23,183],[249,-86],[152,46],[42,283],[40,15],[27,-314],[158,45],[78,202],[155,211],[-30,348],[166,11],[56,-97],[-5,-327],[-93,-361],[-146,-48],[-44,-166]],[[92988,47425],[84,-134],[135,-375],[131,-200],[-39,-166],[-78,-59],[-120,227],[-122,375],[-59,450],[38,57],[30,-175]],[[89175,45193],[-247,485],[-282,118],[-69,-168],[-352,-18],[118,481],[175,164],[-72,642],[-134,496],[-538,500],[-229,50],[-417,546],[-82,-287],[-107,-52],[-63,216],[-1,257],[-212,290],[299,213],[198,-11],[-23,156],[-407,1],[-110,352],[-248,109],[-117,293],[374,143],[142,192],[446,-242],[44,-220],[78,-955],[287,-354],[232,627],[319,356],[247,1],[238,-206],[206,-212],[298,-113]],[[84713,45326],[28,-117],[5,-179]],[[84746,45030],[-181,-441],[-238,-130],[-33,71],[25,201],[119,360],[275,235]],[[87280,46506],[-27,445],[49,212],[58,200],[63,-173],[0,-282],[-143,-402]],[[82744,53024],[-158,-533],[204,-560],[-48,-272],[312,-546],[-329,-70],[-93,-403],[12,-535],[-267,-404],[-7,-589],[-107,-903],[-41,210],[-316,-266],[-110,361],[-198,34],[-139,189],[-330,-212],[-101,285],[-182,-32],[-229,68],[-43,793],[-138,164],[-134,505],[-38,517],[32,548],[165,392]],[[80461,51765],[47,-395],[190,-334],[179,121],[177,-43],[162,299],[133,52],[263,-166],[226,126],[143,822],[107,205],[96,672],[319,0],[241,-100]],[[85936,48924],[305,-172],[101,-452],[-234,244],[-232,49],[-157,-39],[-192,21],[65,325],[344,24]],[[85242,48340],[-192,108],[-54,254],[281,29],[69,-195],[-104,-196]],[[85536,51864],[20,-322],[164,-52],[26,-241],[-15,-517],[-143,58],[-42,-359],[114,-312],[-78,-71],[-112,374],[-82,755],[56,472],[92,215]],[[84146,51097],[319,25],[275,429],[48,-132],[-223,-587],[-209,-113],[-267,115],[-463,-29],[-243,-85],[-39,-447],[248,-526],[150,268],[518,201],[-22,-272],[-121,86],[-121,-347],[-245,-229],[263,-757],[-50,-203],[249,-682],[-2,-388],[-148,-173],[-109,207],[134,484],[-273,-229],[-69,164],[36,228],[-200,346],[21,576],[-186,-179],[24,-689],[11,-846],[-176,-85],[-119,173],[79,544],[-43,570],[-117,4],[-86,405],[115,387],[40,469],[139,891],[58,243],[237,439],[217,-174],[350,-82]],[[83414,44519],[-368,414],[259,116],[146,-180],[97,-180],[-17,-159],[-117,-11]],[[83705,45536],[185,45],[249,216],[-41,-328],[-417,-168],[-370,73],[0,216],[220,123],[174,-177]],[[82849,45639],[172,48],[69,-251],[-321,-119],[-193,-79],[-149,5],[95,340],[153,5],[74,209],[100,-158]],[[80134,46785],[38,-210],[533,-59],[61,244],[515,-284],[101,-383],[417,-108],[341,-351],[-317,-225],[-306,238],[-251,-16],[-288,44],[-260,106],[-322,225],[-204,59],[-116,-74],[-506,243],[-48,254],[-255,44],[191,564],[337,-35],[224,-231],[115,-45]],[[78991,49939],[47,-412],[97,-330],[204,-52],[135,-374],[-70,-735],[-11,-914],[-308,-12],[-234,494],[-356,482],[-119,358],[-210,481],[-138,443],[-212,827],[-244,493],[-81,508],[-103,461],[-250,372],[-145,506],[-209,330],[-290,652],[-24,300],[178,-24],[430,-114],[246,-577],[215,-401],[153,-246],[263,-635],[283,-9],[233,-405],[161,-495],[211,-270],[-111,-482],[159,-205],[100,-15]],[[30935,19481],[106,-274],[139,-443],[361,-355],[389,-147],[-125,-296],[-264,-29],[-141,208]],[[31400,18145],[-168,16],[-297,1],[0,1319]],[[33993,32727],[-70,-473],[-74,-607],[3,-588],[-61,-132],[-21,-382]],[[33770,30545],[-19,-308],[353,-506],[-38,-408],[173,-257],[-14,-289],[-267,-757],[-412,-317],[-557,-123],[-305,59],[59,-352],[-57,-442],[51,-298],[-167,-208],[-284,-82],[-267,216],[-108,-155],[39,-587],[188,-178],[152,186],[82,-307],[-255,-183],[-223,-367],[-41,-595],[-66,-316],[-262,-2],[-218,-302],[-80,-443],[273,-433],[266,-119],[-96,-531],[-328,-333],[-180,-692],[-254,-234],[-113,-276],[89,-614],[185,-342],[-117,30]],[[30952,19680],[-257,93],[-672,79],[-115,344],[6,443],[-185,-38],[-98,214],[-24,626],[213,260],[88,375],[-33,299],[148,504],[101,782],[-30,347],[122,112],[-30,223],[-129,118],[92,248],[-126,224],[-65,682],[112,120],[-47,720],[65,605],[75,527],[166,215],[-84,576],[-1,543],[210,386],[-7,494],[159,576],[1,544],[-72,108],[-128,1020],[171,607],[-27,572],[100,537],[182,555],[196,367],[-83,232],[58,190],[-9,985],[302,291],[96,614],[-34,148]],[[31359,37147],[231,534],[364,-144],[163,-427],[109,475],[316,-24],[45,-127]],[[32587,37434],[511,-964],[227,-89],[339,-437],[286,-231],[40,-261],[-273,-898],[280,-160],[312,-91],[220,95],[252,453],[45,521]],[[34826,35372],[138,114],[139,-341],[-6,-472],[-234,-326],[-186,-241],[-314,-573],[-370,-806]],[[31400,18145],[-92,-239],[-238,-183],[-137,19],[-164,48],[-202,177],[-291,86],[-350,330],[-283,317],[-383,662],[229,-124],[390,-395],[369,-212],[143,271],[90,405],[256,244],[198,-70]],[[30669,40193],[136,-402],[37,-426],[146,-250],[-88,-572],[150,-663],[109,-814],[200,81]],[[30952,19680],[-247,4],[-134,-145],[-250,-213],[-45,-552],[-118,-14],[-313,192],[-318,412],[-346,338],[-87,374],[79,346],[-140,393],[-36,1007],[119,568],[293,457],[-422,172],[265,522],[94,982],[309,-208],[145,1224],[-186,157],[-87,-738],[-175,83],[87,845],[95,1095],[127,404],[-80,576],[-22,666],[117,19],[170,954],[192,945],[118,881],[-64,885],[83,487],[-34,730],[163,721],[50,1143],[89,1227],[87,1321],[-20,967],[-58,832]],[[30452,39739],[143,151],[74,303]],[[58538,45652],[-109,60],[-373,-99],[-75,-71],[-79,-377],[62,-261],[-49,-699],[-34,-593],[75,-105],[194,-230],[76,107],[23,-637],[-212,5],[-114,325],[-103,252],[-213,82],[-62,310],[-170,-187],[-222,83],[-93,268],[-176,55],[-131,-15],[-15,184],[-96,15]],[[56642,44124],[-127,35],[-172,-89],[-121,15],[-68,-54],[15,703],[-93,219],[-21,363],[41,356],[-56,228],[-5,372],[-337,-5],[24,213],[-142,-2],[-15,-103],[-172,-23],[-69,-344],[-42,-148],[-154,83],[-91,-83],[-184,-47],[-106,309],[-64,191],[-80,354],[-68,440],[-820,8],[-98,-71],[-80,11],[-115,-79]],[[53422,46976],[-39,183]],[[53383,47159],[71,62],[9,258],[45,152],[101,124]],[[53609,47755],[73,-60],[95,226],[152,-6],[17,-167],[104,-105],[164,370],[161,289],[71,189],[-10,486],[121,574],[127,304],[183,285],[32,189],[7,216],[45,205],[-14,335],[34,524],[55,368],[83,316],[16,357]],[[55125,52650],[25,412],[108,300],[149,190],[229,-200],[177,-218],[203,-59],[207,-115],[83,357],[38,46],[127,-60],[309,295],[110,-125],[90,18],[41,143],[104,51],[209,-62],[178,-14],[91,63]],[[57603,53672],[169,-488],[124,-71],[75,99],[128,-39],[155,125],[66,-252],[244,-393]],[[58564,52653],[-16,-691],[111,-80],[-89,-210],[-107,-157],[-106,-308],[-59,-274],[-15,-475],[-65,-225],[-2,-446]],[[58216,49787],[-80,-165],[-10,-351],[-38,-46],[-26,-323]],[[58062,48902],[70,-268],[17,-713]],[[61551,49585],[-165,488],[-3,2152],[243,670]],[[61626,52895],[76,186],[178,11],[247,417],[362,26],[785,1773]],[[63274,55308],[194,493],[125,363],[0,308],[0,596],[1,244],[2,9]],[[63596,57321],[89,12],[128,88],[147,59],[132,202],[105,2],[6,-163],[-25,-344],[1,-310],[-59,-214],[-78,-639],[-134,-659],[-172,-755],[-238,-866],[-237,-661],[-327,-806],[-278,-479],[-415,-586],[-259,-450],[-304,-715],[-64,-312],[-63,-140]],[[59417,50018],[-3,627],[80,239],[137,391],[101,431],[-123,678],[-32,296],[-132,411]],[[59445,53091],[171,352],[188,390]],[[59804,53833],[145,-99],[0,-332],[95,-194],[193,0],[352,-502],[87,-6],[65,16],[62,-68],[185,-47],[82,247],[254,247],[112,-200],[190,0]],[[61551,49585],[-195,-236],[-68,-246],[-104,-44],[-40,-416],[-89,-238],[-54,-393],[-112,-195]],[[56824,55442],[-212,258],[-96,170],[-18,184],[45,246],[-1,241],[-160,369],[-31,253]],[[56351,57163],[3,143],[-102,174],[-3,343],[-58,228],[-98,-34],[28,217],[72,246],[-32,245],[92,181],[-58,138],[73,365],[127,435],[240,-41],[-14,2345]],[[56621,62148],[3,248],[320,2],[0,1180]],[[56944,63578],[1117,0],[1077,0],[1102,0]],[[60240,63578],[90,-580],[-61,-107],[40,-608],[102,-706],[106,-145],[152,-219]],[[60669,61213],[-141,-337],[-204,-97],[-88,-181],[-27,-393],[-120,-868],[30,-236]],[[60119,59101],[-45,-508],[-112,-582],[-168,-293],[-119,-451],[-28,-241],[-132,-166],[-82,-618],[4,-531]],[[59437,55711],[-3,460],[-39,12],[5,294],[-33,203],[-143,233],[-34,426],[34,436],[-129,41],[-19,-132],[-167,-30],[67,-173],[23,-355],[-152,-324],[-138,-426],[-144,-61],[-233,345],[-105,-122],[-29,-172],[-143,-112],[-9,-122],[-277,0],[-38,122],[-200,20],[-100,-101],[-77,51],[-143,344],[-48,163],[-200,-81],[-76,-274],[-72,-528],[-95,-111],[-85,-65],[189,-230]],[[56351,57163],[-176,-101],[-141,-239],[-201,-645],[-261,-273],[-269,36],[-78,-54],[28,-208],[-145,-207],[-118,-230],[-350,-226],[-69,134],[-46,11],[-52,-152],[-229,-44]],[[54244,54965],[43,160],[-87,407],[-39,245],[-121,100],[-164,345],[60,279],[127,-60],[78,42],[155,-6],[-151,537],[10,393],[-18,392],[-111,378]],[[54026,58177],[28,279],[-178,13],[0,380],[-115,219],[120,778],[354,557],[15,769],[107,1199],[60,254],[-116,203],[-4,188],[-104,153],[-68,919]],[[54125,64088],[280,323],[1108,-1132],[1108,-1131]],[[30080,62227],[24,-321],[-21,-228],[-68,-99],[71,-177],[-5,-161]],[[30081,61241],[-185,100],[-131,-41],[-169,43],[-130,-110],[-149,184],[24,190],[256,-82],[210,-47],[100,131],[-127,256],[2,226],[-175,92],[62,163],[170,-26],[241,-93]],[[30080,62227],[34,101],[217,-3],[165,-152],[73,15],[50,-209],[152,11],[-9,-176],[124,-21],[136,-217],[-103,-240],[-132,128],[-127,-25],[-92,28],[-50,-107],[-106,-37],[-43,144],[-92,-85],[-111,-405],[-71,94],[-14,170]],[[76049,98451],[600,133],[540,-297],[640,-572],[-69,-531],[-606,-73],[-773,170],[-462,226],[-213,423],[-379,117],[722,404]],[[78565,97421],[704,-336],[-82,-240],[-1566,-228],[507,776],[229,66],[208,-38]],[[88563,95563],[734,-26],[1004,-313],[-219,-439],[-1023,16],[-461,-139],[-550,384],[149,406],[366,111]],[[91172,95096],[697,-155],[-321,-234],[-444,53],[-516,233],[66,192],[518,-89]],[[88850,93928],[263,234],[348,54],[394,-226],[34,-155],[-421,-4],[-569,66],[-49,31]],[[62457,98194],[542,107],[422,8],[57,-160],[159,142],[262,97],[412,-129],[-107,-90],[-373,-78],[-250,-45],[-39,-97],[-324,-98],[-301,140],[158,185],[-618,18]],[[56314,82678],[-511,-9],[-342,67]],[[55461,82736],[63,260],[383,191]],[[55907,83187],[291,-103],[123,-94],[-30,-162],[23,-150]],[[64863,94153],[665,518],[-75,268],[621,312],[917,380],[925,110],[475,220],[541,76],[193,-233],[-187,-184],[-984,-293],[-848,-282],[-863,-562],[-414,-577],[-435,-568],[56,-491],[531,-484],[-164,-52],[-907,77],[-74,262],[-503,158],[-40,320],[284,126],[-10,323],[551,503],[-255,73]],[[89698,82309],[96,-569],[-7,-581],[114,-597],[280,-1046],[-411,195],[-171,-854],[271,-605],[-8,-413],[-211,356],[-182,-457],[-51,496],[31,575],[-32,638],[64,446],[13,790],[-163,581],[24,808],[257,271],[-110,274],[123,83],[73,-391]],[[86327,75524],[-39,104]],[[86288,75628],[-2,300],[142,16],[40,698],[-73,506],[238,208],[338,-104],[186,575],[96,647],[107,216],[146,532],[-459,-175],[-240,-233],[-423,1],[-112,555],[-329,420],[-483,189],[-103,579],[-97,363],[-104,254],[-172,596],[-244,217],[-415,176],[-369,-16],[-345,-106],[-229,-294],[152,-141],[4,-326],[-155,-189],[-251,-627],[3,-260],[-392,-373],[-333,223]],[[82410,80055],[-331,-49],[-146,198],[-166,63],[-407,-416],[-366,-98],[-255,-146],[-350,96],[-258,-6],[-168,302],[-272,284],[-279,78],[-351,-78],[-263,-109],[-394,248],[-53,443],[-327,152],[-252,69],[-311,244],[-288,-612],[113,-348],[-270,-411],[-402,148],[-277,22],[-186,276],[-289,8],[-242,182],[-423,-278],[-530,-509],[-292,-102]],[[74375,79706],[-109,-49]],[[63639,77993],[-127,-350],[-269,-97],[-276,-610],[252,-561],[-27,-398],[303,-696]],[[63495,75281],[-166,-238],[-48,-150],[-122,40],[-191,359],[-78,20]],[[62890,75312],[-175,137],[-85,242],[-259,124],[-169,-93],[-48,110],[-378,283],[-409,96],[-235,101],[-34,-70]],[[61098,76242],[-354,499],[-317,223],[-240,347],[202,95],[231,494],[-156,234],[410,241],[-8,129],[-249,-95]],[[60617,78409],[9,262],[143,165],[269,43],[44,197],[-62,326],[113,310],[-3,173],[-410,192],[-162,-6],[-172,277],[-213,-94],[-352,208],[6,116],[-99,256],[-222,29],[-23,183],[70,120],[-178,334],[-288,-57],[-84,30],[-70,-134],[-104,23]],[[58829,81362],[-68,379],[-66,196],[54,55],[224,-20],[108,129],[-80,157],[-187,104],[16,107],[-113,108],[-174,387],[60,159],[-27,277],[-272,141],[-146,-70],[-39,146],[-293,149]],[[57826,83766],[-89,348],[-24,287],[-134,136]],[[57579,84537],[120,187],[-83,551],[198,341],[-42,103]],[[57772,85719],[316,327],[-291,280]],[[57797,86326],[594,755],[258,341],[105,301],[-411,405],[113,385],[-250,440],[187,506],[-323,673],[256,445],[-425,394],[41,414]],[[57942,91385],[224,54],[473,237]],[[58639,91676],[286,206],[456,-358],[761,-140],[1050,-668],[213,-281],[18,-393],[-308,-311],[-454,-157],[-1240,449],[-204,-75],[453,-433],[18,-274],[18,-604],[358,-180],[217,-153],[36,286],[-168,254],[177,224],[672,-368],[233,144],[-186,433],[647,578],[256,-34],[260,-206],[161,406],[-231,352],[136,353],[-204,367],[777,-190],[158,-331],[-351,-73],[1,-328],[219,-203],[429,128],[68,377],[580,282],[970,507],[209,-29],[-273,-359],[344,-61],[199,202],[521,16],[412,245],[317,-356],[315,391],[-291,343],[145,195],[820,-179],[385,-185],[1006,-675],[186,309],[-282,313],[-8,125],[-335,58],[92,280],[-149,461],[-8,189],[512,535],[183,537],[206,116],[736,-156],[57,-328],[-263,-479],[173,-189],[89,-413],[-63,-809],[307,-362],[-120,-395],[-544,-839],[318,-87],[110,213],[306,151],[74,293],[240,281],[-162,336],[130,390],[-304,49],[-67,328],[222,593],[-361,482],[497,398],[-64,421],[139,13],[145,-328],[-109,-570],[297,-108],[-127,426],[465,233],[577,31],[513,-337],[-247,492],[-28,630],[483,119],[669,-26],[602,77],[-226,309],[321,388],[319,16],[540,293],[734,79],[93,162],[729,55],[227,-133],[624,314],[510,-10],[77,255],[265,252],[656,242],[476,-191],[-378,-146],[629,-90],[75,-292],[254,143],[812,-7],[626,-289],[223,-221],[-69,-307],[-307,-175],[-730,-328],[-209,-175],[345,-83],[410,-149],[251,112],[141,-379],[122,153],[444,93],[892,-97],[67,-276],[1162,-88],[15,451],[590,-104],[443,4],[449,-312],[128,-378],[-165,-247],[349,-465],[437,-240],[268,620],[446,-266],[473,159],[538,-182],[204,166],[455,-83],[-201,549],[367,256],[2509,-384],[236,-351],[727,-451],[1122,112],[553,-98],[231,-244],[-33,-432],[342,-168],[372,121],[492,15],[525,-116],[526,66],[484,-526],[344,189],[-224,378],[123,262],[886,-165],[578,36],[799,-282],[-99610,-258],[681,-451],[728,-588],[-24,-367],[187,-147],[-64,429],[754,-88],[544,-553],[-276,-257],[-455,-61],[-7,-578],[-111,-122],[-260,17],[-212,206],[-369,172],[-62,257],[-283,96],[-315,-76],[-151,207],[60,219],[-333,-140],[126,-278],[-158,-251],[99997,-3],[-357,-260],[-360,44],[250,-315],[166,-487],[128,-159],[32,-244],[-71,-157],[-518,129],[-777,-445],[-247,-69],[-425,-415],[-403,-362],[-102,-269],[-397,409],[-724,-464],[-126,219],[-268,-253],[-371,81],[-90,-388],[-333,-572],[10,-239],[316,-132],[-37,-860],[-258,-22],[-119,-494],[116,-255],[-486,-302],[-96,-674],[-415,-144],[-83,-600],[-400,-551],[-103,407],[-119,862],[-155,1313],[134,819],[234,353],[14,276],[432,132],[496,744],[479,608],[499,471],[223,833],[-337,-50],[-167,-487],[-705,-649],[-227,727],[-717,-201],[-696,-990],[230,-362],[-620,-154],[-430,-61],[20,427],[-431,90],[-344,-291],[-850,102],[-914,-175],[-899,-1153],[-1065,-1394],[438,-74],[136,-370],[270,-132],[178,295],[305,-38],[401,-650],[9,-503],[-217,-590],[-23,-705],[-126,-945],[-418,-855],[-94,-409],[-377,-688],[-374,-682],[-179,-349],[-370,-346],[-175,-8],[-175,287],[-373,-432],[-43,-197]],[[0,92833],[36,24],[235,-1],[402,-169],[-24,-81],[-286,-141],[-363,-36],[99694,-30],[-49,187],[-99645,247]],[[59287,77741],[73,146],[198,-127],[89,-23],[36,-117],[42,-18]],[[59725,77602],[2,-51],[136,-142],[284,35],[-55,-210],[-304,-103],[-377,-342],[-154,121],[61,277],[-304,173],[50,113],[265,197],[-42,71]],[[28061,66408],[130,47],[184,-18],[8,-153],[-303,-95],[-19,219]],[[28391,66555],[220,-265],[-48,-420],[-51,75],[4,309],[-124,234],[-1,67]],[[28280,65474],[84,-23],[97,-491],[1,-343],[-68,-29],[-70,340],[-104,171],[60,375]],[[33000,19946],[333,354],[236,-148],[167,237],[222,-266],[-83,-207],[-375,-177],[-125,207],[-236,-266],[-139,266]],[[54206,97653],[105,202],[408,20],[350,-206],[915,-440],[-699,-233],[-155,-435],[-243,-111],[-132,-490],[-335,-23],[-598,361],[252,210],[-416,170],[-541,499],[-216,463],[757,212],[152,-207],[396,8]],[[57942,91385],[117,414],[-356,235],[-431,-200],[-137,-433],[-265,-262],[-298,143],[-362,-29],[-309,312],[-167,-156]],[[55734,91409],[-172,-24],[-41,-389],[-523,95],[-74,-329],[-267,2],[-183,-421],[-278,-655],[-431,-831],[101,-202],[-97,-234],[-275,10],[-180,-554],[17,-784],[177,-300],[-92,-694],[-231,-405],[-122,-341]],[[53063,85353],[-187,363],[-548,-684],[-371,-138],[-384,301],[-99,635],[-88,1363],[256,381],[733,496],[549,609],[508,824],[668,1141],[465,444],[763,741],[610,259],[457,-31],[423,489],[506,-26],[499,118],[869,-433],[-358,-158],[305,-371]],[[57613,97879],[-412,-318],[-806,-70],[-819,98],[-50,163],[-398,11],[-304,271],[858,165],[403,-142],[281,177],[702,-148],[545,-207]],[[56867,96577],[-620,-241],[-490,137],[191,152],[-167,189],[575,119],[110,-222],[401,-134]],[[37010,99398],[932,353],[975,-27],[354,218],[982,57],[2219,-74],[1737,-469],[-513,-227],[-1062,-26],[-1496,-58],[140,-105],[984,65],[836,-204],[540,181],[231,-212],[-305,-344],[707,220],[1348,229],[833,-114],[156,-253],[-1132,-420],[-157,-136],[-888,-102],[643,-28],[-324,-431],[-224,-383],[9,-658],[333,-386],[-434,-24],[-457,-187],[513,-313],[65,-502],[-297,-55],[360,-508],[-617,-42],[322,-241],[-91,-208],[-391,-91],[-388,-2],[348,-400],[4,-263],[-549,244],[-143,-158],[375,-148],[364,-361],[105,-476],[-495,-114],[-214,228],[-344,340],[95,-401],[-322,-311],[732,-25],[383,-32],[-745,-515],[-755,-466],[-813,-204],[-306,-2],[-288,-228],[-386,-624],[-597,-414],[-192,-24],[-370,-145],[-399,-138],[-238,-365],[-4,-415],[-141,-388],[-453,-472],[112,-462],[-125,-488],[-142,-577],[-391,-36],[-410,482],[-556,3],[-269,324],[-186,577],[-481,735],[-141,385],[-38,530],[-384,546],[100,435],[-186,208],[275,691],[418,220],[110,247],[58,461],[-318,-209],[-151,-88],[-249,-84],[-341,193],[-19,401],[109,314],[258,9],[567,-157],[-478,375],[-249,202],[-276,-83],[-232,147],[310,550],[-169,220],[-220,409],[-335,626],[-353,230],[3,247],[-745,346],[-590,43],[-743,-24],[-677,-44],[-323,188],[-482,372],[729,186],[559,31],[-1188,154],[-627,241],[39,229],[1051,285],[1018,284],[107,214],[-750,213],[243,235],[961,413],[404,63],[-115,265],[658,156],[854,93],[853,5],[303,-184],[737,325],[663,-221],[390,-46],[577,-192],[-660,318],[38,253]],[[69148,21851],[179,-186],[263,-74],[9,-112],[-77,-269],[-427,-38],[-7,314],[41,244],[19,121]],[[84713,45326],[32,139],[239,133],[194,20],[87,74],[105,-74],[-102,-160],[-289,-258],[-233,-170]],[[54540,33696],[133,292],[109,-162],[47,-252],[125,-43],[175,-112],[149,43],[248,302],[0,2182]],[[55526,35946],[75,-88],[165,-562],[-26,-360],[62,-207],[199,60],[139,264],[132,177],[68,283],[135,137],[117,-71],[133,-166],[226,-29],[178,138],[28,184],[48,283],[152,47],[83,222],[93,393],[249,442],[393,435]],[[58175,37528],[113,-7],[134,-100],[94,71],[148,-59]],[[58664,37433],[133,-832],[72,-419],[-49,-659],[23,-212]],[[58843,35311],[-140,108],[-80,-42],[-26,-172],[-76,-222],[2,-204],[166,-320],[163,63],[56,263]],[[58908,34785],[211,-5]],[[59119,34780],[-70,-430],[-32,-491],[-72,-267],[-190,-298],[-54,-86],[-118,-300],[-77,-303],[-158,-424],[-314,-609],[-196,-355],[-210,-269],[-290,-229],[-141,-31],[-36,-164],[-169,88],[-138,-113],[-301,114],[-168,-72],[-115,31],[-286,-233],[-238,-94],[-171,-223],[-127,-14],[-117,210],[-94,11],[-120,264],[-13,-82],[-37,159],[2,346],[-90,396],[89,108],[-7,453],[-182,553],[-139,501],[-1,1],[-199,768]],[[58049,33472],[-121,182],[-130,-120],[-151,-232],[-148,-374],[209,-454],[99,59],[51,188],[155,93],[47,192],[85,288],[-96,178]],[[23016,65864],[-107,-518],[-49,-426],[-20,-791],[-27,-289],[48,-322],[86,-288],[56,-458],[184,-440],[65,-337],[109,-291],[295,-157],[114,-247],[244,165],[212,60],[208,106],[175,101],[176,241],[67,345],[22,496],[48,173],[188,155],[294,137],[246,-21],[169,50],[66,-125],[-9,-285],[-149,-351],[-66,-360],[51,-103],[-42,-255],[-69,-461],[-71,152],[-58,-10]],[[25472,61510],[-53,-8],[-99,-357],[-51,70],[-33,-27],[2,-87]],[[25238,61101],[-257,7],[-259,-1],[-1,-333],[-125,-1],[103,-198],[103,-136],[31,-128],[45,-36],[-7,-201],[-357,-2],[-133,-481],[39,-111],[-32,-138],[-7,-172]],[[24381,59170],[-314,636],[-144,191],[-226,155],[-156,-43],[-223,-223],[-140,-58],[-196,156],[-208,112],[-260,271],[-208,83],[-314,275],[-233,282],[-70,158],[-155,35],[-284,187],[-116,270],[-299,335],[-139,373],[-66,288],[93,57],[-29,169],[64,153],[1,204],[-93,266],[-25,235],[-94,298],[-244,587],[-280,462],[-135,368],[-238,241],[-51,145],[42,365],[-142,138],[-164,287],[-69,412],[-149,48],[-162,311],[-130,288],[-12,184],[-149,446],[-99,452],[5,227],[-201,234],[-93,-25],[-159,163],[-44,-240],[46,-284],[27,-444],[95,-243],[206,-407],[46,-139],[42,-42],[37,-203],[49,8],[56,-381],[85,-150],[59,-210],[174,-300],[92,-550],[83,-259],[77,-277],[15,-311],[134,-20],[112,-268],[100,-264],[-6,-106],[-117,-217],[-49,3],[-74,359],[-181,337],[-201,286],[-142,150],[9,432],[-42,320],[-132,183],[-191,264],[-37,-76],[-70,154],[-171,143],[-164,343],[20,44],[115,-33],[103,221],[10,266],[-214,422],[-163,163],[-102,369],[-103,388],[-129,472],[-113,531]],[[33993,32727],[180,63],[279,-457],[103,18],[286,-379],[218,-327],[160,-402],[-122,-280],[77,-334]],[[35174,30629],[-121,-372],[-313,-328],[-205,118],[-151,-63],[-256,253],[-189,-19],[-169,327]],[[34826,35372],[54,341],[38,350],[0,325],[-100,107],[-104,-96],[-103,26],[-33,228],[-26,541],[-52,177],[-187,160],[-114,-116],[-293,113],[18,802],[-82,329]],[[33842,38659],[87,122],[-27,337],[77,259],[49,465],[-66,367],[-151,166],[-30,233],[41,342],[-533,24],[-107,688],[81,10],[-3,255],[-55,172],[-12,342],[-161,175],[-175,-6],[-115,172],[-188,117],[-109,220],[-311,98],[-302,529],[23,396],[-34,227],[29,443],[-363,-100],[-147,-222],[-243,-239],[-62,-179],[-143,-13],[-206,50]],[[30686,44109],[-157,-102],[-126,68],[18,898],[-228,-348],[-245,15],[-105,315],[-184,34],[59,254],[-155,359],[-115,532],[73,108],[0,250],[168,171],[-28,319],[71,206],[20,275],[318,402],[227,114],[37,89],[251,-28]],[[30585,48040],[125,1620],[6,256],[-43,339],[-123,215],[1,430],[156,97],[56,-61],[9,226],[-162,61],[-4,370],[541,-13],[92,203],[77,-187],[55,-349],[52,73]],[[31423,51320],[153,-312],[216,38],[54,181],[206,138],[115,97],[32,250],[198,168],[-15,124],[-235,51],[-39,372],[12,396],[-125,153],[52,55],[206,-76],[221,-148],[80,140],[200,92],[310,221],[102,225],[-37,167]],[[33129,53652],[145,26],[64,-136],[-36,-259],[96,-90],[63,-274],[-77,-209],[-44,-502],[71,-299],[20,-274],[171,-277],[137,-29],[30,116],[88,25],[126,104],[90,157],[154,-50],[67,21]],[[34294,51702],[151,-48],[25,120],[-46,118],[28,171],[112,-53],[131,61],[159,-125]],[[34854,51946],[121,-122],[86,160],[62,-25],[38,-166],[133,42],[107,224],[85,436],[164,540]],[[35650,53035],[95,28],[69,-327],[155,-1033],[149,-97],[7,-408],[-208,-487],[86,-178],[491,-92],[10,-593],[211,388],[349,-212],[462,-361],[135,-346],[-45,-327],[323,182],[540,-313],[415,23],[411,-489],[355,-662],[214,-170],[237,-24],[101,-186],[94,-752],[46,-358],[-110,-977],[-142,-385],[-391,-822],[-177,-668],[-206,-513],[-69,-11],[-78,-435],[20,-1107],[-77,-910],[-30,-390],[-88,-233],[-49,-790],[-282,-771],[-47,-610],[-225,-256],[-65,-355],[-302,2],[-437,-227],[-195,-263],[-311,-173],[-327,-470],[-235,-586],[-41,-441],[46,-326],[-51,-597],[-63,-289],[-195,-325],[-308,-1040],[-244,-468],[-189,-277],[-127,-562],[-183,-337]],[[33842,38659],[-4,182],[-259,302],[-258,9],[-484,-172],[-133,-520],[-7,-318],[-110,-708]],[[30669,40193],[175,638],[-119,496],[63,199],[-49,219],[108,295],[6,503],[13,415],[60,200],[-240,951]],[[30452,39739],[-279,340],[-24,242],[-551,593],[-498,646],[-214,365],[-115,488],[46,170],[-236,775],[-274,1090],[-262,1177],[-114,269],[-87,435],[-216,386],[-198,239],[90,264],[-134,563],[86,414],[221,373]],[[27693,48568],[33,-246],[-79,-141],[8,-216],[114,47],[113,-64],[116,-298],[157,243],[53,398],[170,514],[334,233],[303,619],[86,384],[-38,449]],[[29063,50490],[74,56],[184,-280],[89,-279],[129,-152],[163,-620],[207,-74],[153,157],[101,-103],[166,51],[213,-276],[-179,-602],[83,-14],[139,-314]],[[29063,50490],[-119,140],[-137,195],[-79,-94],[-235,82],[-68,255],[-52,-10],[-278,338]],[[28095,51396],[-37,183],[103,44],[-12,296],[65,214],[138,40],[117,371],[106,310],[-102,141],[52,343],[-62,540],[59,155],[-44,500],[-112,315]],[[28366,54848],[36,287],[89,-43],[52,176],[-64,348],[34,86]],[[28513,55702],[143,-18],[209,412],[114,63],[3,195],[51,500],[159,274],[175,11],[22,123],[218,-49],[218,298],[109,132],[134,285],[98,-36],[73,-156],[-54,-199]],[[30185,57537],[-178,-99],[-71,-295],[-107,-169],[-81,-220],[-34,-422],[-77,-345],[144,-40],[35,-271],[62,-130],[21,-238],[-33,-219],[10,-123],[69,-49],[66,-207],[357,57],[161,-75],[196,-508],[112,63],[200,-32],[158,68],[99,-102],[-50,-318],[-62,-199],[-22,-423],[56,-393],[79,-175],[9,-133],[-140,-294],[100,-130],[74,-207],[85,-589]],[[28366,54848],[-93,170],[-59,319],[68,158],[-70,40],[-52,196],[-138,164],[-122,-38],[-56,-205],[-112,-149],[-61,-20],[-27,-123],[132,-321],[-75,-76],[-40,-87],[-130,-30],[-48,353],[-36,-101],[-92,35],[-56,238],[-114,39],[-72,69],[-119,-1],[-8,-128],[-32,89]],[[26954,55439],[14,117],[23,120],[-10,107],[41,70],[-58,88],[-1,238],[107,53]],[[27070,56232],[100,-212],[-6,-126],[111,-26],[26,48],[77,-145],[136,42],[119,150],[168,119],[95,176],[153,-34],[-10,-58],[155,-21],[124,-102],[90,-177],[105,-164]],[[26954,55439],[-151,131],[-56,124],[32,103],[-11,130],[-77,142],[-109,116],[-95,76],[-19,173],[-73,105],[18,-172],[-55,-141],[-64,164],[-89,58],[-38,120],[2,179],[36,187],[-78,83],[64,114]],[[26191,57131],[42,76],[183,-156],[63,77],[89,-50],[46,-121],[82,-40],[66,126]],[[26762,57043],[70,-321],[108,-238],[130,-252]],[[26191,57131],[-96,186],[-130,238],[-61,200],[-117,185],[-140,267],[31,91],[46,-88],[21,41]],[[25745,58251],[86,25],[35,135],[41,5],[-6,290],[65,14],[58,-4],[60,158],[82,-120],[29,74],[51,70],[97,163],[4,121],[27,-5],[36,141],[29,17],[47,-90],[56,-27],[61,76],[70,0],[97,77],[38,81],[95,-12]],[[26903,59440],[-24,-57],[-14,-132],[29,-216],[-64,-202],[-30,-237],[-9,-261],[15,-152],[7,-266],[-43,-58],[-26,-253],[19,-156],[-56,-151],[12,-159],[43,-97]],[[25745,58251],[-48,185],[-84,51]],[[25613,58487],[19,237],[-38,64],[-57,42],[-122,-70],[-10,79],[-84,95],[-60,118],[-82,50]],[[25179,59102],[58,150],[-22,116],[20,113],[131,166],[127,225]],[[25493,59872],[29,-23],[61,104],[79,8],[26,-48],[43,29],[129,-53],[128,15],[90,66],[32,66],[89,-31],[66,-40],[73,14],[55,51],[127,-82],[44,-13],[85,-110],[80,-132],[101,-91],[73,-162]],[[25613,58487],[-31,-139],[-161,9],[-100,57],[-115,117],[-154,37],[-79,127]],[[24973,58695],[9,86],[95,149],[52,66],[-15,69],[65,37]],[[25238,61101],[-2,-468],[-22,-667],[83,0]],[[25297,59966],[90,-107],[24,88],[82,-75]],[[24973,58695],[-142,103],[-174,11],[-127,117],[-149,244]],[[25472,61510],[1,-87],[53,-3],[-5,-160],[-45,-256],[24,-91],[-29,-212],[18,-56],[-32,-299],[-55,-156],[-50,-19],[-55,-205]],[[30185,57537],[-8,-139],[-163,-69],[91,-268],[-3,-309],[-123,-344],[105,-468],[120,38],[62,427],[-86,208],[-14,447],[346,241],[-38,278],[97,186],[100,-415],[195,-9],[180,-330],[11,-195],[249,-6],[297,61],[159,-264],[213,-74],[155,185],[4,149],[344,35],[333,9],[-236,-175],[95,-279],[222,-44],[210,-291],[45,-473],[144,13],[109,-139]],[[33400,55523],[-220,-347],[-24,-215],[95,-220],[-69,-110],[-171,-95],[5,-273],[-75,-163],[188,-448]],[[33400,55523],[183,-217],[171,-385],[8,-304],[105,-14],[149,-289],[109,-205]],[[34125,54109],[-44,-532],[-169,-154],[15,-139],[-51,-305],[123,-429],[89,-1],[37,-333],[169,-514]],[[34125,54109],[333,-119],[30,107],[225,43],[298,-159]],[[35011,53981],[-144,-508],[22,-404],[109,-351],[-49,-254],[-24,-270],[-71,-248]],[[35011,53981],[95,-65],[204,-140],[294,-499],[46,-242]],[[51718,79804],[131,-155],[400,-109],[-140,-404],[-35,-421]],[[52074,78715],[-77,-101],[-126,54],[9,-150],[-203,-332],[-5,-267],[133,92],[95,-259]],[[51900,77752],[-11,-167],[82,-222],[-97,-180],[72,-457],[151,-75],[-32,-256]],[[52065,76395],[-252,-334],[-548,160],[-404,-192],[-32,-355]],[[50829,75674],[-322,-77],[-313,267],[-101,-127],[-511,268],[-111,230]],[[49471,76235],[144,354],[53,1177],[-287,620],[-205,299],[-424,227],[-28,431],[360,129],[466,-152],[-88,669],[263,-254],[646,461],[84,484],[243,119]],[[50698,80799],[40,-207],[129,-10],[129,-237],[194,-279],[143,46],[243,-269]],[[51576,79843],[62,-52],[80,13]],[[52429,75765],[179,226],[47,-507],[-92,-456],[-126,120],[-64,398],[56,219]],[[27693,48568],[148,442],[-60,258],[-106,-275],[-166,259],[56,167],[-47,536],[97,89],[52,368],[105,381],[-20,241],[153,126],[190,236]],[[31588,61519],[142,-52],[50,-118],[-71,-149],[-209,4],[-163,-21],[-16,253],[40,86],[227,-3]],[[28453,61504],[187,-53],[147,-142],[46,-161],[-195,-11],[-84,-99],[-156,95],[-159,215],[34,135],[116,41],[64,-20]],[[27147,64280],[240,-42],[219,-7],[261,-201],[110,-216],[260,66],[98,-138],[235,-366],[173,-267],[92,8],[165,-120],[-20,-167],[205,-24],[210,-242],[-33,-138],[-185,-75],[-187,-29],[-191,46],[-398,-57],[186,329],[-113,154],[-179,39],[-96,171],[-66,336],[-157,-23],[-259,159],[-83,124],[-362,91],[-97,115],[104,148],[-273,30],[-199,-307],[-115,-8],[-40,-144],[-138,-65],[-118,56],[146,183],[60,213],[126,131],[142,116],[210,56],[67,65]],[[58175,37528],[-177,267],[-215,90],[-82,375],[0,208],[-119,64],[-315,649],[-87,342],[-56,105],[-107,473]],[[57017,40101],[311,-65],[90,-68],[94,13],[154,383],[241,486],[100,46],[33,205],[159,235],[210,81]],[[58409,41417],[18,-220],[232,12],[128,-125],[60,-146],[132,-43],[145,-190],[0,-748],[-54,-409],[-12,-442],[45,-175],[-31,-348],[-42,-53],[-74,-426],[-292,-671]],[[55526,35946],[0,1725],[274,20],[8,2105],[207,19],[428,207],[106,-243],[177,231],[85,2],[156,133]],[[56967,40145],[50,-44]],[[54540,33696],[-207,446],[-108,432],[-62,575],[-68,428],[-93,910],[-7,707],[-35,322],[-108,243],[-144,489],[-146,708],[-60,371],[-226,577],[-17,453]],[[53259,40357],[134,113],[166,100],[180,-17],[166,-267],[42,41],[1126,26],[192,-284],[673,-83],[510,241]],[[56448,40227],[228,134],[180,-34],[109,-133],[2,-49]],[[45357,58612],[-115,460],[-138,210],[122,112],[134,415],[66,304]],[[45426,60113],[96,189],[138,-51],[135,129],[155,6],[133,-173],[184,-157],[168,-435],[184,-405]],[[46619,59216],[13,-368],[54,-338],[104,-166],[24,-229],[-13,-184]],[[46801,57931],[-40,-33],[-151,47],[-21,-66],[-61,-13],[-200,144],[-134,6]],[[46194,58016],[-513,25],[-75,-67],[-92,19],[-147,-96]],[[45367,57897],[-46,453]],[[45321,58350],[253,-13],[67,83],[50,5],[103,136],[119,-124],[121,-11],[120,133],[-56,170],[-92,-99],[-86,3],[-110,145],[-88,-9],[-63,-140],[-302,-17]],[[46619,59216],[93,107],[47,348],[88,14],[194,-165],[157,117],[107,-39],[42,131],[1114,9],[62,414],[-48,73],[-134,2550],[-134,2550],[425,10]],[[48632,65335],[937,-1289],[937,-1289],[66,-277],[173,-169],[129,-96],[3,-376],[308,58]],[[51185,61897],[1,-1361],[-152,-394],[-24,-364],[-247,-94],[-379,-51],[-102,-210],[-178,-23]],[[50104,59400],[-178,-3],[-70,114],[-153,-84],[-259,-246],[-53,-184],[-216,-265],[-38,-152],[-116,-120],[-134,79],[-76,-144],[-41,-405],[-221,-490],[7,-200],[-76,-250],[18,-343]],[[48498,56707],[-114,-88],[-65,-74],[-43,253],[-80,-67],[-48,11],[-51,-172],[-215,5],[-77,89],[-36,-54]],[[47769,56610],[-85,170],[15,176],[-35,69],[-59,-58],[11,192],[57,152],[-114,248],[-33,163],[-62,130],[-55,15],[-67,-83],[-90,-79],[-76,-128],[-119,48],[-77,150],[-46,19],[-73,-78],[-44,-1],[-16,216]],[[47587,66766],[1045,-1431]],[[45426,60113],[-24,318],[78,291],[34,557],[-30,583],[-34,294],[28,295],[-72,281],[-146,255]],[[50747,54278],[-229,-69]],[[50518,54209],[-69,407],[13,1357],[-56,122],[-11,290],[-96,207],[-85,174],[35,311]],[[50249,57077],[96,67],[56,258],[136,56],[61,176]],[[50598,57634],[93,173],[100,2],[212,-340]],[[51003,57469],[-11,-197],[62,-350],[-54,-238],[29,-159],[-135,-366],[-86,-181],[-52,-372],[7,-376],[-16,-952]],[[54026,58177],[-78,-34],[-9,-188]],[[53939,57955],[-52,-13],[-188,647],[-65,24],[-217,-331],[-215,173],[-150,34],[-80,-83],[-163,18],[-164,-252],[-141,-14],[-337,305],[-131,-145],[-142,10],[-104,223],[-279,221],[-298,-70],[-72,-128],[-39,-340],[-80,-238],[-19,-527]],[[50598,57634],[6,405],[-320,134],[-9,286],[-156,386],[-37,269],[22,286]],[[51185,61897],[392,263],[804,1161],[952,1126]],[[53333,64447],[439,-255],[156,-324],[197,220]],[[53939,57955],[110,-235],[-31,-107],[-14,-196],[-234,-457],[-74,-377],[-39,-307],[-59,-132],[-56,-414],[-148,-243],[-43,-299],[-63,-238],[-26,-246],[-191,-199],[-156,243],[-105,-10],[-165,-345],[-81,-6],[-132,-570],[-71,-418]],[[52361,53399],[-289,-213],[-105,31],[-107,-132],[-222,13],[-149,370],[-91,427],[-197,389],[-209,-7],[-245,1]],[[54244,54965],[-140,-599],[-67,-107],[-21,-458],[28,-249],[-23,-176],[132,-309],[23,-212],[103,-305],[127,-190],[12,-269],[29,-172]],[[54447,51919],[-20,-319],[-220,140],[-225,156],[-350,23]],[[53632,51919],[-35,32],[-164,-76],[-169,79],[-132,-38]],[[53132,51916],[-452,13]],[[52680,51929],[40,466],[-108,391],[-127,100],[-56,265],[-72,85],[4,163]],[[50518,54209],[-224,-126]],[[50294,54083],[-62,207],[-74,375],[-22,294],[61,532],[-69,215],[-27,466],[1,429],[-116,305],[20,184]],[[50006,57090],[243,-13]],[[50294,54083],[-436,-346],[-154,-203],[-250,-171],[-248,168]],[[49206,53531],[13,233],[-121,509],[73,667],[117,496],[-74,841]],[[49214,56277],[-38,444],[7,336],[482,27],[123,-43],[90,96],[128,-47]],[[48498,56707],[125,-129],[49,-195],[125,-125],[97,149],[130,22],[190,-152]],[[49206,53531],[-126,-7],[-194,116],[-178,-7],[-329,-103],[-193,-170],[-275,-217],[-54,15]],[[47857,53158],[22,487],[26,74],[-8,233],[-118,247],[-88,40],[-81,162],[60,262],[-28,286],[13,172]],[[47655,55121],[44,0],[17,258],[-22,114],[27,82],[103,71],[-69,473],[-64,245],[23,200],[55,46]],[[47655,55121],[-78,15],[-57,-238],[-78,3],[-55,126],[19,237],[-116,362],[-73,-67],[-59,-13]],[[47158,55546],[-77,-34],[3,217],[-44,155],[9,171],[-60,249],[-78,211],[-222,1],[-65,-112],[-76,-13],[-48,-128],[-32,-163],[-148,-260]],[[46320,55840],[-122,349],[-108,232],[-71,76],[-69,118],[-32,261],[-41,130],[-80,97]],[[45797,57103],[123,288],[84,-11],[73,99],[61,1],[44,78],[-24,196],[31,62],[5,200]],[[45797,57103],[-149,247],[-117,39],[-63,166],[1,90],[-84,125],[-18,127]],[[47857,53158],[-73,-5],[-286,282],[-252,449],[-237,324],[-187,381]],[[46822,54589],[66,189],[15,172],[126,320],[129,276]],[[46822,54589],[-75,44],[-200,238],[-144,316],[-49,216],[-34,437]],[[55125,52650],[-178,33],[-188,99],[-166,-313],[-146,-550]],[[56824,55442],[152,-239],[2,-192],[187,-308],[116,-255],[70,-355],[208,-234],[44,-187]],[[53609,47755],[-104,203],[-84,-100],[-112,-255]],[[53309,47603],[-228,626]],[[53081,48229],[212,326],[-105,391],[95,148],[187,73],[23,261],[148,-283],[245,-25],[85,279],[36,393],[-31,461],[-131,350],[120,684],[-69,117],[-207,-48],[-78,305],[21,258]],[[53081,48229],[-285,596],[-184,488],[-169,610],[9,196],[61,189],[67,430],[56,438]],[[52636,51176],[94,35],[404,-6],[-2,711]],[[52636,51176],[-52,90],[96,663]],[[59099,45126],[131,-264],[71,-501],[-47,-160],[-56,-479],[53,-490],[-87,-205],[-85,-549],[147,-153]],[[59226,42325],[-843,-487],[26,-421]],[[56448,40227],[-181,369],[-188,483],[13,1880],[579,-7],[-24,203],[41,222],[-49,277],[32,286],[-29,184]],[[59599,43773],[-77,-449],[77,-768],[97,9],[100,-191],[116,-427],[24,-760],[-120,-124],[-85,-410],[-181,365],[-21,417],[59,274],[-16,237],[-110,149],[-77,-54],[-159,284]],[[61198,44484],[45,-265],[-11,-588],[34,-519],[11,-923],[49,-290],[-83,-422],[-108,-410],[-177,-366],[-254,-225],[-313,-287],[-313,-634],[-107,-108],[-194,-420],[-115,-136],[-23,-421],[132,-448],[54,-346],[4,-177],[49,29],[-8,-579],[-45,-275],[65,-101],[-41,-245],[-116,-211],[-229,-199],[-334,-320],[-122,-219],[24,-248],[71,-40],[-24,-311]],[[58908,34785],[-24,261],[-41,265]],[[53383,47159],[-74,444]],[[53259,40357],[-26,372],[38,519],[96,541],[15,254],[90,532],[66,243],[159,386],[90,263],[29,438],[-15,335],[-83,211],[-74,358],[-68,355],[15,122],[85,235],[-84,570],[-57,396],[-139,374],[26,115]],[[58062,48902],[169,-46],[85,336],[147,-38]],[[59922,69905],[-49,-186]],[[59873,69719],[-100,82],[-58,-394],[69,-66],[-71,-81],[-12,-156],[131,80]],[[59832,69184],[7,-230],[-139,-944]],[[59700,68010],[-27,153],[-155,862]],[[59518,69025],[80,194],[-19,34],[74,276],[56,446],[40,149],[8,6]],[[59757,70130],[93,-1],[25,104],[75,8]],[[59950,70241],[4,-242],[-38,-90],[6,-4]],[[59757,70130],[99,482],[138,416],[5,21]],[[59999,71049],[125,-31],[45,-231],[-151,-223],[-68,-323]],[[63761,43212],[74,-251],[69,-390],[45,-711],[72,-276],[-28,-284],[-49,-174],[-94,347],[-53,-175],[53,-438],[-24,-250],[-77,-137],[-18,-500],[-109,-689],[-137,-814],[-172,-1120],[-106,-821],[-125,-685],[-226,-140],[-243,-250],[-160,151],[-220,211],[-77,312],[-18,524],[-98,471],[-26,425],[50,426],[128,102],[1,197],[133,447],[25,377],[-65,280],[-52,372],[-23,544],[97,331],[38,375],[138,22],[155,121],[103,107],[122,7],[158,337],[229,364],[83,297],[-38,253],[118,-71],[153,410],[6,356],[92,264],[96,-254]],[[59873,69719],[0,-362],[-41,-173]],[[45321,58350],[36,262]],[[52633,68486],[-118,1061],[-171,238],[-3,143],[-227,352],[-24,445],[171,330],[65,487],[-44,563],[57,303]],[[52339,72408],[302,239],[195,-71],[-9,-299],[236,217],[20,-113],[-139,-290],[-2,-273],[96,-147],[-36,-511],[-183,-297],[53,-322],[143,-10],[70,-281],[106,-92]],[[53191,70158],[-16,-454],[-135,-170],[-86,-189],[-191,-228],[30,-244],[-24,-250],[-136,-137]],[[47592,66920],[-2,700],[449,436],[277,90],[227,159],[107,295],[324,234],[12,438],[161,51],[126,219],[363,99],[51,230],[-73,125],[-96,624],[-17,359],[-104,379]],[[49397,71358],[267,323],[300,102],[175,244],[268,180],[471,105],[459,48],[140,-87],[262,232],[297,5],[113,-137],[190,35]],[[52633,68486],[90,-522],[15,-274],[-49,-482],[21,-270],[-36,-323],[24,-371],[-110,-247],[164,-431],[11,-253],[99,-330],[130,109],[219,-275],[122,-370]],[[59922,69905],[309,-234],[544,630]],[[60775,70301],[112,-720]],[[60887,69581],[-53,-89],[-556,-296],[277,-591],[-92,-101],[-46,-197],[-212,-82],[-66,-213],[-120,-182],[-310,94]],[[59709,67924],[-9,86]],[[64327,64904],[49,29],[11,-162],[217,93],[230,-15],[168,-18],[190,400],[207,379],[176,364]],[[65575,65974],[52,-202]],[[65627,65772],[38,-466]],[[65665,65306],[-142,-3],[-23,-384],[50,-82],[-126,-117],[-1,-241],[-81,-245],[-7,-238]],[[65335,63996],[-56,-125],[-835,298],[-106,599],[-11,136]],[[64113,65205],[-18,430],[75,310],[76,64],[84,-185],[5,-346],[-61,-348]],[[64274,65130],[-77,-42],[-84,117]],[[63326,68290],[58,-261],[-25,-135],[89,-445]],[[63448,67449],[-196,-16],[-69,282],[-248,57]],[[62935,67772],[204,567],[187,-49]],[[60775,70301],[615,614],[105,715],[-26,431],[152,146],[142,369]],[[61763,72576],[119,92],[324,-77],[97,-150],[133,100]],[[62436,72541],[180,-705],[182,-177],[21,-345],[-139,-204],[-65,-461],[193,-562],[340,-324],[143,-449],[-46,-428],[89,0],[3,-314],[153,-311]],[[63490,68261],[-164,29]],[[62935,67772],[-516,47],[-784,1188],[-413,414],[-335,160]],[[65665,65306],[125,-404],[155,-214],[203,-78],[165,-107],[125,-339],[75,-196],[100,-75],[-1,-132],[-101,-352],[-44,-166],[-117,-189],[-104,-404],[-126,31],[-58,-141],[-44,-300],[34,-395],[-26,-72],[-128,2],[-174,-221],[-27,-288],[-63,-125],[-173,5],[-109,-149],[1,-238],[-134,-165],[-153,56],[-186,-199],[-128,-34]],[[64752,60417],[-91,413],[-217,975]],[[64444,61805],[833,591],[185,1182],[-127,418]],[[65575,65974],[80,201],[35,-51],[-26,-244],[-37,-108]],[[96448,41190],[175,-339],[-92,-78],[-93,259],[10,158]],[[96330,41322],[-39,163],[-6,453],[133,-182],[45,-476],[-75,74],[-58,-32]],[[78495,57780],[-66,713],[178,492],[359,112],[261,-84]],[[79227,59013],[229,-232],[126,407],[246,-217]],[[79828,58971],[64,-394],[-34,-708],[-467,-455],[122,-358],[-292,-43],[-240,-238]],[[78981,56775],[-233,87],[-112,307],[-141,611]],[[78495,57780],[-249,271],[-238,-11],[41,464],[-245,-3],[-22,-650],[-150,-863],[-90,-522],[19,-428],[181,-18],[113,-539],[50,-512],[155,-338],[168,-69],[144,-306]],[[78372,54256],[-91,-243],[-183,-71],[-22,304],[-227,258],[-48,-105]],[[77801,54399],[-110,227],[-47,292],[-148,334],[-135,280],[-45,-347],[-53,328],[30,369],[82,566]],[[77375,56448],[135,607],[152,551],[-108,539],[4,274],[-32,330],[-185,470],[-66,296],[96,109],[101,514],[-113,390],[-177,431],[-134,519],[117,107],[127,639],[196,26],[162,256],[159,137]],[[77809,62643],[120,-182],[16,-355],[188,-27],[-68,-623],[6,-530],[293,353],[83,-104],[163,17],[56,205],[210,-40],[211,-480],[18,-583],[224,-515],[-12,-500],[-90,-266]],[[77809,62643],[59,218],[237,384]],[[78105,63245],[25,-139],[148,-16],[-42,676],[144,86]],[[78380,63852],[162,-466],[125,-537],[342,-5],[108,-515],[-178,-155],[-80,-212],[333,-353],[231,-699],[175,-520],[210,-411],[70,-418],[-50,-590]],[[77375,56448],[-27,439],[86,452],[-94,350],[23,644],[-113,306],[-90,707],[-50,746],[-121,490],[-183,-297],[-315,-421],[-156,53],[-172,138],[96,732],[-58,554],[-218,681],[34,213],[-163,76],[-197,481]],[[75657,62792],[-18,476],[97,-90],[6,424]],[[75742,63602],[137,140],[-30,251],[63,201],[11,612],[217,-135],[124,487],[14,288],[153,496],[-8,338],[359,408],[199,-107],[-23,364],[97,108],[-20,224]],[[77035,67277],[162,44],[93,-348],[121,-141],[8,-452],[-11,-487],[-263,-493],[-33,-701],[293,98],[66,-544],[176,-115],[-81,-490],[206,-222],[121,-109],[203,172],[9,-244]],[[78380,63852],[149,145],[221,-3],[271,68],[236,315],[134,-222],[254,-108],[-44,-340],[132,-240],[280,-154]],[[80013,63313],[-371,-505],[-231,-558],[-61,-410],[212,-623],[260,-772],[252,-365],[169,-475],[127,-1093],[-37,-1039],[-232,-389],[-318,-381],[-227,-492],[-346,-550],[-101,378],[78,401],[-206,335]],[[86327,75524],[0,0]],[[86327,75524],[-106,36],[-120,-200],[-83,-202],[10,-424],[-143,-130],[-50,-105],[-104,-174],[-185,-97],[-121,-159],[-9,-256],[-32,-65],[111,-96],[157,-259]],[[85652,73393],[-40,-143],[-118,-39],[-197,-29],[-108,-266],[-124,21],[-17,-54]],[[85048,72883],[-135,112],[-34,-111],[-81,-49],[-10,112],[-72,54],[-75,94],[76,260],[66,69],[-25,108],[71,319],[-18,96],[-163,65],[-131,158]],[[84517,74170],[227,379],[306,318],[191,419],[131,-185],[241,-22],[-44,312],[429,254],[111,331],[179,-348]],[[85652,73393],[240,-697],[68,-383],[3,-681],[-105,-325],[-252,-113],[-222,-245],[-250,-51],[-31,322],[51,443],[-122,615],[206,99],[-190,506]],[[82410,80055],[-135,-446],[-197,-590],[72,-241],[157,74],[274,-92],[214,219],[223,-189],[251,-413],[-30,-210],[-219,66],[-404,-78],[-195,-168],[-204,-391],[-423,-229],[-277,-313],[-286,120],[-156,53],[-146,-381],[89,-227],[45,-195],[-194,-199],[-200,-316],[-324,-208],[-417,-22],[-448,-205],[-324,-318],[-123,184],[-336,-1],[-411,359],[-274,88],[-369,-82],[-574,133],[-306,-14],[-163,351],[-127,544],[-171,66],[-336,368],[-374,83],[-330,101],[-100,256],[107,690],[-192,476],[-396,222],[-233,313],[-73,413]],[[75742,63602],[-147,937],[-76,-2],[-46,-377],[-152,306],[86,336],[124,34],[128,500],[-160,101],[-257,-8],[-265,81],[-24,410],[-133,30],[-220,255],[-98,-401],[200,-313],[-173,-220],[-62,-215],[171,-159],[-47,-356],[96,-444],[43,-486]],[[74730,63611],[-39,-216],[-189,7],[-343,-122],[16,-445],[-148,-349],[-400,-398],[-311,-695],[-209,-373],[-276,-387],[-1,-271],[-138,-146],[-251,-212],[-129,-31],[-84,-450],[58,-769],[15,-490],[-118,-561],[-1,-1004],[-144,-29],[-126,-450],[84,-195],[-253,-168],[-93,-401],[-112,-170],[-263,552],[-128,827],[-107,596],[-97,279],[-148,568],[-69,739],[-48,369],[-253,811],[-115,1145],[-83,756],[1,716],[-54,553],[-404,-353],[-196,70],[-362,716],[133,214],[-82,232],[-326,501]],[[68937,64577],[185,395],[612,-2],[-56,507],[-156,300],[-31,455],[-182,265],[306,619],[323,-45],[290,620],[174,599],[270,593],[-4,421],[236,342],[-224,292],[-96,400],[-99,517],[137,255],[421,-144],[310,88],[268,496]],[[71621,71550],[298,-692],[-28,-482],[111,-303],[-9,-301],[-200,79],[78,-651],[273,-374],[386,-413]],[[72530,68413],[-176,-268],[-108,-553],[269,-224],[262,-289],[362,-332],[381,-76],[160,-301],[215,-56],[334,-138],[231,10],[32,234],[-36,375],[21,255]],[[74477,67050],[170,124],[23,-465]],[[74670,66709],[6,-119],[252,-224],[175,92],[234,-39],[227,17],[20,363],[-113,189]],[[75471,66988],[224,74],[252,439],[321,376],[233,-145],[198,249],[130,-367],[-94,-248],[300,-89]],[[75657,62792],[-79,308],[-16,301],[-53,285],[-116,344],[-256,23],[25,-243],[-87,-329],[-118,120],[-41,-108],[-78,65],[-108,53]],[[74670,66709],[184,439],[150,150],[198,-137],[147,-14],[122,-159]],[[72530,68413],[115,141],[223,-182],[280,-385],[157,-84],[93,-284],[216,-117],[225,-259],[314,-136],[324,-57]],[[68937,64577],[-203,150],[-83,424],[-215,450],[-512,-111],[-451,-11],[-391,-83]],[[67082,65396],[105,687],[400,305],[-23,272],[-133,96],[-7,520],[-266,260],[-112,357],[-137,310]],[[66909,68203],[465,-301],[278,88],[166,-75],[56,129],[194,-52],[361,246],[10,503],[154,334],[207,-1],[31,166],[212,77],[103,-55],[108,166],[-15,355],[118,356],[177,150],[-110,390],[265,-18],[76,213],[-12,227],[139,248],[-32,294],[-66,250],[163,258],[298,124],[319,68],[141,109],[162,67]],[[70877,72519],[205,-276],[82,-454],[457,-239]],[[68841,72526],[85,-72],[201,189],[93,-114],[90,271],[166,-12],[43,86],[29,239],[120,205],[150,-134],[-30,-181],[84,-28],[-26,-496],[110,-194],[97,125],[123,58],[173,265],[192,-44],[286,-1]],[[70827,72688],[50,-169]],[[66909,68203],[252,536],[-23,380],[-210,100],[-22,375],[-91,472],[119,323],[-121,87],[76,430],[113,736]],[[67002,71642],[284,-224],[209,79],[58,268],[219,89],[157,180],[55,472],[234,114],[44,211],[131,-158],[84,-19]],[[69725,74357],[-101,-182],[-303,98],[-26,-340],[301,46],[343,-192],[526,89]],[[70465,73876],[70,-546],[91,59],[169,-134],[-10,-230],[42,-337]],[[72294,75601],[-39,-134],[-438,-320],[-99,-234],[-356,-70],[-105,-378],[-294,80],[-192,-116],[-266,-279],[39,-138],[-79,-136]],[[67002,71642],[-24,498],[-207,21],[-318,523],[-221,65],[-308,299],[-197,55],[-122,-110],[-186,17],[-197,-338],[-244,-114]],[[64978,72558],[-52,417],[40,618],[-216,200],[71,405],[-184,34],[61,498],[262,-145],[244,189],[-202,355],[-80,338],[-224,-151],[-28,-433],[-87,383]],[[62436,72541],[-152,473],[55,183],[-87,678],[190,168]],[[62442,74043],[44,-223],[141,-273],[190,-78]],[[62817,73469],[101,17]],[[62918,73486],[327,436],[104,44],[82,-174],[-95,-292],[173,-309],[69,29]],[[63578,73220],[88,-436],[263,-123],[193,-296],[395,-102],[434,156],[27,139]],[[67082,65396],[-523,179],[-303,136],[-313,76],[-118,725],[-133,105],[-214,-106],[-280,-286],[-339,196],[-281,454],[-267,168],[-186,561],[-205,788],[-149,-96],[-177,196],[-104,-231]],[[59999,71049],[-26,452],[68,243]],[[60041,71744],[74,129],[75,130],[15,329],[91,-115],[306,165],[147,-112],[229,2],[320,222],[149,-10],[316,92]],[[62817,73469],[-113,342],[1,91],[-123,-2],[-82,159],[-58,-16]],[[62442,74043],[-109,172],[-207,147],[27,288],[-47,208]],[[62106,74858],[386,92]],[[62492,74950],[57,-155],[106,-103],[-56,-148],[148,-202],[-78,-189],[118,-160],[124,-97],[7,-410]],[[55734,91409],[371,-289],[433,-402],[8,-910],[93,-230]],[[56639,89578],[-478,-167],[-269,-413],[43,-361],[-441,-475],[-537,-509],[-202,-832],[198,-416],[265,-328],[-255,-666],[-289,-138],[-106,-992],[-157,-554],[-337,57],[-158,-468],[-321,-27],[-89,558],[-232,671],[-211,835]],[[58829,81362],[-239,-35],[-85,-129],[-18,-298],[-111,57],[-250,-28],[-73,138],[-104,-103],[-105,86],[-218,12],[-310,141],[-281,47],[-215,-14],[-152,-160],[-133,-23]],[[56535,81053],[-6,263],[-85,274],[166,121],[2,235],[-77,225],[-12,261]],[[56523,82432],[268,-4],[302,223],[64,333],[228,190],[-26,264]],[[57359,83438],[169,100],[298,228]],[[60617,78409],[-222,-48],[-185,-191],[-260,-31],[-239,-220],[14,-317]],[[59287,77741],[-38,64],[-432,149],[-19,221],[-257,-73],[-103,-325],[-215,-437]],[[58223,77340],[-126,101],[-131,-95],[-124,109]],[[57842,77455],[70,64],[49,203],[76,188],[-20,106],[58,47],[27,-81],[164,-18],[74,44],[-52,60],[19,88],[-97,150],[-40,247],[-101,97],[20,200],[-125,159],[-115,22],[-204,184],[-185,-58],[-66,-87]],[[57394,79070],[-118,0],[-69,-139],[-205,-56],[-95,-91],[-129,144],[-178,3],[-172,65],[-120,-127]],[[56308,78869],[-19,159],[-155,161]],[[56134,79189],[55,238],[77,154]],[[56266,79581],[60,-35],[-71,266],[252,491],[138,69],[29,166],[-139,515]],[[56266,79581],[-264,227],[-200,-84],[-131,61],[-165,-127],[-140,210],[-114,-81],[-16,36]],[[55236,79823],[-127,291],[-207,36],[-26,185],[-191,66],[-41,-153],[-151,122],[17,163],[-207,51],[-132,191]],[[54171,80775],[-114,377],[22,204],[-69,316],[-101,210],[77,158],[-64,300]],[[53922,82340],[189,174],[434,273],[350,200],[277,-100],[21,-144],[268,-7]],[[56314,82678],[142,-64],[67,-182]],[[54716,79012],[-21,-241],[-156,-2],[53,-128],[-92,-380]],[[54500,78261],[-53,-100],[-243,-14],[-140,-134],[-229,45]],[[53835,78058],[-398,153],[-62,205],[-274,-102],[-32,-113],[-169,84]],[[52900,78285],[-142,16],[-125,108],[42,145],[-10,104]],[[52665,78658],[83,33],[141,-164],[39,156],[245,-25],[199,106],[133,-18],[87,-121],[26,100],[-40,385],[100,75],[98,272]],[[53776,79457],[206,-190],[157,242],[98,44],[215,-180],[131,30],[128,-111]],[[54711,79292],[-23,-75],[28,-205]],[[56308,78869],[-170,-123],[-131,-401],[-168,-401],[-223,-111]],[[55616,77833],[-173,26],[-213,-155]],[[55230,77704],[-104,-89],[-229,114],[-208,253],[-88,73]],[[54601,78055],[-54,200],[-47,6]],[[54716,79012],[141,-151],[103,-65],[233,73],[22,118],[111,18],[135,92],[30,-38],[130,74],[66,139],[91,36],[297,-180],[59,61]],[[57842,77455],[-50,270],[30,252],[-9,259],[-160,352],[-89,249],[-86,175],[-84,58]],[[58223,77340],[6,-152],[-135,-128],[-84,56],[-78,-713]],[[57932,76403],[-163,62],[-202,215],[-327,-138],[-138,-150],[-408,31],[-213,92],[-108,-43],[-80,243]],[[56293,76715],[-51,103],[65,99],[-69,74],[-87,-133],[-162,172],[-22,244],[-169,139],[-31,188],[-151,232]],[[55907,83187],[-59,497]],[[55848,83684],[318,181],[466,-38],[273,59],[39,-123],[148,-38],[267,-287]],[[55848,83684],[10,445],[136,371],[262,202],[221,-442],[223,12],[53,453]],[[56753,84725],[237,105],[121,-73],[239,-219],[229,-1]],[[56753,84725],[32,349],[-102,-75],[-176,210],[-24,340],[351,164],[350,86],[301,-97],[287,17]],[[54171,80775],[-124,-62],[-73,68],[-70,-113],[-200,-114],[-103,-147],[-202,-129],[49,-176],[30,-249],[141,-142],[157,-254]],[[52665,78658],[-298,181],[-57,-128],[-236,4]],[[51718,79804],[16,259],[-56,133]],[[51678,80196],[32,400]],[[51710,80596],[-47,619],[167,0],[70,222],[69,541],[-51,200]],[[51918,82178],[54,125],[232,32],[52,-130],[188,291],[-63,222],[-13,335]],[[52368,83053],[210,-78],[178,90]],[[52756,83065],[4,-228],[281,-138],[-3,-210],[283,111],[156,162],[313,-233],[132,-189]],[[57932,76403],[-144,-245],[-101,-422],[89,-337]],[[57776,75399],[-239,79],[-283,-186]],[[57254,75292],[-3,-294],[-252,-56],[-196,206],[-222,-162],[-206,17]],[[56375,75003],[-20,391],[-139,189]],[[56216,75583],[46,84],[-30,70],[47,188],[105,185],[-135,255],[-24,216],[68,134]],[[57302,71436],[-35,-175],[-400,-50],[3,98],[-339,115],[52,251],[152,-199],[216,34],[207,-42],[-7,-103],[151,71]],[[57254,75292],[135,-157],[-86,-369],[-66,-67]],[[57237,74699],[-169,17],[-145,56],[-336,-154],[192,-332],[-141,-96],[-154,-1],[-147,305],[-52,-130],[62,-353],[139,-277],[-105,-129],[155,-273],[137,-171],[4,-334],[-257,157],[82,-302],[-176,-62],[105,-521],[-184,-8],[-228,257],[-104,473],[-49,393],[-108,272],[-143,337],[-18,168]],[[55597,73991],[129,287],[16,192],[91,85],[5,155]],[[55838,74710],[182,53],[106,129],[150,-12],[46,103],[53,20]],[[60041,71744],[-102,268],[105,222],[-169,-51],[-233,136],[-191,-340],[-421,-66],[-225,317],[-300,20],[-64,-245],[-192,-70],[-268,314],[-303,-11],[-165,588],[-203,328],[135,459],[-176,283],[308,565],[428,23],[117,449],[529,-78],[334,383],[324,167],[459,13],[485,-417],[399,-228],[323,91],[239,-53],[328,309]],[[61542,75120],[296,28],[268,-290]],[[57776,75399],[33,-228],[243,-190],[-51,-145],[-330,-33],[-118,-182],[-232,-319],[-87,276],[3,121]],[[55597,73991],[-48,41],[-5,130],[-154,199],[-24,281],[23,403],[38,184],[-47,93]],[[55380,75322],[-18,188],[120,291],[18,-111],[75,52]],[[55575,75742],[59,-159],[66,-60],[19,-214]],[[55719,75309],[-35,-201],[39,-254],[115,-144]],[[55230,77704],[67,-229],[89,-169],[-107,-222]],[[55279,77084],[-126,131],[-192,-8],[-239,98],[-130,-13],[-60,-123],[-99,136],[-59,-245],[136,-277],[61,-183],[127,-221],[106,-130],[105,-247],[246,-224]],[[55155,75778],[-31,-100]],[[55124,75678],[-261,218],[-161,213],[-254,176],[-233,434],[56,45],[-127,248],[-5,200],[-179,93],[-85,-255],[-82,198],[6,205],[10,9]],[[53809,77462],[194,-20],[51,100],[94,-97],[109,-11],[-1,165],[97,60],[27,239],[221,157]],[[52900,78285],[-22,-242],[-122,-100],[-206,75],[-60,-239],[-132,-19],[-48,94],[-156,-200],[-134,-28],[-120,126]],[[51576,79843],[30,331],[72,22]],[[50698,80799],[222,117]],[[50920,80916],[204,-47],[257,123],[176,-258],[153,-138]],[[50920,80916],[143,162],[244,869],[380,248],[231,-17]],[[47490,75324],[101,150],[113,86],[70,-289],[164,0],[47,75],[162,-21],[78,-296],[-129,-160],[-3,-461],[-45,-86],[-11,-280],[-120,-48],[111,-355],[-77,-388],[96,-175],[-38,-161],[-103,-222],[23,-195]],[[47929,72498],[-112,-153],[-146,83],[-143,-65],[42,462],[-26,363],[-124,55],[-67,224],[22,386],[111,215],[20,239],[58,355],[-6,250],[-56,212],[-12,200]],[[47490,75324],[14,420],[-114,257],[393,426],[340,-106],[373,3],[296,-101],[230,31],[449,-19]],[[50829,75674],[15,-344],[-263,-393],[-356,-125],[-25,-199],[-171,-327],[-107,-481],[108,-338],[-160,-263],[-60,-384],[-210,-118],[-197,-454],[-352,-9],[-265,11],[-174,-209],[-106,-223],[-136,49],[-103,199],[-79,340],[-259,92]],[[48278,82406],[46,-422],[-210,-528],[-493,-349],[-393,89],[225,617],[-145,601],[378,463],[210,276]],[[47896,83153],[57,-317],[-57,-317],[172,9],[210,-122]],[[96049,38125],[228,-366],[144,-272],[-105,-142],[-153,160],[-199,266],[-179,313],[-184,416],[-38,201],[119,-9],[156,-201],[122,-200],[89,-166]],[[95032,44386],[78,-203],[-194,4],[-106,363],[166,-142],[56,-22]],[[94910,44908],[-42,-109],[-206,512],[-57,353],[94,0],[100,-473],[111,-283]],[[94680,44747],[-108,-14],[-170,60],[-58,91],[17,235],[183,-93],[91,-124],[45,-155]],[[94344,45841],[65,-187],[12,-119],[-218,251],[-152,212],[-104,197],[41,60],[128,-142],[228,-272]],[[93649,46431],[111,-193],[-56,-33],[-121,134],[-114,243],[14,99],[166,-250]],[[99134,26908],[-105,-319],[-138,-404],[-214,-236],[-48,155],[-116,85],[160,486],[-91,326],[-299,236],[8,214],[201,206],[47,455],[-13,382],[-113,396],[8,104],[-133,244],[-218,523],[-117,418],[104,46],[151,-328],[216,-153],[78,-526],[202,-622],[5,403],[126,-161],[41,-447],[224,-192],[188,-48],[158,226],[141,-69],[-67,-524],[-85,-345],[-212,12],[-74,-179],[26,-254],[-41,-110]],[[97129,24846],[238,310],[167,306],[123,441],[106,149],[41,330],[195,273],[61,-251],[63,-244],[198,239],[80,-249],[0,-249],[-103,-274],[-182,-435],[-142,-238],[103,-284],[-214,-7],[-238,-223],[-75,-387],[-157,-597],[-219,-264],[-138,-169],[-256,13],[-180,194],[-302,42],[-46,217],[149,438],[349,583],[179,111],[200,225]],[[91024,26469],[166,-39],[20,-702],[-95,-203],[-29,-476],[-97,162],[-193,-412],[-57,32],[-171,19],[-171,505],[-38,390],[-160,515],[7,271],[181,-52],[269,-204],[151,81],[217,113]],[[85040,31546],[-294,-303],[-241,-137],[-53,-309],[-103,-240],[-236,-15],[-174,-52],[-246,107],[-199,-64],[-191,-27],[-165,-315],[-81,26],[-140,-167],[-133,-187],[-203,23],[-186,0],[-295,377],[-149,113],[6,338],[138,81],[47,134],[-10,212],[34,411],[-31,350],[-147,598],[-45,337],[12,336],[-111,385],[-7,174],[-123,235],[-35,463],[-158,467],[-39,252],[122,-255],[-93,548],[137,-171],[83,-229],[-5,303],[-138,465],[-26,186],[-65,177],[31,341],[56,146],[38,295],[-29,346],[114,425],[21,-450],[118,406],[225,198],[136,252],[212,217],[126,46],[77,-73],[219,220],[168,66],[42,129],[74,54],[153,-14],[292,173],[151,262],[71,316],[163,300],[13,236],[7,321],[194,502],[117,-510],[119,118],[-99,279],[87,287],[122,-128],[34,449],[152,291],[67,233],[140,101],[4,165],[122,-69],[5,148],[122,85],[134,80],[205,-271],[155,-350],[173,-4],[177,-56],[-59,325],[133,473],[126,155],[-44,147],[121,338],[168,208],[142,-70],[234,111],[-5,302],[-204,195],[148,86],[184,-147],[148,-242],[234,-151],[79,60],[172,-182],[162,169],[105,-51],[65,113],[127,-292],[-74,-316],[-105,-239],[-96,-20],[32,-236],[-81,-295],[-99,-291],[20,-166],[221,-327],[214,-189],[143,-204],[201,-350],[78,1],[145,-151],[43,-183],[265,-200],[183,202],[55,317],[56,262],[34,324],[85,470],[-39,286],[20,171],[-32,339],[37,445],[53,120],[-43,197],[67,313],[52,325],[7,168],[104,222],[78,-289],[19,-371],[70,-71],[11,-249],[101,-300],[21,-335],[-10,-214],[100,-464],[179,223],[92,-250],[133,-231],[-29,-262],[60,-506],[42,-295],[70,-72],[75,-505],[-27,-307],[90,-400],[301,-309],[197,-281],[186,-257],[-37,-143],[159,-371],[108,-639],[111,130],[113,-256],[68,91],[48,-626],[197,-363],[129,-226],[217,-478],[78,-475],[7,-337],[-19,-365],[132,-502],[-16,-523],[-48,-274],[-75,-527],[6,-339],[-55,-423],[-123,-538],[-205,-290],[-102,-458],[-93,-292],[-82,-510],[-107,-294],[-70,-442],[-36,-407],[14,-187],[-159,-205],[-311,-22],[-257,-242],[-127,-229],[-168,-254],[-230,262],[-170,104],[43,308],[-152,-112],[-243,-428],[-240,160],[-158,94],[-159,42],[-269,171],[-179,364],[-52,449],[-64,298],[-137,240],[-267,71],[91,287],[-67,438],[-136,-408],[-247,-109],[146,327],[42,341],[107,289],[-22,438],[-226,-504],[-174,-202],[-106,-470],[-217,243],[9,313],[-174,429],[-147,221],[52,137],[-356,358],[-195,17],[-267,287],[-498,-56],[-359,-211],[-317,-197],[-265,39]],[[72718,55024],[-42,-615],[-116,-168],[-242,-135],[-132,470],[-49,849],[126,959],[192,-328],[129,-416],[134,-616]],[[80409,61331],[-228,183],[-8,509],[137,267],[304,166],[159,-14],[62,-226],[-122,-260],[-64,-341],[-240,-284]],[[84517,74170],[-388,-171],[-204,-277],[-300,-161],[148,274],[-58,230],[220,397],[-147,310],[-242,-209],[-314,-411],[-171,-381],[-272,-29],[-142,-275],[147,-400],[227,-97],[9,-265],[220,-173],[311,422],[247,-230],[179,-15],[45,-310],[-393,-165],[-130,-319],[-270,-296],[-142,-414],[299,-325],[109,-581],[169,-541],[189,-454],[-5,-439],[-174,-161],[66,-315],[164,-184],[-43,-481],[-71,-468],[-155,-53],[-203,-640],[-225,-775],[-258,-705],[-382,-545],[-386,-498],[-313,-68],[-170,-262],[-96,192],[-157,-294],[-388,-296],[-294,-90],[-95,-624],[-154,-35],[-73,429],[66,228],[-373,189],[-131,-96]],[[83826,64992],[-167,-947],[-119,-485],[-146,499],[-32,438],[163,581],[223,447],[127,-176],[-49,-357]],[[53835,78058],[-31,-291],[67,-251]],[[53871,77516],[-221,86],[-226,-210],[15,-293],[-34,-168],[91,-301],[261,-298],[140,-488],[309,-476],[217,3],[68,-130],[-78,-118],[249,-214],[204,-178],[238,-308],[29,-111],[-52,-211],[-154,276],[-242,97],[-116,-382],[200,-219],[-33,-309],[-116,-35],[-148,-506],[-116,-46],[1,181],[57,317],[60,126],[-108,342],[-85,298],[-115,74],[-82,255],[-179,107],[-120,238],[-206,38],[-217,267],[-254,384],[-189,340],[-86,585],[-138,68],[-226,195],[-128,-80],[-161,-274],[-115,-43]],[[54100,73116],[211,51],[-100,-465],[41,-183],[-58,-303],[-213,222],[-141,64],[-387,300],[38,304],[325,-54],[284,64]],[[52419,74744],[139,183],[166,-419],[-39,-782],[-126,38],[-113,-197],[-105,156],[-11,713],[-64,338],[153,-30]],[[52368,83053],[-113,328],[-8,604],[46,159],[80,177],[244,37],[98,163],[223,167],[-9,-304],[-82,-192],[33,-166],[151,-89],[-68,-223],[-83,64],[-200,-425],[76,-288]],[[53436,83731],[88,-296],[-166,-478],[-291,333],[-39,246],[408,195]],[[47896,83153],[233,24],[298,-365],[-149,-406]],[[49140,82132],[1,0],[40,343],[-186,364],[-4,8],[-337,104],[-66,160],[101,264],[-92,163],[-149,-279],[-17,569],[-140,301],[101,611],[216,480],[222,-47],[335,49],[-297,-639],[283,81],[304,-3],[-72,-481],[-250,-530],[287,-38],[22,-62],[248,-697],[190,-95],[171,-673],[79,-233],[337,-113],[-34,-378],[-142,-173],[111,-305],[-250,-310],[-371,6],[-473,-163],[-130,116],[-183,-276],[-257,67],[-195,-226],[-148,118],[407,621],[249,127],[-2,1],[-434,98],[-79,235],[291,183],[-152,319],[52,387],[413,-54]],[[45969,89843],[-64,-382],[314,-403],[-361,-451],[-801,-405],[-240,-107],[-365,87],[-775,187],[273,261],[-605,289],[492,114],[-12,174],[-583,137],[188,385],[421,87],[433,-400],[422,321],[349,-167],[453,315],[461,-42]],[[63495,75281],[146,-311],[141,-419],[130,-28],[85,-159],[-228,-47],[-49,-459],[-48,-207],[-101,-138],[7,-293]],[[62492,74950],[68,96],[207,-169],[149,-36],[38,70],[-136,319],[72,82]],[[61542,75120],[42,252],[-70,403],[-160,218],[-154,68],[-102,181]],[[83564,58086],[-142,450],[238,-22],[97,-213],[-74,-510],[-119,295]],[[84051,56477],[70,165],[30,367],[153,35],[-44,-398],[205,570],[-26,-563],[-100,-195],[-87,-373],[-87,-175],[-171,409],[57,158]],[[85104,55551],[28,-392],[16,-332],[-94,-540],[-102,602],[-130,-300],[89,-435],[-79,-277],[-327,343],[-78,428],[84,280],[-176,280],[-87,-245],[-131,23],[-205,-330],[-46,173],[109,498],[175,166],[151,223],[98,-268],[212,162],[45,264],[196,15],[-16,457],[225,-280],[23,-297],[20,-218]],[[82917,56084],[-369,-561],[136,414],[200,364],[167,409],[146,587],[49,-482],[-183,-325],[-146,-406]],[[83982,61347],[-46,-245],[95,-423],[-73,-491],[-164,-196],[-43,-476],[62,-471],[147,-65],[123,70],[347,-328],[-27,-321],[91,-142],[-29,-272],[-216,290],[-103,310],[-71,-217],[-177,354],[-253,-87],[-138,130],[14,244],[87,151],[-83,136],[-36,-213],[-137,340],[-41,257],[-11,566],[112,-195],[29,925],[90,535],[169,-1],[171,-168],[85,153],[26,-150]],[[83899,57324],[-43,282],[166,-183],[177,1],[-5,-247],[-129,-251],[-176,-178],[-10,275],[20,301]],[[84861,57766],[78,-660],[-214,157],[5,-199],[68,-364],[-132,-133],[-11,416],[-84,31],[-43,357],[163,-47],[-4,224],[-169,451],[266,-13],[77,-220]],[[78372,54256],[64,-56],[164,-356],[116,-396],[16,-398],[-29,-269],[27,-203],[20,-349],[98,-163],[109,-523],[-5,-199],[-197,-40],[-263,438],[-329,469],[-32,301],[-161,395],[-38,489],[-100,322],[30,431],[-61,250]],[[80461,51765],[204,-202],[214,110],[56,500],[119,112],[333,128],[199,467],[137,374]],[[81723,53254],[126,-307],[58,202],[133,-19],[16,377],[13,291]],[[82069,53798],[214,411],[140,462],[112,2],[143,-299],[13,-257],[183,-165],[231,-177],[-20,-232],[-186,-29],[50,-289],[-205,-201]],[[81723,53254],[110,221],[236,323]],[[53809,77462],[62,54]],[[57797,86326],[-504,-47],[-489,-216],[-452,-125],[-161,323],[-269,193],[62,582],[-135,533],[133,345],[252,371],[635,640],[185,124],[-28,250],[-387,279]],[[54711,79292],[39,130],[123,-10],[95,61],[7,55],[54,28],[18,134],[64,26],[43,106],[82,1]],[[60669,61213],[161,-684],[77,-542],[152,-288],[379,-558],[154,-336],[151,-341],[87,-203],[136,-178]],[[61966,58083],[-83,-144],[-119,51]],[[61764,57990],[-95,191],[-114,346],[-124,190],[-71,204],[-242,237],[-191,7],[-67,124],[-163,-139],[-168,268],[-87,-441],[-323,124]],[[89411,73729],[-256,-595],[4,-610],[-104,-472],[48,-296],[-145,-416],[-355,-278],[-488,-36],[-396,-675],[-186,227],[-12,442],[-483,-130],[-329,-279],[-325,-11],[282,-435],[-186,-1004],[-179,-248],[-135,229],[69,533],[-176,172],[-113,405],[263,182],[145,371],[280,306],[203,403],[553,177],[297,-121],[291,1050],[185,-282],[408,591],[158,229],[174,723],[-47,664],[117,374],[295,108],[152,-819],[-9,-479]],[[90169,76553],[197,250],[62,-663],[-412,-162],[-244,-587],[-436,404],[-152,-646],[-308,-9],[-39,587],[138,455],[296,33],[81,817],[83,460],[326,-615],[213,-198],[195,-126]],[[86769,70351],[154,352],[158,-68],[114,248],[204,-127],[35,-203],[-156,-357],[-114,189],[-143,-137],[-73,-346],[-181,168],[2,281]],[[64752,60417],[-201,-158],[-54,-263],[-6,-201],[-277,-249],[-444,-276],[-249,-417],[-122,-33],[-83,35],[-163,-245],[-177,-114],[-233,-30],[-70,-34],[-61,-156],[-73,-43],[-43,-150],[-137,13],[-89,-80],[-192,30],[-72,345],[8,323],[-46,174],[-54,437],[-80,243],[56,29],[-29,270],[34,114],[-12,257]],[[61883,60238],[121,189],[-28,249],[74,290],[114,-153],[75,53],[321,14],[50,-59],[269,-60],[106,30],[70,-197],[130,99],[199,620],[259,266],[801,226]],[[63448,67449],[109,-510],[137,-135],[47,-207],[190,-249],[16,-243],[-27,-197],[35,-199],[80,-165],[37,-194],[41,-145]],[[64274,65130],[53,-226]],[[61883,60238],[-37,252],[-83,178],[-22,236],[-143,212],[-148,495],[-79,482],[-192,406],[-124,97],[-184,563],[-32,411],[12,350],[-159,655],[-130,231],[-150,122],[-92,339],[15,133],[-77,306],[-81,132],[-108,440],[-170,476],[-141,406],[-139,-3],[44,325],[12,206],[34,236]],[[36483,4468],[141,0],[414,127],[419,-127],[342,-255],[120,-359],[33,-254],[11,-301],[-430,-186],[-452,-150],[-522,-139],[-582,-116],[-658,35],[-365,197],[49,243],[593,162],[239,197],[174,254],[126,220],[168,209],[180,243]],[[31586,3163],[625,-23],[599,-58],[207,243],[147,208],[288,-243],[-82,-301],[-81,-266],[-582,81],[-621,-35],[-348,197],[0,23],[-152,174]],[[29468,8472],[190,70],[321,-23],[82,301],[16,219],[-6,475],[158,278],[256,93],[147,-220],[65,-220],[120,-267],[92,-254],[76,-267],[33,-266],[-49,-231],[-76,-220],[-326,-81],[-311,-116],[-364,11],[136,232],[-327,-81],[-310,-81],[-212,174],[-16,243],[305,231]],[[21575,8103],[174,104],[353,-81],[403,-46],[305,-81],[304,69],[163,-335],[-217,46],[-337,-23],[-343,23],[-376,-35],[-283,116],[-146,243]],[[15938,7061],[60,197],[332,-104],[359,-93],[332,104],[-158,-208],[-261,-151],[-386,47],[-278,208]],[[14643,7177],[202,127],[277,-139],[425,-231],[-164,23],[-359,58],[-381,162]],[[4524,4144],[169,220],[517,-93],[277,-185],[212,-209],[76,-266],[-533,-81],[-364,208],[-163,209],[-11,35],[-180,162]],[[0,529],[16,-5],[245,344],[501,-185],[32,21],[294,188],[38,-7],[32,-4],[402,-246],[352,246],[63,34],[816,104],[265,-138],[130,-71],[419,-196],[789,-151],[625,-185],[1072,-139],[800,162],[1181,-116],[669,-185],[734,174],[773,162],[60,278],[-1094,23],[-898,139],[-234,231],[-745,128],[49,266],[103,243],[104,220],[-55,243],[-462,162],[-212,209],[-430,185],[675,-35],[642,93],[402,-197],[495,173],[457,220],[223,197],[-98,243],[-359,162],[-408,174],[-571,35],[-500,81],[-539,58],[-180,220],[-359,185],[-217,208],[-87,672],[136,-58],[250,-185],[457,58],[441,81],[228,-255],[441,58],[370,127],[348,162],[315,197],[419,58],[-11,220],[-97,220],[81,208],[359,104],[163,-196],[425,115],[321,151],[397,12],[375,57],[376,139],[299,128],[337,127],[218,-35],[190,-46],[414,81],[370,-104],[381,11],[364,81],[375,-57],[414,-58],[386,23],[403,-12],[413,-11],[381,23],[283,174],[337,92],[349,-127],[331,104],[300,208],[179,-185],[98,-208],[180,-197],[288,174],[332,-220],[375,-70],[321,-162],[392,35],[354,104],[418,-23],[376,-81],[381,-104],[147,254],[-180,197],[-136,209],[-359,46],[-158,220],[-60,220],[-98,440],[213,-81],[364,-35],[359,35],[327,-93],[283,-174],[119,-208],[376,-35],[359,81],[381,116],[342,70],[283,-139],[370,46],[239,451],[224,-266],[321,-104],[348,58],[228,-232],[365,-23],[337,-69],[332,-128],[218,220],[108,209],[278,-232],[381,58],[283,-127],[190,-197],[370,58],[288,127],[283,151],[337,81],[392,69],[354,81],[272,127],[163,186],[65,254],[-32,244],[-87,231],[-98,232],[-87,231],[-71,209],[-16,231],[27,232],[130,220],[109,243],[44,231],[-55,255],[-32,232],[136,266],[152,173],[180,220],[190,186],[223,173],[109,255],[152,162],[174,151],[267,34],[174,186],[196,115],[228,70],[202,150],[157,186],[218,69],[163,-151],[-103,-196],[-283,-174],[-120,-127],[-206,92],[-229,-58],[-190,-139],[-202,-150],[-136,-174],[-38,-231],[17,-220],[130,-197],[-190,-139],[-261,-46],[-153,-197],[-163,-185],[-174,-255],[-44,-220],[98,-243],[147,-185],[229,-139],[212,-185],[114,-232],[60,-220],[82,-232],[130,-196],[82,-220],[38,-544],[81,-220],[22,-232],[87,-231],[-38,-313],[-152,-243],[-163,-197],[-370,-81],[-125,-208],[-169,-197],[-419,-220],[-370,-93],[-348,-127],[-376,-128],[-223,-243],[-446,-23],[-489,23],[-441,-46],[-468,0],[87,-232],[424,-104],[311,-162],[174,-208],[-310,-185],[-479,58],[-397,-151],[-17,-243],[-11,-232],[327,-196],[60,-220],[353,-220],[588,-93],[500,-162],[398,-185],[506,-186],[690,-92],[681,-162],[473,-174],[517,-197],[272,-278],[136,-220],[337,209],[457,173],[484,186],[577,150],[495,162],[691,12],[680,-81],[560,-139],[180,255],[386,173],[702,12],[550,127],[522,128],[577,81],[614,104],[430,150],[-196,209],[-119,208],[0,220],[-539,-23],[-571,-93],[-544,0],[-77,220],[39,440],[125,128],[397,138],[468,139],[337,174],[337,174],[251,231],[380,104],[376,81],[190,47],[430,23],[408,81],[343,116],[337,139],[305,139],[386,185],[245,197],[261,173],[82,232],[-294,139],[98,243],[185,185],[288,116],[305,139],[283,185],[217,232],[136,277],[202,163],[331,-35],[136,-197],[332,-23],[11,220],[142,231],[299,-58],[71,-220],[331,-34],[360,104],[348,69],[315,-34],[120,-243],[305,196],[283,105],[315,81],[310,81],[283,139],[310,92],[240,128],[168,208],[207,-151],[288,81],[202,-277],[157,-209],[316,116],[125,232],[283,162],[365,-35],[108,-220],[229,220],[299,69],[326,23],[294,-11],[310,-70],[300,-34],[130,-197],[180,-174],[304,104],[327,24],[315,0],[310,11],[278,81],[294,70],[245,162],[261,104],[283,58],[212,162],[152,324],[158,197],[288,-93],[109,-208],[239,-139],[289,46],[196,-208],[206,-151],[283,139],[98,255],[250,104],[289,197],[272,81],[326,116],[218,127],[228,139],[218,127],[261,-69],[250,208],[180,162],[261,-11],[229,139],[54,208],[234,162],[228,116],[278,93],[256,46],[244,-35],[262,-58],[223,-162],[27,-254],[245,-197],[168,-162],[332,-70],[185,-162],[229,-162],[266,-35],[223,116],[240,243],[261,-127],[272,-70],[261,-69],[272,-46],[277,0],[229,-614],[-11,-150],[-33,-267],[-266,-150],[-218,-220],[38,-232],[310,12],[-38,-232],[-141,-220],[-131,-243],[212,-185],[321,-58],[321,104],[153,232],[92,220],[153,185],[174,174],[70,208],[147,289],[174,58],[316,24],[277,69],[283,93],[136,231],[82,220],[190,220],[272,151],[234,115],[153,197],[157,104],[202,93],[277,-58],[250,58],[272,69],[305,-34],[201,162],[142,393],[103,-162],[131,-278],[234,-115],[266,-47],[267,70],[283,-46],[261,-12],[174,58],[234,-35],[212,-127],[250,81],[300,0],[255,81],[289,-81],[185,197],[141,196],[191,163],[348,439],[179,-81],[212,-162],[185,-208],[354,-359],[272,-12],[256,0],[299,70],[299,81],[229,162],[190,174],[310,23],[207,127],[218,-116],[141,-185],[196,-185],[305,23],[190,-150],[332,-151],[348,-58],[288,47],[218,185],[185,185],[250,46],[251,-81],[288,-58],[261,93],[250,0],[245,-58],[256,-58],[250,104],[299,93],[283,23],[316,0],[255,58],[251,46],[76,290],[11,243],[174,-162],[49,-266],[92,-244],[115,-196],[234,-105],[315,35],[365,12],[250,35],[364,0],[262,11],[364,-23],[310,-46],[196,-186],[-54,-220],[179,-173],[299,-139],[310,-151],[360,-104],[375,-92],[283,-93],[315,-12],[180,197],[245,-162],[212,-185],[245,-139],[337,-58],[321,-69],[136,-232],[316,-139],[212,-208],[310,-93],[321,12],[299,-35],[332,12],[332,-47],[310,-81],[288,-139],[289,-116],[195,-173],[-32,-232],[-147,-208],[-125,-266],[-98,-209],[-131,-243],[-364,-93],[-163,-208],[-360,-127],[-125,-232],[-190,-220],[-201,-185],[-115,-243],[-70,-220],[-28,-266],[6,-220],[158,-232],[60,-220],[130,-208],[517,-81],[109,-255],[-501,-93],[-424,-127],[-528,-23],[-234,-336],[-49,-278],[-119,-220],[-147,-220],[370,-196],[141,-244],[239,-219],[338,-197],[386,-186],[419,-185],[636,-185],[142,-289],[800,-128],[53,-45],[208,-175],[767,151],[636,-186],[479,-142],[-99999,0]],[[59092,71341],[19,3],[40,143],[200,-8],[253,176],[-188,-251],[21,-111]],[[59437,71293],[-30,21],[-53,-45],[-42,12],[-14,-22],[-5,59],[-20,37],[-54,6],[-75,-51],[-52,31]],[[59437,71293],[8,-48],[-285,-240],[-136,77],[-64,237],[132,22]],[[45272,63236],[13,274],[106,161],[91,308],[-18,200],[96,417],[155,376],[93,95],[74,344],[6,315],[100,365],[185,216],[177,603],[5,8],[139,227],[259,65],[218,404],[140,158],[232,493],[-70,735],[106,508],[37,312],[179,399],[278,270],[206,244],[186,612],[87,362],[205,-2],[167,-251],[264,41],[288,-131],[121,-6]],[[56944,63578],[0,2175],[0,2101],[-83,476],[71,365],[-43,253],[101,283]],[[56990,69231],[369,10],[268,-156],[275,-175],[129,-92],[214,188],[114,169],[245,49],[198,-75],[75,-293],[65,193],[222,-140],[217,-33],[137,149]],[[59700,68010],[-78,-238],[-60,-446],[-75,-308],[-65,-103],[-93,191],[-125,263],[-198,847],[-29,-53],[115,-624],[171,-594],[210,-920],[102,-321],[90,-334],[249,-654],[-55,-103],[9,-384],[323,-530],[49,-121]],[[53191,70158],[326,-204],[117,51],[232,-98],[368,-264],[130,-526],[250,-114],[391,-248],[296,-293],[136,153],[133,272],[-65,452],[87,288],[200,277],[192,80],[375,-121],[95,-264],[104,-2],[88,-101],[276,-70],[68,-195]],[[59804,53833],[-164,643],[-127,137],[-48,236],[-141,288],[-171,42],[95,337],[147,14],[42,181]],[[61764,57990],[-98,-261],[-94,-277],[22,-163],[4,-180],[155,-10],[67,42],[62,-106]],[[61882,57035],[-61,-209],[103,-325],[102,-285],[106,-210],[909,-702],[233,4]],[[61966,58083],[66,-183],[-9,-245],[-158,-142],[119,-161]],[[61984,57352],[-102,-317]],[[61984,57352],[91,-109],[54,-245],[125,-247],[138,-2],[262,151],[302,70],[245,184],[138,39],[99,108],[158,20]],[[58449,49909],[-166,-182],[-67,60]],[[58564,52653],[115,161],[176,-132],[224,138],[195,-1],[171,272]],[[55279,77084],[100,2],[-69,-260],[134,-227],[-41,-278],[-65,-27]],[[55338,76294],[-52,-53],[-90,-138],[-41,-325]],[[55719,75309],[35,-5],[13,121],[164,91],[62,23]],[[55993,75539],[95,35],[128,9]],[[55993,75539],[-9,44],[33,71],[31,144],[-39,-4],[-54,110],[-46,28],[-36,94],[-52,36],[-40,84],[-50,-33],[-38,-196],[-66,-43]],[[55627,75874],[22,51],[-106,123],[-91,63],[-40,82],[-74,101]],[[55380,75322],[-58,46],[-78,192],[-120,118]],[[55627,75874],[-52,-132]],[[32866,56937],[160,77],[58,-21],[-11,-440],[-232,-65],[-50,53],[81,163],[-6,233]]],"bbox":[-180,-85.60903777459771,180,83.64513000000001],"transform":{"scale":[0.0036000360003600037,0.0016925586033320105],"translate":[-180,-85.60903777459771]}} diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/index.ts b/frontend/src/pages/secret-manager/InsightsPage/components/index.ts deleted file mode 100644 index a9930b1066a..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -export { AuthMethodChart } from "./AuthMethodChart"; -export { CalendarCard } from "./CalendarCard"; -export { CalendarGrid } from "./CalendarGrid"; -export { CalendarLegend } from "./CalendarLegend"; -export { InsightsSummaryCards } from "./InsightsSummaryCards"; -export { SecretAccessChart } from "./SecretAccessChart"; -export type { CalendarEvent } from "./types"; -// export { WorldMap } from "./WorldMap"; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/types.ts b/frontend/src/pages/secret-manager/InsightsPage/components/types.ts deleted file mode 100644 index d3974d55a0a..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/components/types.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { TCalendarReminder, TCalendarRotation } from "@app/hooks/api/secretInsights/types"; - -export type CalendarEvent = - | { type: "rotation"; data: TCalendarRotation } - | { type: "reminder"; data: TCalendarReminder }; diff --git a/frontend/src/pages/secret-manager/InsightsPage/route.tsx b/frontend/src/pages/secret-manager/InsightsPage/route.tsx deleted file mode 100644 index 3a492982903..00000000000 --- a/frontend/src/pages/secret-manager/InsightsPage/route.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import { createFileRoute } from "@tanstack/react-router"; - -import { InsightsPage } from "./InsightsPage"; - -export const Route = createFileRoute( - "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights" -)({ - component: InsightsPage, - beforeLoad: ({ context }) => { - return { - breadcrumbs: [ - ...context.breadcrumbs, - { - label: "Insights" - } - ] - }; - } -}); diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index d6df78b2818..8d6c80579d5 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -111,7 +111,6 @@ import { Route as secretScanningSecretScanningFindingsPageRouteImport } from './ import { Route as secretManagerSettingsPageRouteImport } from './pages/secret-manager/SettingsPage/route' import { Route as secretManagerSecretRotationPageRouteImport } from './pages/secret-manager/SecretRotationPage/route' import { Route as secretManagerOverviewPageRouteImport } from './pages/secret-manager/OverviewPage/route' -import { Route as secretManagerInsightsPageRouteImport } from './pages/secret-manager/InsightsPage/route' import { Route as secretManagerSecretApprovalsPageRouteImport } from './pages/secret-manager/SecretApprovalsPage/route' import { Route as secretManagerIPAllowlistPageRouteImport } from './pages/secret-manager/IPAllowlistPage/route' import { Route as pamSettingsPageRouteImport } from './pages/pam/SettingsPage/route' @@ -1305,13 +1304,6 @@ const secretManagerOverviewPageRouteRoute = getParentRoute: () => secretManagerLayoutRoute, } as any) -const secretManagerInsightsPageRouteRoute = - secretManagerInsightsPageRouteImport.update({ - id: '/insights', - path: '/insights', - getParentRoute: () => secretManagerLayoutRoute, - } as any) - const secretManagerSecretApprovalsPageRouteRoute = secretManagerSecretApprovalsPageRouteImport.update({ id: '/approval', @@ -3267,13 +3259,6 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof secretManagerSecretApprovalsPageRouteImport parentRoute: typeof secretManagerLayoutImport } - '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights': { - id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights' - path: '/insights' - fullPath: '/organizations/$orgId/projects/secret-management/$projectId/insights' - preLoaderRoute: typeof secretManagerInsightsPageRouteImport - parentRoute: typeof secretManagerLayoutImport - } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview' path: '/overview' @@ -5269,7 +5254,6 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManag interface secretManagerLayoutRouteChildren { secretManagerIPAllowlistPageRouteRoute: typeof secretManagerIPAllowlistPageRouteRoute secretManagerSecretApprovalsPageRouteRoute: typeof secretManagerSecretApprovalsPageRouteRoute - secretManagerInsightsPageRouteRoute: typeof secretManagerInsightsPageRouteRoute secretManagerOverviewPageRouteRoute: typeof secretManagerOverviewPageRouteRoute secretManagerSecretRotationPageRouteRoute: typeof secretManagerSecretRotationPageRouteRoute secretManagerSettingsPageRouteRoute: typeof secretManagerSettingsPageRouteRoute @@ -5290,7 +5274,6 @@ const secretManagerLayoutRouteChildren: secretManagerLayoutRouteChildren = { secretManagerIPAllowlistPageRouteRoute, secretManagerSecretApprovalsPageRouteRoute: secretManagerSecretApprovalsPageRouteRoute, - secretManagerInsightsPageRouteRoute: secretManagerInsightsPageRouteRoute, secretManagerOverviewPageRouteRoute: secretManagerOverviewPageRouteRoute, secretManagerSecretRotationPageRouteRoute: secretManagerSecretRotationPageRouteRoute, @@ -5894,7 +5877,6 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/pam/$projectId/settings': typeof pamSettingsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/approval': typeof secretManagerSecretApprovalsPageRouteRoute - '/organizations/$orgId/projects/secret-management/$projectId/insights': typeof secretManagerInsightsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/overview': typeof secretManagerOverviewPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/settings': typeof secretManagerSettingsPageRouteRoute @@ -6163,7 +6145,6 @@ export interface FileRoutesByTo { '/organizations/$orgId/projects/pam/$projectId/settings': typeof pamSettingsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/approval': typeof secretManagerSecretApprovalsPageRouteRoute - '/organizations/$orgId/projects/secret-management/$projectId/insights': typeof secretManagerInsightsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/overview': typeof secretManagerOverviewPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/settings': typeof secretManagerSettingsPageRouteRoute @@ -6437,7 +6418,6 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/settings': typeof pamSettingsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval': typeof secretManagerSecretApprovalsPageRouteRoute - '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights': typeof secretManagerInsightsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview': typeof secretManagerOverviewPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings': typeof secretManagerSettingsPageRouteRoute @@ -6715,7 +6695,6 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/settings' | '/organizations/$orgId/projects/secret-management/$projectId/allowlist' | '/organizations/$orgId/projects/secret-management/$projectId/approval' - | '/organizations/$orgId/projects/secret-management/$projectId/insights' | '/organizations/$orgId/projects/secret-management/$projectId/overview' | '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation' | '/organizations/$orgId/projects/secret-management/$projectId/settings' @@ -6983,7 +6962,6 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/settings' | '/organizations/$orgId/projects/secret-management/$projectId/allowlist' | '/organizations/$orgId/projects/secret-management/$projectId/approval' - | '/organizations/$orgId/projects/secret-management/$projectId/insights' | '/organizations/$orgId/projects/secret-management/$projectId/overview' | '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation' | '/organizations/$orgId/projects/secret-management/$projectId/settings' @@ -7255,7 +7233,6 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/settings' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval' - | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings' @@ -8014,7 +7991,6 @@ export const routeTree = rootRoute "children": [ "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval", - "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings", @@ -8128,10 +8104,6 @@ export const routeTree = rootRoute "filePath": "secret-manager/SecretApprovalsPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" }, - "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights": { - "filePath": "secret-manager/InsightsPage/route.tsx", - "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" - }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview": { "filePath": "secret-manager/OverviewPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" diff --git a/frontend/src/routes.ts b/frontend/src/routes.ts index e01a5f8d3f2..7cf2251d50a 100644 --- a/frontend/src/routes.ts +++ b/frontend/src/routes.ts @@ -23,7 +23,6 @@ const secretManagerRoutes = route("/organizations/$orgId/projects/secret-managem route("/allowlist", "secret-manager/IPAllowlistPage/route.tsx"), route("/approval", "secret-manager/SecretApprovalsPage/route.tsx"), route("/secret-rotation", "secret-manager/SecretRotationPage/route.tsx"), - route("/insights", "secret-manager/InsightsPage/route.tsx"), route("/settings", "secret-manager/SettingsPage/route.tsx"), route("/commits/$environment/$folderId", [ index("secret-manager/CommitsPage/route.tsx"), From ba75aabcc5f1f8e4a24478f65e38fb8444d2512e Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Thu, 16 Apr 2026 17:03:07 -0700 Subject: [PATCH 199/562] test: remove recharts and pki dashboard --- frontend/package-lock.json | 314 +------- frontend/package.json | 1 - .../DashboardPage/DashboardPage.tsx | 185 +++-- .../components/ActivityTrend.tsx | 258 +++---- .../components/CodeSigningSection.tsx | 488 ++++++------- .../components/DistributionCharts.tsx | 408 +++++------ .../components/ExpirationTimeline.tsx | 344 ++++----- .../components/ValidityReadinessSection.tsx | 672 +++++++++--------- .../DashboardPage/components/index.tsx | 10 +- 9 files changed, 1183 insertions(+), 1497 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a981676478c..1a65835ca0a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -109,7 +109,6 @@ "react-markdown": "^10.0.1", "react-select": "^5.9.0", "react-toastify": "^10.0.6", - "recharts": "^3.8.1", "redaxios": "^0.5.1", "rehype-raw": "^7.0.0", "sonner": "^2.0.7", @@ -5000,42 +4999,6 @@ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", "license": "MIT" }, - "node_modules/@reduxjs/toolkit": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz", - "integrity": "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==", - "license": "MIT", - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@standard-schema/utils": "^0.3.0", - "immer": "^11.0.0", - "redux": "^5.0.1", - "redux-thunk": "^3.1.0", - "reselect": "^5.1.0" - }, - "peerDependencies": { - "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", - "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "react-redux": { - "optional": true - } - } - }, - "node_modules/@reduxjs/toolkit/node_modules/immer": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.4.tgz", - "integrity": "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==", - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", @@ -5518,18 +5481,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "license": "MIT" - }, - "node_modules/@standard-schema/utils": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", - "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", - "license": "MIT" - }, "node_modules/@storybook/addon-a11y": { "version": "9.1.13", "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.1.13.tgz", @@ -6838,12 +6789,6 @@ "assertion-error": "^2.0.1" } }, - "node_modules/@types/d3-array": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", - "license": "MIT" - }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", @@ -6859,12 +6804,6 @@ "@types/d3-selection": "*" } }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" - }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", @@ -6874,48 +6813,12 @@ "@types/d3-color": "*" } }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", "license": "MIT" }, - "node_modules/@types/d3-shape": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", - "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" - }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", @@ -7142,12 +7045,6 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, - "node_modules/@types/use-sync-external-store": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", - "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", - "license": "MIT" - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz", @@ -9491,18 +9388,6 @@ "url": "https://polar.sh/cva" } }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", @@ -9543,15 +9428,6 @@ "node": ">=12" } }, - "node_modules/d3-format": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", - "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -9564,31 +9440,6 @@ "node": ">=12" } }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-selection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", @@ -9598,42 +9449,6 @@ "node": ">=12" } }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/d3-timer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", @@ -9782,12 +9597,6 @@ "node": ">=0.10.0" } }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", - "license": "MIT" - }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -10270,16 +10079,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-toolkit": { - "version": "1.45.1", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz", - "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==", - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] - }, "node_modules/esbuild": { "version": "0.25.11", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", @@ -11154,12 +10953,6 @@ "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", - "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", - "license": "MIT" - }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -12164,6 +11957,8 @@ "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", "license": "MIT", + "optional": true, + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -12244,15 +12039,6 @@ "node": ">= 0.4" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/iobuffer": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", @@ -15510,29 +15296,6 @@ "react": ">=18" } }, - "node_modules/react-redux": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", - "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", - "license": "MIT", - "dependencies": { - "@types/use-sync-external-store": "^0.0.6", - "use-sync-external-store": "^1.4.0" - }, - "peerDependencies": { - "@types/react": "^18.2.25 || ^19", - "react": "^18.0 || ^19", - "redux": "^5.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "redux": { - "optional": true - } - } - }, "node_modules/react-remove-scroll": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", @@ -15731,36 +15494,6 @@ "node": ">=0.10.0" } }, - "node_modules/recharts": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.8.1.tgz", - "integrity": "sha512-mwzmO1s9sFL0TduUpwndxCUNoXsBw3u3E/0+A+cLcrSfQitSG62L32N69GhqUrrT5qKcAE3pCGVINC6pqkBBQg==", - "license": "MIT", - "workspaces": [ - "www" - ], - "dependencies": { - "@reduxjs/toolkit": "^1.9.0 || 2.x.x", - "clsx": "^2.1.1", - "decimal.js-light": "^2.5.1", - "es-toolkit": "^1.39.3", - "eventemitter3": "^5.0.1", - "immer": "^10.1.1", - "react-redux": "8.x.x || 9.x.x", - "reselect": "5.1.1", - "tiny-invariant": "^1.3.3", - "use-sync-external-store": "^1.2.2", - "victory-vendor": "^37.0.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/redaxios": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/redaxios/-/redaxios-0.5.1.tgz", @@ -15796,21 +15529,6 @@ "node": ">=8" } }, - "node_modules/redux": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", - "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" - }, - "node_modules/redux-thunk": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", - "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", - "license": "MIT", - "peerDependencies": { - "redux": "^5.0.0" - } - }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -15925,12 +15643,6 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "license": "ISC" }, - "node_modules/reselect": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", - "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", - "license": "MIT" - }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -17666,28 +17378,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/victory-vendor": { - "version": "37.3.6", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", - "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", - "license": "MIT AND ISC", - "dependencies": { - "@types/d3-array": "^3.0.3", - "@types/d3-ease": "^3.0.0", - "@types/d3-interpolate": "^3.0.1", - "@types/d3-scale": "^4.0.2", - "@types/d3-shape": "^3.1.0", - "@types/d3-time": "^3.0.0", - "@types/d3-timer": "^3.0.0", - "d3-array": "^3.1.6", - "d3-ease": "^3.0.1", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.1.0", - "d3-time": "^3.0.0", - "d3-timer": "^3.0.1" - } - }, "node_modules/vite": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 6c0f98a6fc2..d02a2468f91 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -137,7 +137,6 @@ "react-markdown": "^10.0.1", "react-select": "^5.9.0", "react-toastify": "^10.0.6", - "recharts": "^3.8.1", "redaxios": "^0.5.1", "rehype-raw": "^7.0.0", "sonner": "^2.0.7", diff --git a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx index ffe659fe6d0..fefb121749c 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx @@ -1,99 +1,96 @@ -import { useCallback, useState } from "react"; -import { Helmet } from "react-helmet"; -import { useTranslation } from "react-i18next"; -import { useNavigate } from "@tanstack/react-router"; +// import { useCallback, useState } from "react"; +// import { Helmet } from "react-helmet"; +// import { useTranslation } from "react-i18next"; +// import { useNavigate } from "@tanstack/react-router"; -import { ProjectPermissionCan } from "@app/components/permissions"; -import { PageHeader } from "@app/components/v2"; -import { UnstablePageLoader } from "@app/components/v3"; -import { useProject } from "@app/context"; -import { - ProjectPermissionCertificateActions, - ProjectPermissionSub -} from "@app/context/ProjectPermissionContext/types"; -import { useGetCertActivityTrend, useGetCertDashboardStats } from "@app/hooks/api/certificates"; -import { ProjectType } from "@app/hooks/api/projects/types"; +// import { ProjectPermissionCan } from "@app/components/permissions"; +// import { PageHeader } from "@app/components/v2"; +// import { UnstablePageLoader } from "@app/components/v3"; +// import { useProject } from "@app/context"; +// import { +// ProjectPermissionCertificateActions, +// ProjectPermissionSub +// } from "@app/context/ProjectPermissionContext/types"; +// import { useGetCertActivityTrend, useGetCertDashboardStats } from "@app/hooks/api/certificates"; +// import { ProjectType } from "@app/hooks/api/projects/types"; -import { - ActivityTrend, - CodeSigningSection, - DistributionCharts, - ExpirationTimeline, - KpiCards, - ValidityReadinessSection -} from "./components"; +// import { +// // ActivityTrend, +// // CodeSigningSection, +// // DistributionCharts, +// // ExpirationTimeline, +// KpiCards +// // ValidityReadinessSection +// } from "./components"; export const DashboardPage = () => { - const { t } = useTranslation(); - const { currentProject } = useProject(); - const navigate = useNavigate(); - const [trendRange, setTrendRange] = useState("30d"); - - const { data: stats, isPending: isStatsLoading } = useGetCertDashboardStats( - currentProject?.id || "" - ); - const { data: trendData } = useGetCertActivityTrend(currentProject?.id || "", trendRange); - - const navigateToInventory = useCallback( - (filters: Record) => { - navigate({ - to: "/organizations/$orgId/projects/cert-manager/$projectId/policies", - params: { - orgId: currentProject?.orgId || "", - projectId: currentProject?.id || "" - }, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - search: { selectedTab: "certificates", ...filters } as any - }); - }, - [navigate, currentProject] - ); - - if (!currentProject) { - return ; - } - - return ( -
- - {t("common.head-title", { title: "Certificate Dashboard" })} - -
-
- - - {isStatsLoading || !stats ? ( - - ) : ( -
- -
- - -
- - - -
- )} -
-
-
-
- ); + return null; + // const { t } = useTranslation(); + // const { currentProject } = useProject(); + // const navigate = useNavigate(); + // const [trendRange, setTrendRange] = useState("30d"); + // const { data: stats, isPending: isStatsLoading } = useGetCertDashboardStats( + // currentProject?.id || "" + // ); + // const { data: trendData } = useGetCertActivityTrend(currentProject?.id || "", trendRange); + // const navigateToInventory = useCallback( + // (filters: Record) => { + // navigate({ + // to: "/organizations/$orgId/projects/cert-manager/$projectId/policies", + // params: { + // orgId: currentProject?.orgId || "", + // projectId: currentProject?.id || "" + // }, + // // eslint-disable-next-line @typescript-eslint/no-explicit-any + // search: { selectedTab: "certificates", ...filters } as any + // }); + // }, + // [navigate, currentProject] + // ); + // if (!currentProject) { + // return ; + // } + // return ( + //
+ // + // {t("common.head-title", { title: "Certificate Dashboard" })} + // + //
+ //
+ // + // + // {isStatsLoading || !stats ? ( + // + // ) : ( + //
+ // + //
+ // + // + //
+ // + // + // + //
+ // )} + //
+ //
+ //
+ //
+ // ); }; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx index 2facd20ccd2..00382860bef 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx @@ -1,135 +1,135 @@ -import { - CartesianGrid, - Legend, - Line, - LineChart, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from "recharts"; +// // import { +// // CartesianGrid, +// // Legend, +// // Line, +// // LineChart, +// // ResponsiveContainer, +// // Tooltip, +// // XAxis, +// // YAxis +// // } from "recharts"; -import { - Button, - UnstableCard, - UnstableCardAction, - UnstableCardContent, - UnstableCardHeader, - UnstableCardTitle, - UnstableEmpty, - UnstableEmptyHeader, - UnstableEmptyTitle -} from "@app/components/v3"; -import type { TActivityTrendPoint } from "@app/hooks/api/certificates"; +// import { +// Button, +// UnstableCard, +// UnstableCardAction, +// UnstableCardContent, +// UnstableCardHeader, +// UnstableCardTitle, +// UnstableEmpty, +// UnstableEmptyHeader, +// UnstableEmptyTitle +// } from "@app/components/v3"; +// import type { TActivityTrendPoint } from "@app/hooks/api/certificates"; -import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; +// import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; -type Props = { - data: TActivityTrendPoint[]; - onRangeChange: (range: string) => void; - currentRange: string; -}; +// type Props = { +// data: TActivityTrendPoint[]; +// onRangeChange: (range: string) => void; +// currentRange: string; +// }; -const SERIES_KEYS = ["issued", "expired", "revoked", "renewed"]; +// const SERIES_KEYS = ["issued", "expired", "revoked", "renewed"]; -const ranges = [ - { label: "7D", value: "7d" }, - { label: "30D", value: "30d" }, - { label: "6M", value: "6m" } -]; +// const ranges = [ +// { label: "7D", value: "7d" }, +// { label: "30D", value: "30d" }, +// { label: "6M", value: "6m" } +// ]; -export const ActivityTrend = ({ data, onRangeChange, currentRange }: Props) => { - const hasAnyData = data.some( - (d) => d.issued > 0 || d.expired > 0 || d.revoked > 0 || d.renewed > 0 - ); - return ( - - - Certificate Activity Trend - -
- {ranges.map((r) => ( - - ))} -
-
-
- - {!hasAnyData ? ( - - - No activity in this period - - - ) : ( - - - - - - - - - - - - - - )} - -
- ); -}; +// export const ActivityTrend = ({ data, onRangeChange, currentRange }: Props) => { +// const hasAnyData = data.some( +// (d) => d.issued > 0 || d.expired > 0 || d.revoked > 0 || d.renewed > 0 +// ); +// return ( +// +// +// Certificate Activity Trend +// +//
+// {ranges.map((r) => ( +// +// ))} +//
+//
+//
+// +// {!hasAnyData ? ( +// +// +// No activity in this period +// +// +// ) : ( +// +// +// +// +// +// +// +// +// +// +// +// +// +// )} +// +//
+// ); +// }; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx index a71d3bffa4c..cb02606de4f 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx @@ -1,244 +1,244 @@ -import { useMemo, useState } from "react"; -import { format } from "date-fns"; -import { - CartesianGrid, - Legend, - Line, - LineChart, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis -} from "recharts"; - -import { - Button, - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, - UnstableCard, - UnstableCardContent, - UnstableCardHeader, - UnstableCardTitle, - UnstableEmpty, - UnstableEmptyHeader, - UnstableEmptyTitle -} from "@app/components/v3"; -import { - SigningOperationStatus, - TSigningOperation, - useListSigners, - useListSigningOperations -} from "@app/hooks/api/signers"; - -import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; - -type Props = { - projectId: string; -}; - -const ALL_SIGNERS = "__all__"; - -const ranges = [ - { label: "7D", value: "7d", days: 7 }, - { label: "30D", value: "30d", days: 30 }, - { label: "6M", value: "6m", days: 180 } -]; - -const buildTrendData = (operations: TSigningOperation[], daysBack: number) => { - const useDaily = daysBack <= 30; - const formatKey = useDaily ? "yyyy-MM-dd" : "yyyy-MM"; - const bucketMap = new Map(); - - operations.forEach((op) => { - const key = format(new Date(op.createdAt), formatKey); - const entry = bucketMap.get(key) || { success: 0, failed: 0 }; - if (op.status === SigningOperationStatus.Success) { - entry.success += 1; - } else { - entry.failed += 1; - } - bucketMap.set(key, entry); - }); - - const now = new Date(); - const cursor = new Date(); - cursor.setDate(cursor.getDate() - daysBack); - cursor.setHours(0, 0, 0, 0); - if (!useDaily) cursor.setDate(1); - - const result: { period: string; success: number; failed: number }[] = []; - while (cursor <= now) { - const key = format(cursor, formatKey); - const entry = bucketMap.get(key) || { success: 0, failed: 0 }; - result.push({ period: key, ...entry }); - if (useDaily) { - cursor.setDate(cursor.getDate() + 1); - } else { - cursor.setMonth(cursor.getMonth() + 1); - } - } - return result; -}; - -export const CodeSigningSection = ({ projectId }: Props) => { - const { data: signersData } = useListSigners({ projectId, limit: 100 }); - const signers = signersData?.signers || []; - - const [selectedSignerId, setSelectedSignerId] = useState(ALL_SIGNERS); - const [currentRange, setCurrentRange] = useState("30d"); - const activeDays = ranges.find((r) => r.value === currentRange)?.days || 30; - - const signerIds = signers.map((s) => s.id); - const firstSignerId = signerIds[0] || ""; - const secondSignerId = signerIds[1] || ""; - const thirdSignerId = signerIds[2] || ""; - const fourthSignerId = signerIds[3] || ""; - const fifthSignerId = signerIds[4] || ""; - - const { data: ops1 } = useListSigningOperations({ signerId: firstSignerId, limit: 100 }); - const { data: ops2 } = useListSigningOperations({ signerId: secondSignerId, limit: 100 }); - const { data: ops3 } = useListSigningOperations({ signerId: thirdSignerId, limit: 100 }); - const { data: ops4 } = useListSigningOperations({ signerId: fourthSignerId, limit: 100 }); - const { data: ops5 } = useListSigningOperations({ signerId: fifthSignerId, limit: 100 }); - - const allOperationsMap = useMemo(() => { - const map = new Map(); - const queryResults = [ - { id: firstSignerId, data: ops1 }, - { id: secondSignerId, data: ops2 }, - { id: thirdSignerId, data: ops3 }, - { id: fourthSignerId, data: ops4 }, - { id: fifthSignerId, data: ops5 } - ]; - queryResults.forEach(({ id, data }) => { - if (id && data?.operations) { - map.set(id, data.operations); - } - }); - return map; - }, [ - firstSignerId, - secondSignerId, - thirdSignerId, - fourthSignerId, - fifthSignerId, - ops1, - ops2, - ops3, - ops4, - ops5 - ]); - - const filteredOperations = useMemo(() => { - let ops: TSigningOperation[]; - if (selectedSignerId === ALL_SIGNERS) { - ops = Array.from(allOperationsMap.values()).flat(); - } else { - ops = allOperationsMap.get(selectedSignerId) || []; - } - const cutoffDate = new Date(); - cutoffDate.setDate(cutoffDate.getDate() - activeDays); - return ops - .filter((op) => new Date(op.createdAt) >= cutoffDate) - .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); - }, [selectedSignerId, allOperationsMap, activeDays]); - - const trendData = useMemo( - () => buildTrendData(filteredOperations, activeDays), - [filteredOperations, activeDays] - ); - - if (signers.length === 0) { - return null; - } - - return ( - - - Code Signing Activity -
-
- {ranges.map((r) => ( - - ))} -
- -
-
- - {trendData.length === 0 ? ( - - - No signing operations yet - - - ) : ( - - - - - - - - - - - - )} - -
- ); -}; +// import { useMemo, useState } from "react"; +// import { format } from "date-fns"; +// import { +// CartesianGrid, +// Legend, +// Line, +// LineChart, +// ResponsiveContainer, +// Tooltip, +// XAxis, +// YAxis +// } from "recharts"; + +// import { +// Button, +// Select, +// SelectContent, +// SelectItem, +// SelectTrigger, +// SelectValue, +// UnstableCard, +// UnstableCardContent, +// UnstableCardHeader, +// UnstableCardTitle, +// UnstableEmpty, +// UnstableEmptyHeader, +// UnstableEmptyTitle +// } from "@app/components/v3"; +// import { +// SigningOperationStatus, +// TSigningOperation, +// useListSigners, +// useListSigningOperations +// } from "@app/hooks/api/signers"; + +// import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; + +// type Props = { +// projectId: string; +// }; + +// const ALL_SIGNERS = "__all__"; + +// const ranges = [ +// { label: "7D", value: "7d", days: 7 }, +// { label: "30D", value: "30d", days: 30 }, +// { label: "6M", value: "6m", days: 180 } +// ]; + +// const buildTrendData = (operations: TSigningOperation[], daysBack: number) => { +// const useDaily = daysBack <= 30; +// const formatKey = useDaily ? "yyyy-MM-dd" : "yyyy-MM"; +// const bucketMap = new Map(); + +// operations.forEach((op) => { +// const key = format(new Date(op.createdAt), formatKey); +// const entry = bucketMap.get(key) || { success: 0, failed: 0 }; +// if (op.status === SigningOperationStatus.Success) { +// entry.success += 1; +// } else { +// entry.failed += 1; +// } +// bucketMap.set(key, entry); +// }); + +// const now = new Date(); +// const cursor = new Date(); +// cursor.setDate(cursor.getDate() - daysBack); +// cursor.setHours(0, 0, 0, 0); +// if (!useDaily) cursor.setDate(1); + +// const result: { period: string; success: number; failed: number }[] = []; +// while (cursor <= now) { +// const key = format(cursor, formatKey); +// const entry = bucketMap.get(key) || { success: 0, failed: 0 }; +// result.push({ period: key, ...entry }); +// if (useDaily) { +// cursor.setDate(cursor.getDate() + 1); +// } else { +// cursor.setMonth(cursor.getMonth() + 1); +// } +// } +// return result; +// }; + +// export const CodeSigningSection = ({ projectId }: Props) => { +// const { data: signersData } = useListSigners({ projectId, limit: 100 }); +// const signers = signersData?.signers || []; + +// const [selectedSignerId, setSelectedSignerId] = useState(ALL_SIGNERS); +// const [currentRange, setCurrentRange] = useState("30d"); +// const activeDays = ranges.find((r) => r.value === currentRange)?.days || 30; + +// const signerIds = signers.map((s) => s.id); +// const firstSignerId = signerIds[0] || ""; +// const secondSignerId = signerIds[1] || ""; +// const thirdSignerId = signerIds[2] || ""; +// const fourthSignerId = signerIds[3] || ""; +// const fifthSignerId = signerIds[4] || ""; + +// const { data: ops1 } = useListSigningOperations({ signerId: firstSignerId, limit: 100 }); +// const { data: ops2 } = useListSigningOperations({ signerId: secondSignerId, limit: 100 }); +// const { data: ops3 } = useListSigningOperations({ signerId: thirdSignerId, limit: 100 }); +// const { data: ops4 } = useListSigningOperations({ signerId: fourthSignerId, limit: 100 }); +// const { data: ops5 } = useListSigningOperations({ signerId: fifthSignerId, limit: 100 }); + +// const allOperationsMap = useMemo(() => { +// const map = new Map(); +// const queryResults = [ +// { id: firstSignerId, data: ops1 }, +// { id: secondSignerId, data: ops2 }, +// { id: thirdSignerId, data: ops3 }, +// { id: fourthSignerId, data: ops4 }, +// { id: fifthSignerId, data: ops5 } +// ]; +// queryResults.forEach(({ id, data }) => { +// if (id && data?.operations) { +// map.set(id, data.operations); +// } +// }); +// return map; +// }, [ +// firstSignerId, +// secondSignerId, +// thirdSignerId, +// fourthSignerId, +// fifthSignerId, +// ops1, +// ops2, +// ops3, +// ops4, +// ops5 +// ]); + +// const filteredOperations = useMemo(() => { +// let ops: TSigningOperation[]; +// if (selectedSignerId === ALL_SIGNERS) { +// ops = Array.from(allOperationsMap.values()).flat(); +// } else { +// ops = allOperationsMap.get(selectedSignerId) || []; +// } +// const cutoffDate = new Date(); +// cutoffDate.setDate(cutoffDate.getDate() - activeDays); +// return ops +// .filter((op) => new Date(op.createdAt) >= cutoffDate) +// .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); +// }, [selectedSignerId, allOperationsMap, activeDays]); + +// const trendData = useMemo( +// () => buildTrendData(filteredOperations, activeDays), +// [filteredOperations, activeDays] +// ); + +// if (signers.length === 0) { +// return null; +// } + +// return ( +// +// +// Code Signing Activity +//
+//
+// {ranges.map((r) => ( +// +// ))} +//
+// +//
+//
+// +// {trendData.length === 0 ? ( +// +// +// No signing operations yet +// +// +// ) : ( +// +// +// +// +// +// +// +// +// +// +// +// )} +// +//
+// ); +// }; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx index dff0b4f6f6b..5b26c0f4652 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx @@ -1,212 +1,212 @@ -import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; +// import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, - UnstableCard, - UnstableCardContent, - UnstableCardDescription, - UnstableCardHeader, - UnstableCardTitle, - UnstableEmpty, - UnstableEmptyHeader, - UnstableEmptyTitle -} from "@app/components/v3"; -import type { TDashboardDistribution, TDashboardStats } from "@app/hooks/api/certificates"; -import { certKeyAlgorithmToNameMap } from "@app/hooks/api/certificates/constants"; +// import { +// Tooltip, +// TooltipContent, +// TooltipTrigger, +// UnstableCard, +// UnstableCardContent, +// UnstableCardDescription, +// UnstableCardHeader, +// UnstableCardTitle, +// UnstableEmpty, +// UnstableEmptyHeader, +// UnstableEmptyTitle +// } from "@app/components/v3"; +// import type { TDashboardDistribution, TDashboardStats } from "@app/hooks/api/certificates"; +// import { certKeyAlgorithmToNameMap } from "@app/hooks/api/certificates/constants"; -import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; +// import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; -type Props = { - stats: TDashboardStats; - onNavigate: (filters: Record) => void; -}; +// type Props = { +// stats: TDashboardStats; +// onNavigate: (filters: Record) => void; +// }; -type ChartKey = "enrollmentMethod" | "algorithm" | "ca"; +// type ChartKey = "enrollmentMethod" | "algorithm" | "ca"; -const DonutChart = ({ - title, - subtitle, - data, - chartKey, - onSegmentClick -}: { - title: string; - subtitle?: string; - data: TDashboardDistribution[]; - chartKey: ChartKey; - onSegmentClick?: (entry: TDashboardDistribution) => void; -}) => { - const nonZeroData = data.filter((d) => d.count > 0); - const total = data.reduce((sum, d) => sum + d.count, 0); - const chartId = title.replace(/\s+/g, "-").toLowerCase(); - const formatLabel = (label: string) => { - if (chartKey === "algorithm") { - return ( - (certKeyAlgorithmToNameMap as Record)[label] ?? label.replace(/_/g, " ") - ); - } - if (chartKey === "enrollmentMethod") return label.toUpperCase(); - return label; - }; +// const DonutChart = ({ +// title, +// subtitle, +// data, +// chartKey, +// onSegmentClick +// }: { +// title: string; +// subtitle?: string; +// data: TDashboardDistribution[]; +// chartKey: ChartKey; +// onSegmentClick?: (entry: TDashboardDistribution) => void; +// }) => { +// const nonZeroData = data.filter((d) => d.count > 0); +// const total = data.reduce((sum, d) => sum + d.count, 0); +// const chartId = title.replace(/\s+/g, "-").toLowerCase(); +// const formatLabel = (label: string) => { +// if (chartKey === "algorithm") { +// return ( +// (certKeyAlgorithmToNameMap as Record)[label] ?? label.replace(/_/g, " ") +// ); +// } +// if (chartKey === "enrollmentMethod") return label.toUpperCase(); +// return label; +// }; - return ( - - - {title} - {subtitle && ( - {subtitle} - )} - - - {nonZeroData.length === 0 ? ( - - - No data available - - - ) : ( -
-
- - - - {nonZeroData.map((entry, idx) => { - const hex = CHART_COLORS_HEX[idx % CHART_COLORS_HEX.length]; - return ( - - - - - ); - })} - - onSegmentClick?.(nonZeroData[idx])} - > - {nonZeroData.map((entry, idx) => ( - - ))} - - - - -
-
-
- {nonZeroData.map((entry, idx) => { - const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; - return ( - - ); - })} -
-
- Total - {total} -
-
-
- )} -
-
- ); -}; +// return ( +// +// +// {title} +// {subtitle && ( +// {subtitle} +// )} +// +// +// {nonZeroData.length === 0 ? ( +// +// +// No data available +// +// +// ) : ( +//
+//
+// +// +// +// {nonZeroData.map((entry, idx) => { +// const hex = CHART_COLORS_HEX[idx % CHART_COLORS_HEX.length]; +// return ( +// +// +// +// +// ); +// })} +// +// onSegmentClick?.(nonZeroData[idx])} +// > +// {nonZeroData.map((entry, idx) => ( +// +// ))} +// +// +// +// +//
+//
+//
+// {nonZeroData.map((entry, idx) => { +// const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; +// return ( +// +// ); +// })} +//
+//
+// Total +// {total} +//
+//
+//
+// )} +//
+//
+// ); +// }; -export const DistributionCharts = ({ stats, onNavigate }: Props) => { - const charts: { - title: string; - subtitle?: string; - chartKey: ChartKey; - data: TDashboardDistribution[]; - }[] = [ - { - title: "By Enrollment Method", - subtitle: "Distribution by enrollment type", - chartKey: "enrollmentMethod", - data: stats.distributions.byEnrollmentMethod - }, - { - title: "By Algorithm", - subtitle: "Distribution by key algorithm", - chartKey: "algorithm", - data: stats.distributions.byAlgorithm - }, - { - title: "By Issuing CA", - subtitle: "Distribution by certificate authority", - chartKey: "ca", - data: stats.distributions.byCA - } - ]; +// export const DistributionCharts = ({ stats, onNavigate }: Props) => { +// const charts: { +// title: string; +// subtitle?: string; +// chartKey: ChartKey; +// data: TDashboardDistribution[]; +// }[] = [ +// { +// title: "By Enrollment Method", +// subtitle: "Distribution by enrollment type", +// chartKey: "enrollmentMethod", +// data: stats.distributions.byEnrollmentMethod +// }, +// { +// title: "By Algorithm", +// subtitle: "Distribution by key algorithm", +// chartKey: "algorithm", +// data: stats.distributions.byAlgorithm +// }, +// { +// title: "By Issuing CA", +// subtitle: "Distribution by certificate authority", +// chartKey: "ca", +// data: stats.distributions.byCA +// } +// ]; - return ( - <> - {charts.map((chart) => ( - { - if (chart.chartKey === "enrollmentMethod") { - onNavigate({ filterEnrollmentType: entry.label }); - } else if (chart.chartKey === "algorithm") { - onNavigate({ filterKeyAlgorithm: entry.label }); - } else if (chart.chartKey === "ca" && entry.id) { - onNavigate({ filterCaId: entry.id }); - } - }} - /> - ))} - - ); -}; +// return ( +// <> +// {charts.map((chart) => ( +// { +// if (chart.chartKey === "enrollmentMethod") { +// onNavigate({ filterEnrollmentType: entry.label }); +// } else if (chart.chartKey === "algorithm") { +// onNavigate({ filterKeyAlgorithm: entry.label }); +// } else if (chart.chartKey === "ca" && entry.id) { +// onNavigate({ filterCaId: entry.id }); +// } +// }} +// /> +// ))} +// +// ); +// }; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx index c9a7544899a..d137620f440 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx @@ -1,180 +1,180 @@ -import { useMemo } from "react"; -import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; +// import { useMemo } from "react"; +// import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, - UnstableCard, - UnstableCardContent, - UnstableCardDescription, - UnstableCardHeader, - UnstableCardTitle, - UnstableEmpty, - UnstableEmptyHeader, - UnstableEmptyTitle -} from "@app/components/v3"; -import type { TExpirationBucket } from "@app/hooks/api/certificates"; +// import { +// Tooltip, +// TooltipContent, +// TooltipTrigger, +// UnstableCard, +// UnstableCardContent, +// UnstableCardDescription, +// UnstableCardHeader, +// UnstableCardTitle, +// UnstableEmpty, +// UnstableEmptyHeader, +// UnstableEmptyTitle +// } from "@app/components/v3"; +// import type { TExpirationBucket } from "@app/hooks/api/certificates"; -import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; +// import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; -type Props = { - buckets: TExpirationBucket[]; - onNavigate: (filters: Record) => void; -}; +// type Props = { +// buckets: TExpirationBucket[]; +// onNavigate: (filters: Record) => void; +// }; -const DONUT_SEGMENTS = [ - { - label: "< 7 days", - sourceBuckets: ["expired", "0-7d"], - filter: { filterExpiresDays: "7" } - }, - { - label: "7-30 days", - sourceBuckets: ["8-30d"], - filter: { filterExpiresAfterDays: "7", filterExpiresDays: "30" } - }, - { - label: "> 30 days", - sourceBuckets: ["31-60d", "61-90d", "90d+"], - filter: { filterExpiresAfterDays: "30" } - } -]; +// const DONUT_SEGMENTS = [ +// { +// label: "< 7 days", +// sourceBuckets: ["expired", "0-7d"], +// filter: { filterExpiresDays: "7" } +// }, +// { +// label: "7-30 days", +// sourceBuckets: ["8-30d"], +// filter: { filterExpiresAfterDays: "7", filterExpiresDays: "30" } +// }, +// { +// label: "> 30 days", +// sourceBuckets: ["31-60d", "61-90d", "90d+"], +// filter: { filterExpiresAfterDays: "30" } +// } +// ]; -export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { - const bucketMap = useMemo(() => { - const map = new Map(); - buckets.forEach((b) => map.set(b.bucket, b.count)); - return map; - }, [buckets]); +// export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { +// const bucketMap = useMemo(() => { +// const map = new Map(); +// buckets.forEach((b) => map.set(b.bucket, b.count)); +// return map; +// }, [buckets]); - const chartData = useMemo( - () => - DONUT_SEGMENTS.map((seg, idx) => ({ - label: seg.label, - count: seg.sourceBuckets.reduce((sum, key) => sum + (bucketMap.get(key) || 0), 0), - color: CHART_COLORS[idx % CHART_COLORS.length], - segIdx: idx, - filter: seg.filter - })), - [bucketMap] - ); +// const chartData = useMemo( +// () => +// DONUT_SEGMENTS.map((seg, idx) => ({ +// label: seg.label, +// count: seg.sourceBuckets.reduce((sum, key) => sum + (bucketMap.get(key) || 0), 0), +// color: CHART_COLORS[idx % CHART_COLORS.length], +// segIdx: idx, +// filter: seg.filter +// })), +// [bucketMap] +// ); - const nonZeroData = chartData.filter((d) => d.count > 0); - const total = chartData.reduce((sum, d) => sum + d.count, 0); +// const nonZeroData = chartData.filter((d) => d.count > 0); +// const total = chartData.reduce((sum, d) => sum + d.count, 0); - return ( - - - - Expiration Timeline - - - Certificates by time to expiry - - - - {nonZeroData.length === 0 ? ( - - - No expiration data - - - ) : ( -
-
- - - - {nonZeroData.map((item) => { - const hex = CHART_COLORS_HEX[item.segIdx % CHART_COLORS_HEX.length]; - return ( - - - - - ); - })} - - { - const item = nonZeroData[idx]; - if (item.filter) onNavigate(item.filter); - }} - > - {nonZeroData.map((item) => ( - - ))} - - - - -
-
-
- {chartData.map((item, idx) => { - const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; - return ( - - ); - })} -
-
- Total - {total} -
-
-
- )} -
-
- ); -}; +// return ( +// +// +// +// Expiration Timeline +// +// +// Certificates by time to expiry +// +// +// +// {nonZeroData.length === 0 ? ( +// +// +// No expiration data +// +// +// ) : ( +//
+//
+// +// +// +// {nonZeroData.map((item) => { +// const hex = CHART_COLORS_HEX[item.segIdx % CHART_COLORS_HEX.length]; +// return ( +// +// +// +// +// ); +// })} +// +// { +// const item = nonZeroData[idx]; +// if (item.filter) onNavigate(item.filter); +// }} +// > +// {nonZeroData.map((item) => ( +// +// ))} +// +// +// +// +//
+//
+//
+// {chartData.map((item, idx) => { +// const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; +// return ( +// +// ); +// })} +//
+//
+// Total +// {total} +//
+//
+//
+// )} +//
+//
+// ); +// }; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx index fd6efdd85c3..3816c884043 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx @@ -1,356 +1,356 @@ -import { useMemo } from "react"; -import { - Bar, - BarChart, - CartesianGrid, - Cell, - Pie, - PieChart, - ResponsiveContainer, - Tooltip as RechartsTooltip, - XAxis, - YAxis -} from "recharts"; +// import { useMemo } from "react"; +// import { +// Bar, +// BarChart, +// CartesianGrid, +// Cell, +// Pie, +// PieChart, +// ResponsiveContainer, +// Tooltip as RechartsTooltip, +// XAxis, +// YAxis +// } from "recharts"; -import { - Tooltip, - TooltipContent, - TooltipTrigger, - UnstableCard, - UnstableCardContent, - UnstableCardHeader, - UnstableCardTitle -} from "@app/components/v3"; -import type { TDashboardStats } from "@app/hooks/api/certificates"; +// import { +// Tooltip, +// TooltipContent, +// TooltipTrigger, +// UnstableCard, +// UnstableCardContent, +// UnstableCardHeader, +// UnstableCardTitle +// } from "@app/components/v3"; +// import type { TDashboardStats } from "@app/hooks/api/certificates"; -import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; +// import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; -type Props = { - stats: TDashboardStats; -}; +// type Props = { +// stats: TDashboardStats; +// }; -const ALL_PHASES = [ - { - date: new Date("2026-03-15"), - maxDays: 200, - description: "Max validity reduced to 200 days" - }, - { - date: new Date("2027-03-15"), - maxDays: 100, - description: "Max validity reduced to 100 days" - }, - { - date: new Date("2029-03-15"), - maxDays: 47, - description: "Max validity reduced to 47 days" - } -]; +// const ALL_PHASES = [ +// { +// date: new Date("2026-03-15"), +// maxDays: 200, +// description: "Max validity reduced to 200 days" +// }, +// { +// date: new Date("2027-03-15"), +// maxDays: 100, +// description: "Max validity reduced to 100 days" +// }, +// { +// date: new Date("2029-03-15"), +// maxDays: 47, +// description: "Max validity reduced to 47 days" +// } +// ]; -const VALIDITY_BUCKET_CONFIG: Record = - { - ">=200d": { - label: "> 200 days", - compliance: "Non-compliant (exceeds current limit)", - color: CHART_COLORS_HEX[7] - }, - "100-199d": { - label: "100\u2013199 days", - compliance: "Compliant until Mar 2027", - color: CHART_COLORS_HEX[1] - }, - "48-99d": { - label: "48\u201399 days", - compliance: "Compliant until Mar 2029", - color: CHART_COLORS_HEX[0] - }, - "<=47d": { - label: "\u2264 47 days", - compliance: "Fully compliant", - color: CHART_COLORS_HEX[5] - } - }; +// const VALIDITY_BUCKET_CONFIG: Record = +// { +// ">=200d": { +// label: "> 200 days", +// compliance: "Non-compliant (exceeds current limit)", +// color: CHART_COLORS_HEX[7] +// }, +// "100-199d": { +// label: "100\u2013199 days", +// compliance: "Compliant until Mar 2027", +// color: CHART_COLORS_HEX[1] +// }, +// "48-99d": { +// label: "48\u201399 days", +// compliance: "Compliant until Mar 2029", +// color: CHART_COLORS_HEX[0] +// }, +// "<=47d": { +// label: "\u2264 47 days", +// compliance: "Fully compliant", +// color: CHART_COLORS_HEX[5] +// } +// }; -const BUCKET_ORDER = [">=200d", "100-199d", "48-99d", "<=47d"]; +// const BUCKET_ORDER = [">=200d", "100-199d", "48-99d", "<=47d"]; -const MandateCountdown = () => { - const now = Date.now(); - const futurePhases = ALL_PHASES.filter( - (p) => Math.ceil((p.date.getTime() - now) / (1000 * 60 * 60 * 24)) > 0 - ); +// const MandateCountdown = () => { +// const now = Date.now(); +// const futurePhases = ALL_PHASES.filter( +// (p) => Math.ceil((p.date.getTime() - now) / (1000 * 60 * 60 * 24)) > 0 +// ); - return ( - - - - CA/B Forum Mandate Deadlines - -

- Upcoming reductions in maximum TLS certificate validity -

-
- -
- {futurePhases.map((phase) => { - const daysUntil = Math.ceil((phase.date.getTime() - now) / (1000 * 60 * 60 * 24)); - const isUrgent = daysUntil <= 90; +// return ( +// +// +// +// CA/B Forum Mandate Deadlines +// +//

+// Upcoming reductions in maximum TLS certificate validity +//

+//
+// +//
+// {futurePhases.map((phase) => { +// const daysUntil = Math.ceil((phase.date.getTime() - now) / (1000 * 60 * 60 * 24)); +// const isUrgent = daysUntil <= 90; - const [, colorWarning, , , , colorSuccess] = CHART_COLORS; - const barColor = isUrgent ? colorWarning : colorSuccess; +// const [, colorWarning, , , , colorSuccess] = CHART_COLORS; +// const barColor = isUrgent ? colorWarning : colorSuccess; - return ( -
-
-
-
- {daysUntil} - days -
-

{phase.description}

-
-

- {phase.date.toLocaleDateString("en-US", { - month: "short", - day: "numeric", - year: "numeric" - })} -

-
- ); - })} -
- - - ); -}; +// return ( +//
+//
+//
+//
+// {daysUntil} +// days +//
+//

{phase.description}

+//
+//

+// {phase.date.toLocaleDateString("en-US", { +// month: "short", +// day: "numeric", +// year: "numeric" +// })} +//

+//
+// ); +// })} +//
+// +// +// ); +// }; -const ProjectedRenewals = ({ activeCerts }: { activeCerts: number }) => { - const data = useMemo(() => { - if (activeCerts === 0) return []; - return [ - { label: "Current", renewals: activeCerts, color: CHART_COLORS_HEX[0] }, - { - label: "200-day", - renewals: Math.ceil((365 / 200) * activeCerts), - color: CHART_COLORS_HEX[1] - }, - { - label: "100-day", - renewals: Math.ceil((365 / 100) * activeCerts), - color: CHART_COLORS_HEX[6] - }, - { - label: "47-day", - renewals: Math.ceil((365 / 47) * activeCerts), - color: CHART_COLORS_HEX[7] - } - ]; - }, [activeCerts]); +// const ProjectedRenewals = ({ activeCerts }: { activeCerts: number }) => { +// const data = useMemo(() => { +// if (activeCerts === 0) return []; +// return [ +// { label: "Current", renewals: activeCerts, color: CHART_COLORS_HEX[0] }, +// { +// label: "200-day", +// renewals: Math.ceil((365 / 200) * activeCerts), +// color: CHART_COLORS_HEX[1] +// }, +// { +// label: "100-day", +// renewals: Math.ceil((365 / 100) * activeCerts), +// color: CHART_COLORS_HEX[6] +// }, +// { +// label: "47-day", +// renewals: Math.ceil((365 / 47) * activeCerts), +// color: CHART_COLORS_HEX[7] +// } +// ]; +// }, [activeCerts]); - if (activeCerts === 0) return null; +// if (activeCerts === 0) return null; - return ( - - - - Projected Annual Renewals - -

- Estimated yearly renewal volume under each validity regime -

-
- - - - - - - [Number(value).toLocaleString(), "Renewals/year"]} - cursor={{ fill: "none" }} - /> - - {data.map((entry) => ( - - - - - ))} - - - {data.map((entry) => ( - - ))} - - - -

- Based on {activeCerts.toLocaleString()} active certificate{activeCerts !== 1 ? "s" : ""} -

-
-
- ); -}; +// return ( +// +// +// +// Projected Annual Renewals +// +//

+// Estimated yearly renewal volume under each validity regime +//

+//
+// +// +// +// +// +// +// [Number(value).toLocaleString(), "Renewals/year"]} +// cursor={{ fill: "none" }} +// /> +// +// {data.map((entry) => ( +// +// +// +// +// ))} +// +// +// {data.map((entry) => ( +// +// ))} +// +// +// +//

+// Based on {activeCerts.toLocaleString()} active certificate{activeCerts !== 1 ? "s" : ""} +//

+//
+//
+// ); +// }; -const ValidityDistribution = ({ buckets }: { buckets: TDashboardStats["validityBuckets"] }) => { - const chartData = useMemo(() => { - if (!buckets) return []; - const bucketMap = new Map(buckets.map((b) => [b.bucket, b.count])); - return BUCKET_ORDER.map((key, idx) => ({ - bucket: key, - count: bucketMap.get(key) || 0, - segIdx: idx, - ...VALIDITY_BUCKET_CONFIG[key] - })).filter((d) => d.count > 0); - }, [buckets]); +// const ValidityDistribution = ({ buckets }: { buckets: TDashboardStats["validityBuckets"] }) => { +// const chartData = useMemo(() => { +// if (!buckets) return []; +// const bucketMap = new Map(buckets.map((b) => [b.bucket, b.count])); +// return BUCKET_ORDER.map((key, idx) => ({ +// bucket: key, +// count: bucketMap.get(key) || 0, +// segIdx: idx, +// ...VALIDITY_BUCKET_CONFIG[key] +// })).filter((d) => d.count > 0); +// }, [buckets]); - const total = chartData.reduce((sum, d) => sum + d.count, 0); +// const total = chartData.reduce((sum, d) => sum + d.count, 0); - if (total === 0) return null; +// if (total === 0) return null; - return ( - - - - Certificates by Validity Period - -

- Active certificates grouped by issuance-to-expiry duration -

-
- -
-
- - - - {chartData.map((item) => ( - - - - - ))} - - - {chartData.map((item) => ( - - ))} - - - - -
-
-
- {chartData.map((item) => { - const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; - return ( -
- - - - - {item.label} - - - {item.compliance} - - {pct}% - - {item.count} - -
- ); - })} -
-
- Total - {total} -
-
-
-
-
- ); -}; +// return ( +// +// +// +// Certificates by Validity Period +// +//

+// Active certificates grouped by issuance-to-expiry duration +//

+//
+// +//
+//
+// +// +// +// {chartData.map((item) => ( +// +// +// +// +// ))} +// +// +// {chartData.map((item) => ( +// +// ))} +// +// +// +// +//
+//
+//
+// {chartData.map((item) => { +// const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; +// return ( +//
+// +// +// +// +// {item.label} +// +// +// {item.compliance} +// +// {pct}% +// +// {item.count} +// +//
+// ); +// })} +//
+//
+// Total +// {total} +//
+//
+//
+//
+//
+// ); +// }; -export const ValidityReadinessSection = ({ stats }: Props) => { - const tlsActiveCerts = useMemo( - () => (stats.validityBuckets || []).reduce((sum, b) => sum + b.count, 0), - [stats.validityBuckets] - ); +// export const ValidityReadinessSection = ({ stats }: Props) => { +// const tlsActiveCerts = useMemo( +// () => (stats.validityBuckets || []).reduce((sum, b) => sum + b.count, 0), +// [stats.validityBuckets] +// ); - if (tlsActiveCerts === 0) return null; +// if (tlsActiveCerts === 0) return null; - return ( -
-

47-Day Validity Readiness

-
- - - -
-
- ); -}; +// return ( +//
+//

47-Day Validity Readiness

+//
+// +// +// +//
+//
+// ); +// }; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx index 88efe0c3fb6..7f4458dd25e 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx @@ -1,6 +1,6 @@ -export { ActivityTrend } from "./ActivityTrend"; -export { CodeSigningSection } from "./CodeSigningSection"; -export { DistributionCharts } from "./DistributionCharts"; -export { ExpirationTimeline } from "./ExpirationTimeline"; +// export { ActivityTrend } from "./ActivityTrend"; +// export { CodeSigningSection } from "./CodeSigningSection"; +// export { DistributionCharts } from "./DistributionCharts"; +// export { ExpirationTimeline } from "./ExpirationTimeline"; export { KpiCards } from "./KpiCards"; -export { ValidityReadinessSection } from "./ValidityReadinessSection"; +// export { ValidityReadinessSection } from "./ValidityReadinessSection"; From 28b0e19eee8a3f7786c05199fdbf871ad337fffc Mon Sep 17 00:00:00 2001 From: Scott Wilson Date: Thu, 16 Apr 2026 18:02:08 -0700 Subject: [PATCH 200/562] fix: add back recharts, pki dashboard and manually chunk rechart dependencies --- frontend/package-lock.json | 314 +++++++- frontend/package.json | 1 + .../DashboardPage/DashboardPage.tsx | 181 +++-- .../components/ActivityTrend.tsx | 258 +++---- .../components/CodeSigningSection.tsx | 488 ++++++------- .../components/DistributionCharts.tsx | 408 +++++------ .../components/ExpirationTimeline.tsx | 344 ++++----- .../components/ValidityReadinessSection.tsx | 672 +++++++++--------- .../DashboardPage/components/index.tsx | 10 +- frontend/vite.config.ts | 16 +- 10 files changed, 1508 insertions(+), 1184 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 1a65835ca0a..a981676478c 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -109,6 +109,7 @@ "react-markdown": "^10.0.1", "react-select": "^5.9.0", "react-toastify": "^10.0.6", + "recharts": "^3.8.1", "redaxios": "^0.5.1", "rehype-raw": "^7.0.0", "sonner": "^2.0.7", @@ -4999,6 +5000,42 @@ "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", "license": "MIT" }, + "node_modules/@reduxjs/toolkit": { + "version": "2.11.2", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz", + "integrity": "sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==", + "license": "MIT", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@standard-schema/utils": "^0.3.0", + "immer": "^11.0.0", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18 || ^19", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, + "node_modules/@reduxjs/toolkit/node_modules/immer": { + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/immer/-/immer-11.1.4.tgz", + "integrity": "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/@rollup/plugin-inject": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", @@ -5481,6 +5518,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, + "node_modules/@standard-schema/utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@standard-schema/utils/-/utils-0.3.0.tgz", + "integrity": "sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==", + "license": "MIT" + }, "node_modules/@storybook/addon-a11y": { "version": "9.1.13", "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-9.1.13.tgz", @@ -6789,6 +6838,12 @@ "assertion-error": "^2.0.1" } }, + "node_modules/@types/d3-array": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", + "license": "MIT" + }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", @@ -6804,6 +6859,12 @@ "@types/d3-selection": "*" } }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" + }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", @@ -6813,12 +6874,48 @@ "@types/d3-color": "*" } }, + "node_modules/@types/d3-path": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", + "license": "MIT" + }, + "node_modules/@types/d3-scale": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", + "license": "MIT", + "dependencies": { + "@types/d3-time": "*" + } + }, "node_modules/@types/d3-selection": { "version": "3.0.11", "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", "license": "MIT" }, + "node_modules/@types/d3-shape": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz", + "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==", + "license": "MIT", + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" + }, "node_modules/@types/d3-transition": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", @@ -7045,6 +7142,12 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.6.tgz", + "integrity": "sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==", + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.34.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.34.0.tgz", @@ -9388,6 +9491,18 @@ "url": "https://polar.sh/cva" } }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-color": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", @@ -9428,6 +9543,15 @@ "node": ">=12" } }, + "node_modules/d3-format": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz", + "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/d3-interpolate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", @@ -9440,6 +9564,31 @@ "node": ">=12" } }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-selection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", @@ -9449,6 +9598,42 @@ "node": ">=12" } }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-timer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", @@ -9597,6 +9782,12 @@ "node": ">=0.10.0" } }, + "node_modules/decimal.js-light": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", + "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", + "license": "MIT" + }, "node_modules/decode-named-character-reference": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", @@ -10079,6 +10270,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-toolkit": { + "version": "1.45.1", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.45.1.tgz", + "integrity": "sha512-/jhoOj/Fx+A+IIyDNOvO3TItGmlMKhtX8ISAHKE90c4b/k1tqaqEZ+uUqfpU8DMnW5cgNJv606zS55jGvza0Xw==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, "node_modules/esbuild": { "version": "0.25.11", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", @@ -10953,6 +11154,12 @@ "node": ">=0.10.0" } }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", @@ -11957,8 +12164,6 @@ "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", "license": "MIT", - "optional": true, - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -12039,6 +12244,15 @@ "node": ">= 0.4" } }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "node_modules/iobuffer": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz", @@ -15296,6 +15510,29 @@ "react": ">=18" } }, + "node_modules/react-redux": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", + "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.6", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25 || ^19", + "react": "^18.0 || ^19", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-remove-scroll": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", @@ -15494,6 +15731,36 @@ "node": ">=0.10.0" } }, + "node_modules/recharts": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.8.1.tgz", + "integrity": "sha512-mwzmO1s9sFL0TduUpwndxCUNoXsBw3u3E/0+A+cLcrSfQitSG62L32N69GhqUrrT5qKcAE3pCGVINC6pqkBBQg==", + "license": "MIT", + "workspaces": [ + "www" + ], + "dependencies": { + "@reduxjs/toolkit": "^1.9.0 || 2.x.x", + "clsx": "^2.1.1", + "decimal.js-light": "^2.5.1", + "es-toolkit": "^1.39.3", + "eventemitter3": "^5.0.1", + "immer": "^10.1.1", + "react-redux": "8.x.x || 9.x.x", + "reselect": "5.1.1", + "tiny-invariant": "^1.3.3", + "use-sync-external-store": "^1.2.2", + "victory-vendor": "^37.0.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-is": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/redaxios": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/redaxios/-/redaxios-0.5.1.tgz", @@ -15529,6 +15796,21 @@ "node": ">=8" } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", @@ -15643,6 +15925,12 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "license": "ISC" }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -17378,6 +17666,28 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/victory-vendor": { + "version": "37.3.6", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-37.3.6.tgz", + "integrity": "sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, "node_modules/vite": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index d02a2468f91..6c0f98a6fc2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -137,6 +137,7 @@ "react-markdown": "^10.0.1", "react-select": "^5.9.0", "react-toastify": "^10.0.6", + "recharts": "^3.8.1", "redaxios": "^0.5.1", "rehype-raw": "^7.0.0", "sonner": "^2.0.7", diff --git a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx index fefb121749c..ddd55f19adf 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/DashboardPage.tsx @@ -1,96 +1,95 @@ -// import { useCallback, useState } from "react"; -// import { Helmet } from "react-helmet"; -// import { useTranslation } from "react-i18next"; -// import { useNavigate } from "@tanstack/react-router"; +import { useCallback, useState } from "react"; +import { Helmet } from "react-helmet"; +import { useTranslation } from "react-i18next"; +import { useNavigate } from "@tanstack/react-router"; -// import { ProjectPermissionCan } from "@app/components/permissions"; -// import { PageHeader } from "@app/components/v2"; -// import { UnstablePageLoader } from "@app/components/v3"; -// import { useProject } from "@app/context"; -// import { -// ProjectPermissionCertificateActions, -// ProjectPermissionSub -// } from "@app/context/ProjectPermissionContext/types"; -// import { useGetCertActivityTrend, useGetCertDashboardStats } from "@app/hooks/api/certificates"; -// import { ProjectType } from "@app/hooks/api/projects/types"; +import { ProjectPermissionCan } from "@app/components/permissions"; +import { PageHeader } from "@app/components/v2"; +import { UnstablePageLoader } from "@app/components/v3"; +import { useProject } from "@app/context"; +import { + ProjectPermissionCertificateActions, + ProjectPermissionSub +} from "@app/context/ProjectPermissionContext/types"; +import { useGetCertActivityTrend, useGetCertDashboardStats } from "@app/hooks/api/certificates"; +import { ProjectType } from "@app/hooks/api/projects/types"; -// import { -// // ActivityTrend, -// // CodeSigningSection, -// // DistributionCharts, -// // ExpirationTimeline, -// KpiCards -// // ValidityReadinessSection -// } from "./components"; +import { + ActivityTrend, + CodeSigningSection, + DistributionCharts, + ExpirationTimeline, + KpiCards, + ValidityReadinessSection +} from "./components"; export const DashboardPage = () => { - return null; - // const { t } = useTranslation(); - // const { currentProject } = useProject(); - // const navigate = useNavigate(); - // const [trendRange, setTrendRange] = useState("30d"); - // const { data: stats, isPending: isStatsLoading } = useGetCertDashboardStats( - // currentProject?.id || "" - // ); - // const { data: trendData } = useGetCertActivityTrend(currentProject?.id || "", trendRange); - // const navigateToInventory = useCallback( - // (filters: Record) => { - // navigate({ - // to: "/organizations/$orgId/projects/cert-manager/$projectId/policies", - // params: { - // orgId: currentProject?.orgId || "", - // projectId: currentProject?.id || "" - // }, - // // eslint-disable-next-line @typescript-eslint/no-explicit-any - // search: { selectedTab: "certificates", ...filters } as any - // }); - // }, - // [navigate, currentProject] - // ); - // if (!currentProject) { - // return ; - // } - // return ( - //
- // - // {t("common.head-title", { title: "Certificate Dashboard" })} - // - //
- //
- // - // - // {isStatsLoading || !stats ? ( - // - // ) : ( - //
- // - //
- // - // - //
- // - // - // - //
- // )} - //
- //
- //
- //
- // ); + const { t } = useTranslation(); + const { currentProject } = useProject(); + const navigate = useNavigate(); + const [trendRange, setTrendRange] = useState("30d"); + const { data: stats, isPending: isStatsLoading } = useGetCertDashboardStats( + currentProject?.id || "" + ); + const { data: trendData } = useGetCertActivityTrend(currentProject?.id || "", trendRange); + const navigateToInventory = useCallback( + (filters: Record) => { + navigate({ + to: "/organizations/$orgId/projects/cert-manager/$projectId/policies", + params: { + orgId: currentProject?.orgId || "", + projectId: currentProject?.id || "" + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + search: { selectedTab: "certificates", ...filters } as any + }); + }, + [navigate, currentProject] + ); + if (!currentProject) { + return ; + } + return ( +
+ + {t("common.head-title", { title: "Certificate Dashboard" })} + +
+
+ + + {isStatsLoading || !stats ? ( + + ) : ( +
+ +
+ + +
+ + + +
+ )} +
+
+
+
+ ); }; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx index 00382860bef..2facd20ccd2 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ActivityTrend.tsx @@ -1,135 +1,135 @@ -// // import { -// // CartesianGrid, -// // Legend, -// // Line, -// // LineChart, -// // ResponsiveContainer, -// // Tooltip, -// // XAxis, -// // YAxis -// // } from "recharts"; +import { + CartesianGrid, + Legend, + Line, + LineChart, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis +} from "recharts"; -// import { -// Button, -// UnstableCard, -// UnstableCardAction, -// UnstableCardContent, -// UnstableCardHeader, -// UnstableCardTitle, -// UnstableEmpty, -// UnstableEmptyHeader, -// UnstableEmptyTitle -// } from "@app/components/v3"; -// import type { TActivityTrendPoint } from "@app/hooks/api/certificates"; +import { + Button, + UnstableCard, + UnstableCardAction, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import type { TActivityTrendPoint } from "@app/hooks/api/certificates"; -// import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; +import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; -// type Props = { -// data: TActivityTrendPoint[]; -// onRangeChange: (range: string) => void; -// currentRange: string; -// }; +type Props = { + data: TActivityTrendPoint[]; + onRangeChange: (range: string) => void; + currentRange: string; +}; -// const SERIES_KEYS = ["issued", "expired", "revoked", "renewed"]; +const SERIES_KEYS = ["issued", "expired", "revoked", "renewed"]; -// const ranges = [ -// { label: "7D", value: "7d" }, -// { label: "30D", value: "30d" }, -// { label: "6M", value: "6m" } -// ]; +const ranges = [ + { label: "7D", value: "7d" }, + { label: "30D", value: "30d" }, + { label: "6M", value: "6m" } +]; -// export const ActivityTrend = ({ data, onRangeChange, currentRange }: Props) => { -// const hasAnyData = data.some( -// (d) => d.issued > 0 || d.expired > 0 || d.revoked > 0 || d.renewed > 0 -// ); -// return ( -// -// -// Certificate Activity Trend -// -//
-// {ranges.map((r) => ( -// -// ))} -//
-//
-//
-// -// {!hasAnyData ? ( -// -// -// No activity in this period -// -// -// ) : ( -// -// -// -// -// -// -// -// -// -// -// -// -// -// )} -// -//
-// ); -// }; +export const ActivityTrend = ({ data, onRangeChange, currentRange }: Props) => { + const hasAnyData = data.some( + (d) => d.issued > 0 || d.expired > 0 || d.revoked > 0 || d.renewed > 0 + ); + return ( + + + Certificate Activity Trend + +
+ {ranges.map((r) => ( + + ))} +
+
+
+ + {!hasAnyData ? ( + + + No activity in this period + + + ) : ( + + + + + + + + + + + + + + )} + +
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx index cb02606de4f..a71d3bffa4c 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/CodeSigningSection.tsx @@ -1,244 +1,244 @@ -// import { useMemo, useState } from "react"; -// import { format } from "date-fns"; -// import { -// CartesianGrid, -// Legend, -// Line, -// LineChart, -// ResponsiveContainer, -// Tooltip, -// XAxis, -// YAxis -// } from "recharts"; - -// import { -// Button, -// Select, -// SelectContent, -// SelectItem, -// SelectTrigger, -// SelectValue, -// UnstableCard, -// UnstableCardContent, -// UnstableCardHeader, -// UnstableCardTitle, -// UnstableEmpty, -// UnstableEmptyHeader, -// UnstableEmptyTitle -// } from "@app/components/v3"; -// import { -// SigningOperationStatus, -// TSigningOperation, -// useListSigners, -// useListSigningOperations -// } from "@app/hooks/api/signers"; - -// import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; - -// type Props = { -// projectId: string; -// }; - -// const ALL_SIGNERS = "__all__"; - -// const ranges = [ -// { label: "7D", value: "7d", days: 7 }, -// { label: "30D", value: "30d", days: 30 }, -// { label: "6M", value: "6m", days: 180 } -// ]; - -// const buildTrendData = (operations: TSigningOperation[], daysBack: number) => { -// const useDaily = daysBack <= 30; -// const formatKey = useDaily ? "yyyy-MM-dd" : "yyyy-MM"; -// const bucketMap = new Map(); - -// operations.forEach((op) => { -// const key = format(new Date(op.createdAt), formatKey); -// const entry = bucketMap.get(key) || { success: 0, failed: 0 }; -// if (op.status === SigningOperationStatus.Success) { -// entry.success += 1; -// } else { -// entry.failed += 1; -// } -// bucketMap.set(key, entry); -// }); - -// const now = new Date(); -// const cursor = new Date(); -// cursor.setDate(cursor.getDate() - daysBack); -// cursor.setHours(0, 0, 0, 0); -// if (!useDaily) cursor.setDate(1); - -// const result: { period: string; success: number; failed: number }[] = []; -// while (cursor <= now) { -// const key = format(cursor, formatKey); -// const entry = bucketMap.get(key) || { success: 0, failed: 0 }; -// result.push({ period: key, ...entry }); -// if (useDaily) { -// cursor.setDate(cursor.getDate() + 1); -// } else { -// cursor.setMonth(cursor.getMonth() + 1); -// } -// } -// return result; -// }; - -// export const CodeSigningSection = ({ projectId }: Props) => { -// const { data: signersData } = useListSigners({ projectId, limit: 100 }); -// const signers = signersData?.signers || []; - -// const [selectedSignerId, setSelectedSignerId] = useState(ALL_SIGNERS); -// const [currentRange, setCurrentRange] = useState("30d"); -// const activeDays = ranges.find((r) => r.value === currentRange)?.days || 30; - -// const signerIds = signers.map((s) => s.id); -// const firstSignerId = signerIds[0] || ""; -// const secondSignerId = signerIds[1] || ""; -// const thirdSignerId = signerIds[2] || ""; -// const fourthSignerId = signerIds[3] || ""; -// const fifthSignerId = signerIds[4] || ""; - -// const { data: ops1 } = useListSigningOperations({ signerId: firstSignerId, limit: 100 }); -// const { data: ops2 } = useListSigningOperations({ signerId: secondSignerId, limit: 100 }); -// const { data: ops3 } = useListSigningOperations({ signerId: thirdSignerId, limit: 100 }); -// const { data: ops4 } = useListSigningOperations({ signerId: fourthSignerId, limit: 100 }); -// const { data: ops5 } = useListSigningOperations({ signerId: fifthSignerId, limit: 100 }); - -// const allOperationsMap = useMemo(() => { -// const map = new Map(); -// const queryResults = [ -// { id: firstSignerId, data: ops1 }, -// { id: secondSignerId, data: ops2 }, -// { id: thirdSignerId, data: ops3 }, -// { id: fourthSignerId, data: ops4 }, -// { id: fifthSignerId, data: ops5 } -// ]; -// queryResults.forEach(({ id, data }) => { -// if (id && data?.operations) { -// map.set(id, data.operations); -// } -// }); -// return map; -// }, [ -// firstSignerId, -// secondSignerId, -// thirdSignerId, -// fourthSignerId, -// fifthSignerId, -// ops1, -// ops2, -// ops3, -// ops4, -// ops5 -// ]); - -// const filteredOperations = useMemo(() => { -// let ops: TSigningOperation[]; -// if (selectedSignerId === ALL_SIGNERS) { -// ops = Array.from(allOperationsMap.values()).flat(); -// } else { -// ops = allOperationsMap.get(selectedSignerId) || []; -// } -// const cutoffDate = new Date(); -// cutoffDate.setDate(cutoffDate.getDate() - activeDays); -// return ops -// .filter((op) => new Date(op.createdAt) >= cutoffDate) -// .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); -// }, [selectedSignerId, allOperationsMap, activeDays]); - -// const trendData = useMemo( -// () => buildTrendData(filteredOperations, activeDays), -// [filteredOperations, activeDays] -// ); - -// if (signers.length === 0) { -// return null; -// } - -// return ( -// -// -// Code Signing Activity -//
-//
-// {ranges.map((r) => ( -// -// ))} -//
-// -//
-//
-// -// {trendData.length === 0 ? ( -// -// -// No signing operations yet -// -// -// ) : ( -// -// -// -// -// -// -// -// -// -// -// -// )} -// -//
-// ); -// }; +import { useMemo, useState } from "react"; +import { format } from "date-fns"; +import { + CartesianGrid, + Legend, + Line, + LineChart, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis +} from "recharts"; + +import { + Button, + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, + UnstableCard, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import { + SigningOperationStatus, + TSigningOperation, + useListSigners, + useListSigningOperations +} from "@app/hooks/api/signers"; + +import { formatTickLabel, legendFormatter, nonZeroDot, TREND_COLORS } from "./chart-theme"; + +type Props = { + projectId: string; +}; + +const ALL_SIGNERS = "__all__"; + +const ranges = [ + { label: "7D", value: "7d", days: 7 }, + { label: "30D", value: "30d", days: 30 }, + { label: "6M", value: "6m", days: 180 } +]; + +const buildTrendData = (operations: TSigningOperation[], daysBack: number) => { + const useDaily = daysBack <= 30; + const formatKey = useDaily ? "yyyy-MM-dd" : "yyyy-MM"; + const bucketMap = new Map(); + + operations.forEach((op) => { + const key = format(new Date(op.createdAt), formatKey); + const entry = bucketMap.get(key) || { success: 0, failed: 0 }; + if (op.status === SigningOperationStatus.Success) { + entry.success += 1; + } else { + entry.failed += 1; + } + bucketMap.set(key, entry); + }); + + const now = new Date(); + const cursor = new Date(); + cursor.setDate(cursor.getDate() - daysBack); + cursor.setHours(0, 0, 0, 0); + if (!useDaily) cursor.setDate(1); + + const result: { period: string; success: number; failed: number }[] = []; + while (cursor <= now) { + const key = format(cursor, formatKey); + const entry = bucketMap.get(key) || { success: 0, failed: 0 }; + result.push({ period: key, ...entry }); + if (useDaily) { + cursor.setDate(cursor.getDate() + 1); + } else { + cursor.setMonth(cursor.getMonth() + 1); + } + } + return result; +}; + +export const CodeSigningSection = ({ projectId }: Props) => { + const { data: signersData } = useListSigners({ projectId, limit: 100 }); + const signers = signersData?.signers || []; + + const [selectedSignerId, setSelectedSignerId] = useState(ALL_SIGNERS); + const [currentRange, setCurrentRange] = useState("30d"); + const activeDays = ranges.find((r) => r.value === currentRange)?.days || 30; + + const signerIds = signers.map((s) => s.id); + const firstSignerId = signerIds[0] || ""; + const secondSignerId = signerIds[1] || ""; + const thirdSignerId = signerIds[2] || ""; + const fourthSignerId = signerIds[3] || ""; + const fifthSignerId = signerIds[4] || ""; + + const { data: ops1 } = useListSigningOperations({ signerId: firstSignerId, limit: 100 }); + const { data: ops2 } = useListSigningOperations({ signerId: secondSignerId, limit: 100 }); + const { data: ops3 } = useListSigningOperations({ signerId: thirdSignerId, limit: 100 }); + const { data: ops4 } = useListSigningOperations({ signerId: fourthSignerId, limit: 100 }); + const { data: ops5 } = useListSigningOperations({ signerId: fifthSignerId, limit: 100 }); + + const allOperationsMap = useMemo(() => { + const map = new Map(); + const queryResults = [ + { id: firstSignerId, data: ops1 }, + { id: secondSignerId, data: ops2 }, + { id: thirdSignerId, data: ops3 }, + { id: fourthSignerId, data: ops4 }, + { id: fifthSignerId, data: ops5 } + ]; + queryResults.forEach(({ id, data }) => { + if (id && data?.operations) { + map.set(id, data.operations); + } + }); + return map; + }, [ + firstSignerId, + secondSignerId, + thirdSignerId, + fourthSignerId, + fifthSignerId, + ops1, + ops2, + ops3, + ops4, + ops5 + ]); + + const filteredOperations = useMemo(() => { + let ops: TSigningOperation[]; + if (selectedSignerId === ALL_SIGNERS) { + ops = Array.from(allOperationsMap.values()).flat(); + } else { + ops = allOperationsMap.get(selectedSignerId) || []; + } + const cutoffDate = new Date(); + cutoffDate.setDate(cutoffDate.getDate() - activeDays); + return ops + .filter((op) => new Date(op.createdAt) >= cutoffDate) + .sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()); + }, [selectedSignerId, allOperationsMap, activeDays]); + + const trendData = useMemo( + () => buildTrendData(filteredOperations, activeDays), + [filteredOperations, activeDays] + ); + + if (signers.length === 0) { + return null; + } + + return ( + + + Code Signing Activity +
+
+ {ranges.map((r) => ( + + ))} +
+ +
+
+ + {trendData.length === 0 ? ( + + + No signing operations yet + + + ) : ( + + + + + + + + + + + + )} + +
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx index 5b26c0f4652..dff0b4f6f6b 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/DistributionCharts.tsx @@ -1,212 +1,212 @@ -// import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; +import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; -// import { -// Tooltip, -// TooltipContent, -// TooltipTrigger, -// UnstableCard, -// UnstableCardContent, -// UnstableCardDescription, -// UnstableCardHeader, -// UnstableCardTitle, -// UnstableEmpty, -// UnstableEmptyHeader, -// UnstableEmptyTitle -// } from "@app/components/v3"; -// import type { TDashboardDistribution, TDashboardStats } from "@app/hooks/api/certificates"; -// import { certKeyAlgorithmToNameMap } from "@app/hooks/api/certificates/constants"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import type { TDashboardDistribution, TDashboardStats } from "@app/hooks/api/certificates"; +import { certKeyAlgorithmToNameMap } from "@app/hooks/api/certificates/constants"; -// import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; +import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; -// type Props = { -// stats: TDashboardStats; -// onNavigate: (filters: Record) => void; -// }; +type Props = { + stats: TDashboardStats; + onNavigate: (filters: Record) => void; +}; -// type ChartKey = "enrollmentMethod" | "algorithm" | "ca"; +type ChartKey = "enrollmentMethod" | "algorithm" | "ca"; -// const DonutChart = ({ -// title, -// subtitle, -// data, -// chartKey, -// onSegmentClick -// }: { -// title: string; -// subtitle?: string; -// data: TDashboardDistribution[]; -// chartKey: ChartKey; -// onSegmentClick?: (entry: TDashboardDistribution) => void; -// }) => { -// const nonZeroData = data.filter((d) => d.count > 0); -// const total = data.reduce((sum, d) => sum + d.count, 0); -// const chartId = title.replace(/\s+/g, "-").toLowerCase(); -// const formatLabel = (label: string) => { -// if (chartKey === "algorithm") { -// return ( -// (certKeyAlgorithmToNameMap as Record)[label] ?? label.replace(/_/g, " ") -// ); -// } -// if (chartKey === "enrollmentMethod") return label.toUpperCase(); -// return label; -// }; +const DonutChart = ({ + title, + subtitle, + data, + chartKey, + onSegmentClick +}: { + title: string; + subtitle?: string; + data: TDashboardDistribution[]; + chartKey: ChartKey; + onSegmentClick?: (entry: TDashboardDistribution) => void; +}) => { + const nonZeroData = data.filter((d) => d.count > 0); + const total = data.reduce((sum, d) => sum + d.count, 0); + const chartId = title.replace(/\s+/g, "-").toLowerCase(); + const formatLabel = (label: string) => { + if (chartKey === "algorithm") { + return ( + (certKeyAlgorithmToNameMap as Record)[label] ?? label.replace(/_/g, " ") + ); + } + if (chartKey === "enrollmentMethod") return label.toUpperCase(); + return label; + }; -// return ( -// -// -// {title} -// {subtitle && ( -// {subtitle} -// )} -// -// -// {nonZeroData.length === 0 ? ( -// -// -// No data available -// -// -// ) : ( -//
-//
-// -// -// -// {nonZeroData.map((entry, idx) => { -// const hex = CHART_COLORS_HEX[idx % CHART_COLORS_HEX.length]; -// return ( -// -// -// -// -// ); -// })} -// -// onSegmentClick?.(nonZeroData[idx])} -// > -// {nonZeroData.map((entry, idx) => ( -// -// ))} -// -// -// -// -//
-//
-//
-// {nonZeroData.map((entry, idx) => { -// const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; -// return ( -// -// ); -// })} -//
-//
-// Total -// {total} -//
-//
-//
-// )} -//
-//
-// ); -// }; + return ( + + + {title} + {subtitle && ( + {subtitle} + )} + + + {nonZeroData.length === 0 ? ( + + + No data available + + + ) : ( +
+
+ + + + {nonZeroData.map((entry, idx) => { + const hex = CHART_COLORS_HEX[idx % CHART_COLORS_HEX.length]; + return ( + + + + + ); + })} + + onSegmentClick?.(nonZeroData[idx])} + > + {nonZeroData.map((entry, idx) => ( + + ))} + + + + +
+
+
+ {nonZeroData.map((entry, idx) => { + const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; + return ( + + ); + })} +
+
+ Total + {total} +
+
+
+ )} +
+
+ ); +}; -// export const DistributionCharts = ({ stats, onNavigate }: Props) => { -// const charts: { -// title: string; -// subtitle?: string; -// chartKey: ChartKey; -// data: TDashboardDistribution[]; -// }[] = [ -// { -// title: "By Enrollment Method", -// subtitle: "Distribution by enrollment type", -// chartKey: "enrollmentMethod", -// data: stats.distributions.byEnrollmentMethod -// }, -// { -// title: "By Algorithm", -// subtitle: "Distribution by key algorithm", -// chartKey: "algorithm", -// data: stats.distributions.byAlgorithm -// }, -// { -// title: "By Issuing CA", -// subtitle: "Distribution by certificate authority", -// chartKey: "ca", -// data: stats.distributions.byCA -// } -// ]; +export const DistributionCharts = ({ stats, onNavigate }: Props) => { + const charts: { + title: string; + subtitle?: string; + chartKey: ChartKey; + data: TDashboardDistribution[]; + }[] = [ + { + title: "By Enrollment Method", + subtitle: "Distribution by enrollment type", + chartKey: "enrollmentMethod", + data: stats.distributions.byEnrollmentMethod + }, + { + title: "By Algorithm", + subtitle: "Distribution by key algorithm", + chartKey: "algorithm", + data: stats.distributions.byAlgorithm + }, + { + title: "By Issuing CA", + subtitle: "Distribution by certificate authority", + chartKey: "ca", + data: stats.distributions.byCA + } + ]; -// return ( -// <> -// {charts.map((chart) => ( -// { -// if (chart.chartKey === "enrollmentMethod") { -// onNavigate({ filterEnrollmentType: entry.label }); -// } else if (chart.chartKey === "algorithm") { -// onNavigate({ filterKeyAlgorithm: entry.label }); -// } else if (chart.chartKey === "ca" && entry.id) { -// onNavigate({ filterCaId: entry.id }); -// } -// }} -// /> -// ))} -// -// ); -// }; + return ( + <> + {charts.map((chart) => ( + { + if (chart.chartKey === "enrollmentMethod") { + onNavigate({ filterEnrollmentType: entry.label }); + } else if (chart.chartKey === "algorithm") { + onNavigate({ filterKeyAlgorithm: entry.label }); + } else if (chart.chartKey === "ca" && entry.id) { + onNavigate({ filterCaId: entry.id }); + } + }} + /> + ))} + + ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx index d137620f440..c9a7544899a 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ExpirationTimeline.tsx @@ -1,180 +1,180 @@ -// import { useMemo } from "react"; -// import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; +import { useMemo } from "react"; +import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip as RechartsTooltip } from "recharts"; -// import { -// Tooltip, -// TooltipContent, -// TooltipTrigger, -// UnstableCard, -// UnstableCardContent, -// UnstableCardDescription, -// UnstableCardHeader, -// UnstableCardTitle, -// UnstableEmpty, -// UnstableEmptyHeader, -// UnstableEmptyTitle -// } from "@app/components/v3"; -// import type { TExpirationBucket } from "@app/hooks/api/certificates"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import type { TExpirationBucket } from "@app/hooks/api/certificates"; -// import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; +import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; -// type Props = { -// buckets: TExpirationBucket[]; -// onNavigate: (filters: Record) => void; -// }; +type Props = { + buckets: TExpirationBucket[]; + onNavigate: (filters: Record) => void; +}; -// const DONUT_SEGMENTS = [ -// { -// label: "< 7 days", -// sourceBuckets: ["expired", "0-7d"], -// filter: { filterExpiresDays: "7" } -// }, -// { -// label: "7-30 days", -// sourceBuckets: ["8-30d"], -// filter: { filterExpiresAfterDays: "7", filterExpiresDays: "30" } -// }, -// { -// label: "> 30 days", -// sourceBuckets: ["31-60d", "61-90d", "90d+"], -// filter: { filterExpiresAfterDays: "30" } -// } -// ]; +const DONUT_SEGMENTS = [ + { + label: "< 7 days", + sourceBuckets: ["expired", "0-7d"], + filter: { filterExpiresDays: "7" } + }, + { + label: "7-30 days", + sourceBuckets: ["8-30d"], + filter: { filterExpiresAfterDays: "7", filterExpiresDays: "30" } + }, + { + label: "> 30 days", + sourceBuckets: ["31-60d", "61-90d", "90d+"], + filter: { filterExpiresAfterDays: "30" } + } +]; -// export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { -// const bucketMap = useMemo(() => { -// const map = new Map(); -// buckets.forEach((b) => map.set(b.bucket, b.count)); -// return map; -// }, [buckets]); +export const ExpirationTimeline = ({ buckets, onNavigate }: Props) => { + const bucketMap = useMemo(() => { + const map = new Map(); + buckets.forEach((b) => map.set(b.bucket, b.count)); + return map; + }, [buckets]); -// const chartData = useMemo( -// () => -// DONUT_SEGMENTS.map((seg, idx) => ({ -// label: seg.label, -// count: seg.sourceBuckets.reduce((sum, key) => sum + (bucketMap.get(key) || 0), 0), -// color: CHART_COLORS[idx % CHART_COLORS.length], -// segIdx: idx, -// filter: seg.filter -// })), -// [bucketMap] -// ); + const chartData = useMemo( + () => + DONUT_SEGMENTS.map((seg, idx) => ({ + label: seg.label, + count: seg.sourceBuckets.reduce((sum, key) => sum + (bucketMap.get(key) || 0), 0), + color: CHART_COLORS[idx % CHART_COLORS.length], + segIdx: idx, + filter: seg.filter + })), + [bucketMap] + ); -// const nonZeroData = chartData.filter((d) => d.count > 0); -// const total = chartData.reduce((sum, d) => sum + d.count, 0); + const nonZeroData = chartData.filter((d) => d.count > 0); + const total = chartData.reduce((sum, d) => sum + d.count, 0); -// return ( -// -// -// -// Expiration Timeline -// -// -// Certificates by time to expiry -// -// -// -// {nonZeroData.length === 0 ? ( -// -// -// No expiration data -// -// -// ) : ( -//
-//
-// -// -// -// {nonZeroData.map((item) => { -// const hex = CHART_COLORS_HEX[item.segIdx % CHART_COLORS_HEX.length]; -// return ( -// -// -// -// -// ); -// })} -// -// { -// const item = nonZeroData[idx]; -// if (item.filter) onNavigate(item.filter); -// }} -// > -// {nonZeroData.map((item) => ( -// -// ))} -// -// -// -// -//
-//
-//
-// {chartData.map((item, idx) => { -// const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; -// return ( -// -// ); -// })} -//
-//
-// Total -// {total} -//
-//
-//
-// )} -//
-//
-// ); -// }; + return ( + + + + Expiration Timeline + + + Certificates by time to expiry + + + + {nonZeroData.length === 0 ? ( + + + No expiration data + + + ) : ( +
+
+ + + + {nonZeroData.map((item) => { + const hex = CHART_COLORS_HEX[item.segIdx % CHART_COLORS_HEX.length]; + return ( + + + + + ); + })} + + { + const item = nonZeroData[idx]; + if (item.filter) onNavigate(item.filter); + }} + > + {nonZeroData.map((item) => ( + + ))} + + + + +
+
+
+ {chartData.map((item, idx) => { + const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; + return ( + + ); + })} +
+
+ Total + {total} +
+
+
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx index 3816c884043..fd6efdd85c3 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/ValidityReadinessSection.tsx @@ -1,356 +1,356 @@ -// import { useMemo } from "react"; -// import { -// Bar, -// BarChart, -// CartesianGrid, -// Cell, -// Pie, -// PieChart, -// ResponsiveContainer, -// Tooltip as RechartsTooltip, -// XAxis, -// YAxis -// } from "recharts"; +import { useMemo } from "react"; +import { + Bar, + BarChart, + CartesianGrid, + Cell, + Pie, + PieChart, + ResponsiveContainer, + Tooltip as RechartsTooltip, + XAxis, + YAxis +} from "recharts"; -// import { -// Tooltip, -// TooltipContent, -// TooltipTrigger, -// UnstableCard, -// UnstableCardContent, -// UnstableCardHeader, -// UnstableCardTitle -// } from "@app/components/v3"; -// import type { TDashboardStats } from "@app/hooks/api/certificates"; +import { + Tooltip, + TooltipContent, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle +} from "@app/components/v3"; +import type { TDashboardStats } from "@app/hooks/api/certificates"; -// import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; +import { CHART_COLORS, CHART_COLORS_HEX } from "./chart-theme"; -// type Props = { -// stats: TDashboardStats; -// }; +type Props = { + stats: TDashboardStats; +}; -// const ALL_PHASES = [ -// { -// date: new Date("2026-03-15"), -// maxDays: 200, -// description: "Max validity reduced to 200 days" -// }, -// { -// date: new Date("2027-03-15"), -// maxDays: 100, -// description: "Max validity reduced to 100 days" -// }, -// { -// date: new Date("2029-03-15"), -// maxDays: 47, -// description: "Max validity reduced to 47 days" -// } -// ]; +const ALL_PHASES = [ + { + date: new Date("2026-03-15"), + maxDays: 200, + description: "Max validity reduced to 200 days" + }, + { + date: new Date("2027-03-15"), + maxDays: 100, + description: "Max validity reduced to 100 days" + }, + { + date: new Date("2029-03-15"), + maxDays: 47, + description: "Max validity reduced to 47 days" + } +]; -// const VALIDITY_BUCKET_CONFIG: Record = -// { -// ">=200d": { -// label: "> 200 days", -// compliance: "Non-compliant (exceeds current limit)", -// color: CHART_COLORS_HEX[7] -// }, -// "100-199d": { -// label: "100\u2013199 days", -// compliance: "Compliant until Mar 2027", -// color: CHART_COLORS_HEX[1] -// }, -// "48-99d": { -// label: "48\u201399 days", -// compliance: "Compliant until Mar 2029", -// color: CHART_COLORS_HEX[0] -// }, -// "<=47d": { -// label: "\u2264 47 days", -// compliance: "Fully compliant", -// color: CHART_COLORS_HEX[5] -// } -// }; +const VALIDITY_BUCKET_CONFIG: Record = + { + ">=200d": { + label: "> 200 days", + compliance: "Non-compliant (exceeds current limit)", + color: CHART_COLORS_HEX[7] + }, + "100-199d": { + label: "100\u2013199 days", + compliance: "Compliant until Mar 2027", + color: CHART_COLORS_HEX[1] + }, + "48-99d": { + label: "48\u201399 days", + compliance: "Compliant until Mar 2029", + color: CHART_COLORS_HEX[0] + }, + "<=47d": { + label: "\u2264 47 days", + compliance: "Fully compliant", + color: CHART_COLORS_HEX[5] + } + }; -// const BUCKET_ORDER = [">=200d", "100-199d", "48-99d", "<=47d"]; +const BUCKET_ORDER = [">=200d", "100-199d", "48-99d", "<=47d"]; -// const MandateCountdown = () => { -// const now = Date.now(); -// const futurePhases = ALL_PHASES.filter( -// (p) => Math.ceil((p.date.getTime() - now) / (1000 * 60 * 60 * 24)) > 0 -// ); +const MandateCountdown = () => { + const now = Date.now(); + const futurePhases = ALL_PHASES.filter( + (p) => Math.ceil((p.date.getTime() - now) / (1000 * 60 * 60 * 24)) > 0 + ); -// return ( -// -// -// -// CA/B Forum Mandate Deadlines -// -//

-// Upcoming reductions in maximum TLS certificate validity -//

-//
-// -//
-// {futurePhases.map((phase) => { -// const daysUntil = Math.ceil((phase.date.getTime() - now) / (1000 * 60 * 60 * 24)); -// const isUrgent = daysUntil <= 90; + return ( + + + + CA/B Forum Mandate Deadlines + +

+ Upcoming reductions in maximum TLS certificate validity +

+
+ +
+ {futurePhases.map((phase) => { + const daysUntil = Math.ceil((phase.date.getTime() - now) / (1000 * 60 * 60 * 24)); + const isUrgent = daysUntil <= 90; -// const [, colorWarning, , , , colorSuccess] = CHART_COLORS; -// const barColor = isUrgent ? colorWarning : colorSuccess; + const [, colorWarning, , , , colorSuccess] = CHART_COLORS; + const barColor = isUrgent ? colorWarning : colorSuccess; -// return ( -//
-//
-//
-//
-// {daysUntil} -// days -//
-//

{phase.description}

-//
-//

-// {phase.date.toLocaleDateString("en-US", { -// month: "short", -// day: "numeric", -// year: "numeric" -// })} -//

-//
-// ); -// })} -//
-// -// -// ); -// }; + return ( +
+
+
+
+ {daysUntil} + days +
+

{phase.description}

+
+

+ {phase.date.toLocaleDateString("en-US", { + month: "short", + day: "numeric", + year: "numeric" + })} +

+
+ ); + })} +
+ + + ); +}; -// const ProjectedRenewals = ({ activeCerts }: { activeCerts: number }) => { -// const data = useMemo(() => { -// if (activeCerts === 0) return []; -// return [ -// { label: "Current", renewals: activeCerts, color: CHART_COLORS_HEX[0] }, -// { -// label: "200-day", -// renewals: Math.ceil((365 / 200) * activeCerts), -// color: CHART_COLORS_HEX[1] -// }, -// { -// label: "100-day", -// renewals: Math.ceil((365 / 100) * activeCerts), -// color: CHART_COLORS_HEX[6] -// }, -// { -// label: "47-day", -// renewals: Math.ceil((365 / 47) * activeCerts), -// color: CHART_COLORS_HEX[7] -// } -// ]; -// }, [activeCerts]); +const ProjectedRenewals = ({ activeCerts }: { activeCerts: number }) => { + const data = useMemo(() => { + if (activeCerts === 0) return []; + return [ + { label: "Current", renewals: activeCerts, color: CHART_COLORS_HEX[0] }, + { + label: "200-day", + renewals: Math.ceil((365 / 200) * activeCerts), + color: CHART_COLORS_HEX[1] + }, + { + label: "100-day", + renewals: Math.ceil((365 / 100) * activeCerts), + color: CHART_COLORS_HEX[6] + }, + { + label: "47-day", + renewals: Math.ceil((365 / 47) * activeCerts), + color: CHART_COLORS_HEX[7] + } + ]; + }, [activeCerts]); -// if (activeCerts === 0) return null; + if (activeCerts === 0) return null; -// return ( -// -// -// -// Projected Annual Renewals -// -//

-// Estimated yearly renewal volume under each validity regime -//

-//
-// -// -// -// -// -// -// [Number(value).toLocaleString(), "Renewals/year"]} -// cursor={{ fill: "none" }} -// /> -// -// {data.map((entry) => ( -// -// -// -// -// ))} -// -// -// {data.map((entry) => ( -// -// ))} -// -// -// -//

-// Based on {activeCerts.toLocaleString()} active certificate{activeCerts !== 1 ? "s" : ""} -//

-//
-//
-// ); -// }; + return ( + + + + Projected Annual Renewals + +

+ Estimated yearly renewal volume under each validity regime +

+
+ + + + + + + [Number(value).toLocaleString(), "Renewals/year"]} + cursor={{ fill: "none" }} + /> + + {data.map((entry) => ( + + + + + ))} + + + {data.map((entry) => ( + + ))} + + + +

+ Based on {activeCerts.toLocaleString()} active certificate{activeCerts !== 1 ? "s" : ""} +

+
+
+ ); +}; -// const ValidityDistribution = ({ buckets }: { buckets: TDashboardStats["validityBuckets"] }) => { -// const chartData = useMemo(() => { -// if (!buckets) return []; -// const bucketMap = new Map(buckets.map((b) => [b.bucket, b.count])); -// return BUCKET_ORDER.map((key, idx) => ({ -// bucket: key, -// count: bucketMap.get(key) || 0, -// segIdx: idx, -// ...VALIDITY_BUCKET_CONFIG[key] -// })).filter((d) => d.count > 0); -// }, [buckets]); +const ValidityDistribution = ({ buckets }: { buckets: TDashboardStats["validityBuckets"] }) => { + const chartData = useMemo(() => { + if (!buckets) return []; + const bucketMap = new Map(buckets.map((b) => [b.bucket, b.count])); + return BUCKET_ORDER.map((key, idx) => ({ + bucket: key, + count: bucketMap.get(key) || 0, + segIdx: idx, + ...VALIDITY_BUCKET_CONFIG[key] + })).filter((d) => d.count > 0); + }, [buckets]); -// const total = chartData.reduce((sum, d) => sum + d.count, 0); + const total = chartData.reduce((sum, d) => sum + d.count, 0); -// if (total === 0) return null; + if (total === 0) return null; -// return ( -// -// -// -// Certificates by Validity Period -// -//

-// Active certificates grouped by issuance-to-expiry duration -//

-//
-// -//
-//
-// -// -// -// {chartData.map((item) => ( -// -// -// -// -// ))} -// -// -// {chartData.map((item) => ( -// -// ))} -// -// -// -// -//
-//
-//
-// {chartData.map((item) => { -// const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; -// return ( -//
-// -// -// -// -// {item.label} -// -// -// {item.compliance} -// -// {pct}% -// -// {item.count} -// -//
-// ); -// })} -//
-//
-// Total -// {total} -//
-//
-//
-//
-//
-// ); -// }; + return ( + + + + Certificates by Validity Period + +

+ Active certificates grouped by issuance-to-expiry duration +

+
+ +
+
+ + + + {chartData.map((item) => ( + + + + + ))} + + + {chartData.map((item) => ( + + ))} + + + + +
+
+
+ {chartData.map((item) => { + const pct = total > 0 ? Math.round((item.count / total) * 100) : 0; + return ( +
+ + + + + {item.label} + + + {item.compliance} + + {pct}% + + {item.count} + +
+ ); + })} +
+
+ Total + {total} +
+
+
+
+
+ ); +}; -// export const ValidityReadinessSection = ({ stats }: Props) => { -// const tlsActiveCerts = useMemo( -// () => (stats.validityBuckets || []).reduce((sum, b) => sum + b.count, 0), -// [stats.validityBuckets] -// ); +export const ValidityReadinessSection = ({ stats }: Props) => { + const tlsActiveCerts = useMemo( + () => (stats.validityBuckets || []).reduce((sum, b) => sum + b.count, 0), + [stats.validityBuckets] + ); -// if (tlsActiveCerts === 0) return null; + if (tlsActiveCerts === 0) return null; -// return ( -//
-//

47-Day Validity Readiness

-//
-// -// -// -//
-//
-// ); -// }; + return ( +
+

47-Day Validity Readiness

+
+ + + +
+
+ ); +}; diff --git a/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx index 7f4458dd25e..88efe0c3fb6 100644 --- a/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx +++ b/frontend/src/pages/cert-manager/DashboardPage/components/index.tsx @@ -1,6 +1,6 @@ -// export { ActivityTrend } from "./ActivityTrend"; -// export { CodeSigningSection } from "./CodeSigningSection"; -// export { DistributionCharts } from "./DistributionCharts"; -// export { ExpirationTimeline } from "./ExpirationTimeline"; +export { ActivityTrend } from "./ActivityTrend"; +export { CodeSigningSection } from "./CodeSigningSection"; +export { DistributionCharts } from "./DistributionCharts"; +export { ExpirationTimeline } from "./ExpirationTimeline"; export { KpiCards } from "./KpiCards"; -// export { ValidityReadinessSection } from "./ValidityReadinessSection"; +export { ValidityReadinessSection } from "./ValidityReadinessSection"; diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 56fd3e1831f..d4040640bab 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -48,7 +48,21 @@ export default defineConfig(({ mode }) => { output: { entryFileNames: `assets/[name]-${version}-[hash].js`, chunkFileNames: `assets/[name]-${version}-[hash].js`, - assetFileNames: `assets/[name]-${version}-[hash].[ext]` + assetFileNames: `assets/[name]-${version}-[hash].[ext]`, + // recharts/d3 has circular dependencies so we ensure + // they remain in the same chunk so that the import resolution + // doesn't lead to uninitailized import sequences + manualChunks(id) { + if ( + id.includes("node_modules/recharts") || + id.includes("node_modules/d3-") || + id.includes("node_modules/victory-vendor") + ) { + return "recharts"; + } + + return undefined; + } } } }, From 32d931265984ba1fa6b18fd18c9da9411393ddc7 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Thu, 16 Apr 2026 22:38:50 -0300 Subject: [PATCH 201/562] Reapply "feat: add insights page to secrets management product type" This reverts commit 041c1f7c65e630465a98372649e556962d6d13bb. --- backend/src/@types/fastify.d.ts | 2 + backend/src/ee/routes/v1/index.ts | 3 + backend/src/ee/routes/v1/insights-router.ts | 238 +++++++++ .../ee/services/audit-log/audit-log-dal.ts | 125 ++++- .../ee/services/audit-log/audit-log-types.ts | 52 +- .../ee/services/insights/insights-service.ts | 498 ++++++++++++++++++ .../ee/services/insights/insights-types.ts | 25 + .../ee/services/permission/default-roles.ts | 3 + .../services/permission/project-permission.ts | 16 +- .../secret-rotation-v2-dal.ts | 151 ++++++ backend/src/keystore/keystore.ts | 6 +- backend/src/server/plugins/audit-log.ts | 3 + backend/src/server/routes/index.ts | 15 + backend/src/services/reminder/reminder-dal.ts | 49 +- .../secret-v2-bridge/secret-v2-bridge-dal.ts | 48 ++ .../permissions/project-permissions.mdx | 6 + frontend/src/const/routes.ts | 4 + .../ProjectPermissionContext/index.tsx | 1 + .../context/ProjectPermissionContext/types.ts | 8 +- frontend/src/context/index.tsx | 1 + .../src/hooks/api/auditLogs/constants.tsx | 9 + frontend/src/hooks/api/auditLogs/enums.tsx | 6 + frontend/src/hooks/api/index.tsx | 1 + .../src/hooks/api/secretInsights/index.ts | 23 + .../src/hooks/api/secretInsights/queries.tsx | 162 ++++++ .../src/hooks/api/secretInsights/types.ts | 122 +++++ .../OrgSidebar/SecretManagerNav.tsx | 8 +- .../ProjectRoleModifySection.utils.tsx | 21 +- .../InsightsPage/InsightsPage.tsx | 68 +++ .../components/AuthMethodChart.tsx | 178 +++++++ .../InsightsPage/components/CalendarCard.tsx | 79 +++ .../components/CalendarDayCell.tsx | 79 +++ .../components/CalendarEventDetail.tsx | 172 ++++++ .../components/CalendarEventPill.tsx | 36 ++ .../InsightsPage/components/CalendarGrid.tsx | 87 +++ .../components/CalendarLegend.tsx | 14 + .../components/InsightsSummaryCards.tsx | 496 +++++++++++++++++ .../InsightsPage/components/LineChart.tsx | 78 +++ .../components/SecretAccessChart.tsx | 83 +++ .../InsightsPage/components/WorldMap.tsx | 348 ++++++++++++ .../components/countries-110m.json | 1 + .../InsightsPage/components/index.ts | 8 + .../InsightsPage/components/types.ts | 5 + .../secret-manager/InsightsPage/route.tsx | 19 + frontend/src/routeTree.gen.ts | 28 + frontend/src/routes.ts | 1 + 46 files changed, 3376 insertions(+), 10 deletions(-) create mode 100644 backend/src/ee/routes/v1/insights-router.ts create mode 100644 backend/src/ee/services/insights/insights-service.ts create mode 100644 backend/src/ee/services/insights/insights-types.ts create mode 100644 frontend/src/hooks/api/secretInsights/index.ts create mode 100644 frontend/src/hooks/api/secretInsights/queries.tsx create mode 100644 frontend/src/hooks/api/secretInsights/types.ts create mode 100644 frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/index.ts create mode 100644 frontend/src/pages/secret-manager/InsightsPage/components/types.ts create mode 100644 frontend/src/pages/secret-manager/InsightsPage/route.tsx diff --git a/backend/src/@types/fastify.d.ts b/backend/src/@types/fastify.d.ts index 3879659cbae..5d47ec9c5f2 100644 --- a/backend/src/@types/fastify.d.ts +++ b/backend/src/@types/fastify.d.ts @@ -23,6 +23,7 @@ import { TGatewayV2ServiceFactory } from "@app/ee/services/gateway-v2/gateway-v2 import { TGithubOrgSyncServiceFactory } from "@app/ee/services/github-org-sync/github-org-sync-service"; import { TGroupServiceFactory } from "@app/ee/services/group/group-service"; import { TIdentityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template"; +import { TInsightsServiceFactory } from "@app/ee/services/insights/insights-service"; import { TKmipClientDALFactory } from "@app/ee/services/kmip/kmip-client-dal"; import { TKmipOperationServiceFactory } from "@app/ee/services/kmip/kmip-operation-service"; import { TKmipServiceFactory } from "@app/ee/services/kmip/kmip-service"; @@ -365,6 +366,7 @@ declare module "fastify" { secretRotationV2: TSecretRotationV2ServiceFactory; microsoftTeams: TMicrosoftTeamsServiceFactory; assumePrivileges: TAssumePrivilegeServiceFactory; + insights: TInsightsServiceFactory; relay: TRelayServiceFactory; gatewayV2: TGatewayV2ServiceFactory; githubOrgSync: TGithubOrgSyncServiceFactory; diff --git a/backend/src/ee/routes/v1/index.ts b/backend/src/ee/routes/v1/index.ts index c8b353f6eab..46882a1ac7e 100644 --- a/backend/src/ee/routes/v1/index.ts +++ b/backend/src/ee/routes/v1/index.ts @@ -22,6 +22,7 @@ import { registerGithubOrgSyncRouter } from "./github-org-sync-router"; import { registerGroupRouter } from "./group-router"; import { registerIdentityProjectAdditionalPrivilegeRouter } from "./identity-project-additional-privilege-router"; import { registerIdentityTemplateRouter } from "./identity-template-router"; +import { registerInsightsRouter } from "./insights-router"; import { registerKmipRouter } from "./kmip-router"; import { registerKmipSpecRouter } from "./kmip-spec-router"; import { registerLdapRouter } from "./ldap-router"; @@ -117,6 +118,8 @@ export const registerV1EERoutes = async (server: FastifyZodProvider) => { await server.register(registerRelayRouter, { prefix: "/relays" }); await server.register(registerGithubOrgSyncRouter, { prefix: "/github-org-sync-config" }); + await server.register(registerInsightsRouter, { prefix: "/insights" }); + await server.register( async (pkiRouter) => { await pkiRouter.register(registerCaCrlRouter, { prefix: "/crl" }); diff --git a/backend/src/ee/routes/v1/insights-router.ts b/backend/src/ee/routes/v1/insights-router.ts new file mode 100644 index 00000000000..6fcdf6e0dd8 --- /dev/null +++ b/backend/src/ee/routes/v1/insights-router.ts @@ -0,0 +1,238 @@ +import { z } from "zod"; + +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { readLimit } from "@app/server/config/rateLimiter"; +import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; +import { AuthMode } from "@app/services/auth/auth-type"; + +export const registerInsightsRouter = async (server: FastifyZodProvider) => { + server.route({ + method: "GET", + url: "/secrets/calendar", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsCalendar", + description: "Get secret rotation and reminder events for a calendar month view", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim(), + month: z.coerce.number().min(1).max(12), + year: z.coerce.number().min(2000).max(2100) + }), + response: { + 200: z.object({ + rotations: z.array( + z.object({ + id: z.string(), + name: z.string(), + type: z.string(), + nextRotationAt: z.date().nullable(), + environment: z.string(), + secretPath: z.string(), + secretKeys: z.string().array(), + rotationInterval: z.number(), + rotationStatus: z.string().nullable(), + isAutoRotationEnabled: z.boolean() + }) + ), + reminders: z.array( + z.object({ + id: z.string(), + secretId: z.string().nullable(), + secretKey: z.string(), + nextReminderDate: z.date(), + message: z.string().nullable().optional(), + environment: z.string(), + secretPath: z.string(), + repeatDays: z.number().nullable().optional() + }) + ) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId, month, year } = req.query; + const result = await server.services.insights.getCalendar({ projectId, month, year }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR, metadata: { projectId, month, year } }, + ...req.auditLogInfo + }); + return result; + } + }); + + server.route({ + method: "GET", + url: "/secrets/access-volume", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsAccessVolume", + description: "Get secret access volume aggregated by day and actor for the past week", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim() + }), + response: { + 200: z.object({ + days: z.array( + z.object({ + date: z.string(), + total: z.number(), + actors: z.array(z.object({ name: z.string(), type: z.string(), count: z.number() })) + }) + ) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId } = req.query; + const result = await server.services.insights.getAccessVolume({ projectId }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME, metadata: { projectId } }, + ...req.auditLogInfo + }); + return result; + } + }); + + // server.route({ + // method: "GET", + // url: "/secrets/access-locations", + // config: { rateLimit: readLimit }, + // schema: { + // operationId: "getInsightsAccessLocations", + // description: "Get geographic locations of secret access based on audit log IP addresses", + // security: [{ bearerAuth: [] }], + // querystring: z.object({ + // projectId: z.string().trim(), + // days: z.coerce.number().min(1).max(90).default(30) + // }), + // response: { + // 200: z.object({ + // locations: z.array( + // z.object({ lat: z.number(), lng: z.number(), city: z.string(), country: z.string(), count: z.number() }) + // ) + // }) + // } + // }, + // onRequest: verifyAuth([AuthMode.JWT]), + // handler: async (req) => { + // const { projectId, days } = req.query; + // const result = await server.services.insights.getAccessLocations({ projectId, days }, req.permission); + // await server.services.auditLog.createAuditLog({ + // projectId, + // event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS, metadata: { projectId, days } }, + // ...req.auditLogInfo + // }); + // return result; + // } + // }); + + server.route({ + method: "GET", + url: "/auth/method-distribution", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsAuthMethodDistribution", + description: "Get distribution of authentication methods from secret access audit logs", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim(), + days: z.coerce.number().min(1).max(90).default(30) + }), + response: { + 200: z.object({ + methods: z.array(z.object({ method: z.string(), count: z.number() })) + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId, days } = req.query; + const result = await server.services.insights.getAuthMethodDistribution({ projectId, days }, req.permission); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_AUTH_METHODS, metadata: { projectId, days } }, + ...req.auditLogInfo + }); + return result; + } + }); + + server.route({ + method: "GET", + url: "/secrets/summary", + config: { rateLimit: readLimit }, + schema: { + operationId: "getInsightsSummary", + description: + "Get summary stats for the insights dashboard: upcoming rotations, upcoming reminders, and stale secrets", + security: [{ bearerAuth: [] }], + querystring: z.object({ + projectId: z.string().trim(), + staleSecretsOffset: z.coerce.number().min(0).default(0), + staleSecretsLimit: z.coerce.number().min(1).max(100).default(50) + }), + response: { + 200: z.object({ + upcomingRotations: z.array( + z.object({ + name: z.string(), + environment: z.string(), + secretPath: z.string(), + nextRotationAt: z.date().nullable(), + rotationStatus: z.string().nullable() + }) + ), + failedRotations: z.array( + z.object({ + name: z.string(), + environment: z.string(), + secretPath: z.string(), + nextRotationAt: z.date().nullable(), + rotationStatus: z.string().nullable() + }) + ), + upcomingReminders: z.array( + z.object({ + secretKey: z.string(), + environment: z.string(), + secretPath: z.string(), + nextReminderDate: z.date() + }) + ), + overdueReminders: z.array( + z.object({ + secretKey: z.string(), + environment: z.string(), + secretPath: z.string(), + nextReminderDate: z.date() + }) + ), + staleSecrets: z.array( + z.object({ key: z.string(), environment: z.string(), secretPath: z.string(), updatedAt: z.date() }) + ), + totalStaleCount: z.number() + }) + } + }, + onRequest: verifyAuth([AuthMode.JWT]), + handler: async (req) => { + const { projectId, staleSecretsOffset, staleSecretsLimit } = req.query; + const result = await server.services.insights.getSummary( + { projectId, staleSecretsOffset, staleSecretsLimit }, + req.permission + ); + await server.services.auditLog.createAuditLog({ + projectId, + event: { type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY, metadata: { projectId } }, + ...req.auditLogInfo + }); + return result; + } + }); +}; diff --git a/backend/src/ee/services/audit-log/audit-log-dal.ts b/backend/src/ee/services/audit-log/audit-log-dal.ts index 7ad9233d0cf..cf4d8763f9f 100644 --- a/backend/src/ee/services/audit-log/audit-log-dal.ts +++ b/backend/src/ee/services/audit-log/audit-log-dal.ts @@ -13,6 +13,14 @@ import { ActorType } from "@app/services/auth/auth-type"; import { ACTOR_TYPE_TO_METADATA_ID_KEY, EventType, filterableSecretEvents } from "./audit-log-types"; +type TAggregateQuery = { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; +}; + export interface TAuditLogDALFactory extends Omit, "find"> { pruneAuditLog: () => Promise; getApproximateRowCount: () => Promise; @@ -27,6 +35,15 @@ export interface TAuditLogDALFactory extends Omit, " }, tx?: knex.Knex ) => Promise; + countByDateAndActor: ( + arg: TAggregateQuery, + tx?: knex.Knex + ) => Promise<{ date: string; actor: string; actorMetadata: unknown; count: number }[]>; + countByIpAddress: (arg: TAggregateQuery, tx?: knex.Knex) => Promise<{ ipAddress: string; count: number }[]>; + countByAuthMethod: ( + arg: TAggregateQuery, + tx?: knex.Knex + ) => Promise<{ actor: string; actorMetadata: unknown; count: number }[]>; } type TFindQuery = { @@ -248,5 +265,111 @@ export const auditLogDALFactory = (db: TDbClient) => { return auditLogOrm.create(tx); }; - return { ...auditLogOrm, create, pruneAuditLog, getApproximateRowCount, find }; + const countByDateAndActor = async ( + { + orgId, + projectId, + eventTypes, + startDate, + endDate + }: { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; + }, + tx?: knex.Knex + ) => { + const rows = await (tx || db.replicaNode())(TableName.AuditLog) + .where(`${TableName.AuditLog}.orgId`, orgId) + .where(`${TableName.AuditLog}.projectId`, projectId) + .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) + .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) + .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) + .select( + db.raw(`DATE("${TableName.AuditLog}"."createdAt") as date`), + `${TableName.AuditLog}.actor`, + `${TableName.AuditLog}.actorMetadata` + ) + .groupByRaw( + `DATE("${TableName.AuditLog}"."createdAt"), "${TableName.AuditLog}"."actor", "${TableName.AuditLog}"."actorMetadata"` + ) + .select(db.raw("COUNT(*)::int as count")) + .timeout(1000 * 120); + + return rows as { date: string; actor: string; actorMetadata: unknown; count: number }[]; + }; + + const countByIpAddress = async ( + { + orgId, + projectId, + eventTypes, + startDate, + endDate + }: { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; + }, + tx?: knex.Knex + ) => { + const rows = await (tx || db.replicaNode())(TableName.AuditLog) + .where(`${TableName.AuditLog}.orgId`, orgId) + .where(`${TableName.AuditLog}.projectId`, projectId) + .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) + .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) + .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) + .whereNotNull(`${TableName.AuditLog}.ipAddress`) + .select(`${TableName.AuditLog}.ipAddress`) + .groupBy(`${TableName.AuditLog}.ipAddress`) + .select(db.raw("COUNT(*)::int as count")) + .timeout(1000 * 120); + + return rows as { ipAddress: string; count: number }[]; + }; + + const countByAuthMethod = async ( + { + orgId, + projectId, + eventTypes, + startDate, + endDate + }: { + orgId: string; + projectId: string; + eventTypes: EventType[]; + startDate: string; + endDate: string; + }, + tx?: knex.Knex + ) => { + const rows = await (tx || db.replicaNode())(TableName.AuditLog) + .where(`${TableName.AuditLog}.orgId`, orgId) + .where(`${TableName.AuditLog}.projectId`, projectId) + .whereIn(`${TableName.AuditLog}.eventType`, eventTypes) + .whereRaw(`"${TableName.AuditLog}"."createdAt" >= ?::timestamptz`, [startDate]) + .whereRaw(`"${TableName.AuditLog}"."createdAt" < ?::timestamptz`, [endDate]) + .select(`${TableName.AuditLog}.actor`, `${TableName.AuditLog}.actorMetadata`) + .groupBy(`${TableName.AuditLog}.actor`, `${TableName.AuditLog}.actorMetadata`) + .select(db.raw("COUNT(*)::int as count")) + .timeout(1000 * 120); + + return rows as { actor: string; actorMetadata: unknown; count: number }[]; + }; + + return { + ...auditLogOrm, + create, + pruneAuditLog, + getApproximateRowCount, + find, + countByDateAndActor, + countByIpAddress, + countByAuthMethod + }; }; diff --git a/backend/src/ee/services/audit-log/audit-log-types.ts b/backend/src/ee/services/audit-log/audit-log-types.ts index f3600ccaf74..41d5206eb28 100644 --- a/backend/src/ee/services/audit-log/audit-log-types.ts +++ b/backend/src/ee/services/audit-log/audit-log-types.ts @@ -601,6 +601,12 @@ export enum EventType { DASHBOARD_GET_SECRET_VALUE = "dashboard-get-secret-value", DASHBOARD_GET_SECRET_VERSION_VALUE = "dashboard-get-secret-version-value", + VIEW_INSIGHTS_AUTH_METHODS = "view-insights-auth-methods", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR = "view-insights-secrets-management-calendar", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME = "view-insights-secrets-management-access-volume", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS = "view-insights-secrets-management-access-locations", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY = "view-insights-secrets-management-summary", + PAM_SESSION_CREDENTIALS_GET = "pam-session-credentials-get", PAM_SESSION_START = "pam-session-start", PAM_SESSION_LOGS_UPDATE = "pam-session-logs-update", @@ -802,7 +808,7 @@ interface IdentityActorMetadata { identityId: string; name: string; permission?: Record; - + authMethod?: string; aws?: TAWSAuthDetails; kubernetes?: TKubernetesAuthDetails; oidc?: TOidcAuthDetails; @@ -4706,6 +4712,45 @@ interface DashboardGetSecretVersionValueEvent { }; } +interface ViewSecretManagementInsightsCalendarEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR; + metadata: { + projectId: string; + month: number; + year: number; + }; +} + +interface ViewSecretManagementInsightsAccessVolumeEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME; + metadata: { + projectId: string; + }; +} + +interface ViewSecretManagementInsightsAccessLocationsEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS; + metadata: { + projectId: string; + days: number; + }; +} + +interface ViewInsightsAuthMethodsEvent { + type: EventType.VIEW_INSIGHTS_AUTH_METHODS; + metadata: { + projectId: string; + days: number; + }; +} + +interface ViewSecretManagementInsightsSummaryEvent { + type: EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY; + metadata: { + projectId: string; + }; +} + interface ProjectRoleCreateEvent { type: EventType.CREATE_PROJECT_ROLE; metadata: { @@ -6376,6 +6421,11 @@ export type Event = | DashboardListSecretsEvent | DashboardGetSecretValueEvent | DashboardGetSecretVersionValueEvent + | ViewSecretManagementInsightsCalendarEvent + | ViewSecretManagementInsightsAccessVolumeEvent + | ViewSecretManagementInsightsAccessLocationsEvent + | ViewInsightsAuthMethodsEvent + | ViewSecretManagementInsightsSummaryEvent | ProjectRoleCreateEvent | ProjectRoleUpdateEvent | ProjectRoleDeleteEvent diff --git a/backend/src/ee/services/insights/insights-service.ts b/backend/src/ee/services/insights/insights-service.ts new file mode 100644 index 00000000000..a1071ea1480 --- /dev/null +++ b/backend/src/ee/services/insights/insights-service.ts @@ -0,0 +1,498 @@ +import { ForbiddenError } from "@casl/ability"; + +// import geoip from "geoip-lite"; +import { ActionProjectType, IdentityAuthMethod } from "@app/db/schemas"; +import { TAuditLogDALFactory } from "@app/ee/services/audit-log/audit-log-dal"; +import { EventType } from "@app/ee/services/audit-log/audit-log-types"; +import { TLicenseServiceFactory } from "@app/ee/services/license/license-service"; +import { TPermissionServiceFactory } from "@app/ee/services/permission/permission-service-types"; +import { ProjectPermissionInsightsActions, ProjectPermissionSub } from "@app/ee/services/permission/project-permission"; +import { TSecretRotationV2DALFactory } from "@app/ee/services/secret-rotation-v2/secret-rotation-v2-dal"; +import { KeyStorePrefixes, KeyStoreTtls, TKeyStoreFactory } from "@app/keystore/keystore"; +import { withCache } from "@app/lib/cache/with-cache"; +import { BadRequestError } from "@app/lib/errors"; +import { OrgServiceActor } from "@app/lib/types"; +import { ActorType } from "@app/services/auth/auth-type"; +import { TProjectBotServiceFactory } from "@app/services/project-bot/project-bot-service"; +import { TReminderDALFactory } from "@app/services/reminder/reminder-dal"; +import { TSecretFolderDALFactory } from "@app/services/secret-folder/secret-folder-dal"; +import { TSecretV2BridgeDALFactory } from "@app/services/secret-v2-bridge/secret-v2-bridge-dal"; +import { TUserDALFactory } from "@app/services/user/user-dal"; + +import { + // TGetAccessLocationsDTO, + TGetAccessVolumeDTO, + TGetAuthMethodDistributionDTO, + TGetInsightsCalendarDTO, + TGetInsightsSummaryDTO +} from "./insights-types"; + +type TInsightsServiceFactoryDep = { + permissionService: Pick; + licenseService: Pick; + auditLogDAL: Pick; + secretRotationV2DAL: Pick; + reminderDAL: Pick; + folderDAL: Pick; + secretV2BridgeDAL: Pick; + projectBotService: Pick; + userDAL: Pick; + keyStore: Pick; +}; + +export type TInsightsServiceFactory = ReturnType; + +const VALUE_EVENT_TYPES = [ + EventType.GET_SECRETS, + EventType.GET_SECRET, + EventType.DASHBOARD_GET_SECRET_VALUE, + EventType.DASHBOARD_GET_SECRET_VERSION_VALUE, + EventType.GET_SECRET_ROTATION_GENERATED_CREDENTIALS, + EventType.CREATE_DYNAMIC_SECRET_LEASE +]; + +const checkInsightsPermission = async ( + permissionService: TInsightsServiceFactoryDep["permissionService"], + licenseService: TInsightsServiceFactoryDep["licenseService"], + projectId: string, + actor: OrgServiceActor +) => { + const plan = await licenseService.getPlan(actor.orgId); + if (!plan.secretAccessInsights) { + throw new BadRequestError({ + message: "Failed to access insights due to plan restriction. Upgrade your plan to access insights." + }); + } + + const { permission } = await permissionService.getProjectPermission({ + actor: actor.type, + actorId: actor.id, + projectId, + actorAuthMethod: actor.authMethod, + actorOrgId: actor.orgId, + actionProjectType: ActionProjectType.SecretManager + }); + + ForbiddenError.from(permission).throwUnlessCan(ProjectPermissionInsightsActions.Read, ProjectPermissionSub.Insights); +}; + +export const insightsServiceFactory = ({ + permissionService, + licenseService, + auditLogDAL, + secretRotationV2DAL, + reminderDAL, + folderDAL, + secretV2BridgeDAL, + projectBotService, + userDAL, + keyStore +}: TInsightsServiceFactoryDep) => { + const fetchReminders = async (projectId: string, startDate: Date, endDate: Date) => { + const rawReminders = await reminderDAL.findByProjectAndDateRange({ projectId, startDate, endDate }); + if (!rawReminders.length) return []; + + const folderIds = [...new Set(rawReminders.map((r) => r.folderId))]; + const foldersWithPath = await folderDAL.findSecretPathByFolderIds(projectId, folderIds); + const folderRecord: Record = {}; + foldersWithPath.forEach((folder) => { + if (folder) folderRecord[folder.id] = folder.path; + }); + + return rawReminders.map((r) => ({ + id: r.id, + secretId: r.secretId ?? null, + secretKey: r.secretKey, + nextReminderDate: r.nextReminderDate, + message: r.message ?? null, + environment: r.envSlug, + secretPath: folderRecord[r.folderId] ?? "/", + repeatDays: r.repeatDays ?? null + })); + }; + + const getCalendar = async (dto: TGetInsightsCalendarDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); + + const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `calendar:${dto.year}-${dto.month}`); + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + + // Pad by 1 day on each side so events near month boundaries are captured + // regardless of the caller's timezone offset from UTC. + const startDate = new Date(Date.UTC(dto.year, dto.month - 1, 0)); + const endDate = new Date(Date.UTC(dto.year, dto.month, 1, 23, 59, 59, 999)); + + const [rotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ projectId: dto.projectId, startDate, endDate }), + fetchReminders(dto.projectId, startDate, endDate) + ]); + + return { + rotations: rotations.map((r) => ({ + id: r.id, + name: r.name, + type: r.type, + nextRotationAt: r.nextRotationAt ?? null, + environment: r.environment.slug, + secretPath: r.folder.path, + secretKeys: r.secretKeys, + rotationInterval: r.rotationInterval, + rotationStatus: r.rotationStatus, + isAutoRotationEnabled: r.isAutoRotationEnabled + })), + reminders + }; + } + }); + }; + + const getAccessVolume = async (dto: TGetAccessVolumeDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); + + const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, "access-volume"); + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const now = new Date(); + const todayStr = now.toISOString().slice(0, 10); + const endDate = new Date(`${todayStr}T23:59:59.999Z`); + const startDate = new Date(`${todayStr}T00:00:00.000Z`); + startDate.setUTCDate(startDate.getUTCDate() - 6); + + const rows = await auditLogDAL.countByDateAndActor({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() + }); + + // Resolve user display names from userIds in audit log metadata + const userIds = [ + ...new Set( + rows + .filter((r) => r.actor === ActorType.USER) + .map((r) => (r.actorMetadata as Record | null)?.userId) + .filter(Boolean) as string[] + ) + ]; + const userNameMap = new Map(); + if (userIds.length > 0) { + const users = await userDAL.find({ $in: { id: userIds } }); + users.forEach((u) => { + const displayName = [u.firstName, u.lastName].filter(Boolean).join(" "); + if (displayName) userNameMap.set(u.id, displayName); + }); + } + + // Pre-populate the last 7 days + const dayMap = new Map>(); + for (let i = 6; i >= 0; i -= 1) { + const d = new Date(`${todayStr}T00:00:00.000Z`); + d.setUTCDate(d.getUTCDate() - i); + dayMap.set(d.toISOString().slice(0, 10), new Map()); + } + + rows.forEach((row) => { + const dateKey = typeof row.date === "string" ? row.date : new Date(row.date).toISOString().slice(0, 10); + const actorMap = dayMap.get(dateKey); + if (!actorMap) return; + + const actorMeta = row.actorMetadata as Record | null; + let actorName: string; + if (row.actor === ActorType.USER && actorMeta?.userId) { + actorName = userNameMap.get(actorMeta.userId) || actorMeta.email || actorMeta.username || "Unknown"; + } else if (row.actor === ActorType.USER) { + actorName = actorMeta?.email || actorMeta?.username || "Unknown"; + } else { + actorName = actorMeta?.name || actorMeta?.identityId || "Unknown"; + } + const actorKey = `${row.actor}:${actorName}`; + + const existing = actorMap.get(actorKey); + if (existing) { + existing.count += row.count; + } else { + actorMap.set(actorKey, { name: actorName, type: row.actor, count: row.count }); + } + }); + + const days = Array.from(dayMap.entries()).map(([date, actorMap]) => { + const actors = Array.from(actorMap.values()).sort((a, b) => b.count - a.count); + const total = actors.reduce((sum, a) => sum + a.count, 0); + return { date, total, actors }; + }); + + return { days }; + } + }); + }; + + // const getAccessLocations = async (dto: TGetAccessLocationsDTO, actorDto: OrgServiceActor) => { + // await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); + + // const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `access-locations:${dto.days}`); + // return withCache(cacheKey, async () => { + // const endDate = new Date(); + // const startDate = new Date(); + // startDate.setUTCDate(startDate.getUTCDate() - dto.days); + + // const ipRows = await auditLogDAL.countByIpAddress({ + // orgId: actorDto.orgId, + // projectId: dto.projectId, + // eventTypes: VALUE_EVENT_TYPES, + // startDate: startDate.toISOString(), + // endDate: endDate.toISOString() + // }); + + // const locationMap = new Map(); + + // const isPrivateIp = (ip: string) => + // ip === "127.0.0.1" || + // ip === "::1" || + // ip === "::ffff:127.0.0.1" || + // ip.startsWith("10.") || + // ip.startsWith("172.16.") || + // ip.startsWith("172.17.") || + // ip.startsWith("172.18.") || + // ip.startsWith("172.19.") || + // ip.startsWith("172.20.") || + // ip.startsWith("172.21.") || + // ip.startsWith("172.22.") || + // ip.startsWith("172.23.") || + // ip.startsWith("172.24.") || + // ip.startsWith("172.25.") || + // ip.startsWith("172.26.") || + // ip.startsWith("172.27.") || + // ip.startsWith("172.28.") || + // ip.startsWith("172.29.") || + // ip.startsWith("172.30.") || + // ip.startsWith("172.31.") || + // ip.startsWith("192.168."); + + // ipRows.forEach(({ ipAddress: ip, count }) => { + // if (isPrivateIp(ip)) { + // const key = "Local Network:LOCAL"; + // const existing = locationMap.get(key); + // if (existing) { + // existing.count += count; + // } else { + // locationMap.set(key, { lat: 0, lng: 0, city: "Local Network", country: "LOCAL", count }); + // } + // return; + // } + + // const geo = geoip.lookup(ip); + // if (!geo || !geo.ll) return; + + // const city = geo.city || geo.region || ""; + // const key = `${city}:${geo.country}`; + // const existing = locationMap.get(key); + // if (existing) { + // existing.count += count; + // } else { + // locationMap.set(key, { + // lat: geo.ll[0], + // lng: geo.ll[1], + // city, + // country: geo.country, + // count + // }); + // } + // }); + + // return { + // locations: Array.from(locationMap.values()).sort((a, b) => b.count - a.count) + // }; + // }); + // }; + + const getAuthMethodDistribution = async (dto: TGetAuthMethodDistributionDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); + + const cacheKey = KeyStorePrefixes.InsightsCache(dto.projectId, `auth-methods:${dto.days}`); + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const endDate = new Date(); + const startDate = new Date(); + startDate.setUTCDate(startDate.getUTCDate() - dto.days); + + const authRows = await auditLogDAL.countByAuthMethod({ + orgId: actorDto.orgId, + projectId: dto.projectId, + eventTypes: VALUE_EVENT_TYPES, + startDate: startDate.toISOString(), + endDate: endDate.toISOString() + }); + + const methodCounts = new Map(); + + const authMethodLabels: Record = { + email: "Email", + google: "Google", + github: "GitHub", + gitlab: "GitLab", + "okta-saml": "Okta SAML", + "azure-saml": "Azure SAML", + "jumpcloud-saml": "JumpCloud SAML", + "google-saml": "Google SAML", + "keycloak-saml": "Keycloak SAML", + ldap: "LDAP", + oidc: "OIDC" + }; + + const identityAuthMethodLabels: Record = { + [IdentityAuthMethod.UNIVERSAL_AUTH]: "Universal Auth", + [IdentityAuthMethod.TOKEN_AUTH]: "Token Auth", + [IdentityAuthMethod.KUBERNETES_AUTH]: "Kubernetes", + [IdentityAuthMethod.GCP_AUTH]: "GCP Auth", + [IdentityAuthMethod.AWS_AUTH]: "AWS Auth", + [IdentityAuthMethod.AZURE_AUTH]: "Azure Auth", + [IdentityAuthMethod.OIDC_AUTH]: "OIDC", + [IdentityAuthMethod.JWT_AUTH]: "JWT Auth", + [IdentityAuthMethod.LDAP_AUTH]: "LDAP Auth", + [IdentityAuthMethod.ALICLOUD_AUTH]: "AliCloud Auth", + [IdentityAuthMethod.TLS_CERT_AUTH]: "TLS Certificate", + [IdentityAuthMethod.OCI_AUTH]: "OCI Auth", + [IdentityAuthMethod.SPIFFE_AUTH]: "SPIFFE Auth" + }; + + authRows.forEach((row) => { + const actorMeta = row.actorMetadata as Record | null; + let method = "Unknown"; + + if (row.actor === "user") { + const raw = (actorMeta?.authMethod as string) || "Unknown"; + method = authMethodLabels[raw] || raw; + } else if (row.actor === "identity") { + const identityAuth = actorMeta?.authMethod as IdentityAuthMethod | undefined; + method = identityAuth ? identityAuthMethodLabels[identityAuth] || identityAuth : "Unknown"; + } else if (row.actor === "service") { + method = "Service Token"; + } else { + method = row.actor; + } + + methodCounts.set(method, (methodCounts.get(method) || 0) + (row.count || 0)); + }); + + const methods = Array.from(methodCounts.entries()) + .map(([method, count]) => ({ method, count })) + .sort((a, b) => b.count - a.count); + + return { methods }; + } + }); + }; + + const getSummary = async (dto: TGetInsightsSummaryDTO, actorDto: OrgServiceActor) => { + await checkInsightsPermission(permissionService, licenseService, dto.projectId, actorDto); + + const cacheKey = KeyStorePrefixes.InsightsCache( + dto.projectId, + `summary:${dto.staleSecretsOffset ?? 0}:${dto.staleSecretsLimit ?? 50}` + ); + return withCache({ + keyStore, + key: cacheKey, + ttlSeconds: KeyStoreTtls.InsightsCacheInSeconds, + fetcher: async () => { + const { shouldUseSecretV2Bridge } = await projectBotService.getBotKey(dto.projectId); + if (!shouldUseSecretV2Bridge) throw new BadRequestError({ message: "Project version not supported" }); + + const now = new Date(); + const in7Days = new Date(now); + in7Days.setDate(now.getDate() + 7); + const lookback90Days = new Date(now); + lookback90Days.setDate(now.getDate() - 90); + const staleThreshold = lookback90Days; + + // Fetch upcoming rotations (by date range) and all failed rotations (no date filter) in parallel + // Use 90-day lookback to capture overdue items without unbounded historical queries + const [upcomingRotationsRaw, allProjectRotations, reminders] = await Promise.all([ + secretRotationV2DAL.findByProjectAndDateRange({ + projectId: dto.projectId, + startDate: lookback90Days, + endDate: in7Days + }), + secretRotationV2DAL.findByProject(dto.projectId), + fetchReminders(dto.projectId, lookback90Days, in7Days) + ]); + + const mapRotation = (r: (typeof allProjectRotations)[number]) => ({ + name: r.name, + environment: r.environment.slug, + secretPath: r.folder.path, + nextRotationAt: r.nextRotationAt ?? null, + rotationStatus: r.rotationStatus + }); + + const mapReminder = (r: (typeof reminders)[number]) => ({ + secretKey: r.secretKey, + environment: r.environment, + secretPath: r.secretPath, + nextReminderDate: r.nextReminderDate + }); + + const upcomingRotations = upcomingRotationsRaw.map(mapRotation); + + const failedRotations = allProjectRotations.filter((r) => r.rotationStatus === "failed").map(mapRotation); + const upcomingReminders = reminders.filter((r) => new Date(r.nextReminderDate) >= now).map(mapReminder); + const overdueReminders = reminders.filter((r) => new Date(r.nextReminderDate) < now).map(mapReminder); + + const [rawStaleSecrets, totalStaleCount] = await Promise.all([ + secretV2BridgeDAL.findStaleByProject(dto.projectId, staleThreshold, { + offset: dto.staleSecretsOffset ?? 0, + limit: dto.staleSecretsLimit ?? 50 + }), + secretV2BridgeDAL.countStaleByProject(dto.projectId, staleThreshold) + ]); + + // Resolve folder paths for stale secrets + const staleFolderIds = [...new Set(rawStaleSecrets.map((s) => s.folderId))]; + const staleFolders = staleFolderIds.length + ? await folderDAL.findSecretPathByFolderIds(dto.projectId, staleFolderIds) + : []; + const staleFolderMap: Record = {}; + staleFolders.forEach((f) => { + if (f) staleFolderMap[f.id] = f.path; + }); + + const staleSecrets = rawStaleSecrets.map((s) => ({ + key: s.key, + environment: s.environment, + secretPath: staleFolderMap[s.folderId] ?? "/", + updatedAt: s.updatedAt + })); + + return { + upcomingRotations, + failedRotations, + upcomingReminders, + overdueReminders, + staleSecrets, + totalStaleCount + }; + } + }); + }; + + return { + getCalendar, + getAccessVolume, + // getAccessLocations, + getAuthMethodDistribution, + getSummary + }; +}; diff --git a/backend/src/ee/services/insights/insights-types.ts b/backend/src/ee/services/insights/insights-types.ts new file mode 100644 index 00000000000..4705b5c6093 --- /dev/null +++ b/backend/src/ee/services/insights/insights-types.ts @@ -0,0 +1,25 @@ +export type TGetInsightsCalendarDTO = { + projectId: string; + month: number; + year: number; +}; + +export type TGetAccessVolumeDTO = { + projectId: string; +}; + +export type TGetAccessLocationsDTO = { + projectId: string; + days: number; +}; + +export type TGetAuthMethodDistributionDTO = { + projectId: string; + days: number; +}; + +export type TGetInsightsSummaryDTO = { + projectId: string; + staleSecretsOffset?: number; + staleSecretsLimit?: number; +}; diff --git a/backend/src/ee/services/permission/default-roles.ts b/backend/src/ee/services/permission/default-roles.ts index 7c3809538fc..32f09b6f8b0 100644 --- a/backend/src/ee/services/permission/default-roles.ts +++ b/backend/src/ee/services/permission/default-roles.ts @@ -16,6 +16,7 @@ import { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, @@ -449,6 +450,8 @@ const buildAdminPermissionRules = () => { can([ProjectPermissionSecretApprovalRequestActions.Read], ProjectPermissionSub.SecretApprovalRequest); + can([ProjectPermissionInsightsActions.Read], ProjectPermissionSub.Insights); + return rules; }; diff --git a/backend/src/ee/services/permission/project-permission.ts b/backend/src/ee/services/permission/project-permission.ts index 8abff74d24b..480dc0b56f8 100644 --- a/backend/src/ee/services/permission/project-permission.ts +++ b/backend/src/ee/services/permission/project-permission.ts @@ -248,6 +248,10 @@ export enum ProjectPermissionAuditLogsActions { Read = "read" } +export enum ProjectPermissionInsightsActions { + Read = "read" +} + export enum ProjectPermissionPamAccountActions { Access = "access", Read = "read", @@ -363,7 +367,8 @@ export enum ProjectPermissionSub { ApprovalRequestGrants = "approval-request-grants", McpEndpoints = "mcp-endpoints", McpServers = "mcp-servers", - McpActivityLogs = "mcp-activity-logs" + McpActivityLogs = "mcp-activity-logs", + Insights = "insights" } // Structure: { [subject]: { [action]: allowedConditionKeys[] } } @@ -696,7 +701,8 @@ export type ProjectPermissionSet = ] | [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests] | [ProjectPermissionApprovalRequestGrantActions, ProjectPermissionSub.ApprovalRequestGrants] - | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest]; + | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest] + | [ProjectPermissionInsightsActions, ProjectPermissionSub.Insights]; const SECRET_PATH_MISSING_SLASH_ERR_MSG = "Invalid Secret Path; it must start with a '/'"; const SECRET_PATH_PERMISSION_OPERATOR_SCHEMA = z.union([ @@ -1519,6 +1525,12 @@ const GeneralPermissionSchema = [ "Describe what action an entity can take." ) }), + z.object({ + subject: z.literal(ProjectPermissionSub.Insights).describe("The entity this permission pertains to."), + action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionInsightsActions).describe( + "Describe what action an entity can take." + ) + }), z.object({ subject: z.literal(ProjectPermissionSub.IpAllowList).describe("The entity this permission pertains to."), action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionActions).describe( diff --git a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts index 4ef50038ccd..01f85dbab5d 100644 --- a/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts +++ b/backend/src/ee/services/secret-rotation-v2/secret-rotation-v2-dal.ts @@ -469,6 +469,88 @@ export const secretRotationV2DALFactory = ( } }; + const findByProjectAndDateRange = async ( + { + projectId, + startDate, + endDate + }: { + projectId: string; + startDate: Date; + endDate: Date; + }, + tx?: Knex + ) => { + try { + const query = (tx || db.replicaNode())(TableName.SecretRotationV2) + .join(TableName.SecretFolder, `${TableName.SecretRotationV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .join(TableName.AppConnection, `${TableName.SecretRotationV2}.connectionId`, `${TableName.AppConnection}.id`) + .join( + TableName.SecretRotationV2SecretMapping, + `${TableName.SecretRotationV2SecretMapping}.rotationId`, + `${TableName.SecretRotationV2}.id` + ) + .join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretRotationV2SecretMapping}.secretId`) + .where(`${TableName.Environment}.projectId`, projectId) + .whereNotNull(`${TableName.SecretRotationV2}.nextRotationAt`); + + const rawRotations = await query + .whereBetween(`${TableName.SecretRotationV2}.nextRotationAt`, [startDate, endDate]) + .select( + selectAllTableCols(TableName.SecretRotationV2), + db.ref("name").withSchema(TableName.Environment).as("envName"), + db.ref("id").withSchema(TableName.Environment).as("envId"), + db.ref("slug").withSchema(TableName.Environment).as("envSlug"), + db.ref("id").withSchema(TableName.AppConnection).as("connectionAppId"), + db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), + db.ref("id").withSchema(TableName.SecretV2).as("secretId") + ); + + if (!rawRotations.length) return []; + + const foldersWithPath = await folderDAL.findSecretPathByFolderIds( + projectId, + rawRotations.map((r) => r.folderId), + tx + ); + + const folderRecord: Record = {}; + foldersWithPath.forEach((folder) => { + if (folder) folderRecord[folder.id] = folder; + }); + + return sqlNestRelationships({ + data: rawRotations, + key: "id", + parentMapper: (rotation) => ({ + id: rotation.id, + name: rotation.name, + type: rotation.type, + nextRotationAt: rotation.nextRotationAt, + rotationInterval: rotation.rotationInterval, + rotationStatus: rotation.rotationStatus, + isAutoRotationEnabled: rotation.isAutoRotationEnabled, + environment: { slug: rotation.envSlug, name: rotation.envName, id: rotation.envId }, + folder: { + id: rotation.folderId, + path: folderRecord[rotation.folderId]?.path ?? "/" + }, + connection: { id: rotation.connectionAppId } + }), + childrenMapper: [ + { + key: "secretKey", + label: "secretKeys" as const, + mapper: ({ secretKey }) => secretKey + } + ] + }); + } catch (error) { + throw new DatabaseError({ error, name: "Find Calendar Rotations - Secret Rotation V2" }); + } + }; + const findSecretRotationsToQueue = async (rotateBy: Date, tx?: Knex) => { const secretRotations = await (tx || db.replicaNode())(TableName.SecretRotationV2) .where(`${TableName.SecretRotationV2}.isAutoRotationEnabled`, true) @@ -479,6 +561,73 @@ export const secretRotationV2DALFactory = ( return secretRotations; }; + const findByProject = async (projectId: string, tx?: Knex) => { + try { + const rawRotations = await (tx || db.replicaNode())(TableName.SecretRotationV2) + .join(TableName.SecretFolder, `${TableName.SecretRotationV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .join(TableName.AppConnection, `${TableName.SecretRotationV2}.connectionId`, `${TableName.AppConnection}.id`) + .join( + TableName.SecretRotationV2SecretMapping, + `${TableName.SecretRotationV2SecretMapping}.rotationId`, + `${TableName.SecretRotationV2}.id` + ) + .join(TableName.SecretV2, `${TableName.SecretV2}.id`, `${TableName.SecretRotationV2SecretMapping}.secretId`) + .where(`${TableName.Environment}.projectId`, projectId) + .select( + selectAllTableCols(TableName.SecretRotationV2), + db.ref("name").withSchema(TableName.Environment).as("envName"), + db.ref("id").withSchema(TableName.Environment).as("envId"), + db.ref("slug").withSchema(TableName.Environment).as("envSlug"), + db.ref("id").withSchema(TableName.AppConnection).as("connectionAppId"), + db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), + db.ref("id").withSchema(TableName.SecretV2).as("secretId") + ); + + if (!rawRotations.length) return []; + + const foldersWithPath = await folderDAL.findSecretPathByFolderIds( + projectId, + rawRotations.map((r) => r.folderId), + tx + ); + + const folderRecord: Record = {}; + foldersWithPath.forEach((folder) => { + if (folder) folderRecord[folder.id] = folder; + }); + + return sqlNestRelationships({ + data: rawRotations, + key: "id", + parentMapper: (rotation) => ({ + id: rotation.id, + name: rotation.name, + type: rotation.type, + nextRotationAt: rotation.nextRotationAt, + rotationInterval: rotation.rotationInterval, + rotationStatus: rotation.rotationStatus, + isAutoRotationEnabled: rotation.isAutoRotationEnabled, + environment: { slug: rotation.envSlug, name: rotation.envName, id: rotation.envId }, + folder: { + id: rotation.folderId, + path: folderRecord[rotation.folderId]?.path ?? "/" + }, + connection: { id: rotation.connectionAppId } + }), + childrenMapper: [ + { + key: "secretKey", + label: "secretKeys" as const, + mapper: ({ secretKey }) => secretKey + } + ] + }); + } catch (error) { + throw new DatabaseError({ error, name: "Find by Project - Secret Rotation V2" }); + } + }; + return { ...secretRotationV2Orm, find, @@ -490,6 +639,8 @@ export const secretRotationV2DALFactory = ( insertSecretMappings: secretRotationV2SecretMappingOrm.insertMany, findWithMappedSecrets, findWithMappedSecretsCount, + findByProjectAndDateRange, + findByProject, findSecretRotationsToQueue }; }; diff --git a/backend/src/keystore/keystore.ts b/backend/src/keystore/keystore.ts index 41460bf8192..a640b1dddea 100644 --- a/backend/src/keystore/keystore.ts +++ b/backend/src/keystore/keystore.ts @@ -109,7 +109,8 @@ export const KeyStorePrefixes = { CertDashboardStats: (projectId: string) => `cert-dashboard-stats:${projectId}` as const, CertActivityTrend: (projectId: string, range: string) => `cert-activity-trend:${projectId}:${range}` as const, - RefreshTokenGrace: (sessionId: string) => `refresh-token-grace:${sessionId}` as const + RefreshTokenGrace: (sessionId: string) => `refresh-token-grace:${sessionId}` as const, + InsightsCache: (projectId: string, endpoint: string) => `insights-cache:${projectId}:${endpoint}` as const }; export const KeyStoreTtls = { @@ -122,7 +123,8 @@ export const KeyStoreTtls = { WebAuthnChallengeInSeconds: 300, // 5 minutes ProjectSSEConnectionTtlSeconds: 180, // Must be > heartbeat interval (60s) * 2 TelemetryIdentifyIdentityInSeconds: 86400, // 24 hours - RefreshTokenGraceInSeconds: 30 + RefreshTokenGraceInSeconds: 30, + InsightsCacheInSeconds: 300 // 5 minutes }; type TDeleteItems = { diff --git a/backend/src/server/plugins/audit-log.ts b/backend/src/server/plugins/audit-log.ts index 47120d0bea5..725f8b5ca5f 100644 --- a/backend/src/server/plugins/audit-log.ts +++ b/backend/src/server/plugins/audit-log.ts @@ -50,10 +50,12 @@ export const injectAuditLogInfo = fp(async (server: FastifyZodProvider) => { req.auditLogInfo = payload; return; } + if (req.auth.actor === ActorType.USER) { payload.actor = { type: ActorType.USER, metadata: { + ...(req.auth.authMethod ? { authMethod: req.auth.authMethod } : {}), email: req.auth.user.email, username: req.auth.user.username, userId: req.permission.id @@ -75,6 +77,7 @@ export const injectAuditLogInfo = fp(async (server: FastifyZodProvider) => { metadata: { name: req.auth.identityName, identityId: req.auth.identityId, + ...(identityAuthInfo?.authMethod ? { authMethod: identityAuthInfo.authMethod } : {}), ...(identityAuthInfo?.aws ? { aws: identityAuthInfo.aws } : {}), ...(identityAuthInfo?.kubernetes ? { kubernetes: identityAuthInfo.kubernetes } : {}), ...(identityAuthInfo?.oidc ? { oidc: identityAuthInfo.oidc } : {}) diff --git a/backend/src/server/routes/index.ts b/backend/src/server/routes/index.ts index 6e0a2449796..de8a5cf5586 100644 --- a/backend/src/server/routes/index.ts +++ b/backend/src/server/routes/index.ts @@ -73,6 +73,7 @@ import { isHsmActiveAndEnabled } from "@app/ee/services/hsm/hsm-fns"; import { THsmServiceFactory } from "@app/ee/services/hsm/hsm-service"; import { identityAuthTemplateDALFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-dal"; import { identityAuthTemplateServiceFactory } from "@app/ee/services/identity-auth-template/identity-auth-template-service"; +import { insightsServiceFactory } from "@app/ee/services/insights/insights-service"; import { kmipClientCertificateDALFactory } from "@app/ee/services/kmip/kmip-client-certificate-dal"; import { kmipClientDALFactory } from "@app/ee/services/kmip/kmip-client-dal"; import { kmipOperationServiceFactory } from "@app/ee/services/kmip/kmip-operation-service"; @@ -2380,6 +2381,19 @@ export const registerRoutes = async ( gatewayV2Service }); + const insightsService = insightsServiceFactory({ + permissionService, + licenseService, + auditLogDAL, + secretRotationV2DAL, + reminderDAL, + folderDAL, + secretV2BridgeDAL, + projectBotService, + userDAL, + keyStore + }); + const pkiSyncQueue = pkiSyncQueueFactory({ queueService, kmsService, @@ -3210,6 +3224,7 @@ export const registerRoutes = async ( secretRotationV2: secretRotationV2Service, microsoftTeams: microsoftTeamsService, assumePrivileges: assumePrivilegeService, + insights: insightsService, githubOrgSync: githubOrgSyncConfigService, folderCommit: folderCommitService, secretScanningV2: secretScanningV2Service, diff --git a/backend/src/services/reminder/reminder-dal.ts b/backend/src/services/reminder/reminder-dal.ts index 4161552a95e..bad70197169 100644 --- a/backend/src/services/reminder/reminder-dal.ts +++ b/backend/src/services/reminder/reminder-dal.ts @@ -148,11 +148,58 @@ export const reminderDALFactory = (db: TDbClient) => { return reminders; }; + const findByProjectAndDateRange = async ( + { + projectId, + startDate, + endDate + }: { + projectId: string; + startDate: Date; + endDate: Date; + }, + tx?: Knex + ) => { + const query = (tx || db.replicaNode())(TableName.Reminder) + .whereNotNull(`${TableName.Reminder}.secretId`) + .whereBetween(`${TableName.Reminder}.nextReminderDate`, [startDate, endDate]) + .join(TableName.SecretV2, `${TableName.Reminder}.secretId`, `${TableName.SecretV2}.id`) + .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) + .join( + TableName.Environment, + `${TableName.SecretFolder}.envId`, + `${TableName.Environment}.id` + ) + .where(`${TableName.Environment}.projectId`, projectId); + + const rawReminders = await query + .select(selectAllTableCols(TableName.Reminder)) + .select( + db.ref("key").withSchema(TableName.SecretV2).as("secretKey"), + db.ref("folderId").withSchema(TableName.SecretV2).as("secretFolderId"), + db.ref("slug").withSchema(TableName.Environment).as("envSlug"), + db.ref("name").withSchema(TableName.Environment).as("envName") + ); + + return rawReminders.map((r) => ({ + id: r.id, + secretId: r.secretId, + secretKey: (r as unknown as Record).secretKey, + nextReminderDate: r.nextReminderDate, + message: r.message, + repeatDays: r.repeatDays, + folderId: (r as unknown as Record).secretFolderId, + envSlug: (r as unknown as Record).envSlug, + envName: (r as unknown as Record).envName + })); + }; + return { ...reminderOrm, findSecretDailyReminders, findUpcomingReminders, findSecretReminder, - findSecretReminders + findSecretReminders, + findByProjectAndDateRange }; }; diff --git a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts index 13295398038..c01fc9178c0 100644 --- a/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts +++ b/backend/src/services/secret-v2-bridge/secret-v2-bridge-dal.ts @@ -1128,6 +1128,52 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { } }; + const findStaleByProject = async ( + projectId: string, + staleBeforeDate: Date, + pagination?: { offset: number; limit: number }, + tx?: Knex + ) => { + try { + const result = await (tx || db.replicaNode())(TableName.SecretV2) + .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .where(`${TableName.Environment}.projectId`, projectId) + .whereNull(`${TableName.SecretV2}.userId`) + .where(`${TableName.SecretV2}.updatedAt`, "<", staleBeforeDate) + .select( + `${TableName.SecretV2}.key`, + `${TableName.SecretV2}.updatedAt`, + `${TableName.SecretV2}.folderId`, + `${TableName.Environment}.slug as environment` + ) + .orderBy(`${TableName.SecretV2}.updatedAt`, "asc") + .offset(pagination?.offset ?? 0) + .limit(pagination?.limit ?? 50); + + return result as { key: string; updatedAt: Date; folderId: string; environment: string }[]; + } catch (error) { + throw new DatabaseError({ error, name: "findStaleByProject" }); + } + }; + + const countStaleByProject = async (projectId: string, staleBeforeDate: Date, tx?: Knex) => { + try { + const result = await (tx || db.replicaNode())(TableName.SecretV2) + .join(TableName.SecretFolder, `${TableName.SecretV2}.folderId`, `${TableName.SecretFolder}.id`) + .join(TableName.Environment, `${TableName.SecretFolder}.envId`, `${TableName.Environment}.id`) + .where(`${TableName.Environment}.projectId`, projectId) + .whereNull(`${TableName.SecretV2}.userId`) + .where(`${TableName.SecretV2}.updatedAt`, "<", staleBeforeDate) + .count("* as count") + .first(); + + return Number((result as { count?: string | number })?.count ?? 0); + } catch (error) { + throw new DatabaseError({ error, name: "countStaleByProject" }); + } + }; + return { ...secretOrm, update, @@ -1144,6 +1190,8 @@ export const secretV2BridgeDALFactory = ({ db, keyStore }: TSecretV2DalArg) => { findReferencedSecretReferences, findAllProjectSecretValues, countByFolderIds, + findStaleByProject, + countStaleByProject, findOne, find, invalidateSecretCacheByProjectId, diff --git a/docs/internals/permissions/project-permissions.mdx b/docs/internals/permissions/project-permissions.mdx index a225341a559..820057b098e 100644 --- a/docs/internals/permissions/project-permissions.mdx +++ b/docs/internals/permissions/project-permissions.mdx @@ -284,6 +284,12 @@ Supports conditions and permission inversion. | `delete-root-credential` | Remove dynamic secrets | `environment`, `secretPath`, `metadata` | | `lease` | Create dynamic secret leases | `environment`, `secretPath`, `metadata` | +#### Subject: `insights` + +| Action | Description | +| ------ | ------------------------------------------------------------------------------------ | +| `read` | View project insights dashboard, including secret access volume, access locations, auth method distribution, and rotation/reminder calendar | + ### Key Management Service (KMS) #### Subject: `kms` diff --git a/frontend/src/const/routes.ts b/frontend/src/const/routes.ts index 97934d127e2..c724a707461 100644 --- a/frontend/src/const/routes.ts +++ b/frontend/src/const/routes.ts @@ -111,6 +111,10 @@ export const ROUTE_PATHS = Object.freeze({ "/organizations/$orgId/projects/secret-management/$projectId/settings", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings" ), + InsightsPage: setRoute( + "/organizations/$orgId/projects/secret-management/$projectId/insights", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights" + ), IntegrationDetailsByIDPage: setRoute( "/organizations/$orgId/projects/secret-management/$projectId/integrations/$integrationId", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/integrations/$integrationId" diff --git a/frontend/src/context/ProjectPermissionContext/index.tsx b/frontend/src/context/ProjectPermissionContext/index.tsx index 9b46b386870..742ddd9726c 100644 --- a/frontend/src/context/ProjectPermissionContext/index.tsx +++ b/frontend/src/context/ProjectPermissionContext/index.tsx @@ -12,6 +12,7 @@ export { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, diff --git a/frontend/src/context/ProjectPermissionContext/types.ts b/frontend/src/context/ProjectPermissionContext/types.ts index 27169a1ad2f..1ab4d19aad4 100644 --- a/frontend/src/context/ProjectPermissionContext/types.ts +++ b/frontend/src/context/ProjectPermissionContext/types.ts @@ -227,6 +227,10 @@ export enum ProjectPermissionAuditLogsActions { Read = "read" } +export enum ProjectPermissionInsightsActions { + Read = "read" +} + export enum ProjectPermissionAppConnectionActions { Read = "read-app-connections", Create = "create-app-connections", @@ -442,7 +446,8 @@ export enum ProjectPermissionSub { McpServers = "mcp-servers", McpActivityLogs = "mcp-activity-logs", ApprovalRequests = "approval-requests", - ApprovalRequestGrants = "approval-request-grants" + ApprovalRequestGrants = "approval-request-grants", + Insights = "insights" } export type SecretSubjectFields = { @@ -729,6 +734,7 @@ export type ProjectPermissionSet = | [ProjectPermissionApprovalRequestActions, ProjectPermissionSub.ApprovalRequests] | [ProjectPermissionApprovalRequestGrantActions, ProjectPermissionSub.ApprovalRequestGrants] | [ProjectPermissionSecretApprovalRequestActions, ProjectPermissionSub.SecretApprovalRequest] + | [ProjectPermissionInsightsActions, ProjectPermissionSub.Insights] | [ ProjectPermissionMcpEndpointActions, ( diff --git a/frontend/src/context/index.tsx b/frontend/src/context/index.tsx index 8a34bfceeac..12d6ef9d01f 100644 --- a/frontend/src/context/index.tsx +++ b/frontend/src/context/index.tsx @@ -25,6 +25,7 @@ export { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, diff --git a/frontend/src/hooks/api/auditLogs/constants.tsx b/frontend/src/hooks/api/auditLogs/constants.tsx index 9274f57e701..16574165527 100644 --- a/frontend/src/hooks/api/auditLogs/constants.tsx +++ b/frontend/src/hooks/api/auditLogs/constants.tsx @@ -245,6 +245,15 @@ export const eventToNameMap: { [K in EventType]: string } = { [EventType.DASHBOARD_GET_SECRET_VALUE]: "Dashboard Get Secret Value", [EventType.DASHBOARD_GET_SECRET_VERSION_VALUE]: "Dashboard Get Secret Version Value", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR]: + "View Secrets Management Calendar Insights", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME]: + "View Secrets Management Access Volume Insights", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS]: + "View Secrets Management Access Locations Insights", + [EventType.VIEW_INSIGHTS_AUTH_METHODS]: "View Machine Identity Auth Methods Insights", + [EventType.VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY]: "View Secrets Management Summary Insights", + [EventType.CREATE_PROJECT_ROLE]: "Create Project Role", [EventType.UPDATE_PROJECT_ROLE]: "Update Project Role", [EventType.DELETE_PROJECT_ROLE]: "Delete Project Role", diff --git a/frontend/src/hooks/api/auditLogs/enums.tsx b/frontend/src/hooks/api/auditLogs/enums.tsx index a74bb03096f..0dea9377f3e 100644 --- a/frontend/src/hooks/api/auditLogs/enums.tsx +++ b/frontend/src/hooks/api/auditLogs/enums.tsx @@ -240,6 +240,12 @@ export enum EventType { DASHBOARD_GET_SECRET_VALUE = "dashboard-get-secret-value", DASHBOARD_GET_SECRET_VERSION_VALUE = "dashboard-get-secret-version-value", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_CALENDAR = "view-insights-secrets-management-calendar", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_VOLUME = "view-insights-secrets-management-access-volume", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_ACCESS_LOCATIONS = "view-insights-secrets-management-access-locations", + VIEW_INSIGHTS_SECRETS_MANAGEMENT_SUMMARY = "view-insights-secrets-management-summary", + VIEW_INSIGHTS_AUTH_METHODS = "view-insights-auth-methods", + CREATE_PROJECT_ROLE = "create-project-role", UPDATE_PROJECT_ROLE = "update-project-role", DELETE_PROJECT_ROLE = "delete-project-role", diff --git a/frontend/src/hooks/api/index.tsx b/frontend/src/hooks/api/index.tsx index a3b6fe219e1..4221f193e26 100644 --- a/frontend/src/hooks/api/index.tsx +++ b/frontend/src/hooks/api/index.tsx @@ -55,6 +55,7 @@ export * from "./secretApproval"; export * from "./secretApprovalRequest"; export * from "./secretFolders"; export * from "./secretImports"; +export * from "./secretInsights"; export * from "./secretRotation"; export * from "./secrets"; export * from "./secretSharing"; diff --git a/frontend/src/hooks/api/secretInsights/index.ts b/frontend/src/hooks/api/secretInsights/index.ts new file mode 100644 index 00000000000..6f6a248854a --- /dev/null +++ b/frontend/src/hooks/api/secretInsights/index.ts @@ -0,0 +1,23 @@ +export { + useGetAuthMethodDistribution, + useGetCalendarInsights, + useGetInsightsSummary, + // useGetSecretAccessLocations, + useGetSecretAccessVolume +} from "./queries"; +export type { + TAccessLocation, + TAuthMethodCount, + TCalendarReminder, + TCalendarRotation, + TGetAuthMethodDistributionDTO, + TGetAuthMethodDistributionResponse, + TGetCalendarInsightsDTO, + TGetCalendarInsightsResponse, + TGetSecretAccessLocationsDTO, + TGetSecretAccessLocationsResponse, + TGetSecretAccessVolumeDTO, + TGetSecretAccessVolumeResponse, + TSecretAccessVolumeActor, + TSecretAccessVolumeDay +} from "./types"; diff --git a/frontend/src/hooks/api/secretInsights/queries.tsx b/frontend/src/hooks/api/secretInsights/queries.tsx new file mode 100644 index 00000000000..c0d72b17053 --- /dev/null +++ b/frontend/src/hooks/api/secretInsights/queries.tsx @@ -0,0 +1,162 @@ +import { useQuery, UseQueryOptions } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + +import { + TGetAuthMethodDistributionDTO, + TGetAuthMethodDistributionResponse, + TGetCalendarInsightsDTO, + TGetCalendarInsightsResponse, + TGetInsightsSummaryDTO, + TGetInsightsSummaryResponse, + // TGetSecretAccessLocationsDTO, + // TGetSecretAccessLocationsResponse, + TGetSecretAccessVolumeDTO, + TGetSecretAccessVolumeResponse +} from "./types"; + +export const secretInsightsKeys = { + all: () => ["secret-insights"] as const, + calendarEvents: (params: TGetCalendarInsightsDTO) => + [...secretInsightsKeys.all(), "calendar-events", params] as const, + accessVolume: (params: TGetSecretAccessVolumeDTO) => + [...secretInsightsKeys.all(), "access-volume", params] as const, + // accessLocations: (params: TGetSecretAccessLocationsDTO) => + // [...secretInsightsKeys.all(), "access-locations", params] as const, + authMethodDistribution: (params: TGetAuthMethodDistributionDTO) => + [...secretInsightsKeys.all(), "auth-method-distribution", params] as const, + summary: (params: TGetInsightsSummaryDTO) => + [...secretInsightsKeys.all(), "summary", params] as const +}; + +const INSIGHTS_STALE_TIME = 5 * 60 * 1000; // 5 minutes + +export const useGetCalendarInsights = ( + params: TGetCalendarInsightsDTO, + options?: Omit< + UseQueryOptions< + TGetCalendarInsightsResponse, + unknown, + TGetCalendarInsightsResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.calendarEvents(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/secrets/calendar", + { params } + ); + return data; + }, + staleTime: INSIGHTS_STALE_TIME, + ...options + }); +}; + +export const useGetSecretAccessVolume = ( + params: TGetSecretAccessVolumeDTO, + options?: Omit< + UseQueryOptions< + TGetSecretAccessVolumeResponse, + unknown, + TGetSecretAccessVolumeResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.accessVolume(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/secrets/access-volume", + { params } + ); + return data; + }, + staleTime: INSIGHTS_STALE_TIME, + ...options + }); +}; + +// export const useGetSecretAccessLocations = ( +// params: TGetSecretAccessLocationsDTO, +// options?: Omit< +// UseQueryOptions< +// TGetSecretAccessLocationsResponse, +// unknown, +// TGetSecretAccessLocationsResponse, +// ReturnType +// >, +// "queryKey" | "queryFn" +// > +// ) => { +// return useQuery({ +// queryKey: secretInsightsKeys.accessLocations(params), +// queryFn: async () => { +// const { data } = await apiRequest.get( +// "/api/v1/insights/secrets/access-locations", +// { params } +// ); +// return data; +// }, +// staleTime: INSIGHTS_STALE_TIME, +// ...options +// }); +// }; + +export const useGetAuthMethodDistribution = ( + params: TGetAuthMethodDistributionDTO, + options?: Omit< + UseQueryOptions< + TGetAuthMethodDistributionResponse, + unknown, + TGetAuthMethodDistributionResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.authMethodDistribution(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/auth/method-distribution", + { params } + ); + return data; + }, + staleTime: INSIGHTS_STALE_TIME, + ...options + }); +}; + +export const useGetInsightsSummary = ( + params: TGetInsightsSummaryDTO, + options?: Omit< + UseQueryOptions< + TGetInsightsSummaryResponse, + unknown, + TGetInsightsSummaryResponse, + ReturnType + >, + "queryKey" | "queryFn" + > +) => { + return useQuery({ + queryKey: secretInsightsKeys.summary(params), + queryFn: async () => { + const { data } = await apiRequest.get( + "/api/v1/insights/secrets/summary", + { params } + ); + return data; + }, + staleTime: INSIGHTS_STALE_TIME, + ...options + }); +}; diff --git a/frontend/src/hooks/api/secretInsights/types.ts b/frontend/src/hooks/api/secretInsights/types.ts new file mode 100644 index 00000000000..71f6909fa38 --- /dev/null +++ b/frontend/src/hooks/api/secretInsights/types.ts @@ -0,0 +1,122 @@ +export type TCalendarRotation = { + id: string; + name: string; + type: string; + nextRotationAt: string | null; + environment: string; + secretPath: string; + secretKeys: string[]; + rotationInterval: number; + rotationStatus: string | null; + isAutoRotationEnabled: boolean; +}; + +export type TCalendarReminder = { + id: string; + secretId: string | null; + secretKey: string; + nextReminderDate: string; + message?: string | null; + environment: string; + secretPath: string; + repeatDays?: number | null; +}; + +export type TGetCalendarInsightsDTO = { + projectId: string; + month: number; + year: number; +}; + +export type TGetCalendarInsightsResponse = { + rotations: TCalendarRotation[]; + reminders: TCalendarReminder[]; +}; + +export type TSecretAccessVolumeActor = { + name: string; + type: string; + count: number; +}; + +export type TSecretAccessVolumeDay = { + date: string; + total: number; + actors: TSecretAccessVolumeActor[]; +}; + +export type TGetSecretAccessVolumeDTO = { + projectId: string; +}; + +export type TGetInsightsSummaryDTO = { + projectId: string; + staleSecretsOffset?: number; + staleSecretsLimit?: number; +}; + +export type TInsightRotationItem = { + name: string; + environment: string; + secretPath: string; + nextRotationAt: string | null; + rotationStatus: string | null; +}; + +export type TInsightReminderItem = { + secretKey: string; + environment: string; + secretPath: string; + nextReminderDate: string; +}; + +export type TInsightStaleSecretItem = { + key: string; + environment: string; + secretPath: string; + updatedAt: string; +}; + +export type TGetInsightsSummaryResponse = { + upcomingRotations: TInsightRotationItem[]; + failedRotations: TInsightRotationItem[]; + upcomingReminders: TInsightReminderItem[]; + overdueReminders: TInsightReminderItem[]; + staleSecrets: TInsightStaleSecretItem[]; + totalStaleCount: number; +}; + +export type TGetSecretAccessVolumeResponse = { + days: TSecretAccessVolumeDay[]; +}; + +export type TAccessLocation = { + lat: number; + lng: number; + city: string; + country: string; + count: number; +}; + +export type TGetSecretAccessLocationsDTO = { + projectId: string; + days?: number; +}; + +export type TGetSecretAccessLocationsResponse = { + locations: TAccessLocation[]; +}; + +export type TAuthMethodCount = { + method: string; + count: number; +}; + +export type TGetAuthMethodDistributionDTO = { + projectId: string; + days?: number; +}; + +export type TGetAuthMethodDistributionResponse = { + methods: TAuthMethodCount[]; +}; diff --git a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx index cb9e780e3c8..7a6f21392af 100644 --- a/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/OrgSidebar/SecretManagerNav.tsx @@ -1,4 +1,4 @@ -import { BookCheck, FileText, Plug, RefreshCw, Settings, Shield } from "lucide-react"; +import { ActivityIcon, BookCheck, FileText, Plug, RefreshCw, Settings, Shield } from "lucide-react"; import { ProjectIcon } from "@app/components/v3"; import { useProject } from "@app/context"; @@ -52,6 +52,7 @@ export const SecretManagerNav = ({ pathSuffix: "secret-rotation", hidden: !secretRotations?.length }, + { label: "Access Control", icon: Shield, @@ -59,6 +60,11 @@ export const SecretManagerNav = ({ activeMatch: /\/groups\/|\/identities\/|\/members\/|\/roles\//, submenu: SECRET_MANAGER_ACCESS_CONTROL_SUBMENU }, + { + label: "Insights", + icon: ActivityIcon, + pathSuffix: "insights" + }, { label: "Audit Logs", icon: FileText, pathSuffix: "audit-logs" }, { label: "Settings", icon: Settings, pathSuffix: "settings", submenu: SM_SETTINGS_SUBMENU } ]; diff --git a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx index 6f33b2c5104..442cb5f2a96 100644 --- a/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx +++ b/frontend/src/pages/project/RoleDetailsBySlugPage/components/ProjectRoleModifySection.utils.tsx @@ -21,6 +21,7 @@ import { ProjectPermissionDynamicSecretActions, ProjectPermissionGroupActions, ProjectPermissionIdentityActions, + ProjectPermissionInsightsActions, ProjectPermissionKmipActions, ProjectPermissionMcpEndpointActions, ProjectPermissionMemberActions, @@ -59,6 +60,10 @@ const AuditLogsPolicyActionSchema = z.object({ [ProjectPermissionAuditLogsActions.Read]: z.boolean().optional() }); +const InsightsPolicyActionSchema = z.object({ + [ProjectPermissionInsightsActions.Read]: z.boolean().optional() +}); + const CertificatePolicyActionSchema = z.object({ [ProjectPermissionCertificateActions.Create]: z.boolean().optional(), [ProjectPermissionCertificateActions.Delete]: z.boolean().optional(), @@ -689,6 +694,7 @@ export const projectRoleFormSchema = z.object({ [ProjectPermissionSub.Settings]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.Environments]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.AuditLogs]: AuditLogsPolicyActionSchema.array().default([]), + [ProjectPermissionSub.Insights]: InsightsPolicyActionSchema.array().default([]), [ProjectPermissionSub.IpAllowList]: GeneralPolicyActionSchema.array().default([]), [ProjectPermissionSub.CertificateAuthorities]: CertificateAuthorityPolicyActionSchema.extend({ inverted: z.boolean().optional(), @@ -1050,7 +1056,8 @@ export const rolePermission2Form = (permissions: TProjectPermission[] = []) => { ProjectPermissionSub.PamResources, ProjectPermissionSub.McpEndpoints, ProjectPermissionSub.McpServers, - ProjectPermissionSub.McpActivityLogs + ProjectPermissionSub.McpActivityLogs, + ProjectPermissionSub.Insights ].includes(subject) ) { // from above statement we are sure it won't be undefined @@ -2457,6 +2464,17 @@ export const PROJECT_PERMISSION_OBJECT: TProjectPermissionObject = { } ] }, + [ProjectPermissionSub.Insights]: { + title: "Insights", + description: "View project analytics and insights dashboards", + actions: [ + { + label: "Read", + value: ProjectPermissionInsightsActions.Read, + description: "View secret access volume, locations, auth methods, and calendar insights" + } + ] + }, [ProjectPermissionSub.IpAllowList]: { title: "IP Allowlist", description: "Restrict project access by IP address", @@ -3394,6 +3412,7 @@ const SecretsManagerPermissionSubjects = (enabled = false) => ({ [ProjectPermissionSub.SecretRotation]: enabled, [ProjectPermissionSub.ServiceTokens]: enabled, [ProjectPermissionSub.Commits]: enabled, + [ProjectPermissionSub.Insights]: enabled, [ProjectPermissionSub.SecretEventSubscriptions]: enabled, [ProjectPermissionSub.SecretApprovalRequest]: enabled }); diff --git a/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx new file mode 100644 index 00000000000..add4ba9c722 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/InsightsPage.tsx @@ -0,0 +1,68 @@ +import { useEffect } from "react"; +import { Helmet } from "react-helmet"; + +import { UpgradePlanModal } from "@app/components/license/UpgradePlanModal"; +import { PageHeader } from "@app/components/v2"; +import { + ProjectPermissionInsightsActions, + ProjectPermissionSub, + useSubscription +} from "@app/context"; +import { withProjectPermission } from "@app/hoc"; +import { ProjectType } from "@app/hooks/api/projects/types"; +import { usePopUp } from "@app/hooks/usePopUp"; + +import { + AuthMethodChart, + CalendarCard, + InsightsSummaryCards, + SecretAccessChart +} from "./components"; + +export const InsightsPage = withProjectPermission( + () => { + const { subscription } = useSubscription(); + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["upgradePlan"] as const); + + useEffect(() => { + if (subscription && !subscription.secretAccessInsights) { + handlePopUpOpen("upgradePlan"); + } + }, [subscription]); + + return ( + <> + + Insights + + + +
+
+ {/* */} + +
+
+ + +
+
+ { + handlePopUpToggle("upgradePlan", isOpen); + }} + text="Your current plan does not include access to secret insights. To unlock this feature, please upgrade your Infisical plan." + /> + + ); + }, + { + action: ProjectPermissionInsightsActions.Read, + subject: ProjectPermissionSub.Insights + } +); diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx new file mode 100644 index 00000000000..7db2e3fdaa9 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/AuthMethodChart.tsx @@ -0,0 +1,178 @@ +import { useMemo } from "react"; +import { InfoIcon } from "lucide-react"; +import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip } from "recharts"; + +import { + Skeleton, + Tooltip as V3Tooltip, + TooltipContent, + TooltipTrigger, + UnstableCard, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle, + UnstableEmpty, + UnstableEmptyHeader, + UnstableEmptyTitle +} from "@app/components/v3"; +import { useProject } from "@app/context"; +import { useGetAuthMethodDistribution } from "@app/hooks/api"; + +// Palette using theme-aligned colors +// 13 muted, dark-theme-friendly base colors (used for legend dots and gradient outer stops) +const COLORS = [ + "#63b0bd", // teal (info) + "#f1c40f", // gold (warning) + "#6dbf8b", // sage green + "#c084d8", // soft purple + "#e8855e", // burnt orange + "#5b9bd5", // steel blue + "#e06b8f", // dusty rose + "#85c46c", // leaf green + "#d4a054", // amber + "#7b8ec4", // periwinkle + "#cb6b6b", // muted red + "#4fc1b0", // seafoam + "#b8a060" // olive gold +]; + +// Radial gradient IDs for each color — fades from color at outer edge to transparent at center +const gradientId = (index: number) => `pie-radial-${index}`; + +export const AuthMethodChart = () => { + const { projectId } = useProject(); + + const { data, isPending } = useGetAuthMethodDistribution( + { projectId, days: 30 }, + { enabled: !!projectId } + ); + + const methods = data?.methods ?? []; + const total = useMemo(() => methods.reduce((sum, m) => sum + m.count, 0), [methods]); + + return ( + + + Authentication Methods + + Distribution of auth methods used for secret access over the past 30 days + + + + {isPending && } + {!isPending && methods.length === 0 && ( + + + No secret access data available + + + )} + {!isPending && methods.length > 0 && ( +
+
+ + + + {COLORS.map((color, i) => ( + + + + + + ))} + + + {methods.map((entry, index) => ( + + ))} + + [ + `${Number(value).toLocaleString()} (${total > 0 ? Math.round((Number(value) / total) * 100) : 0}%)`, + String(name) + ]} + /> + + +
+
+ {methods.map((entry, index) => { + const pct = total > 0 ? Math.round((entry.count / total) * 100) : 0; + return ( +
+ + + {entry.method} + {entry.method === "Unknown" && ( + + + + + +

+ Only new requests will display the auth method. Older requests may not + have this information recorded. +

+
+
+ )} +
+ {pct}% + + {entry.count.toLocaleString()} + +
+ ); + })} +
+
+ + Total + + + {total.toLocaleString()} + +
+
+
+
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx new file mode 100644 index 00000000000..34de74e0798 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarCard.tsx @@ -0,0 +1,79 @@ +import { useState } from "react"; +import { addMonths, format, subMonths } from "date-fns"; +import { ChevronLeft, ChevronRight } from "lucide-react"; + +import { Lottie } from "@app/components/v2"; +import { + UnstableCard, + UnstableCardAction, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle, + UnstableIconButton +} from "@app/components/v3"; +import { useProject } from "@app/context"; +import { useGetCalendarInsights } from "@app/hooks/api"; + +import { CalendarGrid } from "./CalendarGrid"; +import { CalendarLegend } from "./CalendarLegend"; + +export const CalendarCard = () => { + const { projectId } = useProject(); + const [currentMonth, setCurrentMonth] = useState(new Date()); + + const month = currentMonth.getMonth() + 1; + const year = currentMonth.getFullYear(); + + const { data, isPending } = useGetCalendarInsights( + { projectId, month, year }, + { enabled: !!projectId } + ); + + return ( + + + Rotation & Reminder Calendar + + View upcoming secret rotations and reminders + + +
+ setCurrentMonth((prev) => subMonths(prev, 1))} + > + + + + {format(currentMonth, "MMMM yyyy")} + + setCurrentMonth((prev) => addMonths(prev, 1))} + > + + +
+
+
+ +
+ + {isPending && ( +
+ +
+ )} +
+ +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx new file mode 100644 index 00000000000..e7a12842a7e --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarDayCell.tsx @@ -0,0 +1,79 @@ +import { useState } from "react"; +import { isToday } from "date-fns"; + +import { Badge } from "@app/components/v3/generic/Badge"; +import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; + +import { CalendarEventPill } from "./CalendarEventPill"; +import { CalendarEvent } from "./types"; + +const MAX_SLOTS = 2; + +const getBgClass = (today: boolean, isCurrentMonth: boolean) => { + if (today) return isCurrentMonth ? "bg-muted/5" : "bg-card/50"; + return isCurrentMonth ? "bg-container" : "bg-card"; +}; + +export const CalendarDayCell = ({ + date, + isCurrentMonth, + events +}: { + date: Date; + isCurrentMonth: boolean; + events: CalendarEvent[]; +}) => { + const [overflowOpen, setOverflowOpen] = useState(false); + const today = isToday(date); + const dayNum = date.getDate(); + // If everything fits in MAX_SLOTS, show all. Otherwise reserve 1 slot for the overflow badge. + const hasOverflow = events.length > MAX_SLOTS; + const visibleCount = hasOverflow ? MAX_SLOTS - 1 : events.length; + const visibleEvents = events.slice(0, visibleCount); + const overflowCount = events.length - visibleCount; + + return ( +
+
+ {today ? ( + + {dayNum} + + ) : ( + {dayNum} + )} +
+
+ {visibleEvents.map((event) => ( + + ))} + {hasOverflow && ( + + + + + + + +
+ {events.map((event) => ( + + ))} +
+
+
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx new file mode 100644 index 00000000000..7fc58e5d5b7 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventDetail.tsx @@ -0,0 +1,172 @@ +import { Link, useParams } from "@tanstack/react-router"; +import { format, formatDistanceToNow } from "date-fns"; +import { BanIcon, BellIcon, ExternalLink, RefreshCwIcon, XIcon } from "lucide-react"; + +import { + Badge, + Button, + Detail, + DetailGroup, + DetailLabel, + DetailValue, + UnstableSeparator +} from "@app/components/v3"; + +import { CalendarEvent } from "./types"; + +const RotationStatusBadge = ({ + status, + nextRotationAt, + isAutoRotationEnabled +}: { + status: string | null; + nextRotationAt: string | null; + isAutoRotationEnabled: boolean; +}) => { + if (status === "failed") { + return ( + + + Rotation Failed + + ); + } + + if (!isAutoRotationEnabled) { + return ( + + + Auto-Rotation Disabled + + ); + } + + if (!nextRotationAt) { + return Active; + } + + const daysToRotation = (new Date(nextRotationAt).getTime() - Date.now()) / (1000 * 60 * 60 * 24); + + return ( + = 7 ? "info" : "warning"} className="capitalize"> + + {daysToRotation < 0 + ? "Rotating" + : `Rotates ${formatDistanceToNow(new Date(nextRotationAt), { addSuffix: true })}`} + + ); +}; + +const getDateString = (event: CalendarEvent): string => { + if (event.type === "rotation") { + if (!event.data.nextRotationAt) return "N/A"; + return format(new Date(event.data.nextRotationAt), "MMM d, yyyy 'at' h:mm a"); + } + return format(new Date(event.data.nextReminderDate), "MMM d, yyyy"); +}; + +export const CalendarEventDetail = ({ event }: { event: CalendarEvent }) => { + const { orgId, projectId } = useParams({ + strict: false, + select: (p) => ({ + orgId: (p as Record).orgId, + projectId: (p as Record).projectId + }) + }); + + const isRotation = event.type === "rotation"; + const title = isRotation ? event.data.name : event.data.secretKey; + const dateStr = getDateString(event); + const { environment, secretPath } = event.data; + + return ( +
+
+

{title}

+ + {isRotation ? : } + {isRotation ? "Rotation" : "Reminder"} + +
+ + + + Date + {dateStr} + + + Environment + {environment} + + + Path + {secretPath} + + + {isRotation && ( + <> + + Interval + + Every {event.data.rotationInterval} day + {event.data.rotationInterval !== 1 ? "s" : ""} + + + + Status + + + + + + Secret Keys + + {event.data.secretKeys.map((key) =>

{key}

) || "—"} +
+
+ + )} + + {!isRotation && ( + <> + {event.data.message && ( + + Message + {event.data.message} + + )} + {event.data.repeatDays && ( + + Repeat + + Every {event.data.repeatDays} day + {event.data.repeatDays !== 1 ? "s" : ""} + + + )} + + )} +
+ + +
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx new file mode 100644 index 00000000000..226aab3f868 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarEventPill.tsx @@ -0,0 +1,36 @@ +import { useState } from "react"; +import { BellIcon, RefreshCwIcon } from "lucide-react"; + +import { Badge } from "@app/components/v3/generic/Badge"; +import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; + +import { CalendarEventDetail } from "./CalendarEventDetail"; +import { CalendarEvent } from "./types"; + +export const CalendarEventPill = ({ event }: { event: CalendarEvent }) => { + const [open, setOpen] = useState(false); + const label = event.type === "rotation" ? event.data.name : event.data.secretKey; + const isRotation = event.type === "rotation"; + + return ( + + + + + + + + + + + ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx new file mode 100644 index 00000000000..1d7cdc81125 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarGrid.tsx @@ -0,0 +1,87 @@ +import { useMemo } from "react"; +import { + eachDayOfInterval, + endOfMonth, + endOfWeek, + format, + isSameMonth, + startOfMonth, + startOfWeek +} from "date-fns"; + +import { TCalendarReminder, TCalendarRotation } from "@app/hooks/api/secretInsights/types"; + +import { CalendarDayCell } from "./CalendarDayCell"; +import { CalendarEvent } from "./types"; + +const DAY_NAMES = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]; + +const groupEventsByDate = ( + rotations: TCalendarRotation[], + reminders: TCalendarReminder[] +): Record => { + const map: Record = {}; + + rotations.forEach((r) => { + if (!r.nextRotationAt) return; + const key = format(new Date(r.nextRotationAt), "yyyy-MM-dd"); + if (!map[key]) map[key] = []; + map[key].push({ type: "rotation", data: r }); + }); + + reminders.forEach((r) => { + const key = format(new Date(r.nextReminderDate), "yyyy-MM-dd"); + if (!map[key]) map[key] = []; + map[key].push({ type: "reminder", data: r }); + }); + + return map; +}; + +export const CalendarGrid = ({ + currentMonth, + rotations, + reminders +}: { + currentMonth: Date; + rotations: TCalendarRotation[]; + reminders: TCalendarReminder[]; +}) => { + const days = useMemo(() => { + const monthStart = startOfMonth(currentMonth); + const monthEnd = endOfMonth(currentMonth); + const gridStart = startOfWeek(monthStart, { weekStartsOn: 1 }); + const gridEnd = endOfWeek(monthEnd, { weekStartsOn: 1 }); + return eachDayOfInterval({ start: gridStart, end: gridEnd }); + }, [currentMonth]); + + const eventsByDate = useMemo( + () => groupEventsByDate(rotations, reminders), + [rotations, reminders] + ); + + return ( +
+
+ {DAY_NAMES.map((day) => ( +
+ {day} +
+ ))} +
+
+ {days.map((day) => { + const dateKey = format(day, "yyyy-MM-dd"); + return ( + + ); + })} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx new file mode 100644 index 00000000000..871fea844ed --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/CalendarLegend.tsx @@ -0,0 +1,14 @@ +export const CalendarLegend = () => { + return ( +
+
+ + Rotation +
+
+ + Reminder +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx new file mode 100644 index 00000000000..3e748e5e4ba --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/InsightsSummaryCards.tsx @@ -0,0 +1,496 @@ +import { useState } from "react"; +import { useNavigate, useParams } from "@tanstack/react-router"; +import { formatDistanceToNow, parseISO } from "date-fns"; +import { + AlertTriangleIcon, + BellIcon, + CheckIcon, + ChevronLeftIcon, + ChevronRightIcon, + ClockIcon, + ExternalLinkIcon, + RefreshCwIcon +} from "lucide-react"; +import { twMerge } from "tailwind-merge"; + +import { + Badge, + Button, + Skeleton, + UnstableCard, + UnstableCardAction, + UnstableCardContent, + UnstableCardHeader, + UnstableCardTitle, + UnstableIconButton, + UnstableSeparator, + UnstableTable, + UnstableTableBody, + UnstableTableCell, + UnstableTableHead, + UnstableTableHeader, + UnstableTableRow +} from "@app/components/v3"; +import { Popover, PopoverContent, PopoverTrigger } from "@app/components/v3/generic/Popover"; +import { cn } from "@app/components/v3/utils"; +import { useProject } from "@app/context"; +import { useGetInsightsSummary } from "@app/hooks/api"; + +type StatCardProps = { + title: string; + icon: React.ReactNode; + iconVariant: "warning" | "info" | "danger"; + count: number; + totalItems: number; + subtitle: string; + footnote: string; + footnoteVariant: "warning" | "danger" | "success"; + viewLabel: string; + popoverContent?: React.ReactNode; +}; + +const StatCard = ({ + title, + icon, + iconVariant, + count, + totalItems, + subtitle, + footnote, + footnoteVariant, + viewLabel, + popoverContent +}: StatCardProps) => { + const [open, setOpen] = useState(false); + + return ( + + + {title} + +
svg]:size-5", + iconVariant === "info" && "border-info/15 bg-info/10 text-info", + iconVariant === "warning" && "border-warning/15 bg-warning/10 text-warning", + iconVariant === "danger" && "border-danger/15 bg-danger/10 text-danger" + )} + > + {icon} +
+
+
+ +
+ {count} + {subtitle} +
+ +
+ + {footnoteVariant === "success" ? : } + {footnote} + + {popoverContent && ( + + + + + + {popoverContent} + + + )} +
+
+
+ ); +}; + +const overviewRoute = + "/organizations/$orgId/projects/secret-management/$projectId/overview" as const; + +type RotationItem = { + name: string; + environment: string; + secretPath: string; + nextRotationAt: string | null; +}; + +const RotationTable = ({ + failed, + upcoming, + orgId, + projectId +}: { + failed: RotationItem[]; + upcoming: RotationItem[]; + orgId: string; + projectId: string; +}) => { + const navigate = useNavigate(); + const allItems = [ + ...failed.map((item) => ({ ...item, status: "failed" as const })), + ...upcoming.map((item) => ({ ...item, status: "upcoming" as const })) + ]; + + if (!allItems.length) return

No rotations

; + + return ( + + + + Name + Env + Path + Status + + + + + {allItems.map((item) => ( + + navigate({ + to: overviewRoute, + params: { orgId, projectId }, + search: { + search: item.name, + environments: [item.environment], + filterBy: "rotation" + } + }) + } + > + + {item.name} + + + {item.environment} + + + {item.secretPath} + + + {item.status === "failed" ? ( + + {item.nextRotationAt + ? `retries ${formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true })}` + : "failed"} + + ) : ( + + {item.nextRotationAt + ? formatDistanceToNow(parseISO(item.nextRotationAt), { addSuffix: true }) + : "scheduled"} + + )} + + + + + + ))} + + + ); +}; + +type ReminderItem = { + secretKey: string; + environment: string; + secretPath: string; + nextReminderDate: string; +}; + +const ReminderTable = ({ + overdue, + upcoming, + orgId, + projectId +}: { + overdue: ReminderItem[]; + upcoming: ReminderItem[]; + orgId: string; + projectId: string; +}) => { + const navigate = useNavigate(); + const allItems = [ + ...overdue.map((item) => ({ ...item, status: "overdue" as const })), + ...upcoming.map((item) => ({ ...item, status: "upcoming" as const })) + ]; + + if (!allItems.length) return

No reminders

; + + return ( + + + + Secret + Env + Path + Due + + + + + {allItems.map((item) => ( + + navigate({ + to: overviewRoute, + params: { orgId, projectId }, + search: { + search: item.secretKey, + environments: [item.environment], + filterBy: "secret" + } + }) + } + > + + {item.secretKey} + + + {item.environment} + + + {item.secretPath} + + + + {formatDistanceToNow(parseISO(item.nextReminderDate), { addSuffix: true })} + + + + + + + ))} + + + ); +}; + +const PAGE_SIZE = 10; + +const StaleSecretsTable = ({ + items, + totalCount, + page, + onPageChange, + orgId, + projectId +}: { + items: { key: string; environment: string; secretPath: string; updatedAt: string }[]; + totalCount: number; + page: number; + onPageChange: (p: number) => void; + orgId: string; + projectId: string; +}) => { + const navigate = useNavigate(); + const totalPages = Math.ceil(totalCount / PAGE_SIZE); + + if (!totalCount) return

No stale secrets

; + + return ( +
+ + + + Secret + Env + Path + Last Modified + + + + + {items.map((item) => ( + + navigate({ + to: overviewRoute, + params: { orgId, projectId }, + search: { + search: item.key, + environments: [item.environment], + filterBy: "secret" + } + }) + } + > + + {item.key} + + + {item.environment} + + + {item.secretPath} + + + {formatDistanceToNow(parseISO(item.updatedAt), { addSuffix: true })} + + + + + + ))} + + + {totalPages > 1 && ( +
+ + {page * PAGE_SIZE + 1}–{Math.min((page + 1) * PAGE_SIZE, totalCount)} of{" "} + {totalCount} + +
+ onPageChange(page - 1)} + > + + + = totalPages - 1} + onClick={() => onPageChange(page + 1)} + > + + +
+
+ )} +
+ ); +}; + +export const InsightsSummaryCards = () => { + const { projectId } = useProject(); + const { orgId } = useParams({ + strict: false, + select: (p) => ({ orgId: (p as Record).orgId }) + }); + + const [stalePage, setStalePage] = useState(0); + + const { data, isPending } = useGetInsightsSummary( + { + projectId, + staleSecretsOffset: stalePage * PAGE_SIZE, + staleSecretsLimit: PAGE_SIZE + }, + { enabled: !!projectId, placeholderData: (prev) => prev } + ); + + if (isPending) { + return ( +
+ + + +
+ ); + } + + const upcomingRotations = data?.upcomingRotations ?? []; + const failedRotations = data?.failedRotations ?? []; + const upcomingReminders = data?.upcomingReminders ?? []; + const overdueReminders = data?.overdueReminders ?? []; + const staleSecrets = data?.staleSecrets ?? []; + const totalStaleCount = data?.totalStaleCount ?? staleSecrets.length; + + return ( +
+ } + iconVariant="info" + count={upcomingRotations.length} + totalItems={upcomingRotations.length + failedRotations.length} + subtitle="In the next 7 days" + footnote={ + failedRotations.length ? `${failedRotations.length} failed` : "No failed rotations" + } + footnoteVariant={failedRotations.length ? "danger" : "success"} + viewLabel={failedRotations.length ? "View Failed Rotations" : "View Rotations"} + popoverContent={ + + } + /> + } + iconVariant="warning" + count={upcomingReminders.length} + totalItems={upcomingReminders.length + overdueReminders.length} + subtitle="In the next 7 days" + footnote={ + overdueReminders.length ? `${overdueReminders.length} overdue` : "No overdue reminders" + } + footnoteVariant={overdueReminders.length ? "danger" : "success"} + viewLabel={overdueReminders.length ? "View Overdue Reminders" : "View Upcoming Reminders"} + popoverContent={ + + } + /> + } + iconVariant="danger" + count={totalStaleCount} + totalItems={totalStaleCount} + subtitle="Unmodified > 90 days" + footnote={ + totalStaleCount + ? `${totalStaleCount} need${totalStaleCount === 1 ? "s" : ""} review` + : "All secrets up to date" + } + footnoteVariant={totalStaleCount ? "warning" : "success"} + viewLabel="View Stale Secrets" + popoverContent={ + + } + /> +
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx new file mode 100644 index 00000000000..0dd06fe9942 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/LineChart.tsx @@ -0,0 +1,78 @@ +import { + Area, + AreaChart, + CartesianGrid, + ResponsiveContainer, + Tooltip, + XAxis, + YAxis +} from "recharts"; + +export type LineChartDataPoint = { + label: string; + value: number; +}; + +type LineChartProps = { + data: LineChartDataPoint[]; + height?: number; +}; + +export const LineChart = ({ data, height = 280 }: LineChartProps) => { + return ( + + + + + + + + + + + + [Number(value).toLocaleString(), "Requests"]} + /> + + + + ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx new file mode 100644 index 00000000000..4a0dd476d10 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/SecretAccessChart.tsx @@ -0,0 +1,83 @@ +import { useMemo } from "react"; +import { format, parseISO } from "date-fns"; + +import { + Skeleton, + UnstableCard, + UnstableCardContent, + UnstableCardDescription, + UnstableCardHeader, + UnstableCardTitle +} from "@app/components/v3"; +import { useProject } from "@app/context"; +import { useGetSecretAccessVolume } from "@app/hooks/api"; + +import { LineChart } from "./LineChart"; + +export const SecretAccessChart = () => { + const { projectId } = useProject(); + + const { data, isPending } = useGetSecretAccessVolume({ projectId }, { enabled: !!projectId }); + + const chartData = useMemo(() => { + if (!data?.days) return []; + return data.days.map((day) => ({ + label: format(parseISO(day.date), "EEE"), + value: day.total + })); + }, [data]); + + const topActors = useMemo(() => { + if (!data?.days) return []; + const totals = new Map(); + data.days.forEach((day) => { + day.actors.forEach((actor) => { + const key = `${actor.type}:${actor.name}`; + const existing = totals.get(key); + if (existing) { + existing.count += actor.count; + } else { + totals.set(key, { ...actor }); + } + }); + }); + return Array.from(totals.values()) + .sort((a, b) => b.count - a.count) + .slice(0, 5); + }, [data]); + + const totalRequests = chartData.reduce((sum, d) => sum + d.value, 0); + + return ( + + + Secret Access Volume + Secret read requests over the past 7 days + + + {isPending ? ( + + ) : ( +
+ + {topActors.length > 0 && ( +
+ + Top actors — {totalRequests.toLocaleString()} total requests + +
+ {topActors.map((actor) => ( + + {actor.type}: {actor.name}{" "} + ({actor.count.toLocaleString()}) + + ))} +
+
+ )} +
+ )} +
+
+ ); +}; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx b/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx new file mode 100644 index 00000000000..fd236013c97 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/WorldMap.tsx @@ -0,0 +1,348 @@ +// import { useMemo, useState } from "react"; +// import { geoNaturalEarth1, geoPath } from "d3-geo"; +// import { feature } from "topojson-client"; +// import type { Topology } from "topojson-specification"; + +// import { +// Badge, +// Skeleton, +// Tooltip, +// TooltipContent, +// TooltipProvider, +// TooltipTrigger, +// UnstableCard, +// UnstableCardContent, +// UnstableCardDescription, +// UnstableCardHeader, +// UnstableCardTitle +// } from "@app/components/v3"; +// import { useProject } from "@app/context"; +// import { useGetSecretAccessLocations } from "@app/hooks/api"; +// import { TAccessLocation } from "@app/hooks/api/secretInsights/types"; + +// import worldTopoJson from "./countries-110m.json"; + +// // ISO 3166-1 alpha-2 → numeric mapping (covers common countries; extend as needed) +// /* eslint-disable @typescript-eslint/naming-convention */ +// const ALPHA2_TO_NUMERIC: Record = { +// AF: "004", +// AL: "008", +// DZ: "012", +// AR: "032", +// AU: "036", +// AT: "040", +// BD: "050", +// BE: "056", +// BR: "076", +// BG: "100", +// CA: "124", +// CL: "152", +// CN: "156", +// CO: "170", +// HR: "191", +// CZ: "203", +// DK: "208", +// EG: "818", +// EE: "233", +// FI: "246", +// FR: "250", +// DE: "276", +// GR: "300", +// HK: "344", +// HU: "348", +// IN: "356", +// ID: "360", +// IR: "364", +// IQ: "368", +// IE: "372", +// IL: "376", +// IT: "380", +// JP: "392", +// KE: "404", +// KR: "410", +// LV: "428", +// LT: "440", +// MY: "458", +// MX: "484", +// MA: "504", +// NL: "528", +// NZ: "554", +// NG: "566", +// NO: "578", +// PK: "586", +// PE: "604", +// PH: "608", +// PL: "616", +// PT: "620", +// RO: "642", +// RU: "643", +// SA: "682", +// SG: "702", +// ZA: "710", +// ES: "724", +// SE: "752", +// CH: "756", +// TW: "158", +// TH: "764", +// TR: "792", +// UA: "804", +// AE: "784", +// GB: "826", +// US: "840", +// VN: "704", +// KZ: "398", +// CY: "196" +// }; +// /* eslint-enable @typescript-eslint/naming-convention */ + +// const MAX_RADIUS = 10; +// const MIN_RADIUS = 3; + +// // Natural Earth 1 projection — trimmed left (before Hawaii), padded right +// const SVG_WIDTH = 960; +// const SVG_HEIGHT = 460; + +// const projection = geoNaturalEarth1() +// .scale(170) +// .translate([SVG_WIDTH / 2 - 25, SVG_HEIGHT / 2 + 5]); + +// const pathGenerator = geoPath(projection); + +// const geoFeatures = ( +// feature( +// worldTopoJson as unknown as Topology, +// (worldTopoJson as unknown as Topology).objects.countries +// ) as GeoJSON.FeatureCollection +// ).features; + +// // Inactive country base: dark but visible against the card bg +// const INACTIVE_FILL = "#242629"; +// // Stroke between countries +// const BORDER_STROKE = "#3a3c40"; +// // Info color for active country gradient +// const INFO_COLOR = "#63b0bd"; + +// const ResponsiveWorldMap = ({ +// mapLocations, +// countryActivity, +// countryMaxCount, +// getRadius +// }: { +// mapLocations: TAccessLocation[]; +// countryActivity: Map; +// countryMaxCount: number; +// getRadius: (count: number) => number; +// }) => { +// const [hovered, setHovered] = useState(null); + +// // Build gradient definitions for each active country +// const activeCountryGradients = useMemo(() => { +// const gradients: { id: string; topOpacity: number; bottomOpacity: number }[] = []; +// countryActivity.forEach((count, numericCode) => { +// const ratio = count / countryMaxCount; +// // Top of gradient is brighter, bottom fades to the base +// const topOpacity = 0.25 + ratio * 0.55; // 0.25 → 0.80 +// const bottomOpacity = 0.08 + ratio * 0.15; // 0.08 → 0.23 +// gradients.push({ id: numericCode, topOpacity, bottomOpacity }); +// }); +// return gradients; +// }, [countryActivity, countryMaxCount]); + +// const getFill = (id: string, isHover: boolean) => { +// const isActive = countryActivity.has(id); +// if (isHover) { +// return isActive ? `url(#grad-hover-${id})` : "#2f3136"; +// } +// return isActive ? `url(#grad-${id})` : INACTIVE_FILL; +// }; + +// return ( +//
+// +// +// {activeCountryGradients.map((g) => ( +// +// +// +// +// ))} +// {activeCountryGradients.map((g) => ( +// +// +// +// +// ))} +// +// +// {geoFeatures.map((geo) => { +// const id = String(geo.id ?? ""); +// const d = pathGenerator(geo) ?? ""; +// const isHover = hovered === id; +// return ( +// setHovered(id)} +// onMouseLeave={() => setHovered(null)} +// style={{ outline: "none", transition: "fill 0.15s, opacity 0.15s" }} +// /> +// ); +// })} +// +// +// {mapLocations.map((loc) => { +// const coords = projection([loc.lng, loc.lat]); +// if (!coords) return null; +// return ( +// +// +// +// +// +//

+// {loc.city ? `${loc.city}, ${loc.country}` : loc.country} +//

+//

+// {loc.count.toLocaleString()} access{loc.count !== 1 ? "es" : ""} +//

+// +// +// ); +// })} +// +// +//
+// ); +// }; + +// export const WorldMap = () => { +// const { projectId } = useProject(); + +// const { data, isPending } = useGetSecretAccessLocations( +// { projectId, days: 30 }, +// { enabled: !!projectId } +// ); + +// const allLocations = data?.locations ?? []; + +// // Separate local network entries from geo-resolvable locations +// const { mapLocations, localCount } = useMemo(() => { +// const geo: TAccessLocation[] = []; +// let local = 0; +// allLocations.forEach((loc) => { +// if (loc.country === "LOCAL") { +// local += loc.count; +// } else { +// geo.push(loc); +// } +// }); +// return { mapLocations: geo, localCount: local }; +// }, [allLocations]); + +// // Aggregate total access count per country (numeric code) for choropleth fill +// const { countryActivity, countryMaxCount } = useMemo(() => { +// const activity = new Map(); +// mapLocations.forEach((loc) => { +// const numericCode = ALPHA2_TO_NUMERIC[loc.country]; +// if (!numericCode) return; +// activity.set(numericCode, (activity.get(numericCode) || 0) + loc.count); +// }); +// const maxVal = Math.max(...Array.from(activity.values()), 1); +// return { countryActivity: activity, countryMaxCount: maxVal }; +// }, [mapLocations]); + +// const maxCount = useMemo(() => Math.max(...mapLocations.map((l) => l.count), 1), [mapLocations]); + +// const getRadius = (count: number) => { +// const ratio = count / maxCount; +// return MIN_RADIUS + ratio * (MAX_RADIUS - MIN_RADIUS); +// }; + +// const totalAccess = allLocations.reduce((sum, l) => sum + l.count, 0); + +// return ( +// +// +// Secret Access Locations +// +// Geographic distribution of secret access over the past 30 days +// +// +// +// {isPending ? ( +// +// ) : ( +// +// +// {totalAccess > 0 && ( +//
+// {mapLocations.map((loc) => ( +// +// +// {loc.city ? `${loc.city}, ${loc.country}` : loc.country}: +// {" "} +// {loc.count.toLocaleString()} +// +// ))} +// {localCount > 0 && ( +// +// +// +// Local Network: {localCount.toLocaleString()} +// +// +// +//

Local / Private Network

+//

+// {localCount.toLocaleString()} access{localCount !== 1 ? "es" : ""} from +// localhost, Docker, or private IP ranges (127.x, 10.x, 192.168.x) +//

+//
+//
+// )} +//
+// )} +//
+// )} +//
+//
+// ); +// }; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json b/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json new file mode 100644 index 00000000000..055d19ffcf3 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/countries-110m.json @@ -0,0 +1 @@ +{"type":"Topology","objects":{"countries":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[0]],[[1]]],"id":"242","properties":{"name":"Fiji"}},{"type":"Polygon","arcs":[[2,3,4,5,6,7,8,9,10]],"id":"834","properties":{"name":"Tanzania"}},{"type":"Polygon","arcs":[[11,12,13,14]],"id":"732","properties":{"name":"W. Sahara"}},{"type":"MultiPolygon","arcs":[[[15,16,17,18]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]],[[44]],[[45]],[[46]],[[47]]],"id":"124","properties":{"name":"Canada"}},{"type":"MultiPolygon","arcs":[[[-19,48,49,50]],[[51]],[[52]],[[53]],[[54]],[[55]],[[56]],[[57]],[[-17,58]],[[59]]],"id":"840","properties":{"name":"United States of America"}},{"type":"Polygon","arcs":[[60,61,62,63,64,65]],"id":"398","properties":{"name":"Kazakhstan"}},{"type":"Polygon","arcs":[[-63,66,67,68,69]],"id":"860","properties":{"name":"Uzbekistan"}},{"type":"MultiPolygon","arcs":[[[70,71]],[[72]],[[73]],[[74]]],"id":"598","properties":{"name":"Papua New Guinea"}},{"type":"MultiPolygon","arcs":[[[-72,75]],[[76,77]],[[78]],[[79,80]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]]],"id":"360","properties":{"name":"Indonesia"}},{"type":"MultiPolygon","arcs":[[[90,91]],[[92,93,94,95,96,97]]],"id":"032","properties":{"name":"Argentina"}},{"type":"MultiPolygon","arcs":[[[-92,98]],[[99,-95,100,101]]],"id":"152","properties":{"name":"Chile"}},{"type":"Polygon","arcs":[[-8,102,103,104,105,106,107,108,109,110,111]],"id":"180","properties":{"name":"Dem. Rep. Congo"}},{"type":"Polygon","arcs":[[112,113,114,115]],"id":"706","properties":{"name":"Somalia"}},{"type":"Polygon","arcs":[[-3,116,117,118,-113,119]],"id":"404","properties":{"name":"Kenya"}},{"type":"Polygon","arcs":[[120,121,122,123,124,125,126,127]],"id":"729","properties":{"name":"Sudan"}},{"type":"Polygon","arcs":[[-122,128,129,130,131]],"id":"148","properties":{"name":"Chad"}},{"type":"Polygon","arcs":[[132,133]],"id":"332","properties":{"name":"Haiti"}},{"type":"Polygon","arcs":[[-133,134]],"id":"214","properties":{"name":"Dominican Rep."}},{"type":"MultiPolygon","arcs":[[[135]],[[136]],[[137]],[[138]],[[139]],[[140]],[[141,142,143]],[[144]],[[145]],[[146,147,148,149,-66,150,151,152,153,154,155,156,157,158,159,160,161]],[[162]],[[163,164]]],"id":"643","properties":{"name":"Russia"}},{"type":"MultiPolygon","arcs":[[[165]],[[166]],[[167]]],"id":"044","properties":{"name":"Bahamas"}},{"type":"Polygon","arcs":[[168]],"id":"238","properties":{"name":"Falkland Is."}},{"type":"MultiPolygon","arcs":[[[169]],[[-161,170,171,172]],[[173]],[[174]]],"id":"578","properties":{"name":"Norway"}},{"type":"Polygon","arcs":[[175]],"id":"304","properties":{"name":"Greenland"}},{"type":"Polygon","arcs":[[176]],"id":"260","properties":{"name":"Fr. S. Antarctic Lands"}},{"type":"Polygon","arcs":[[177,-77]],"id":"626","properties":{"name":"Timor-Leste"}},{"type":"Polygon","arcs":[[178,179,180,181,182,183,184],[185]],"id":"710","properties":{"name":"South Africa"}},{"type":"Polygon","arcs":[[-186]],"id":"426","properties":{"name":"Lesotho"}},{"type":"Polygon","arcs":[[-50,186,187,188,189]],"id":"484","properties":{"name":"Mexico"}},{"type":"Polygon","arcs":[[190,191,-93]],"id":"858","properties":{"name":"Uruguay"}},{"type":"Polygon","arcs":[[-191,-98,192,193,194,195,196,197,198,199,200]],"id":"076","properties":{"name":"Brazil"}},{"type":"Polygon","arcs":[[-194,201,-96,-100,202]],"id":"068","properties":{"name":"Bolivia"}},{"type":"Polygon","arcs":[[-195,-203,-102,203,204,205]],"id":"604","properties":{"name":"Peru"}},{"type":"Polygon","arcs":[[-196,-206,206,207,208,209,210]],"id":"170","properties":{"name":"Colombia"}},{"type":"Polygon","arcs":[[-209,211,212,213]],"id":"591","properties":{"name":"Panama"}},{"type":"Polygon","arcs":[[-213,214,215,216]],"id":"188","properties":{"name":"Costa Rica"}},{"type":"Polygon","arcs":[[-216,217,218,219]],"id":"558","properties":{"name":"Nicaragua"}},{"type":"Polygon","arcs":[[-219,220,221,222,223]],"id":"340","properties":{"name":"Honduras"}},{"type":"Polygon","arcs":[[-222,224,225]],"id":"222","properties":{"name":"El Salvador"}},{"type":"Polygon","arcs":[[-189,226,227,-223,-226,228]],"id":"320","properties":{"name":"Guatemala"}},{"type":"Polygon","arcs":[[-188,229,-227]],"id":"084","properties":{"name":"Belize"}},{"type":"Polygon","arcs":[[-197,-211,230,231]],"id":"862","properties":{"name":"Venezuela"}},{"type":"Polygon","arcs":[[-198,-232,232,233]],"id":"328","properties":{"name":"Guyana"}},{"type":"Polygon","arcs":[[-199,-234,234,235]],"id":"740","properties":{"name":"Suriname"}},{"type":"MultiPolygon","arcs":[[[-200,-236,236]],[[237,238,239,240,241,242,243,244]],[[245]]],"id":"250","properties":{"name":"France"}},{"type":"Polygon","arcs":[[-205,246,-207]],"id":"218","properties":{"name":"Ecuador"}},{"type":"Polygon","arcs":[[247]],"id":"630","properties":{"name":"Puerto Rico"}},{"type":"Polygon","arcs":[[248]],"id":"388","properties":{"name":"Jamaica"}},{"type":"Polygon","arcs":[[249]],"id":"192","properties":{"name":"Cuba"}},{"type":"Polygon","arcs":[[-181,250,251,252]],"id":"716","properties":{"name":"Zimbabwe"}},{"type":"Polygon","arcs":[[-180,253,254,-251]],"id":"072","properties":{"name":"Botswana"}},{"type":"Polygon","arcs":[[-179,255,256,257,-254]],"id":"516","properties":{"name":"Namibia"}},{"type":"Polygon","arcs":[[258,259,260,261,262,263,264]],"id":"686","properties":{"name":"Senegal"}},{"type":"Polygon","arcs":[[-261,265,266,267,268,269,270]],"id":"466","properties":{"name":"Mali"}},{"type":"Polygon","arcs":[[-13,271,-266,-260,272]],"id":"478","properties":{"name":"Mauritania"}},{"type":"Polygon","arcs":[[273,274,275,276,277]],"id":"204","properties":{"name":"Benin"}},{"type":"Polygon","arcs":[[-131,278,279,-277,280,-268,281,282]],"id":"562","properties":{"name":"Niger"}},{"type":"Polygon","arcs":[[-278,-280,283,284]],"id":"566","properties":{"name":"Nigeria"}},{"type":"Polygon","arcs":[[-130,285,286,287,288,289,-284,-279]],"id":"120","properties":{"name":"Cameroon"}},{"type":"Polygon","arcs":[[-275,290,291,292]],"id":"768","properties":{"name":"Togo"}},{"type":"Polygon","arcs":[[-292,293,294,295]],"id":"288","properties":{"name":"Ghana"}},{"type":"Polygon","arcs":[[-270,296,-295,297,298,299]],"id":"384","properties":{"name":"Côte d'Ivoire"}},{"type":"Polygon","arcs":[[-262,-271,-300,300,301,302,303]],"id":"324","properties":{"name":"Guinea"}},{"type":"Polygon","arcs":[[-263,-304,304]],"id":"624","properties":{"name":"Guinea-Bissau"}},{"type":"Polygon","arcs":[[-299,305,306,-301]],"id":"430","properties":{"name":"Liberia"}},{"type":"Polygon","arcs":[[-302,-307,307]],"id":"694","properties":{"name":"Sierra Leone"}},{"type":"Polygon","arcs":[[-269,-281,-276,-293,-296,-297]],"id":"854","properties":{"name":"Burkina Faso"}},{"type":"Polygon","arcs":[[-108,308,-286,-129,-121,309]],"id":"140","properties":{"name":"Central African Rep."}},{"type":"Polygon","arcs":[[-107,310,311,312,-287,-309]],"id":"178","properties":{"name":"Congo"}},{"type":"Polygon","arcs":[[-288,-313,313,314]],"id":"266","properties":{"name":"Gabon"}},{"type":"Polygon","arcs":[[-289,-315,315]],"id":"226","properties":{"name":"Eq. Guinea"}},{"type":"Polygon","arcs":[[-7,316,317,-252,-255,-258,318,-103]],"id":"894","properties":{"name":"Zambia"}},{"type":"Polygon","arcs":[[-6,319,-317]],"id":"454","properties":{"name":"Malawi"}},{"type":"Polygon","arcs":[[-5,320,-184,321,-182,-253,-318,-320]],"id":"508","properties":{"name":"Mozambique"}},{"type":"Polygon","arcs":[[-183,-322]],"id":"748","properties":{"name":"eSwatini"}},{"type":"MultiPolygon","arcs":[[[-106,322,-311]],[[-104,-319,-257,323]]],"id":"024","properties":{"name":"Angola"}},{"type":"Polygon","arcs":[[-9,-112,324]],"id":"108","properties":{"name":"Burundi"}},{"type":"Polygon","arcs":[[325,326,327,328,329,330,331]],"id":"376","properties":{"name":"Israel"}},{"type":"Polygon","arcs":[[-331,332,333]],"id":"422","properties":{"name":"Lebanon"}},{"type":"Polygon","arcs":[[334]],"id":"450","properties":{"name":"Madagascar"}},{"type":"Polygon","arcs":[[-327,335]],"id":"275","properties":{"name":"Palestine"}},{"type":"Polygon","arcs":[[-265,336]],"id":"270","properties":{"name":"Gambia"}},{"type":"Polygon","arcs":[[337,338,339]],"id":"788","properties":{"name":"Tunisia"}},{"type":"Polygon","arcs":[[-12,340,341,-338,342,-282,-267,-272]],"id":"012","properties":{"name":"Algeria"}},{"type":"Polygon","arcs":[[-326,343,344,345,346,-328,-336]],"id":"400","properties":{"name":"Jordan"}},{"type":"Polygon","arcs":[[347,348,349,350,351]],"id":"784","properties":{"name":"United Arab Emirates"}},{"type":"Polygon","arcs":[[352,353]],"id":"634","properties":{"name":"Qatar"}},{"type":"Polygon","arcs":[[354,355,356]],"id":"414","properties":{"name":"Kuwait"}},{"type":"Polygon","arcs":[[-345,357,358,359,360,-357,361]],"id":"368","properties":{"name":"Iraq"}},{"type":"MultiPolygon","arcs":[[[-351,362,363,364]],[[-349,365]]],"id":"512","properties":{"name":"Oman"}},{"type":"MultiPolygon","arcs":[[[366]],[[367]]],"id":"548","properties":{"name":"Vanuatu"}},{"type":"Polygon","arcs":[[368,369,370,371]],"id":"116","properties":{"name":"Cambodia"}},{"type":"Polygon","arcs":[[-369,372,373,374,375,376]],"id":"764","properties":{"name":"Thailand"}},{"type":"Polygon","arcs":[[-370,-377,377,378,379]],"id":"418","properties":{"name":"Laos"}},{"type":"Polygon","arcs":[[-376,380,381,382,383,-378]],"id":"104","properties":{"name":"Myanmar"}},{"type":"Polygon","arcs":[[-371,-380,384,385]],"id":"704","properties":{"name":"Vietnam"}},{"type":"MultiPolygon","arcs":[[[386,386,386]],[[-147,387,388,389,390]]],"id":"408","properties":{"name":"North Korea"}},{"type":"Polygon","arcs":[[-389,391]],"id":"410","properties":{"name":"South Korea"}},{"type":"Polygon","arcs":[[-149,392]],"id":"496","properties":{"name":"Mongolia"}},{"type":"Polygon","arcs":[[-383,393,394,395,396,397,398,399,400]],"id":"356","properties":{"name":"India"}},{"type":"Polygon","arcs":[[-382,401,-394]],"id":"050","properties":{"name":"Bangladesh"}},{"type":"Polygon","arcs":[[-400,402]],"id":"064","properties":{"name":"Bhutan"}},{"type":"Polygon","arcs":[[-398,403]],"id":"524","properties":{"name":"Nepal"}},{"type":"Polygon","arcs":[[-396,404,405,406,407]],"id":"586","properties":{"name":"Pakistan"}},{"type":"Polygon","arcs":[[-69,408,409,-407,410,411]],"id":"004","properties":{"name":"Afghanistan"}},{"type":"Polygon","arcs":[[-68,412,413,-409]],"id":"762","properties":{"name":"Tajikistan"}},{"type":"Polygon","arcs":[[-62,414,-413,-67]],"id":"417","properties":{"name":"Kyrgyzstan"}},{"type":"Polygon","arcs":[[-64,-70,-412,415,416]],"id":"795","properties":{"name":"Turkmenistan"}},{"type":"Polygon","arcs":[[-360,417,418,419,420,421,-416,-411,-406,422]],"id":"364","properties":{"name":"Iran"}},{"type":"Polygon","arcs":[[-332,-334,423,424,-358,-344]],"id":"760","properties":{"name":"Syria"}},{"type":"Polygon","arcs":[[-420,425,426,427,428]],"id":"051","properties":{"name":"Armenia"}},{"type":"Polygon","arcs":[[-172,429,430]],"id":"752","properties":{"name":"Sweden"}},{"type":"Polygon","arcs":[[-156,431,432,433,434]],"id":"112","properties":{"name":"Belarus"}},{"type":"Polygon","arcs":[[-155,435,-164,436,437,438,439,440,441,442,-432]],"id":"804","properties":{"name":"Ukraine"}},{"type":"Polygon","arcs":[[-433,-443,443,444,445,446,-142,447]],"id":"616","properties":{"name":"Poland"}},{"type":"Polygon","arcs":[[448,449,450,451,452,453,454]],"id":"040","properties":{"name":"Austria"}},{"type":"Polygon","arcs":[[-441,455,456,457,458,-449,459]],"id":"348","properties":{"name":"Hungary"}},{"type":"Polygon","arcs":[[-439,460]],"id":"498","properties":{"name":"Moldova"}},{"type":"Polygon","arcs":[[-438,461,462,463,-456,-440,-461]],"id":"642","properties":{"name":"Romania"}},{"type":"Polygon","arcs":[[-434,-448,-144,464,465]],"id":"440","properties":{"name":"Lithuania"}},{"type":"Polygon","arcs":[[-157,-435,-466,466,467]],"id":"428","properties":{"name":"Latvia"}},{"type":"Polygon","arcs":[[-158,-468,468]],"id":"233","properties":{"name":"Estonia"}},{"type":"Polygon","arcs":[[-446,469,-453,470,-238,471,472,473,474,475,476]],"id":"276","properties":{"name":"Germany"}},{"type":"Polygon","arcs":[[-463,477,478,479,480,481]],"id":"100","properties":{"name":"Bulgaria"}},{"type":"MultiPolygon","arcs":[[[482]],[[-480,483,484,485,486]]],"id":"300","properties":{"name":"Greece"}},{"type":"MultiPolygon","arcs":[[[-359,-425,487,488,-427,-418]],[[-479,489,-484]]],"id":"792","properties":{"name":"Turkey"}},{"type":"Polygon","arcs":[[-486,490,491,492,493]],"id":"008","properties":{"name":"Albania"}},{"type":"Polygon","arcs":[[-458,494,495,496,497,498]],"id":"191","properties":{"name":"Croatia"}},{"type":"Polygon","arcs":[[-452,499,-239,-471]],"id":"756","properties":{"name":"Switzerland"}},{"type":"Polygon","arcs":[[-472,-245,500]],"id":"442","properties":{"name":"Luxembourg"}},{"type":"Polygon","arcs":[[-473,-501,-244,501,502]],"id":"056","properties":{"name":"Belgium"}},{"type":"Polygon","arcs":[[-474,-503,503]],"id":"528","properties":{"name":"Netherlands"}},{"type":"Polygon","arcs":[[504,505]],"id":"620","properties":{"name":"Portugal"}},{"type":"Polygon","arcs":[[-505,506,-242,507]],"id":"724","properties":{"name":"Spain"}},{"type":"Polygon","arcs":[[508,509]],"id":"372","properties":{"name":"Ireland"}},{"type":"Polygon","arcs":[[510]],"id":"540","properties":{"name":"New Caledonia"}},{"type":"MultiPolygon","arcs":[[[511]],[[512]],[[513]],[[514]],[[515]]],"id":"090","properties":{"name":"Solomon Is."}},{"type":"MultiPolygon","arcs":[[[516]],[[517]]],"id":"554","properties":{"name":"New Zealand"}},{"type":"MultiPolygon","arcs":[[[518]],[[519]]],"id":"036","properties":{"name":"Australia"}},{"type":"Polygon","arcs":[[520]],"id":"144","properties":{"name":"Sri Lanka"}},{"type":"MultiPolygon","arcs":[[[521]],[[-61,-150,-393,-148,-391,522,-385,-379,-384,-401,-403,-399,-404,-397,-408,-410,-414,-415]]],"id":"156","properties":{"name":"China"}},{"type":"Polygon","arcs":[[523]],"id":"158","properties":{"name":"Taiwan"}},{"type":"MultiPolygon","arcs":[[[-451,524,525,-240,-500]],[[526]],[[527]]],"id":"380","properties":{"name":"Italy"}},{"type":"MultiPolygon","arcs":[[[-476,528]],[[529]]],"id":"208","properties":{"name":"Denmark"}},{"type":"MultiPolygon","arcs":[[[-510,530]],[[531]]],"id":"826","properties":{"name":"United Kingdom"}},{"type":"Polygon","arcs":[[532]],"id":"352","properties":{"name":"Iceland"}},{"type":"MultiPolygon","arcs":[[[-152,533,-421,-429,534]],[[-419,-426]]],"id":"031","properties":{"name":"Azerbaijan"}},{"type":"Polygon","arcs":[[-153,-535,-428,-489,535]],"id":"268","properties":{"name":"Georgia"}},{"type":"MultiPolygon","arcs":[[[536]],[[537]],[[538]],[[539]],[[540]],[[541]],[[542]]],"id":"608","properties":{"name":"Philippines"}},{"type":"MultiPolygon","arcs":[[[-374,543]],[[-81,544,545,546]]],"id":"458","properties":{"name":"Malaysia"}},{"type":"Polygon","arcs":[[-546,547]],"id":"096","properties":{"name":"Brunei"}},{"type":"Polygon","arcs":[[-450,-459,-499,548,-525]],"id":"705","properties":{"name":"Slovenia"}},{"type":"Polygon","arcs":[[-160,549,-430,-171]],"id":"246","properties":{"name":"Finland"}},{"type":"Polygon","arcs":[[-442,-460,-455,550,-444]],"id":"703","properties":{"name":"Slovakia"}},{"type":"Polygon","arcs":[[-445,-551,-454,-470]],"id":"203","properties":{"name":"Czechia"}},{"type":"Polygon","arcs":[[-126,551,552,553]],"id":"232","properties":{"name":"Eritrea"}},{"type":"MultiPolygon","arcs":[[[554]],[[555]],[[556]]],"id":"392","properties":{"name":"Japan"}},{"type":"Polygon","arcs":[[-193,-97,-202]],"id":"600","properties":{"name":"Paraguay"}},{"type":"Polygon","arcs":[[-364,557,558]],"id":"887","properties":{"name":"Yemen"}},{"type":"Polygon","arcs":[[-346,-362,-356,559,-354,560,-352,-365,-559,561]],"id":"682","properties":{"name":"Saudi Arabia"}},{"type":"MultiPolygon","arcs":[[[562]],[[563]],[[564]],[[565]],[[566]],[[567]],[[568]],[[569]]],"id":"010","properties":{"name":"Antarctica"}},{"type":"Polygon","arcs":[[570,571]],"properties":{"name":"N. Cyprus"}},{"type":"Polygon","arcs":[[-572,572]],"id":"196","properties":{"name":"Cyprus"}},{"type":"Polygon","arcs":[[-341,-15,573]],"id":"504","properties":{"name":"Morocco"}},{"type":"Polygon","arcs":[[-124,574,575,-329,576]],"id":"818","properties":{"name":"Egypt"}},{"type":"Polygon","arcs":[[-123,-132,-283,-343,-340,577,-575]],"id":"434","properties":{"name":"Libya"}},{"type":"Polygon","arcs":[[-114,-119,578,-127,-554,579,580]],"id":"231","properties":{"name":"Ethiopia"}},{"type":"Polygon","arcs":[[-553,581,582,-580]],"id":"262","properties":{"name":"Djibouti"}},{"type":"Polygon","arcs":[[-115,-581,-583,583]],"properties":{"name":"Somaliland"}},{"type":"Polygon","arcs":[[-11,584,-110,585,-117]],"id":"800","properties":{"name":"Uganda"}},{"type":"Polygon","arcs":[[-10,-325,-111,-585]],"id":"646","properties":{"name":"Rwanda"}},{"type":"Polygon","arcs":[[-496,586,587]],"id":"070","properties":{"name":"Bosnia and Herz."}},{"type":"Polygon","arcs":[[-481,-487,-494,588,589]],"id":"807","properties":{"name":"Macedonia"}},{"type":"Polygon","arcs":[[-457,-464,-482,-590,590,591,-587,-495]],"id":"688","properties":{"name":"Serbia"}},{"type":"Polygon","arcs":[[-492,592,-497,-588,-592,593]],"id":"499","properties":{"name":"Montenegro"}},{"type":"Polygon","arcs":[[-493,-594,-591,-589]],"properties":{"name":"Kosovo"}},{"type":"Polygon","arcs":[[594]],"id":"780","properties":{"name":"Trinidad and Tobago"}},{"type":"Polygon","arcs":[[-109,-310,-128,-579,-118,-586]],"id":"728","properties":{"name":"S. Sudan"}}]},"land":{"type":"GeometryCollection","geometries":[{"type":"MultiPolygon","arcs":[[[0]],[[1]],[[3,320,184,255,323,104,322,311,313,315,289,284,273,290,293,297,305,307,302,304,263,336,258,272,13,573,341,338,577,575,329,332,423,487,535,153,435,164,436,461,477,489,484,490,592,497,548,525,240,507,505,506,242,501,503,474,528,476,446,142,464,466,468,158,549,430,172,161,387,391,389,522,385,371,372,543,374,380,401,394,404,422,360,354,559,352,560,347,365,349,362,557,561,346,576,124,551,581,583,115,119],[421,416,64,150,533]],[[17,48,186,229,227,223,219,216,213,209,230,232,234,236,200,191,93,100,203,246,207,211,214,217,220,224,228,189,50,15,58]],[[19]],[[20]],[[21]],[[22]],[[23]],[[24]],[[25]],[[26]],[[27]],[[28]],[[29]],[[30]],[[31]],[[32]],[[33]],[[34]],[[35]],[[36]],[[37]],[[38]],[[39]],[[40]],[[41]],[[42]],[[43]],[[44]],[[45]],[[46]],[[47]],[[51]],[[52]],[[53]],[[54]],[[55]],[[56]],[[57]],[[59]],[[70,75]],[[72]],[[73]],[[74]],[[77,177]],[[78]],[[546,79,544,547]],[[81]],[[82]],[[83]],[[84]],[[85]],[[86]],[[87]],[[88]],[[89]],[[90,98]],[[133,134]],[[135]],[[136]],[[137]],[[138]],[[139]],[[140]],[[144]],[[145]],[[162]],[[165]],[[166]],[[167]],[[168]],[[169]],[[173]],[[174]],[[175]],[[176]],[[245]],[[247]],[[248]],[[249]],[[334]],[[366]],[[367]],[[482]],[[508,530]],[[510]],[[511]],[[512]],[[513]],[[514]],[[515]],[[516]],[[517]],[[518]],[[519]],[[520]],[[521]],[[523]],[[526]],[[527]],[[529]],[[531]],[[532]],[[536]],[[537]],[[538]],[[539]],[[540]],[[541]],[[542]],[[554]],[[555]],[[556]],[[562]],[[563]],[[564]],[[565]],[[566]],[[567]],[[568]],[[569]],[[570,572]],[[594]]]}]}},"arcs":[[[99478,40237],[69,98],[96,-171],[-46,-308],[-172,-81],[-153,73],[-27,260],[107,203],[126,-74]],[[0,41087],[57,27],[-34,-284],[-23,-32],[99822,-145],[-177,-124],[-36,220],[139,121],[88,33],[163,184],[-99999,0]],[[59417,50018],[47,-65],[1007,-1203],[19,-343],[399,-590]],[[60889,47817],[-128,-728],[16,-335],[178,-216],[8,-153],[-76,-357],[16,-180],[-18,-282],[97,-370],[115,-583],[101,-129]],[[61198,44484],[-221,-342],[-303,-230],[-167,10],[-99,-177],[-193,-16],[-73,-74],[-334,166],[-209,-48]],[[59599,43773],[-77,804],[-95,275],[-55,164],[-273,110]],[[59099,45126],[-157,177],[-177,100],[-111,99],[-116,150]],[[58538,45652],[-150,745],[-161,330],[-55,343],[27,307],[-50,544]],[[58149,47921],[115,28],[101,214],[108,308],[69,124],[-3,192],[-60,134],[-16,233]],[[58463,49154],[80,74],[16,348],[-110,333]],[[58449,49909],[98,71],[304,-7],[566,45]],[[47592,66920],[1,-40],[-6,-114]],[[47587,66766],[-1,-895],[-911,31],[9,-1512],[-261,-53],[-68,-304],[53,-853],[-1088,4],[-60,-197]],[[45260,62987],[12,249]],[[45272,63236],[5,-1],[625,48],[33,213],[114,265],[92,816],[386,637],[131,745],[86,44],[91,460],[234,63],[100,-76],[126,0],[90,134],[172,19],[-7,317],[42,0]],[[15878,79530],[-38,1],[-537,581],[-199,255],[-503,244],[-155,523],[40,363],[-356,252],[-48,476],[-336,429],[-6,304]],[[13740,82958],[154,285],[-7,373],[-473,376],[-284,674],[-173,424],[-255,266],[-187,242],[-147,306],[-279,-192],[-270,-330],[-247,388],[-194,259],[-271,164],[-273,17],[1,3364],[2,2193]],[[10837,91767],[518,-142],[438,-285],[289,-54],[244,247],[336,184],[413,-72],[416,259],[455,148],[191,-245],[207,138],[62,278],[192,-63],[470,-530],[369,401],[38,-449],[341,97],[105,173],[337,-34],[424,-248],[650,-217],[383,-100],[272,38],[374,-300],[-390,-293],[502,-127],[750,70],[236,103],[296,-354],[302,299],[-283,251],[179,202],[338,27],[223,59],[224,-141],[279,-321],[310,47],[491,-266],[431,94],[405,-14],[-32,367],[247,103],[431,-200],[-2,-559],[177,471],[223,-16],[126,594],[-298,364],[-324,239],[22,653],[329,429],[366,-95],[281,-261],[378,-666],[-247,-290],[517,-120],[-1,-604],[371,463],[332,-380],[-83,-438],[269,-399],[290,427],[202,510],[16,649],[394,-46],[411,-87],[373,-293],[17,-293],[-207,-315],[196,-316],[-36,-288],[-544,-413],[-386,-91],[-287,178],[-83,-297],[-268,-498],[-81,-259],[-322,-399],[-397,-39],[-220,-250],[-18,-384],[-323,-74],[-340,-479],[-301,-665],[-108,-466],[-16,-686],[409,-99],[125,-553],[130,-448],[388,117],[517,-256],[277,-225],[199,-279],[348,-163],[294,-248],[459,-34],[302,-58],[-45,-511],[86,-594],[201,-661],[414,-561],[214,192],[150,607],[-145,934],[-196,311],[445,276],[314,415],[154,411],[-23,395],[-188,502],[-338,445],[328,619],[-121,535],[-93,922],[194,137],[476,-161],[286,-57],[230,155],[258,-200],[342,-343],[85,-229],[495,-45],[-8,-496],[92,-747],[254,-92],[201,-348],[402,328],[266,652],[184,274],[216,-527],[362,-754],[307,-709],[-112,-371],[370,-333],[250,-338],[442,-152],[179,-189],[110,-500],[216,-78],[112,-223],[20,-664],[-202,-222],[-199,-207],[-458,-210],[-349,-486],[-470,-96],[-594,125],[-417,4],[-287,-41],[-233,-424],[-354,-262],[-401,-782],[-320,-545],[236,97],[446,776],[583,493],[415,58],[246,-289],[-262,-397],[88,-637],[91,-446],[361,-295],[459,86],[278,664],[19,-429],[180,-214],[-344,-387],[-615,-351],[-276,-239],[-310,-426],[-211,44],[-11,500],[483,488],[-445,-19],[-309,-72]],[[31350,77248],[-181,334],[0,805],[-123,171],[-187,-100],[-92,155],[-212,-446],[-84,-460],[-99,-269],[-118,-91],[-89,-30],[-28,-146],[-512,0],[-422,-4],[-125,-109],[-294,-425],[-34,-46],[-89,-231],[-255,1],[-273,-3],[-125,-93],[44,-116],[25,-181],[-5,-60],[-363,-293],[-286,-93],[-323,-316],[-70,0],[-94,93],[-31,85],[6,61],[61,207],[131,325],[81,349],[-56,514],[-59,536],[-290,277],[35,105],[-41,73],[-76,0],[-56,93],[-14,140],[-54,-61],[-75,18],[17,59],[-65,58],[-27,155],[-216,189],[-224,197],[-272,229],[-261,214],[-248,-167],[-91,-6],[-342,154],[-225,-77],[-269,183],[-284,94],[-194,36],[-86,100],[-49,325],[-94,-3],[-1,-227],[-575,0],[-951,0],[-944,0],[-833,0],[-834,0],[-819,0],[-847,0],[-273,0],[-824,0],[-789,0]],[[26668,87478],[207,273],[381,-6],[-6,-114],[-325,-326],[-196,13],[-61,160]],[[27840,93593],[-306,313],[12,213],[133,39],[636,-63],[479,-325],[25,-163],[-296,17],[-299,13],[-304,-80],[-80,36]],[[27690,87261],[107,177],[114,-13],[70,-121],[-108,-310],[-123,50],[-73,176],[13,41]],[[23996,94879],[-151,-229],[-403,44],[-337,155],[148,266],[399,159],[243,-208],[101,-187]],[[23933,96380],[-126,-17],[-521,38],[-74,165],[559,-9],[195,-109],[-33,-68]],[[23124,97116],[332,-205],[-76,-214],[-411,-122],[-226,138],[-119,221],[-22,245],[360,-24],[162,-39]],[[25514,94532],[-449,73],[-738,190],[-96,325],[-34,293],[-279,258],[-574,72],[-322,183],[104,242],[573,-37],[308,-190],[547,1],[240,-194],[-64,-222],[319,-134],[177,-140],[374,-26],[406,-50],[441,128],[566,51],[451,-42],[298,-223],[62,-244],[-174,-157],[-414,-127],[-355,72],[-797,-91],[-570,-11]],[[19093,96754],[392,-92],[-93,-177],[-518,-170],[-411,191],[224,188],[406,60]],[[19177,97139],[361,-120],[-339,-115],[-461,1],[5,84],[285,177],[149,-27]],[[34555,80899],[-148,-372],[-184,-517],[181,199],[187,-126],[-98,-206],[247,-162],[128,144],[277,-182],[-86,-433],[194,101],[36,-313],[86,-367],[-117,-520],[-125,-22],[-183,111],[60,484],[-77,75],[-322,-513],[-166,21],[196,277],[-267,144],[-298,-35],[-539,18],[-43,175],[173,208],[-121,160],[234,356],[287,941],[172,336],[241,204],[129,-26],[-54,-160]],[[26699,89048],[304,-203],[318,-184],[25,-281],[204,46],[199,-196],[-247,-186],[-432,142],[-156,266],[-275,-314],[-396,-306],[-95,346],[-377,-57],[242,292],[35,465],[95,542],[201,-49],[51,-259],[143,91],[161,-155]],[[28119,93327],[263,235],[616,-299],[383,-282],[36,-258],[515,134],[290,-376],[670,-234],[242,-238],[263,-553],[-510,-275],[654,-386],[441,-130],[400,-543],[437,-39],[-87,-414],[-487,-687],[-342,253],[-437,568],[-359,-74],[-35,-338],[292,-344],[377,-272],[114,-157],[181,-584],[-96,-425],[-350,160],[-697,473],[393,-509],[289,-357],[45,-206],[-753,236],[-596,343],[-337,287],[97,167],[-414,304],[-405,286],[5,-171],[-803,-94],[-235,203],[183,435],[522,10],[571,76],[-92,211],[96,294],[360,576],[-77,261],[-107,203],[-425,286],[-563,201],[178,150],[-294,367],[-245,34],[-219,201],[-149,-175],[-503,-76],[-1011,132],[-588,174],[-450,89],[-231,207],[290,270],[-394,2],[-88,599],[213,528],[286,241],[717,158],[-204,-382],[219,-369],[256,477],[704,242],[477,-611],[-42,-387],[550,172]],[[23749,94380],[579,-20],[530,-144],[-415,-526],[-331,-115],[-298,-442],[-317,22],[-173,519],[4,294],[145,251],[276,161]],[[15873,95551],[472,442],[570,383],[426,-9],[381,87],[-38,-454],[-214,-205],[-259,-29],[-517,-252],[-444,-91],[-377,128]],[[13136,82508],[267,47],[-84,-671],[242,-475],[-111,1],[-167,270],[-103,272],[-140,184],[-51,260],[16,188],[131,-76]],[[20696,97433],[546,-81],[751,-215],[212,-281],[108,-247],[-453,66],[-457,192],[-619,21],[268,176],[-335,142],[-21,227]],[[15692,79240],[-140,-82],[-456,269],[-84,209],[-248,207],[-50,168],[-286,107],[-107,321],[24,137],[291,-129],[171,-89],[261,-63],[94,-204],[138,-280],[277,-244],[115,-327]],[[16239,94566],[397,-123],[709,-33],[270,-171],[298,-249],[-349,-149],[-681,-415],[-344,-414],[0,-257],[-731,-285],[-147,259],[-641,312],[119,250],[192,432],[241,388],[-272,362],[939,93]],[[20050,95391],[247,99],[291,-26],[49,-289],[-169,-281],[-940,-91],[-701,-256],[-423,-14],[-35,193],[577,261],[-1255,-70],[-389,106],[379,577],[262,165],[782,-199],[493,-350],[485,-45],[-397,565],[255,215],[286,-68],[94,-282],[109,-210]],[[20410,93755],[311,-239],[175,-575],[86,-417],[466,-293],[502,-279],[-31,-260],[-456,-48],[178,-227],[-94,-217],[-503,93],[-478,160],[-322,-36],[-522,-201],[-704,-88],[-494,-56],[-151,279],[-379,161],[-246,-66],[-343,468],[185,62],[429,101],[392,-26],[362,103],[-537,138],[-594,-47],[-394,12],[-146,217],[644,237],[-428,-9],[-485,156],[233,443],[193,235],[744,359],[284,-114],[-139,-277],[618,179],[386,-298],[314,302],[254,-194],[227,-580],[140,244],[-197,606],[244,86],[276,-94]],[[22100,93536],[-306,386],[329,286],[331,-124],[496,75],[72,-172],[-259,-283],[420,-254],[-50,-532],[-455,-229],[-268,50],[-192,225],[-690,456],[5,189],[567,-73]],[[20389,94064],[372,24],[211,-130],[-244,-390],[-434,413],[95,83]],[[22639,95907],[212,-273],[9,-303],[-127,-440],[-458,-60],[-298,94],[5,345],[-455,-46],[-18,457],[299,-18],[419,201],[390,-34],[22,77]],[[23329,98201],[192,180],[285,42],[-122,135],[646,30],[355,-315],[468,-127],[455,-112],[220,-390],[334,-190],[-381,-176],[-513,-445],[-492,-42],[-575,76],[-299,240],[4,215],[220,157],[-508,-4],[-306,196],[-176,268],[193,262]],[[24559,98965],[413,112],[324,19],[545,96],[409,220],[344,-30],[300,-166],[211,319],[367,95],[498,65],[849,24],[148,-63],[802,100],[601,-38],[602,-37],[742,-47],[597,-75],[508,-161],[-12,-157],[-678,-257],[-672,-119],[-251,-133],[605,3],[-656,-358],[-452,-167],[-476,-483],[-573,-98],[-177,-120],[-841,-64],[383,-74],[-192,-105],[230,-292],[-264,-202],[-429,-167],[-132,-232],[-388,-176],[39,-134],[475,23],[6,-144],[-742,-355],[-726,163],[-816,-91],[-414,71],[-525,31],[-35,284],[514,133],[-137,427],[170,41],[742,-255],[-379,379],[-450,113],[225,229],[492,141],[79,206],[-392,231],[-118,304],[759,-26],[220,-64],[433,216],[-625,68],[-972,-38],[-491,201],[-232,239],[-324,173],[-61,202]],[[29106,90427],[-180,-174],[-312,-30],[-69,289],[118,331],[255,82],[217,-163],[3,-253],[-32,-82]],[[23262,91636],[169,-226],[-173,-207],[-374,179],[-226,-65],[-380,266],[245,183],[194,256],[295,-168],[166,-106],[84,-112]],[[32078,80046],[96,49],[365,-148],[284,-247],[8,-108],[-135,-11],[-360,186],[-258,279]],[[32218,78370],[97,-288],[202,-79],[257,16],[-137,-242],[-102,-38],[-353,250],[-69,198],[105,183]],[[31350,77248],[48,-194],[-296,-286],[-286,-204],[-293,-175],[-147,-351],[-47,-133],[-3,-313],[92,-313],[115,-15],[-29,216],[83,-131],[-22,-169],[-188,-96],[-133,11],[-205,-103],[-121,-29],[-162,-29],[-231,-171],[408,111],[82,-112],[-389,-177],[-177,-1],[8,72],[-84,-164],[82,-27],[-60,-424],[-203,-455],[-20,152],[-61,30],[-91,148],[57,-318],[69,-105],[5,-223],[-89,-230],[-157,-472],[-25,24],[86,402],[-142,225],[-33,491],[-53,-255],[59,-375],[-183,93],[191,-191],[12,-562],[79,-41],[29,-204],[39,-591],[-176,-439],[-288,-175],[-182,-346],[-139,-38],[-141,-217],[-39,-199],[-305,-383],[-157,-281],[-131,-351],[-43,-419],[50,-411],[92,-505],[124,-418],[1,-256],[132,-685],[-9,-398],[-12,-230],[-69,-361],[-83,-75],[-137,72],[-44,259],[-105,136],[-148,508],[-129,452],[-42,231],[57,393],[-77,325],[-217,494],[-108,90],[-281,-268],[-49,30],[-135,275],[-174,147],[-314,-75],[-247,66],[-212,-41],[-114,-92],[50,-157],[-5,-240],[59,-117],[-53,-77],[-103,87],[-104,-112],[-202,18],[-207,312],[-242,-73],[-202,137],[-173,-42],[-234,-138],[-253,-438],[-276,-255],[-152,-282],[-63,-266],[-3,-407],[14,-284],[52,-201]],[[23016,65864],[-108,-18],[-197,130],[-217,184],[-78,277],[-61,414],[-164,337],[-96,346],[-139,404],[-196,236],[-227,-11],[-175,-467],[-230,177],[-144,178],[-69,325],[-92,309],[-165,260],[-142,186],[-102,210],[-481,0],[0,-244],[-221,0],[-552,-4],[-634,416],[-419,287],[26,116],[-353,-64],[-316,-46]],[[17464,69802],[-46,302],[-180,340],[-130,71],[-30,169],[-156,30],[-100,159],[-258,59],[-71,95],[-33,324],[-270,594],[-231,821],[10,137],[-123,195],[-215,495],[-38,482],[-148,323],[61,489],[-10,507],[-89,453],[109,557],[34,536],[33,536],[-50,792],[-88,506],[-80,274],[33,115],[402,-200],[148,-558],[69,156],[-45,484],[-94,485]],[[6833,62443],[49,-51],[45,-79],[71,-207],[-7,-33],[-108,-126],[-89,-92],[-41,-99],[-69,84],[8,165],[-46,216],[14,65],[48,97],[-19,116],[16,55],[21,-11],[107,-100]],[[6668,62848],[-23,-71],[-94,-43],[-47,125],[-32,48],[-3,37],[27,50],[99,-56],[73,-90]],[[6456,63091],[-9,-63],[-149,17],[21,72],[137,-26]],[[6104,63411],[23,-38],[80,-196],[-15,-34],[-19,8],[-97,21],[-35,133],[-11,24],[74,82]],[[5732,63705],[5,-138],[-33,-58],[-93,107],[14,43],[43,58],[64,-12]],[[3759,86256],[220,-54],[27,-226],[-171,-92],[-182,110],[-168,161],[274,101]],[[7436,84829],[185,-40],[117,-183],[-240,-281],[-277,-225],[-142,152],[-43,277],[252,210],[148,90]],[[13740,82958],[-153,223],[-245,188],[-78,515],[-358,478],[-150,558],[-267,38],[-441,15],[-326,170],[-574,613],[-266,112],[-486,211],[-385,-51],[-546,272],[-330,252],[-309,-125],[58,-411],[-154,-38],[-321,-123],[-245,-199],[-308,-126],[-39,348],[125,580],[295,182],[-76,148],[-354,-329],[-190,-394],[-400,-420],[203,-287],[-262,-424],[-299,-248],[-278,-180],[-69,-261],[-434,-305],[-87,-278],[-325,-252],[-191,45],[-259,-165],[-282,-201],[-231,-197],[-477,-169],[-43,99],[304,276],[271,182],[296,324],[345,66],[137,243],[385,353],[62,119],[205,208],[48,448],[141,349],[-320,-179],[-90,102],[-150,-215],[-181,300],[-75,-212],[-104,294],[-278,-236],[-170,0],[-24,352],[50,216],[-179,211],[-361,-113],[-235,277],[-190,142],[-1,334],[-214,252],[108,340],[226,330],[99,303],[225,43],[191,-94],[224,285],[201,-51],[212,183],[-52,270],[-155,106],[205,228],[-170,-7],[-295,-128],[-85,-131],[-219,131],[-392,-67],[-407,142],[-117,238],[-351,343],[390,247],[620,289],[228,0],[-38,-296],[586,23],[-225,366],[-342,225],[-197,296],[-267,252],[-381,187],[155,309],[493,19],[350,270],[66,287],[284,281],[271,68],[526,262],[256,-40],[427,315],[421,-124],[201,-266],[123,114],[469,-35],[-16,-136],[425,-101],[283,59],[585,-186],[534,-56],[214,-77],[370,96],[421,-177],[302,-83]],[[2297,88264],[171,-113],[173,61],[225,-156],[276,-79],[-23,-64],[-211,-125],[-211,128],[-106,107],[-245,-34],[-66,52],[17,223]],[[74266,79657],[-212,-393],[-230,-56],[-13,-592],[-155,-267],[-551,194],[-200,-1058],[-143,-131],[-550,-236],[250,-1026],[-190,-154],[22,-337]],[[72294,75601],[-171,87],[-140,212],[-412,62],[-461,16],[-100,-65],[-396,248],[-158,-122],[-43,-349],[-457,204],[-183,-84],[-62,-259]],[[69711,75551],[-159,-109],[-367,-412],[-121,-422],[-104,-4],[-76,280],[-353,19],[-57,484],[-135,4],[21,593],[-333,431],[-476,-46],[-326,-86],[-265,533],[-227,223],[-431,423],[-52,51],[-715,-349],[11,-2178]],[[65546,74986],[-142,-29],[-195,463],[-188,166],[-315,-123],[-123,-197]],[[64583,75266],[-15,144],[68,246],[-53,206],[-322,202],[-125,530],[-154,150],[-9,192],[270,-56],[11,432],[236,96],[243,-88],[50,576],[-50,365],[-278,-28],[-236,144],[-321,-260],[-259,-124]],[[63639,77993],[-142,96],[29,304],[-177,395],[-207,-17],[-235,401],[160,448],[-81,120],[222,649],[285,-342],[35,431],[573,643],[434,15],[612,-409],[329,-239],[295,249],[440,12],[356,-306],[80,175],[391,-25],[69,280],[-450,406],[267,288],[-52,161],[266,153],[-200,405],[127,202],[1039,205],[136,146],[695,218],[250,245],[499,-127],[88,-612],[290,144],[356,-202],[-23,-322],[267,33],[696,558],[-102,-185],[355,-457],[620,-1500],[148,309],[383,-340],[399,151],[154,-106],[133,-341],[194,-115],[119,-251],[358,79],[147,-361]],[[69711,75551],[83,-58],[-234,-382],[205,-223],[198,147],[329,-311],[-355,-425],[-212,58]],[[69725,74357],[-114,-15],[-40,164],[58,274],[-371,-137],[-89,-380],[-132,-326],[-232,28],[-72,-261],[204,-140],[60,-440],[-156,-598]],[[68841,72526],[-210,124],[-154,4]],[[68477,72654],[7,362],[-369,253],[-291,289],[-181,278],[-317,408],[-137,609],[-93,108],[-301,-27],[-106,121],[-30,471],[-374,312],[-234,-343],[-237,-204],[45,-297],[-313,-8]],[[89166,49043],[482,-407],[513,-338],[192,-302],[154,-297],[43,-349],[462,-365],[68,-313],[-256,-64],[62,-393],[248,-388],[180,-627],[159,20],[-11,-262],[215,-100],[-84,-111],[295,-249],[-30,-171],[-184,-41],[-69,153],[-238,66],[-281,89],[-216,377],[-158,325],[-144,517],[-362,259],[-235,-169],[-170,-195],[35,-436],[-218,-203],[-155,99],[-288,25]],[[89175,45193],[-4,1925],[-5,1925]],[[92399,48417],[106,-189],[33,-307],[-87,-157],[-52,348],[-65,229],[-126,193],[-158,252],[-200,174],[77,143],[150,-166],[94,-130],[117,-142],[111,-248]],[[92027,47129],[-152,-144],[-142,-138],[-148,1],[-228,171],[-158,165],[23,183],[249,-86],[152,46],[42,283],[40,15],[27,-314],[158,45],[78,202],[155,211],[-30,348],[166,11],[56,-97],[-5,-327],[-93,-361],[-146,-48],[-44,-166]],[[92988,47425],[84,-134],[135,-375],[131,-200],[-39,-166],[-78,-59],[-120,227],[-122,375],[-59,450],[38,57],[30,-175]],[[89175,45193],[-247,485],[-282,118],[-69,-168],[-352,-18],[118,481],[175,164],[-72,642],[-134,496],[-538,500],[-229,50],[-417,546],[-82,-287],[-107,-52],[-63,216],[-1,257],[-212,290],[299,213],[198,-11],[-23,156],[-407,1],[-110,352],[-248,109],[-117,293],[374,143],[142,192],[446,-242],[44,-220],[78,-955],[287,-354],[232,627],[319,356],[247,1],[238,-206],[206,-212],[298,-113]],[[84713,45326],[28,-117],[5,-179]],[[84746,45030],[-181,-441],[-238,-130],[-33,71],[25,201],[119,360],[275,235]],[[87280,46506],[-27,445],[49,212],[58,200],[63,-173],[0,-282],[-143,-402]],[[82744,53024],[-158,-533],[204,-560],[-48,-272],[312,-546],[-329,-70],[-93,-403],[12,-535],[-267,-404],[-7,-589],[-107,-903],[-41,210],[-316,-266],[-110,361],[-198,34],[-139,189],[-330,-212],[-101,285],[-182,-32],[-229,68],[-43,793],[-138,164],[-134,505],[-38,517],[32,548],[165,392]],[[80461,51765],[47,-395],[190,-334],[179,121],[177,-43],[162,299],[133,52],[263,-166],[226,126],[143,822],[107,205],[96,672],[319,0],[241,-100]],[[85936,48924],[305,-172],[101,-452],[-234,244],[-232,49],[-157,-39],[-192,21],[65,325],[344,24]],[[85242,48340],[-192,108],[-54,254],[281,29],[69,-195],[-104,-196]],[[85536,51864],[20,-322],[164,-52],[26,-241],[-15,-517],[-143,58],[-42,-359],[114,-312],[-78,-71],[-112,374],[-82,755],[56,472],[92,215]],[[84146,51097],[319,25],[275,429],[48,-132],[-223,-587],[-209,-113],[-267,115],[-463,-29],[-243,-85],[-39,-447],[248,-526],[150,268],[518,201],[-22,-272],[-121,86],[-121,-347],[-245,-229],[263,-757],[-50,-203],[249,-682],[-2,-388],[-148,-173],[-109,207],[134,484],[-273,-229],[-69,164],[36,228],[-200,346],[21,576],[-186,-179],[24,-689],[11,-846],[-176,-85],[-119,173],[79,544],[-43,570],[-117,4],[-86,405],[115,387],[40,469],[139,891],[58,243],[237,439],[217,-174],[350,-82]],[[83414,44519],[-368,414],[259,116],[146,-180],[97,-180],[-17,-159],[-117,-11]],[[83705,45536],[185,45],[249,216],[-41,-328],[-417,-168],[-370,73],[0,216],[220,123],[174,-177]],[[82849,45639],[172,48],[69,-251],[-321,-119],[-193,-79],[-149,5],[95,340],[153,5],[74,209],[100,-158]],[[80134,46785],[38,-210],[533,-59],[61,244],[515,-284],[101,-383],[417,-108],[341,-351],[-317,-225],[-306,238],[-251,-16],[-288,44],[-260,106],[-322,225],[-204,59],[-116,-74],[-506,243],[-48,254],[-255,44],[191,564],[337,-35],[224,-231],[115,-45]],[[78991,49939],[47,-412],[97,-330],[204,-52],[135,-374],[-70,-735],[-11,-914],[-308,-12],[-234,494],[-356,482],[-119,358],[-210,481],[-138,443],[-212,827],[-244,493],[-81,508],[-103,461],[-250,372],[-145,506],[-209,330],[-290,652],[-24,300],[178,-24],[430,-114],[246,-577],[215,-401],[153,-246],[263,-635],[283,-9],[233,-405],[161,-495],[211,-270],[-111,-482],[159,-205],[100,-15]],[[30935,19481],[106,-274],[139,-443],[361,-355],[389,-147],[-125,-296],[-264,-29],[-141,208]],[[31400,18145],[-168,16],[-297,1],[0,1319]],[[33993,32727],[-70,-473],[-74,-607],[3,-588],[-61,-132],[-21,-382]],[[33770,30545],[-19,-308],[353,-506],[-38,-408],[173,-257],[-14,-289],[-267,-757],[-412,-317],[-557,-123],[-305,59],[59,-352],[-57,-442],[51,-298],[-167,-208],[-284,-82],[-267,216],[-108,-155],[39,-587],[188,-178],[152,186],[82,-307],[-255,-183],[-223,-367],[-41,-595],[-66,-316],[-262,-2],[-218,-302],[-80,-443],[273,-433],[266,-119],[-96,-531],[-328,-333],[-180,-692],[-254,-234],[-113,-276],[89,-614],[185,-342],[-117,30]],[[30952,19680],[-257,93],[-672,79],[-115,344],[6,443],[-185,-38],[-98,214],[-24,626],[213,260],[88,375],[-33,299],[148,504],[101,782],[-30,347],[122,112],[-30,223],[-129,118],[92,248],[-126,224],[-65,682],[112,120],[-47,720],[65,605],[75,527],[166,215],[-84,576],[-1,543],[210,386],[-7,494],[159,576],[1,544],[-72,108],[-128,1020],[171,607],[-27,572],[100,537],[182,555],[196,367],[-83,232],[58,190],[-9,985],[302,291],[96,614],[-34,148]],[[31359,37147],[231,534],[364,-144],[163,-427],[109,475],[316,-24],[45,-127]],[[32587,37434],[511,-964],[227,-89],[339,-437],[286,-231],[40,-261],[-273,-898],[280,-160],[312,-91],[220,95],[252,453],[45,521]],[[34826,35372],[138,114],[139,-341],[-6,-472],[-234,-326],[-186,-241],[-314,-573],[-370,-806]],[[31400,18145],[-92,-239],[-238,-183],[-137,19],[-164,48],[-202,177],[-291,86],[-350,330],[-283,317],[-383,662],[229,-124],[390,-395],[369,-212],[143,271],[90,405],[256,244],[198,-70]],[[30669,40193],[136,-402],[37,-426],[146,-250],[-88,-572],[150,-663],[109,-814],[200,81]],[[30952,19680],[-247,4],[-134,-145],[-250,-213],[-45,-552],[-118,-14],[-313,192],[-318,412],[-346,338],[-87,374],[79,346],[-140,393],[-36,1007],[119,568],[293,457],[-422,172],[265,522],[94,982],[309,-208],[145,1224],[-186,157],[-87,-738],[-175,83],[87,845],[95,1095],[127,404],[-80,576],[-22,666],[117,19],[170,954],[192,945],[118,881],[-64,885],[83,487],[-34,730],[163,721],[50,1143],[89,1227],[87,1321],[-20,967],[-58,832]],[[30452,39739],[143,151],[74,303]],[[58538,45652],[-109,60],[-373,-99],[-75,-71],[-79,-377],[62,-261],[-49,-699],[-34,-593],[75,-105],[194,-230],[76,107],[23,-637],[-212,5],[-114,325],[-103,252],[-213,82],[-62,310],[-170,-187],[-222,83],[-93,268],[-176,55],[-131,-15],[-15,184],[-96,15]],[[56642,44124],[-127,35],[-172,-89],[-121,15],[-68,-54],[15,703],[-93,219],[-21,363],[41,356],[-56,228],[-5,372],[-337,-5],[24,213],[-142,-2],[-15,-103],[-172,-23],[-69,-344],[-42,-148],[-154,83],[-91,-83],[-184,-47],[-106,309],[-64,191],[-80,354],[-68,440],[-820,8],[-98,-71],[-80,11],[-115,-79]],[[53422,46976],[-39,183]],[[53383,47159],[71,62],[9,258],[45,152],[101,124]],[[53609,47755],[73,-60],[95,226],[152,-6],[17,-167],[104,-105],[164,370],[161,289],[71,189],[-10,486],[121,574],[127,304],[183,285],[32,189],[7,216],[45,205],[-14,335],[34,524],[55,368],[83,316],[16,357]],[[55125,52650],[25,412],[108,300],[149,190],[229,-200],[177,-218],[203,-59],[207,-115],[83,357],[38,46],[127,-60],[309,295],[110,-125],[90,18],[41,143],[104,51],[209,-62],[178,-14],[91,63]],[[57603,53672],[169,-488],[124,-71],[75,99],[128,-39],[155,125],[66,-252],[244,-393]],[[58564,52653],[-16,-691],[111,-80],[-89,-210],[-107,-157],[-106,-308],[-59,-274],[-15,-475],[-65,-225],[-2,-446]],[[58216,49787],[-80,-165],[-10,-351],[-38,-46],[-26,-323]],[[58062,48902],[70,-268],[17,-713]],[[61551,49585],[-165,488],[-3,2152],[243,670]],[[61626,52895],[76,186],[178,11],[247,417],[362,26],[785,1773]],[[63274,55308],[194,493],[125,363],[0,308],[0,596],[1,244],[2,9]],[[63596,57321],[89,12],[128,88],[147,59],[132,202],[105,2],[6,-163],[-25,-344],[1,-310],[-59,-214],[-78,-639],[-134,-659],[-172,-755],[-238,-866],[-237,-661],[-327,-806],[-278,-479],[-415,-586],[-259,-450],[-304,-715],[-64,-312],[-63,-140]],[[59417,50018],[-3,627],[80,239],[137,391],[101,431],[-123,678],[-32,296],[-132,411]],[[59445,53091],[171,352],[188,390]],[[59804,53833],[145,-99],[0,-332],[95,-194],[193,0],[352,-502],[87,-6],[65,16],[62,-68],[185,-47],[82,247],[254,247],[112,-200],[190,0]],[[61551,49585],[-195,-236],[-68,-246],[-104,-44],[-40,-416],[-89,-238],[-54,-393],[-112,-195]],[[56824,55442],[-212,258],[-96,170],[-18,184],[45,246],[-1,241],[-160,369],[-31,253]],[[56351,57163],[3,143],[-102,174],[-3,343],[-58,228],[-98,-34],[28,217],[72,246],[-32,245],[92,181],[-58,138],[73,365],[127,435],[240,-41],[-14,2345]],[[56621,62148],[3,248],[320,2],[0,1180]],[[56944,63578],[1117,0],[1077,0],[1102,0]],[[60240,63578],[90,-580],[-61,-107],[40,-608],[102,-706],[106,-145],[152,-219]],[[60669,61213],[-141,-337],[-204,-97],[-88,-181],[-27,-393],[-120,-868],[30,-236]],[[60119,59101],[-45,-508],[-112,-582],[-168,-293],[-119,-451],[-28,-241],[-132,-166],[-82,-618],[4,-531]],[[59437,55711],[-3,460],[-39,12],[5,294],[-33,203],[-143,233],[-34,426],[34,436],[-129,41],[-19,-132],[-167,-30],[67,-173],[23,-355],[-152,-324],[-138,-426],[-144,-61],[-233,345],[-105,-122],[-29,-172],[-143,-112],[-9,-122],[-277,0],[-38,122],[-200,20],[-100,-101],[-77,51],[-143,344],[-48,163],[-200,-81],[-76,-274],[-72,-528],[-95,-111],[-85,-65],[189,-230]],[[56351,57163],[-176,-101],[-141,-239],[-201,-645],[-261,-273],[-269,36],[-78,-54],[28,-208],[-145,-207],[-118,-230],[-350,-226],[-69,134],[-46,11],[-52,-152],[-229,-44]],[[54244,54965],[43,160],[-87,407],[-39,245],[-121,100],[-164,345],[60,279],[127,-60],[78,42],[155,-6],[-151,537],[10,393],[-18,392],[-111,378]],[[54026,58177],[28,279],[-178,13],[0,380],[-115,219],[120,778],[354,557],[15,769],[107,1199],[60,254],[-116,203],[-4,188],[-104,153],[-68,919]],[[54125,64088],[280,323],[1108,-1132],[1108,-1131]],[[30080,62227],[24,-321],[-21,-228],[-68,-99],[71,-177],[-5,-161]],[[30081,61241],[-185,100],[-131,-41],[-169,43],[-130,-110],[-149,184],[24,190],[256,-82],[210,-47],[100,131],[-127,256],[2,226],[-175,92],[62,163],[170,-26],[241,-93]],[[30080,62227],[34,101],[217,-3],[165,-152],[73,15],[50,-209],[152,11],[-9,-176],[124,-21],[136,-217],[-103,-240],[-132,128],[-127,-25],[-92,28],[-50,-107],[-106,-37],[-43,144],[-92,-85],[-111,-405],[-71,94],[-14,170]],[[76049,98451],[600,133],[540,-297],[640,-572],[-69,-531],[-606,-73],[-773,170],[-462,226],[-213,423],[-379,117],[722,404]],[[78565,97421],[704,-336],[-82,-240],[-1566,-228],[507,776],[229,66],[208,-38]],[[88563,95563],[734,-26],[1004,-313],[-219,-439],[-1023,16],[-461,-139],[-550,384],[149,406],[366,111]],[[91172,95096],[697,-155],[-321,-234],[-444,53],[-516,233],[66,192],[518,-89]],[[88850,93928],[263,234],[348,54],[394,-226],[34,-155],[-421,-4],[-569,66],[-49,31]],[[62457,98194],[542,107],[422,8],[57,-160],[159,142],[262,97],[412,-129],[-107,-90],[-373,-78],[-250,-45],[-39,-97],[-324,-98],[-301,140],[158,185],[-618,18]],[[56314,82678],[-511,-9],[-342,67]],[[55461,82736],[63,260],[383,191]],[[55907,83187],[291,-103],[123,-94],[-30,-162],[23,-150]],[[64863,94153],[665,518],[-75,268],[621,312],[917,380],[925,110],[475,220],[541,76],[193,-233],[-187,-184],[-984,-293],[-848,-282],[-863,-562],[-414,-577],[-435,-568],[56,-491],[531,-484],[-164,-52],[-907,77],[-74,262],[-503,158],[-40,320],[284,126],[-10,323],[551,503],[-255,73]],[[89698,82309],[96,-569],[-7,-581],[114,-597],[280,-1046],[-411,195],[-171,-854],[271,-605],[-8,-413],[-211,356],[-182,-457],[-51,496],[31,575],[-32,638],[64,446],[13,790],[-163,581],[24,808],[257,271],[-110,274],[123,83],[73,-391]],[[86327,75524],[-39,104]],[[86288,75628],[-2,300],[142,16],[40,698],[-73,506],[238,208],[338,-104],[186,575],[96,647],[107,216],[146,532],[-459,-175],[-240,-233],[-423,1],[-112,555],[-329,420],[-483,189],[-103,579],[-97,363],[-104,254],[-172,596],[-244,217],[-415,176],[-369,-16],[-345,-106],[-229,-294],[152,-141],[4,-326],[-155,-189],[-251,-627],[3,-260],[-392,-373],[-333,223]],[[82410,80055],[-331,-49],[-146,198],[-166,63],[-407,-416],[-366,-98],[-255,-146],[-350,96],[-258,-6],[-168,302],[-272,284],[-279,78],[-351,-78],[-263,-109],[-394,248],[-53,443],[-327,152],[-252,69],[-311,244],[-288,-612],[113,-348],[-270,-411],[-402,148],[-277,22],[-186,276],[-289,8],[-242,182],[-423,-278],[-530,-509],[-292,-102]],[[74375,79706],[-109,-49]],[[63639,77993],[-127,-350],[-269,-97],[-276,-610],[252,-561],[-27,-398],[303,-696]],[[63495,75281],[-166,-238],[-48,-150],[-122,40],[-191,359],[-78,20]],[[62890,75312],[-175,137],[-85,242],[-259,124],[-169,-93],[-48,110],[-378,283],[-409,96],[-235,101],[-34,-70]],[[61098,76242],[-354,499],[-317,223],[-240,347],[202,95],[231,494],[-156,234],[410,241],[-8,129],[-249,-95]],[[60617,78409],[9,262],[143,165],[269,43],[44,197],[-62,326],[113,310],[-3,173],[-410,192],[-162,-6],[-172,277],[-213,-94],[-352,208],[6,116],[-99,256],[-222,29],[-23,183],[70,120],[-178,334],[-288,-57],[-84,30],[-70,-134],[-104,23]],[[58829,81362],[-68,379],[-66,196],[54,55],[224,-20],[108,129],[-80,157],[-187,104],[16,107],[-113,108],[-174,387],[60,159],[-27,277],[-272,141],[-146,-70],[-39,146],[-293,149]],[[57826,83766],[-89,348],[-24,287],[-134,136]],[[57579,84537],[120,187],[-83,551],[198,341],[-42,103]],[[57772,85719],[316,327],[-291,280]],[[57797,86326],[594,755],[258,341],[105,301],[-411,405],[113,385],[-250,440],[187,506],[-323,673],[256,445],[-425,394],[41,414]],[[57942,91385],[224,54],[473,237]],[[58639,91676],[286,206],[456,-358],[761,-140],[1050,-668],[213,-281],[18,-393],[-308,-311],[-454,-157],[-1240,449],[-204,-75],[453,-433],[18,-274],[18,-604],[358,-180],[217,-153],[36,286],[-168,254],[177,224],[672,-368],[233,144],[-186,433],[647,578],[256,-34],[260,-206],[161,406],[-231,352],[136,353],[-204,367],[777,-190],[158,-331],[-351,-73],[1,-328],[219,-203],[429,128],[68,377],[580,282],[970,507],[209,-29],[-273,-359],[344,-61],[199,202],[521,16],[412,245],[317,-356],[315,391],[-291,343],[145,195],[820,-179],[385,-185],[1006,-675],[186,309],[-282,313],[-8,125],[-335,58],[92,280],[-149,461],[-8,189],[512,535],[183,537],[206,116],[736,-156],[57,-328],[-263,-479],[173,-189],[89,-413],[-63,-809],[307,-362],[-120,-395],[-544,-839],[318,-87],[110,213],[306,151],[74,293],[240,281],[-162,336],[130,390],[-304,49],[-67,328],[222,593],[-361,482],[497,398],[-64,421],[139,13],[145,-328],[-109,-570],[297,-108],[-127,426],[465,233],[577,31],[513,-337],[-247,492],[-28,630],[483,119],[669,-26],[602,77],[-226,309],[321,388],[319,16],[540,293],[734,79],[93,162],[729,55],[227,-133],[624,314],[510,-10],[77,255],[265,252],[656,242],[476,-191],[-378,-146],[629,-90],[75,-292],[254,143],[812,-7],[626,-289],[223,-221],[-69,-307],[-307,-175],[-730,-328],[-209,-175],[345,-83],[410,-149],[251,112],[141,-379],[122,153],[444,93],[892,-97],[67,-276],[1162,-88],[15,451],[590,-104],[443,4],[449,-312],[128,-378],[-165,-247],[349,-465],[437,-240],[268,620],[446,-266],[473,159],[538,-182],[204,166],[455,-83],[-201,549],[367,256],[2509,-384],[236,-351],[727,-451],[1122,112],[553,-98],[231,-244],[-33,-432],[342,-168],[372,121],[492,15],[525,-116],[526,66],[484,-526],[344,189],[-224,378],[123,262],[886,-165],[578,36],[799,-282],[-99610,-258],[681,-451],[728,-588],[-24,-367],[187,-147],[-64,429],[754,-88],[544,-553],[-276,-257],[-455,-61],[-7,-578],[-111,-122],[-260,17],[-212,206],[-369,172],[-62,257],[-283,96],[-315,-76],[-151,207],[60,219],[-333,-140],[126,-278],[-158,-251],[99997,-3],[-357,-260],[-360,44],[250,-315],[166,-487],[128,-159],[32,-244],[-71,-157],[-518,129],[-777,-445],[-247,-69],[-425,-415],[-403,-362],[-102,-269],[-397,409],[-724,-464],[-126,219],[-268,-253],[-371,81],[-90,-388],[-333,-572],[10,-239],[316,-132],[-37,-860],[-258,-22],[-119,-494],[116,-255],[-486,-302],[-96,-674],[-415,-144],[-83,-600],[-400,-551],[-103,407],[-119,862],[-155,1313],[134,819],[234,353],[14,276],[432,132],[496,744],[479,608],[499,471],[223,833],[-337,-50],[-167,-487],[-705,-649],[-227,727],[-717,-201],[-696,-990],[230,-362],[-620,-154],[-430,-61],[20,427],[-431,90],[-344,-291],[-850,102],[-914,-175],[-899,-1153],[-1065,-1394],[438,-74],[136,-370],[270,-132],[178,295],[305,-38],[401,-650],[9,-503],[-217,-590],[-23,-705],[-126,-945],[-418,-855],[-94,-409],[-377,-688],[-374,-682],[-179,-349],[-370,-346],[-175,-8],[-175,287],[-373,-432],[-43,-197]],[[0,92833],[36,24],[235,-1],[402,-169],[-24,-81],[-286,-141],[-363,-36],[99694,-30],[-49,187],[-99645,247]],[[59287,77741],[73,146],[198,-127],[89,-23],[36,-117],[42,-18]],[[59725,77602],[2,-51],[136,-142],[284,35],[-55,-210],[-304,-103],[-377,-342],[-154,121],[61,277],[-304,173],[50,113],[265,197],[-42,71]],[[28061,66408],[130,47],[184,-18],[8,-153],[-303,-95],[-19,219]],[[28391,66555],[220,-265],[-48,-420],[-51,75],[4,309],[-124,234],[-1,67]],[[28280,65474],[84,-23],[97,-491],[1,-343],[-68,-29],[-70,340],[-104,171],[60,375]],[[33000,19946],[333,354],[236,-148],[167,237],[222,-266],[-83,-207],[-375,-177],[-125,207],[-236,-266],[-139,266]],[[54206,97653],[105,202],[408,20],[350,-206],[915,-440],[-699,-233],[-155,-435],[-243,-111],[-132,-490],[-335,-23],[-598,361],[252,210],[-416,170],[-541,499],[-216,463],[757,212],[152,-207],[396,8]],[[57942,91385],[117,414],[-356,235],[-431,-200],[-137,-433],[-265,-262],[-298,143],[-362,-29],[-309,312],[-167,-156]],[[55734,91409],[-172,-24],[-41,-389],[-523,95],[-74,-329],[-267,2],[-183,-421],[-278,-655],[-431,-831],[101,-202],[-97,-234],[-275,10],[-180,-554],[17,-784],[177,-300],[-92,-694],[-231,-405],[-122,-341]],[[53063,85353],[-187,363],[-548,-684],[-371,-138],[-384,301],[-99,635],[-88,1363],[256,381],[733,496],[549,609],[508,824],[668,1141],[465,444],[763,741],[610,259],[457,-31],[423,489],[506,-26],[499,118],[869,-433],[-358,-158],[305,-371]],[[57613,97879],[-412,-318],[-806,-70],[-819,98],[-50,163],[-398,11],[-304,271],[858,165],[403,-142],[281,177],[702,-148],[545,-207]],[[56867,96577],[-620,-241],[-490,137],[191,152],[-167,189],[575,119],[110,-222],[401,-134]],[[37010,99398],[932,353],[975,-27],[354,218],[982,57],[2219,-74],[1737,-469],[-513,-227],[-1062,-26],[-1496,-58],[140,-105],[984,65],[836,-204],[540,181],[231,-212],[-305,-344],[707,220],[1348,229],[833,-114],[156,-253],[-1132,-420],[-157,-136],[-888,-102],[643,-28],[-324,-431],[-224,-383],[9,-658],[333,-386],[-434,-24],[-457,-187],[513,-313],[65,-502],[-297,-55],[360,-508],[-617,-42],[322,-241],[-91,-208],[-391,-91],[-388,-2],[348,-400],[4,-263],[-549,244],[-143,-158],[375,-148],[364,-361],[105,-476],[-495,-114],[-214,228],[-344,340],[95,-401],[-322,-311],[732,-25],[383,-32],[-745,-515],[-755,-466],[-813,-204],[-306,-2],[-288,-228],[-386,-624],[-597,-414],[-192,-24],[-370,-145],[-399,-138],[-238,-365],[-4,-415],[-141,-388],[-453,-472],[112,-462],[-125,-488],[-142,-577],[-391,-36],[-410,482],[-556,3],[-269,324],[-186,577],[-481,735],[-141,385],[-38,530],[-384,546],[100,435],[-186,208],[275,691],[418,220],[110,247],[58,461],[-318,-209],[-151,-88],[-249,-84],[-341,193],[-19,401],[109,314],[258,9],[567,-157],[-478,375],[-249,202],[-276,-83],[-232,147],[310,550],[-169,220],[-220,409],[-335,626],[-353,230],[3,247],[-745,346],[-590,43],[-743,-24],[-677,-44],[-323,188],[-482,372],[729,186],[559,31],[-1188,154],[-627,241],[39,229],[1051,285],[1018,284],[107,214],[-750,213],[243,235],[961,413],[404,63],[-115,265],[658,156],[854,93],[853,5],[303,-184],[737,325],[663,-221],[390,-46],[577,-192],[-660,318],[38,253]],[[69148,21851],[179,-186],[263,-74],[9,-112],[-77,-269],[-427,-38],[-7,314],[41,244],[19,121]],[[84713,45326],[32,139],[239,133],[194,20],[87,74],[105,-74],[-102,-160],[-289,-258],[-233,-170]],[[54540,33696],[133,292],[109,-162],[47,-252],[125,-43],[175,-112],[149,43],[248,302],[0,2182]],[[55526,35946],[75,-88],[165,-562],[-26,-360],[62,-207],[199,60],[139,264],[132,177],[68,283],[135,137],[117,-71],[133,-166],[226,-29],[178,138],[28,184],[48,283],[152,47],[83,222],[93,393],[249,442],[393,435]],[[58175,37528],[113,-7],[134,-100],[94,71],[148,-59]],[[58664,37433],[133,-832],[72,-419],[-49,-659],[23,-212]],[[58843,35311],[-140,108],[-80,-42],[-26,-172],[-76,-222],[2,-204],[166,-320],[163,63],[56,263]],[[58908,34785],[211,-5]],[[59119,34780],[-70,-430],[-32,-491],[-72,-267],[-190,-298],[-54,-86],[-118,-300],[-77,-303],[-158,-424],[-314,-609],[-196,-355],[-210,-269],[-290,-229],[-141,-31],[-36,-164],[-169,88],[-138,-113],[-301,114],[-168,-72],[-115,31],[-286,-233],[-238,-94],[-171,-223],[-127,-14],[-117,210],[-94,11],[-120,264],[-13,-82],[-37,159],[2,346],[-90,396],[89,108],[-7,453],[-182,553],[-139,501],[-1,1],[-199,768]],[[58049,33472],[-121,182],[-130,-120],[-151,-232],[-148,-374],[209,-454],[99,59],[51,188],[155,93],[47,192],[85,288],[-96,178]],[[23016,65864],[-107,-518],[-49,-426],[-20,-791],[-27,-289],[48,-322],[86,-288],[56,-458],[184,-440],[65,-337],[109,-291],[295,-157],[114,-247],[244,165],[212,60],[208,106],[175,101],[176,241],[67,345],[22,496],[48,173],[188,155],[294,137],[246,-21],[169,50],[66,-125],[-9,-285],[-149,-351],[-66,-360],[51,-103],[-42,-255],[-69,-461],[-71,152],[-58,-10]],[[25472,61510],[-53,-8],[-99,-357],[-51,70],[-33,-27],[2,-87]],[[25238,61101],[-257,7],[-259,-1],[-1,-333],[-125,-1],[103,-198],[103,-136],[31,-128],[45,-36],[-7,-201],[-357,-2],[-133,-481],[39,-111],[-32,-138],[-7,-172]],[[24381,59170],[-314,636],[-144,191],[-226,155],[-156,-43],[-223,-223],[-140,-58],[-196,156],[-208,112],[-260,271],[-208,83],[-314,275],[-233,282],[-70,158],[-155,35],[-284,187],[-116,270],[-299,335],[-139,373],[-66,288],[93,57],[-29,169],[64,153],[1,204],[-93,266],[-25,235],[-94,298],[-244,587],[-280,462],[-135,368],[-238,241],[-51,145],[42,365],[-142,138],[-164,287],[-69,412],[-149,48],[-162,311],[-130,288],[-12,184],[-149,446],[-99,452],[5,227],[-201,234],[-93,-25],[-159,163],[-44,-240],[46,-284],[27,-444],[95,-243],[206,-407],[46,-139],[42,-42],[37,-203],[49,8],[56,-381],[85,-150],[59,-210],[174,-300],[92,-550],[83,-259],[77,-277],[15,-311],[134,-20],[112,-268],[100,-264],[-6,-106],[-117,-217],[-49,3],[-74,359],[-181,337],[-201,286],[-142,150],[9,432],[-42,320],[-132,183],[-191,264],[-37,-76],[-70,154],[-171,143],[-164,343],[20,44],[115,-33],[103,221],[10,266],[-214,422],[-163,163],[-102,369],[-103,388],[-129,472],[-113,531]],[[33993,32727],[180,63],[279,-457],[103,18],[286,-379],[218,-327],[160,-402],[-122,-280],[77,-334]],[[35174,30629],[-121,-372],[-313,-328],[-205,118],[-151,-63],[-256,253],[-189,-19],[-169,327]],[[34826,35372],[54,341],[38,350],[0,325],[-100,107],[-104,-96],[-103,26],[-33,228],[-26,541],[-52,177],[-187,160],[-114,-116],[-293,113],[18,802],[-82,329]],[[33842,38659],[87,122],[-27,337],[77,259],[49,465],[-66,367],[-151,166],[-30,233],[41,342],[-533,24],[-107,688],[81,10],[-3,255],[-55,172],[-12,342],[-161,175],[-175,-6],[-115,172],[-188,117],[-109,220],[-311,98],[-302,529],[23,396],[-34,227],[29,443],[-363,-100],[-147,-222],[-243,-239],[-62,-179],[-143,-13],[-206,50]],[[30686,44109],[-157,-102],[-126,68],[18,898],[-228,-348],[-245,15],[-105,315],[-184,34],[59,254],[-155,359],[-115,532],[73,108],[0,250],[168,171],[-28,319],[71,206],[20,275],[318,402],[227,114],[37,89],[251,-28]],[[30585,48040],[125,1620],[6,256],[-43,339],[-123,215],[1,430],[156,97],[56,-61],[9,226],[-162,61],[-4,370],[541,-13],[92,203],[77,-187],[55,-349],[52,73]],[[31423,51320],[153,-312],[216,38],[54,181],[206,138],[115,97],[32,250],[198,168],[-15,124],[-235,51],[-39,372],[12,396],[-125,153],[52,55],[206,-76],[221,-148],[80,140],[200,92],[310,221],[102,225],[-37,167]],[[33129,53652],[145,26],[64,-136],[-36,-259],[96,-90],[63,-274],[-77,-209],[-44,-502],[71,-299],[20,-274],[171,-277],[137,-29],[30,116],[88,25],[126,104],[90,157],[154,-50],[67,21]],[[34294,51702],[151,-48],[25,120],[-46,118],[28,171],[112,-53],[131,61],[159,-125]],[[34854,51946],[121,-122],[86,160],[62,-25],[38,-166],[133,42],[107,224],[85,436],[164,540]],[[35650,53035],[95,28],[69,-327],[155,-1033],[149,-97],[7,-408],[-208,-487],[86,-178],[491,-92],[10,-593],[211,388],[349,-212],[462,-361],[135,-346],[-45,-327],[323,182],[540,-313],[415,23],[411,-489],[355,-662],[214,-170],[237,-24],[101,-186],[94,-752],[46,-358],[-110,-977],[-142,-385],[-391,-822],[-177,-668],[-206,-513],[-69,-11],[-78,-435],[20,-1107],[-77,-910],[-30,-390],[-88,-233],[-49,-790],[-282,-771],[-47,-610],[-225,-256],[-65,-355],[-302,2],[-437,-227],[-195,-263],[-311,-173],[-327,-470],[-235,-586],[-41,-441],[46,-326],[-51,-597],[-63,-289],[-195,-325],[-308,-1040],[-244,-468],[-189,-277],[-127,-562],[-183,-337]],[[33842,38659],[-4,182],[-259,302],[-258,9],[-484,-172],[-133,-520],[-7,-318],[-110,-708]],[[30669,40193],[175,638],[-119,496],[63,199],[-49,219],[108,295],[6,503],[13,415],[60,200],[-240,951]],[[30452,39739],[-279,340],[-24,242],[-551,593],[-498,646],[-214,365],[-115,488],[46,170],[-236,775],[-274,1090],[-262,1177],[-114,269],[-87,435],[-216,386],[-198,239],[90,264],[-134,563],[86,414],[221,373]],[[27693,48568],[33,-246],[-79,-141],[8,-216],[114,47],[113,-64],[116,-298],[157,243],[53,398],[170,514],[334,233],[303,619],[86,384],[-38,449]],[[29063,50490],[74,56],[184,-280],[89,-279],[129,-152],[163,-620],[207,-74],[153,157],[101,-103],[166,51],[213,-276],[-179,-602],[83,-14],[139,-314]],[[29063,50490],[-119,140],[-137,195],[-79,-94],[-235,82],[-68,255],[-52,-10],[-278,338]],[[28095,51396],[-37,183],[103,44],[-12,296],[65,214],[138,40],[117,371],[106,310],[-102,141],[52,343],[-62,540],[59,155],[-44,500],[-112,315]],[[28366,54848],[36,287],[89,-43],[52,176],[-64,348],[34,86]],[[28513,55702],[143,-18],[209,412],[114,63],[3,195],[51,500],[159,274],[175,11],[22,123],[218,-49],[218,298],[109,132],[134,285],[98,-36],[73,-156],[-54,-199]],[[30185,57537],[-178,-99],[-71,-295],[-107,-169],[-81,-220],[-34,-422],[-77,-345],[144,-40],[35,-271],[62,-130],[21,-238],[-33,-219],[10,-123],[69,-49],[66,-207],[357,57],[161,-75],[196,-508],[112,63],[200,-32],[158,68],[99,-102],[-50,-318],[-62,-199],[-22,-423],[56,-393],[79,-175],[9,-133],[-140,-294],[100,-130],[74,-207],[85,-589]],[[28366,54848],[-93,170],[-59,319],[68,158],[-70,40],[-52,196],[-138,164],[-122,-38],[-56,-205],[-112,-149],[-61,-20],[-27,-123],[132,-321],[-75,-76],[-40,-87],[-130,-30],[-48,353],[-36,-101],[-92,35],[-56,238],[-114,39],[-72,69],[-119,-1],[-8,-128],[-32,89]],[[26954,55439],[14,117],[23,120],[-10,107],[41,70],[-58,88],[-1,238],[107,53]],[[27070,56232],[100,-212],[-6,-126],[111,-26],[26,48],[77,-145],[136,42],[119,150],[168,119],[95,176],[153,-34],[-10,-58],[155,-21],[124,-102],[90,-177],[105,-164]],[[26954,55439],[-151,131],[-56,124],[32,103],[-11,130],[-77,142],[-109,116],[-95,76],[-19,173],[-73,105],[18,-172],[-55,-141],[-64,164],[-89,58],[-38,120],[2,179],[36,187],[-78,83],[64,114]],[[26191,57131],[42,76],[183,-156],[63,77],[89,-50],[46,-121],[82,-40],[66,126]],[[26762,57043],[70,-321],[108,-238],[130,-252]],[[26191,57131],[-96,186],[-130,238],[-61,200],[-117,185],[-140,267],[31,91],[46,-88],[21,41]],[[25745,58251],[86,25],[35,135],[41,5],[-6,290],[65,14],[58,-4],[60,158],[82,-120],[29,74],[51,70],[97,163],[4,121],[27,-5],[36,141],[29,17],[47,-90],[56,-27],[61,76],[70,0],[97,77],[38,81],[95,-12]],[[26903,59440],[-24,-57],[-14,-132],[29,-216],[-64,-202],[-30,-237],[-9,-261],[15,-152],[7,-266],[-43,-58],[-26,-253],[19,-156],[-56,-151],[12,-159],[43,-97]],[[25745,58251],[-48,185],[-84,51]],[[25613,58487],[19,237],[-38,64],[-57,42],[-122,-70],[-10,79],[-84,95],[-60,118],[-82,50]],[[25179,59102],[58,150],[-22,116],[20,113],[131,166],[127,225]],[[25493,59872],[29,-23],[61,104],[79,8],[26,-48],[43,29],[129,-53],[128,15],[90,66],[32,66],[89,-31],[66,-40],[73,14],[55,51],[127,-82],[44,-13],[85,-110],[80,-132],[101,-91],[73,-162]],[[25613,58487],[-31,-139],[-161,9],[-100,57],[-115,117],[-154,37],[-79,127]],[[24973,58695],[9,86],[95,149],[52,66],[-15,69],[65,37]],[[25238,61101],[-2,-468],[-22,-667],[83,0]],[[25297,59966],[90,-107],[24,88],[82,-75]],[[24973,58695],[-142,103],[-174,11],[-127,117],[-149,244]],[[25472,61510],[1,-87],[53,-3],[-5,-160],[-45,-256],[24,-91],[-29,-212],[18,-56],[-32,-299],[-55,-156],[-50,-19],[-55,-205]],[[30185,57537],[-8,-139],[-163,-69],[91,-268],[-3,-309],[-123,-344],[105,-468],[120,38],[62,427],[-86,208],[-14,447],[346,241],[-38,278],[97,186],[100,-415],[195,-9],[180,-330],[11,-195],[249,-6],[297,61],[159,-264],[213,-74],[155,185],[4,149],[344,35],[333,9],[-236,-175],[95,-279],[222,-44],[210,-291],[45,-473],[144,13],[109,-139]],[[33400,55523],[-220,-347],[-24,-215],[95,-220],[-69,-110],[-171,-95],[5,-273],[-75,-163],[188,-448]],[[33400,55523],[183,-217],[171,-385],[8,-304],[105,-14],[149,-289],[109,-205]],[[34125,54109],[-44,-532],[-169,-154],[15,-139],[-51,-305],[123,-429],[89,-1],[37,-333],[169,-514]],[[34125,54109],[333,-119],[30,107],[225,43],[298,-159]],[[35011,53981],[-144,-508],[22,-404],[109,-351],[-49,-254],[-24,-270],[-71,-248]],[[35011,53981],[95,-65],[204,-140],[294,-499],[46,-242]],[[51718,79804],[131,-155],[400,-109],[-140,-404],[-35,-421]],[[52074,78715],[-77,-101],[-126,54],[9,-150],[-203,-332],[-5,-267],[133,92],[95,-259]],[[51900,77752],[-11,-167],[82,-222],[-97,-180],[72,-457],[151,-75],[-32,-256]],[[52065,76395],[-252,-334],[-548,160],[-404,-192],[-32,-355]],[[50829,75674],[-322,-77],[-313,267],[-101,-127],[-511,268],[-111,230]],[[49471,76235],[144,354],[53,1177],[-287,620],[-205,299],[-424,227],[-28,431],[360,129],[466,-152],[-88,669],[263,-254],[646,461],[84,484],[243,119]],[[50698,80799],[40,-207],[129,-10],[129,-237],[194,-279],[143,46],[243,-269]],[[51576,79843],[62,-52],[80,13]],[[52429,75765],[179,226],[47,-507],[-92,-456],[-126,120],[-64,398],[56,219]],[[27693,48568],[148,442],[-60,258],[-106,-275],[-166,259],[56,167],[-47,536],[97,89],[52,368],[105,381],[-20,241],[153,126],[190,236]],[[31588,61519],[142,-52],[50,-118],[-71,-149],[-209,4],[-163,-21],[-16,253],[40,86],[227,-3]],[[28453,61504],[187,-53],[147,-142],[46,-161],[-195,-11],[-84,-99],[-156,95],[-159,215],[34,135],[116,41],[64,-20]],[[27147,64280],[240,-42],[219,-7],[261,-201],[110,-216],[260,66],[98,-138],[235,-366],[173,-267],[92,8],[165,-120],[-20,-167],[205,-24],[210,-242],[-33,-138],[-185,-75],[-187,-29],[-191,46],[-398,-57],[186,329],[-113,154],[-179,39],[-96,171],[-66,336],[-157,-23],[-259,159],[-83,124],[-362,91],[-97,115],[104,148],[-273,30],[-199,-307],[-115,-8],[-40,-144],[-138,-65],[-118,56],[146,183],[60,213],[126,131],[142,116],[210,56],[67,65]],[[58175,37528],[-177,267],[-215,90],[-82,375],[0,208],[-119,64],[-315,649],[-87,342],[-56,105],[-107,473]],[[57017,40101],[311,-65],[90,-68],[94,13],[154,383],[241,486],[100,46],[33,205],[159,235],[210,81]],[[58409,41417],[18,-220],[232,12],[128,-125],[60,-146],[132,-43],[145,-190],[0,-748],[-54,-409],[-12,-442],[45,-175],[-31,-348],[-42,-53],[-74,-426],[-292,-671]],[[55526,35946],[0,1725],[274,20],[8,2105],[207,19],[428,207],[106,-243],[177,231],[85,2],[156,133]],[[56967,40145],[50,-44]],[[54540,33696],[-207,446],[-108,432],[-62,575],[-68,428],[-93,910],[-7,707],[-35,322],[-108,243],[-144,489],[-146,708],[-60,371],[-226,577],[-17,453]],[[53259,40357],[134,113],[166,100],[180,-17],[166,-267],[42,41],[1126,26],[192,-284],[673,-83],[510,241]],[[56448,40227],[228,134],[180,-34],[109,-133],[2,-49]],[[45357,58612],[-115,460],[-138,210],[122,112],[134,415],[66,304]],[[45426,60113],[96,189],[138,-51],[135,129],[155,6],[133,-173],[184,-157],[168,-435],[184,-405]],[[46619,59216],[13,-368],[54,-338],[104,-166],[24,-229],[-13,-184]],[[46801,57931],[-40,-33],[-151,47],[-21,-66],[-61,-13],[-200,144],[-134,6]],[[46194,58016],[-513,25],[-75,-67],[-92,19],[-147,-96]],[[45367,57897],[-46,453]],[[45321,58350],[253,-13],[67,83],[50,5],[103,136],[119,-124],[121,-11],[120,133],[-56,170],[-92,-99],[-86,3],[-110,145],[-88,-9],[-63,-140],[-302,-17]],[[46619,59216],[93,107],[47,348],[88,14],[194,-165],[157,117],[107,-39],[42,131],[1114,9],[62,414],[-48,73],[-134,2550],[-134,2550],[425,10]],[[48632,65335],[937,-1289],[937,-1289],[66,-277],[173,-169],[129,-96],[3,-376],[308,58]],[[51185,61897],[1,-1361],[-152,-394],[-24,-364],[-247,-94],[-379,-51],[-102,-210],[-178,-23]],[[50104,59400],[-178,-3],[-70,114],[-153,-84],[-259,-246],[-53,-184],[-216,-265],[-38,-152],[-116,-120],[-134,79],[-76,-144],[-41,-405],[-221,-490],[7,-200],[-76,-250],[18,-343]],[[48498,56707],[-114,-88],[-65,-74],[-43,253],[-80,-67],[-48,11],[-51,-172],[-215,5],[-77,89],[-36,-54]],[[47769,56610],[-85,170],[15,176],[-35,69],[-59,-58],[11,192],[57,152],[-114,248],[-33,163],[-62,130],[-55,15],[-67,-83],[-90,-79],[-76,-128],[-119,48],[-77,150],[-46,19],[-73,-78],[-44,-1],[-16,216]],[[47587,66766],[1045,-1431]],[[45426,60113],[-24,318],[78,291],[34,557],[-30,583],[-34,294],[28,295],[-72,281],[-146,255]],[[50747,54278],[-229,-69]],[[50518,54209],[-69,407],[13,1357],[-56,122],[-11,290],[-96,207],[-85,174],[35,311]],[[50249,57077],[96,67],[56,258],[136,56],[61,176]],[[50598,57634],[93,173],[100,2],[212,-340]],[[51003,57469],[-11,-197],[62,-350],[-54,-238],[29,-159],[-135,-366],[-86,-181],[-52,-372],[7,-376],[-16,-952]],[[54026,58177],[-78,-34],[-9,-188]],[[53939,57955],[-52,-13],[-188,647],[-65,24],[-217,-331],[-215,173],[-150,34],[-80,-83],[-163,18],[-164,-252],[-141,-14],[-337,305],[-131,-145],[-142,10],[-104,223],[-279,221],[-298,-70],[-72,-128],[-39,-340],[-80,-238],[-19,-527]],[[50598,57634],[6,405],[-320,134],[-9,286],[-156,386],[-37,269],[22,286]],[[51185,61897],[392,263],[804,1161],[952,1126]],[[53333,64447],[439,-255],[156,-324],[197,220]],[[53939,57955],[110,-235],[-31,-107],[-14,-196],[-234,-457],[-74,-377],[-39,-307],[-59,-132],[-56,-414],[-148,-243],[-43,-299],[-63,-238],[-26,-246],[-191,-199],[-156,243],[-105,-10],[-165,-345],[-81,-6],[-132,-570],[-71,-418]],[[52361,53399],[-289,-213],[-105,31],[-107,-132],[-222,13],[-149,370],[-91,427],[-197,389],[-209,-7],[-245,1]],[[54244,54965],[-140,-599],[-67,-107],[-21,-458],[28,-249],[-23,-176],[132,-309],[23,-212],[103,-305],[127,-190],[12,-269],[29,-172]],[[54447,51919],[-20,-319],[-220,140],[-225,156],[-350,23]],[[53632,51919],[-35,32],[-164,-76],[-169,79],[-132,-38]],[[53132,51916],[-452,13]],[[52680,51929],[40,466],[-108,391],[-127,100],[-56,265],[-72,85],[4,163]],[[50518,54209],[-224,-126]],[[50294,54083],[-62,207],[-74,375],[-22,294],[61,532],[-69,215],[-27,466],[1,429],[-116,305],[20,184]],[[50006,57090],[243,-13]],[[50294,54083],[-436,-346],[-154,-203],[-250,-171],[-248,168]],[[49206,53531],[13,233],[-121,509],[73,667],[117,496],[-74,841]],[[49214,56277],[-38,444],[7,336],[482,27],[123,-43],[90,96],[128,-47]],[[48498,56707],[125,-129],[49,-195],[125,-125],[97,149],[130,22],[190,-152]],[[49206,53531],[-126,-7],[-194,116],[-178,-7],[-329,-103],[-193,-170],[-275,-217],[-54,15]],[[47857,53158],[22,487],[26,74],[-8,233],[-118,247],[-88,40],[-81,162],[60,262],[-28,286],[13,172]],[[47655,55121],[44,0],[17,258],[-22,114],[27,82],[103,71],[-69,473],[-64,245],[23,200],[55,46]],[[47655,55121],[-78,15],[-57,-238],[-78,3],[-55,126],[19,237],[-116,362],[-73,-67],[-59,-13]],[[47158,55546],[-77,-34],[3,217],[-44,155],[9,171],[-60,249],[-78,211],[-222,1],[-65,-112],[-76,-13],[-48,-128],[-32,-163],[-148,-260]],[[46320,55840],[-122,349],[-108,232],[-71,76],[-69,118],[-32,261],[-41,130],[-80,97]],[[45797,57103],[123,288],[84,-11],[73,99],[61,1],[44,78],[-24,196],[31,62],[5,200]],[[45797,57103],[-149,247],[-117,39],[-63,166],[1,90],[-84,125],[-18,127]],[[47857,53158],[-73,-5],[-286,282],[-252,449],[-237,324],[-187,381]],[[46822,54589],[66,189],[15,172],[126,320],[129,276]],[[46822,54589],[-75,44],[-200,238],[-144,316],[-49,216],[-34,437]],[[55125,52650],[-178,33],[-188,99],[-166,-313],[-146,-550]],[[56824,55442],[152,-239],[2,-192],[187,-308],[116,-255],[70,-355],[208,-234],[44,-187]],[[53609,47755],[-104,203],[-84,-100],[-112,-255]],[[53309,47603],[-228,626]],[[53081,48229],[212,326],[-105,391],[95,148],[187,73],[23,261],[148,-283],[245,-25],[85,279],[36,393],[-31,461],[-131,350],[120,684],[-69,117],[-207,-48],[-78,305],[21,258]],[[53081,48229],[-285,596],[-184,488],[-169,610],[9,196],[61,189],[67,430],[56,438]],[[52636,51176],[94,35],[404,-6],[-2,711]],[[52636,51176],[-52,90],[96,663]],[[59099,45126],[131,-264],[71,-501],[-47,-160],[-56,-479],[53,-490],[-87,-205],[-85,-549],[147,-153]],[[59226,42325],[-843,-487],[26,-421]],[[56448,40227],[-181,369],[-188,483],[13,1880],[579,-7],[-24,203],[41,222],[-49,277],[32,286],[-29,184]],[[59599,43773],[-77,-449],[77,-768],[97,9],[100,-191],[116,-427],[24,-760],[-120,-124],[-85,-410],[-181,365],[-21,417],[59,274],[-16,237],[-110,149],[-77,-54],[-159,284]],[[61198,44484],[45,-265],[-11,-588],[34,-519],[11,-923],[49,-290],[-83,-422],[-108,-410],[-177,-366],[-254,-225],[-313,-287],[-313,-634],[-107,-108],[-194,-420],[-115,-136],[-23,-421],[132,-448],[54,-346],[4,-177],[49,29],[-8,-579],[-45,-275],[65,-101],[-41,-245],[-116,-211],[-229,-199],[-334,-320],[-122,-219],[24,-248],[71,-40],[-24,-311]],[[58908,34785],[-24,261],[-41,265]],[[53383,47159],[-74,444]],[[53259,40357],[-26,372],[38,519],[96,541],[15,254],[90,532],[66,243],[159,386],[90,263],[29,438],[-15,335],[-83,211],[-74,358],[-68,355],[15,122],[85,235],[-84,570],[-57,396],[-139,374],[26,115]],[[58062,48902],[169,-46],[85,336],[147,-38]],[[59922,69905],[-49,-186]],[[59873,69719],[-100,82],[-58,-394],[69,-66],[-71,-81],[-12,-156],[131,80]],[[59832,69184],[7,-230],[-139,-944]],[[59700,68010],[-27,153],[-155,862]],[[59518,69025],[80,194],[-19,34],[74,276],[56,446],[40,149],[8,6]],[[59757,70130],[93,-1],[25,104],[75,8]],[[59950,70241],[4,-242],[-38,-90],[6,-4]],[[59757,70130],[99,482],[138,416],[5,21]],[[59999,71049],[125,-31],[45,-231],[-151,-223],[-68,-323]],[[63761,43212],[74,-251],[69,-390],[45,-711],[72,-276],[-28,-284],[-49,-174],[-94,347],[-53,-175],[53,-438],[-24,-250],[-77,-137],[-18,-500],[-109,-689],[-137,-814],[-172,-1120],[-106,-821],[-125,-685],[-226,-140],[-243,-250],[-160,151],[-220,211],[-77,312],[-18,524],[-98,471],[-26,425],[50,426],[128,102],[1,197],[133,447],[25,377],[-65,280],[-52,372],[-23,544],[97,331],[38,375],[138,22],[155,121],[103,107],[122,7],[158,337],[229,364],[83,297],[-38,253],[118,-71],[153,410],[6,356],[92,264],[96,-254]],[[59873,69719],[0,-362],[-41,-173]],[[45321,58350],[36,262]],[[52633,68486],[-118,1061],[-171,238],[-3,143],[-227,352],[-24,445],[171,330],[65,487],[-44,563],[57,303]],[[52339,72408],[302,239],[195,-71],[-9,-299],[236,217],[20,-113],[-139,-290],[-2,-273],[96,-147],[-36,-511],[-183,-297],[53,-322],[143,-10],[70,-281],[106,-92]],[[53191,70158],[-16,-454],[-135,-170],[-86,-189],[-191,-228],[30,-244],[-24,-250],[-136,-137]],[[47592,66920],[-2,700],[449,436],[277,90],[227,159],[107,295],[324,234],[12,438],[161,51],[126,219],[363,99],[51,230],[-73,125],[-96,624],[-17,359],[-104,379]],[[49397,71358],[267,323],[300,102],[175,244],[268,180],[471,105],[459,48],[140,-87],[262,232],[297,5],[113,-137],[190,35]],[[52633,68486],[90,-522],[15,-274],[-49,-482],[21,-270],[-36,-323],[24,-371],[-110,-247],[164,-431],[11,-253],[99,-330],[130,109],[219,-275],[122,-370]],[[59922,69905],[309,-234],[544,630]],[[60775,70301],[112,-720]],[[60887,69581],[-53,-89],[-556,-296],[277,-591],[-92,-101],[-46,-197],[-212,-82],[-66,-213],[-120,-182],[-310,94]],[[59709,67924],[-9,86]],[[64327,64904],[49,29],[11,-162],[217,93],[230,-15],[168,-18],[190,400],[207,379],[176,364]],[[65575,65974],[52,-202]],[[65627,65772],[38,-466]],[[65665,65306],[-142,-3],[-23,-384],[50,-82],[-126,-117],[-1,-241],[-81,-245],[-7,-238]],[[65335,63996],[-56,-125],[-835,298],[-106,599],[-11,136]],[[64113,65205],[-18,430],[75,310],[76,64],[84,-185],[5,-346],[-61,-348]],[[64274,65130],[-77,-42],[-84,117]],[[63326,68290],[58,-261],[-25,-135],[89,-445]],[[63448,67449],[-196,-16],[-69,282],[-248,57]],[[62935,67772],[204,567],[187,-49]],[[60775,70301],[615,614],[105,715],[-26,431],[152,146],[142,369]],[[61763,72576],[119,92],[324,-77],[97,-150],[133,100]],[[62436,72541],[180,-705],[182,-177],[21,-345],[-139,-204],[-65,-461],[193,-562],[340,-324],[143,-449],[-46,-428],[89,0],[3,-314],[153,-311]],[[63490,68261],[-164,29]],[[62935,67772],[-516,47],[-784,1188],[-413,414],[-335,160]],[[65665,65306],[125,-404],[155,-214],[203,-78],[165,-107],[125,-339],[75,-196],[100,-75],[-1,-132],[-101,-352],[-44,-166],[-117,-189],[-104,-404],[-126,31],[-58,-141],[-44,-300],[34,-395],[-26,-72],[-128,2],[-174,-221],[-27,-288],[-63,-125],[-173,5],[-109,-149],[1,-238],[-134,-165],[-153,56],[-186,-199],[-128,-34]],[[64752,60417],[-91,413],[-217,975]],[[64444,61805],[833,591],[185,1182],[-127,418]],[[65575,65974],[80,201],[35,-51],[-26,-244],[-37,-108]],[[96448,41190],[175,-339],[-92,-78],[-93,259],[10,158]],[[96330,41322],[-39,163],[-6,453],[133,-182],[45,-476],[-75,74],[-58,-32]],[[78495,57780],[-66,713],[178,492],[359,112],[261,-84]],[[79227,59013],[229,-232],[126,407],[246,-217]],[[79828,58971],[64,-394],[-34,-708],[-467,-455],[122,-358],[-292,-43],[-240,-238]],[[78981,56775],[-233,87],[-112,307],[-141,611]],[[78495,57780],[-249,271],[-238,-11],[41,464],[-245,-3],[-22,-650],[-150,-863],[-90,-522],[19,-428],[181,-18],[113,-539],[50,-512],[155,-338],[168,-69],[144,-306]],[[78372,54256],[-91,-243],[-183,-71],[-22,304],[-227,258],[-48,-105]],[[77801,54399],[-110,227],[-47,292],[-148,334],[-135,280],[-45,-347],[-53,328],[30,369],[82,566]],[[77375,56448],[135,607],[152,551],[-108,539],[4,274],[-32,330],[-185,470],[-66,296],[96,109],[101,514],[-113,390],[-177,431],[-134,519],[117,107],[127,639],[196,26],[162,256],[159,137]],[[77809,62643],[120,-182],[16,-355],[188,-27],[-68,-623],[6,-530],[293,353],[83,-104],[163,17],[56,205],[210,-40],[211,-480],[18,-583],[224,-515],[-12,-500],[-90,-266]],[[77809,62643],[59,218],[237,384]],[[78105,63245],[25,-139],[148,-16],[-42,676],[144,86]],[[78380,63852],[162,-466],[125,-537],[342,-5],[108,-515],[-178,-155],[-80,-212],[333,-353],[231,-699],[175,-520],[210,-411],[70,-418],[-50,-590]],[[77375,56448],[-27,439],[86,452],[-94,350],[23,644],[-113,306],[-90,707],[-50,746],[-121,490],[-183,-297],[-315,-421],[-156,53],[-172,138],[96,732],[-58,554],[-218,681],[34,213],[-163,76],[-197,481]],[[75657,62792],[-18,476],[97,-90],[6,424]],[[75742,63602],[137,140],[-30,251],[63,201],[11,612],[217,-135],[124,487],[14,288],[153,496],[-8,338],[359,408],[199,-107],[-23,364],[97,108],[-20,224]],[[77035,67277],[162,44],[93,-348],[121,-141],[8,-452],[-11,-487],[-263,-493],[-33,-701],[293,98],[66,-544],[176,-115],[-81,-490],[206,-222],[121,-109],[203,172],[9,-244]],[[78380,63852],[149,145],[221,-3],[271,68],[236,315],[134,-222],[254,-108],[-44,-340],[132,-240],[280,-154]],[[80013,63313],[-371,-505],[-231,-558],[-61,-410],[212,-623],[260,-772],[252,-365],[169,-475],[127,-1093],[-37,-1039],[-232,-389],[-318,-381],[-227,-492],[-346,-550],[-101,378],[78,401],[-206,335]],[[86327,75524],[0,0]],[[86327,75524],[-106,36],[-120,-200],[-83,-202],[10,-424],[-143,-130],[-50,-105],[-104,-174],[-185,-97],[-121,-159],[-9,-256],[-32,-65],[111,-96],[157,-259]],[[85652,73393],[-40,-143],[-118,-39],[-197,-29],[-108,-266],[-124,21],[-17,-54]],[[85048,72883],[-135,112],[-34,-111],[-81,-49],[-10,112],[-72,54],[-75,94],[76,260],[66,69],[-25,108],[71,319],[-18,96],[-163,65],[-131,158]],[[84517,74170],[227,379],[306,318],[191,419],[131,-185],[241,-22],[-44,312],[429,254],[111,331],[179,-348]],[[85652,73393],[240,-697],[68,-383],[3,-681],[-105,-325],[-252,-113],[-222,-245],[-250,-51],[-31,322],[51,443],[-122,615],[206,99],[-190,506]],[[82410,80055],[-135,-446],[-197,-590],[72,-241],[157,74],[274,-92],[214,219],[223,-189],[251,-413],[-30,-210],[-219,66],[-404,-78],[-195,-168],[-204,-391],[-423,-229],[-277,-313],[-286,120],[-156,53],[-146,-381],[89,-227],[45,-195],[-194,-199],[-200,-316],[-324,-208],[-417,-22],[-448,-205],[-324,-318],[-123,184],[-336,-1],[-411,359],[-274,88],[-369,-82],[-574,133],[-306,-14],[-163,351],[-127,544],[-171,66],[-336,368],[-374,83],[-330,101],[-100,256],[107,690],[-192,476],[-396,222],[-233,313],[-73,413]],[[75742,63602],[-147,937],[-76,-2],[-46,-377],[-152,306],[86,336],[124,34],[128,500],[-160,101],[-257,-8],[-265,81],[-24,410],[-133,30],[-220,255],[-98,-401],[200,-313],[-173,-220],[-62,-215],[171,-159],[-47,-356],[96,-444],[43,-486]],[[74730,63611],[-39,-216],[-189,7],[-343,-122],[16,-445],[-148,-349],[-400,-398],[-311,-695],[-209,-373],[-276,-387],[-1,-271],[-138,-146],[-251,-212],[-129,-31],[-84,-450],[58,-769],[15,-490],[-118,-561],[-1,-1004],[-144,-29],[-126,-450],[84,-195],[-253,-168],[-93,-401],[-112,-170],[-263,552],[-128,827],[-107,596],[-97,279],[-148,568],[-69,739],[-48,369],[-253,811],[-115,1145],[-83,756],[1,716],[-54,553],[-404,-353],[-196,70],[-362,716],[133,214],[-82,232],[-326,501]],[[68937,64577],[185,395],[612,-2],[-56,507],[-156,300],[-31,455],[-182,265],[306,619],[323,-45],[290,620],[174,599],[270,593],[-4,421],[236,342],[-224,292],[-96,400],[-99,517],[137,255],[421,-144],[310,88],[268,496]],[[71621,71550],[298,-692],[-28,-482],[111,-303],[-9,-301],[-200,79],[78,-651],[273,-374],[386,-413]],[[72530,68413],[-176,-268],[-108,-553],[269,-224],[262,-289],[362,-332],[381,-76],[160,-301],[215,-56],[334,-138],[231,10],[32,234],[-36,375],[21,255]],[[74477,67050],[170,124],[23,-465]],[[74670,66709],[6,-119],[252,-224],[175,92],[234,-39],[227,17],[20,363],[-113,189]],[[75471,66988],[224,74],[252,439],[321,376],[233,-145],[198,249],[130,-367],[-94,-248],[300,-89]],[[75657,62792],[-79,308],[-16,301],[-53,285],[-116,344],[-256,23],[25,-243],[-87,-329],[-118,120],[-41,-108],[-78,65],[-108,53]],[[74670,66709],[184,439],[150,150],[198,-137],[147,-14],[122,-159]],[[72530,68413],[115,141],[223,-182],[280,-385],[157,-84],[93,-284],[216,-117],[225,-259],[314,-136],[324,-57]],[[68937,64577],[-203,150],[-83,424],[-215,450],[-512,-111],[-451,-11],[-391,-83]],[[67082,65396],[105,687],[400,305],[-23,272],[-133,96],[-7,520],[-266,260],[-112,357],[-137,310]],[[66909,68203],[465,-301],[278,88],[166,-75],[56,129],[194,-52],[361,246],[10,503],[154,334],[207,-1],[31,166],[212,77],[103,-55],[108,166],[-15,355],[118,356],[177,150],[-110,390],[265,-18],[76,213],[-12,227],[139,248],[-32,294],[-66,250],[163,258],[298,124],[319,68],[141,109],[162,67]],[[70877,72519],[205,-276],[82,-454],[457,-239]],[[68841,72526],[85,-72],[201,189],[93,-114],[90,271],[166,-12],[43,86],[29,239],[120,205],[150,-134],[-30,-181],[84,-28],[-26,-496],[110,-194],[97,125],[123,58],[173,265],[192,-44],[286,-1]],[[70827,72688],[50,-169]],[[66909,68203],[252,536],[-23,380],[-210,100],[-22,375],[-91,472],[119,323],[-121,87],[76,430],[113,736]],[[67002,71642],[284,-224],[209,79],[58,268],[219,89],[157,180],[55,472],[234,114],[44,211],[131,-158],[84,-19]],[[69725,74357],[-101,-182],[-303,98],[-26,-340],[301,46],[343,-192],[526,89]],[[70465,73876],[70,-546],[91,59],[169,-134],[-10,-230],[42,-337]],[[72294,75601],[-39,-134],[-438,-320],[-99,-234],[-356,-70],[-105,-378],[-294,80],[-192,-116],[-266,-279],[39,-138],[-79,-136]],[[67002,71642],[-24,498],[-207,21],[-318,523],[-221,65],[-308,299],[-197,55],[-122,-110],[-186,17],[-197,-338],[-244,-114]],[[64978,72558],[-52,417],[40,618],[-216,200],[71,405],[-184,34],[61,498],[262,-145],[244,189],[-202,355],[-80,338],[-224,-151],[-28,-433],[-87,383]],[[62436,72541],[-152,473],[55,183],[-87,678],[190,168]],[[62442,74043],[44,-223],[141,-273],[190,-78]],[[62817,73469],[101,17]],[[62918,73486],[327,436],[104,44],[82,-174],[-95,-292],[173,-309],[69,29]],[[63578,73220],[88,-436],[263,-123],[193,-296],[395,-102],[434,156],[27,139]],[[67082,65396],[-523,179],[-303,136],[-313,76],[-118,725],[-133,105],[-214,-106],[-280,-286],[-339,196],[-281,454],[-267,168],[-186,561],[-205,788],[-149,-96],[-177,196],[-104,-231]],[[59999,71049],[-26,452],[68,243]],[[60041,71744],[74,129],[75,130],[15,329],[91,-115],[306,165],[147,-112],[229,2],[320,222],[149,-10],[316,92]],[[62817,73469],[-113,342],[1,91],[-123,-2],[-82,159],[-58,-16]],[[62442,74043],[-109,172],[-207,147],[27,288],[-47,208]],[[62106,74858],[386,92]],[[62492,74950],[57,-155],[106,-103],[-56,-148],[148,-202],[-78,-189],[118,-160],[124,-97],[7,-410]],[[55734,91409],[371,-289],[433,-402],[8,-910],[93,-230]],[[56639,89578],[-478,-167],[-269,-413],[43,-361],[-441,-475],[-537,-509],[-202,-832],[198,-416],[265,-328],[-255,-666],[-289,-138],[-106,-992],[-157,-554],[-337,57],[-158,-468],[-321,-27],[-89,558],[-232,671],[-211,835]],[[58829,81362],[-239,-35],[-85,-129],[-18,-298],[-111,57],[-250,-28],[-73,138],[-104,-103],[-105,86],[-218,12],[-310,141],[-281,47],[-215,-14],[-152,-160],[-133,-23]],[[56535,81053],[-6,263],[-85,274],[166,121],[2,235],[-77,225],[-12,261]],[[56523,82432],[268,-4],[302,223],[64,333],[228,190],[-26,264]],[[57359,83438],[169,100],[298,228]],[[60617,78409],[-222,-48],[-185,-191],[-260,-31],[-239,-220],[14,-317]],[[59287,77741],[-38,64],[-432,149],[-19,221],[-257,-73],[-103,-325],[-215,-437]],[[58223,77340],[-126,101],[-131,-95],[-124,109]],[[57842,77455],[70,64],[49,203],[76,188],[-20,106],[58,47],[27,-81],[164,-18],[74,44],[-52,60],[19,88],[-97,150],[-40,247],[-101,97],[20,200],[-125,159],[-115,22],[-204,184],[-185,-58],[-66,-87]],[[57394,79070],[-118,0],[-69,-139],[-205,-56],[-95,-91],[-129,144],[-178,3],[-172,65],[-120,-127]],[[56308,78869],[-19,159],[-155,161]],[[56134,79189],[55,238],[77,154]],[[56266,79581],[60,-35],[-71,266],[252,491],[138,69],[29,166],[-139,515]],[[56266,79581],[-264,227],[-200,-84],[-131,61],[-165,-127],[-140,210],[-114,-81],[-16,36]],[[55236,79823],[-127,291],[-207,36],[-26,185],[-191,66],[-41,-153],[-151,122],[17,163],[-207,51],[-132,191]],[[54171,80775],[-114,377],[22,204],[-69,316],[-101,210],[77,158],[-64,300]],[[53922,82340],[189,174],[434,273],[350,200],[277,-100],[21,-144],[268,-7]],[[56314,82678],[142,-64],[67,-182]],[[54716,79012],[-21,-241],[-156,-2],[53,-128],[-92,-380]],[[54500,78261],[-53,-100],[-243,-14],[-140,-134],[-229,45]],[[53835,78058],[-398,153],[-62,205],[-274,-102],[-32,-113],[-169,84]],[[52900,78285],[-142,16],[-125,108],[42,145],[-10,104]],[[52665,78658],[83,33],[141,-164],[39,156],[245,-25],[199,106],[133,-18],[87,-121],[26,100],[-40,385],[100,75],[98,272]],[[53776,79457],[206,-190],[157,242],[98,44],[215,-180],[131,30],[128,-111]],[[54711,79292],[-23,-75],[28,-205]],[[56308,78869],[-170,-123],[-131,-401],[-168,-401],[-223,-111]],[[55616,77833],[-173,26],[-213,-155]],[[55230,77704],[-104,-89],[-229,114],[-208,253],[-88,73]],[[54601,78055],[-54,200],[-47,6]],[[54716,79012],[141,-151],[103,-65],[233,73],[22,118],[111,18],[135,92],[30,-38],[130,74],[66,139],[91,36],[297,-180],[59,61]],[[57842,77455],[-50,270],[30,252],[-9,259],[-160,352],[-89,249],[-86,175],[-84,58]],[[58223,77340],[6,-152],[-135,-128],[-84,56],[-78,-713]],[[57932,76403],[-163,62],[-202,215],[-327,-138],[-138,-150],[-408,31],[-213,92],[-108,-43],[-80,243]],[[56293,76715],[-51,103],[65,99],[-69,74],[-87,-133],[-162,172],[-22,244],[-169,139],[-31,188],[-151,232]],[[55907,83187],[-59,497]],[[55848,83684],[318,181],[466,-38],[273,59],[39,-123],[148,-38],[267,-287]],[[55848,83684],[10,445],[136,371],[262,202],[221,-442],[223,12],[53,453]],[[56753,84725],[237,105],[121,-73],[239,-219],[229,-1]],[[56753,84725],[32,349],[-102,-75],[-176,210],[-24,340],[351,164],[350,86],[301,-97],[287,17]],[[54171,80775],[-124,-62],[-73,68],[-70,-113],[-200,-114],[-103,-147],[-202,-129],[49,-176],[30,-249],[141,-142],[157,-254]],[[52665,78658],[-298,181],[-57,-128],[-236,4]],[[51718,79804],[16,259],[-56,133]],[[51678,80196],[32,400]],[[51710,80596],[-47,619],[167,0],[70,222],[69,541],[-51,200]],[[51918,82178],[54,125],[232,32],[52,-130],[188,291],[-63,222],[-13,335]],[[52368,83053],[210,-78],[178,90]],[[52756,83065],[4,-228],[281,-138],[-3,-210],[283,111],[156,162],[313,-233],[132,-189]],[[57932,76403],[-144,-245],[-101,-422],[89,-337]],[[57776,75399],[-239,79],[-283,-186]],[[57254,75292],[-3,-294],[-252,-56],[-196,206],[-222,-162],[-206,17]],[[56375,75003],[-20,391],[-139,189]],[[56216,75583],[46,84],[-30,70],[47,188],[105,185],[-135,255],[-24,216],[68,134]],[[57302,71436],[-35,-175],[-400,-50],[3,98],[-339,115],[52,251],[152,-199],[216,34],[207,-42],[-7,-103],[151,71]],[[57254,75292],[135,-157],[-86,-369],[-66,-67]],[[57237,74699],[-169,17],[-145,56],[-336,-154],[192,-332],[-141,-96],[-154,-1],[-147,305],[-52,-130],[62,-353],[139,-277],[-105,-129],[155,-273],[137,-171],[4,-334],[-257,157],[82,-302],[-176,-62],[105,-521],[-184,-8],[-228,257],[-104,473],[-49,393],[-108,272],[-143,337],[-18,168]],[[55597,73991],[129,287],[16,192],[91,85],[5,155]],[[55838,74710],[182,53],[106,129],[150,-12],[46,103],[53,20]],[[60041,71744],[-102,268],[105,222],[-169,-51],[-233,136],[-191,-340],[-421,-66],[-225,317],[-300,20],[-64,-245],[-192,-70],[-268,314],[-303,-11],[-165,588],[-203,328],[135,459],[-176,283],[308,565],[428,23],[117,449],[529,-78],[334,383],[324,167],[459,13],[485,-417],[399,-228],[323,91],[239,-53],[328,309]],[[61542,75120],[296,28],[268,-290]],[[57776,75399],[33,-228],[243,-190],[-51,-145],[-330,-33],[-118,-182],[-232,-319],[-87,276],[3,121]],[[55597,73991],[-48,41],[-5,130],[-154,199],[-24,281],[23,403],[38,184],[-47,93]],[[55380,75322],[-18,188],[120,291],[18,-111],[75,52]],[[55575,75742],[59,-159],[66,-60],[19,-214]],[[55719,75309],[-35,-201],[39,-254],[115,-144]],[[55230,77704],[67,-229],[89,-169],[-107,-222]],[[55279,77084],[-126,131],[-192,-8],[-239,98],[-130,-13],[-60,-123],[-99,136],[-59,-245],[136,-277],[61,-183],[127,-221],[106,-130],[105,-247],[246,-224]],[[55155,75778],[-31,-100]],[[55124,75678],[-261,218],[-161,213],[-254,176],[-233,434],[56,45],[-127,248],[-5,200],[-179,93],[-85,-255],[-82,198],[6,205],[10,9]],[[53809,77462],[194,-20],[51,100],[94,-97],[109,-11],[-1,165],[97,60],[27,239],[221,157]],[[52900,78285],[-22,-242],[-122,-100],[-206,75],[-60,-239],[-132,-19],[-48,94],[-156,-200],[-134,-28],[-120,126]],[[51576,79843],[30,331],[72,22]],[[50698,80799],[222,117]],[[50920,80916],[204,-47],[257,123],[176,-258],[153,-138]],[[50920,80916],[143,162],[244,869],[380,248],[231,-17]],[[47490,75324],[101,150],[113,86],[70,-289],[164,0],[47,75],[162,-21],[78,-296],[-129,-160],[-3,-461],[-45,-86],[-11,-280],[-120,-48],[111,-355],[-77,-388],[96,-175],[-38,-161],[-103,-222],[23,-195]],[[47929,72498],[-112,-153],[-146,83],[-143,-65],[42,462],[-26,363],[-124,55],[-67,224],[22,386],[111,215],[20,239],[58,355],[-6,250],[-56,212],[-12,200]],[[47490,75324],[14,420],[-114,257],[393,426],[340,-106],[373,3],[296,-101],[230,31],[449,-19]],[[50829,75674],[15,-344],[-263,-393],[-356,-125],[-25,-199],[-171,-327],[-107,-481],[108,-338],[-160,-263],[-60,-384],[-210,-118],[-197,-454],[-352,-9],[-265,11],[-174,-209],[-106,-223],[-136,49],[-103,199],[-79,340],[-259,92]],[[48278,82406],[46,-422],[-210,-528],[-493,-349],[-393,89],[225,617],[-145,601],[378,463],[210,276]],[[47896,83153],[57,-317],[-57,-317],[172,9],[210,-122]],[[96049,38125],[228,-366],[144,-272],[-105,-142],[-153,160],[-199,266],[-179,313],[-184,416],[-38,201],[119,-9],[156,-201],[122,-200],[89,-166]],[[95032,44386],[78,-203],[-194,4],[-106,363],[166,-142],[56,-22]],[[94910,44908],[-42,-109],[-206,512],[-57,353],[94,0],[100,-473],[111,-283]],[[94680,44747],[-108,-14],[-170,60],[-58,91],[17,235],[183,-93],[91,-124],[45,-155]],[[94344,45841],[65,-187],[12,-119],[-218,251],[-152,212],[-104,197],[41,60],[128,-142],[228,-272]],[[93649,46431],[111,-193],[-56,-33],[-121,134],[-114,243],[14,99],[166,-250]],[[99134,26908],[-105,-319],[-138,-404],[-214,-236],[-48,155],[-116,85],[160,486],[-91,326],[-299,236],[8,214],[201,206],[47,455],[-13,382],[-113,396],[8,104],[-133,244],[-218,523],[-117,418],[104,46],[151,-328],[216,-153],[78,-526],[202,-622],[5,403],[126,-161],[41,-447],[224,-192],[188,-48],[158,226],[141,-69],[-67,-524],[-85,-345],[-212,12],[-74,-179],[26,-254],[-41,-110]],[[97129,24846],[238,310],[167,306],[123,441],[106,149],[41,330],[195,273],[61,-251],[63,-244],[198,239],[80,-249],[0,-249],[-103,-274],[-182,-435],[-142,-238],[103,-284],[-214,-7],[-238,-223],[-75,-387],[-157,-597],[-219,-264],[-138,-169],[-256,13],[-180,194],[-302,42],[-46,217],[149,438],[349,583],[179,111],[200,225]],[[91024,26469],[166,-39],[20,-702],[-95,-203],[-29,-476],[-97,162],[-193,-412],[-57,32],[-171,19],[-171,505],[-38,390],[-160,515],[7,271],[181,-52],[269,-204],[151,81],[217,113]],[[85040,31546],[-294,-303],[-241,-137],[-53,-309],[-103,-240],[-236,-15],[-174,-52],[-246,107],[-199,-64],[-191,-27],[-165,-315],[-81,26],[-140,-167],[-133,-187],[-203,23],[-186,0],[-295,377],[-149,113],[6,338],[138,81],[47,134],[-10,212],[34,411],[-31,350],[-147,598],[-45,337],[12,336],[-111,385],[-7,174],[-123,235],[-35,463],[-158,467],[-39,252],[122,-255],[-93,548],[137,-171],[83,-229],[-5,303],[-138,465],[-26,186],[-65,177],[31,341],[56,146],[38,295],[-29,346],[114,425],[21,-450],[118,406],[225,198],[136,252],[212,217],[126,46],[77,-73],[219,220],[168,66],[42,129],[74,54],[153,-14],[292,173],[151,262],[71,316],[163,300],[13,236],[7,321],[194,502],[117,-510],[119,118],[-99,279],[87,287],[122,-128],[34,449],[152,291],[67,233],[140,101],[4,165],[122,-69],[5,148],[122,85],[134,80],[205,-271],[155,-350],[173,-4],[177,-56],[-59,325],[133,473],[126,155],[-44,147],[121,338],[168,208],[142,-70],[234,111],[-5,302],[-204,195],[148,86],[184,-147],[148,-242],[234,-151],[79,60],[172,-182],[162,169],[105,-51],[65,113],[127,-292],[-74,-316],[-105,-239],[-96,-20],[32,-236],[-81,-295],[-99,-291],[20,-166],[221,-327],[214,-189],[143,-204],[201,-350],[78,1],[145,-151],[43,-183],[265,-200],[183,202],[55,317],[56,262],[34,324],[85,470],[-39,286],[20,171],[-32,339],[37,445],[53,120],[-43,197],[67,313],[52,325],[7,168],[104,222],[78,-289],[19,-371],[70,-71],[11,-249],[101,-300],[21,-335],[-10,-214],[100,-464],[179,223],[92,-250],[133,-231],[-29,-262],[60,-506],[42,-295],[70,-72],[75,-505],[-27,-307],[90,-400],[301,-309],[197,-281],[186,-257],[-37,-143],[159,-371],[108,-639],[111,130],[113,-256],[68,91],[48,-626],[197,-363],[129,-226],[217,-478],[78,-475],[7,-337],[-19,-365],[132,-502],[-16,-523],[-48,-274],[-75,-527],[6,-339],[-55,-423],[-123,-538],[-205,-290],[-102,-458],[-93,-292],[-82,-510],[-107,-294],[-70,-442],[-36,-407],[14,-187],[-159,-205],[-311,-22],[-257,-242],[-127,-229],[-168,-254],[-230,262],[-170,104],[43,308],[-152,-112],[-243,-428],[-240,160],[-158,94],[-159,42],[-269,171],[-179,364],[-52,449],[-64,298],[-137,240],[-267,71],[91,287],[-67,438],[-136,-408],[-247,-109],[146,327],[42,341],[107,289],[-22,438],[-226,-504],[-174,-202],[-106,-470],[-217,243],[9,313],[-174,429],[-147,221],[52,137],[-356,358],[-195,17],[-267,287],[-498,-56],[-359,-211],[-317,-197],[-265,39]],[[72718,55024],[-42,-615],[-116,-168],[-242,-135],[-132,470],[-49,849],[126,959],[192,-328],[129,-416],[134,-616]],[[80409,61331],[-228,183],[-8,509],[137,267],[304,166],[159,-14],[62,-226],[-122,-260],[-64,-341],[-240,-284]],[[84517,74170],[-388,-171],[-204,-277],[-300,-161],[148,274],[-58,230],[220,397],[-147,310],[-242,-209],[-314,-411],[-171,-381],[-272,-29],[-142,-275],[147,-400],[227,-97],[9,-265],[220,-173],[311,422],[247,-230],[179,-15],[45,-310],[-393,-165],[-130,-319],[-270,-296],[-142,-414],[299,-325],[109,-581],[169,-541],[189,-454],[-5,-439],[-174,-161],[66,-315],[164,-184],[-43,-481],[-71,-468],[-155,-53],[-203,-640],[-225,-775],[-258,-705],[-382,-545],[-386,-498],[-313,-68],[-170,-262],[-96,192],[-157,-294],[-388,-296],[-294,-90],[-95,-624],[-154,-35],[-73,429],[66,228],[-373,189],[-131,-96]],[[83826,64992],[-167,-947],[-119,-485],[-146,499],[-32,438],[163,581],[223,447],[127,-176],[-49,-357]],[[53835,78058],[-31,-291],[67,-251]],[[53871,77516],[-221,86],[-226,-210],[15,-293],[-34,-168],[91,-301],[261,-298],[140,-488],[309,-476],[217,3],[68,-130],[-78,-118],[249,-214],[204,-178],[238,-308],[29,-111],[-52,-211],[-154,276],[-242,97],[-116,-382],[200,-219],[-33,-309],[-116,-35],[-148,-506],[-116,-46],[1,181],[57,317],[60,126],[-108,342],[-85,298],[-115,74],[-82,255],[-179,107],[-120,238],[-206,38],[-217,267],[-254,384],[-189,340],[-86,585],[-138,68],[-226,195],[-128,-80],[-161,-274],[-115,-43]],[[54100,73116],[211,51],[-100,-465],[41,-183],[-58,-303],[-213,222],[-141,64],[-387,300],[38,304],[325,-54],[284,64]],[[52419,74744],[139,183],[166,-419],[-39,-782],[-126,38],[-113,-197],[-105,156],[-11,713],[-64,338],[153,-30]],[[52368,83053],[-113,328],[-8,604],[46,159],[80,177],[244,37],[98,163],[223,167],[-9,-304],[-82,-192],[33,-166],[151,-89],[-68,-223],[-83,64],[-200,-425],[76,-288]],[[53436,83731],[88,-296],[-166,-478],[-291,333],[-39,246],[408,195]],[[47896,83153],[233,24],[298,-365],[-149,-406]],[[49140,82132],[1,0],[40,343],[-186,364],[-4,8],[-337,104],[-66,160],[101,264],[-92,163],[-149,-279],[-17,569],[-140,301],[101,611],[216,480],[222,-47],[335,49],[-297,-639],[283,81],[304,-3],[-72,-481],[-250,-530],[287,-38],[22,-62],[248,-697],[190,-95],[171,-673],[79,-233],[337,-113],[-34,-378],[-142,-173],[111,-305],[-250,-310],[-371,6],[-473,-163],[-130,116],[-183,-276],[-257,67],[-195,-226],[-148,118],[407,621],[249,127],[-2,1],[-434,98],[-79,235],[291,183],[-152,319],[52,387],[413,-54]],[[45969,89843],[-64,-382],[314,-403],[-361,-451],[-801,-405],[-240,-107],[-365,87],[-775,187],[273,261],[-605,289],[492,114],[-12,174],[-583,137],[188,385],[421,87],[433,-400],[422,321],[349,-167],[453,315],[461,-42]],[[63495,75281],[146,-311],[141,-419],[130,-28],[85,-159],[-228,-47],[-49,-459],[-48,-207],[-101,-138],[7,-293]],[[62492,74950],[68,96],[207,-169],[149,-36],[38,70],[-136,319],[72,82]],[[61542,75120],[42,252],[-70,403],[-160,218],[-154,68],[-102,181]],[[83564,58086],[-142,450],[238,-22],[97,-213],[-74,-510],[-119,295]],[[84051,56477],[70,165],[30,367],[153,35],[-44,-398],[205,570],[-26,-563],[-100,-195],[-87,-373],[-87,-175],[-171,409],[57,158]],[[85104,55551],[28,-392],[16,-332],[-94,-540],[-102,602],[-130,-300],[89,-435],[-79,-277],[-327,343],[-78,428],[84,280],[-176,280],[-87,-245],[-131,23],[-205,-330],[-46,173],[109,498],[175,166],[151,223],[98,-268],[212,162],[45,264],[196,15],[-16,457],[225,-280],[23,-297],[20,-218]],[[82917,56084],[-369,-561],[136,414],[200,364],[167,409],[146,587],[49,-482],[-183,-325],[-146,-406]],[[83982,61347],[-46,-245],[95,-423],[-73,-491],[-164,-196],[-43,-476],[62,-471],[147,-65],[123,70],[347,-328],[-27,-321],[91,-142],[-29,-272],[-216,290],[-103,310],[-71,-217],[-177,354],[-253,-87],[-138,130],[14,244],[87,151],[-83,136],[-36,-213],[-137,340],[-41,257],[-11,566],[112,-195],[29,925],[90,535],[169,-1],[171,-168],[85,153],[26,-150]],[[83899,57324],[-43,282],[166,-183],[177,1],[-5,-247],[-129,-251],[-176,-178],[-10,275],[20,301]],[[84861,57766],[78,-660],[-214,157],[5,-199],[68,-364],[-132,-133],[-11,416],[-84,31],[-43,357],[163,-47],[-4,224],[-169,451],[266,-13],[77,-220]],[[78372,54256],[64,-56],[164,-356],[116,-396],[16,-398],[-29,-269],[27,-203],[20,-349],[98,-163],[109,-523],[-5,-199],[-197,-40],[-263,438],[-329,469],[-32,301],[-161,395],[-38,489],[-100,322],[30,431],[-61,250]],[[80461,51765],[204,-202],[214,110],[56,500],[119,112],[333,128],[199,467],[137,374]],[[81723,53254],[126,-307],[58,202],[133,-19],[16,377],[13,291]],[[82069,53798],[214,411],[140,462],[112,2],[143,-299],[13,-257],[183,-165],[231,-177],[-20,-232],[-186,-29],[50,-289],[-205,-201]],[[81723,53254],[110,221],[236,323]],[[53809,77462],[62,54]],[[57797,86326],[-504,-47],[-489,-216],[-452,-125],[-161,323],[-269,193],[62,582],[-135,533],[133,345],[252,371],[635,640],[185,124],[-28,250],[-387,279]],[[54711,79292],[39,130],[123,-10],[95,61],[7,55],[54,28],[18,134],[64,26],[43,106],[82,1]],[[60669,61213],[161,-684],[77,-542],[152,-288],[379,-558],[154,-336],[151,-341],[87,-203],[136,-178]],[[61966,58083],[-83,-144],[-119,51]],[[61764,57990],[-95,191],[-114,346],[-124,190],[-71,204],[-242,237],[-191,7],[-67,124],[-163,-139],[-168,268],[-87,-441],[-323,124]],[[89411,73729],[-256,-595],[4,-610],[-104,-472],[48,-296],[-145,-416],[-355,-278],[-488,-36],[-396,-675],[-186,227],[-12,442],[-483,-130],[-329,-279],[-325,-11],[282,-435],[-186,-1004],[-179,-248],[-135,229],[69,533],[-176,172],[-113,405],[263,182],[145,371],[280,306],[203,403],[553,177],[297,-121],[291,1050],[185,-282],[408,591],[158,229],[174,723],[-47,664],[117,374],[295,108],[152,-819],[-9,-479]],[[90169,76553],[197,250],[62,-663],[-412,-162],[-244,-587],[-436,404],[-152,-646],[-308,-9],[-39,587],[138,455],[296,33],[81,817],[83,460],[326,-615],[213,-198],[195,-126]],[[86769,70351],[154,352],[158,-68],[114,248],[204,-127],[35,-203],[-156,-357],[-114,189],[-143,-137],[-73,-346],[-181,168],[2,281]],[[64752,60417],[-201,-158],[-54,-263],[-6,-201],[-277,-249],[-444,-276],[-249,-417],[-122,-33],[-83,35],[-163,-245],[-177,-114],[-233,-30],[-70,-34],[-61,-156],[-73,-43],[-43,-150],[-137,13],[-89,-80],[-192,30],[-72,345],[8,323],[-46,174],[-54,437],[-80,243],[56,29],[-29,270],[34,114],[-12,257]],[[61883,60238],[121,189],[-28,249],[74,290],[114,-153],[75,53],[321,14],[50,-59],[269,-60],[106,30],[70,-197],[130,99],[199,620],[259,266],[801,226]],[[63448,67449],[109,-510],[137,-135],[47,-207],[190,-249],[16,-243],[-27,-197],[35,-199],[80,-165],[37,-194],[41,-145]],[[64274,65130],[53,-226]],[[61883,60238],[-37,252],[-83,178],[-22,236],[-143,212],[-148,495],[-79,482],[-192,406],[-124,97],[-184,563],[-32,411],[12,350],[-159,655],[-130,231],[-150,122],[-92,339],[15,133],[-77,306],[-81,132],[-108,440],[-170,476],[-141,406],[-139,-3],[44,325],[12,206],[34,236]],[[36483,4468],[141,0],[414,127],[419,-127],[342,-255],[120,-359],[33,-254],[11,-301],[-430,-186],[-452,-150],[-522,-139],[-582,-116],[-658,35],[-365,197],[49,243],[593,162],[239,197],[174,254],[126,220],[168,209],[180,243]],[[31586,3163],[625,-23],[599,-58],[207,243],[147,208],[288,-243],[-82,-301],[-81,-266],[-582,81],[-621,-35],[-348,197],[0,23],[-152,174]],[[29468,8472],[190,70],[321,-23],[82,301],[16,219],[-6,475],[158,278],[256,93],[147,-220],[65,-220],[120,-267],[92,-254],[76,-267],[33,-266],[-49,-231],[-76,-220],[-326,-81],[-311,-116],[-364,11],[136,232],[-327,-81],[-310,-81],[-212,174],[-16,243],[305,231]],[[21575,8103],[174,104],[353,-81],[403,-46],[305,-81],[304,69],[163,-335],[-217,46],[-337,-23],[-343,23],[-376,-35],[-283,116],[-146,243]],[[15938,7061],[60,197],[332,-104],[359,-93],[332,104],[-158,-208],[-261,-151],[-386,47],[-278,208]],[[14643,7177],[202,127],[277,-139],[425,-231],[-164,23],[-359,58],[-381,162]],[[4524,4144],[169,220],[517,-93],[277,-185],[212,-209],[76,-266],[-533,-81],[-364,208],[-163,209],[-11,35],[-180,162]],[[0,529],[16,-5],[245,344],[501,-185],[32,21],[294,188],[38,-7],[32,-4],[402,-246],[352,246],[63,34],[816,104],[265,-138],[130,-71],[419,-196],[789,-151],[625,-185],[1072,-139],[800,162],[1181,-116],[669,-185],[734,174],[773,162],[60,278],[-1094,23],[-898,139],[-234,231],[-745,128],[49,266],[103,243],[104,220],[-55,243],[-462,162],[-212,209],[-430,185],[675,-35],[642,93],[402,-197],[495,173],[457,220],[223,197],[-98,243],[-359,162],[-408,174],[-571,35],[-500,81],[-539,58],[-180,220],[-359,185],[-217,208],[-87,672],[136,-58],[250,-185],[457,58],[441,81],[228,-255],[441,58],[370,127],[348,162],[315,197],[419,58],[-11,220],[-97,220],[81,208],[359,104],[163,-196],[425,115],[321,151],[397,12],[375,57],[376,139],[299,128],[337,127],[218,-35],[190,-46],[414,81],[370,-104],[381,11],[364,81],[375,-57],[414,-58],[386,23],[403,-12],[413,-11],[381,23],[283,174],[337,92],[349,-127],[331,104],[300,208],[179,-185],[98,-208],[180,-197],[288,174],[332,-220],[375,-70],[321,-162],[392,35],[354,104],[418,-23],[376,-81],[381,-104],[147,254],[-180,197],[-136,209],[-359,46],[-158,220],[-60,220],[-98,440],[213,-81],[364,-35],[359,35],[327,-93],[283,-174],[119,-208],[376,-35],[359,81],[381,116],[342,70],[283,-139],[370,46],[239,451],[224,-266],[321,-104],[348,58],[228,-232],[365,-23],[337,-69],[332,-128],[218,220],[108,209],[278,-232],[381,58],[283,-127],[190,-197],[370,58],[288,127],[283,151],[337,81],[392,69],[354,81],[272,127],[163,186],[65,254],[-32,244],[-87,231],[-98,232],[-87,231],[-71,209],[-16,231],[27,232],[130,220],[109,243],[44,231],[-55,255],[-32,232],[136,266],[152,173],[180,220],[190,186],[223,173],[109,255],[152,162],[174,151],[267,34],[174,186],[196,115],[228,70],[202,150],[157,186],[218,69],[163,-151],[-103,-196],[-283,-174],[-120,-127],[-206,92],[-229,-58],[-190,-139],[-202,-150],[-136,-174],[-38,-231],[17,-220],[130,-197],[-190,-139],[-261,-46],[-153,-197],[-163,-185],[-174,-255],[-44,-220],[98,-243],[147,-185],[229,-139],[212,-185],[114,-232],[60,-220],[82,-232],[130,-196],[82,-220],[38,-544],[81,-220],[22,-232],[87,-231],[-38,-313],[-152,-243],[-163,-197],[-370,-81],[-125,-208],[-169,-197],[-419,-220],[-370,-93],[-348,-127],[-376,-128],[-223,-243],[-446,-23],[-489,23],[-441,-46],[-468,0],[87,-232],[424,-104],[311,-162],[174,-208],[-310,-185],[-479,58],[-397,-151],[-17,-243],[-11,-232],[327,-196],[60,-220],[353,-220],[588,-93],[500,-162],[398,-185],[506,-186],[690,-92],[681,-162],[473,-174],[517,-197],[272,-278],[136,-220],[337,209],[457,173],[484,186],[577,150],[495,162],[691,12],[680,-81],[560,-139],[180,255],[386,173],[702,12],[550,127],[522,128],[577,81],[614,104],[430,150],[-196,209],[-119,208],[0,220],[-539,-23],[-571,-93],[-544,0],[-77,220],[39,440],[125,128],[397,138],[468,139],[337,174],[337,174],[251,231],[380,104],[376,81],[190,47],[430,23],[408,81],[343,116],[337,139],[305,139],[386,185],[245,197],[261,173],[82,232],[-294,139],[98,243],[185,185],[288,116],[305,139],[283,185],[217,232],[136,277],[202,163],[331,-35],[136,-197],[332,-23],[11,220],[142,231],[299,-58],[71,-220],[331,-34],[360,104],[348,69],[315,-34],[120,-243],[305,196],[283,105],[315,81],[310,81],[283,139],[310,92],[240,128],[168,208],[207,-151],[288,81],[202,-277],[157,-209],[316,116],[125,232],[283,162],[365,-35],[108,-220],[229,220],[299,69],[326,23],[294,-11],[310,-70],[300,-34],[130,-197],[180,-174],[304,104],[327,24],[315,0],[310,11],[278,81],[294,70],[245,162],[261,104],[283,58],[212,162],[152,324],[158,197],[288,-93],[109,-208],[239,-139],[289,46],[196,-208],[206,-151],[283,139],[98,255],[250,104],[289,197],[272,81],[326,116],[218,127],[228,139],[218,127],[261,-69],[250,208],[180,162],[261,-11],[229,139],[54,208],[234,162],[228,116],[278,93],[256,46],[244,-35],[262,-58],[223,-162],[27,-254],[245,-197],[168,-162],[332,-70],[185,-162],[229,-162],[266,-35],[223,116],[240,243],[261,-127],[272,-70],[261,-69],[272,-46],[277,0],[229,-614],[-11,-150],[-33,-267],[-266,-150],[-218,-220],[38,-232],[310,12],[-38,-232],[-141,-220],[-131,-243],[212,-185],[321,-58],[321,104],[153,232],[92,220],[153,185],[174,174],[70,208],[147,289],[174,58],[316,24],[277,69],[283,93],[136,231],[82,220],[190,220],[272,151],[234,115],[153,197],[157,104],[202,93],[277,-58],[250,58],[272,69],[305,-34],[201,162],[142,393],[103,-162],[131,-278],[234,-115],[266,-47],[267,70],[283,-46],[261,-12],[174,58],[234,-35],[212,-127],[250,81],[300,0],[255,81],[289,-81],[185,197],[141,196],[191,163],[348,439],[179,-81],[212,-162],[185,-208],[354,-359],[272,-12],[256,0],[299,70],[299,81],[229,162],[190,174],[310,23],[207,127],[218,-116],[141,-185],[196,-185],[305,23],[190,-150],[332,-151],[348,-58],[288,47],[218,185],[185,185],[250,46],[251,-81],[288,-58],[261,93],[250,0],[245,-58],[256,-58],[250,104],[299,93],[283,23],[316,0],[255,58],[251,46],[76,290],[11,243],[174,-162],[49,-266],[92,-244],[115,-196],[234,-105],[315,35],[365,12],[250,35],[364,0],[262,11],[364,-23],[310,-46],[196,-186],[-54,-220],[179,-173],[299,-139],[310,-151],[360,-104],[375,-92],[283,-93],[315,-12],[180,197],[245,-162],[212,-185],[245,-139],[337,-58],[321,-69],[136,-232],[316,-139],[212,-208],[310,-93],[321,12],[299,-35],[332,12],[332,-47],[310,-81],[288,-139],[289,-116],[195,-173],[-32,-232],[-147,-208],[-125,-266],[-98,-209],[-131,-243],[-364,-93],[-163,-208],[-360,-127],[-125,-232],[-190,-220],[-201,-185],[-115,-243],[-70,-220],[-28,-266],[6,-220],[158,-232],[60,-220],[130,-208],[517,-81],[109,-255],[-501,-93],[-424,-127],[-528,-23],[-234,-336],[-49,-278],[-119,-220],[-147,-220],[370,-196],[141,-244],[239,-219],[338,-197],[386,-186],[419,-185],[636,-185],[142,-289],[800,-128],[53,-45],[208,-175],[767,151],[636,-186],[479,-142],[-99999,0]],[[59092,71341],[19,3],[40,143],[200,-8],[253,176],[-188,-251],[21,-111]],[[59437,71293],[-30,21],[-53,-45],[-42,12],[-14,-22],[-5,59],[-20,37],[-54,6],[-75,-51],[-52,31]],[[59437,71293],[8,-48],[-285,-240],[-136,77],[-64,237],[132,22]],[[45272,63236],[13,274],[106,161],[91,308],[-18,200],[96,417],[155,376],[93,95],[74,344],[6,315],[100,365],[185,216],[177,603],[5,8],[139,227],[259,65],[218,404],[140,158],[232,493],[-70,735],[106,508],[37,312],[179,399],[278,270],[206,244],[186,612],[87,362],[205,-2],[167,-251],[264,41],[288,-131],[121,-6]],[[56944,63578],[0,2175],[0,2101],[-83,476],[71,365],[-43,253],[101,283]],[[56990,69231],[369,10],[268,-156],[275,-175],[129,-92],[214,188],[114,169],[245,49],[198,-75],[75,-293],[65,193],[222,-140],[217,-33],[137,149]],[[59700,68010],[-78,-238],[-60,-446],[-75,-308],[-65,-103],[-93,191],[-125,263],[-198,847],[-29,-53],[115,-624],[171,-594],[210,-920],[102,-321],[90,-334],[249,-654],[-55,-103],[9,-384],[323,-530],[49,-121]],[[53191,70158],[326,-204],[117,51],[232,-98],[368,-264],[130,-526],[250,-114],[391,-248],[296,-293],[136,153],[133,272],[-65,452],[87,288],[200,277],[192,80],[375,-121],[95,-264],[104,-2],[88,-101],[276,-70],[68,-195]],[[59804,53833],[-164,643],[-127,137],[-48,236],[-141,288],[-171,42],[95,337],[147,14],[42,181]],[[61764,57990],[-98,-261],[-94,-277],[22,-163],[4,-180],[155,-10],[67,42],[62,-106]],[[61882,57035],[-61,-209],[103,-325],[102,-285],[106,-210],[909,-702],[233,4]],[[61966,58083],[66,-183],[-9,-245],[-158,-142],[119,-161]],[[61984,57352],[-102,-317]],[[61984,57352],[91,-109],[54,-245],[125,-247],[138,-2],[262,151],[302,70],[245,184],[138,39],[99,108],[158,20]],[[58449,49909],[-166,-182],[-67,60]],[[58564,52653],[115,161],[176,-132],[224,138],[195,-1],[171,272]],[[55279,77084],[100,2],[-69,-260],[134,-227],[-41,-278],[-65,-27]],[[55338,76294],[-52,-53],[-90,-138],[-41,-325]],[[55719,75309],[35,-5],[13,121],[164,91],[62,23]],[[55993,75539],[95,35],[128,9]],[[55993,75539],[-9,44],[33,71],[31,144],[-39,-4],[-54,110],[-46,28],[-36,94],[-52,36],[-40,84],[-50,-33],[-38,-196],[-66,-43]],[[55627,75874],[22,51],[-106,123],[-91,63],[-40,82],[-74,101]],[[55380,75322],[-58,46],[-78,192],[-120,118]],[[55627,75874],[-52,-132]],[[32866,56937],[160,77],[58,-21],[-11,-440],[-232,-65],[-50,53],[81,163],[-6,233]]],"bbox":[-180,-85.60903777459771,180,83.64513000000001],"transform":{"scale":[0.0036000360003600037,0.0016925586033320105],"translate":[-180,-85.60903777459771]}} diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/index.ts b/frontend/src/pages/secret-manager/InsightsPage/components/index.ts new file mode 100644 index 00000000000..a9930b1066a --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/index.ts @@ -0,0 +1,8 @@ +export { AuthMethodChart } from "./AuthMethodChart"; +export { CalendarCard } from "./CalendarCard"; +export { CalendarGrid } from "./CalendarGrid"; +export { CalendarLegend } from "./CalendarLegend"; +export { InsightsSummaryCards } from "./InsightsSummaryCards"; +export { SecretAccessChart } from "./SecretAccessChart"; +export type { CalendarEvent } from "./types"; +// export { WorldMap } from "./WorldMap"; diff --git a/frontend/src/pages/secret-manager/InsightsPage/components/types.ts b/frontend/src/pages/secret-manager/InsightsPage/components/types.ts new file mode 100644 index 00000000000..d3974d55a0a --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/components/types.ts @@ -0,0 +1,5 @@ +import { TCalendarReminder, TCalendarRotation } from "@app/hooks/api/secretInsights/types"; + +export type CalendarEvent = + | { type: "rotation"; data: TCalendarRotation } + | { type: "reminder"; data: TCalendarReminder }; diff --git a/frontend/src/pages/secret-manager/InsightsPage/route.tsx b/frontend/src/pages/secret-manager/InsightsPage/route.tsx new file mode 100644 index 00000000000..3a492982903 --- /dev/null +++ b/frontend/src/pages/secret-manager/InsightsPage/route.tsx @@ -0,0 +1,19 @@ +import { createFileRoute } from "@tanstack/react-router"; + +import { InsightsPage } from "./InsightsPage"; + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights" +)({ + component: InsightsPage, + beforeLoad: ({ context }) => { + return { + breadcrumbs: [ + ...context.breadcrumbs, + { + label: "Insights" + } + ] + }; + } +}); diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index 8d6c80579d5..d6df78b2818 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -111,6 +111,7 @@ import { Route as secretScanningSecretScanningFindingsPageRouteImport } from './ import { Route as secretManagerSettingsPageRouteImport } from './pages/secret-manager/SettingsPage/route' import { Route as secretManagerSecretRotationPageRouteImport } from './pages/secret-manager/SecretRotationPage/route' import { Route as secretManagerOverviewPageRouteImport } from './pages/secret-manager/OverviewPage/route' +import { Route as secretManagerInsightsPageRouteImport } from './pages/secret-manager/InsightsPage/route' import { Route as secretManagerSecretApprovalsPageRouteImport } from './pages/secret-manager/SecretApprovalsPage/route' import { Route as secretManagerIPAllowlistPageRouteImport } from './pages/secret-manager/IPAllowlistPage/route' import { Route as pamSettingsPageRouteImport } from './pages/pam/SettingsPage/route' @@ -1304,6 +1305,13 @@ const secretManagerOverviewPageRouteRoute = getParentRoute: () => secretManagerLayoutRoute, } as any) +const secretManagerInsightsPageRouteRoute = + secretManagerInsightsPageRouteImport.update({ + id: '/insights', + path: '/insights', + getParentRoute: () => secretManagerLayoutRoute, + } as any) + const secretManagerSecretApprovalsPageRouteRoute = secretManagerSecretApprovalsPageRouteImport.update({ id: '/approval', @@ -3259,6 +3267,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof secretManagerSecretApprovalsPageRouteImport parentRoute: typeof secretManagerLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights': { + id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights' + path: '/insights' + fullPath: '/organizations/$orgId/projects/secret-management/$projectId/insights' + preLoaderRoute: typeof secretManagerInsightsPageRouteImport + parentRoute: typeof secretManagerLayoutImport + } '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview': { id: '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview' path: '/overview' @@ -5254,6 +5269,7 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationsOrgIdProjectsSecretManag interface secretManagerLayoutRouteChildren { secretManagerIPAllowlistPageRouteRoute: typeof secretManagerIPAllowlistPageRouteRoute secretManagerSecretApprovalsPageRouteRoute: typeof secretManagerSecretApprovalsPageRouteRoute + secretManagerInsightsPageRouteRoute: typeof secretManagerInsightsPageRouteRoute secretManagerOverviewPageRouteRoute: typeof secretManagerOverviewPageRouteRoute secretManagerSecretRotationPageRouteRoute: typeof secretManagerSecretRotationPageRouteRoute secretManagerSettingsPageRouteRoute: typeof secretManagerSettingsPageRouteRoute @@ -5274,6 +5290,7 @@ const secretManagerLayoutRouteChildren: secretManagerLayoutRouteChildren = { secretManagerIPAllowlistPageRouteRoute, secretManagerSecretApprovalsPageRouteRoute: secretManagerSecretApprovalsPageRouteRoute, + secretManagerInsightsPageRouteRoute: secretManagerInsightsPageRouteRoute, secretManagerOverviewPageRouteRoute: secretManagerOverviewPageRouteRoute, secretManagerSecretRotationPageRouteRoute: secretManagerSecretRotationPageRouteRoute, @@ -5877,6 +5894,7 @@ export interface FileRoutesByFullPath { '/organizations/$orgId/projects/pam/$projectId/settings': typeof pamSettingsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/approval': typeof secretManagerSecretApprovalsPageRouteRoute + '/organizations/$orgId/projects/secret-management/$projectId/insights': typeof secretManagerInsightsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/overview': typeof secretManagerOverviewPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/settings': typeof secretManagerSettingsPageRouteRoute @@ -6145,6 +6163,7 @@ export interface FileRoutesByTo { '/organizations/$orgId/projects/pam/$projectId/settings': typeof pamSettingsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/approval': typeof secretManagerSecretApprovalsPageRouteRoute + '/organizations/$orgId/projects/secret-management/$projectId/insights': typeof secretManagerInsightsPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/overview': typeof secretManagerOverviewPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/organizations/$orgId/projects/secret-management/$projectId/settings': typeof secretManagerSettingsPageRouteRoute @@ -6418,6 +6437,7 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/settings': typeof pamSettingsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist': typeof secretManagerIPAllowlistPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval': typeof secretManagerSecretApprovalsPageRouteRoute + '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights': typeof secretManagerInsightsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview': typeof secretManagerOverviewPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation': typeof secretManagerSecretRotationPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings': typeof secretManagerSettingsPageRouteRoute @@ -6695,6 +6715,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/settings' | '/organizations/$orgId/projects/secret-management/$projectId/allowlist' | '/organizations/$orgId/projects/secret-management/$projectId/approval' + | '/organizations/$orgId/projects/secret-management/$projectId/insights' | '/organizations/$orgId/projects/secret-management/$projectId/overview' | '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation' | '/organizations/$orgId/projects/secret-management/$projectId/settings' @@ -6962,6 +6983,7 @@ export interface FileRouteTypes { | '/organizations/$orgId/projects/pam/$projectId/settings' | '/organizations/$orgId/projects/secret-management/$projectId/allowlist' | '/organizations/$orgId/projects/secret-management/$projectId/approval' + | '/organizations/$orgId/projects/secret-management/$projectId/insights' | '/organizations/$orgId/projects/secret-management/$projectId/overview' | '/organizations/$orgId/projects/secret-management/$projectId/secret-rotation' | '/organizations/$orgId/projects/secret-management/$projectId/settings' @@ -7233,6 +7255,7 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/pam/$projectId/_pam-layout/settings' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval' + | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation' | '/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings' @@ -7991,6 +8014,7 @@ export const routeTree = rootRoute "children": [ "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/allowlist", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/approval", + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/secret-rotation", "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/settings", @@ -8104,6 +8128,10 @@ export const routeTree = rootRoute "filePath": "secret-manager/SecretApprovalsPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" }, + "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/insights": { + "filePath": "secret-manager/InsightsPage/route.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" + }, "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout/overview": { "filePath": "secret-manager/OverviewPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organizations/$orgId/projects/secret-management/$projectId/_secret-manager-layout" diff --git a/frontend/src/routes.ts b/frontend/src/routes.ts index 7cf2251d50a..e01a5f8d3f2 100644 --- a/frontend/src/routes.ts +++ b/frontend/src/routes.ts @@ -23,6 +23,7 @@ const secretManagerRoutes = route("/organizations/$orgId/projects/secret-managem route("/allowlist", "secret-manager/IPAllowlistPage/route.tsx"), route("/approval", "secret-manager/SecretApprovalsPage/route.tsx"), route("/secret-rotation", "secret-manager/SecretRotationPage/route.tsx"), + route("/insights", "secret-manager/InsightsPage/route.tsx"), route("/settings", "secret-manager/SettingsPage/route.tsx"), route("/commits/$environment/$folderId", [ index("secret-manager/CommitsPage/route.tsx"), From 2fa0a2e5f4a125b94aea2b3cce89bc855dc0b4d7 Mon Sep 17 00:00:00 2001 From: Victor Hugo dos Santos Date: Thu, 16 Apr 2026 23:26:20 -0300 Subject: [PATCH 202/562] fix(frontend): set staleTime to 0 for auth token query to ensure fresh data retrieval --- frontend/src/pages/middlewares/authenticate.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/pages/middlewares/authenticate.tsx b/frontend/src/pages/middlewares/authenticate.tsx index c040a865467..8890b420fae 100644 --- a/frontend/src/pages/middlewares/authenticate.tsx +++ b/frontend/src/pages/middlewares/authenticate.tsx @@ -18,7 +18,8 @@ export const Route = createFileRoute("/_authenticate")({ const data = await context.queryClient .fetchQuery({ queryKey: authKeys.getAuthToken, - queryFn: fetchAuthToken + queryFn: fetchAuthToken, + staleTime: 0 }) .catch(() => { createNotification({ From 58bc29ddeb7652b93cd3b2f518ce5e48890e9c10 Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Fri, 17 Apr 2026 01:07:00 -0300 Subject: [PATCH 203/562] Fix null values for unknown pki dashboard fields --- backend/src/services/certificate/certificate-dal.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/src/services/certificate/certificate-dal.ts b/backend/src/services/certificate/certificate-dal.ts index 010248d9aec..754d6346ed9 100644 --- a/backend/src/services/certificate/certificate-dal.ts +++ b/backend/src/services/certificate/certificate-dal.ts @@ -633,7 +633,7 @@ export const certificateDALFactory = (db: TDbClient) => { } interface LabelCount { - label: string; + label: string | null; count: string; } @@ -771,11 +771,11 @@ export const certificateDALFactory = (db: TDbClient) => { expiredNotRenewed: totals.expiredNotRenewed, distributions: { byEnrollmentMethod: (byEnrollmentMethod as unknown as LabelCount[]).map((r) => ({ - label: r.label, + label: r.label || "Unknown", count: Number(r.count) })), byAlgorithm: (byAlgorithm as unknown as LabelCount[]).map((r) => ({ - label: r.label, + label: r.label || "Unknown", count: Number(r.count) })), byCA: (byCA as unknown as LabelCountWithId[]).map((r) => ({ From cb8b00c949de8d8756e03f70c0250961a03250ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erwan=20Herv=C3=A9?= Date: Fri, 17 Apr 2026 12:15:59 +0200 Subject: [PATCH 204/562] fix(frontend): prevent duplicated 'v' in on-prem version badge The release workflow passes GITHUB_REF_NAME (e.g. v0.159.15) directly as INFISICAL_PLATFORM_VERSION (see release-standalone-docker-img- postgres-offical.yml), so VITE_INFISICAL_PLATFORM_VERSION already starts with 'v'. Consumers that prefixed another 'v' (VersionBadge) then rendered 'vv0.159.15' on on-prem instances, while the help-menu entry in Navbar rendered a raw, inconsistent value. Normalize at the env boundary in config/env.ts so every consumer of envConfig.PLATFORM_VERSION sees a clean semver and the existing `v${version}` prefix in VersionBadge is correct without changes. --- frontend/src/config/env.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/src/config/env.ts b/frontend/src/config/env.ts index 63446c95f92..1841905872b 100644 --- a/frontend/src/config/env.ts +++ b/frontend/src/config/env.ts @@ -28,6 +28,9 @@ export const envConfig = { }, get PLATFORM_VERSION() { - return import.meta.env.VITE_INFISICAL_PLATFORM_VERSION; + // Release tags (e.g. "v0.159.15") are passed through as INFISICAL_PLATFORM_VERSION + // by the release workflow. Strip any leading "v" so consumers can prefix it + // themselves without producing "vv0.159.15". + return import.meta.env.VITE_INFISICAL_PLATFORM_VERSION?.replace(/^v/i, ""); } }; From 42076846e486e01324541d1ca89513b2e7630732 Mon Sep 17 00:00:00 2001 From: Saif Date: Fri, 17 Apr 2026 19:36:57 +0530 Subject: [PATCH 205/562] docs(pam): note effectiveness and recommended pairing for command blocking --- .../platform/pam/product-reference/account-policies.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/documentation/platform/pam/product-reference/account-policies.mdx b/docs/documentation/platform/pam/product-reference/account-policies.mdx index 8333f2f86b2..663e50354a6 100644 --- a/docs/documentation/platform/pam/product-reference/account-policies.mdx +++ b/docs/documentation/platform/pam/product-reference/account-policies.mdx @@ -87,6 +87,12 @@ Patterns use standard regular expression syntax. Some examples: Patterns are matched as regular expressions against the full command (for command blocking) or session log content (for session log masking). Test your patterns carefully to avoid overly broad matches. + + Command blocking helps prevent unintended or careless commands from reaching the target, adding a guardrail in front of systems where direct controls on the target resource aren't available. + + Because matches are evaluated with regular expressions, patterns need to cover the different ways a command might be typed, and exhaustive coverage of every variation is difficult to guarantee in practice. It is highly recommended to pair command blocking with target-side controls like restricted shells or `sudoers` rules where those are available. + + ## FAQ From f1b954a853507f50d5c866bdefe0f4840ac0a6cd Mon Sep 17 00:00:00 2001 From: Carlos Monastyrski Date: Fri, 17 Apr 2026 11:18:08 -0300 Subject: [PATCH 206/562] hubSpot UTK tracking for cloud instances signup --- backend/src/server/routes/v3/signup-router.ts | 9 +++++--- .../services/telemetry/telemetry-service.ts | 19 +++++++++++---- .../src/components/auth/InitialSignupStep.tsx | 2 ++ frontend/src/components/auth/UserInfoStep.tsx | 4 +++- frontend/src/helpers/utmTracking.ts | 23 +++++++++++++++++++ frontend/src/hooks/api/auth/types.ts | 2 ++ .../components/InitialStep/InitialStep.tsx | 2 ++ .../auth/SignUpSsoPage/SignUpSsoPage.tsx | 10 +++++++- 8 files changed, 61 insertions(+), 10 deletions(-) create mode 100644 frontend/src/helpers/utmTracking.ts diff --git a/backend/src/server/routes/v3/signup-router.ts b/backend/src/server/routes/v3/signup-router.ts index c6b079746da..c6666abaf84 100644 --- a/backend/src/server/routes/v3/signup-router.ts +++ b/backend/src/server/routes/v3/signup-router.ts @@ -106,11 +106,13 @@ export const registerSignupRouter = async (server: FastifyZodProvider) => { lastName: z.string().trim().optional(), attributionSource: z.string().trim().optional(), password: z.string(), - organizationName: GenericResourceNameSchema.optional() + organizationName: GenericResourceNameSchema.optional(), + hubspotUtk: z.string().trim().max(512).optional() }), z.object({ type: z.literal(CompleteAccountType.Alias), - code: z.string().trim() + code: z.string().trim(), + hubspotUtk: z.string().trim().max(512).optional() }) ]), response: { @@ -140,7 +142,8 @@ export const registerSignupRouter = async (server: FastifyZodProvider) => { user.email, authMethod, user.firstName || "", - user.lastName || "" + user.lastName || "", + req.body.hubspotUtk ); } diff --git a/backend/src/services/telemetry/telemetry-service.ts b/backend/src/services/telemetry/telemetry-service.ts index 46ff97026f7..330b074c7fd 100644 --- a/backend/src/services/telemetry/telemetry-service.ts +++ b/backend/src/services/telemetry/telemetry-service.ts @@ -135,7 +135,8 @@ To opt into telemetry, you can set "TELEMETRY_ENABLED=true" within the environme email: string, signupMethod: HubSpotSignupMethod, firstName?: string, - lastName?: string + lastName?: string, + hubspotUtk?: string ) => { const instanceType = licenseService.getInstanceType(); if ( @@ -159,14 +160,22 @@ To opt into telemetry, you can set "TELEMETRY_ENABLED=true" within the environme if (value) fields.push({ name, value }); } + const context: Record = { + pageUri: `${appCfg.SITE_URL || "https://app.infisical.com"}/signup`, + pageName: "App Signup" + }; + + // Include the HubSpot tracking cookie to link this submission + // to the visitor's browsing session for proper attribution + if (hubspotUtk) { + context.hutk = hubspotUtk; + } + await request.post( `https://api.hsforms.com/submissions/v3/integration/submit/${appCfg.HUBSPOT_PORTAL_ID}/${appCfg.HUBSPOT_SIGNUP_FORM_ID}`, { fields, - context: { - pageUri: `${appCfg.SITE_URL || "https://app.infisical.com"}/signup`, - pageName: "App Signup" - } + context }, { headers: { diff --git a/frontend/src/components/auth/InitialSignupStep.tsx b/frontend/src/components/auth/InitialSignupStep.tsx index 99107caca19..e84f703d49d 100644 --- a/frontend/src/components/auth/InitialSignupStep.tsx +++ b/frontend/src/components/auth/InitialSignupStep.tsx @@ -21,6 +21,7 @@ import { UnstableInput } from "@app/components/v3"; import { useServerConfig } from "@app/context"; +import { preserveHubSpotUtk } from "@app/helpers/utmTracking"; import { useSendVerificationEmail } from "@app/hooks/api"; import { LoginMethod } from "@app/hooks/api/admin/types"; @@ -59,6 +60,7 @@ export default function InitialSignupStep({ }; const handleSocialSignup = (method: LoginMethod) => { + preserveHubSpotUtk(); const popup = window.open(`/api/v1/sso/redirect/${method}`); if (popup) { window.close(); diff --git a/frontend/src/components/auth/UserInfoStep.tsx b/frontend/src/components/auth/UserInfoStep.tsx index c02aa68de39..001147a1945 100644 --- a/frontend/src/components/auth/UserInfoStep.tsx +++ b/frontend/src/components/auth/UserInfoStep.tsx @@ -21,6 +21,7 @@ import { } from "@app/components/v3"; import { isInfisicalCloud } from "@app/helpers/platform"; import { initProjectHelper } from "@app/helpers/project"; +import { getHubSpotUtk } from "@app/helpers/utmTracking"; import { useCompleteAccountSignup } from "@app/hooks/api/auth/queries"; import { fetchOrganizations } from "@app/hooks/api/organization/queries"; @@ -130,7 +131,8 @@ export default function UserInfoStep({ firstName: formData.name.split(" ")[0], lastName: formData.name.split(" ").slice(1).join(" "), organizationName: formData.organizationName || undefined, - attributionSource: formData.attributionSource + attributionSource: formData.attributionSource, + hubspotUtk: getHubSpotUtk() }); SecurityClient.setSignupToken(""); diff --git a/frontend/src/helpers/utmTracking.ts b/frontend/src/helpers/utmTracking.ts new file mode 100644 index 00000000000..73ffc46783b --- /dev/null +++ b/frontend/src/helpers/utmTracking.ts @@ -0,0 +1,23 @@ +const HUBSPOT_UTK_STORAGE_KEY = "infisical__hubspot-utk"; + +/** + * Reads the HubSpot tracking cookie (hubspotutk) if present, + * falling back to localStorage for cases where cookies may have + * been cleared during OAuth redirects (e.g. Safari ITP). + */ +export const getHubSpotUtk = (): string | undefined => { + const match = document.cookie.match(/(?:^|;\s*)hubspotutk=([^;]*)/); + return match?.[1] || localStorage.getItem(HUBSPOT_UTK_STORAGE_KEY) || undefined; +}; + +/** + * Persists the current hubspotutk cookie value to localStorage + * so it survives OAuth redirects that may clear cookies. + * Call this before navigating away for OAuth. + */ +export const preserveHubSpotUtk = (): void => { + const match = document.cookie.match(/(?:^|;\s*)hubspotutk=([^;]*)/); + if (match?.[1]) { + localStorage.setItem(HUBSPOT_UTK_STORAGE_KEY, match[1]); + } +}; diff --git a/frontend/src/hooks/api/auth/types.ts b/frontend/src/hooks/api/auth/types.ts index bc4c27446b9..d73f9edd140 100644 --- a/frontend/src/hooks/api/auth/types.ts +++ b/frontend/src/hooks/api/auth/types.ts @@ -105,10 +105,12 @@ export type CompleteAccountSignupDTO = password: string; attributionSource?: string; organizationName?: string; + hubspotUtk?: string; } | { type: "alias"; code: string; + hubspotUtk?: string; }; export type VerifySignupInviteDTO = { diff --git a/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx b/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx index c23ecdb88fc..9057c0f53d3 100644 --- a/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx +++ b/frontend/src/pages/auth/LoginPage/components/InitialStep/InitialStep.tsx @@ -28,6 +28,7 @@ import { } from "@app/components/v3"; import { envConfig } from "@app/config/env"; import { useServerConfig } from "@app/context"; +import { preserveHubSpotUtk } from "@app/helpers/utmTracking"; import { useFetchServerStatus } from "@app/hooks/api"; import { LoginMethod } from "@app/hooks/api/admin/types"; import { AuthMethod } from "@app/hooks/api/users/types"; @@ -120,6 +121,7 @@ export const InitialStep = ({ setSection, isAdmin }: Props) => { }; const handleSocialLogin = (method: LoginMethod) => { + preserveHubSpotUtk(); const searchParams = new URLSearchParams(); if (callbackPort) { searchParams.append("callback_port", callbackPort); diff --git a/frontend/src/pages/auth/SignUpSsoPage/SignUpSsoPage.tsx b/frontend/src/pages/auth/SignUpSsoPage/SignUpSsoPage.tsx index 6f463e591c7..f324490af8c 100644 --- a/frontend/src/pages/auth/SignUpSsoPage/SignUpSsoPage.tsx +++ b/frontend/src/pages/auth/SignUpSsoPage/SignUpSsoPage.tsx @@ -19,6 +19,8 @@ import { UnstableCardTitle } from "@app/components/v3"; import { ROUTE_PATHS } from "@app/const/routes"; +import { isInfisicalCloud } from "@app/helpers/platform"; +import { getHubSpotUtk } from "@app/helpers/utmTracking"; import { useSendEmailVerificationCode } from "@app/hooks/api"; import { useCompleteAccountSignup } from "@app/hooks/api/auth/queries"; @@ -87,13 +89,19 @@ export const SignupSsoPage = () => { const handleSubmit = async () => { const { token: accessToken } = await completeAccountSignup.mutateAsync({ type: "alias", - code + code, + hubspotUtk: getHubSpotUtk() }); SecurityClient.setSignupToken(""); SecurityClient.setToken(accessToken); const { organizationId } = jwtDecode(accessToken) as { organizationId?: string }; + if (isInfisicalCloud()) { + window.dataLayer = window.dataLayer || []; + window.dataLayer.push({ event: "signup_completed" }); + } + createNotification({ text: "Successfully verified", type: "success" From dac4094dcb89592aba0a7b760322e900cefe72f8 Mon Sep 17 00:00:00 2001 From: Jake Hulberg Date: Fri, 17 Apr 2026 09:20:29 -0500 Subject: [PATCH 207/562] docs: add walkthrough video to Vercel Sync page Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/integrations/secret-syncs/vercel.mdx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/integrations/secret-syncs/vercel.mdx b/docs/integrations/secret-syncs/vercel.mdx index de83a20681f..83f6c0c612e 100644 --- a/docs/integrations/secret-syncs/vercel.mdx +++ b/docs/integrations/secret-syncs/vercel.mdx @@ -3,6 +3,14 @@ title: "Vercel Sync" description: "Learn how to configure a Vercel Sync for Infisical." --- +Infisical's Vercel Sync lets you automatically push secrets from Infisical into your Vercel project's environment variables, keeping both platforms in sync without manual copy-paste. + +The short video below walks through configuring a Vercel Sync end-to-end. + +
+