{
  "version": 3,
  "sources": ["../../../../node_modules/@sniptt/guards/lib/guards/primitives.ts", "../../../../node_modules/@sniptt/guards/lib/guards/structural.ts", "../../../../node_modules/@sniptt/guards/lib/guards/convenience.ts", "../../../../node_modules/@sniptt/guards/lib/index.ts", "twenty-sdk-define-stub:__twenty-sdk-define-stub__", "../../../../src/constants/update-fields-options.ts", "../../../../src/constants/update-fields-option-values.ts", "../../../../src/constants/universal-identifiers.ts", "../../../../src/logic-functions/handlers/enrich-company.ts", "../../../../src/logic-functions/utils/is-empty-address.ts", "../../../../src/logic-functions/utils/to-text.ts", "../../../../src/utils/is-defined.ts", "../../../../src/logic-functions/utils/is-empty-text.ts", "../../../../src/logic-functions/utils/is-empty-links.ts", "../../../../src/logic-functions/utils/parse-geo.ts", "../../../../src/logic-functions/utils/build-address.ts", "../../../../src/logic-functions/utils/build-links.ts", "../../../../src/logic-functions/utils/normalize-domain.ts", "../../../../src/logic-functions/utils/normalize-linkedin-url.ts", "../../../../src/logic-functions/utils/to-number.ts", "../../../../src/logic-functions/utils/to-string-array.ts", "../../../../src/utils/prune-undefined.ts", "../../../../src/logic-functions/utils/map-company.ts", "../../../../src/logic-functions/utils/pick-writable-standard.ts", "../../../../src/logic-functions/utils/build-company-matched-data.ts", "../../../../src/logic-functions/utils/enrich-companies.ts", "../../../../src/logic-functions/utils/build-apollo-organization-detail.ts", "../../../../src/logic-functions/utils/is-apollo-matched.ts", "../../../../src/logic-functions/utils/post-apollo-enrich.ts", "../../../../src/logic-functions/utils/apollo-fetch.ts", "../../../../src/constants/apollo-base-url.ts", "../../../../src/logic-functions/utils/extract-apollo-error-message.ts", "../../../../src/logic-functions/utils/get-apollo-api-key.ts", "../../../../src/logic-functions/errors/apollo-error.ts", "../../../../src/logic-functions/errors/apollo-error-code.ts", "../../../../src/logic-functions/errors/apollo-config-error.ts", "../../../../src/logic-functions/utils/extract-company-match-params.ts", "../../../../src/logic-functions/utils/read-companies.ts", "../../../../src/logic-functions/utils/update-companies-status.ts", "../../../../src/logic-functions/utils/update-company-record.ts", "../../../../src/logic-functions/handlers/company-enrichment-adapter.ts", "../../../../src/logic-functions/utils/post-apollo-single-enrich.ts", "../../../../src/logic-functions/utils/enrich-company.ts", "../../../../src/logic-functions/handlers/company-single-enrichment-adapter.ts", "../../../../src/logic-functions/utils/run-single-enrichment.ts", "../../../../src/logic-functions/utils/build-error-result.ts", "../../../../src/logic-functions/utils/aggregate-bulk-enrich-result.ts", "../../../../src/logic-functions/utils/build-skipped-result.ts", "../../../../src/logic-functions/utils/chunk.ts", "../../../../src/constants/enrichment-limits.ts", "../../../../src/logic-functions/utils/get-max-bulk-enrich.ts", "../../../../src/logic-functions/utils/build-matched-result.ts", "../../../../src/logic-functions/utils/build-not-found-result.ts", "../../../../src/logic-functions/utils/internal-field-names.ts", "../../../../src/logic-functions/utils/now-iso.ts", "../../../../src/logic-functions/utils/resolve-update-fields-mode.ts", "../../../../src/utils/to-error-message.ts", "../../../../src/logic-functions/utils/enrich-chunk.ts", "../../../../src/logic-functions/utils/extract-record-ids.ts", "../../../../src/logic-functions/utils/run-batch-enrichment.ts", "../../../../src/logic-functions/enrich-company.function.ts"],
  "sourcesContent": [null, null, null, null, "\n// Auto-generated stub for twenty-sdk/define injected by the SDK CLI build.\n// Real implementations would pull in zod, twenty-shared and ~1MB of code; at\n// runtime only `default.config.handler` is consumed, so tiny no-ops suffice.\nconst __defineFactoryStub = (config) => ({\n  success: true,\n  config,\n  errors: [],\n});\n\nconst __anyHandler = {\n  get(_target, prop) {\n    if (prop === '__esModule') return true;\n    if (prop === Symbol.toPrimitive) return () => '';\n    if (typeof prop === 'symbol') return undefined;\n    return new Proxy(() => undefined, __anyHandler);\n  },\n  apply() {\n    return new Proxy(() => undefined, __anyHandler);\n  },\n};\nconst __anyStub = new Proxy(() => undefined, __anyHandler);\n\nexport const createValidationResult = __defineFactoryStub;\nexport const defineAgent = __defineFactoryStub;\nexport const defineApplication = __defineFactoryStub;\nexport const defineApplicationRole = __defineFactoryStub;\nexport const defineCommandMenuItem = __defineFactoryStub;\nexport const defineConnectionProvider = __defineFactoryStub;\nexport const defineField = __defineFactoryStub;\nexport const defineFrontComponent = __defineFactoryStub;\nexport const defineIndex = __defineFactoryStub;\nexport const defineLogicFunction = __defineFactoryStub;\nexport const defineNavigationMenuItem = __defineFactoryStub;\nexport const defineObject = __defineFactoryStub;\nexport const definePageLayout = __defineFactoryStub;\nexport const definePageLayoutTab = __defineFactoryStub;\nexport const definePermissionFlag = __defineFactoryStub;\nexport const definePostInstallLogicFunction = __defineFactoryStub;\nexport const definePreInstallLogicFunction = __defineFactoryStub;\nexport const defineRole = __defineFactoryStub;\nexport const defineSkill = __defineFactoryStub;\nexport const defineView = __defineFactoryStub;\nexport const defineViewField = __defineFactoryStub;\nexport const AggregateOperations = __anyStub;\nexport const DateDisplayFormat = __anyStub;\nexport const FieldMetadataSettingsOnClickAction = __anyStub;\nexport const FieldType = __anyStub;\nexport const HTTPMethod = __anyStub;\nexport const NavigationMenuItemType = __anyStub;\nexport const NumberDataType = __anyStub;\nexport const ObjectRecordGroupByDateGranularity = __anyStub;\nexport const OnDeleteAction = __anyStub;\nexport const PageLayoutTabLayoutMode = __anyStub;\nexport const PageLayoutType = __anyStub;\nexport const RelationType = __anyStub;\nexport const RowLevelPermissionPredicateGroupLogicalOperator = __anyStub;\nexport const RowLevelPermissionPredicateOperand = __anyStub;\nexport const STANDARD_OBJECT = __anyStub;\nexport const STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS = __anyStub;\nexport const STANDARD_PAGE_LAYOUT = __anyStub;\nexport const STANDARD_PAGE_LAYOUT_UNIVERSAL_IDENTIFIERS = __anyStub;\nexport const SystemPermissionFlag = __anyStub;\nexport const ViewCalendarLayout = __anyStub;\nexport const ViewFilterGroupLogicalOperator = __anyStub;\nexport const ViewFilterOperand = __anyStub;\nexport const ViewKey = __anyStub;\nexport const ViewOpenRecordIn = __anyStub;\nexport const ViewSortDirection = __anyStub;\nexport const ViewType = __anyStub;\nexport const ViewVisibility = __anyStub;\nexport const canAccessFullAdminPanel = __anyStub;\nexport const canImpersonate = __anyStub;\nexport const every = __anyStub;\nexport const everyDefined = __anyStub;\nexport const everyEquals = __anyStub;\nexport const favoriteRecordIds = __anyStub;\nexport const featureFlags = __anyStub;\nexport const hasAnySoftDeleteFilterOnView = __anyStub;\nexport const includes = __anyStub;\nexport const includesEvery = __anyStub;\nexport const isDashboardPageLayoutInEditMode = __anyStub;\nexport const isDefined = __anyStub;\nexport const isInSidePanel = __anyStub;\nexport const isLayoutCustomizationModeEnabled = __anyStub;\nexport const isNonEmptyString = __anyStub;\nexport const isSelectAll = __anyStub;\nexport const none = __anyStub;\nexport const noneDefined = __anyStub;\nexport const noneEquals = __anyStub;\nexport const numberOfSelectedRecords = __anyStub;\nexport const objectMetadataItem = __anyStub;\nexport const objectMetadataLabel = __anyStub;\nexport const objectPermissions = __anyStub;\nexport const pageType = __anyStub;\nexport const selectedRecords = __anyStub;\nexport const some = __anyStub;\nexport const someDefined = __anyStub;\nexport const someEquals = __anyStub;\nexport const someNonEmptyString = __anyStub;\nexport const targetObjectReadPermissions = __anyStub;\nexport const targetObjectWritePermissions = __anyStub;\nexport const validateFields = __anyStub;\n", "import { type UpdateFieldsOption } from 'src/types/update-fields-option';\n\nexport const UPDATE_FIELDS_OPTIONS = {\n  overwrite: 'Yes and overwrite',\n  fillEmpty: \"Yes and don't overwrite\",\n  no: 'No',\n} as const satisfies Record<string, UpdateFieldsOption>;\n", "import { UPDATE_FIELDS_OPTIONS } from 'src/constants/update-fields-options';\nimport { type UpdateFieldsOption } from 'src/types/update-fields-option';\n\nexport const UPDATE_FIELDS_OPTION_VALUES: UpdateFieldsOption[] =\n  Object.values(UPDATE_FIELDS_OPTIONS);\n", "export const APPLICATION_UNIVERSAL_IDENTIFIER =\n  '542f6e42-3811-4ea6-956c-99211b8a5de1';\n\nexport const DEFAULT_ROLE_UNIVERSAL_IDENTIFIER =\n  'eff0dd10-5535-4af1-8cdf-1e9288faf8bd';\n\n// Assignable role that gates who may trigger enrichment (spends Apollo credits).\nexport const ENRICHMENT_ROLE_UNIVERSAL_IDENTIFIER =\n  '9393797d-19eb-4f36-9679-374426f25704';\n\nexport const APOLLO_API_KEY_VARIABLE_UNIVERSAL_IDENTIFIER =\n  'ed335dda-2c2c-4740-ba3f-81edf67890fa';\n\nexport const APOLLO_PHONE_WEBHOOK_URL_VARIABLE_UNIVERSAL_IDENTIFIER =\n  'd32cfe36-b362-4521-8ae1-d05cb80f854d';\n\nexport const APOLLO_WEBHOOK_SECRET_VARIABLE_UNIVERSAL_IDENTIFIER =\n  '98d378ea-e8a7-4b8a-bf1f-e23e5b04c077';\n\nexport const APOLLO_MAX_BULK_ENRICH_VARIABLE_UNIVERSAL_IDENTIFIER =\n  '2da425fc-fffa-444f-9bcc-bbff78c637c1';\n\nexport const APOLLO_AUTO_ENRICH_COMPANIES_VARIABLE_UNIVERSAL_IDENTIFIER =\n  '8928c545-46a1-4446-a2b6-01682139bad6';\n\nexport const APOLLO_LOGIC_FUNCTION_CONSTANTS = {\n  enrichPeople: { universalIdentifier: 'a77baf5a-8664-47ea-8dd2-079688e3f2be', path: '/apollo/enrich-people' },\n  enrichPerson: { universalIdentifier: '06bc1839-9239-4de8-b189-ee54cdc5241f', path: '/apollo/enrich-person' },\n  enrichCompanies: { universalIdentifier: '896b2acb-9814-444e-9c0e-efc233614ebc', path: '/apollo/enrich-companies' },\n  enrichCompany: { universalIdentifier: '9a845649-40ea-4a59-97f9-cb22beb6fb77', path: '/apollo/enrich-company' },\n  autoEnrichCompany: { universalIdentifier: '8b5a3147-4bf5-46c2-aa8e-9e5af6a76941' },\n  postInstall: { universalIdentifier: '1b2fe555-1cd3-457e-993c-4cc8c4cacd72' },\n  phoneWebhook: { universalIdentifier: '4532acfd-77dc-4391-9427-ae219bed9e48', path: '/webhook/apollo-phone' },\n} as const;\n\nexport const APOLLO_FIELD_UNIVERSAL_IDENTIFIERS = {\n  person: {\n    apolloId: '3704636b-b293-4df8-a48a-8805e6a8091f',\n    apolloHeadline: 'a76dcdbf-6e73-4f63-b5c8-fd5de9b36e7b',\n    apolloSeniority: '9dce53b3-2caf-4ade-af8a-261429b991f7',\n    apolloDepartments: '92b4c56e-a7f9-4ebe-a78f-e1cdd46cf613',\n    apolloEmailStatus: '36ffbb70-4a97-4620-bc20-3d73c384be87',\n    apolloPhotoUrl: '4d974d8a-8c9e-45d6-aeff-5a49607b4019',\n    apolloEmploymentHistory: '3dad622b-4f3e-4ed3-b83b-663458add97d',\n    apolloPersonalEmails: 'c2c44e21-978e-4c13-ae67-0e6354b003aa',\n    apolloPhone: 'd766473e-38d5-4a8f-b454-6080a5bd88ea',\n    apolloPhoneStatus: 'bcddf586-5bc9-4e27-8798-ddfd7c28997a',\n    apolloRequestId: '81f4bc6e-f96a-4e3c-8311-dac54911ce17',\n    apolloEnrichmentStatus: '57c1a067-4f03-4ff3-bd81-23fe0cb1109b',\n    apolloLastEnrichedAt: 'ded5615f-bc7d-41a3-8965-6ab6c109da0a',\n    apolloRawPayload: '7f186737-cd22-43bb-9939-fb7848879256',\n  },\n  company: {\n    apolloId: 'd2293217-8822-4d50-bf1f-dc16238cbb60',\n    apolloIndustry: '60bf2068-a5ee-45d3-a6e5-fd8734cd04c3',\n    apolloEmployees: '134cb7a3-92d8-4f38-9799-26026d39044f',\n    apolloAnnualRevenue: '50c6a1a9-e710-4b3d-a87d-d89cfa5af43d',\n    apolloFoundedYear: 'f9c71381-6e7b-4e4b-bc5a-bad6ed75e43f',\n    apolloKeywords: 'af879dda-bbd0-408f-ac6f-50e11e8f2c53',\n    apolloTechnologies: 'd9849f05-5726-466c-92ff-ad02ddb3a538',\n    apolloTotalFunding: '0d962e01-d737-4330-9161-078421c3a5e3',\n    apolloLatestFundingStage: 'ae7824a2-839b-4e41-b872-f85e8143125e',\n    apolloLinkedinUrl: 'bac70564-38db-4efb-8afd-91753e4adeac',\n    apolloPhone: '6e889e80-c7c9-44ca-af9c-953175ff5b3c',\n    apolloLocation: '18e5b4e5-86ee-41de-99a9-f2c16a97c01f',\n    apolloHeadcountGrowth6mo: '6024a0df-a9a3-43bd-ac48-9f0864f3e5c5',\n    apolloHeadcountGrowth12mo: '6916fb0a-e440-402a-b272-24314bac4df7',\n    apolloNaicsCodes: '6a851361-37cf-4aa5-859c-3080f9eec9e8',\n    apolloEnrichmentStatus: '09dbbab3-4b06-400b-ae94-66950ef557f8',\n    apolloLastEnrichedAt: '0116d85f-43eb-4826-a344-3a475674df28',\n    apolloRawPayload: 'd31f9326-db94-4c48-8b7c-d2a5dabeb844',\n  },\n} as const;\n\nexport const APOLLO_VIEW_UNIVERSAL_IDENTIFIERS = {\n  enrichedCompanies: 'a1c0f35b-0fdd-466c-8dfb-5ec82cfd5a7e',\n  enrichedPeople: '75cd5bbb-ad41-4e42-b3a2-3b103ff4c944',\n} as const;\n\nexport const APOLLO_FRONT_COMPONENT_UNIVERSAL_IDENTIFIERS = {\n  enrichCompanies: '90cefc28-06b8-4906-839b-93e21f4c55d8',\n  enrichPeople: '41f99952-b612-4a79-8a07-4b7af6201b77',\n};\n\nexport const APOLLO_COMMAND_MENU_ITEM_UNIVERSAL_IDENTIFIERS = {\n  enrichCompanies: '66630fbd-b5d4-4c1c-8354-045848ab5a36',\n  enrichPeople: 'c1b8c22a-80b6-4142-a02c-6fa7189e4598',\n};\n\nexport const APOLLO_SELECT_OPTION_UNIVERSAL_IDENTIFIERS = {\n  personEnrichmentStatus: {\n    matched: '4a85006d-b385-414b-9819-cb938b0af0e0',\n    notFound: '7e5880eb-230b-42d9-9c03-31bfa5c6d767',\n    error: 'c043d25e-72d1-4f5b-b3f4-74d2af9821d8',\n  },\n  companyEnrichmentStatus: {\n    matched: '83878d08-22ed-4ce4-ae72-71dd9a7cfacd',\n    notFound: '58f1b921-0e50-46c2-a736-664b5de5e20d',\n    error: 'a6ead429-930c-48fe-b096-47c7717afa11',\n  },\n  seniority: {\n    owner: 'a19fdc3d-75e6-4a0d-8e7b-f9d2d214f177',\n    founder: '25311648-f73e-4873-8bbb-bcbcb7572330',\n    cSuite: '68b90894-4b71-48f8-b7c0-10911a90761f',\n    partner: '9b628d6d-edc5-4c60-a096-aa554433f7d1',\n    vp: '97bab39b-2d3a-473c-ac49-3a82fe87f79f',\n    head: '81eec4f7-a33f-4362-809c-e920c0678941',\n    director: '254c929e-ff9c-4377-90a7-d21699207813',\n    manager: '2312114c-01b9-4784-a13b-63d298e3e05e',\n    senior: '860a9f68-6c80-4906-8e55-36e7a7a3c907',\n    entry: '27bfe3f6-d789-46f4-af63-599f823e17c4',\n    intern: 'b03af194-342a-4fd1-b2a5-443f09ff817c',\n    unpaid: '70f4d88f-f7e6-40ca-a6ac-93fdbb6fd96e',\n  },\n  emailStatus: {\n    verified: '93967d65-6a5f-4540-a428-6abd43b0141e',\n    guessed: '592c83ef-4c31-4b20-9827-61a2335da6a1',\n    unavailable: 'd0a72c06-b808-4092-b568-109cf3b1f0a4',\n    bounced: '5a5968a6-6e52-46ef-976c-c2a55690ae2e',\n    pendingManualFulfillment: '741dd3f0-ca83-475e-a33c-f459f95223ce',\n  },\n  phoneStatus: {\n    none: '2226684c-c5a1-46b2-b4d2-f4887c8cba77',\n    pending: '74372233-dca6-40fd-9f76-0b1425a8fb73',\n    revealed: '2143d2f1-b6da-46b4-a4c2-d11f18219926',\n    failed: '3e9faee6-ca0c-426b-89eb-5b5db840ac86',\n  },\n} as const;\n", "import { CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { companySingleEnrichmentAdapter } from 'src/logic-functions/handlers/company-single-enrichment-adapter';\nimport { runSingleEnrichment } from 'src/logic-functions/utils/run-single-enrichment';\nimport { type EnrichResult } from 'src/types/enrich-result';\nimport { type SingleEnrichInput } from 'src/types/single-enrich-input';\n\nexport const enrichCompanyCore = ({\n  input,\n  client = new CoreApiClient(),\n}: {\n  input: SingleEnrichInput;\n  client?: CoreApiClient;\n}): Promise<EnrichResult> =>\n  runSingleEnrichment({\n    client,\n    input,\n    adapter: companySingleEnrichmentAdapter,\n  });\n", "import { isObject } from '@sniptt/guards';\n\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\n\nexport const isEmptyAddress = (value: unknown): boolean => {\n  if (!isObject(value)) {\n    return true;\n  }\n\n  const record = value as Record<string, unknown>;\n\n  return (\n    isEmptyText(record.addressStreet1) &&\n    isEmptyText(record.addressStreet2) &&\n    isEmptyText(record.addressCity) &&\n    isEmptyText(record.addressPostcode) &&\n    isEmptyText(record.addressState) &&\n    isEmptyText(record.addressCountry)\n  );\n};\n", "import { isNonEmptyString, isString } from '@sniptt/guards';\n\nexport const toText = (value: unknown): string | undefined => {\n  if (!isString(value)) {\n    return undefined;\n  }\n\n  const trimmed = value.trim();\n\n  return isNonEmptyString(trimmed) ? trimmed : undefined;\n};\n", "import { isNull, isUndefined } from '@sniptt/guards';\n\nexport const isDefined = <T>(\n  value: T | null | undefined,\n): value is NonNullable<T> => !isUndefined(value) && !isNull(value);\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport const isEmptyText = (value: unknown): boolean => !isDefined(toText(value));\n", "import { isObject } from '@sniptt/guards';\n\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\n\nexport const isEmptyLinks = (value: unknown): boolean => {\n  if (!isObject(value)) {\n    return true;\n  }\n\n  const record = value as Record<string, unknown>;\n\n  return isEmptyText(record.primaryLinkUrl);\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst NULL_COORDINATES = { lat: null, lng: null } as const;\n\nexport const parseGeo = (\n  geo: unknown,\n): { lat: number | null; lng: number | null } => {\n  const geoText = toText(geo);\n\n  if (!isDefined(geoText)) {\n    return { ...NULL_COORDINATES };\n  }\n\n  const latitudeAndLongitudeParts = geoText.split(',');\n  if (latitudeAndLongitudeParts.length !== 2) {\n    return { ...NULL_COORDINATES };\n  }\n\n  const latitude = Number.parseFloat(latitudeAndLongitudeParts[0]);\n  const longitude = Number.parseFloat(latitudeAndLongitudeParts[1]);\n\n  const isLatitudeInRange =\n    Number.isFinite(latitude) && latitude >= -90 && latitude <= 90;\n  const isLongitudeInRange =\n    Number.isFinite(longitude) && longitude >= -180 && longitude <= 180;\n\n  if (!isLatitudeInRange || !isLongitudeInRange) {\n    return { ...NULL_COORDINATES };\n  }\n\n  return { lat: latitude, lng: longitude };\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { parseGeo } from 'src/logic-functions/utils/parse-geo';\nimport { type AddressParts } from 'src/types/address-parts';\nimport { type AddressValue } from 'src/types/address-value';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport const buildAddress = (parts: AddressParts): AddressValue | undefined => {\n  const street1 = toText(parts.street1);\n  const street2 = toText(parts.street2);\n  const city = toText(parts.city);\n  const postcode = toText(parts.postcode);\n  const state = toText(parts.state);\n  const country = toText(parts.country);\n  const { lat, lng } = parseGeo(parts.geo);\n\n  const hasAnyValue =\n    isDefined(street1) ||\n    isDefined(street2) ||\n    isDefined(city) ||\n    isDefined(postcode) ||\n    isDefined(state) ||\n    isDefined(country) ||\n    isDefined(lat) ||\n    isDefined(lng);\n\n  if (!hasAnyValue) {\n    return undefined;\n  }\n\n  return {\n    addressStreet1: street1 ?? '',\n    addressStreet2: street2 ?? '',\n    addressCity: city ?? '',\n    addressPostcode: postcode ?? '',\n    addressState: state ?? '',\n    addressCountry: country ?? '',\n    addressLat: lat,\n    addressLng: lng,\n  };\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { type LinksValue } from 'src/types/links-value';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst ALLOWED_SCHEMES = new Set(['http:', 'https:']);\nconst SCHEME_PREFIX_REGEX = /^[a-z][a-z0-9+.-]*:/i;\n\n// Defense-in-depth: accept bare hosts/paths and http(s) URLs, but drop any\n// explicit non-http(s) scheme (javascript:, data:, etc.) before persisting.\nconst hasAllowedScheme = (value: string): boolean => {\n  const schemeMatch = value.match(SCHEME_PREFIX_REGEX);\n  if (schemeMatch === null) {\n    return true;\n  }\n\n  const remainder = value.slice(schemeMatch[0].length);\n  if (!remainder.startsWith('//')) {\n    // A dotted token before the colon is a host:port (e.g. \"example.com:8080\"),\n    // not a scheme; a dot-free token is a real scheme (mailto:, javascript:).\n    return schemeMatch[0].slice(0, -1).includes('.');\n  }\n\n  return ALLOWED_SCHEMES.has(schemeMatch[0].toLowerCase());\n};\n\nexport const buildLinks = ({\n  url,\n  label,\n}: {\n  url: unknown;\n  label?: unknown;\n}): LinksValue | undefined => {\n  const primaryLinkUrl = toText(url);\n\n  if (!isDefined(primaryLinkUrl) || !hasAllowedScheme(primaryLinkUrl)) {\n    return undefined;\n  }\n\n  return {\n    primaryLinkUrl,\n    primaryLinkLabel: toText(label) ?? '',\n    secondaryLinks: null,\n  };\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst SCHEME_REGEX = /^[a-z][a-z0-9+.-]*:\\/\\//;\nconst LEADING_WWW_REGEX = /^www\\./;\n\nexport const normalizeDomain = (\n  rawDomainValue: unknown,\n): string | undefined => {\n  const domainText = toText(rawDomainValue);\n  if (!isDefined(domainText)) {\n    return undefined;\n  }\n\n  const bareHost = domainText\n    .toLowerCase()\n    .replace(SCHEME_REGEX, '')\n    .split('/')[0]\n    .replace(LEADING_WWW_REGEX, '');\n\n  return bareHost === '' ? undefined : bareHost;\n};\n", "import { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nconst SCHEME_REGEX = /^[a-z][a-z0-9+.-]*:\\/\\//;\nconst LEADING_WWW_REGEX = /^www\\./;\nconst TRAILING_SLASHES_REGEX = /\\/+$/;\n\nexport const normalizeLinkedinUrl = (\n  rawLinkedinUrl: unknown,\n): string | undefined => {\n  const linkedinUrlText = toText(rawLinkedinUrl);\n  if (!isDefined(linkedinUrlText)) {\n    return undefined;\n  }\n\n  const canonicalUrlWithPath = linkedinUrlText\n    .toLowerCase()\n    .replace(SCHEME_REGEX, '')\n    .replace(LEADING_WWW_REGEX, '')\n    .replace(TRAILING_SLASHES_REGEX, '');\n\n  return canonicalUrlWithPath === '' ? undefined : canonicalUrlWithPath;\n};\n", "import { isNumber } from '@sniptt/guards';\n\nexport const toNumber = (value: unknown): number | undefined =>\n  isNumber(value) && Number.isFinite(value) ? value : undefined;\n", "import { isArray, isNonEmptyArray } from '@sniptt/guards';\n\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\nexport const toStringArray = (value: unknown): string[] | undefined => {\n  if (!isArray(value)) {\n    return undefined;\n  }\n\n  const uniqueStrings: string[] = [];\n  const seenLowercaseValues = new Set<string>();\n\n  for (const entry of value) {\n    const stringValue = toText(entry);\n    if (!isDefined(stringValue)) {\n      continue;\n    }\n\n    const lowercaseValue = stringValue.toLowerCase();\n    if (!seenLowercaseValues.has(lowercaseValue)) {\n      seenLowercaseValues.add(lowercaseValue);\n      uniqueStrings.push(stringValue);\n    }\n  }\n\n  return isNonEmptyArray(uniqueStrings) ? uniqueStrings : undefined;\n};\n", "import { isUndefined } from '@sniptt/guards';\n\nexport const pruneUndefined = <TValue>(\n  record: Record<string, TValue | undefined>,\n): Record<string, TValue> => {\n  const prunedRecord: Record<string, TValue> = {};\n\n  for (const [key, value] of Object.entries(record)) {\n    if (!isUndefined(value)) {\n      prunedRecord[key] = value;\n    }\n  }\n\n  return prunedRecord;\n};\n", "import { buildAddress } from 'src/logic-functions/utils/build-address';\nimport { buildLinks } from 'src/logic-functions/utils/build-links';\nimport { normalizeDomain } from 'src/logic-functions/utils/normalize-domain';\nimport { normalizeLinkedinUrl } from 'src/logic-functions/utils/normalize-linkedin-url';\nimport { toNumber } from 'src/logic-functions/utils/to-number';\nimport { toStringArray } from 'src/logic-functions/utils/to-string-array';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloOrganizationData } from 'src/types/apollo-organization-data';\nimport { type MappedRecord } from 'src/types/mapped-record';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nexport const mapCompany = (\n  companyData: ApolloOrganizationData,\n): MappedRecord => {\n  const address = buildAddress({\n    street1: companyData.street_address,\n    city: companyData.city,\n    postcode: companyData.postal_code,\n    state: companyData.state,\n    country: companyData.country,\n  });\n\n  const standard = pruneUndefined({\n    name: toText(companyData.name),\n    domainName: buildLinks({\n      url: normalizeDomain(companyData.primary_domain),\n    }),\n    linkedinLink: buildLinks({\n      url: normalizeLinkedinUrl(companyData.linkedin_url),\n    }),\n    address,\n  });\n\n  const apollo = pruneUndefined({\n    apolloId: toText(companyData.id),\n    apolloIndustry: toText(companyData.industry),\n    apolloEmployees: toNumber(companyData.estimated_num_employees),\n    apolloAnnualRevenue: toNumber(companyData.annual_revenue),\n    apolloFoundedYear: toNumber(companyData.founded_year),\n    apolloKeywords: toStringArray(companyData.keywords),\n    apolloTechnologies: toStringArray(companyData.technology_names),\n    apolloTotalFunding: toNumber(companyData.total_funding),\n    apolloLatestFundingStage: toText(companyData.latest_funding_stage),\n    apolloLinkedinUrl: toText(companyData.linkedin_url),\n    apolloPhone: toText(companyData.primary_phone?.number),\n    apolloLocation: address,\n    apolloHeadcountGrowth6mo: toNumber(\n      companyData.organization_headcount_six_month_growth,\n    ),\n    apolloHeadcountGrowth12mo: toNumber(\n      companyData.organization_headcount_twelve_month_growth,\n    ),\n    apolloNaicsCodes: toStringArray(companyData.naics_codes),\n  });\n\n  return { standard, apollo };\n};\n", "import { isDefined } from 'src/utils/is-defined';\n\nexport const pickWritableStandard = ({\n  standard,\n  current,\n  emptyChecks,\n  overrideExistingValues,\n}: {\n  standard: Record<string, unknown>;\n  current: Record<string, unknown>;\n  emptyChecks: Record<string, (current: unknown) => boolean>;\n  overrideExistingValues?: boolean;\n}): Record<string, unknown> => {\n  const writableFields: Record<string, unknown> = {};\n\n  for (const [fieldName, fieldValue] of Object.entries(standard)) {\n    const isEmptyCheck = emptyChecks[fieldName];\n    if (\n      isDefined(isEmptyCheck) &&\n      (overrideExistingValues === true || isEmptyCheck(current[fieldName]))\n    ) {\n      writableFields[fieldName] = fieldValue;\n    }\n  }\n\n  return writableFields;\n};\n", "import { isEmptyAddress } from 'src/logic-functions/utils/is-empty-address';\nimport { isEmptyLinks } from 'src/logic-functions/utils/is-empty-links';\nimport { isEmptyText } from 'src/logic-functions/utils/is-empty-text';\nimport { mapCompany } from 'src/logic-functions/utils/map-company';\nimport { pickWritableStandard } from 'src/logic-functions/utils/pick-writable-standard';\nimport { type CompanyNode } from 'src/types/company-node';\nimport { type ApolloOrganizationData } from 'src/types/apollo-organization-data';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nconst COMPANY_EMPTY_CHECKS = {\n  name: isEmptyText,\n  domainName: isEmptyLinks,\n  linkedinLink: isEmptyLinks,\n  address: isEmptyAddress,\n};\n\nexport const buildCompanyMatchedData = async ({\n  node,\n  outcome,\n  enrichedAt,\n  overrideExistingValues,\n  shouldPersist,\n}: {\n  node: CompanyNode;\n  outcome: { data: ApolloOrganizationData };\n  enrichedAt: string;\n  overrideExistingValues: boolean;\n  shouldPersist: boolean;\n}): Promise<{\n  mappedData: Record<string, unknown>;\n  persistData: Record<string, unknown>;\n}> => {\n  const mapped = mapCompany(outcome.data);\n  const mappedData = pruneUndefined({ ...mapped.standard, ...mapped.apollo });\n\n  if (!shouldPersist) {\n    return { mappedData, persistData: {} };\n  }\n\n  const writableStandard = pickWritableStandard({\n    standard: mapped.standard,\n    current: node as unknown as Record<string, unknown>,\n    emptyChecks: COMPANY_EMPTY_CHECKS,\n    overrideExistingValues,\n  });\n\n  const persistData = pruneUndefined({\n    ...writableStandard,\n    ...mapped.apollo,\n    apolloRawPayload: outcome.data,\n    apolloLastEnrichedAt: enrichedAt,\n    apolloEnrichmentStatus: 'MATCHED',\n  });\n\n  return { mappedData, persistData };\n};\n", "import { isArray } from '@sniptt/guards';\n\nimport { buildApolloOrganizationDetail } from 'src/logic-functions/utils/build-apollo-organization-detail';\nimport { isApolloOrganizationMatched } from 'src/logic-functions/utils/is-apollo-matched';\nimport { postApolloBulkEnrich } from 'src/logic-functions/utils/post-apollo-enrich';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\nimport { type ApolloOrganizationData } from 'src/types/apollo-organization-data';\nimport { type ApolloOrganizationEnrichParams } from 'src/types/apollo-organization-enrich-params';\n\n// Apollo /organizations/bulk_enrich accepts at most 10 detail entries per request.\nexport const enrichCompanies = (\n  params: ApolloOrganizationEnrichParams[],\n): Promise<ApolloEnrichResult<ApolloOrganizationData>[]> =>\n  postApolloBulkEnrich<ApolloOrganizationData>({\n    path: '/organizations/bulk_enrich',\n    body: { details: params.map(buildApolloOrganizationDetail) },\n    count: params.length,\n    extractList: (json) =>\n      isArray(json.organizations)\n        ? json.organizations\n        : isArray(json.matches)\n          ? json.matches\n          : [],\n    isMatched: isApolloOrganizationMatched,\n  });\n", "import { type ApolloOrganizationEnrichParams } from 'src/types/apollo-organization-enrich-params';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\n// Maps our internal match params to an Apollo organization enrich detail object.\nexport const buildApolloOrganizationDetail = (\n  entry: ApolloOrganizationEnrichParams,\n): Record<string, unknown> =>\n  pruneUndefined({\n    domain: entry.domain,\n    name: entry.name,\n    linkedin_url: entry.linkedinUrl,\n  });\n", "import { isObject } from '@sniptt/guards';\n\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { isDefined } from 'src/utils/is-defined';\n\n// Apollo returns HTTP 200 even when nothing matched, with a mostly-null entity\n// (an `id` may still be present). Treat as matched only when real data exists.\nexport const isApolloPersonMatched = (person: unknown): boolean => {\n  if (!isObject(person)) {\n    return false;\n  }\n\n  const record = person as Record<string, unknown>;\n\n  return (\n    isDefined(toText(record.name)) ||\n    isDefined(toText(record.first_name)) ||\n    isDefined(toText(record.last_name)) ||\n    isDefined(toText(record.email)) ||\n    isDefined(toText(record.title))\n  );\n};\n\nexport const isApolloOrganizationMatched = (organization: unknown): boolean => {\n  if (!isObject(organization)) {\n    return false;\n  }\n\n  const record = organization as Record<string, unknown>;\n\n  return (\n    isDefined(toText(record.name)) || isDefined(toText(record.primary_domain))\n  );\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { apolloFetch } from 'src/logic-functions/utils/apollo-fetch';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\n\nexport const postApolloBulkEnrich = async <TData>({\n  path,\n  body,\n  count,\n  extractList,\n  isMatched,\n}: {\n  path: string;\n  body: Record<string, unknown>;\n  count: number;\n  extractList: (json: Record<string, unknown>) => unknown[];\n  isMatched: (entity: unknown) => boolean;\n}): Promise<ApolloEnrichResult<TData>[]> => {\n  if (count === 0) {\n    return [];\n  }\n\n  const result = await apolloFetch({ method: 'POST', path, body });\n\n  if (!result.ok) {\n    return Array.from({ length: count }, () => ({\n      outcome: 'error' as const,\n      httpStatus: result.httpStatus,\n      message: result.message,\n    }));\n  }\n\n  const entities = extractList(result.json);\n\n  // Apollo bulk endpoints return one batch-level request_id, which cannot be\n  // correlated back to an individual record. Phone reveal is therefore never\n  // requested on bulk paths, so no requestId is stamped here.\n  return Array.from({ length: count }, (_unused, index) => {\n    const entity = entities[index];\n\n    if (!isObject(entity) || !isMatched(entity)) {\n      return { outcome: 'not_found' as const, httpStatus: result.httpStatus };\n    }\n\n    return {\n      outcome: 'matched' as const,\n      httpStatus: result.httpStatus,\n      data: entity as TData,\n    };\n  });\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { APOLLO_BASE_URL } from 'src/constants/apollo-base-url';\nimport { extractApolloErrorMessage } from 'src/logic-functions/utils/extract-apollo-error-message';\nimport { getApolloApiKey } from 'src/logic-functions/utils/get-apollo-api-key';\n\nconst MAX_RETRIES = 3;\nconst BASE_BACKOFF_MS = 250;\nconst MAX_RETRY_AFTER_MS = 30_000;\n\nconst sleep = (ms: number): Promise<void> =>\n  new Promise((resolve) => setTimeout(resolve, ms));\n\nconst isRetryableStatus = (status: number): boolean =>\n  status === 429 || status >= 500;\n\n// Prefer the server-provided Retry-After (seconds) when present, clamped to a\n// sane maximum; otherwise fall back to bounded exponential backoff.\nconst computeBackoffMs = (response: Response, attempt: number): number => {\n  const retryAfterHeader = response.headers.get('retry-after');\n  if (retryAfterHeader !== null) {\n    const retryAfterSeconds = Number.parseInt(retryAfterHeader, 10);\n    if (Number.isFinite(retryAfterSeconds) && retryAfterSeconds > 0) {\n      return Math.min(retryAfterSeconds * 1000, MAX_RETRY_AFTER_MS);\n    }\n  }\n\n  return BASE_BACKOFF_MS * 2 ** attempt;\n};\n\nexport type ApolloFetchResult =\n  | { ok: true; httpStatus: number; json: Record<string, unknown> }\n  | { ok: false; httpStatus: number; message: string };\n\n// Low-level Apollo REST call. Retries transient failures (network errors, HTTP\n// 429, and 5xx responses) with bounded exponential backoff, honoring Retry-After.\nexport const apolloFetch = async ({\n  method,\n  path,\n  body,\n}: {\n  method: 'GET' | 'POST';\n  path: string;\n  body?: Record<string, unknown>;\n}): Promise<ApolloFetchResult> => {\n  const apiKey = getApolloApiKey();\n\n  for (let attempt = 0; ; attempt++) {\n    let response: Response;\n    try {\n      response = await fetch(`${APOLLO_BASE_URL}${path}`, {\n        method,\n        headers: {\n          'Content-Type': 'application/json',\n          'x-api-key': apiKey,\n        },\n        body: body === undefined ? undefined : JSON.stringify(body),\n      });\n    } catch (error) {\n      if (attempt < MAX_RETRIES) {\n        await sleep(BASE_BACKOFF_MS * 2 ** attempt);\n        continue;\n      }\n\n      const message = error instanceof Error ? error.message : String(error);\n\n      return { ok: false, httpStatus: 0, message: `Apollo.io request failed: ${message}` };\n    }\n\n    if (isRetryableStatus(response.status) && attempt < MAX_RETRIES) {\n      await sleep(computeBackoffMs(response, attempt));\n      continue;\n    }\n\n    let json: unknown;\n    try {\n      json = await response.json();\n    } catch {\n      return {\n        ok: false,\n        httpStatus: response.status,\n        message: `Apollo.io returned a non-JSON response (HTTP ${response.status}).`,\n      };\n    }\n\n    const responseObject = isObject(json) ? (json as Record<string, unknown>) : {};\n\n    if (!response.ok) {\n      return {\n        ok: false,\n        httpStatus: response.status,\n        message: extractApolloErrorMessage({\n          json: responseObject,\n          httpStatus: response.status,\n        }),\n      };\n    }\n\n    return { ok: true, httpStatus: response.status, json: responseObject };\n  }\n};\n", "export const APOLLO_BASE_URL = 'https://api.apollo.io/api/v1';\n", "import { isNonEmptyString, isObject, isString } from '@sniptt/guards';\n\nimport { isDefined } from 'src/utils/is-defined';\n\nconst extractMessageFromValue = (\n  messageValue: unknown,\n): string | undefined => {\n  if (isNonEmptyString(messageValue)) {\n    return messageValue;\n  }\n\n  if (Array.isArray(messageValue)) {\n    const joinedMessages = messageValue.filter(isString).join('; ');\n\n    return isNonEmptyString(joinedMessages) ? joinedMessages : undefined;\n  }\n\n  return undefined;\n};\n\nexport const extractApolloErrorMessage = ({\n  json,\n  httpStatus,\n}: {\n  json: Record<string, unknown>;\n  httpStatus: number;\n}): string => {\n  const errorField = json.error;\n\n  if (isObject(errorField)) {\n    const messageFromErrorObject = extractMessageFromValue(\n      (errorField as Record<string, unknown>).message,\n    );\n    if (isDefined(messageFromErrorObject)) {\n      return messageFromErrorObject;\n    }\n  }\n\n  const messageFromTopLevelField =\n    extractMessageFromValue(errorField) ??\n    extractMessageFromValue(json.message) ??\n    extractMessageFromValue(json.errors);\n  if (isDefined(messageFromTopLevelField)) {\n    return messageFromTopLevelField;\n  }\n\n  return `Apollo.io request failed (HTTP ${httpStatus}).`;\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\n\nimport { ApolloConfigError } from 'src/logic-functions/errors/apollo-config-error';\n\nexport const getApolloApiKey = (): string => {\n  const apiKey = process.env.APOLLO_API_KEY?.trim();\n\n  if (!isNonEmptyString(apiKey)) {\n    throw new ApolloConfigError(\n      'APOLLO_API_KEY is not set. The workspace admin must configure the Apollo.io API key in Settings -> Apps.',\n    );\n  }\n\n  return apiKey;\n};\n", "import { type ApolloErrorCode } from 'src/logic-functions/errors/apollo-error-code';\n\nexport abstract class ApolloError extends Error {\n  readonly code: ApolloErrorCode;\n\n  constructor({ message, code }: { message: string; code: ApolloErrorCode }) {\n    super(message);\n    Object.setPrototypeOf(this, new.target.prototype);\n    this.name = new.target.name;\n    this.code = code;\n  }\n}\n", "export const ApolloErrorCode = {\n  CONFIGURATION: 'CONFIGURATION',\n  INVALID_INPUT: 'INVALID_INPUT',\n  RECORD_NOT_FOUND: 'RECORD_NOT_FOUND',\n  OPERATION_FAILED: 'OPERATION_FAILED',\n} as const;\n\nexport type ApolloErrorCode = (typeof ApolloErrorCode)[keyof typeof ApolloErrorCode];\n", "import { ApolloError } from 'src/logic-functions/errors/apollo-error';\nimport { ApolloErrorCode } from 'src/logic-functions/errors/apollo-error-code';\n\nexport class ApolloConfigError extends ApolloError {\n  constructor(message: string) {\n    super({ message, code: ApolloErrorCode.CONFIGURATION });\n  }\n}\n", "import { normalizeDomain } from 'src/logic-functions/utils/normalize-domain';\nimport { normalizeLinkedinUrl } from 'src/logic-functions/utils/normalize-linkedin-url';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloOrganizationEnrichParams } from 'src/types/apollo-organization-enrich-params';\nimport { type BulkEnrichInput } from 'src/types/bulk-enrich-input';\nimport { type CompanyNode } from 'src/types/company-node';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nexport const extractCompanyMatchParams = ({\n  node,\n}: {\n  node: CompanyNode;\n  input: BulkEnrichInput;\n}): ApolloOrganizationEnrichParams | undefined => {\n  const params = pruneUndefined({\n    domain: normalizeDomain(node.domainName?.primaryLinkUrl),\n    linkedinUrl: normalizeLinkedinUrl(node.linkedinLink?.primaryLinkUrl),\n    name: toText(node.name),\n  });\n\n  if (Object.keys(params).length === 0) {\n    return undefined;\n  }\n\n  return params;\n};\n", "import { isNonEmptyString, isObject } from '@sniptt/guards';\nimport { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { type CompanyNode } from 'src/types/company-node';\n\nexport const readCompanies = async ({\n  client,\n  recordIds,\n}: {\n  client: CoreApiClient;\n  recordIds: string[];\n}): Promise<CompanyNode[]> => {\n  if (recordIds.length === 0) {\n    return [];\n  }\n\n  const result = (await client.query({\n    companies: {\n      __args: { filter: { id: { in: recordIds } }, first: recordIds.length },\n      edges: {\n        node: {\n          id: true,\n          name: true,\n          domainName: { primaryLinkUrl: true },\n          linkedinLink: { primaryLinkUrl: true },\n          address: {\n            addressStreet1: true,\n            addressStreet2: true,\n            addressCity: true,\n            addressPostcode: true,\n            addressState: true,\n            addressCountry: true,\n          },\n          apolloId: true,\n          apolloLastEnrichedAt: true,\n        },\n      },\n    },\n  })) as { companies?: { edges?: { node: CompanyNode }[] } };\n\n  const edges = result.companies?.edges;\n  if (!Array.isArray(edges)) {\n    return [];\n  }\n\n  return edges\n    .map((edge) => edge?.node)\n    .filter(\n      (companyNode): companyNode is CompanyNode =>\n        isObject(companyNode) &&\n        isNonEmptyString((companyNode as { id?: unknown }).id),\n    );\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nexport const updateCompaniesStatus = async ({\n  client,\n  recordIds,\n  data,\n}: {\n  client: CoreApiClient;\n  recordIds: string[];\n  data: Record<string, unknown>;\n}): Promise<void> => {\n  await client.mutation({\n    updateCompanies: {\n      __args: { filter: { id: { in: recordIds } }, data },\n      id: true,\n    },\n  });\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nexport const updateCompanyRecord = async ({\n  client,\n  recordId,\n  data,\n}: {\n  client: CoreApiClient;\n  recordId: string;\n  data: Record<string, unknown>;\n}): Promise<void> => {\n  await client.mutation({\n    updateCompany: { __args: { id: recordId, data }, id: true },\n  });\n};\n", "import { buildCompanyMatchedData } from 'src/logic-functions/utils/build-company-matched-data';\nimport { enrichCompanies } from 'src/logic-functions/utils/enrich-companies';\nimport { extractCompanyMatchParams } from 'src/logic-functions/utils/extract-company-match-params';\nimport { readCompanies } from 'src/logic-functions/utils/read-companies';\nimport { updateCompaniesStatus } from 'src/logic-functions/utils/update-companies-status';\nimport { updateCompanyRecord } from 'src/logic-functions/utils/update-company-record';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type CompanyNode } from 'src/types/company-node';\nimport { type ApolloOrganizationData } from 'src/types/apollo-organization-data';\nimport { type ApolloOrganizationEnrichParams } from 'src/types/apollo-organization-enrich-params';\n\nexport const companyEnrichmentAdapter: BatchEnrichmentAdapter<\n  CompanyNode,\n  ApolloOrganizationData,\n  ApolloOrganizationEnrichParams\n> = {\n  objectNameSingular: 'Company',\n  noIdentifierMessage:\n    'No usable identifier (domain, LinkedIn, or name) to match against Apollo.io.',\n  readRecords: readCompanies,\n  getNodeId: (node) => node.id,\n  getLastEnrichedAt: (node) => node.apolloLastEnrichedAt ?? null,\n  extractParams: extractCompanyMatchParams,\n  enrichBatch: enrichCompanies,\n  buildMatchedData: ({\n    node,\n    outcome,\n    enrichedAt,\n    overrideExistingValues,\n    shouldPersist,\n  }) =>\n    buildCompanyMatchedData({\n      node,\n      outcome,\n      enrichedAt,\n      overrideExistingValues,\n      shouldPersist,\n    }),\n  updateOne: updateCompanyRecord,\n  updateManyStatus: updateCompaniesStatus,\n};\n", "import { isObject } from '@sniptt/guards';\n\nimport { apolloFetch } from 'src/logic-functions/utils/apollo-fetch';\nimport { toText } from 'src/logic-functions/utils/to-text';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\n\nexport const postApolloSingleEnrich = async <TData>({\n  method,\n  path,\n  body,\n  extractEntity,\n  isMatched,\n  includeRequestId = false,\n}: {\n  method: 'GET' | 'POST';\n  path: string;\n  body?: Record<string, unknown>;\n  extractEntity: (json: Record<string, unknown>) => unknown;\n  isMatched: (entity: unknown) => boolean;\n  // Only the single /people/match path with an async phone reveal in flight\n  // should surface request_id, so the phone webhook can later correlate it.\n  includeRequestId?: boolean;\n}): Promise<ApolloEnrichResult<TData>> => {\n  const result = await apolloFetch({ method, path, body });\n\n  if (!result.ok) {\n    return { outcome: 'error', httpStatus: result.httpStatus, message: result.message };\n  }\n\n  const entity = extractEntity(result.json);\n\n  if (!isObject(entity) || !isMatched(entity)) {\n    return { outcome: 'not_found', httpStatus: result.httpStatus };\n  }\n\n  return {\n    outcome: 'matched',\n    httpStatus: result.httpStatus,\n    data: entity as TData,\n    requestId: includeRequestId ? toText(result.json.request_id) : undefined,\n  };\n};\n", "import { isApolloOrganizationMatched } from 'src/logic-functions/utils/is-apollo-matched';\nimport { postApolloSingleEnrich } from 'src/logic-functions/utils/post-apollo-single-enrich';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\nimport { type ApolloOrganizationData } from 'src/types/apollo-organization-data';\nimport { type ApolloOrganizationEnrichParams } from 'src/types/apollo-organization-enrich-params';\nimport { pruneUndefined } from 'src/utils/prune-undefined';\n\nexport const enrichCompany = (\n  params: ApolloOrganizationEnrichParams[],\n): Promise<ApolloEnrichResult<ApolloOrganizationData>[]> =>\n  Promise.all(\n    params.map((entry) => {\n      const query = new URLSearchParams(\n        pruneUndefined<string>({\n          domain: entry.domain,\n          name: entry.name,\n          linkedin_url: entry.linkedinUrl,\n        }),\n      ).toString();\n\n      return postApolloSingleEnrich<ApolloOrganizationData>({\n        method: 'GET',\n        path: `/organizations/enrich?${query}`,\n        extractEntity: (json) => json.organization,\n        isMatched: isApolloOrganizationMatched,\n      });\n    }),\n  );\n", "import { companyEnrichmentAdapter } from 'src/logic-functions/handlers/company-enrichment-adapter';\nimport { enrichCompany } from 'src/logic-functions/utils/enrich-company';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type CompanyNode } from 'src/types/company-node';\nimport { type ApolloOrganizationData } from 'src/types/apollo-organization-data';\nimport { type ApolloOrganizationEnrichParams } from 'src/types/apollo-organization-enrich-params';\n\nexport const companySingleEnrichmentAdapter: BatchEnrichmentAdapter<\n  CompanyNode,\n  ApolloOrganizationData,\n  ApolloOrganizationEnrichParams\n> = {\n  ...companyEnrichmentAdapter,\n  enrichBatch: enrichCompany,\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\nimport { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport {\n  buildErrorResult,\n  ENRICHMENT_FAILED_MESSAGE,\n} from 'src/logic-functions/utils/build-error-result';\nimport { runBatchEnrichment } from 'src/logic-functions/utils/run-batch-enrichment';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type EnrichResult } from 'src/types/enrich-result';\nimport { type SingleEnrichInput } from 'src/types/single-enrich-input';\n\nconst NO_RECORD_ID_MESSAGE = 'No record id was provided to enrich.';\n\nexport const runSingleEnrichment = async <TNode, TData, TParams>({\n  client,\n  input,\n  adapter,\n}: {\n  client: CoreApiClient;\n  input: SingleEnrichInput;\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n}): Promise<EnrichResult> => {\n  const recordId = input.recordId?.trim();\n\n  if (!isNonEmptyString(recordId)) {\n    return buildErrorResult({ recordId: '', error: NO_RECORD_ID_MESSAGE });\n  }\n\n  const bulkResult = await runBatchEnrichment({\n    client,\n    input: {\n      records: recordId,\n      updateFields: input.updateFields,\n      minLikelihood: input.minLikelihood,\n    },\n    adapter,\n  });\n\n  return (\n    bulkResult.results[0] ??\n    buildErrorResult({ recordId, error: ENRICHMENT_FAILED_MESSAGE })\n  );\n};\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const ENRICHMENT_FAILED_MESSAGE = 'Apollo.io enrichment failed.';\n\nexport const buildErrorResult = ({\n  recordId,\n  error,\n}: {\n  recordId: string;\n  error: string;\n}): EnrichResult => ({\n  success: false,\n  recordId,\n  status: 'ERROR',\n  updatedFields: [],\n  message: ENRICHMENT_FAILED_MESSAGE,\n  error,\n});\n", "import { type BulkEnrichResult } from 'src/types/bulk-enrich-result';\nimport { type EnrichResult } from 'src/types/enrich-result';\n\nexport const aggregateBulkEnrichResult = (\n  results: EnrichResult[],\n  message?: string,\n): BulkEnrichResult => {\n  const countByStatus = (status: EnrichResult['status']): number =>\n    results.filter((result) => result.status === status).length;\n\n  const errored = countByStatus('ERROR');\n\n  return {\n    success: errored === 0,\n    total: results.length,\n    matched: countByStatus('MATCHED'),\n    notFound: countByStatus('NOT_FOUND'),\n    skipped: countByStatus('SKIPPED'),\n    errored,\n    results,\n    ...(message !== undefined ? { message } : {}),\n  };\n};\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const buildSkippedResult = ({\n  recordId,\n  message,\n}: {\n  recordId: string;\n  message: string;\n}): EnrichResult => ({\n  success: true,\n  recordId,\n  status: 'SKIPPED',\n  updatedFields: [],\n  message,\n});\n", "export const chunk = <TItem>({\n  items,\n  size,\n}: {\n  items: TItem[];\n  size: number;\n}): TItem[][] => {\n  if (size <= 0) {\n    return items.length > 0 ? [items] : [];\n  }\n\n  const chunks: TItem[][] = [];\n  for (let index = 0; index < items.length; index += size) {\n    chunks.push(items.slice(index, index + size));\n  }\n\n  return chunks;\n};\n", "// Hard cap on how many records a single bulk enrichment may process. Protects\n// Apollo credits from an accidental \"select all -> Enrich\" on a large view.\n// Enforced server-side (in run-batch-enrichment) and echoed client-side for\n// immediate feedback.\nexport const MAX_BULK_ENRICH_RECORDS = 50;\n", "import { MAX_BULK_ENRICH_RECORDS } from 'src/constants/enrichment-limits';\n\n// The per-action bulk enrichment cap. Admins can override the default via the\n// APOLLO_MAX_BULK_ENRICH application variable (Settings -> Apps -> Apollo).\nexport const getMaxBulkEnrich = (): number => {\n  const raw = process.env.APOLLO_MAX_BULK_ENRICH?.trim();\n\n  if (raw === undefined || raw === '') {\n    return MAX_BULK_ENRICH_RECORDS;\n  }\n\n  const parsed = Number.parseInt(raw, 10);\n\n  if (!Number.isFinite(parsed) || parsed <= 0) {\n    return MAX_BULK_ENRICH_RECORDS;\n  }\n\n  return parsed;\n};\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const buildMatchedResult = ({\n  recordId,\n  updatedFields,\n  data,\n}: {\n  recordId: string;\n  updatedFields: string[];\n  data?: Record<string, unknown>;\n}): EnrichResult => ({\n  success: true,\n  recordId,\n  status: 'MATCHED',\n  updatedFields,\n  data,\n  message:\n    updatedFields.length > 0\n      ? `Enriched with Apollo.io (${updatedFields.length} fields).`\n      : 'Matched Apollo.io data; no fields updated.',\n});\n", "import { type EnrichResult } from 'src/types/enrich-result';\n\nexport const buildNotFoundResult = (recordId: string): EnrichResult => ({\n  success: true,\n  recordId,\n  status: 'NOT_FOUND',\n  updatedFields: [],\n  message: 'Apollo.io returned no confident match.',\n});\n", "export const INTERNAL_BOOKKEEPING_FIELDS: ReadonlySet<string> = new Set([\n  'apolloRawPayload',\n  'apolloLastEnrichedAt',\n  'apolloEnrichmentStatus',\n  'apolloLikelihood',\n]);\n", "export const nowIso = (): string => new Date().toISOString();\n", "import { UPDATE_FIELDS_OPTIONS } from 'src/constants/update-fields-options';\nimport { type UpdateFieldsOption } from 'src/types/update-fields-option';\n\nexport const resolveUpdateFieldsMode = (\n  updateFields?: UpdateFieldsOption,\n): { shouldPersist: boolean; overrideExistingValues: boolean } => {\n  if (updateFields === UPDATE_FIELDS_OPTIONS.no) {\n    return { shouldPersist: false, overrideExistingValues: false };\n  }\n\n  if (updateFields === UPDATE_FIELDS_OPTIONS.overwrite) {\n    return { shouldPersist: true, overrideExistingValues: true };\n  }\n\n  return { shouldPersist: true, overrideExistingValues: false };\n};\n", "export const toErrorMessage = (error: unknown): string =>\n  error instanceof Error ? error.message : String(error);\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { buildErrorResult } from 'src/logic-functions/utils/build-error-result';\nimport { buildMatchedResult } from 'src/logic-functions/utils/build-matched-result';\nimport { buildNotFoundResult } from 'src/logic-functions/utils/build-not-found-result';\nimport { buildSkippedResult } from 'src/logic-functions/utils/build-skipped-result';\nimport { INTERNAL_BOOKKEEPING_FIELDS } from 'src/logic-functions/utils/internal-field-names';\nimport { nowIso } from 'src/logic-functions/utils/now-iso';\nimport { resolveUpdateFieldsMode } from 'src/logic-functions/utils/resolve-update-fields-mode';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type BulkEnrichInput } from 'src/types/bulk-enrich-input';\nimport { type CompanyIdByMatchKeyCache } from 'src/types/company-id-by-match-key-cache';\nimport { type EnrichResult } from 'src/types/enrich-result';\nimport { type ApolloEnrichResult } from 'src/types/apollo-enrich-result';\nimport { isDefined } from 'src/utils/is-defined';\nimport { toErrorMessage } from 'src/utils/to-error-message';\n\nconst writeErrorStatusWithBackoff = async <TNode, TData, TParams>({\n  adapter,\n  client,\n  recordIds,\n  enrichedAt,\n}: {\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  client: CoreApiClient;\n  recordIds: string[];\n  enrichedAt: string;\n}): Promise<void> => {\n  if (recordIds.length === 0) {\n    return;\n  }\n\n  await adapter\n    .updateManyStatus({\n      client,\n      recordIds,\n      data: { apolloEnrichmentStatus: 'ERROR', apolloLastEnrichedAt: enrichedAt },\n    })\n    .catch(() => undefined);\n};\n\ntype MatchedRecord = {\n  recordId: string;\n  mappedData: Record<string, unknown>;\n  persistData: Record<string, unknown>;\n};\n\nconst recordMatchedRecords = async <TNode, TData, TParams>({\n  adapter,\n  client,\n  matchedRecords,\n  shouldPersist,\n  resultById,\n}: {\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  client: CoreApiClient;\n  matchedRecords: MatchedRecord[];\n  shouldPersist: boolean;\n  resultById: Map<string, EnrichResult>;\n}): Promise<string[]> => {\n  if (matchedRecords.length === 0) {\n    return [];\n  }\n\n  if (!shouldPersist) {\n    for (const matchedRecord of matchedRecords) {\n      resultById.set(\n        matchedRecord.recordId,\n        buildMatchedResult({\n          recordId: matchedRecord.recordId,\n          updatedFields: [],\n          data: matchedRecord.mappedData,\n        }),\n      );\n    }\n\n    return [];\n  }\n\n  const settledWriteResults = await Promise.allSettled(\n    matchedRecords.map((matchedRecord) =>\n      adapter.updateOne({\n        client,\n        recordId: matchedRecord.recordId,\n        data: matchedRecord.persistData,\n      }),\n    ),\n  );\n\n  const failedRecordIds: string[] = [];\n  for (const [index, writeResult] of settledWriteResults.entries()) {\n    const matchedRecord = matchedRecords[index];\n    if (writeResult.status === 'rejected') {\n      resultById.set(\n        matchedRecord.recordId,\n        buildErrorResult({\n          recordId: matchedRecord.recordId,\n          error: toErrorMessage(writeResult.reason),\n        }),\n      );\n      failedRecordIds.push(matchedRecord.recordId);\n      continue;\n    }\n\n    resultById.set(\n      matchedRecord.recordId,\n      buildMatchedResult({\n        recordId: matchedRecord.recordId,\n        updatedFields: Object.keys(matchedRecord.persistData).filter(\n          (fieldName) => !INTERNAL_BOOKKEEPING_FIELDS.has(fieldName),\n        ),\n        data: matchedRecord.mappedData,\n      }),\n    );\n  }\n\n  return failedRecordIds;\n};\n\nconst recordNotFoundRecords = async <TNode, TData, TParams>({\n  adapter,\n  client,\n  notFoundRecordIds,\n  shouldPersist,\n  enrichedAt,\n  resultById,\n}: {\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  client: CoreApiClient;\n  notFoundRecordIds: string[];\n  shouldPersist: boolean;\n  enrichedAt: string;\n  resultById: Map<string, EnrichResult>;\n}): Promise<string[]> => {\n  if (notFoundRecordIds.length === 0) {\n    return [];\n  }\n\n  if (!shouldPersist) {\n    for (const recordId of notFoundRecordIds) {\n      resultById.set(recordId, buildNotFoundResult(recordId));\n    }\n\n    return [];\n  }\n\n  try {\n    await adapter.updateManyStatus({\n      client,\n      recordIds: notFoundRecordIds,\n      data: { apolloEnrichmentStatus: 'NOT_FOUND', apolloLastEnrichedAt: enrichedAt },\n    });\n    for (const recordId of notFoundRecordIds) {\n      resultById.set(recordId, buildNotFoundResult(recordId));\n    }\n\n    return [];\n  } catch (notFoundStatusWriteError) {\n    const notFoundStatusWriteErrorMessage = toErrorMessage(\n      notFoundStatusWriteError,\n    );\n    for (const recordId of notFoundRecordIds) {\n      resultById.set(\n        recordId,\n        buildErrorResult({ recordId, error: notFoundStatusWriteErrorMessage }),\n      );\n    }\n\n    return notFoundRecordIds;\n  }\n};\n\nexport const enrichChunk = async <TNode, TData, TParams>({\n  client,\n  recordIds,\n  input,\n  adapter,\n  resultById,\n  companyIdByMatchKeyCache,\n}: {\n  client: CoreApiClient;\n  recordIds: string[];\n  input: BulkEnrichInput;\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n  resultById: Map<string, EnrichResult>;\n  companyIdByMatchKeyCache: CompanyIdByMatchKeyCache;\n}): Promise<void> => {\n  const { shouldPersist, overrideExistingValues } = resolveUpdateFieldsMode(\n    input.updateFields,\n  );\n\n  // In fill-empty mode, don't re-enrich records that were already enriched \u2014\n  // it would spend Apollo credits for no field change. \"Overwrite\" and preview\n  // (\"no\") modes still run.\n  const skipAlreadyEnriched = shouldPersist && !overrideExistingValues;\n\n  let recordNodes: TNode[];\n  try {\n    recordNodes = await adapter.readRecords({ client, recordIds });\n  } catch (readError) {\n    const readErrorMessage = toErrorMessage(readError);\n    for (const recordId of recordIds) {\n      resultById.set(\n        recordId,\n        buildErrorResult({ recordId, error: readErrorMessage }),\n      );\n    }\n\n    return;\n  }\n\n  const nodeByRecordId = new Map(\n    recordNodes.map((recordNode) => [adapter.getNodeId(recordNode), recordNode]),\n  );\n\n  const recordsToEnrich: { recordId: string; node: TNode; params: TParams }[] =\n    [];\n  for (const recordId of recordIds) {\n    const recordNode = nodeByRecordId.get(recordId);\n    if (!isDefined(recordNode)) {\n      resultById.set(\n        recordId,\n        buildErrorResult({\n          recordId,\n          error: `${adapter.objectNameSingular} ${recordId} not found`,\n        }),\n      );\n      continue;\n    }\n\n    if (skipAlreadyEnriched && isDefined(adapter.getLastEnrichedAt(recordNode))) {\n      resultById.set(\n        recordId,\n        buildSkippedResult({\n          recordId,\n          message:\n            'Already enriched \u2014 use \"Yes and overwrite\" to re-enrich (spends Apollo credits).',\n        }),\n      );\n      continue;\n    }\n\n    const matchParams = adapter.extractParams({ node: recordNode, input });\n    if (!isDefined(matchParams)) {\n      resultById.set(\n        recordId,\n        buildSkippedResult({\n          recordId,\n          message: adapter.noIdentifierMessage,\n        }),\n      );\n      continue;\n    }\n\n    recordsToEnrich.push({ recordId, node: recordNode, params: matchParams });\n  }\n\n  if (recordsToEnrich.length === 0) {\n    return;\n  }\n\n  const enrichedAt = nowIso();\n  const recordIdsToMarkAsError: string[] = [];\n\n  let apolloEnrichmentOutcomes: ApolloEnrichResult<TData>[];\n  try {\n    apolloEnrichmentOutcomes = await adapter.enrichBatch(\n      recordsToEnrich.map((recordToEnrich) => recordToEnrich.params),\n    );\n  } catch (enrichBatchError) {\n    const enrichBatchErrorMessage = toErrorMessage(enrichBatchError);\n    for (const recordToEnrich of recordsToEnrich) {\n      resultById.set(\n        recordToEnrich.recordId,\n        buildErrorResult({\n          recordId: recordToEnrich.recordId,\n          error: enrichBatchErrorMessage,\n        }),\n      );\n    }\n    if (shouldPersist) {\n      await writeErrorStatusWithBackoff({\n        adapter,\n        client,\n        recordIds: recordsToEnrich.map(\n          (recordToEnrich) => recordToEnrich.recordId,\n        ),\n        enrichedAt,\n      });\n    }\n\n    return;\n  }\n\n  const notFoundRecordIds: string[] = [];\n  const matchedRecords: MatchedRecord[] = [];\n\n  for (let index = 0; index < recordsToEnrich.length; index++) {\n    const { recordId, node: recordNode } = recordsToEnrich[index];\n    const enrichmentOutcome = apolloEnrichmentOutcomes[index];\n\n    if (!isDefined(enrichmentOutcome) || enrichmentOutcome.outcome === 'error') {\n      const enrichmentErrorMessage = isDefined(enrichmentOutcome)\n        ? enrichmentOutcome.message\n        : 'Apollo.io returned no response for this record.';\n      resultById.set(\n        recordId,\n        buildErrorResult({ recordId, error: enrichmentErrorMessage }),\n      );\n      recordIdsToMarkAsError.push(recordId);\n      continue;\n    }\n\n    if (enrichmentOutcome.outcome === 'not_found') {\n      notFoundRecordIds.push(recordId);\n      continue;\n    }\n\n    try {\n      const { mappedData, persistData } = await adapter.buildMatchedData({\n        client,\n        node: recordNode,\n        outcome: enrichmentOutcome,\n        enrichedAt,\n        companyIdByMatchKeyCache,\n        overrideExistingValues,\n        shouldPersist,\n      });\n      matchedRecords.push({ recordId, mappedData, persistData });\n    } catch (buildMatchedDataError) {\n      resultById.set(\n        recordId,\n        buildErrorResult({\n          recordId,\n          error: toErrorMessage(buildMatchedDataError),\n        }),\n      );\n      recordIdsToMarkAsError.push(recordId);\n    }\n  }\n\n  const failedMatchedWriteRecordIds = await recordMatchedRecords({\n    adapter,\n    client,\n    matchedRecords,\n    shouldPersist,\n    resultById,\n  });\n  recordIdsToMarkAsError.push(...failedMatchedWriteRecordIds);\n\n  const failedNotFoundWriteRecordIds = await recordNotFoundRecords({\n    adapter,\n    client,\n    notFoundRecordIds,\n    shouldPersist,\n    enrichedAt,\n    resultById,\n  });\n  recordIdsToMarkAsError.push(...failedNotFoundWriteRecordIds);\n\n  if (shouldPersist) {\n    await writeErrorStatusWithBackoff({\n      adapter,\n      client,\n      recordIds: recordIdsToMarkAsError,\n      enrichedAt,\n    });\n  }\n};\n", "import { isNonEmptyString } from '@sniptt/guards';\n\nimport { type RecordInput } from 'src/types/bulk-enrich-input';\n\nexport const extractRecordIds = (\n  records: RecordInput | RecordInput[],\n): string[] => {\n  const recordsAsArray =\n    records === null || records === undefined\n      ? []\n      : Array.isArray(records)\n        ? records\n        : [records];\n\n  return recordsAsArray\n    .map((record) => (typeof record === 'string' ? record : record?.id))\n    .filter((id): id is string => isNonEmptyString(id));\n};\n", "import { type CoreApiClient } from 'twenty-client-sdk/core';\n\nimport { aggregateBulkEnrichResult } from 'src/logic-functions/utils/aggregate-bulk-enrich-result';\nimport {\n  buildErrorResult,\n  ENRICHMENT_FAILED_MESSAGE,\n} from 'src/logic-functions/utils/build-error-result';\nimport { buildSkippedResult } from 'src/logic-functions/utils/build-skipped-result';\nimport { chunk } from 'src/logic-functions/utils/chunk';\nimport { getMaxBulkEnrich } from 'src/logic-functions/utils/get-max-bulk-enrich';\nimport { enrichChunk } from 'src/logic-functions/utils/enrich-chunk';\nimport { extractRecordIds } from 'src/logic-functions/utils/extract-record-ids';\nimport { type BatchEnrichmentAdapter } from 'src/types/batch-enrichment-adapter';\nimport { type BulkEnrichInput } from 'src/types/bulk-enrich-input';\nimport { type BulkEnrichResult } from 'src/types/bulk-enrich-result';\nimport { type CompanyIdByMatchKeyCache } from 'src/types/company-id-by-match-key-cache';\nimport { type EnrichResult } from 'src/types/enrich-result';\n\n// Apollo bulk endpoints accept at most 10 records per request.\nconst APOLLO_BATCH_SIZE = 10;\n\nexport const runBatchEnrichment = async <TNode, TData, TParams>({\n  client,\n  input,\n  adapter,\n}: {\n  client: CoreApiClient;\n  input: BulkEnrichInput;\n  adapter: BatchEnrichmentAdapter<TNode, TData, TParams>;\n}): Promise<BulkEnrichResult> => {\n  const recordIds = Array.from(new Set(extractRecordIds(input.records)));\n\n  // Cap the batch to protect Apollo credits from an accidental \"select all ->\n  // Enrich\": refuse the whole batch (no Apollo calls) with a clear message. The\n  // cap is configurable via the APOLLO_MAX_BULK_ENRICH application variable.\n  const maxBulkEnrich = getMaxBulkEnrich();\n  if (recordIds.length > maxBulkEnrich) {\n    const message = `Enrichment is limited to ${maxBulkEnrich} records at a time (you selected ${recordIds.length}). Select fewer and try again.`;\n\n    return {\n      ...aggregateBulkEnrichResult(\n        recordIds.map((recordId) => buildSkippedResult({ recordId, message })),\n        message,\n      ),\n      success: false,\n    };\n  }\n\n  const resultById = new Map<string, EnrichResult>();\n  const companyIdByMatchKeyCache: CompanyIdByMatchKeyCache = new Map();\n\n  for (const recordIdsChunk of chunk({ items: recordIds, size: APOLLO_BATCH_SIZE })) {\n    await enrichChunk({\n      client,\n      recordIds: recordIdsChunk,\n      input,\n      adapter,\n      resultById,\n      companyIdByMatchKeyCache,\n    });\n  }\n\n  const results = recordIds.map(\n    (recordId) =>\n      resultById.get(recordId) ??\n      buildErrorResult({ recordId, error: ENRICHMENT_FAILED_MESSAGE }),\n  );\n\n  return aggregateBulkEnrichResult(results);\n};\n", "import { defineLogicFunction, STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS } from 'twenty-sdk/define';\n\nimport { UPDATE_FIELDS_OPTION_VALUES } from 'src/constants/update-fields-option-values';\nimport { APOLLO_LOGIC_FUNCTION_CONSTANTS } from 'src/constants/universal-identifiers';\nimport { enrichCompanyCore } from 'src/logic-functions/handlers/enrich-company';\nimport { type SingleEnrichInput } from 'src/types/single-enrich-input';\n\nconst handler = (input: SingleEnrichInput) => enrichCompanyCore({ input });\n\nexport default defineLogicFunction({\n  universalIdentifier: APOLLO_LOGIC_FUNCTION_CONSTANTS.enrichCompany.universalIdentifier,\n  name: 'enrich-company',\n  description:\n    'Enrich a single Company record with Apollo.io data (industry, size, funding, location, etc.) given its record id.',\n  timeoutSeconds: 60,\n  handler,\n  workflowActionTriggerSettings: {\n    label: 'Enrich Company',\n    icon: 'IconSparkles',\n    inputSchema: [\n      {\n        type: 'object',\n        properties: {\n          recordId: {\n            type: 'record',\n            objectUniversalIdentifier:\n              STANDARD_OBJECT_UNIVERSAL_IDENTIFIERS.company.universalIdentifier,\n            label: 'Record',\n          },\n          updateFields: {\n            type: 'string',\n            label: 'Update fields',\n            enum: [...UPDATE_FIELDS_OPTION_VALUES],\n          },\n        },\n      },\n    ],\n    outputSchema: [\n      {\n        type: 'object',\n        properties: {\n          success: { type: 'boolean', label: 'Success' },\n          recordId: { type: 'string', label: 'Record Id' },\n          status: { type: 'string', label: 'Status' },\n          updatedFields: {\n            type: 'array',\n            items: { type: 'string' },\n            label: 'Updated Fields',\n          },\n          data: { type: 'object', label: 'Data' },\n          message: { type: 'string', label: 'Message' },\n        },\n      },\n    ],\n  },\n  toolTriggerSettings: {\n    inputSchema: {\n      type: 'object',\n      properties: {\n        recordId: {\n          type: 'string',\n          description: 'The id of the Company record to enrich.',\n        },\n        updateFields: {\n          type: 'string',\n          enum: [...UPDATE_FIELDS_OPTION_VALUES],\n          description:\n            'Whether to write the enriched data back to the record. \"Yes and overwrite\" replaces existing values; \"Yes and don\\'t overwrite\" only fills empty fields; \"No\" returns the enriched data without modifying the record.',\n        },\n      },\n      required: ['recordId'],\n      additionalProperties: false,\n    },\n  },\n});\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEO,QAAMA,eAAc,CAAI,SAA0C;AACvE,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,cAAWA;AAIjB,QAAM,YAAY,CAAI,SAAsC;AACjE,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,YAAS;AAIf,QAAMC,YAAW,CAAI,SAAoC;AAC9D,aAAO,OAAO,SAAS,YAAY,CAAC,OAAO,MAAM,IAAI;IACvD;AAFa,YAAA,WAAQA;AAId,QAAMC,YAAW,CAAI,SAAoC;AAC9D,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,WAAQA;AAId,QAAM,WAAW,CAAI,SAAoC;AAC9D,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,WAAQ;AAId,QAAM,WAAW,CAAI,SAAoC;AAC9D,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,WAAQ;;;;;;;;;;ACpBd,QAAMC,UAAS,CAAI,SAAgC;AACxD,aAAO,SAAS;IAClB;AAFa,YAAA,SAAMA;AAIZ,QAAM,aAAa,CAAwB,SAA0B;AAC1E,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,aAAU;AAIhB,QAAMC,YAAW,CACtB,SAC0B;AAC1B,aAAO,CAAC,QAAA,OAAO,IAAI,KAAK,OAAO,SAAS;IAC1C;AAJa,YAAA,WAAQA;AAMd,QAAMC,WAAU,CAAO,SAAwC;AACpE,aAAO,MAAM,QAAQ,IAAI;IAC3B;AAFa,YAAA,UAAOA;AAIb,QAAM,QAAQ,CAAU,SAA0C;AACvE,aAAO,gBAAgB;IACzB;AAFa,YAAA,QAAK;AAIX,QAAM,QAAQ,CAAO,SAAoC;AAC9D,aAAO,gBAAgB;IACzB;AAFa,YAAA,QAAK;AAIX,QAAM,YAAY,CACvB,SACyB;AACzB,aAAO,gBAAgB;IACzB;AAJa,YAAA,YAAS;AAMf,QAAM,YAAY,CACvB,SACsB;AACtB,aAAO,gBAAgB;IACzB;AAJa,YAAA,YAAS;AAMf,QAAM,SAAS,CAAI,SAAgC;AACxD,aAAO,gBAAgB;IACzB;AAFa,YAAA,SAAM;;;;;;;;;;ACxCnB,QAAA,eAAA;AACA,QAAA,eAAA;AAEO,QAAM,iBAAiB,CAAsB,SAA0B;AAC5E,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,iBAAc;AAIpB,QAAMC,mBAAkB,CAAO,SAAwC;AAC5E,aAAO,aAAA,QAAQ,IAAI,KAAK,KAAK,SAAS;IACxC;AAFa,YAAA,kBAAeA;AAIrB,QAAMC,oBAAmB,CAAI,SAAoC;AACtE,aAAO,aAAA,SAAS,IAAI,KAAK,KAAK,SAAS;IACzC;AAFa,YAAA,mBAAgBA;AAItB,QAAM,gBAAgB,CAAI,SAAoC;AACnE,aAAO,OAAO,SAAS;IACzB;AAFa,YAAA,gBAAa;AAInB,QAAM,YAAY,CAAI,SAAoC;AAC/D,aAAO,aAAA,SAAS,IAAI,KAAK,OAAO,UAAU,IAAI;IAChD;AAFa,YAAA,YAAS;AAIf,QAAM,oBAAoB,CAAI,SAAoC;AACvE,aAAO,QAAA,UAAU,IAAI,KAAK,OAAO;IACnC;AAFa,YAAA,oBAAiB;AAIvB,QAAM,uBAAuB,CAAI,SAAoC;AAC1E,aAAO,QAAA,UAAU,IAAI,KAAK,QAAQ;IACpC;AAFa,YAAA,uBAAoB;AAI1B,QAAM,oBAAoB,CAAI,SAAoC;AACvE,aAAO,QAAA,UAAU,IAAI,KAAK,OAAO;IACnC;AAFa,YAAA,oBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/B9B,YAAA,cAAA,aAAA,qBAAA;AACA,iBAAA,uBAAA,OAAA;AACA,YAAA,aAAA,aAAA,oBAAA;AACA,iBAAA,sBAAA,OAAA;AACA,YAAA,aAAA,aAAA,oBAAA;AACA,iBAAA,sBAAA,OAAA;;;;;ACDA,IAAM,sBAAsB,CAAC,YAAY;AAAA,EACvC,SAAS;AAAA,EACT;AAAA,EACA,QAAQ,CAAC;AACX;AAEA,IAAM,eAAe;AAAA,EACnB,IAAI,SAAS,MAAM;AACjB,QAAI,SAAS,aAAc,QAAO;AAClC,QAAI,SAAS,OAAO,YAAa,QAAO,MAAM;AAC9C,QAAI,OAAO,SAAS,SAAU,QAAO;AACrC,WAAO,IAAI,MAAM,MAAM,QAAW,YAAY;AAAA,EAChD;AAAA,EACA,QAAQ;AACN,WAAO,IAAI,MAAM,MAAM,QAAW,YAAY;AAAA,EAChD;AACF;AACA,IAAM,YAAY,IAAI,MAAM,MAAM,QAAW,YAAY;AAWlD,IAAM,sBAAsB;AA2B5B,IAAM,wCAAwC;;;ACzD9C,IAAM,wBAAwB;AAAA,EACnC,WAAW;AAAA,EACX,WAAW;AAAA,EACX,IAAI;AACN;;;ACHO,IAAM,8BACX,OAAO,OAAO,qBAAqB;;;ACqB9B,IAAM,kCAAkC;AAAA,EAC7C,cAAc,EAAE,qBAAqB,wCAAwC,MAAM,wBAAwB;AAAA,EAC3G,cAAc,EAAE,qBAAqB,wCAAwC,MAAM,wBAAwB;AAAA,EAC3G,iBAAiB,EAAE,qBAAqB,wCAAwC,MAAM,2BAA2B;AAAA,EACjH,eAAe,EAAE,qBAAqB,wCAAwC,MAAM,yBAAyB;AAAA,EAC7G,mBAAmB,EAAE,qBAAqB,uCAAuC;AAAA,EACjF,aAAa,EAAE,qBAAqB,uCAAuC;AAAA,EAC3E,cAAc,EAAE,qBAAqB,wCAAwC,MAAM,wBAAwB;AAC7G;;;ACjCA,SAAS,qBAAqB;;;ACA9B,IAAAC,iBAAyB;;;ACAzB,oBAA2C;AAEpC,IAAM,SAAS,CAAC,UAAuC;AAC5D,MAAI,KAAC,wBAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,MAAM,KAAK;AAE3B,aAAO,gCAAiB,OAAO,IAAI,UAAU;AAC/C;;;ACVA,IAAAC,iBAAoC;AAE7B,IAAM,YAAY,CACvB,UAC4B,KAAC,4BAAY,KAAK,KAAK,KAAC,uBAAO,KAAK;;;ACD3D,IAAM,cAAc,CAAC,UAA4B,CAAC,UAAU,OAAO,KAAK,CAAC;;;AHCzE,IAAM,iBAAiB,CAAC,UAA4B;AACzD,MAAI,KAAC,yBAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS;AAEf,SACE,YAAY,OAAO,cAAc,KACjC,YAAY,OAAO,cAAc,KACjC,YAAY,OAAO,WAAW,KAC9B,YAAY,OAAO,eAAe,KAClC,YAAY,OAAO,YAAY,KAC/B,YAAY,OAAO,cAAc;AAErC;;;AInBA,IAAAC,iBAAyB;AAIlB,IAAM,eAAe,CAAC,UAA4B;AACvD,MAAI,KAAC,yBAAS,KAAK,GAAG;AACpB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS;AAEf,SAAO,YAAY,OAAO,cAAc;AAC1C;;;ACTA,IAAM,mBAAmB,EAAE,KAAK,MAAM,KAAK,KAAK;AAEzC,IAAM,WAAW,CACtB,QAC+C;AAC/C,QAAM,UAAU,OAAO,GAAG;AAE1B,MAAI,CAAC,UAAU,OAAO,GAAG;AACvB,WAAO,EAAE,GAAG,iBAAiB;AAAA,EAC/B;AAEA,QAAM,4BAA4B,QAAQ,MAAM,GAAG;AACnD,MAAI,0BAA0B,WAAW,GAAG;AAC1C,WAAO,EAAE,GAAG,iBAAiB;AAAA,EAC/B;AAEA,QAAM,WAAW,OAAO,WAAW,0BAA0B,CAAC,CAAC;AAC/D,QAAM,YAAY,OAAO,WAAW,0BAA0B,CAAC,CAAC;AAEhE,QAAM,oBACJ,OAAO,SAAS,QAAQ,KAAK,YAAY,OAAO,YAAY;AAC9D,QAAM,qBACJ,OAAO,SAAS,SAAS,KAAK,aAAa,QAAQ,aAAa;AAElE,MAAI,CAAC,qBAAqB,CAAC,oBAAoB;AAC7C,WAAO,EAAE,GAAG,iBAAiB;AAAA,EAC/B;AAEA,SAAO,EAAE,KAAK,UAAU,KAAK,UAAU;AACzC;;;AC1BO,IAAM,eAAe,CAAC,UAAkD;AAC7E,QAAM,UAAU,OAAO,MAAM,OAAO;AACpC,QAAM,UAAU,OAAO,MAAM,OAAO;AACpC,QAAM,OAAO,OAAO,MAAM,IAAI;AAC9B,QAAM,WAAW,OAAO,MAAM,QAAQ;AACtC,QAAM,QAAQ,OAAO,MAAM,KAAK;AAChC,QAAM,UAAU,OAAO,MAAM,OAAO;AACpC,QAAM,EAAE,KAAK,IAAI,IAAI,SAAS,MAAM,GAAG;AAEvC,QAAM,cACJ,UAAU,OAAO,KACjB,UAAU,OAAO,KACjB,UAAU,IAAI,KACd,UAAU,QAAQ,KAClB,UAAU,KAAK,KACf,UAAU,OAAO,KACjB,UAAU,GAAG,KACb,UAAU,GAAG;AAEf,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,gBAAgB,WAAW;AAAA,IAC3B,gBAAgB,WAAW;AAAA,IAC3B,aAAa,QAAQ;AAAA,IACrB,iBAAiB,YAAY;AAAA,IAC7B,cAAc,SAAS;AAAA,IACvB,gBAAgB,WAAW;AAAA,IAC3B,YAAY;AAAA,IACZ,YAAY;AAAA,EACd;AACF;;;ACnCA,IAAM,kBAAkB,oBAAI,IAAI,CAAC,SAAS,QAAQ,CAAC;AACnD,IAAM,sBAAsB;AAI5B,IAAM,mBAAmB,CAAC,UAA2B;AACnD,QAAM,cAAc,MAAM,MAAM,mBAAmB;AACnD,MAAI,gBAAgB,MAAM;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,YAAY,MAAM,MAAM,YAAY,CAAC,EAAE,MAAM;AACnD,MAAI,CAAC,UAAU,WAAW,IAAI,GAAG;AAG/B,WAAO,YAAY,CAAC,EAAE,MAAM,GAAG,EAAE,EAAE,SAAS,GAAG;AAAA,EACjD;AAEA,SAAO,gBAAgB,IAAI,YAAY,CAAC,EAAE,YAAY,CAAC;AACzD;AAEO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AACF,MAG8B;AAC5B,QAAM,iBAAiB,OAAO,GAAG;AAEjC,MAAI,CAAC,UAAU,cAAc,KAAK,CAAC,iBAAiB,cAAc,GAAG;AACnE,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,IACA,kBAAkB,OAAO,KAAK,KAAK;AAAA,IACnC,gBAAgB;AAAA,EAClB;AACF;;;ACxCA,IAAM,eAAe;AACrB,IAAM,oBAAoB;AAEnB,IAAM,kBAAkB,CAC7B,mBACuB;AACvB,QAAM,aAAa,OAAO,cAAc;AACxC,MAAI,CAAC,UAAU,UAAU,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,WACd,YAAY,EACZ,QAAQ,cAAc,EAAE,EACxB,MAAM,GAAG,EAAE,CAAC,EACZ,QAAQ,mBAAmB,EAAE;AAEhC,SAAO,aAAa,KAAK,SAAY;AACvC;;;AClBA,IAAMC,gBAAe;AACrB,IAAMC,qBAAoB;AAC1B,IAAM,yBAAyB;AAExB,IAAM,uBAAuB,CAClC,mBACuB;AACvB,QAAM,kBAAkB,OAAO,cAAc;AAC7C,MAAI,CAAC,UAAU,eAAe,GAAG;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,uBAAuB,gBAC1B,YAAY,EACZ,QAAQD,eAAc,EAAE,EACxB,QAAQC,oBAAmB,EAAE,EAC7B,QAAQ,wBAAwB,EAAE;AAErC,SAAO,yBAAyB,KAAK,SAAY;AACnD;;;ACtBA,IAAAC,iBAAyB;AAElB,IAAM,WAAW,CAAC,cACvB,yBAAS,KAAK,KAAK,OAAO,SAAS,KAAK,IAAI,QAAQ;;;ACHtD,IAAAC,iBAAyC;AAKlC,IAAM,gBAAgB,CAAC,UAAyC;AACrE,MAAI,KAAC,wBAAQ,KAAK,GAAG;AACnB,WAAO;AAAA,EACT;AAEA,QAAM,gBAA0B,CAAC;AACjC,QAAM,sBAAsB,oBAAI,IAAY;AAE5C,aAAW,SAAS,OAAO;AACzB,UAAM,cAAc,OAAO,KAAK;AAChC,QAAI,CAAC,UAAU,WAAW,GAAG;AAC3B;AAAA,IACF;AAEA,UAAM,iBAAiB,YAAY,YAAY;AAC/C,QAAI,CAAC,oBAAoB,IAAI,cAAc,GAAG;AAC5C,0BAAoB,IAAI,cAAc;AACtC,oBAAc,KAAK,WAAW;AAAA,IAChC;AAAA,EACF;AAEA,aAAO,gCAAgB,aAAa,IAAI,gBAAgB;AAC1D;;;AC3BA,IAAAC,iBAA4B;AAErB,IAAM,iBAAiB,CAC5B,WAC2B;AAC3B,QAAM,eAAuC,CAAC;AAE9C,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,KAAC,4BAAY,KAAK,GAAG;AACvB,mBAAa,GAAG,IAAI;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AACT;;;ACHO,IAAM,aAAa,CACxB,gBACiB;AACjB,QAAM,UAAU,aAAa;AAAA,IAC3B,SAAS,YAAY;AAAA,IACrB,MAAM,YAAY;AAAA,IAClB,UAAU,YAAY;AAAA,IACtB,OAAO,YAAY;AAAA,IACnB,SAAS,YAAY;AAAA,EACvB,CAAC;AAED,QAAM,WAAW,eAAe;AAAA,IAC9B,MAAM,OAAO,YAAY,IAAI;AAAA,IAC7B,YAAY,WAAW;AAAA,MACrB,KAAK,gBAAgB,YAAY,cAAc;AAAA,IACjD,CAAC;AAAA,IACD,cAAc,WAAW;AAAA,MACvB,KAAK,qBAAqB,YAAY,YAAY;AAAA,IACpD,CAAC;AAAA,IACD;AAAA,EACF,CAAC;AAED,QAAM,SAAS,eAAe;AAAA,IAC5B,UAAU,OAAO,YAAY,EAAE;AAAA,IAC/B,gBAAgB,OAAO,YAAY,QAAQ;AAAA,IAC3C,iBAAiB,SAAS,YAAY,uBAAuB;AAAA,IAC7D,qBAAqB,SAAS,YAAY,cAAc;AAAA,IACxD,mBAAmB,SAAS,YAAY,YAAY;AAAA,IACpD,gBAAgB,cAAc,YAAY,QAAQ;AAAA,IAClD,oBAAoB,cAAc,YAAY,gBAAgB;AAAA,IAC9D,oBAAoB,SAAS,YAAY,aAAa;AAAA,IACtD,0BAA0B,OAAO,YAAY,oBAAoB;AAAA,IACjE,mBAAmB,OAAO,YAAY,YAAY;AAAA,IAClD,aAAa,OAAO,YAAY,eAAe,MAAM;AAAA,IACrD,gBAAgB;AAAA,IAChB,0BAA0B;AAAA,MACxB,YAAY;AAAA,IACd;AAAA,IACA,2BAA2B;AAAA,MACzB,YAAY;AAAA,IACd;AAAA,IACA,kBAAkB,cAAc,YAAY,WAAW;AAAA,EACzD,CAAC;AAED,SAAO,EAAE,UAAU,OAAO;AAC5B;;;ACtDO,IAAM,uBAAuB,CAAC;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAK+B;AAC7B,QAAM,iBAA0C,CAAC;AAEjD,aAAW,CAAC,WAAW,UAAU,KAAK,OAAO,QAAQ,QAAQ,GAAG;AAC9D,UAAM,eAAe,YAAY,SAAS;AAC1C,QACE,UAAU,YAAY,MACrB,2BAA2B,QAAQ,aAAa,QAAQ,SAAS,CAAC,IACnE;AACA,qBAAe,SAAS,IAAI;AAAA,IAC9B;AAAA,EACF;AAEA,SAAO;AACT;;;ACjBA,IAAM,uBAAuB;AAAA,EAC3B,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,SAAS;AACX;AAEO,IAAM,0BAA0B,OAAO;AAAA,EAC5C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MASM;AACJ,QAAM,SAAS,WAAW,QAAQ,IAAI;AACtC,QAAM,aAAa,eAAe,EAAE,GAAG,OAAO,UAAU,GAAG,OAAO,OAAO,CAAC;AAE1E,MAAI,CAAC,eAAe;AAClB,WAAO,EAAE,YAAY,aAAa,CAAC,EAAE;AAAA,EACvC;AAEA,QAAM,mBAAmB,qBAAqB;AAAA,IAC5C,UAAU,OAAO;AAAA,IACjB,SAAS;AAAA,IACT,aAAa;AAAA,IACb;AAAA,EACF,CAAC;AAED,QAAM,cAAc,eAAe;AAAA,IACjC,GAAG;AAAA,IACH,GAAG,OAAO;AAAA,IACV,kBAAkB,QAAQ;AAAA,IAC1B,sBAAsB;AAAA,IACtB,wBAAwB;AAAA,EAC1B,CAAC;AAED,SAAO,EAAE,YAAY,YAAY;AACnC;;;ACvDA,IAAAC,kBAAwB;;;ACIjB,IAAM,gCAAgC,CAC3C,UAEA,eAAe;AAAA,EACb,QAAQ,MAAM;AAAA,EACd,MAAM,MAAM;AAAA,EACZ,cAAc,MAAM;AACtB,CAAC;;;ACXH,IAAAC,iBAAyB;AAuBlB,IAAM,8BAA8B,CAAC,iBAAmC;AAC7E,MAAI,KAAC,yBAAS,YAAY,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,SAAS;AAEf,SACE,UAAU,OAAO,OAAO,IAAI,CAAC,KAAK,UAAU,OAAO,OAAO,cAAc,CAAC;AAE7E;;;ACjCA,IAAAC,kBAAyB;;;ACAzB,IAAAC,kBAAyB;;;ACAlB,IAAM,kBAAkB;;;ACA/B,IAAAC,iBAAqD;AAIrD,IAAM,0BAA0B,CAC9B,iBACuB;AACvB,UAAI,iCAAiB,YAAY,GAAG;AAClC,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,YAAY,GAAG;AAC/B,UAAM,iBAAiB,aAAa,OAAO,uBAAQ,EAAE,KAAK,IAAI;AAE9D,eAAO,iCAAiB,cAAc,IAAI,iBAAiB;AAAA,EAC7D;AAEA,SAAO;AACT;AAEO,IAAM,4BAA4B,CAAC;AAAA,EACxC;AAAA,EACA;AACF,MAGc;AACZ,QAAM,aAAa,KAAK;AAExB,UAAI,yBAAS,UAAU,GAAG;AACxB,UAAM,yBAAyB;AAAA,MAC5B,WAAuC;AAAA,IAC1C;AACA,QAAI,UAAU,sBAAsB,GAAG;AACrC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,QAAM,2BACJ,wBAAwB,UAAU,KAClC,wBAAwB,KAAK,OAAO,KACpC,wBAAwB,KAAK,MAAM;AACrC,MAAI,UAAU,wBAAwB,GAAG;AACvC,WAAO;AAAA,EACT;AAEA,SAAO,kCAAkC,UAAU;AACrD;;;AC/CA,IAAAC,kBAAiC;;;ACE1B,IAAe,cAAf,cAAmC,MAAM;AAAA,EAG9C,YAAY,EAAE,SAAS,KAAK,GAA+C;AACzE,UAAM,OAAO;AACb,WAAO,eAAe,MAAM,WAAW,SAAS;AAChD,SAAK,OAAO,WAAW;AACvB,SAAK,OAAO;AAAA,EACd;AACF;;;ACXO,IAAM,kBAAkB;AAAA,EAC7B,eAAe;AAAA,EACf,eAAe;AAAA,EACf,kBAAkB;AAAA,EAClB,kBAAkB;AACpB;;;ACFO,IAAM,oBAAN,cAAgC,YAAY;AAAA,EACjD,YAAY,SAAiB;AAC3B,UAAM,EAAE,SAAS,MAAM,gBAAgB,cAAc,CAAC;AAAA,EACxD;AACF;;;AHHO,IAAM,kBAAkB,MAAc;AAC3C,QAAM,SAAS,QAAQ,IAAI,gBAAgB,KAAK;AAEhD,MAAI,KAAC,kCAAiB,MAAM,GAAG;AAC7B,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;;;AHRA,IAAM,cAAc;AACpB,IAAM,kBAAkB;AACxB,IAAM,qBAAqB;AAE3B,IAAM,QAAQ,CAAC,OACb,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAElD,IAAM,oBAAoB,CAAC,WACzB,WAAW,OAAO,UAAU;AAI9B,IAAM,mBAAmB,CAAC,UAAoB,YAA4B;AACxE,QAAM,mBAAmB,SAAS,QAAQ,IAAI,aAAa;AAC3D,MAAI,qBAAqB,MAAM;AAC7B,UAAM,oBAAoB,OAAO,SAAS,kBAAkB,EAAE;AAC9D,QAAI,OAAO,SAAS,iBAAiB,KAAK,oBAAoB,GAAG;AAC/D,aAAO,KAAK,IAAI,oBAAoB,KAAM,kBAAkB;AAAA,IAC9D;AAAA,EACF;AAEA,SAAO,kBAAkB,KAAK;AAChC;AAQO,IAAM,cAAc,OAAO;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AACF,MAIkC;AAChC,QAAM,SAAS,gBAAgB;AAE/B,WAAS,UAAU,KAAK,WAAW;AACjC,QAAI;AACJ,QAAI;AACF,iBAAW,MAAM,MAAM,GAAG,eAAe,GAAG,IAAI,IAAI;AAAA,QAClD;AAAA,QACA,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,aAAa;AAAA,QACf;AAAA,QACA,MAAM,SAAS,SAAY,SAAY,KAAK,UAAU,IAAI;AAAA,MAC5D,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,UAAU,aAAa;AACzB,cAAM,MAAM,kBAAkB,KAAK,OAAO;AAC1C;AAAA,MACF;AAEA,YAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAErE,aAAO,EAAE,IAAI,OAAO,YAAY,GAAG,SAAS,6BAA6B,OAAO,GAAG;AAAA,IACrF;AAEA,QAAI,kBAAkB,SAAS,MAAM,KAAK,UAAU,aAAa;AAC/D,YAAM,MAAM,iBAAiB,UAAU,OAAO,CAAC;AAC/C;AAAA,IACF;AAEA,QAAI;AACJ,QAAI;AACF,aAAO,MAAM,SAAS,KAAK;AAAA,IAC7B,QAAQ;AACN,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,YAAY,SAAS;AAAA,QACrB,SAAS,gDAAgD,SAAS,MAAM;AAAA,MAC1E;AAAA,IACF;AAEA,UAAM,qBAAiB,0BAAS,IAAI,IAAK,OAAmC,CAAC;AAE7E,QAAI,CAAC,SAAS,IAAI;AAChB,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,YAAY,SAAS;AAAA,QACrB,SAAS,0BAA0B;AAAA,UACjC,MAAM;AAAA,UACN,YAAY,SAAS;AAAA,QACvB,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO,EAAE,IAAI,MAAM,YAAY,SAAS,QAAQ,MAAM,eAAe;AAAA,EACvE;AACF;;;AD/FO,IAAM,uBAAuB,OAAc;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAM4C;AAC1C,MAAI,UAAU,GAAG;AACf,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAS,MAAM,YAAY,EAAE,QAAQ,QAAQ,MAAM,KAAK,CAAC;AAE/D,MAAI,CAAC,OAAO,IAAI;AACd,WAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,OAAO;AAAA,MAC1C,SAAS;AAAA,MACT,YAAY,OAAO;AAAA,MACnB,SAAS,OAAO;AAAA,IAClB,EAAE;AAAA,EACJ;AAEA,QAAM,WAAW,YAAY,OAAO,IAAI;AAKxC,SAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,GAAG,CAAC,SAAS,UAAU;AACvD,UAAM,SAAS,SAAS,KAAK;AAE7B,QAAI,KAAC,0BAAS,MAAM,KAAK,CAAC,UAAU,MAAM,GAAG;AAC3C,aAAO,EAAE,SAAS,aAAsB,YAAY,OAAO,WAAW;AAAA,IACxE;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,MACT,YAAY,OAAO;AAAA,MACnB,MAAM;AAAA,IACR;AAAA,EACF,CAAC;AACH;;;AHxCO,IAAM,kBAAkB,CAC7B,WAEA,qBAA6C;AAAA,EAC3C,MAAM;AAAA,EACN,MAAM,EAAE,SAAS,OAAO,IAAI,6BAA6B,EAAE;AAAA,EAC3D,OAAO,OAAO;AAAA,EACd,aAAa,CAAC,aACZ,yBAAQ,KAAK,aAAa,IACtB,KAAK,oBACL,yBAAQ,KAAK,OAAO,IAClB,KAAK,UACL,CAAC;AAAA,EACT,WAAW;AACb,CAAC;;;AWhBI,IAAM,4BAA4B,CAAC;AAAA,EACxC;AACF,MAGkD;AAChD,QAAM,SAAS,eAAe;AAAA,IAC5B,QAAQ,gBAAgB,KAAK,YAAY,cAAc;AAAA,IACvD,aAAa,qBAAqB,KAAK,cAAc,cAAc;AAAA,IACnE,MAAM,OAAO,KAAK,IAAI;AAAA,EACxB,CAAC;AAED,MAAI,OAAO,KAAK,MAAM,EAAE,WAAW,GAAG;AACpC,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;ACzBA,IAAAC,kBAA2C;AAKpC,IAAM,gBAAgB,OAAO;AAAA,EAClC;AAAA,EACA;AACF,MAG8B;AAC5B,MAAI,UAAU,WAAW,GAAG;AAC1B,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,SAAU,MAAM,OAAO,MAAM;AAAA,IACjC,WAAW;AAAA,MACT,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,GAAG,OAAO,UAAU,OAAO;AAAA,MACrE,OAAO;AAAA,QACL,MAAM;AAAA,UACJ,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,YAAY,EAAE,gBAAgB,KAAK;AAAA,UACnC,cAAc,EAAE,gBAAgB,KAAK;AAAA,UACrC,SAAS;AAAA,YACP,gBAAgB;AAAA,YAChB,gBAAgB;AAAA,YAChB,aAAa;AAAA,YACb,iBAAiB;AAAA,YACjB,cAAc;AAAA,YACd,gBAAgB;AAAA,UAClB;AAAA,UACA,UAAU;AAAA,UACV,sBAAsB;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM,QAAQ,OAAO,WAAW;AAChC,MAAI,CAAC,MAAM,QAAQ,KAAK,GAAG;AACzB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,MACJ,IAAI,CAAC,SAAS,MAAM,IAAI,EACxB;AAAA,IACC,CAAC,oBACC,0BAAS,WAAW,SACpB,kCAAkB,YAAiC,EAAE;AAAA,EACzD;AACJ;;;AClDO,IAAM,wBAAwB,OAAO;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AACF,MAIqB;AACnB,QAAM,OAAO,SAAS;AAAA,IACpB,iBAAiB;AAAA,MACf,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,UAAU,EAAE,GAAG,KAAK;AAAA,MAClD,IAAI;AAAA,IACN;AAAA,EACF,CAAC;AACH;;;ACfO,IAAM,sBAAsB,OAAO;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AACF,MAIqB;AACnB,QAAM,OAAO,SAAS;AAAA,IACpB,eAAe,EAAE,QAAQ,EAAE,IAAI,UAAU,KAAK,GAAG,IAAI,KAAK;AAAA,EAC5D,CAAC;AACH;;;ACHO,IAAM,2BAIT;AAAA,EACF,oBAAoB;AAAA,EACpB,qBACE;AAAA,EACF,aAAa;AAAA,EACb,WAAW,CAAC,SAAS,KAAK;AAAA,EAC1B,mBAAmB,CAAC,SAAS,KAAK,wBAAwB;AAAA,EAC1D,eAAe;AAAA,EACf,aAAa;AAAA,EACb,kBAAkB,CAAC;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,MACE,wBAAwB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAAA,EACH,WAAW;AAAA,EACX,kBAAkB;AACpB;;;ACxCA,IAAAC,kBAAyB;AAMlB,IAAM,yBAAyB,OAAc;AAAA,EAClD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AACrB,MAS0C;AACxC,QAAM,SAAS,MAAM,YAAY,EAAE,QAAQ,MAAM,KAAK,CAAC;AAEvD,MAAI,CAAC,OAAO,IAAI;AACd,WAAO,EAAE,SAAS,SAAS,YAAY,OAAO,YAAY,SAAS,OAAO,QAAQ;AAAA,EACpF;AAEA,QAAM,SAAS,cAAc,OAAO,IAAI;AAExC,MAAI,KAAC,0BAAS,MAAM,KAAK,CAAC,UAAU,MAAM,GAAG;AAC3C,WAAO,EAAE,SAAS,aAAa,YAAY,OAAO,WAAW;AAAA,EAC/D;AAEA,SAAO;AAAA,IACL,SAAS;AAAA,IACT,YAAY,OAAO;AAAA,IACnB,MAAM;AAAA,IACN,WAAW,mBAAmB,OAAO,OAAO,KAAK,UAAU,IAAI;AAAA,EACjE;AACF;;;AClCO,IAAM,gBAAgB,CAC3B,WAEA,QAAQ;AAAA,EACN,OAAO,IAAI,CAAC,UAAU;AACpB,UAAM,QAAQ,IAAI;AAAA,MAChB,eAAuB;AAAA,QACrB,QAAQ,MAAM;AAAA,QACd,MAAM,MAAM;AAAA,QACZ,cAAc,MAAM;AAAA,MACtB,CAAC;AAAA,IACH,EAAE,SAAS;AAEX,WAAO,uBAA+C;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM,yBAAyB,KAAK;AAAA,MACpC,eAAe,CAAC,SAAS,KAAK;AAAA,MAC9B,WAAW;AAAA,IACb,CAAC;AAAA,EACH,CAAC;AACH;;;ACpBK,IAAM,iCAIT;AAAA,EACF,GAAG;AAAA,EACH,aAAa;AACf;;;ACdA,IAAAC,kBAAiC;;;ACE1B,IAAM,4BAA4B;AAElC,IAAM,mBAAmB,CAAC;AAAA,EAC/B;AAAA,EACA;AACF,OAGqB;AAAA,EACnB,SAAS;AAAA,EACT;AAAA,EACA,QAAQ;AAAA,EACR,eAAe,CAAC;AAAA,EAChB,SAAS;AAAA,EACT;AACF;;;ACdO,IAAM,4BAA4B,CACvC,SACA,YACqB;AACrB,QAAM,gBAAgB,CAAC,WACrB,QAAQ,OAAO,CAAC,WAAW,OAAO,WAAW,MAAM,EAAE;AAEvD,QAAM,UAAU,cAAc,OAAO;AAErC,SAAO;AAAA,IACL,SAAS,YAAY;AAAA,IACrB,OAAO,QAAQ;AAAA,IACf,SAAS,cAAc,SAAS;AAAA,IAChC,UAAU,cAAc,WAAW;AAAA,IACnC,SAAS,cAAc,SAAS;AAAA,IAChC;AAAA,IACA;AAAA,IACA,GAAI,YAAY,SAAY,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC7C;AACF;;;ACpBO,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AACF,OAGqB;AAAA,EACnB,SAAS;AAAA,EACT;AAAA,EACA,QAAQ;AAAA,EACR,eAAe,CAAC;AAAA,EAChB;AACF;;;ACdO,IAAM,QAAQ,CAAQ;AAAA,EAC3B;AAAA,EACA;AACF,MAGiB;AACf,MAAI,QAAQ,GAAG;AACb,WAAO,MAAM,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;AAAA,EACvC;AAEA,QAAM,SAAoB,CAAC;AAC3B,WAAS,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,MAAM;AACvD,WAAO,KAAK,MAAM,MAAM,OAAO,QAAQ,IAAI,CAAC;AAAA,EAC9C;AAEA,SAAO;AACT;;;ACbO,IAAM,0BAA0B;;;ACAhC,IAAM,mBAAmB,MAAc;AAC5C,QAAM,MAAM,QAAQ,IAAI,wBAAwB,KAAK;AAErD,MAAI,QAAQ,UAAa,QAAQ,IAAI;AACnC,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,OAAO,SAAS,KAAK,EAAE;AAEtC,MAAI,CAAC,OAAO,SAAS,MAAM,KAAK,UAAU,GAAG;AAC3C,WAAO;AAAA,EACT;AAEA,SAAO;AACT;;;AChBO,IAAM,qBAAqB,CAAC;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AACF,OAIqB;AAAA,EACnB,SAAS;AAAA,EACT;AAAA,EACA,QAAQ;AAAA,EACR;AAAA,EACA;AAAA,EACA,SACE,cAAc,SAAS,IACnB,4BAA4B,cAAc,MAAM,cAChD;AACR;;;AClBO,IAAM,sBAAsB,CAAC,cAAoC;AAAA,EACtE,SAAS;AAAA,EACT;AAAA,EACA,QAAQ;AAAA,EACR,eAAe,CAAC;AAAA,EAChB,SAAS;AACX;;;ACRO,IAAM,8BAAmD,oBAAI,IAAI;AAAA,EACtE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;;;ACLM,IAAM,SAAS,OAAc,oBAAI,KAAK,GAAE,YAAY;;;ACGpD,IAAM,0BAA0B,CACrC,iBACgE;AAChE,MAAI,iBAAiB,sBAAsB,IAAI;AAC7C,WAAO,EAAE,eAAe,OAAO,wBAAwB,MAAM;AAAA,EAC/D;AAEA,MAAI,iBAAiB,sBAAsB,WAAW;AACpD,WAAO,EAAE,eAAe,MAAM,wBAAwB,KAAK;AAAA,EAC7D;AAEA,SAAO,EAAE,eAAe,MAAM,wBAAwB,MAAM;AAC9D;;;ACfO,IAAM,iBAAiB,CAAC,UAC7B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;;;ACgBvD,IAAM,8BAA8B,OAA8B;AAAA,EAChE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKqB;AACnB,MAAI,UAAU,WAAW,GAAG;AAC1B;AAAA,EACF;AAEA,QAAM,QACH,iBAAiB;AAAA,IAChB;AAAA,IACA;AAAA,IACA,MAAM,EAAE,wBAAwB,SAAS,sBAAsB,WAAW;AAAA,EAC5E,CAAC,EACA,MAAM,MAAM,MAAS;AAC1B;AAQA,IAAM,uBAAuB,OAA8B;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAMyB;AACvB,MAAI,eAAe,WAAW,GAAG;AAC/B,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,CAAC,eAAe;AAClB,eAAW,iBAAiB,gBAAgB;AAC1C,iBAAW;AAAA,QACT,cAAc;AAAA,QACd,mBAAmB;AAAA,UACjB,UAAU,cAAc;AAAA,UACxB,eAAe,CAAC;AAAA,UAChB,MAAM,cAAc;AAAA,QACtB,CAAC;AAAA,MACH;AAAA,IACF;AAEA,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,sBAAsB,MAAM,QAAQ;AAAA,IACxC,eAAe;AAAA,MAAI,CAAC,kBAClB,QAAQ,UAAU;AAAA,QAChB;AAAA,QACA,UAAU,cAAc;AAAA,QACxB,MAAM,cAAc;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,kBAA4B,CAAC;AACnC,aAAW,CAAC,OAAO,WAAW,KAAK,oBAAoB,QAAQ,GAAG;AAChE,UAAM,gBAAgB,eAAe,KAAK;AAC1C,QAAI,YAAY,WAAW,YAAY;AACrC,iBAAW;AAAA,QACT,cAAc;AAAA,QACd,iBAAiB;AAAA,UACf,UAAU,cAAc;AAAA,UACxB,OAAO,eAAe,YAAY,MAAM;AAAA,QAC1C,CAAC;AAAA,MACH;AACA,sBAAgB,KAAK,cAAc,QAAQ;AAC3C;AAAA,IACF;AAEA,eAAW;AAAA,MACT,cAAc;AAAA,MACd,mBAAmB;AAAA,QACjB,UAAU,cAAc;AAAA,QACxB,eAAe,OAAO,KAAK,cAAc,WAAW,EAAE;AAAA,UACpD,CAAC,cAAc,CAAC,4BAA4B,IAAI,SAAS;AAAA,QAC3D;AAAA,QACA,MAAM,cAAc;AAAA,MACtB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,SAAO;AACT;AAEA,IAAM,wBAAwB,OAA8B;AAAA,EAC1D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAOyB;AACvB,MAAI,kBAAkB,WAAW,GAAG;AAClC,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,CAAC,eAAe;AAClB,eAAW,YAAY,mBAAmB;AACxC,iBAAW,IAAI,UAAU,oBAAoB,QAAQ,CAAC;AAAA,IACxD;AAEA,WAAO,CAAC;AAAA,EACV;AAEA,MAAI;AACF,UAAM,QAAQ,iBAAiB;AAAA,MAC7B;AAAA,MACA,WAAW;AAAA,MACX,MAAM,EAAE,wBAAwB,aAAa,sBAAsB,WAAW;AAAA,IAChF,CAAC;AACD,eAAW,YAAY,mBAAmB;AACxC,iBAAW,IAAI,UAAU,oBAAoB,QAAQ,CAAC;AAAA,IACxD;AAEA,WAAO,CAAC;AAAA,EACV,SAAS,0BAA0B;AACjC,UAAM,kCAAkC;AAAA,MACtC;AAAA,IACF;AACA,eAAW,YAAY,mBAAmB;AACxC,iBAAW;AAAA,QACT;AAAA,QACA,iBAAiB,EAAE,UAAU,OAAO,gCAAgC,CAAC;AAAA,MACvE;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAEO,IAAM,cAAc,OAA8B;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAOqB;AACnB,QAAM,EAAE,eAAe,uBAAuB,IAAI;AAAA,IAChD,MAAM;AAAA,EACR;AAKA,QAAM,sBAAsB,iBAAiB,CAAC;AAE9C,MAAI;AACJ,MAAI;AACF,kBAAc,MAAM,QAAQ,YAAY,EAAE,QAAQ,UAAU,CAAC;AAAA,EAC/D,SAAS,WAAW;AAClB,UAAM,mBAAmB,eAAe,SAAS;AACjD,eAAW,YAAY,WAAW;AAChC,iBAAW;AAAA,QACT;AAAA,QACA,iBAAiB,EAAE,UAAU,OAAO,iBAAiB,CAAC;AAAA,MACxD;AAAA,IACF;AAEA;AAAA,EACF;AAEA,QAAM,iBAAiB,IAAI;AAAA,IACzB,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,UAAU,UAAU,GAAG,UAAU,CAAC;AAAA,EAC7E;AAEA,QAAM,kBACJ,CAAC;AACH,aAAW,YAAY,WAAW;AAChC,UAAM,aAAa,eAAe,IAAI,QAAQ;AAC9C,QAAI,CAAC,UAAU,UAAU,GAAG;AAC1B,iBAAW;AAAA,QACT;AAAA,QACA,iBAAiB;AAAA,UACf;AAAA,UACA,OAAO,GAAG,QAAQ,kBAAkB,IAAI,QAAQ;AAAA,QAClD,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAEA,QAAI,uBAAuB,UAAU,QAAQ,kBAAkB,UAAU,CAAC,GAAG;AAC3E,iBAAW;AAAA,QACT;AAAA,QACA,mBAAmB;AAAA,UACjB;AAAA,UACA,SACE;AAAA,QACJ,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAEA,UAAM,cAAc,QAAQ,cAAc,EAAE,MAAM,YAAY,MAAM,CAAC;AACrE,QAAI,CAAC,UAAU,WAAW,GAAG;AAC3B,iBAAW;AAAA,QACT;AAAA,QACA,mBAAmB;AAAA,UACjB;AAAA,UACA,SAAS,QAAQ;AAAA,QACnB,CAAC;AAAA,MACH;AACA;AAAA,IACF;AAEA,oBAAgB,KAAK,EAAE,UAAU,MAAM,YAAY,QAAQ,YAAY,CAAC;AAAA,EAC1E;AAEA,MAAI,gBAAgB,WAAW,GAAG;AAChC;AAAA,EACF;AAEA,QAAM,aAAa,OAAO;AAC1B,QAAM,yBAAmC,CAAC;AAE1C,MAAI;AACJ,MAAI;AACF,+BAA2B,MAAM,QAAQ;AAAA,MACvC,gBAAgB,IAAI,CAAC,mBAAmB,eAAe,MAAM;AAAA,IAC/D;AAAA,EACF,SAAS,kBAAkB;AACzB,UAAM,0BAA0B,eAAe,gBAAgB;AAC/D,eAAW,kBAAkB,iBAAiB;AAC5C,iBAAW;AAAA,QACT,eAAe;AAAA,QACf,iBAAiB;AAAA,UACf,UAAU,eAAe;AAAA,UACzB,OAAO;AAAA,QACT,CAAC;AAAA,MACH;AAAA,IACF;AACA,QAAI,eAAe;AACjB,YAAM,4BAA4B;AAAA,QAChC;AAAA,QACA;AAAA,QACA,WAAW,gBAAgB;AAAA,UACzB,CAAC,mBAAmB,eAAe;AAAA,QACrC;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAEA;AAAA,EACF;AAEA,QAAM,oBAA8B,CAAC;AACrC,QAAM,iBAAkC,CAAC;AAEzC,WAAS,QAAQ,GAAG,QAAQ,gBAAgB,QAAQ,SAAS;AAC3D,UAAM,EAAE,UAAU,MAAM,WAAW,IAAI,gBAAgB,KAAK;AAC5D,UAAM,oBAAoB,yBAAyB,KAAK;AAExD,QAAI,CAAC,UAAU,iBAAiB,KAAK,kBAAkB,YAAY,SAAS;AAC1E,YAAM,yBAAyB,UAAU,iBAAiB,IACtD,kBAAkB,UAClB;AACJ,iBAAW;AAAA,QACT;AAAA,QACA,iBAAiB,EAAE,UAAU,OAAO,uBAAuB,CAAC;AAAA,MAC9D;AACA,6BAAuB,KAAK,QAAQ;AACpC;AAAA,IACF;AAEA,QAAI,kBAAkB,YAAY,aAAa;AAC7C,wBAAkB,KAAK,QAAQ;AAC/B;AAAA,IACF;AAEA,QAAI;AACF,YAAM,EAAE,YAAY,YAAY,IAAI,MAAM,QAAQ,iBAAiB;AAAA,QACjE;AAAA,QACA,MAAM;AAAA,QACN,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AACD,qBAAe,KAAK,EAAE,UAAU,YAAY,YAAY,CAAC;AAAA,IAC3D,SAAS,uBAAuB;AAC9B,iBAAW;AAAA,QACT;AAAA,QACA,iBAAiB;AAAA,UACf;AAAA,UACA,OAAO,eAAe,qBAAqB;AAAA,QAC7C,CAAC;AAAA,MACH;AACA,6BAAuB,KAAK,QAAQ;AAAA,IACtC;AAAA,EACF;AAEA,QAAM,8BAA8B,MAAM,qBAAqB;AAAA,IAC7D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,yBAAuB,KAAK,GAAG,2BAA2B;AAE1D,QAAM,+BAA+B,MAAM,sBAAsB;AAAA,IAC/D;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACD,yBAAuB,KAAK,GAAG,4BAA4B;AAE3D,MAAI,eAAe;AACjB,UAAM,4BAA4B;AAAA,MAChC;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AChXA,IAAAC,kBAAiC;AAI1B,IAAM,mBAAmB,CAC9B,YACa;AACb,QAAM,iBACJ,YAAY,QAAQ,YAAY,SAC5B,CAAC,IACD,MAAM,QAAQ,OAAO,IACnB,UACA,CAAC,OAAO;AAEhB,SAAO,eACJ,IAAI,CAAC,WAAY,OAAO,WAAW,WAAW,SAAS,QAAQ,EAAG,EAClE,OAAO,CAAC,WAAqB,kCAAiB,EAAE,CAAC;AACtD;;;ACEA,IAAM,oBAAoB;AAEnB,IAAM,qBAAqB,OAA8B;AAAA,EAC9D;AAAA,EACA;AAAA,EACA;AACF,MAIiC;AAC/B,QAAM,YAAY,MAAM,KAAK,IAAI,IAAI,iBAAiB,MAAM,OAAO,CAAC,CAAC;AAKrE,QAAM,gBAAgB,iBAAiB;AACvC,MAAI,UAAU,SAAS,eAAe;AACpC,UAAM,UAAU,4BAA4B,aAAa,oCAAoC,UAAU,MAAM;AAE7G,WAAO;AAAA,MACL,GAAG;AAAA,QACD,UAAU,IAAI,CAAC,aAAa,mBAAmB,EAAE,UAAU,QAAQ,CAAC,CAAC;AAAA,QACrE;AAAA,MACF;AAAA,MACA,SAAS;AAAA,IACX;AAAA,EACF;AAEA,QAAM,aAAa,oBAAI,IAA0B;AACjD,QAAM,2BAAqD,oBAAI,IAAI;AAEnE,aAAW,kBAAkB,MAAM,EAAE,OAAO,WAAW,MAAM,kBAAkB,CAAC,GAAG;AACjF,UAAM,YAAY;AAAA,MAChB;AAAA,MACA,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM,UAAU,UAAU;AAAA,IACxB,CAAC,aACC,WAAW,IAAI,QAAQ,KACvB,iBAAiB,EAAE,UAAU,OAAO,0BAA0B,CAAC;AAAA,EACnE;AAEA,SAAO,0BAA0B,OAAO;AAC1C;;;AfzDA,IAAM,uBAAuB;AAEtB,IAAM,sBAAsB,OAA8B;AAAA,EAC/D;AAAA,EACA;AAAA,EACA;AACF,MAI6B;AAC3B,QAAM,WAAW,MAAM,UAAU,KAAK;AAEtC,MAAI,KAAC,kCAAiB,QAAQ,GAAG;AAC/B,WAAO,iBAAiB,EAAE,UAAU,IAAI,OAAO,qBAAqB,CAAC;AAAA,EACvE;AAEA,QAAM,aAAa,MAAM,mBAAmB;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA,MACL,SAAS;AAAA,MACT,cAAc,MAAM;AAAA,MACpB,eAAe,MAAM;AAAA,IACvB;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,WAAW,QAAQ,CAAC,KACpB,iBAAiB,EAAE,UAAU,OAAO,0BAA0B,CAAC;AAEnE;;;ApCpCO,IAAM,oBAAoB,CAAC;AAAA,EAChC;AAAA,EACA,SAAS,IAAI,cAAc;AAC7B,MAIE,oBAAoB;AAAA,EAClB;AAAA,EACA;AAAA,EACA,SAAS;AACX,CAAC;;;AoDXH,IAAM,UAAU,CAAC,UAA6B,kBAAkB,EAAE,MAAM,CAAC;AAEzE,IAAO,kCAAQ,oBAAoB;AAAA,EACjC,qBAAqB,gCAAgC,cAAc;AAAA,EACnE,MAAM;AAAA,EACN,aACE;AAAA,EACF,gBAAgB;AAAA,EAChB;AAAA,EACA,+BAA+B;AAAA,IAC7B,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,MACX;AAAA,QACE,MAAM;AAAA,QACN,YAAY;AAAA,UACV,UAAU;AAAA,YACR,MAAM;AAAA,YACN,2BACE,sCAAsC,QAAQ;AAAA,YAChD,OAAO;AAAA,UACT;AAAA,UACA,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM,CAAC,GAAG,2BAA2B;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,cAAc;AAAA,MACZ;AAAA,QACE,MAAM;AAAA,QACN,YAAY;AAAA,UACV,SAAS,EAAE,MAAM,WAAW,OAAO,UAAU;AAAA,UAC7C,UAAU,EAAE,MAAM,UAAU,OAAO,YAAY;AAAA,UAC/C,QAAQ,EAAE,MAAM,UAAU,OAAO,SAAS;AAAA,UAC1C,eAAe;AAAA,YACb,MAAM;AAAA,YACN,OAAO,EAAE,MAAM,SAAS;AAAA,YACxB,OAAO;AAAA,UACT;AAAA,UACA,MAAM,EAAE,MAAM,UAAU,OAAO,OAAO;AAAA,UACtC,SAAS,EAAE,MAAM,UAAU,OAAO,UAAU;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,qBAAqB;AAAA,IACnB,aAAa;AAAA,MACX,MAAM;AAAA,MACN,YAAY;AAAA,QACV,UAAU;AAAA,UACR,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,cAAc;AAAA,UACZ,MAAM;AAAA,UACN,MAAM,CAAC,GAAG,2BAA2B;AAAA,UACrC,aACE;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC,UAAU;AAAA,MACrB,sBAAsB;AAAA,IACxB;AAAA,EACF;AACF,CAAC;",
  "names": ["isUndefined", "isNumber", "isString", "isNull", "isObject", "isArray", "isNonEmptyArray", "isNonEmptyString", "import_guards", "import_guards", "import_guards", "SCHEME_REGEX", "LEADING_WWW_REGEX", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards", "import_guards"]
}
