Field catalog
Every field Orakel exposes, its type, and its source.
Every field Orakel exposes, typed and attributed. Types use TypeScript-ish notation. Nullable fields reflect source gaps. Source names: Brreg, Regnskap, Aksjonær, Konkursregisteret, Doffin, Mattilsynet, TBR, SSB, PRH, Tilastokeskus, Bolagsverket, SCB, GLEIF, Newsweb, Orakel (computed or enrichment-derived).
Composite key:
Companyand its child tables are keyed on(country, orgNumber).orgNumberis 9 digits for NO,NNNNNNN-Nfor FI, 10 digits for SE. Don't assume length.
_sources (response-level)
Every /api/companies/* response carries a _sources object alongside the data. It surfaces which upstream fed which field so consumers can render per-field attribution without re-inferring source mappings client-side. See Attribution → _sources response field for the full shape and a rendering snippet.
| Field | Type | Notes |
|---|---|---|
_sources.attribution | string[] | Deduplicated display list — paste into a "Data via …" footer |
_sources.fields | Record<string, string | { source: string; computed: true }> | Per-field source map; keys omitted when data is absent |
Common fields.* values: "Brønnøysundregistrene" (NO core), "Bolagsverket" (SE core + financials), "YTJ" (FI core), "Regnskapsregisteret" (NO financials), "Tilastokeskus" (FI financials), "SSB Klass" (industry/org-form/country/county labels), "SSB" (aggregate context when include=context), "Orakel enrichment pipeline" (domain, social handles, technologies — synthesized from multiple upstream signals).
_sources credits the source of what's returned; it does not imply coverage depth. For financial-year depth by country see Limitations → Financial-year depth.
Company
One row per legal entity.
| Field | Type | Source | Notes |
|---|---|---|---|
orgNumber | string | Brreg (NO) / PRH (FI) / Bolagsverket (SE) | 9 digits NO, NNNNNNN-N FI, 10 digits SE |
country | CountryCode | Orakel | "NO" | "FI" | "SE" |
name | string | Brreg / PRH / Bolagsverket | Current active registered name |
orgFormCode | string | Brreg / PRH / Bolagsverket | e.g. AS, ASA, Oy, AB |
orgFormDescription | string | null | Brreg / PRH / Bolagsverket (SE: SCB) | SE description comes from SCB jurForm |
naceCode1 | string | null | Brreg / PRH / SCB | SE NACE is from SCB, not Bolagsverket |
naceDescription1 | string | null | Brreg / PRH / Bolagsverket | SE uses free-text verksamhetsbeskrivning |
naceCode2 | string | null | Brreg / SCB | NO, SE only |
naceDescription2 | string | null | Brreg | NO only |
naceCode3 | string | null | Brreg / SCB | NO, SE only |
naceDescription3 | string | null | Brreg | NO only |
employeeCount | number | null | Brreg | NO only |
hasRegisteredEmployees | boolean | Brreg | NO only; defaults false elsewhere |
businessAddressStreet | string | null | Brreg / PRH / Bolagsverket | |
businessAddressZip | string | null | Brreg / PRH / Bolagsverket | |
businessAddressCity | string | null | Brreg / PRH / Bolagsverket | FI prefers English post-office name |
businessAddressMuni | string | null | Brreg / PRH | NO, FI only |
businessAddressMuniNo | string | null | Brreg / PRH | Joins to Municipality.code and ssb_municipality_stats.municipalityNo |
postalAddressStreet | string | null | Brreg / PRH | NO, FI only |
postalAddressZip | string | null | Brreg / PRH | NO, FI only |
postalAddressCity | string | null | Brreg / PRH | NO, FI only |
website | string | null | Brreg / PRH | Self-reported at registration; may be stale |
phone | string | null | Brreg | NO only |
enrichedDomains | string[] | Orakel | All verified domains for the company |
primaryDomain | string | null | Orakel | Best-match verified domain |
domainConfidence | number | null | Orakel | 0–100 composite score |
brregWebsiteValid | boolean | null | Orakel | Whether Brreg's registered website verified |
linkedinHandle | string | null | Orakel | Extracted from homepage |
facebookHandle | string | null | Orakel | Extracted from homepage |
instagramHandle | string | null | Orakel | Extracted from homepage |
twitterHandle | string | null | Orakel | Extracted from homepage |
parentOrgNumber | string | null | Brreg | Immediate parent in a corporate group |
technologies | Json | null | Orakel | Array of { name, category, confidence, detectedAt } — see Technology section |
techSyncedAt | Date | null | Orakel | Last technology scan |
sslSansSyncedAt | Date | null | Orakel | Last crt.sh SAN scan |
foundingDate | Date | null | Brreg / PRH / Bolagsverket | Stiftelsesdato (NO) |
registrationDate | Date | null | Brreg / PRH / Bolagsverket | |
registeredInVat | boolean | Brreg / PRH | NO, FI (Merverdiavgiftsregisteret / registeredEntries=6) |
registeredInBiz | boolean | Brreg / PRH | NO (Foretaksregisteret), FI (tradeRegisterStatus=1) |
isBankrupt | boolean | Brreg | NO only |
bankruptcyDate | Date | null | Brreg | NO only. Date bankruptcy proceedings were opened. Set when isBankrupt is true. |
isBeingDissolved | boolean | Brreg / Bolagsverket | NO, SE (Bolagsverket avregistreringsdatum) |
isInGroup | boolean | Brreg | NO only |
sectorCode | string | null | Brreg | NO only; institusjonell sektorkode |
sectorDescription | string | null | Brreg | NO only |
description | string | null | Brreg (NO) / Bolagsverket (SE) / YTJ (FI) / CVR (DK) | Business activity description. Source text varies by country. |
descriptionKeywords | string[] | Orakel | Top-10 keywords extracted from description; stopwords removed |
trafficRank | number | null | Orakel (Tranco) | Tranco top-1M rank (1 = highest traffic). Updated weekly. Null if domain not in list. |
trafficRankUpdatedAt | Date | null | Orakel | When trafficRank was last refreshed |
employerRegisterDate | Date | null | YTJ | FI only. Date company first registered as a regular employer |
directMarketingDenied | boolean | null | CVR | DK only. Direct marketing protection flag (reklamebeskyttet) |
businessAddressLat | number | null | Orakel (Kartverket / DAWA / Nominatim) | Geocoded latitude. Populated by weekly job, not at ingest. |
businessAddressLng | number | null | Orakel (Kartverket / DAWA / Nominatim) | Geocoded longitude. Same source as businessAddressLat. |
digitalizationIndex | number | null [computed] | Orakel | Fraction of 12 tech categories covered (0–1). Null when technologies is null. |
socialIndex | number | null [computed] | Orakel | Fraction of 4 social platforms with a handle (0–1). |
sizeClass | "micro" | "small" | "medium" | "large" | "enterprise" | null [computed] | Orakel | From employeeCount: micro 0–10, small 11–50, medium 51–200, large 201–1000, enterprise 1001+. |
latestRevenueNOK | bigint | null [computed] | Orakel | Denormalized latest revenue from Financial; updated on financial sync |
companySummary | string | null | Orakel | AI-generated 2–3 sentence description of the company's business (Norwegian). Null until the first public company page visit triggers generation. |
Financial
Unique on (country, orgNumber, regnskapstype, periodFrom, periodTo). Ratios computed at read time.
| Field | Type | Source | Notes |
|---|---|---|---|
orgNumber | string | Regnskap (NO) / Tilastokeskus (FI) | FK to Company |
country | CountryCode | Orakel | |
regnskapstype | string | Regnskap / Tilastokeskus | SELSKAP (company) | KONSERN (consolidated). Always SELSKAP for FI |
periodFrom | Date | Regnskap / Tilastokeskus | Fiscal period start |
periodTo | Date | Regnskap / Tilastokeskus | Fiscal period end |
currency | string | Regnskap / Tilastokeskus | As filed; most NO filings NOK, FI defaults EUR |
revenue | number | null | Regnskap | Sum driftsinntekter; not yet mapped for FI |
operatingCosts | number | null | Regnskap | Sum driftskostnad; not yet mapped for FI |
operatingResult | number | null | Regnskap | Driftsresultat; not yet mapped for FI |
netFinancials | number | null | Regnskap | Netto finans; not yet mapped for FI |
preTaxProfit | number | null | Regnskap | Ordinært resultat før skattekostnad; not yet mapped for FI |
netResult | number | null | Regnskap | Årsresultat; not yet mapped for FI |
totalAssets | number | null | Regnskap / Tilastokeskus | FI maps from XBRL fi_MC:x360 |
totalEquity | number | null | Regnskap | Sum egenkapital; not yet mapped for FI |
totalDebt | number | null | Regnskap | Sum gjeld; not yet mapped for FI |
varekostnad | number | null | Regnskapsregisteret | Cost of goods sold (Varekostnad). NO only. Populated from multi-year history; null on filings where the figure isn't available. |
avskrivning | number | null | Regnskapsregisteret | Depreciation and amortisation (Avskrivning). NO only. Same coverage as varekostnad. |
syncedAt | Date | Orakel | Last time Orakel fetched this filing |
ratios.profitMargin | number | null [computed] | Orakel | netResult / revenue |
ratios.operatingMargin | number | null [computed] | Orakel | operatingResult / revenue |
ratios.returnOnAssets | number | null [computed] | Orakel | netResult / totalAssets |
ratios.returnOnEquity | number | null [computed] | Orakel | netResult / totalEquity |
ratios.equityRatio | number | null [computed] | Orakel | totalEquity / totalAssets |
ratios.debtToEquityRatio | number | null [computed] | Orakel | totalDebt / totalEquity |
ratios.grossMargin | number | null [computed] | Orakel | (revenue − varekostnad) / revenue. null when varekostnad is absent. |
ratios.ebitda | number | null [computed] | Orakel | operatingResult + avskrivning. null when either field is absent. |
revenueGrowthYoY | number | null [computed] | Orakel | (revenue_t − revenue_t-1) / abs(revenue_t-1) |
Role
Board, CEO, auditor, owners. NO and DK.
| Field | Type | Source | Notes |
|---|---|---|---|
orgNumber | string | Brreg | FK to Company |
country | CountryCode | Orakel | "NO" | "DK" |
roleGroupCode | string | Brreg | e.g. STYR (board) |
roleGroupDescription | string | null | Brreg | |
roleTypeCode | string | Brreg | e.g. LEDE (chair), DAGL (CEO), REVI (auditor) |
roleTypeDescription | string | null | Brreg | |
personFirstName | string | null | Brreg | Natural-person role holders |
personMiddleName | string | null | Brreg | |
personLastName | string | null | Brreg | |
personBirthDate | Date | null | Brreg | Full birth date as filed |
entityOrgNumber | string | null | Brreg | Entity role holders (auditor firms) |
entityName | string | null | Brreg | |
isResigned | boolean | Brreg | Fratraadt |
isDeregistered | boolean | Brreg | |
sortOrder | number | Brreg | Stable order within a role group |
ownershipPercent | number | null | Brreg (NO) / CVR (DK) | EIER/EJER roles only. NO: Brreg eierandel.prosent. DK: CVR EJERANDEL_PROCENT attribute. |
syncedAt | Date | Orakel |
SubUnit
Branch offices. Linked via parentOrgNumber. NO and DK (production units via penheder).
| Field | Type | Source | Notes |
|---|---|---|---|
orgNumber | string | Brreg | Sub-unit's own org number |
country | CountryCode | Orakel | Always "NO" |
parentOrgNumber | string | Brreg | FK to parent Company |
name | string | Brreg | |
orgFormCode | string | Brreg | |
orgFormDescription | string | null | Brreg | |
naceCode1 | string | null | Brreg | |
naceDescription1 | string | null | Brreg | |
employeeCount | number | null | Brreg | Sub-unit headcount |
hasRegisteredEmployees | boolean | Brreg | |
locationAddressStreet | string | null | Brreg | Physical location, not postal |
locationAddressZip | string | null | Brreg | |
locationAddressCity | string | null | Brreg | |
locationAddressMuni | string | null | Brreg | |
locationAddressMuniNo | string | null | Brreg | |
phone | string | null | Brreg | |
registrationDate | Date | null | Brreg | |
addressLat | number | null | Orakel (Kartverket / Nominatim) | Geocoded latitude of locationAddress. |
addressLng | number | null | Orakel | Geocoded longitude. |
Shareholder
One row per shareholder per share class per year. GDPR-sensitive; see aksjonaerregisteret. NO only.
| Field | Type | Source | Notes |
|---|---|---|---|
orgNumber | string | Aksjonær | Investee company; FK to Company |
country | CountryCode | Orakel | Always "NO" |
shareholderName | string | Aksjonær | Display name (person or entity) |
shareholderOrgNumber | string | null | Aksjonær | 9-digit when shareholder is Norwegian entity; null for persons and foreign |
shareholderType | string | null | Aksjonær | "person" | "company" | "foreign" |
postalCode | string | null | Aksjonær | Entity shareholders only |
location | string | null | Aksjonær | Entity shareholders only |
shareClass | string | null | Aksjonær | e.g. A, B, ORDINÆR |
shareCount | bigint | Aksjonær | Shares held in this class |
totalSharesInCompany | bigint | null | Aksjonær | Total shares in this class, when supplied |
year | number | Aksjonær | Snapshot year (fiscal year described) |
ownershipPct | number | null [computed] | Orakel | shareCount / totalSharesInCompany × 100, 2 decimals |
Inspection (Mattilsynet)
Food-safety visits. NO only.
| Field | Type | Source | Notes |
|---|---|---|---|
tilsynId | string | Mattilsynet | Unique per visit |
orgNumber | string | Mattilsynet | May reference a sub-unit rather than parent |
name | string | Mattilsynet | Venue name as filed |
address | string | null | Mattilsynet | |
postnr | string | null | Mattilsynet | |
poststed | string | null | Mattilsynet | |
date | Date | Mattilsynet | Inspection date |
totalRating | number | Mattilsynet | Smilefjes rating code (integer, not percentage) |
rating1 | number | null | Mattilsynet | Per-theme sub-score |
rating2 | number | null | Mattilsynet | |
rating3 | number | null | Mattilsynet | |
rating4 | number | null | Mattilsynet | |
inspectionType | number | Mattilsynet | Visit type code |
syncedAt | Date | Orakel |
License (TBR)
Alcohol and tobacco licenses, unique on (licenseNumber, registerType). NO only.
| Field | Type | Source | Notes |
|---|---|---|---|
licenseNumber | number | TBR | Bevillingsnummer or Registreringsnummer |
orgNumber | string | TBR | License holder |
holderName | string | null | TBR | Innehaver |
venueName | string | null | TBR | Sted |
venueOrgNumber | string | null | TBR | Sub-unit org number when different from holder |
registerType | string | TBR | Alkoholsbevilling | Tobakksbevilling |
licenseTypeCode | string | TBR | 01SKJE, 11ENGR, 18TBIM, 19TBEK |
licenseTypeDesc | string | null | TBR | |
productGroups | string[] | TBR | GRP1, GRP2, GRP3, TROY, TINN |
address | string | null | TBR | |
postnr | string | null | TBR | |
poststed | string | null | TBR | |
municipality | string | null | TBR | Issuing municipality name |
municipalityNo | string | null | TBR | SSB 4-digit code |
validFrom | Date | null | TBR | |
validTo | Date | null | TBR | |
syncedAt | Date | Orakel |
ProcurementNotice (Doffin)
Keyed on noticeId. Buyer orgNumber nullable when Doffin didn't supply a matchable ID. NO only.
| Field | Type | Source | Notes |
|---|---|---|---|
noticeId | string | Doffin | Stable upstream identifier |
orgNumber | string | null | Doffin | Buyer; null when upstream format didn't normalise |
contractingAuthority | string | null | Doffin | Buyer name |
title | string | Doffin | |
description | string | null | Doffin | Long-form text |
cpvCodes | string[] | Doffin | Common Procurement Vocabulary codes |
noticeType | string | null | Doffin | tender / award / prior information |
estimatedValue | number | null | Doffin | Buyer's estimate at publication |
currency | string | null | Doffin | |
publishedDate | Date | null | Doffin | |
issueDate | Date | null | Doffin | |
deadline | Date | null | Doffin | Submission deadline |
locationIds | string[] | Doffin | NUTS / municipality codes |
status | string | null | Doffin | Open enum — upstream can add values |
rawData | Json | null | Doffin | Full upstream payload for unmodelled fields |
syncedAt | Date | Orakel |
DomainEnrichment
Per-company enrichment pipeline state. NO live; FI and SE planned.
| Field | Type | Source | Notes |
|---|---|---|---|
orgNumber | string | Orakel | FK to Company |
country | CountryCode | Orakel | |
status | string | Orakel | pending | processing | confirmed | ambiguous | rejected |
confirmedDomains | string[] | Orakel | Result set |
primaryDomain | string | null | Orakel | Best-match verified domain |
confidence | number | Orakel | 0–100 composite score |
candidates | Json | null | Orakel | Per-candidate signal breakdown |
stage | number | Orakel | Pipeline stage 0–5 |
priority | number | Orakel | Higher = processed first |
brregWebsiteValid | boolean | null | Orakel | Signal: did Brreg's website verify |
homepageOrgNr | string | null | Orakel | Signal: org number found on candidate homepage |
rdapHolder | string | null | Orakel | Signal: NORID RDAP domain holder |
llmConfidence | number | null | Orakel | LLM adjudication score when used |
llmReasoning | string | null | Orakel | LLM reasoning text |
linkedinHandle | string | null | Orakel | Captured during scraping |
facebookHandle | string | null | Orakel | |
instagramHandle | string | null | Orakel | |
twitterHandle | string | null | Orakel | |
startedAt | Date | null | Orakel | |
completedAt | Date | null | Orakel |
DomainSecurity
DNS security posture per company domain. Populated by a weekly enrichment sweep. One row per (country, orgNumber) — covers the company's primary verified domain.
| Field | Type | Source | Notes |
|---|---|---|---|
orgNumber | string | Orakel | FK to Company |
country | CountryCode | Orakel | |
domain | string | Orakel | Domain that was checked |
hasDnssec | boolean | Orakel | DNSSEC delegation present |
hasSpf | boolean | Orakel | SPF TXT record present |
hasDmarc | boolean | Orakel | DMARC TXT record present |
hasMx | boolean | Orakel | MX record present — company receives email at this domain |
dmarcPolicy | "none" | "quarantine" | "reject" | null | Orakel | Enforcement level from DMARC p= tag. Null when hasDmarc is false. |
emailProvider | string | null | Orakel | Inferred from MX hostname patterns. Values: "google-workspace" | "microsoft-365" | "zoho" | "protonmail" | "fastmail" | "icloud" | "mimecast" | "other" |
checkedAt | Date | Orakel | When this domain was last checked |
Technology
Company.technologies is a JSON array. Each element:
| Field | Type | Source | Notes |
|---|---|---|---|
name | string | Orakel | e.g. WordPress, Google Analytics, Meta Pixel |
category | string | Orakel | cms | analytics | chat | marketing | ecommerce | framework | advertising |
confidence | number | Orakel | 0–100, per-signature weight |
detectedAt | string (ISO date) | Orakel | When this scan detected the signature |
Ad pixels
Company.technologies entries with category = "advertising": Meta Pixel, Google Tag Manager, Snap Pixel, TikTok Pixel, X Pixel, LinkedIn Insight Tag. Queryable via ?hasAnyAdPixel=true.
Social handles
Scalar columns on Company and DomainEnrichment.
| Field | Type | Source | Notes |
|---|---|---|---|
linkedinHandle | string | null | Orakel | LinkedIn company-page slug |
facebookHandle | string | null | Orakel | |
instagramHandle | string | null | Orakel | |
twitterHandle | string | null | Orakel | X/Twitter handle |
Municipality
From SSB Klass 131.
| Field | Type | Source | Notes |
|---|---|---|---|
code | string (4 digits) | SSB | e.g. 3905 (Tønsberg) |
name | string | SSB | |
countyCode | string (2 digits) | SSB | First two digits of code |
countyName | string | SSB | From classification 104 (fylker) |
SSB municipality stats
Keyed on (municipalityNo, year, metric).
| Field | Type | Source | Notes |
|---|---|---|---|
municipalityNo | string | SSB | Joins to Company.businessAddressMuniNo |
year | number | SSB | |
metric | string | SSB | Currently population |
value | number | SSB | |
sourceTable | string | SSB | SSB table ID, e.g. 07459 |
capturedAt | Date | Orakel |
SSB industry stats
Keyed on (naceSection, year, metric). Section mapped from Company.naceCode1.
| Field | Type | Source | Notes |
|---|---|---|---|
naceSection | string | SSB | Single letter, e.g. J for ICT |
year | number | SSB | |
metric | string | SSB | avgMonthlyWage | enterpriseCount |
value | number | SSB | |
sourceTable | string | SSB / Orakel | SSB table ID (11419, 14000) or brreg-derived |
capturedAt | Date | Orakel |
BankruptcyEvent (Konkursregisteret)
Court-filed bankruptcy and debt negotiation events. Source: Brønnøysundregistrene Konkursregisteret public API (NLOD 2.0). NO only. A company can have multiple events (a case is opened and later closed).
| Field | Type | Source | Notes |
|---|---|---|---|
id | string | Konkursregisteret | Announcement ID from Konkursregisteret |
orgNumber | string | Konkursregisteret | FK to Company |
eventType | string | Konkursregisteret | "debt_negotiation" | "bankruptcy_opened" | "bankruptcy_closed" | "forced_dissolution" |
courtName | string | null | Konkursregisteret | Handling court |
filedAt | Date | Konkursregisteret | Date the event was filed |
closedAt | Date | null | Konkursregisteret | Date proceedings closed. Null for open cases. |
raw | Json | Konkursregisteret | Full upstream payload |
OwnershipDisclosure (Newsweb)
Mandatory major-shareholder threshold filings for Oslo Børs and Euronext Growth Oslo listed companies. Filed when a shareholder crosses 5%, 10%, 15%, 20%, 25%, 33%, or 50%. Source: Oslo Børs Newsweb (OB:FLAGI / OB:FLAGI2 message types). NO only, listed companies only.
| Field | Type | Source | Notes |
|---|---|---|---|
id | string | Newsweb | Announcement ID from Oslo Børs Newsweb |
orgNumber | string | null | Orakel | Matched via EuronextListing; null if the issuer has no matched company |
issuerName | string | Newsweb | Issuer company name as filed |
issuerTicker | string | null | Newsweb | Exchange ticker symbol |
isin | string | null | Newsweb | ISIN code when present |
title | string | Newsweb | Announcement title — contains shareholder name and threshold crossed |
publishedAt | Date | Newsweb | Publication timestamp |
categoryId | number | Newsweb | Newsweb category ID (1006 = ownership flagging) |
raw | Json | Newsweb | Full upstream API response |
LeiRecord (GLEIF)
Legal Entity Identifier codes from the GLEIF open register. ~254k records across NO/SE/DK/FI; refreshed monthly. Not every company has an LEI — primarily banks, funds, and publicly traded companies are required to hold one.
| Field | Type | Source | Notes |
|---|---|---|---|
lei | string | GLEIF | 20-character LEI code (ISO 17442) |
orgNumber | string | null | GLEIF | Parsed from GLEIF registeredAs field; null when not parseable |
country | CountryCode | GLEIF | ISO 2-letter country code |
legalName | string | GLEIF | Legal name as registered in GLEIF |
entityStatus | string | GLEIF | "ACTIVE" | "INACTIVE" | "ANNULLED" |
registrationStatus | string | GLEIF | "ISSUED" | "LAPSED" | "RETIRED" |
legalForm | string | null | GLEIF | ISO 20275 ELF code (legal entity form) |
nextRenewalDate | Date | null | GLEIF | Date the LEI must next be renewed |
syncedAt | Date | Orakel | Last GLEIF sync |
Country coverage
| Entity | NO | FI | SE | DK |
|---|---|---|---|---|
| Company | ✓ | ✓ (seed list) | ✓ | ✓ |
| Financial | ✓ | best-effort (totalAssets only) | ✓ (iXBRL, FY 2020+) | ✓ |
| Role | ✓ | — | — | ✓ |
| SubUnit | ✓ | — | — | ✓ (production units via penheder) |
| Shareholder | ✓ | — | — | — |
| Inspection (Mattilsynet) | ✓ | — | — | — |
| License (TBR) | ✓ | — | — | — |
| ProcurementNotice (Doffin) | ✓ | — | — | — |
| DomainEnrichment | ✓ | planned | planned | — |
| DomainSecurity | ✓ | planned | planned | — |
| Technology / Ad pixels / Social | ✓ | planned | planned | — |
| Municipality / SSB stats | ✓ | — | — | — |
| BankruptcyEvent (Konkursregisteret) | ✓ | — | — | — |
| OwnershipDisclosure (Newsweb) | ✓ (listed only) | — | — | — |
| LeiRecord (GLEIF) | ✓ | ✓ | ✓ | ✓ |