From 2b8a900d12a523c59067b1352de1507955d6429e Mon Sep 17 00:00:00 2001 From: Aaron Po Date: Wed, 1 Jul 2026 07:47:24 -0400 Subject: [PATCH] Pipeline: Add LLM and mocked user generation to the pipeline (#230) --- docs/pipeline/ETHICS-AND-KNOWN-ISSUES.md | 28 + docs/pipeline/README.md | 120 +- docs/pipeline/ROADMAP.md | 121 +- docs/pipeline/diagrams/current/activity.puml | 71 + docs/pipeline/diagrams/current/class.puml | 69 +- .../diagrams/current/output/activity.svg | 2 +- .../diagrams/current/output/class.svg | 2 +- docs/pipeline/diagrams/planned/activity.puml | 18 +- docs/pipeline/diagrams/planned/class.puml | 100 +- .../planned/output/biergarten_activity.svg | 2 +- .../diagrams/planned/output/class.svg | 2 +- tooling/pipeline-results-viewer/.gitignore | 24 + tooling/pipeline-results-viewer/index.html | 74 + .../pipeline-results-viewer/package-lock.json | 1334 + tooling/pipeline-results-viewer/package.json | 20 + .../public/biergarten.sqlite | Bin 0 -> 106496 bytes .../public/favicon.svg | 1 + tooling/pipeline-results-viewer/src/main.ts | 147 + .../pipeline-results-viewer/src/style.scss | 267 + tooling/pipeline-results-viewer/tsconfig.json | 24 + tooling/pipeline/CMakeLists.txt | 25 +- tooling/pipeline/forenames-by-country.json | 27168 ++++++++++++++++ tooling/pipeline/format-per-directory.sh | 72 + .../pipeline/includes/biergarten_pipeline.h | 70 + .../biergarten_pipeline_orchestrator.h | 88 +- .../includes/concurrency/bounded_channel.h | 6 +- .../includes/concurrency/bounded_channel.tcc | 2 +- .../includes/data_generation/data_generator.h | 10 +- .../includes/data_generation/json_grammars.h | 52 + .../data_generation/llama_generator.h | 19 +- .../data_generation/llama_generator_helpers.h | 14 + .../includes/data_generation/mock_generator.h | 26 +- .../includes/data_model/generated_models.h | 68 +- tooling/pipeline/includes/data_model/models.h | 162 +- .../includes/json_handling/json_loader.h | 25 - .../includes/json_handling/pretty_print.h | 2 +- .../pipeline/includes/llama_backend_state.h | 6 - .../curated_data/curated_data_service.h | 50 + .../curated_data/curated_json_data_service.h | 63 + .../curated_data/mock_curated_data_service.h | 38 + .../services/database/export_service.h | 19 +- .../database/sqlite_connection_helpers.h | 2 +- .../services/database/sqlite_export_service.h | 19 +- .../database/sqlite_export_service_helpers.h | 6 +- .../services/database/sqlite_handle_types.h | 4 +- .../database/sqlite_statement_helpers.h | 86 +- .../services/datetime/date_time_provider.h | 1 - .../services/enrichment/enrichment_service.h | 1 - .../services/enrichment/mock_enrichment.h | 15 +- .../services/enrichment/wikipedia_service.h | 22 +- .../includes/services/logging/log_entry.h | 88 +- .../includes/services/logging/log_producer.h | 6 +- .../includes/services/logging/logger.h | 3 +- .../includes/web_client/http_web_client.h | 21 +- .../pipeline/includes/web_client/web_client.h | 1 - tooling/pipeline/personas.json | 42 + tooling/pipeline/prompts/USER_GENERATION.md | 122 + tooling/pipeline/run.sh | 8 + .../application_options/parse_arguments.cc | 50 +- .../biergarten_pipeline_orchestrator.cc | 8 +- .../generate_breweries.cc | 86 +- .../generate_users.cc | 219 + .../log_results.cc | 36 +- .../query_cities_with_countries.cc | 11 +- .../biergarten_pipeline_orchestrator/run.cc | 38 +- .../data_generation/llama/generate_brewery.cc | 57 +- .../data_generation/llama/generate_user.cc | 117 +- .../src/data_generation/llama/helpers.cc | 62 +- .../src/data_generation/llama/infer.cc | 3 +- .../data_generation/llama/llama_generator.cc | 3 +- .../src/data_generation/llama/load.cc | 5 +- .../mock/deterministic_hash.cc | 10 + .../src/data_generation/mock/generate_user.cc | 29 +- .../pipeline/src/json_handling/json_loader.cc | 110 - tooling/pipeline/src/main.cc | 132 +- .../curated_data/curated_json_data_service.cc | 264 + .../curated_data/mock_curated_data_service.cc | 98 + .../enrichment/wikipedia/fetch_extract.cc | 93 +- .../enrichment/wikipedia/get_summary.cc | 22 +- .../enrichment/wikipedia/wikipedia_service.cc | 2 +- .../src/services/logging/log_dispatcher.cc | 2 + .../pipeline/src/services/prompt_directory.cc | 21 +- .../pipeline/src/services/sqlite/finalize.cc | 1 + .../helpers/sqlite_statement_helpers.cc | 6 +- .../src/services/sqlite/initialize.cc | 13 +- .../src/services/sqlite/process_record.cc | 163 +- .../services/sqlite/process_user_record.cc | 79 + .../src/web_client/http_web_client.cc | 17 +- tooling/pipeline/surnames-by-country.json | 25438 +++++++++++++++ web/docs | 1 + 90 files changed, 57254 insertions(+), 800 deletions(-) create mode 100644 tooling/pipeline-results-viewer/.gitignore create mode 100644 tooling/pipeline-results-viewer/index.html create mode 100644 tooling/pipeline-results-viewer/package-lock.json create mode 100644 tooling/pipeline-results-viewer/package.json create mode 100644 tooling/pipeline-results-viewer/public/biergarten.sqlite create mode 100644 tooling/pipeline-results-viewer/public/favicon.svg create mode 100644 tooling/pipeline-results-viewer/src/main.ts create mode 100644 tooling/pipeline-results-viewer/src/style.scss create mode 100644 tooling/pipeline-results-viewer/tsconfig.json create mode 100644 tooling/pipeline/forenames-by-country.json create mode 100755 tooling/pipeline/format-per-directory.sh create mode 100644 tooling/pipeline/includes/biergarten_pipeline.h create mode 100644 tooling/pipeline/includes/data_generation/json_grammars.h delete mode 100644 tooling/pipeline/includes/json_handling/json_loader.h create mode 100644 tooling/pipeline/includes/services/curated_data/curated_data_service.h create mode 100644 tooling/pipeline/includes/services/curated_data/curated_json_data_service.h create mode 100644 tooling/pipeline/includes/services/curated_data/mock_curated_data_service.h create mode 100644 tooling/pipeline/personas.json create mode 100644 tooling/pipeline/prompts/USER_GENERATION.md create mode 100644 tooling/pipeline/run.sh create mode 100644 tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_users.cc delete mode 100644 tooling/pipeline/src/json_handling/json_loader.cc create mode 100644 tooling/pipeline/src/services/curated_data/curated_json_data_service.cc create mode 100644 tooling/pipeline/src/services/curated_data/mock_curated_data_service.cc create mode 100644 tooling/pipeline/src/services/sqlite/process_user_record.cc create mode 100644 tooling/pipeline/surnames-by-country.json create mode 120000 web/docs diff --git a/docs/pipeline/ETHICS-AND-KNOWN-ISSUES.md b/docs/pipeline/ETHICS-AND-KNOWN-ISSUES.md index 0b5fced..febf030 100644 --- a/docs/pipeline/ETHICS-AND-KNOWN-ISSUES.md +++ b/docs/pipeline/ETHICS-AND-KNOWN-ISSUES.md @@ -13,6 +13,7 @@ low-resource language failures. - [Model Bias and Language Quality](#model-bias-and-language-quality) - [Western and Eurocentric Lens](#western-and-eurocentric-lens) - [Wikipedia Enrichment](#wikipedia-enrichment) +- [Names-by-Country Dataset](#names-by-country-dataset) - [The "Avoid AI Phrases" Prompt Instruction](#the-avoid-ai-phrases-prompt-instruction) - [Known Issues](#known-issues) - [Hallucinated Brewing Techniques](#hallucinated-brewing-techniques) @@ -91,6 +92,33 @@ generated descriptions. --- +## Names-by-Country Dataset + +`tooling/pipeline/forenames-by-country.json` and `surnames-by-country.json` +(used to sample a `Name` per ISO 3166-1 country code for user generation) are +vendored verbatim, unmodified, from +[sigpwned/popular-names-by-country-dataset](https://github.com/sigpwned/popular-names-by-country-dataset) +(the `common-forenames-by-country.json` / `common-surnames-by-country.json` +release assets), released under **CC0** (public domain). That dataset's own +forename/surname lists are pulled from Wikipedia's "Lists of most common +surnames" and "List of most popular given names" as of the week of +2023-07-08 — see that project's README for full provenance. Names are not +LLM-generated; this is curated fixture data per ROADMAP.md §2. Per-forename +gender from the source data is preserved through to the sampled `Name` +(rather than discarded during loading) so it's available for gender-aware +persona/bio generation later. + +The full multinational dataset is kept as-is (106 countries for forenames, +75 for surnames) rather than trimmed to `locations.json`'s current country +list, so it doesn't need re-sourcing if more countries are added later. +`SampleName()` (a free helper in `generate_users.cc`) returns no result for +a country present in neither file; of the countries in `locations.json`, +that's currently `KE`, `SE`, `SG`, `TH`, `VN`, and `ZA` — `GenerateUsers` +skips cities in those countries the same way brewery generation skips +cities whose enrichment lookup fails. + +--- + ## The "Avoid AI Phrases" Prompt Instruction The system prompt instructs the model to avoid common AI-generated phrasing diff --git a/docs/pipeline/README.md b/docs/pipeline/README.md index 37c9ef8..eed2936 100644 --- a/docs/pipeline/README.md +++ b/docs/pipeline/README.md @@ -1,8 +1,9 @@ # Biergarten Pipeline A C++20 command-line pipeline that samples city records from local JSON, -enriches each with Wikipedia context, and generates bilingual brewery names and -descriptions via a local GGUF model or a deterministic mock. +enriches each with Wikipedia context, and generates bilingual brewery names +and descriptions plus locale-grounded user profiles via a local GGUF model or +a deterministic mock. > **This pipeline produces AI-generated data.** It is not a source of truth for > brewing techniques, cultural representation, or local-language accuracy. See @@ -45,6 +46,7 @@ step. | Beer reviews and ratings | Stable brewery fixtures with enough context to anchor review pages | | Social follow relationships | Repeatable brewery entities for feeds, follows, and saved lists | | Geospatial brewery experiences | Latitude, longitude, and country-level metadata | +| User accounts and profiles | Locale-grounded names, bios, and an auth-ready email/date-of-birth pair for seeding real accounts | --- @@ -218,35 +220,46 @@ environment variables listed above to match your run. ### Pipeline Stages -| Stage | Implementation | -| -------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| Load | `JsonLoader::LoadLocations()` reads `locations.json` into typed `Location` records. | -| Sample | `BiergartenPipelineOrchestrator::QueryCitiesWithCountries()` samples `--location-count` locations per run (default `10`). | -| Enrich | `WikipediaEnrichmentService` fetches brewing and beer-related context. Keeps going when a lookup fails. `--mocked` runs use `MockEnrichmentService` instead and skip Wikipedia entirely. | -| Generate | `MockGenerator` or `LlamaGenerator` produces brewery names and descriptions in English and the local language. | -| Store | `SqliteExportService` writes each successful brewery into a fresh dated `.sqlite` database with normalized location and brewery tables. | -| Log | `spdlog` writes results and warnings to the console. | +| Stage | Implementation | +| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| Load | `ICuratedDataService` (`CuratedJsonDataService`) reads `locations.json`, `personas.json`, `forenames-by-country.json`, and `surnames-by-country.json` (paths supplied via a `CuratedDataFilePaths` DTO at construction) into typed records, caching each after its first load. `--mocked` runs use `MockCuratedDataService`'s fixed in-memory dataset instead. | +| Sample | `BiergartenPipelineOrchestrator::QueryCitiesWithCountries()` samples `--location-count` locations per run (default `10`). | +| Enrich | `WikipediaEnrichmentService` fetches brewing and beer-related context. Keeps going when a lookup fails. `--mocked` runs use `MockEnrichmentService` instead and skip Wikipedia entirely. | +| Generate Users | `GenerateUsers()` samples a persona and a forename/surname pair per enriched city (skipping countries with no name data), then `MockGenerator` or `LlamaGenerator` produces a username, bio, and activity weight around the sampled name. | +| Generate Breweries | `MockGenerator` or `LlamaGenerator` produces brewery names and descriptions in English and the local language. | +| Store | `SqliteExportService` writes each successful user and brewery into a fresh dated `.sqlite` database with normalized `locations`, `users`, and `breweries` tables. | +| Log | `spdlog` writes results and warnings to the console. | -If enrichment or generation fails for a city, that city is skipped and the -pipeline continues. +If name sampling, enrichment, or generation fails for a city, that city is +skipped and the pipeline continues. `GenerateUsers()` runs before +`GenerateBreweries()` in `BiergartenPipelineOrchestrator::Run()`. ### Key Components - `src/main.cc` — argument parsing and Boost.DI composition root. -- `JsonLoader` — validates curated location input. +- `CuratedJsonDataService` — implements `ICuratedDataService`; takes a + `CuratedDataFilePaths` DTO (locations/personas/forenames/surnames paths) in + its constructor, then parses and validates curated location, persona, and + forename/surname JSON, memoizing each result after its first load on a + given instance. `MockCuratedDataService` is the in-memory substitute (4 + fixed locations, 3 personas, and name data for `US`/`DE`/`FR`/`BE`) used in + `--mocked` runs. - `WikipediaEnrichmentService` — queries Wikipedia extracts, caches results, returns empty context on failure. `MockEnrichmentService` is the no-op substitute used in `--mocked` runs. -- `LlamaGenerator` — formats prompts for Gemma 4, validates JSON output, retries - malformed responses up to three times with corrective feedback in the - retry prompt. The token budget is fixed across attempts; it is not raised - automatically on truncation. -- `MockGenerator` — stable hash-based output so the same city input always - produces the same brewery. -- `SqliteExportService` — creates a dated SQLite file per run and persists each - successful brewery into normalized tables. +- `LlamaGenerator` — formats prompts for Gemma 4, validates JSON output for + both `GenerateBrewery` and `GenerateUser`, retries malformed responses up + to three times with corrective feedback in the retry prompt. The token + budget is fixed across attempts; it is not raised automatically on + truncation. +- `MockGenerator` — stable hash-based output so the same city/persona/name + input always produces the same brewery or user. +- `SqliteExportService` — creates a dated SQLite file per run and persists + each successful user and brewery into normalized tables. - Brewery payloads include English and local-language name and description - fields. + fields. User payloads carry a sampled first/last name and gender, an + LLM-generated username/bio/activity weight, and a programmatically + generated (not LLM-authored) unique email and date of birth. ### Runtime Behaviour @@ -266,6 +279,18 @@ valid output on the first pass; the retry path is kept for resilience. `MockGenerator` uses stable hashes for repeatable output in demos and Storybook runs. +`CuratedJsonDataService` memoizes each of `LoadLocations()`, `LoadPersonas()`, +`LoadForenamesByCountry()`, and `LoadSurnamesByCountry()` independently the +first time each is called, since `BiergartenPipelineOrchestrator` owns a +single `ICuratedDataService` instance for the whole run — later calls return +the cached result instead of re-parsing. + +`GenerateUsers()` samples a forename/surname pair per city via `SampleName()`, +keyed by the city's ISO 3166-1 code. Countries present in `locations.json` +but absent from either name fixture (currently `KE`, `SE`, `SG`, `TH`, `VN`, +`ZA`) are skipped, the same way a failed enrichment or generation call skips +a city — see ETHICS-AND-KNOWN-ISSUES.md's Names-by-Country Dataset section. + ### Process Flow - Activity Diagram ![An activity diagram](./diagrams/current/output/activity.svg) @@ -278,9 +303,10 @@ runs. ## Generated Output -Each successful run stores a `GeneratedBrewery` pair with the source location -and a `BreweryResult` payload. The same generated records are also written to a -fresh SQLite export file named with the current UTC timestamp. +Each successful run stores a `BreweryRecord` pair with the source location +and a `BreweryResult` payload, and a `UserRecord` pair with the source +location and a `UserResult` payload. The same generated records are also +written to a fresh SQLite export file named with the current UTC timestamp. | Field | Meaning | | ------------------- | ------------------------------------------ | @@ -289,6 +315,17 @@ fresh SQLite export file named with the current UTC timestamp. | `name_local` | Brewery name in the local language. | | `description_local` | Brewery description in the local language. | +| Field | Meaning | +| ----------------- | ----------------------------------------------------------------- | +| `first_name` | Sampled forename, copied from the curated name data (not LLM-invented). | +| `last_name` | Sampled surname, copied from the curated name data (not LLM-invented). | +| `gender` | Gender associated with the sampled forename in the source dataset. | +| `username` | LLM-generated handle. | +| `bio` | LLM-generated short biography. | +| `activity_weight` | Relative check-in/activity weight, reserved for a future J-curve activity profile. | +| `email` | Unique `@thebiergarten.app` address, generated programmatically from the sampled name. | +| `date_of_birth` | Randomized date of birth (age 19-48), generated programmatically. | + The log dump also includes city, country, state or province, ISO subdivision code, latitude, and longitude for each entry. @@ -367,11 +404,17 @@ Silicon; CUDA or HIP/ROCm is detected on Linux when the toolkit is present. ## Fixture Strategy - `--mocked` for stable fixtures, repeatable screenshots, and Storybook runs. + `MockCuratedDataService` swaps in for `CuratedJsonDataService`, so no + fixture files need to be present on disk. - `--model` when geographically grounded content matters for demos. - Keep `locations.json` structured enough to support discovery and future filtering. -- Treat SQLite output as seed material for the app's brewery domain, not - production data. +- `personas.json`, `forenames-by-country.json`, and + `surnames-by-country.json` are curated/vendored fixture data, not + LLM-generated — see ETHICS-AND-KNOWN-ISSUES.md's Names-by-Country Dataset + section for provenance. +- Treat SQLite output as seed material for the app's brewery and user + domains, not production data. --- @@ -382,6 +425,9 @@ Silicon; CUDA or HIP/ROCm is detected on Linux when the toolkit is present. | `tooling/pipeline/includes/` | Public headers and shared models. | | `tooling/pipeline/src/` | Implementation files. | | `tooling/pipeline/locations.json` | Curated city input copied into the build tree. | +| `tooling/pipeline/personas.json` | Curated user persona archetypes copied into the build tree. | +| `tooling/pipeline/forenames-by-country.json` | Vendored (CC0) forename data by ISO 3166-1 country code. | +| `tooling/pipeline/surnames-by-country.json` | Vendored (CC0) surname data by ISO 3166-1 country code. | | `tooling/pipeline/prompts/` | System prompts used by the model-backed path. | | `tooling/pipeline/runpod/` | Dockerfile, launcher, and RunPod pod template. | | `docs/pipeline/diagrams/` | Architecture and pipeline diagrams. | @@ -396,6 +442,9 @@ Paths below are relative to `tooling/pipeline/`. - `src/main.cc` — argument parsing and DI composition root. - `src/biergarten_pipeline_orchestrator/` — orchestration, sampling, logging, and export. +- `src/services/curated_data/` — `CuratedJsonDataService`, the file-backed + `ICuratedDataService`, and `MockCuratedDataService`, the in-memory + `ICuratedDataService` used in `--mocked` runs. - `src/services/enrichment/wikipedia/` — enrichment service and cache. - `src/services/sqlite/` — SQLite export implementation. - `src/data_generation/llama/` — local inference, prompt loading, output @@ -407,11 +456,12 @@ Paths below are relative to `tooling/pipeline/`. ## Next Steps -The pipeline currently produces city-aware brewery records and dated SQLite -exports. The next passes add additional fixture types so the app can exercise -the full brewery domain without live data. For the detailed engineering -breakdown of what's needed to reach the architecture in -[`diagrams/planned/`](./diagrams/planned/), see [ROADMAP.md](./ROADMAP.md). +The pipeline currently produces city-aware brewery and user records and +dated SQLite exports. The next passes add additional fixture types so the +app can exercise the full brewery and social domains without live data. For +the detailed engineering breakdown of what's needed to reach the +architecture in [`diagrams/planned/`](./diagrams/planned/), see +[ROADMAP.md](./ROADMAP.md). ### Testing — Very High Priority @@ -433,12 +483,6 @@ Generate catalog entries with style, ABV, IBU, color, aroma notes, and food pairing hints. Link beers back to breweries and cities. Keep style coverage wide enough to exercise search, sort, and category filters. -### User Generation - -Generate user profiles with stable names, bios, locale hints, and preference -signals. Include stable IDs for downstream fixture joins. Keep output -deterministic for screenshots while allowing larger randomized batches. - ### Check-In System Produce timestamped check-in events between users and breweries. Use a J-curve diff --git a/docs/pipeline/ROADMAP.md b/docs/pipeline/ROADMAP.md index a583aeb..0f2876f 100644 --- a/docs/pipeline/ROADMAP.md +++ b/docs/pipeline/ROADMAP.md @@ -33,28 +33,93 @@ architecture needs. - [ ] Add `BeerResult`, `CheckinResult`, `RatingResult` result payloads. - [ ] Add `GenerationMetadata` (`generation_id`, `generated_time`, `context_provided`, `generated_with`). -- [ ] Add `activity_weight` to `UserResult` (currently just `username`, - `bio`). +- [x] Add `first_name`, `last_name`, `gender`, and `activity_weight` to + `UserResult` (currently just `username`, `bio`). `first_name`/ + `last_name`/`gender` are copied from the sampled `Name` (see below), + not LLM-invented. +- [x] Add `Name` (`first_name`, `last_name`, `gender`) — the sampled result + handed to `DataGenerator::GenerateUser`. Add `ForenameEntry` (`name`, + `gender`). Landed as a flatter shape than originally planned here: no + `NamesByCountry` wrapper class. `curated_data_service.h` instead + declares `ForenameList = std::vector` and + `SurnameList = std::vector`, and + `ICuratedDataService` exposes two maps keyed by ISO 3166-1 code — + `ForenamesByCountryMap = unordered_map` and + `SurnamesByCountryMap = unordered_map` — + directly (see §2). Sampling is + a free function, `SampleName(forenames_by_country, + surnames_by_country, iso3166_1, rng)`, in + `generate_users.cc`'s anonymous namespace, not a method on a class. + Pairing a forename with a surname happens at sample time so gender + (present per-forename in the source data) is never discarded the way a + pre-flattened `{first_name, last_name}` list would lose it; see §2. - [ ] Extend `GeneratedBrewery` with `brewery_id`, `context_completeness`, `metadata` (currently just `{location, brewery}`). -- [ ] Add `GeneratedBeer`, `GeneratedUser`, `GeneratedCheckin`, - `GeneratedRating`, `GeneratedFollow` aggregate structs. -- [ ] Add `UserPersona` (`name`, `description`, `style_affinities`). +- [ ] Add `GeneratedBeer`, `GeneratedCheckin`, `GeneratedRating`, + `GeneratedFollow` aggregate structs. +- [x] Add `UserRecord` (`location`, `user : UserResult`, `email`, + `date_of_birth`) as the current stand-in for the planned + `GeneratedUser` — `email` and `date_of_birth` are programmatically + generated by the orchestrator, never LLM-authored, so a downstream + auth-account seeding consumer can register real accounts from the + pipeline's SQLite export. No `password`, `user_id`, or `metadata` + field yet, matching `BreweryRecord`'s equally pre-`metadata` shape. + Already wired into `IExportService`/`SqliteExportService`: a `users` + table exists and `GenerateUsers()` exports each successful record via + `ProcessRecord(const UserRecord&)` (see §5) in addition to logging and + holding `generated_users_` in memory. Still missing vs. the planned + `GeneratedUser`: `user_id`, `password`, and `metadata`. +- [x] Add `UserPersona` (`name`, `description`, `style_affinities`). ## 2. Data Preloading -`tooling/pipeline/includes/json_handling/`, fixture files. +`tooling/pipeline/includes/services/curated_data/`, fixture files. -- [ ] Extract a `DataPreloader` interface; have `JsonLoader` implement it - instead of exposing only a static `LoadLocations()`. +- [x] Extract an interface; have `CuratedJsonDataService` implement it. + Landed as `ICuratedDataService` + (`services/curated_data/curated_data_service.h`), not `DataPreloader` + — `LoadLocations()`, `LoadPersonas()`, `LoadForenamesByCountry()`, and + `LoadSurnamesByCountry()` are all virtual methods returning `const&` + and take no arguments. `CuratedJsonDataService` + (`services/curated_data/curated_json_data_service.h`, originally + landed as `JsonLoader` under `json_handling/` before being renamed and + moved) takes a `CuratedDataFilePaths` DTO (`locations_path`, + `personas_path`, `forenames_path`, `surnames_path`) in its + constructor rather than a path per `Load*()` call, and memoizes each + result in a private `cache` struct (`locations`, `personas`, + `forenames_by_country`, `surnames_by_country`), so a second call on + the same instance returns the cached result instead of re-parsing — + safe because `CuratedJsonDataService` outlives every call site (owned + by `BiergartenPipelineOrchestrator` via + `unique_ptr` for the whole run). `main.cc`'s DI + injector also gained a `MockCuratedDataService` (fixed in-memory + data: 4 locations across `US`/`DE`/`FR`/`BE`, 3 personas, and + matching forename/surname sets for those four countries), bound in + place of `CuratedJsonDataService` under `--mocked`, mirroring the + existing `MockEnrichmentService`/`MockGenerator` pattern. - [ ] Add `LoadBeerStyles()`. `beer-styles.json` already exists in the repo and is already copied into the Docker image (`runpod/Dockerfile`), but no loader reads it yet, and the native CMake build doesn't copy it into `build/` at all — `CMakeLists.txt`'s "Runtime Assets" step only copies `locations.json` and `prompts/`. -- [ ] Add `LoadPersonas()` and author `personas.json` (doesn't exist yet). -- [ ] Add `LoadNamesByCountry()` and author `names-by-country.json` (doesn't - exist yet). +- [x] Add `LoadPersonas()` and author `personas.json` (doesn't exist yet). +- [x] Add name-by-country loading, parsing + `tooling/pipeline/forenames-by-country.json` and + `surnames-by-country.json`. Landed as two separate methods — + `LoadForenamesByCountry()` and `LoadSurnamesByCountry()` — each + returning a flat `ForenamesByCountryMap` / `SurnamesByCountryMap` + (aliases for `unordered_map` / + `unordered_map`) keyed by ISO 3166-1 code, rather + than one combined `LoadNamesByCountry() : NamesByCountry` call. Both + files are vendored verbatim (unmodified, + full multinational coverage) from + `sigpwned/popular-names-by-country-dataset` (CC0) — see + ETHICS-AND-KNOWN-ISSUES.md's Names-by-Country Dataset section for + provenance. Deliberately not pre-paired or filtered down to just the + countries in `locations.json`: keeping the source shape (including + per-forename gender) intact means the loader can support more + countries later, or gender-aware persona/bio generation, without + re-sourcing data. ## 3. Policy / Strategy Layer @@ -83,10 +148,14 @@ Entirely new — no `includes/policy/` (or equivalent) directory exists today. - [ ] Extend the `DataGenerator` interface with `GenerateBeer`, `GenerateCheckin`, `GenerateRating` (today: only `GenerateBrewery` and `GenerateUser`). -- [ ] Implement `LlamaGenerator::GenerateUser` for real. It currently - returns a hardcoded `{"test_user", "This is a test user profile from - {locale}."}` regardless of input — see the `// TODO` at the top of - `src/data_generation/llama/generate_user.cc`. +- [x] Implement `LlamaGenerator::GenerateUser` for real, with a retry loop + mirroring `GenerateBrewery` (GBNF grammar, `ValidateUserJson`, up to 3 + attempts with corrective feedback) and a new + `prompts/USER_GENERATION.md`. Changed the `DataGenerator::GenerateUser` + signature to + `(city : const EnrichedCity&, persona : const UserPersona&, name : const Name&) : UserResult`, + matching what the activity diagram actually passes. `MockGenerator::GenerateUser` + updated to match the new signature too. - [ ] Implement `MockGenerator::GenerateBeer` / `GenerateCheckin` / `GenerateRating`. - [ ] Add `IPromptFormatter::ExpectedArchitecture()` and @@ -100,12 +169,19 @@ Entirely new — no `includes/policy/` (or equivalent) directory exists today. `tooling/pipeline/includes/services/database/`, `src/services/sqlite/`. -- [ ] Extend `IExportService` with `ProcessBeer`, `ProcessUser`, - `ProcessCheckin`, `ProcessRating`, `ProcessFollow` (today only - `ProcessRecord(const GeneratedBrewery&)` exists). -- [ ] Add `beers`, `users`, `checkins`, `ratings`, `follows` tables to - `SqliteExportService::InitializeSchema()` — see - `kCreateLocationsTableSql` / `kCreateBreweriesTableSql` in +- [x] `IExportService::ProcessRecord(const UserRecord&)` and + `SqliteExportService`'s `users` table (see + `kCreateUsersTableSql` / `kInsertUserSql` in + `includes/services/database/sqlite_statement_helpers.h`) are + implemented — `GenerateUsers()` exports every successful user + alongside its resolved `location_id`. +- [ ] Extend `IExportService` with `ProcessBeer`, `ProcessCheckin`, + `ProcessRating`, `ProcessFollow` (today `ProcessRecord(const + BreweryRecord&)` and `ProcessRecord(const UserRecord&)` exist). +- [ ] Add `beers`, `checkins`, `ratings`, `follows` tables to + `SqliteExportService::InitializeSchema()` (`locations`, `breweries`, + and `users` already exist) — see `kCreateLocationsTableSql` / + `kCreateBreweriesTableSql` / `kCreateUsersTableSql` in `includes/services/database/sqlite_statement_helpers.h` for the existing pattern to follow. - [ ] Add a `brewery_cache_` alongside the existing `location_cache_`, and @@ -151,7 +227,8 @@ Entirely new — no `includes/policy/` (or equivalent) directory exists today. ## 8. Fixtures / Build -- [ ] Author `personas.json` and `names-by-country.json` (see §2). +- [x] Author `personas.json`, `forenames-by-country.json`, and + `surnames-by-country.json` (see §2). - [ ] Fix the `beer-styles.json` build-tree gap: add it to the "Runtime Assets" `configure_file` step in `CMakeLists.txt` so native builds and the Docker image agree on what's available at runtime. diff --git a/docs/pipeline/diagrams/current/activity.puml b/docs/pipeline/diagrams/current/activity.puml index e3559d6..cd3e7b2 100644 --- a/docs/pipeline/diagrams/current/activity.puml +++ b/docs/pipeline/diagrams/current/activity.puml @@ -93,6 +93,77 @@ while (For each sampled Location?) is (Remaining cities) endif endwhile (Done) +|#EAF0E8|BiergartenPipelineOrchestrator| +:GenerateUsers(enriched_cities); + +|#E2EBDC|JsonLoader| +:LoadPersonas("personas.json"); +:LoadForenamesByCountry("forenames-by-country.json"); +:LoadSurnamesByCountry("surnames-by-country.json"); +note right + Each call is cached after its first parse. + MockCuratedDataService (--mocked) returns a + fixed in-memory dataset instead and skips + these three JSON files entirely. +end note + +|#EAF0E8|BiergartenPipelineOrchestrator| +while (For each EnrichedCity?) is (Remaining cities) + :SampleName(forenames_by_country,\n surnames_by_country, location.iso3166_1); + if (Names available for country?) then (no) + :Log warning, skip city; + else (yes) + :Sample UserPersona (uniform random); + + |#E5EDE1|DataGenerator| + if (Generator Mode) then (MockGenerator) + :DeterministicHash & Format; + else (LlamaGenerator) + :prompt_directory_->Load("USER_GENERATION"); + note right + Resolves to USER_GENERATION.md inside --prompt-dir. + end note + repeat + :Infer(system_prompt, user_prompt, max_tokens, kUserJsonGrammar); + :ValidateUserJson(raw, user); + if (Is JSON Valid?) then (yes) + break + else (no) + :Attempt++; + :Append validation error to retry prompt; + endif + repeat while (Attempt < 3?) is (yes) + endif + + |#EAF0E8|BiergartenPipelineOrchestrator| + if (Generation successful?) then (yes) + :BuildEmail(name, used_email_local_parts); + :GenerateDateOfBirth(rng); + note right + email and date_of_birth are generated + programmatically, never LLM-authored. + end note + + |#E0EAE0|SqliteExportService| + :ProcessRecord(UserRecord); + if (Location in cache?) then (yes) + :Reuse location_id; + else (no) + :Insert Location & Cache ID; + endif + :Insert User (FK: location_id); + + if (Exception caught during insert?) then (yes) + |#EAF0E8|BiergartenPipelineOrchestrator| + :Log warning "SQLite export failed"; + else (no) + endif + else (no) + :Log warning "Generation failed, skipping..."; + endif + endif +endwhile (Done) + |#EAF0E8|BiergartenPipelineOrchestrator| :GenerateBreweries(enriched_cities); diff --git a/docs/pipeline/diagrams/current/class.puml b/docs/pipeline/diagrams/current/class.puml index 76c3b74..4eef014 100644 --- a/docs/pipeline/diagrams/current/class.puml +++ b/docs/pipeline/diagrams/current/class.puml @@ -30,11 +30,14 @@ class BiergartenPipelineOrchestrator { - context_service_ : std::unique_ptr - generator_ : std::unique_ptr - exporter_ : std::unique_ptr + - curated_data_service_ : std::unique_ptr - application_options_ : ApplicationOptions - - generated_breweries_ : std::vector + - generated_breweries_ : std::vector + - generated_users_ : std::vector + Run() : bool - QueryCitiesWithCountries() : std::vector - GenerateBreweries(cities : std::span) : void + - GenerateUsers(cities : std::span) : void - LogResults() : void } @@ -113,13 +116,14 @@ class HttpWebClient { interface DataGenerator <> { + GenerateBrewery(location : const Location&, region_context : const std::string&) : BreweryResult - + GenerateUser(locale : const std::string&) : UserResult + + GenerateUser(city : const EnrichedCity&, persona : const UserPersona&, name : const Name&) : UserResult } class MockGenerator { - + GenerateBrewery(...) : BreweryResult - + GenerateUser(...) : UserResult + + GenerateBrewery(location : const Location&, region_context : const std::string&) : BreweryResult + + GenerateUser(city : const EnrichedCity&, persona : const UserPersona&, name : const Name&) : UserResult - DeterministicHash(location : const Location&) : size_t + - DeterministicHash(location : const Location&, persona : const UserPersona&, name : const Name&) : size_t } class LlamaGenerator { @@ -153,13 +157,49 @@ class PromptDirectory { + Load(key : std::string_view) : std::string } -class JsonLoader { - + {static} LoadLocations(filepath : const std::filesystem::path&) : std::vector +interface ICuratedDataService <> { + + LoadLocations(filepath : const std::filesystem::path&) : const std::vector& + + LoadPersonas(filepath : const std::filesystem::path&) : const std::vector& + + LoadForenamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map& + + LoadSurnamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map& } +class JsonLoader { + - cache_ : cache + + LoadLocations(filepath : const std::filesystem::path&) : const std::vector& + + LoadPersonas(filepath : const std::filesystem::path&) : const std::vector& + + LoadForenamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map& + + LoadSurnamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map& +} + +note right of JsonLoader + Each Load* method memoizes its result in + cache_ on first call; later calls on the + same instance return the cached value + without re-parsing. +end note + +class MockCuratedDataService { + - locations_ : std::vector + - personas_ : std::vector + - forenames_by_country_ : std::unordered_map + - surnames_by_country_ : std::unordered_map + + LoadLocations(filepath : const std::filesystem::path&) : const std::vector& + + LoadPersonas(filepath : const std::filesystem::path&) : const std::vector& + + LoadForenamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map& + + LoadSurnamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map& +} + +note right of MockCuratedDataService + Fixed 4-location / 3-persona dataset + (US, DE, FR, BE) used in --mocked runs; + filepath arguments are ignored. +end note + interface IExportService <> { + Initialize() : void - + ProcessRecord(brewery : const GeneratedBrewery&) : void + + ProcessRecord(brewery : const BreweryRecord&) : uint64_t + + ProcessRecord(user : const UserRecord&) : uint64_t + Finalize() : void } @@ -167,15 +207,18 @@ class SqliteExportService { - date_time_provider_ : std::unique_ptr - run_timestamp_utc_ : std::string - database_path_ : std::filesystem::path - - db_handle_ : sqlite3* - - insert_location_stmt_ : sqlite3_stmt* - - insert_brewery_stmt_ : sqlite3_stmt* + - db_handle_ : SqliteDatabaseHandle + - insert_location_stmt_ : SqliteStatementHandle + - insert_brewery_stmt_ : SqliteStatementHandle + - insert_user_stmt_ : SqliteStatementHandle - transaction_open_ : bool - location_cache_ : std::unordered_map + Initialize() : void - + ProcessRecord(brewery : const GeneratedBrewery&) : void + + ProcessRecord(brewery : const BreweryRecord&) : uint64_t + + ProcessRecord(user : const UserRecord&) : uint64_t + Finalize() : void - InitializeSchema() : void + - ResolveLocationId(location : const Location&) : sqlite3_int64 } interface IDateTimeProvider <> { @@ -191,6 +234,7 @@ BiergartenPipelineOrchestrator *-- ILogger : owns BiergartenPipelineOrchestrator *-- IEnrichmentService : owns BiergartenPipelineOrchestrator *-- DataGenerator : owns BiergartenPipelineOrchestrator *-- IExportService : owns +BiergartenPipelineOrchestrator *-- ICuratedDataService : owns LogEntry *-- LogLevel LogEntry *-- PipelinePhase @@ -215,7 +259,8 @@ LlamaGenerator *-- IPromptDirectory : uses IPromptFormatter <|.. Gemma4JinjaPromptFormatter : implements IPromptDirectory <|.. PromptDirectory : implements -BiergartenPipelineOrchestrator ..> JsonLoader : uses +ICuratedDataService <|.. JsonLoader : implements +ICuratedDataService <|.. MockCuratedDataService : implements IExportService <|.. SqliteExportService : implements SqliteExportService *-- IDateTimeProvider : owns diff --git a/docs/pipeline/diagrams/current/output/activity.svg b/docs/pipeline/diagrams/current/output/activity.svg index f827bab..b45b201 100644 --- a/docs/pipeline/diagrams/current/output/activity.svg +++ b/docs/pipeline/diagrams/current/output/activity.svg @@ -1 +1 @@ -The Biergarten Data Pipeline (Current — Synchronous Data Path)Create BoundedChannel<LogEntry> log_channelThe only concurrency in the current pipeline:a dedicated thread drains log_channel andforwards entries to spdlog for the entire run.Joined during shutdown after log_channel closes.Spawn log dispatcher thread(LogDispatcher::Run())ParseArguments(argc, argv)Log error / usage infonoAre arguments valid?yesInit OpenSSL global state & LlamaBackendStateBinds ILogger, IEnrichmentService, DataGenerator,IExportService, IPromptFormatter, WebClient basedon --mocked vs. model-backed mode.di::make_injector(...)injector.create<std::unique_ptr<BiergartenPipelineOrchestrator>>()Run() itself is synchronous — sampling, enrichment,generation, and export all happen on this thread.BiergartenPipelineOrchestrator::Run()Close log_channelJoin log dispatcher threadReturn 0Initialize SQLite exportQueryCitiesWithCountries()Lookup failed?yesnoLog warning, skip cityStore EnrichedCity{Location, region_context}Remaining citiesFor each sampled Location?DoneGenerateBreweries(enriched_cities)Generation successful?yesnoData loss is prevented per-record.The pipeline continues running.Log warning "SQLite export failed"Log warning "Generation failed, skipping..."GetUtcTimestamp() from SystemDateTimeProviderBuilds a fresh biergarten_seed_<UTC datetime>.sqlite filenameAppends a numeric suffix if the timestamp already existsOpens DB ConnectionExecutes Schema DDLBegins TransactionInitialize()ProcessRecord(GeneratedBrewery)Location in cache?yesnoReuse location_idInsert Location & Cache IDInsert Brewery (FK: location_id)yesException caught during insert?noCommits TransactionCloses Database ConnectionFinalize()JsonLoader::LoadLocations("locations.json")--location-count defaults to 10.std::ranges::sample(all_locations, --location-count)WikipediaEnrichmentService fetches a generic"brewing" extract and a "beer in {country}" extract(not a city/region-specific page). MockEnrichmentService(--mocked) returns an empty string instead.GetLocationContext(loc)Generator ModeMockGeneratorLlamaGeneratorDeterministicHash & FormatPrepareRegionContextResolves to BREWERY_GENERATION.md inside --prompt-dir.prompt_directory_->Load("BREWERY_GENERATION")Infer(system_prompt, user_prompt, max_tokens, kBreweryJsonGrammar)ValidateBreweryJson(raw, brewery)max_tokens is fixed across retries —it is not raised on truncation.Is JSON Valid?yesnoAttempt++Append validation error to retry promptAttempt < 3?yesRemaining citiesFor each EnrichedCity?Donemain.ccBiergartenPipelineOrchestratorSqliteExportServiceJsonLoaderIEnrichmentServiceDataGenerator \ No newline at end of file +The Biergarten Data Pipeline (Current — Synchronous Data Path)Create BoundedChannel<LogEntry> log_channelThe only concurrency in the current pipeline:a dedicated thread drains log_channel andforwards entries to spdlog for the entire run.Joined during shutdown after log_channel closes.Spawn log dispatcher thread(LogDispatcher::Run())ParseArguments(argc, argv)Log error / usage infonoAre arguments valid?yesInit OpenSSL global state & LlamaBackendStateBinds ILogger, IEnrichmentService, DataGenerator,IExportService, IPromptFormatter, WebClient basedon --mocked vs. model-backed mode.di::make_injector(...)injector.create<std::unique_ptr<BiergartenPipelineOrchestrator>>()Run() itself is synchronous — sampling, enrichment,generation, and export all happen on this thread.BiergartenPipelineOrchestrator::Run()Close log_channelJoin log dispatcher threadReturn 0Initialize SQLite exportQueryCitiesWithCountries()Lookup failed?yesnoLog warning, skip cityStore EnrichedCity{Location, region_context}Remaining citiesFor each sampled Location?DoneGenerateUsers(enriched_cities)SampleName(forenames_by_country,surnames_by_country, location.iso3166_1)Names available for country?noyesLog warning, skip citySample UserPersona (uniform random)Generation successful?yesnoBuildEmail(name, used_email_local_parts)email and date_of_birth are generatedprogrammatically, never LLM-authored.GenerateDateOfBirth(rng)Log warning "SQLite export failed"Log warning "Generation failed, skipping..."Remaining citiesFor each EnrichedCity?DoneGenerateBreweries(enriched_cities)Generation successful?yesnoData loss is prevented per-record.The pipeline continues running.Log warning "SQLite export failed"Log warning "Generation failed, skipping..."GetUtcTimestamp() from SystemDateTimeProviderBuilds a fresh biergarten_seed_<UTC datetime>.sqlite filenameAppends a numeric suffix if the timestamp already existsOpens DB ConnectionExecutes Schema DDLBegins TransactionInitialize()ProcessRecord(UserRecord)Location in cache?yesnoReuse location_idInsert Location & Cache IDInsert User (FK: location_id)yesException caught during insert?noProcessRecord(GeneratedBrewery)Location in cache?yesnoReuse location_idInsert Location & Cache IDInsert Brewery (FK: location_id)yesException caught during insert?noCommits TransactionCloses Database ConnectionFinalize()JsonLoader::LoadLocations("locations.json")--location-count defaults to 10.std::ranges::sample(all_locations, --location-count)LoadPersonas("personas.json")LoadForenamesByCountry("forenames-by-country.json")Each call is cached after its first parse.MockCuratedDataService (--mocked) returns afixed in-memory dataset instead and skipsthese three JSON files entirely.LoadSurnamesByCountry("surnames-by-country.json")WikipediaEnrichmentService fetches a generic"brewing" extract and a "beer in {country}" extract(not a city/region-specific page). MockEnrichmentService(--mocked) returns an empty string instead.GetLocationContext(loc)Generator ModeMockGeneratorLlamaGeneratorDeterministicHash & FormatResolves to USER_GENERATION.md inside --prompt-dir.prompt_directory_->Load("USER_GENERATION")Infer(system_prompt, user_prompt, max_tokens, kUserJsonGrammar)ValidateUserJson(raw, user)Is JSON Valid?yesnoAttempt++Append validation error to retry promptAttempt < 3?yesGenerator ModeMockGeneratorLlamaGeneratorDeterministicHash & FormatPrepareRegionContextResolves to BREWERY_GENERATION.md inside --prompt-dir.prompt_directory_->Load("BREWERY_GENERATION")Infer(system_prompt, user_prompt, max_tokens, kBreweryJsonGrammar)ValidateBreweryJson(raw, brewery)max_tokens is fixed across retries —it is not raised on truncation.Is JSON Valid?yesnoAttempt++Append validation error to retry promptAttempt < 3?yesRemaining citiesFor each EnrichedCity?Donemain.ccBiergartenPipelineOrchestratorSqliteExportServiceJsonLoaderIEnrichmentServiceDataGenerator \ No newline at end of file diff --git a/docs/pipeline/diagrams/current/output/class.svg b/docs/pipeline/diagrams/current/output/class.svg index 4f7cb8e..53d928a 100644 --- a/docs/pipeline/diagrams/current/output/class.svg +++ b/docs/pipeline/diagrams/current/output/class.svg @@ -1 +1 @@ -The Biergarten Data Pipeline - Class DiagramBiergartenPipelineOrchestratorlogger_ : std::shared_ptr<ILogger>context_service_ : std::unique_ptr<IEnrichmentService>generator_ : std::unique_ptr<DataGenerator>exporter_ : std::unique_ptr<IExportService>application_options_ : ApplicationOptionsgenerated_breweries_ : std::vector<GeneratedBrewery>Run() : boolQueryCitiesWithCountries() : std::vector<Location>GenerateBreweries(cities : std::span<const EnrichedCity>) : voidLogResults() : void«enumeration»LogLevelDebugInfoWarnError«enumeration»PipelinePhaseStartupUserGenerationBreweryAndBeerGenerationCheckinGenerationRatingGenerationFollowGenerationTeardownLogDTOlevel : LogLevelphase : PipelinePhasemessage : std::stringLogEntrytimestamp : std::chrono::system_clock::time_pointorigin : std::source_locationthread_id : std::thread::idlevel : LogLevelphase : PipelinePhasemessage : std::string«interface»ILoggerLog(payload : LogDTO) : voidDoLog(entry : LogEntry) : voidLogProducerchannel_ : BoundedChannel<LogEntry>&DoLog(entry : LogEntry) : voidLogDispatcherchannel_ : BoundedChannel<LogEntry>&Run() : voidToSpdlogLevel(level) : spdlog::level::level_enum«interface»IEnrichmentServiceGetLocationContext(loc : const Location&) : std::stringMockEnrichmentServiceGetLocationContext(loc : const Location&) : std::stringWikipediaEnrichmentServiceclient_ : std::unique_ptr<WebClient>extract_cache_ : std::unordered_map<std::string, std::string>GetLocationContext(loc : const Location&) : std::stringFetchExtract(query : std::string_view) : std::string«interface»WebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::stringHttpWebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::string«interface»DataGeneratorGenerateBrewery(location : const Location&, region_context : const std::string&) : BreweryResultGenerateUser(locale : const std::string&) : UserResultMockGeneratorGenerateBrewery(...) : BreweryResultGenerateUser(...) : UserResultDeterministicHash(location : const Location&) : size_tLlamaGeneratormodel_ : ModelHandlecontext_ : ContextHandleprompt_formatter_ : std::unique_ptr<IPromptFormatter>prompt_directory_ : std::unique_ptr<IPromptDirectory>rng_ : std::mt19937GenerateBrewery(...) : BreweryResultGenerateUser(...) : UserResultLoad(model_path : const std::string&) : voidInfer(...) : std::stringInferFormatted(...) : std::string«interface»IPromptFormatterFormat(system_prompt : std::string_view, user_prompt : std::string_view) : std::stringGemma4JinjaPromptFormatterFormat(system_prompt : std::string_view, user_prompt : std::string_view) : std::string«interface»IPromptDirectoryLoad(key : std::string_view) : std::stringPromptDirectoryprompt_dir_ : std::filesystem::pathcache_ : std::unordered_map<std::string, std::string>Load(key : std::string_view) : std::stringJsonLoaderLoadLocations(filepath : const std::filesystem::path&) : std::vector<Location>«interface»IExportServiceInitialize() : voidProcessRecord(brewery : const GeneratedBrewery&) : voidFinalize() : voidSqliteExportServicedate_time_provider_ : std::unique_ptr<IDateTimeProvider>run_timestamp_utc_ : std::stringdatabase_path_ : std::filesystem::pathdb_handle_ : sqlite3*insert_location_stmt_ : sqlite3_stmt*insert_brewery_stmt_ : sqlite3_stmt*transaction_open_ : boollocation_cache_ : std::unordered_map<std::string, sqlite3_int64>Initialize() : voidProcessRecord(brewery : const GeneratedBrewery&) : voidFinalize() : voidInitializeSchema() : void«interface»IDateTimeProviderGetUtcTimestamp() : std::stringSystemDateTimeProviderGetUtcTimestamp() : std::stringownsownsownsownsimplementsemitsconsumesimplementsimplementsownsimplementsimplementsimplementsusesusesimplementsimplementsusesimplementsownsimplements \ No newline at end of file +The Biergarten Data Pipeline - Class DiagramBiergartenPipelineOrchestratorlogger_ : std::shared_ptr<ILogger>context_service_ : std::unique_ptr<IEnrichmentService>generator_ : std::unique_ptr<DataGenerator>exporter_ : std::unique_ptr<IExportService>curated_data_service_ : std::unique_ptr<ICuratedDataService>application_options_ : ApplicationOptionsgenerated_breweries_ : std::vector<BreweryRecord>generated_users_ : std::vector<UserRecord>Run() : boolQueryCitiesWithCountries() : std::vector<Location>GenerateBreweries(cities : std::span<const EnrichedCity>) : voidGenerateUsers(cities : std::span<const EnrichedCity>) : voidLogResults() : void«enumeration»LogLevelDebugInfoWarnError«enumeration»PipelinePhaseStartupUserGenerationBreweryAndBeerGenerationCheckinGenerationRatingGenerationFollowGenerationTeardownLogDTOlevel : LogLevelphase : PipelinePhasemessage : std::stringLogEntrytimestamp : std::chrono::system_clock::time_pointorigin : std::source_locationthread_id : std::thread::idlevel : LogLevelphase : PipelinePhasemessage : std::string«interface»ILoggerLog(payload : LogDTO) : voidDoLog(entry : LogEntry) : voidLogProducerchannel_ : BoundedChannel<LogEntry>&DoLog(entry : LogEntry) : voidLogDispatcherchannel_ : BoundedChannel<LogEntry>&Run() : voidToSpdlogLevel(level) : spdlog::level::level_enum«interface»IEnrichmentServiceGetLocationContext(loc : const Location&) : std::stringMockEnrichmentServiceGetLocationContext(loc : const Location&) : std::stringWikipediaEnrichmentServiceclient_ : std::unique_ptr<WebClient>extract_cache_ : std::unordered_map<std::string, std::string>GetLocationContext(loc : const Location&) : std::stringFetchExtract(query : std::string_view) : std::string«interface»WebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::stringHttpWebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::string«interface»DataGeneratorGenerateBrewery(location : const Location&, region_context : const std::string&) : BreweryResultGenerateUser(city : const EnrichedCity&, persona : const UserPersona&, name : const Name&) : UserResultMockGeneratorGenerateBrewery(location : const Location&, region_context : const std::string&) : BreweryResultGenerateUser(city : const EnrichedCity&, persona : const UserPersona&, name : const Name&) : UserResultDeterministicHash(location : const Location&) : size_tDeterministicHash(location : const Location&, persona : const UserPersona&, name : const Name&) : size_tLlamaGeneratormodel_ : ModelHandlecontext_ : ContextHandleprompt_formatter_ : std::unique_ptr<IPromptFormatter>prompt_directory_ : std::unique_ptr<IPromptDirectory>rng_ : std::mt19937GenerateBrewery(...) : BreweryResultGenerateUser(...) : UserResultLoad(model_path : const std::string&) : voidInfer(...) : std::stringInferFormatted(...) : std::string«interface»IPromptFormatterFormat(system_prompt : std::string_view, user_prompt : std::string_view) : std::stringGemma4JinjaPromptFormatterFormat(system_prompt : std::string_view, user_prompt : std::string_view) : std::string«interface»IPromptDirectoryLoad(key : std::string_view) : std::stringPromptDirectoryprompt_dir_ : std::filesystem::pathcache_ : std::unordered_map<std::string, std::string>Load(key : std::string_view) : std::string«interface»ICuratedDataServiceLoadLocations(filepath : const std::filesystem::path&) : const std::vector<Location>&LoadPersonas(filepath : const std::filesystem::path&) : const std::vector<UserPersona>&LoadForenamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map<std::string, forename_list>&LoadSurnamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map<std::string, surname_list>&JsonLoadercache_ : cacheLoadLocations(filepath : const std::filesystem::path&) : const std::vector<Location>&LoadPersonas(filepath : const std::filesystem::path&) : const std::vector<UserPersona>&LoadForenamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map<std::string, forename_list>&LoadSurnamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map<std::string, surname_list>&Each Load* method memoizes its result incache_ on first call; later calls on thesame instance return the cached valuewithout re-parsing.MockCuratedDataServicelocations_ : std::vector<Location>personas_ : std::vector<UserPersona>forenames_by_country_ : std::unordered_map<std::string, forename_list>surnames_by_country_ : std::unordered_map<std::string, surname_list>LoadLocations(filepath : const std::filesystem::path&) : const std::vector<Location>&LoadPersonas(filepath : const std::filesystem::path&) : const std::vector<UserPersona>&LoadForenamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map<std::string, forename_list>&LoadSurnamesByCountry(filepath : const std::filesystem::path&) : const std::unordered_map<std::string, surname_list>&Fixed 4-location / 3-persona dataset(US, DE, FR, BE) used in --mocked runs;filepath arguments are ignored.«interface»IExportServiceInitialize() : voidProcessRecord(brewery : const BreweryRecord&) : uint64_tProcessRecord(user : const UserRecord&) : uint64_tFinalize() : voidSqliteExportServicedate_time_provider_ : std::unique_ptr<IDateTimeProvider>run_timestamp_utc_ : std::stringdatabase_path_ : std::filesystem::pathdb_handle_ : SqliteDatabaseHandleinsert_location_stmt_ : SqliteStatementHandleinsert_brewery_stmt_ : SqliteStatementHandleinsert_user_stmt_ : SqliteStatementHandletransaction_open_ : boollocation_cache_ : std::unordered_map<std::string, sqlite3_int64>Initialize() : voidProcessRecord(brewery : const BreweryRecord&) : uint64_tProcessRecord(user : const UserRecord&) : uint64_tFinalize() : voidInitializeSchema() : voidResolveLocationId(location : const Location&) : sqlite3_int64«interface»IDateTimeProviderGetUtcTimestamp() : std::stringSystemDateTimeProviderGetUtcTimestamp() : std::stringownsownsownsownsownsimplementsemitsconsumesimplementsimplementsownsimplementsimplementsimplementsusesusesimplementsimplementsimplementsimplementsimplementsownsimplements \ No newline at end of file diff --git a/docs/pipeline/diagrams/planned/activity.puml b/docs/pipeline/diagrams/planned/activity.puml index a6f1d18..67cabae 100644 --- a/docs/pipeline/diagrams/planned/activity.puml +++ b/docs/pipeline/diagrams/planned/activity.puml @@ -43,10 +43,18 @@ fork again :EnrichmentService::PreWarmLocationCache(sampled_locations); end fork fork - :JsonLoader::LoadNamesByCountry("names-by-country.json"); + :JsonLoader::LoadForenamesByCountry(\n "forenames-by-country.json"); +fork again + :JsonLoader::LoadSurnamesByCountry(\n "surnames-by-country.json"); fork again :JsonLoader::LoadPersonas("personas.json"); end fork +note right + Each call is memoized after its first parse + (implemented today). MockCuratedDataService + returns a fixed in-memory dataset instead + under --mocked, skipping these JSON files. +end note ' ═══════════════════════════════════════════ ' PHASE 0 — USER GENERATION @@ -82,11 +90,15 @@ fork again ibu_preference, checkin_weight. end note - :NamesByCountry::SampleName(\n location.iso3166_1); + :SampleName(forenames_by_country,\n surnames_by_country, location.iso3166_1, rng); note right Deterministic lookup -- no LLM involved. - Name selected from pre-keyed table + Free function (implemented today in + generate_users.cc), not a class method. + Name selected from pre-keyed maps and passed into the generation prompt. + Skips the city if either map has no + entry for iso3166_1. end note :GenerateUser(enriched_city, persona, sampled_name)\nvia DataGenerator; diff --git a/docs/pipeline/diagrams/planned/class.puml b/docs/pipeline/diagrams/planned/class.puml index 0ad1e8b..68876ef 100644 --- a/docs/pipeline/diagrams/planned/class.puml +++ b/docs/pipeline/diagrams/planned/class.puml @@ -67,11 +67,50 @@ package "Domain: Models" { } class UserResult { + + first_name : std::string + + last_name : std::string + + gender : std::string + username : std::string + bio : std::string + activity_weight : float } + class Name { + + first_name : std::string + + last_name : std::string + + gender : std::string + } + + class ForenameEntry { + + name : std::string + + gender : std::string + } + + note right of ForenameEntry + forename_list = std::unordered_set + surname_list = std::unordered_set + (aliases declared in curated_data_service.h). + ICuratedDataService::LoadForenamesByCountry() / + LoadSurnamesByCountry() each return a flat + std::unordered_map + or keyed by ISO + 3166-1 country code -- no NamesByCountry + wrapper class. SampleName(forenames_by_country, + surnames_by_country, iso3166_1, rng) is a free + function, not a method, so it can be called by + any per-city worker without owning the maps. + Sourced from popular-names-by-country-dataset + (CC0) -- see ETHICS-AND-KNOWN-ISSUES.md. Gender + is preserved per forename so it can be threaded + through to persona/bio generation later; surnames + carry no gender in the source data. Pairing + happens at sample time, not at fixture-authoring + time, so no information from the source dataset + is discarded up front. + end note + + ForenameEntry ..> Name : SampleName() produces + class CheckinResult { + checked_in_at : std::string + note : std::string @@ -110,9 +149,20 @@ package "Domain: Models" { + user_id : uint64_t + location : Location + user : UserResult + + email : std::string + + date_of_birth : std::string + + password : std::string + metadata : GenerationMetadata } + note right of GeneratedUser + email, date_of_birth, and password are + programmatically generated by the orchestrator + (not LLM-authored) so a downstream auth-account + seeding consumer can register real accounts from + this export. See ROADMAP.md §1. + end note + class GeneratedCheckin { + checkin_id : uint64_t + user_id : uint64_t @@ -318,20 +368,43 @@ package "Infrastructure: Pipeline Channel" { package "Infrastructure: Data Preloading" { - interface DataPreloader <> { - + LoadLocations(filepath : const std::filesystem::path&) : std::vector - + LoadBeerStyles(filepath : const std::filesystem::path&) : std::vector - + LoadPersonas(filepath : const std::filesystem::path&) : std::vector - + LoadNamesByCountry(filepath : const std::filesystem::path&) : NamesByCountry + interface ICuratedDataService <> { + + LoadLocations(filepath : const std::filesystem::path&) : const std::vector& + + LoadBeerStyles(filepath : const std::filesystem::path&) : const std::vector& + + LoadPersonas(filepath : const std::filesystem::path&) : const std::vector& + + LoadForenamesByCountry(forenames_filepath : const std::filesystem::path&) : const std::unordered_map& + + LoadSurnamesByCountry(surnames_filepath : const std::filesystem::path&) : const std::unordered_map& } class JsonLoader { - + LoadLocations(filepath : const std::filesystem::path&) : std::vector - + LoadBeerStyles(filepath : const std::filesystem::path&) : std::vector - + LoadPersonas(filepath : const std::filesystem::path&) : std::vector - + LoadNamesByCountry(filepath : const std::filesystem::path&) : NamesByCountry + + LoadLocations(filepath : const std::filesystem::path&) : const std::vector& + + LoadBeerStyles(filepath : const std::filesystem::path&) : const std::vector& + + LoadPersonas(filepath : const std::filesystem::path&) : const std::vector& + + LoadForenamesByCountry(forenames_filepath : const std::filesystem::path&) : const std::unordered_map& + + LoadSurnamesByCountry(surnames_filepath : const std::filesystem::path&) : const std::unordered_map& } + note right of JsonLoader + Each Load* call is memoized after its first + parse -- implemented today, ahead of the rest + of this package (LoadBeerStyles is still planned). + end note + + class MockCuratedDataService { + + LoadLocations(filepath : const std::filesystem::path&) : const std::vector& + + LoadBeerStyles(filepath : const std::filesystem::path&) : const std::vector& + + LoadPersonas(filepath : const std::filesystem::path&) : const std::vector& + + LoadForenamesByCountry(forenames_filepath : const std::filesystem::path&) : const std::unordered_map& + + LoadSurnamesByCountry(surnames_filepath : const std::filesystem::path&) : const std::unordered_map& + } + + note right of MockCuratedDataService + Fixed in-memory dataset used in --mocked mode, + implemented today for Locations/Personas/ + Forenames/Surnames; would need a LoadBeerStyles + fixture too once that method is implemented. + end note + } package "Infrastructure: Enrichment" { @@ -380,7 +453,7 @@ package "Infrastructure: Data Generation" { interface DataGenerator <> { + GenerateBrewery(location : const Location&,\n context : const LocationContext&) : BreweryResult + GenerateBeer(brewery_id : uint64_t,\n location : const Location&,\n context : const LocationContext&,\n style : const BeerStyle&) : BeerResult - + GenerateUser(location : const Location&) : UserResult + + GenerateUser(city : const EnrichedCity&,\n persona : const UserPersona&,\n name : const Name&) : UserResult + GenerateCheckin(user : const GeneratedUser&,\n brewery : const GeneratedBrewery&,\n timestamp : const std::string&) : CheckinResult + GenerateRating(user : const GeneratedUser&,\n beer : const GeneratedBeer&,\n checkin_id : uint64_t) : RatingResult } @@ -473,7 +546,7 @@ package "Infrastructure: Data Export" { } class BiergartenPipelineOrchestrator { - - preloader_ : std::unique_ptr + - curated_data_service_ : std::unique_ptr - enrichment_service_ : std::unique_ptr - generator_ : std::unique_ptr - logger_ : std::unique_ptr @@ -501,7 +574,7 @@ class BiergartenPipelineOrchestrator { } ' --- Orchestration Aggregations (Services & Strategies) --- -BiergartenPipelineOrchestrator *-- DataPreloader +BiergartenPipelineOrchestrator *-- ICuratedDataService BiergartenPipelineOrchestrator *-- EnrichmentService BiergartenPipelineOrchestrator *-- DataGenerator BiergartenPipelineOrchestrator *-- ExportService @@ -520,7 +593,8 @@ BiergartenPipelineOrchestrator *-- "0..*" GeneratedCheckin : checkin_pool_ BiergartenPipelineOrchestrator *-- "0..*" GeneratedFollow : follow_pool_ ' --- Interfaces & Implementations --- -DataPreloader <|.. JsonLoader +ICuratedDataService <|.. JsonLoader +ICuratedDataService <|.. MockCuratedDataService Logger <|.. PipelineLogger ContextStrategy <|.. BreweryContextStrategy ContextStrategy <|.. BeerContextStrategy diff --git a/docs/pipeline/diagrams/planned/output/biergarten_activity.svg b/docs/pipeline/diagrams/planned/output/biergarten_activity.svg index 0571a83..e565241 100644 --- a/docs/pipeline/diagrams/planned/output/biergarten_activity.svg +++ b/docs/pipeline/diagrams/planned/output/biergarten_activity.svg @@ -1 +1 @@ -The Biergarten Data Pipeline — Activity DiagramThe Biergarten Data Pipeline — Activity DiagramParseArguments(argc, argv)spdlog::erroryesInvalid args?noInit CurlGlobalState & LlamaBackendStateBuild DI injectorOpens SQLite connection.Begins a single transactioncovering all five fixture types.Initialize SqliteExportServiceCreate BoundedChannel<LogEntry> log_chLog worker drains log_ch for theentire pipeline lifetime.All workers emit LogEntry structsvia PipelineLogger -- never spdlog directly.Spawn Log Worker threadBiergartenPipelineOrchestrator::Run()COMMIT covers all five fixture types.Finalize SqliteExportServiceClose log_chDrain guarantees no LogEntry isdropped at shutdown.Join Log Workerspdlog::info "Pipeline complete in X ms"JsonLoader::LoadBeerStyles("beer-styles.json")EnrichmentService::PreWarmBeerStyleCache(beer_styles)JsonLoader::LoadLocations("locations.json")EnrichmentService::PreWarmLocationCache(sampled_locations)JsonLoader::LoadNamesByCountry("names-by-country.json")JsonLoader::LoadPersonas("personas.json")RunUserPhase(sampled_locations)Create BoundedChannels(loc_ch, exp_ch)Loop: Send Locations -> loc_chProducer closes loc_ch.LLM Worker while loopterminates on empty + closed.Close loc_chJoin LLM Worker, SQLite WorkerRunBreweryPhase(sampled_locations)Create BoundedChannels(loc_ch, exp_ch)Loop: Send Locations -> loc_chClose loc_chbrewery_pool_ is now fully populated.Phase 1b may begin.Join LLM Worker, SQLite WorkerRunBeerPhase()Create BoundedChannels(brew_ch, exp_ch)Loop: Send Breweries -> brew_chClose brew_chBoth brewery_pool_ and beer_pool_are now completely populated.Join LLM Worker, SQLite WorkerRunCheckinPhase()Weights seeded from each user'spersona.checkin_weight. J-curve profileemerges from persona distribution.ICheckinDistributionStrategy::AssignActivityWeights(user_pool_)CheckinsForUser(user, brewery_pool_.size())TimestampFor(user, index)Select brewery from brewery_pool_GenerateCheckin(user, brewery, timestamp)via DataGeneratorProcessCheckin(checkin)PipelineLogger::Log(Info, CheckinGeneration,nullopt, checkin_id, "sqlite")Append -> checkin_pool_remainingFor each checkin index?doneremainingFor each GeneratedUser in user_pool_?doneBeer selection biased byuser.persona.style_affinities and abv_range.Rating skew modulated per persona.RunRatingPhase()Match brewery_id, select beer from beer_pool_(same brewery_id, biased by persona affinities)Beer exists for brewery?yesnoGenerateRating(user, beer, checkin_id)via DataGeneratorProcessRating(rating)PipelineLogger::Log(Info, RatingGeneration,nullopt, rating_id, "sqlite")PipelineLogger::Log(Warn, RatingGeneration,nullopt, brewery_id, "sqlite")Skip -- brewery has no beersremainingFor each GeneratedCheckin in checkin_pool_?doneReceive LocationGuaranteed cache hit from startup.GetLocationContextFromCache(location)Guaranteed cache hit from startup.Returns a Persona struct carryingstyle_affinities, abv_range,ibu_preference, checkin_weight.IPersonaSelectionStrategy::SelectPersona(personas_palette_)Deterministic lookup -- no LLM involved.Name selected from pre-keyed tableand passed into the generation prompt.NamesByCountry::SampleName(location.iso3166_1)LLM receives: EnrichedCity context + personadescription + sampled name. Generatesbio and preference signals groundedin locale and persona.GenerateUser(enriched_city, persona, sampled_name)via DataGeneratorPipelineLogger::Log(Info, UserGeneration,city, user_id, "llm")Send GeneratedUser -> exp_chyesloc_ch has items?noProducer closes exp_ch.SQLite Worker while loopterminates on empty + closed.Close exp_chReceive LocationGuaranteed cache hit from startup.GetLocationContextFromCache(location)KV cache stays warm across allbrewery generations -- system promptdoes not change within this phase.GenerateBrewery(enriched_city, context)via DataGeneratorPipelineLogger::Log(Info,BreweryGeneration,city, brewery_id, "llm")Send GeneratedBrewery -> exp_chyesloc_ch has items?noClose exp_chReceive GeneratedBreweryIBeerSelectionStrategy::SelectStyles(brewery, beer_style_palette_)Guaranteed cache hit from startup.KV cache stays warm across allbeer generations -- system promptdoes not change within this phase.GetStyleContextFromCache(style)GenerateBeer(brewery, style_context)via DataGeneratorAttach GeneratedBeer to bundleremainingFor each selected BeerStyle?donePipelineLogger::Log(Info,BeerGeneration,city, brewery_id, "llm")Send BeersBundle -> exp_chyesbrew_ch has items?noClose exp_chReceive GeneratedUserProcessUser(user)PipelineLogger::Log(Info, UserGeneration,city, user_id, "sqlite")Append -> user_pool_yesexp_ch has items?noReceive GeneratedBreweryProcessBrewery(brewery)PipelineLogger::Log(Info,BreweryGeneration,city, brewery_id, "sqlite")Append -> brewery_pool_yesexp_ch has items?noReceive BeersBundleSet beer.brewery_id from bundleProcessBeer(beer)Append -> beer_pool_remainingFor each beer in bundle?donePipelineLogger::Log(Info,BeerGeneration,city, brewery_id, "sqlite")yesexp_ch has items?noMainBiergartenPipelineOrchestrator::Run()OrchestratorLLM WorkerSQLite Worker \ No newline at end of file +The Biergarten Data Pipeline — Activity DiagramParseArguments(argc, argv)spdlog::erroryesInvalid args?noInit OpenSSL global state & LlamaBackendStateBuild DI injectorOpens SQLite connection.(Transactions are now managedper-phase via batching).Initialize SqliteExportServiceCreate BoundedChannel<LogEntry> log_chLog worker drains log_ch for theentire pipeline lifetime.All workers emit LogEntry structsvia PipelineLogger -- never spdlog directly.Spawn Log Worker threadBiergartenPipelineOrchestrator::Run()spdlog::info "Pipeline complete in X ms"Drain guarantees no LogEntry isdropped at shutdown.Join Log WorkerJsonLoader::LoadBeerStyles("beer-styles.json")EnrichmentService::PreWarmBeerStyleCache(beer_styles)JsonLoader::LoadLocations("locations.json")EnrichmentService::PreWarmLocationCache(sampled_locations)Each call is memoized after its first parse(implemented today). MockCuratedDataServicereturns a fixed in-memory dataset insteadunder --mocked, skipping these JSON files.JsonLoader::LoadForenamesByCountry("forenames-by-country.json")JsonLoader::LoadSurnamesByCountry("surnames-by-country.json")JsonLoader::LoadPersonas("personas.json")RunUserPhase(sampled_locations)Create BoundedChannels(loc_ch, exp_ch)Loop: Send Locations -> loc_chProducer closes loc_ch.LLM Worker while loopterminates on empty + closed.Close loc_chJoin LLM Worker, SQLite WorkerRunBreweryPhase(sampled_locations)Create BoundedChannels(loc_ch, exp_ch)Loop: Sample User from user_pool_and pair with LocationSend BreweryTask(Location, User) -> loc_chClose loc_chbrewery_pool_ is now fully populated.Phase 1b may begin.Join LLM Worker, SQLite WorkerRunBeerPhase()Create BoundedChannels(brew_ch, exp_ch)Loop: Send Breweries -> brew_chClose brew_chBoth brewery_pool_ and beer_pool_are now completely populated.Checkin and Follow phases maynow run in parallel.Join LLM Worker, SQLite WorkerRunCheckinPhase()Weights seeded from each user'spersona.checkin_weight. J-curve profileemerges from persona distribution.ICheckinDistributionStrategy::AssignActivityWeights(user_pool_)BEGIN TRANSACTIONCheckinsForUser(user, brewery_pool_.size())TimestampFor(user, index)Select brewery from brewery_pool_GenerateCheckin(user, brewery, timestamp)via DataGeneratorProcessCheckin(checkin)PipelineLogger::Log(Info, CheckinGeneration,nullopt, checkin_id, "sqlite")Append -> checkin_pool_COMMIT & BEGINyesBatch size reached?noremainingFor each checkin index?doneremainingFor each GeneratedUser in user_pool_?doneCOMMIT (Final)RunFollowPhase()For RandomFollowStrategy, weightsare uniform. For ActivityWeightedFollowStrategy,weights derived from user.activity_weightso high-activity users attract more followers.IFollowGenerationStrategy::AssignFollowWeights(user_pool_)BEGIN TRANSACTIONSelf-follow constraint (follower_id != followed_id)enforced here and at the DB schema level.IFollowGenerationStrategy::GenerateFollows(user_pool_)ProcessFollow(follow)PipelineLogger::Log(Info, FollowGeneration,nullopt, follower_id, "sqlite")Append -> follow_pool_COMMIT & BEGINyesBatch size reached?noremainingFor each GeneratedFollow?doneCOMMIT (Final)checkin_pool_ and follow_pool_are now fully populated.Rating phase may begin.Join CheckinPhase, FollowPhaseBeer selection biased byuser.persona.style_affinities and abv_range.Rating skew modulated per persona.RunRatingPhase()BEGIN TRANSACTIONMatch brewery_id, select beer from beer_pool_(same brewery_id, biased by persona affinities)Beer exists for brewery?yesnoGenerateRating(user, beer, checkin_id)via DataGeneratorProcessRating(rating)PipelineLogger::Log(Info, RatingGeneration,nullopt, rating_id, "sqlite")COMMIT & BEGINyesBatch size reached?noPipelineLogger::Log(Warn, RatingGeneration,nullopt, brewery_id, "sqlite")Skip -- brewery has no beersremainingFor each GeneratedCheckin in checkin_pool_?doneCOMMIT (Final)Safely closes the DB connection.Finalize SqliteExportServiceClose log_chReceive LocationGuaranteed cache hit from startup.GetLocationContextFromCache(location)Guaranteed cache hit from startup.Returns a Persona struct carryingstyle_affinities, abv_range,ibu_preference, checkin_weight.IPersonaSelectionStrategy::SelectPersona(personas_palette_)Deterministic lookup -- no LLM involved.Free function (implemented today ingenerate_users.cc), not a class method.Name selected from pre-keyed mapsand passed into the generation prompt.Skips the city if either map has noentry for iso3166_1.SampleName(forenames_by_country,surnames_by_country, location.iso3166_1, rng)LLM receives: EnrichedCity context + personadescription + sampled name. Generatesbio and preference signals groundedin locale and persona.GenerateUser(enriched_city, persona, sampled_name)via DataGeneratorPipelineLogger::Log(Info, UserGeneration,city, user_id, "llm")Send GeneratedUser -> exp_chyesloc_ch has items?noProducer closes exp_ch.SQLite Worker while loopterminates on empty + closed.Close exp_chReceive BreweryTask(Location, User)Guaranteed cache hit from startup.GetLocationContextFromCache(task.location)KV cache stays warm.Brewery is linked to the sampled owner_user_id.GenerateBrewery(enriched_city, context, task.user)via DataGeneratorPipelineLogger::Log(Info,BreweryGeneration,city, brewery_id, "llm")Send GeneratedBrewery -> exp_chyesloc_ch has items?noClose exp_chReceive GeneratedBreweryIBeerSelectionStrategy::SelectStyles(brewery, beer_style_palette_)Guaranteed cache hit from startup.KV cache stays warm across allbeer generations -- system promptdoes not change within this phase.GetStyleContextFromCache(style)GenerateBeer(brewery, style_context)via DataGeneratorAttach GeneratedBeer to bundleremainingFor each selected BeerStyle?donePipelineLogger::Log(Info,BeerGeneration,city, brewery_id, "llm")Send BeersBundle -> exp_chyesbrew_ch has items?noClose exp_chBEGIN TRANSACTIONReceive GeneratedUserProcessUser(user)PipelineLogger::Log(Info, UserGeneration,city, user_id, "sqlite")Append -> user_pool_COMMIT & BEGINyesBatch size reached?noyesexp_ch has items?noCOMMIT (Final)BEGIN TRANSACTIONReceive GeneratedBreweryProcessBrewery(brewery)PipelineLogger::Log(Info,BreweryGeneration,city, brewery_id, "sqlite")Append -> brewery_pool_COMMIT & BEGINyesBatch size reached?noyesexp_ch has items?noCOMMIT (Final)BEGIN TRANSACTIONReceive BeersBundleSet beer.brewery_id from bundleProcessBeer(beer)Append -> beer_pool_remainingFor each beer in bundle?donePipelineLogger::Log(Info,BeerGeneration,city, brewery_id, "sqlite")COMMIT & BEGINyesBatch size reached?noyesexp_ch has items?noCOMMIT (Final)MainBiergartenPipelineOrchestrator::Run()OrchestratorLLM WorkerSQLite Worker \ No newline at end of file diff --git a/docs/pipeline/diagrams/planned/output/class.svg b/docs/pipeline/diagrams/planned/output/class.svg index 559ce29..f796ee6 100644 --- a/docs/pipeline/diagrams/planned/output/class.svg +++ b/docs/pipeline/diagrams/planned/output/class.svg @@ -1 +1 @@ -DomainDomain ModelsDomain: Application ConfigurationDomain PolicyInfrastructureLoggingPipeline ChannelData PreloadingEnrichmentData GenerationData ExportLocationcity : std::stringstate_province : std::stringiso3166_2 : std::stringcountry : std::stringiso3166_1 : std::stringlocal_languages : std::vector<std::string>latitude : doublelongitude : doubleLocationContexttext : std::stringcompleteness : Completenesschar_count : size_tCompletenessFullPartialAbsentEnrichedCitylocation : Locationcontext : LocationContextBeerStylename : std::stringdescription : std::stringmin_abv : floatmax_abv : floatmin_ibu : intmax_ibu : intBreweryResultname_en : std::stringdescription_en : std::stringname_local : std::stringdescription_local : std::stringBeerResultname_en : std::stringdescription_en : std::stringname_local : std::stringdescription_local : std::stringstyle : std::stringabv : floatibu : intUserResultusername : std::stringbio : std::stringactivity_weight : floatCheckinResultchecked_in_at : std::stringnote : std::stringRatingResultscore : floatnote : std::stringGeneratedBrewerybrewery_id : sqlite3_int64location : Locationbrewery : BreweryResultcontext_completeness : LocationContext::Completenessgenerated_at : std::stringGeneratedBeerbeer_id : sqlite3_int64brewery_id : sqlite3_int64location : Locationstyle : BeerStylebeer : BeerResultgenerated_at : std::stringGeneratedUseruser_id : sqlite3_int64location : Locationuser : UserResultgenerated_at : std::stringGeneratedCheckincheckin_id : sqlite3_int64user_id : sqlite3_int64brewery_id : sqlite3_int64checkin : CheckinResultgenerated_at : std::stringGeneratedRatinguser_id : sqlite3_int64beer_id : sqlite3_int64checkin_id : sqlite3_int64rating : RatingResultgenerated_at : std::stringSamplingOptionstemperature : float = 1.0Ftop_p : float = 0.95Ftop_k : uint32_t = 64n_ctx : uint32_t = 8192seed : int = -1GeneratorOptionsmodel_path : std::filesystem::pathuse_mocked : bool = falsesampling : SamplingOptionsPipelineOptionsoutput_path : std::filesystem::pathlog_path : std::filesystem::pathApplicationOptionsgenerator : GeneratorOptionspipeline : PipelineOptions«interface»ContextStrategyQueriesFor(loc : const Location&) : std::vector<std::string>MaxContextChars() : size_tBreweryContextStrategyQueriesFor(loc : const Location&) : std::vector<std::string>MaxContextChars() : size_tBeerContextStrategyQueriesFor(loc : const Location&) : std::vector<std::string>MaxContextChars() : size_t«interface»SamplingStrategySample(locations : const std::vector<Location>&) : std::vector<Location>UniformSamplingStrategysample_size_ : size_tSample(locations : const std::vector<Location>&) : std::vector<Location>«interface»BeerSelectionStrategySelectStyles(brewery : const GeneratedBrewery&,palette : std::span<const BeerStyle>) : std::vector<BeerStyle>RandomBeerSelectionStrategyrng_ : std::mt19937min_beers_ : size_tmax_beers_ : size_tSelectStyles(brewery : const GeneratedBrewery&,palette : std::span<const BeerStyle>) : std::vector<BeerStyle>«interface»CheckinDistributionStrategyAssignActivityWeights(users : std::vector<GeneratedUser>&) : voidCheckinsForUser(user : const GeneratedUser&,brewery_count : size_t) : size_tTimestampFor(user : const GeneratedUser&,index : size_t) : std::stringJCurveCheckinStrategyrng_ : std::mt19937AssignActivityWeights(users : std::vector<GeneratedUser>&) : voidCheckinsForUser(user : const GeneratedUser&,brewery_count : size_t) : size_tTimestampFor(user : const GeneratedUser&,index : size_t) : std::stringLogLevelDebugInfoWarnErrorPipelinePhaseStartupUserGenerationBreweryAndBeerGenerationCheckinGenerationRatingGenerationTeardownLogEntrytimestamp : std::chrono::system_clock::time_pointlevel : LogLevelphase : PipelinePhasemessage : std::stringcity : std::optional<std::string>entity_id : std::optional<std::string>worker : std::optional<std::string>«interface»LoggerLog(level, phase, message,city, entity_id, worker) : voidPipelineLoggerlog_ch_ : BoundedChannel<LogEntry>&Log(level, phase, message,city, entity_id, worker) : voidLogWorkerlog_ch_ : BoundedChannel<LogEntry>&Run() : voidFormatTimestamp(tp) : std::stringToSpdlogLevel(level) : spdlog::level::level_enumToString(phase) : std::stringBoundedChannelTqueue_ : std::queue<T>mutex_ : std::mutexnot_full_ : std::condition_variablenot_empty_ : std::condition_variablecapacity_ : size_tclosed_ : boolSend(item : T) : voidReceive() : std::optional<T>Close() : void«interface»DataPreloaderLoadLocations(filepath : const std::filesystem::path&) : std::vector<Location>LoadBeerStyles(filepath : const std::filesystem::path&) : std::vector<BeerStyle>LoadPersonas(filepath : const std::filesystem::path&) : std::vector<Persona>LoadNamesByCountry(filepath : const std::filesystem::path&) : NamesByCountryJsonLoaderLoadLocations(filepath : const std::filesystem::path&) : std::vector<Location>LoadBeerStyles(filepath : const std::filesystem::path&) : std::vector<BeerStyle>LoadPersonas(filepath : const std::filesystem::path&) : std::vector<Persona>LoadNamesByCountry(filepath : const std::filesystem::path&) : NamesByCountry«interface»EnrichmentServiceGetLocationContext(loc : const Location&,strategy : const ContextStrategy&) : LocationContextWikipediaServiceclient_ : std::unique_ptr<WebClient>extract_cache_ : std::unordered_map<std::string, std::string>GetLocationContext(loc : const Location&,strategy : const ContextStrategy&) : LocationContextFetchExtract(query : std::string_view) : std::string«interface»WebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::stringCURLWebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::string«interface»DataGeneratorGenerateBrewery(location : const Location&,context : const LocationContext&) : BreweryResultGenerateBeer(brewery_id : sqlite3_int64,location : const Location&,context : const LocationContext&,style : const BeerStyle&) : BeerResultGenerateUser(location : const Location&) : UserResultGenerateCheckin(user : const GeneratedUser&,brewery : const GeneratedBrewery&,timestamp : const std::string&) : CheckinResultGenerateRating(user : const GeneratedUser&,beer : const GeneratedBeer&,checkin_id : sqlite3_int64) : RatingResultMockGeneratorGenerateBrewery(...) : BreweryResultGenerateBeer(...) : BeerResultGenerateUser(...) : UserResultGenerateCheckin(...) : CheckinResultGenerateRating(...) : RatingResultDeterministicHash(location : const Location&) : size_tLlamaGeneratormodel_ : ModelHandlecontext_ : ContextHandleprompt_formatter_ : std::unique_ptr<PromptFormatter>rng_ : std::mt19937GenerateBrewery(...) : BreweryResultGenerateBeer(...) : BeerResultGenerateUser(...) : UserResultGenerateCheckin(...) : CheckinResultGenerateRating(...) : RatingResultLoad(opts : const GeneratorOptions&) : voidInfer(system_prompt, user_prompt,max_tokens, grammar) : std::stringValidateModelArchitecture() : void«interface»PromptFormatterFormat(system_prompt : std::string_view,user_prompt : std::string_view) : std::stringExpectedArchitecture() : std::string_viewGemma4JinjaPromptFormatterFormat(...) : std::stringExpectedArchitecture() : std::string_view«interface»ExportServiceInitialize() : voidProcessBrewery(brewery : const GeneratedBrewery&) : sqlite3_int64ProcessBeer(beer : const GeneratedBeer&) : sqlite3_int64ProcessUser(user : const GeneratedUser&) : sqlite3_int64ProcessCheckin(checkin : const GeneratedCheckin&) : sqlite3_int64ProcessRating(rating : const GeneratedRating&) : voidFinalize() : voidSqliteExportServicedate_time_provider_ : std::unique_ptr<DateTimeProvider>db_handle_ : SqliteDatabaseHandleinsert_location_stmt_ : SqliteStatementHandleinsert_brewery_stmt_ : SqliteStatementHandleinsert_beer_stmt_ : SqliteStatementHandleinsert_user_stmt_ : SqliteStatementHandleinsert_checkin_stmt_ : SqliteStatementHandleinsert_rating_stmt_ : SqliteStatementHandletransaction_open_ : boollocation_cache_ : std::unordered_map<std::string, sqlite3_int64>brewery_cache_ : std::unordered_map<std::string, sqlite3_int64>Initialize() : voidProcessBrewery(brewery : const GeneratedBrewery&) : sqlite3_int64ProcessBeer(beer : const GeneratedBeer&) : sqlite3_int64ProcessUser(user : const GeneratedUser&) : sqlite3_int64ProcessCheckin(checkin : const GeneratedCheckin&) : sqlite3_int64ProcessRating(rating : const GeneratedRating&) : voidFinalize() : voidInitializeSchema() : voidPrepareStatements() : voidRollbackAndCloseNoThrow() : voidFinalizeStatements() : void«interface»DateTimeProviderGetUtcTimestamp() : std::stringSystemDateTimeProviderGetUtcTimestamp() : std::stringBiergartenPipelineOrchestratorpreloader_ : std::unique_ptr<DataPreloader>enrichment_service_ : std::unique_ptr<EnrichmentService>generator_ : std::unique_ptr<DataGenerator>logger_ : std::unique_ptr<Logger>exporter_ : std::unique_ptr<ExportService>brewery_context_strategy_ : std::unique_ptr<ContextStrategy>sampling_strategy_ : std::unique_ptr<SamplingStrategy>beer_selection_strategy_ : std::unique_ptr<BeerSelectionStrategy>checkin_strategy_ : std::unique_ptr<CheckinDistributionStrategy>beer_style_palette_ : std::vector<BeerStyle>options_ : ApplicationOptionsuser_pool_ : std::vector<GeneratedUser>brewery_pool_ : std::vector<GeneratedBrewery>beer_pool_ : std::vector<GeneratedBeer>checkin_pool_ : std::vector<GeneratedCheckin>Run() : boolRunUserPhase(locations : const std::vector<Location>&) : voidRunBreweryAndBeerPhase(locations : const std::vector<Location>&) : voidRunCheckinPhase() : voidRunRatingPhase() : voidemitsconsumesuser_pool_0..*brewery_pool_0..*beer_pool_0..*checkin_pool_0..*logs todrains from \ No newline at end of file +Biergarten Data Pipeline — Class DiagramDomain: ModelsDomain: Application ConfigurationDomain: PolicyInfrastructure: LoggingInfrastructure: Pipeline ChannelInfrastructure: Data PreloadingInfrastructure: EnrichmentInfrastructure: PromptingInfrastructure: Data GenerationInfrastructure: Data ExportLocationcity : std::stringstate_province : std::stringiso3166_2 : std::stringcountry : std::stringiso3166_1 : std::stringlocal_languages : std::vector<std::string>latitude : doublelongitude : doubleLocationContexttext : std::stringcompleteness : Completenesschar_count : size_tCompletenessFullPartialAbsentEnrichedCitylocation : Locationcontext : LocationContextBeerStylename : std::stringdescription : std::stringmin_abv : floatmax_abv : floatmin_ibu : intmax_ibu : intBreweryResultname_en : std::stringdescription_en : std::stringname_local : std::stringdescription_local : std::stringBeerResultname_en : std::stringdescription_en : std::stringname_local : std::stringdescription_local : std::stringstyle : std::stringabv : floatibu : intUserResultfirst_name : std::stringlast_name : std::stringgender : std::stringusername : std::stringbio : std::stringactivity_weight : floatNamefirst_name : std::stringlast_name : std::stringgender : std::stringForenameEntryname : std::stringgender : std::stringforename_list = std::unordered_set<ForenameEntry>surname_list = std::unordered_set<std::string>(aliases declared in curated_data_service.h).ICuratedDataService::LoadForenamesByCountry() /LoadSurnamesByCountry() each return a flatstd::unordered_map<std::string, forename_list>or <std::string, surname_list> keyed by ISO3166-1 country code -- no NamesByCountrywrapper class. SampleName(forenames_by_country,surnames_by_country, iso3166_1, rng) is a freefunction, not a method, so it can be called byany per-city worker without owning the maps.Sourced from popular-names-by-country-dataset(CC0) -- see ETHICS-AND-KNOWN-ISSUES.md. Genderis preserved per forename so it can be threadedthrough to persona/bio generation later; surnamescarry no gender in the source data. Pairinghappens at sample time, not at fixture-authoringtime, so no information from the source datasetis discarded up front.CheckinResultchecked_in_at : std::stringnote : std::stringRatingResultscore : floatnote : std::stringGenerationMetadatageneration_id : uint64_tgenerated_time : std::stringcontext_provided : boolgenerated_with : std::stringGeneratedBrewerybrewery_id : uint64_tlocation : Locationbrewery : BreweryResultcontext_completeness : LocationContext::Completenessmetadata : GenerationMetadataGeneratedBeerbeer_id : uint64_tbrewery_id : uint64_tlocation : Locationstyle : BeerStylebeer : BeerResultmetadata : GenerationMetadataGeneratedUseruser_id : uint64_tlocation : Locationuser : UserResultemail : std::stringdate_of_birth : std::stringpassword : std::stringmetadata : GenerationMetadataemail, date_of_birth, and password areprogrammatically generated by the orchestrator(not LLM-authored) so a downstream auth-accountseeding consumer can register real accounts fromthis export. See ROADMAP.md §1.GeneratedCheckincheckin_id : uint64_tuser_id : uint64_tbrewery_id : uint64_tcheckin : CheckinResultmetadata : GenerationMetadataGeneratedRatinguser_id : uint64_tbeer_id : uint64_tcheckin_id : uint64_trating : RatingResultmetadata : GenerationMetadataGeneratedFollowfollower_id : uint64_tfollowed_id : uint64_tmetadata : GenerationMetadataUserPersonaname: std::stringdescription: std::stringstyle_affinities: std::vector<std::string>SamplingOptionstemperature: float = 1.0Ftop_p: float = 0.95Ftop_k: uint32_t = 64n_ctx: uint32_t = 8192seed: int = -1GeneratorOptionsmodel_path: std::filesystem::pathuse_mocked: bool = falsesampling: std::optional<SamplingOptions>PipelineOptionsoutput_path: std::filesystem::pathlog_path: std::filesystem::pathApplicationOptionsgenerator: GeneratorOptionspipeline: PipelineOptions«interface»ContextStrategyQueriesFor(loc : const Location&) : std::vector<std::string>MaxContextChars() : size_tBreweryContextStrategyQueriesFor(loc : const Location&) : std::vector<std::string>MaxContextChars() : size_tBeerContextStrategyQueriesFor(loc : const Location&) : std::vector<std::string>MaxContextChars() : size_t«interface»SamplingStrategySample(locations : const std::vector<Location>&) : std::vector<Location>UniformSamplingStrategysample_size_ : size_tSample(locations : const std::vector<Location>&) : std::vector<Location>«interface»BeerSelectionStrategySelectStyles(brewery : const GeneratedBrewery&,palette : std::span<const BeerStyle>) : std::vector<BeerStyle>RandomBeerSelectionStrategyrng_ : std::mt19937min_beers_ : size_tmax_beers_ : size_tSelectStyles(brewery : const GeneratedBrewery&,palette : std::span<const BeerStyle>) : std::vector<BeerStyle>«interface»CheckinDistributionStrategyAssignActivityWeights(users : std::vector<GeneratedUser>&) : voidCheckinsForUser(user : const GeneratedUser&,brewery_count : size_t) : size_tTimestampFor(user : const GeneratedUser&,index : size_t) : std::stringJCurveCheckinStrategyrng_ : std::mt19937AssignActivityWeights(users : std::vector<GeneratedUser>&) : voidCheckinsForUser(user : const GeneratedUser&,brewery_count : size_t) : size_tTimestampFor(user : const GeneratedUser&,index : size_t) : std::stringRandomCheckinStrategyrng_ : std::mt19937min_checkins_ : size_tmax_checkins_ : size_tAssignActivityWeights(users : std::vector<GeneratedUser>&) : voidCheckinsForUser(user : const GeneratedUser&,brewery_count : size_t) : size_tTimestampFor(user : const GeneratedUser&,index : size_t) : std::string«interface»FollowGenerationStrategyGenerateFollows(users : const std::vector<GeneratedUser>&) : std::vector<GeneratedFollow>RandomFollowStrategyrng_ : std::mt19937min_follows_ : size_tmax_follows_ : size_tGenerateFollows(users : const std::vector<GeneratedUser>&) : std::vector<GeneratedFollow>ActivityWeightedFollowStrategyrng_ : std::mt19937min_follows_ : size_tmax_follows_ : size_tGenerateFollows(users : const std::vector<GeneratedUser>&) : std::vector<GeneratedFollow>LogLevelDebugInfoWarnErrorPipelinePhaseStartupUserGenerationBreweryAndBeerGenerationCheckinGenerationRatingGenerationFollowGenerationTeardownLogEntrytimestamp : std::chrono::system_clock::time_pointlevel : LogLevelphase : PipelinePhasemessage : std::stringworker : std::optional<std::string>«interface»ILoggerLog(entry : const LogEntry&) : voidLogProducerchannel_ : BoundedChannel<LogEntry>&Log(entry : const LogEntry&) : voidLogDispatcherchannel_ : BoundedChannel<LogEntry>&Run() : voidToSpdlogLevel(level) : spdlog::level::level_enumBoundedChannelTqueue_ : std::queue<T>mutex_ : std::mutexnot_full_ : std::condition_variablenot_empty_ : std::condition_variablecapacity_ : size_tclosed_ : boolSend(item : T) : voidReceive() : std::optional<T>Close() : void«interface»ICuratedDataServiceLoadLocations(filepath : const std::filesystem::path&) : const std::vector<Location>&LoadBeerStyles(filepath : const std::filesystem::path&) : const std::vector<BeerStyle>&LoadPersonas(filepath : const std::filesystem::path&) : const std::vector<UserPersona>&LoadForenamesByCountry(forenames_filepath : const std::filesystem::path&) : const std::unordered_map<std::string, forename_list>&LoadSurnamesByCountry(surnames_filepath : const std::filesystem::path&) : const std::unordered_map<std::string, surname_list>&JsonLoaderLoadLocations(filepath : const std::filesystem::path&) : const std::vector<Location>&LoadBeerStyles(filepath : const std::filesystem::path&) : const std::vector<BeerStyle>&LoadPersonas(filepath : const std::filesystem::path&) : const std::vector<UserPersona>&LoadForenamesByCountry(forenames_filepath : const std::filesystem::path&) : const std::unordered_map<std::string, forename_list>&LoadSurnamesByCountry(surnames_filepath : const std::filesystem::path&) : const std::unordered_map<std::string, surname_list>&Each Load* call is memoized after its firstparse -- implemented today, ahead of the restof this package (LoadBeerStyles is still planned).MockCuratedDataServiceLoadLocations(filepath : const std::filesystem::path&) : const std::vector<Location>&LoadBeerStyles(filepath : const std::filesystem::path&) : const std::vector<BeerStyle>&LoadPersonas(filepath : const std::filesystem::path&) : const std::vector<UserPersona>&LoadForenamesByCountry(forenames_filepath : const std::filesystem::path&) : const std::unordered_map<std::string, forename_list>&LoadSurnamesByCountry(surnames_filepath : const std::filesystem::path&) : const std::unordered_map<std::string, surname_list>&Fixed in-memory dataset used in --mocked mode,implemented today for Locations/Personas/Forenames/Surnames; would need a LoadBeerStylesfixture too once that method is implemented.«interface»EnrichmentServiceGetLocationContext(loc : const Location&,strategy : const ContextStrategy&) : LocationContextWikipediaServiceclient_ : std::unique_ptr<WebClient>extract_cache_ : std::unordered_map<std::string, std::string>GetLocationContext(loc : const Location&,strategy : const ContextStrategy&) : LocationContextFetchExtract(query : std::string_view) : std::string«interface»WebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::stringHttpWebClientGet(url : const std::string&) : std::stringUrlEncode(value : const std::string&) : std::string«interface»IPromptDirectoryLoad(key : std::string_view) : std::stringPromptDirectoryprompt_dir_ : std::filesystem::pathcache_ : std::unordered_map<std::string, std::string>PromptDirectory(prompt_dir : const std::filesystem::path&)Load(key : std::string_view) : std::string«interface»DataGeneratorGenerateBrewery(location : const Location&,context : const LocationContext&) : BreweryResultGenerateBeer(brewery_id : uint64_t,location : const Location&,context : const LocationContext&,style : const BeerStyle&) : BeerResultGenerateUser(city : const EnrichedCity&,persona : const UserPersona&,name : const Name&) : UserResultGenerateCheckin(user : const GeneratedUser&,brewery : const GeneratedBrewery&,timestamp : const std::string&) : CheckinResultGenerateRating(user : const GeneratedUser&,beer : const GeneratedBeer&,checkin_id : uint64_t) : RatingResultMockGeneratorGenerateBrewery(...) : BreweryResultGenerateBeer(...) : BeerResultGenerateUser(...) : UserResultGenerateCheckin(...) : CheckinResultGenerateRating(...) : RatingResultDeterministicHash(location : const Location&) : size_tLlamaGeneratormodel_ : ModelHandlecontext_ : ContextHandleprompt_formatter_ : std::unique_ptr<PromptFormatter>prompt_directory_ : std::unique_ptr<IPromptDirectory>rng_ : std::mt19937GenerateBrewery(...) : BreweryResultGenerateBeer(...) : BeerResultGenerateUser(...) : UserResultGenerateCheckin(...) : CheckinResultGenerateRating(...) : RatingResultLoad(opts : const GeneratorOptions&) : voidInfer(system_prompt, user_prompt,max_tokens, grammar) : std::stringValidateModelArchitecture() : void«interface»PromptFormatterFormat(system_prompt : std::string_view,user_prompt : std::string_view) : std::stringExpectedArchitecture() : std::string_viewGemma4JinjaPromptFormatterFormat(...) : std::stringExpectedArchitecture() : std::string_view«interface»ExportServiceInitialize() : voidProcessBrewery(brewery : const GeneratedBrewery&) : uint64_tProcessBeer(beer : const GeneratedBeer&) : uint64_tProcessUser(user : const GeneratedUser&) : uint64_tProcessCheckin(checkin : const GeneratedCheckin&) : uint64_tProcessRating(rating : const GeneratedRating&) : voidProcessFollow(follow : const GeneratedFollow&) : voidFinalize() : voidSqliteExportServicedate_time_provider_ : std::unique_ptr<DateTimeProvider>db_handle_ : SqliteDatabaseHandleinsert_location_stmt_ : SqliteStatementHandleinsert_brewery_stmt_ : SqliteStatementHandleinsert_beer_stmt_ : SqliteStatementHandleinsert_user_stmt_ : SqliteStatementHandleinsert_checkin_stmt_ : SqliteStatementHandleinsert_rating_stmt_ : SqliteStatementHandleinsert_follow_stmt_ : SqliteStatementHandletransaction_open_ : boollocation_cache_ : std::unordered_map<std::string, uint64_t>brewery_cache_ : std::unordered_map<std::string, uint64_t>Initialize() : voidProcessRecord(brewery : const GeneratedBrewery&) : uint64_tProcessRecord(beer : const GeneratedBeer&) : uint64_tProcessRecord(user : const GeneratedUser&) : uint64_tProcessRecord(checkin : const GeneratedCheckin&) : uint64_tProcessRecord(rating : const GeneratedRating&) : voidProcessRecord(follow : const GeneratedFollow&) : voidFinalize() : voidInitializeSchema() : voidPrepareStatements() : voidRollbackAndCloseNoThrow() : voidFinalizeStatements() : void«interface»DateTimeProviderGetUtcTimestamp() : std::stringSystemDateTimeProviderGetUtcTimestamp() : std::stringBiergartenPipelineOrchestratorcurated_data_service_ : std::unique_ptr<ICuratedDataService>enrichment_service_ : std::unique_ptr<EnrichmentService>generator_ : std::unique_ptr<DataGenerator>logger_ : std::unique_ptr<Logger>exporter_ : std::unique_ptr<ExportService>brewery_context_strategy_ : std::unique_ptr<ContextStrategy>sampling_strategy_ : std::unique_ptr<SamplingStrategy>beer_selection_strategy_ : std::unique_ptr<BeerSelectionStrategy>checkin_strategy_ : std::unique_ptr<CheckinDistributionStrategy>follow_strategy_ : std::unique_ptr<FollowGenerationStrategy>beer_style_palette_ : std::vector<BeerStyle>options_ : ApplicationOptionsuser_pool_ : std::vector<GeneratedUser>brewery_pool_ : std::vector<GeneratedBrewery>beer_pool_ : std::vector<GeneratedBeer>checkin_pool_ : std::vector<GeneratedCheckin>follow_pool_ : std::vector<GeneratedFollow>Run() : boolRunUserPhase(locations : const std::vector<Location>&) : voidRunBreweryAndBeerPhase(locations : const std::vector<Location>&) : voidRunCheckinPhase() : voidRunRatingPhase() : voidRunFollowPhase() : voidLoggerPipelineLoggerLogWorkerSampleName() producesemitsconsumesuser_pool_0..*brewery_pool_0..*beer_pool_0..*checkin_pool_0..*follow_pool_0..*logs todrains from \ No newline at end of file diff --git a/tooling/pipeline-results-viewer/.gitignore b/tooling/pipeline-results-viewer/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/tooling/pipeline-results-viewer/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/tooling/pipeline-results-viewer/index.html b/tooling/pipeline-results-viewer/index.html new file mode 100644 index 0000000..52a4ba9 --- /dev/null +++ b/tooling/pipeline-results-viewer/index.html @@ -0,0 +1,74 @@ + + + + + + + Pipeline Results Viewer + + +
+
+

Pipeline Results Viewer

+
+
+ + +
+
+
+
+ + +
+

+
+
+ +
+
+ + + diff --git a/tooling/pipeline-results-viewer/package-lock.json b/tooling/pipeline-results-viewer/package-lock.json new file mode 100644 index 0000000..c29c296 --- /dev/null +++ b/tooling/pipeline-results-viewer/package-lock.json @@ -0,0 +1,1334 @@ +{ + "name": "pipeline-results-viewer", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "pipeline-results-viewer", + "version": "0.0.0", + "dependencies": { + "sql.js": "^1.14.1" + }, + "devDependencies": { + "@types/sql.js": "^1.4.11", + "sass": "^1.101.0", + "typescript": "^6.0.3", + "vite": "^8.0.12" + } + }, + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz", + "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.133.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.133.0.tgz", + "integrity": "sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz", + "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^2.0.3", + "is-glob": "^4.0.3", + "node-addon-api": "^7.0.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.6", + "@parcel/watcher-darwin-arm64": "2.5.6", + "@parcel/watcher-darwin-x64": "2.5.6", + "@parcel/watcher-freebsd-x64": "2.5.6", + "@parcel/watcher-linux-arm-glibc": "2.5.6", + "@parcel/watcher-linux-arm-musl": "2.5.6", + "@parcel/watcher-linux-arm64-glibc": "2.5.6", + "@parcel/watcher-linux-arm64-musl": "2.5.6", + "@parcel/watcher-linux-x64-glibc": "2.5.6", + "@parcel/watcher-linux-x64-musl": "2.5.6", + "@parcel/watcher-win32-arm64": "2.5.6", + "@parcel/watcher-win32-ia32": "2.5.6", + "@parcel/watcher-win32-x64": "2.5.6" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", + "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz", + "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", + "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", + "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", + "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", + "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", + "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", + "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", + "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", + "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", + "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", + "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", + "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.3.tgz", + "integrity": "sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.3.tgz", + "integrity": "sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.3.tgz", + "integrity": "sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.3.tgz", + "integrity": "sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.3.tgz", + "integrity": "sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.3.tgz", + "integrity": "sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.3.tgz", + "integrity": "sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.3.tgz", + "integrity": "sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.3.tgz", + "integrity": "sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.3.tgz", + "integrity": "sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.3.tgz", + "integrity": "sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.3.tgz", + "integrity": "sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.3.tgz", + "integrity": "sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.3.tgz", + "integrity": "sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.3.tgz", + "integrity": "sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/emscripten": { + "version": "1.41.5", + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.41.5.tgz", + "integrity": "sha512-cMQm7pxu6BxtHyqJ7mQZ2kXWV5SLmugybFdHCBbJ5eHzOo6VhBckEgAT3//rP5FwPHNPeEiq4SmQ5ucBwsOo4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.0.tgz", + "integrity": "sha512-vf2YFi1iY9lHGwNJMs01biZFbKJkrZR1T6/MlzjhJLPdntOHLhTrDSnSVcdtvjihi4VQNlrFRIxLsDBlQpAipA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~8.3.0" + } + }, + "node_modules/@types/sql.js": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@types/sql.js/-/sql.js-1.4.11.tgz", + "integrity": "sha512-QXIx38p2ZThJaK9vP5ZdqdlRe1FG9I8SmCZOS7FHfB/2qPAjZwkL7/vlfPg6N/oWHuuOaGg/P/IRwfP2W0kWVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/emscripten": "*", + "@types/node": "*" + } + }, + "node_modules/chokidar": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^5.0.0" + }, + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/immutable": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.8.tgz", + "integrity": "sha512-TM5YqrGeTsVIPPpILzeqZ8D2Zc2TvNgSDi88zPF2a4cyqQdWV/wVWBDRDbNzzrLeRWScrFcOX9lW2iX6GOtUDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/nanoid": { + "version": "3.3.15", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.15.tgz", + "integrity": "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.15", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", + "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.12", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/readdirp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20.19.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rolldown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.3.tgz", + "integrity": "sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.133.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.0.3", + "@rolldown/binding-darwin-arm64": "1.0.3", + "@rolldown/binding-darwin-x64": "1.0.3", + "@rolldown/binding-freebsd-x64": "1.0.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.3", + "@rolldown/binding-linux-arm64-gnu": "1.0.3", + "@rolldown/binding-linux-arm64-musl": "1.0.3", + "@rolldown/binding-linux-ppc64-gnu": "1.0.3", + "@rolldown/binding-linux-s390x-gnu": "1.0.3", + "@rolldown/binding-linux-x64-gnu": "1.0.3", + "@rolldown/binding-linux-x64-musl": "1.0.3", + "@rolldown/binding-openharmony-arm64": "1.0.3", + "@rolldown/binding-wasm32-wasi": "1.0.3", + "@rolldown/binding-win32-arm64-msvc": "1.0.3", + "@rolldown/binding-win32-x64-msvc": "1.0.3" + } + }, + "node_modules/sass": { + "version": "1.101.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.101.0.tgz", + "integrity": "sha512-OL3GoQyoUdDt843DpVmDO6y2k1sc5IhUDSpu8XucEI+35neq5QivZ1iuegnpraEVTJXlQGK1gl27zKcTLEPbQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^5.0.0", + "immutable": "^5.1.5", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=20.19.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sql.js": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/sql.js/-/sql.js-1.14.1.tgz", + "integrity": "sha512-gcj8zBWU5cFsi9WUP+4bFNXAyF1iRpA3LLyS/DP5xlrNzGmPIizUeBggKa8DbDwdqaKwUcTEnChtd2grWo/x/A==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "version": "8.0.16", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.16.tgz", + "integrity": "sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.15", + "rolldown": "1.0.3", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.18", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + } + } +} diff --git a/tooling/pipeline-results-viewer/package.json b/tooling/pipeline-results-viewer/package.json new file mode 100644 index 0000000..251ba18 --- /dev/null +++ b/tooling/pipeline-results-viewer/package.json @@ -0,0 +1,20 @@ +{ + "name": "pipeline-results-viewer", + "version": "0.0.0", + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview" + }, + "devDependencies": { + "@types/sql.js": "^1.4.11", + "sass": "^1.101.0", + "typescript": "^6.0.3", + "vite": "^8.0.12" + }, + "dependencies": { + "sql.js": "^1.14.1" + } +} diff --git a/tooling/pipeline-results-viewer/public/biergarten.sqlite b/tooling/pipeline-results-viewer/public/biergarten.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..f3dd1320d91ec7a9be9f134238df2bffe86ab2f7 GIT binary patch literal 106496 zcmeIb3zS{ub>~@<06maY@uVF!@vwZbC&2_&#o$+Hl7J)%A%h;E!r0F0kaO=nb?;H# zd(ZWKRH>BdS(31gv5g;zd6U=*U_)#$7{|!G%%t#4PbWRI*7Wq6&gwNi=`>Z6da`=D zr_((%oz7bG`|tgob8nRdI9Yi(fQJ!3yM zwr0)PwNW%SHg*C3{Urb8f6nKJ^YUN#|C*7XU+>2Y#wPFihg-(~pRo;_#>ci^HU9lA zr#3&f`MsO6%^Ufk{8K`pgg^;_5&|UzN(ht?C?W7S4S`?YaKW|@Y+LgW(snI5oYoHC zKIkRg-tEn-8u!zzeS2E74>s<)WopOtRJ3Q`byFXX&iP!le_v$JzH8*=%kJ2A!TN36 zwypW(mVR7mCiZ~+vp$SCy<_K1Q~qM~u1yhRGs*PS?x|a%1GntiyW^IRL^n=-B-(N7 z^!`2jcxUg_zUl2eH!?}_!oK~}(Y{-6x=G*9q}^Ws_IBJ#qUos*^ZCek&G>b{swV)V zd-f|@^SKABq}kbz$JKs1m-ZKKpHI?yqaOjin^r6#X~k)C<$KYs`}W*?>y#E>i~Gs# z+05;gwA*j2d`e$mzyFr0J-hb_Fe`w~G}lkvGPQ5l)WHHiy?3Rx%Y>Wjrf!-7gS&Pd z+_mGnsZEz%w*G=`zp!o1m|?#6u_ji*?eU$j)EC?V7i*Iku&sl1ew3 zPr7Ncf>MePFF1=@imyf~ORFlrSh11g*POS0+uPs1=Hq*fYKn)7AI@JvJ;ld=sT3r1 z-=4J327fK-Rl8}&&d0gFw--g9s}O9M9eMY49{Eeb?tyg|Y`gsOH6Jnf1?={cj}4M` zHCgrRc`IPK>dSX&GuwIdvO6}eF`RrNwlVYb*DHQlyJDQ;<3ATps+^g#0p9EDJaoF* zT*~s#{yyzx@44dr@4x-Zv%jilgLc1rjxqCht~mQ0!^`c>xLqH_bx8bBFFOYnG+~ha zK`lA^Y&WxZ{dKCNxG zaEY(WKP3c82$T>gAy7h~gg^;_5&|UzN(lVbLExtGO=ItT=S3I2<+Anb_u`4EX3;K; zgwY>AJh5x!z_w-nQ*hjka^pZKmydKWl#|>9(?V|JH*OADX_kjlExs4$89X-Fh$|u03(~wsh{%U4m8qcTuYjrMj9VT+U?##b1rVDF{2*X z@y4U>`hWk;@BQgpf9I83{?V^Ja{j@ep5DA^?4oUqx@-OV9fMv!ZBHkMV-_4_`d&m`JvOV{PI0JqF;LDCl735>lgcQySs6_7Tpqe(pqnCT5Y8DxXp-r_ndRJ z???hLr+)Ro)Bo46KKsh8hko~`kN(DYwh0YV-!!leY6&CU@Rkq$$-n()Q`cU4 z*`JA6UPBU(&?n4*!01V&B1i`;z(Sqe-lV?)&Jj>PC0i^zP++!7KyyMo1=^Y0}aoxD7U&E@v z*N$5mXsUDiYZos+bZzC(;pRIUn{HgUY3$-le4w4(v{#AS$<2c#Y4@}m2D|yD>t27b zs}Fadj$VEE+G_N_{Mo<%&hT(^ld=u zstrEIFV}wdj$i%YJAZzS2YG*g4tyupZn3}k0?~VgWcW@vFGOXdi6x(^%w*U5} z$KLWAuN>U@($ByDE$`g~4;$b7!q}F>wmxXKW*K< z<-J?JIsV9B9iuBpE+J4tpoBmPff52G1WE{$5GWx~LZF1e4*-FyH^@V>e*KzJugHk6 zWW+(T+95Lj^Bd$3;oTp=9kSZ}v31u5c|Umh2X}s4yUN+I<^3Dv>tKvGbah<2%A2wI z=Qqfi!D~N&FXP%(zKaX5*&x>iFaKbki)&YTDmHE3AV&r7pTkeF+BLE9-5cbY;NjPC zOsw`rY+!4+BDA_U_e8ArH>|&MgWL_8?e)A3s~rp%fC2mqyz++bh1Gt9^LY(70#op31@_nT5UlnHto<1fbgAy7h~gg^;_A8H6}S-0-( zYl_mB@hxlkwaE8Zt^JmbR=&ee8`rMew#I%LS5g1g@#nR(pB(?w@&7pf@5cXl{M7g# zjsI`s|7`r9jQ@}0|HJsJk^~>qY%6>hnxC;Q44iZZ><=!^GY0 z0^iy6aLL+?85_bHJwSTky5nu`h47NZI2T2ei{o=uaz{L_GCusA9-)} zZk)Dz5mk6?%6J%erkk~xvKzHX7K{3W_GGl5-)0z<%D4q;bE4RqX0WDeMlDWCbr*9a zjf``(-KJg01}wB4%_K?F*Wkr}VTB7UrWd7c-$Rmgs8Q_o2Hm8W@1dEtl8Jd1zzXA9 zR$<)vM$%2}jgG1onY|GMscu}I<)O3w`0#}rTYOymUbOC!- zP)X*JuBxOWTWHvw5|QRoKrsjU5=x!oT1>s1Eu@+XYgS_w^^#<6NaMseJ99_qk#zg>X`6M;rxZ?#4!TL5MPD7w ztLI5|pmoM`DNnPLxOT|$4xOwF^Ies_+G-lWtm&Xn+cV9&ElZpaX;i!4?1|Q%)h}9GqAYd0{(QyFmnQD^-CA~g}oh-W! zKWUhh)0po7GJ>)Ny_kx=P8T@!M39^j{>i$tn$8g48&n%nErm3DT5nyH%!+#f2Q_~6 z`evx7eQ7@u8ANdfmIKmkm`aj#uZ~hS32^NTFayT6v({`tN$<>{$qaEbs}B+Y-3Lhy zu94~VaKawv(r(t)fpI>e55>9$Dxeiru@$Jufn(^?-V#;`&Yaf!N!*J1@hs1Gx*T_h zJ!|6-i1=Va5jbww1Oi6Pz`kgrov`A-UJcgz-lnicG?=w2#PNzg=w%co>plA=iM4yy z(hJzuSzm}|6As{>nFx0GM@Jt3d(A8}n29PY)Je|;gm&W@Ba*bwDB^Qql(s`08Bh&k zIP3m$1jTAbt$IG=#M^=I!bO{Dr7L9j2gdJWDJ z0_dh#@+PUpHAx@%QPfM57MqJ$Nen~l#*i00RtFl`BODF`nUpiZA&2`d09}}6*6yWs z2p4hEgjEJv#F^m}WYFT12%#)m&;v0tC620#Cz>g5vI!>1dYL3*6CQ&MY8$ITn$`FL zHmIesc^+uP6X6Nqysgjqq!m{=hShZOS!B~b`x^YTdAaGIMywf*j$};hgAAFs3jj&F)!0T9`wy^^U`p68BY>6Uh(^#uJ-*1= z2u}Ft4OzPzw^(LV8%I1XJ_*g6AmXELJ$4~wAkvhTq>^eAL0W-x&hp0wi%)88tlNYW zQ0NXo1jj@&3gQRoi%(R^Vdin;=WHNW*|hS7^|R)8IdzEfYnqBr*k2_J2nu3L8(_N? zM$S=|MXkjr`kCO<>o1<*bUCPf7hndek8Sr*nue9c0p(XmqLrkL3^Ne4;BW@xSiB1= z4|wZj-6}lMVeTZuT;eVeP&+wfPeSiaRf4CsKoezsM$d(t2!1Hla`^K85eDa!h|2&3 z6Lo>myV;S+XbSyA8v<0BEf>(X)NCvlZ)q0-WzIqK2s8pYRtHJ9lSSRd=OyWk6eRw_ zA%fdGnd?mEk`5W`a?Xy6X_PMHOvVY`oKRF7&DAq(_Bg04zS##yF83y*9kryjc!GV3 zW6VK@22?u}U4&dA^Kw}yF^hCV6ry`Vrpyyl9j^aN{4ox)%4X9T0R((m2tFrD!vn0Z z&i1<^!MGYj9U_Vo5F5gpW)gsR06w#-BZ8x|{Dj@No1{Z_Muh+Vu%StTFie!f3 z2O5B!gBZ*ZB;ZFYmhAK8v_*w5ec;m&chS+D0=v^g0aOnI`0Knudp5sRwCIn=|wfj8T893uyz z7EURq#T@_6@dR5)MGs6qmvTg-3OG+QxTEdJCW0AZg+#pd z{{@!+|2+Qt(}ew3og*V=bx{C z&pS{5u3M*n*REZ+j;C4sn(;r?4lW%3(@np(@iQCtufOE{-#f3r?j38M9eePvVQa55 z#qpomym@TRwu{Cux#P#z@4002b;RjvJ86@eEbOi6=U$%x&7M4*fj5e1g2fGLahJ#l zpws57zc0A0Z=Ud6u(H_E8#IHiEG3th(uzZBkOjCXt#@Ltj)ine! za!mXpmRApdCc!gHxu8oeZfYEGO?s#(Zsb7~g=po-o5f4Tq9UBMM2m@y$!p4lGsK1` zuQ}}yuuV-?Y=_qp|ES=3suN92+LLjobLG3={oaWyuAF%H6~~(w0+@?08o%u0m#^P{ z$%T7*afNtxOmKsk>h)>(6<-y3CzF&YI1wLzR&Y1=|Q7I>CRnb;!Xo~d@dsYu;U3)3nBOTWsb zZxLTbe~5oJfJGi{8sNqz)Dz-|y>>c-@1K|wj=p48fqy2;aQbz#3eIhucXdKxz5ar{ z@0CF+EP=_M5Cw*|<39``JbfG!NJ$9|)%b39@|vaJ{rs;0?i@&y4yCifeZ^H*T{ZFU z4@_M7f#dr(0q(cGb^M(lUk4p-VpF)_;$7Xrk?Z+EKjWZ1vgguPPKtQ|ET_jdp(6s3 ziohCBcP1hvwmVvfwLRK%DWIz)76wz`tk)Y2T=x{=?J3r0!8t~ND5n*Ay;MG1MZbO2 zB2Mo(vowi3WXakUM%y6(%7uOwm0D7R&dv;*FdRU7@-vHOwfYcHCVYdp8YE=hg@S+s zG$sX(b3*jJ6Ysui;>!0NpWdjG{r2%ofav~9Hr_PAop}KIP<*z%x7o>m+#|2^91EVo z9cn2Vsyu@%;x6rWfT18vXliyysQm_B*rt)G9lIfsb3A8~YM&F!O(%pOYtimOG9V&v zL?ZOif|VdQPV$8KDbJ0hHN^dDLlijz4V|c*Wdtta@B|D3a$MI6<64cdLWm;k6-^`n z?-2D8OS5=LfiuqD3@vJFlh^$5@BjWQ5NcDfnJgf3Hdx^cFopL`y!*Y!4{i{lUOayJ z9liB8U$SAUmeC6+J3!hC`rZ=4Cj<16YXNG2#AFVNb3zqv`)&Yx z{POic^{p3;zwM6Q>vvzW{)5DsryE3adwUPTmiYf3;tJWU(c);%1*;==#mWc~aZ0x5 zg2IS^xHbO=vdSIMCMpCp38L>Igid5XBsVFrROQIS^2ml#f`*qjMmKQ$1Wd6v=ZewZ z#YekGh#m}juy=?Tu4|`&a2DryxHOmt3$fiyJo}<_I>n_qO?^ z;lJ#ODhnN?g`j|Z6c7UJ2&$wUp9P6!k{m3JC}*Tf?BS4_EHb`EqSHAc7FPty7xDACTfzr;uF-5c-fbll3pVg0q&y(gJMV??x5RA@- z(SA;8T1}BiG9i&Fjx8?a$R3{DidttWy+~S!2#c&R%P4{xW|IX1qG#zh=b${GPp`4) zL&PQtLb-GFHNlP_$!e{gX8$)F@^kq-+4}ZKXu1PpuO{^(1~7$1|W1X#5=$de!)gi7#L(zLyh3t(|g(<)8XG}Uq_pLrwI%?CE89XgT{ zd+eXHZW;=pw}hu5Jo6JB1eoVH368VqHNvi?zK~o4_!WoelUj^aUY?ox73fbpx09=_ zpA&un?|t-(JHBfj@ViKyE(3n+_6thg8x+^2Noh5 z%8TkGBb-Bnu9Bt%9o&}orRn;%M8d??Tl@}37xPq>)}Df^DKB7Fz%rfzzfWeMe$xev z7x;mwNDqWPn&!xvNc-f@>9ms{L>i)Qbnr78?a4Joax|rviV=l8H|QObL}vvWXG8Idt3H6b`2LA2uR6YaEl|8zr+9w-u1nVLYNU;cMx5P>{-03YOL5X85v0OY?Zu}KYv9c(n6i~Rf>VPXn& z_&}N^iU8oXBmW0ZtN}KY7;1vmIf4A138;D#JvWK}Z&@1K`q20bTW{I=+IVm4VEn@I zo439^{?E5wIX*Fd-_{HHy8Kf@poBmPff52G1WE{$5GWx~LZE~|34sy-@b0wnifyA7O;QMHZ8Zj zW8I!LZyd_pto6KU1nxo&^u{5jO&aJ;BP1KOu{U@5Z@6UL?lo`d=3f8KbvLeg6L;8<+M(Scmqeu+W%_Z{*7yW|HPW&VGe|6k_+|M2Di zt7!Bp+5hXd{MgvmSGF|xU-_qmKnZ~o0wn}W2$T>gAy7h~gg^;_5&}Om5ctseh4etU zWc12O^^^7|Z>{jAIrU!5{(c%s9lv#}+5)_7{O$BSy7`i= z2STF#l;_!BpC{fYMPC4G2N61aa6N&VXK=*|EgtBKLyr{o#ebu!_uimFQ+ytbn}z9V z?RL)9oU26(kkE$4`)JY8LXBhceiGIjhH~_S>L8}da}~r}LneAadA~0D64(t!w926F z|8@E#c@H3KT4EOu(K5uY$g+kFMR$N47O!7~;BcjH%KMN1!WQ8AQ3UVu&B0I*}i~UOFDh;?c~>vaSzK}+E)dCKT{0^)%f22 zWu&DXO=wp1pt2q1_4#>o6&46(5lOzh-Sb#^3T!34y&Qy4BD(?+wV}NKPYn|3@TLoq3^=Y?l=uI6PtEfF zzw-XS^8UZ_{=f46zqUG%m-qku2;cvQI{}rFUY6Wr+2g9m8kdjifGKVj?MziNs{$cKBJK-x-D92^JeHTJw5TllHuv@uMv~7kqPlJbk_W9%1hmZ(aNKey7RH+%_@b;&Lu2&&E`l?MBwreua&i4EZ1wOKp0fr-cT zb#pVfFVGZQw-ggFq0cfD*A`IotEEM^S_rgD>M-5exlg(euCE_JVnB|&SGLoOn10!O z+*O-)zvDp7{%tFMcZC)UyonJE0TVZ8W5`N(HE3(xUJc5c=mUPsgZW>o46UdP>H@bH zq+DA}n{gfnCKh-a*kKq&A*+RglQ#Fk;Ks4Fw+DUZ@L*3sq~kCLpjO`TQIhFU~v3rOi8P7`+F zmy0_%n46h+W{`^DB4;=qLU;ON;lP@hle8-tbKK|OvpM34)(bLCI zoVxq*Q+It=uRQ(8(iflQnKQ>9S-$_9XO4a4^aJ-S-~HT~W1r#M*IxSE^0)3fee7Fj zzWlw@pStt4lb=~Wd6FrXUwV|4oO=9)Q(t;ogFO4#(!*aq{poL<{`9lU&po&Fg-`Jz z!=5?z>;LNL@#Rl_ap~w6wTAn@x%}}jFMa;LrB6M5=I8^b9)IfeQ=eY??7hr>`sio< z6CODI)#sO=d4B1s2VZ;slm0GyAA;F-}f7@oxFSLj!&>)-dcM8YfE4L+|tS8TGBJmEIs@*e@}hklcyd!dFJRNOuhWj zw|R2ui;tf<{^_OfKD+d}FZ1N-m%p|A*po}gpFQ(vHbKGm!5v+)VE$fbM(Pe54?Eh6TegJQEU7B zZwnNkz4O!)M^D}L1g{j&u$b`GJ>Ox#Gr#pXBNq=8`(1kaQ_IgjzI^YCEco<^6Q}H9 z5W4*EUBfZ?_2}1_cj@Uzmp<_whJEd&@16S6wZY?)UiiI zJVzgR?c|e74?VA`!NT!JK`oN0%NI0R%)peYYt5+27`|)4%<_<$J!p{MhfXLM`dJ7ql1K@0stuxb*y2 z!P==uzsjRJZh7zq$0{ za}K})4kELY-vPf`?N>gr{F@J-`RW5~mIVijdg1v~-@I%2;cuLN{_6tl$)n4UK-iC- zX1~1hxd+eOdH1PD9)utvo8_;4rr03ZU%vM_QQ&uf^USf&0j}4ce@I98yDu-@eQfEw z-v*e=FMMn16OVC5AjPGxeFlKo`FffGIRYC0xyP3t{Ti@czW0k~zNQ(MpE7Sf_{Qfha{kYE2H$SgMLK4sa*3zBN^9tO9k)ed})i-S9M?b%O-($-Ue*4Tr zkNajB>eLtSId!iH7@A-H@)v~P$LI-11II}hdn-!B`>N9sd zzVxY24hi_-$CrQO3(NOHJa;cW_1RM|e@@Ro@)GMg^_io~pZJX6aM#NKfdTn8P>XRA z&dAce4=+D?; zXkBg!N`>rlPmna+TGYTUlRdx{lH3)72ChQEU=*T8b9GIj%c2vzPImU~BvPmBlAIp* zsg!lr_bTZWwet>Z&#tP?bw(SSea1_FW5|wVU!Ox2uFK zBV5hR7-QBH{Vob}tD>tusfRSqvqXm-8xbMcC1WZ=rvNpTz%iyF{a?h&V2UuoV zwTh=eQ&v)0sW>u>gmk@)-@mnTSG|Vi5GGyxGFjFH+lhHkj5rG8U2p-U!Pnz&xK8-DCsRkndeHR7)jN#+*3PiH=lXpWPOqX5(yF5(Ivj*8J*H>pDt>;#B(GkIF3 zSt?dN_q&n3=w>)~q1oXNM_otOOn7WPR)_r!*0jTZA}iD`+AN%HiazK9KfdVUYLjP# zTTNN0tzc`%OLX@glQ`pa7!U7@(v@b+H=}f0?nZ1^ahF77yxPGXc`RuYWYGn1LoQ&q z43g*xW9NcH1BBce&5U~&b@DPUFJs%7^(>%`*U%m@I^Y)9q=vCC$3XaWVe$rG$|*etik!_W$?C)_wnt4WIJc5&|Uzen=s3|IeL=SK{*f zrY^sKaNe#A#&3$F-7zm6p3EOq?M@f7TLEt=|3sHYJrq4uV{A=qcIn8nzTDcxTfnPk zgouwwsm6zZofTr;riYK{<(LKGPUR4c!Vxh+%#si%Iy^SMtK3E8O%^H&vIX~S>fu5N zhG7I(h`A{yi>II=KZ2Pn*g0Cwh*fS*11@1*K#iW~;$R}BSKBkpO>~xFh9M|yIvKW# zboPJ*OPIqjuAsNfnye%IM4DX_xEVj6abd8GT$W(_RkuYy|*c65h7?6FB8v%*{cIS+ATegD*E@g@L@bh$|g*0g@ z1WrPMKGa$Yqc{(L=MnS(TUVKC-54{hSc*(F=m4)twPA?B^<+?YPtVNIiX9?PVC4`& zyJ2J!AR4TzgUt?@V(p1SL-T~OJiCCJgNFB@Cw~GM!BB-zH z;_7h%!r{cd+iBBHX;72 z6*XgNjHFE-kD%U&XNlK>@Q6obO&S)Ns#}Ag@N4TIP~zD<>Eku0+(1J55l$a zT#s(h9F++$rzY6;Z(xLfPSN16=W;>A1WxKs$jQiMgPhu&jFlpSycoIW`h&J|pp*z# zhz3z^Yk*jD8Nq%`Ou*v){BiuzsC57`J`EF|qXUhr)m*mashzoOfrq0YvSomf1 zLnh)1(OE*H+aQ^+Wm*GV951n>?%ZNSM??qq4a5fuC){jAdT`1W#d6j-;ANC8`A^$L z0vCyLk|vPMn~4(ZgCJp|K*~A92?hOgNCeK*8^{wju>dzgxCNmieNB>erC15lS(2q7 z8SVd##7a{g1#p({>7#q%C^r9c5GF&9bWo>Va%^{EGz~#V$_Zd7Pkg0Hg%nG%WA&y2 zB*>efcE6tZ5R_Jk5YPXAb?m%Xe@Jbca#!3T z3Jj&kdkghs&zUA5Ls=;zEW|W~%;LDd0GBSv;dul}k9D|nMtd`1CXKwXw`9LFY7w&y z%A4yvH3}REB;)gl%n1>`_*}`uXO;xuV*Rql_jg#(sNti^lhnv zCi_+dMNs-EizCJjvT&u$XhCKU#m#C;-aq9Z2|FEX18P!WsqQF5xW+1JU*@V*+$`v~ z<{%JAat}jLd(Vph?_*?a5JKnpf>0nxX-5&1k}Ic?t%xiLxn|JhhqVhuvIEK|$t=)s z;nct|reo29N@M!y%~@+fDf!`rp^_@vSC)m5wIzUrG6URF=E{&+okyo{Q4TtE0uVj5 z!V)|zeqJA>mf}Jh`bbR&YEV&r5%MU84x15hW7d(eBS3NHR5y_qU*vFeL(m_zSvYOZq`gKGcaZE-ZkzWF)W)%W>9twm?nK#hl-a;wQ zlM^bcGB6{lqYR&6*3=RryM4bz)k#dD{kcKy|35OKCWnjPQ_ZN#&2 z|NCEWq?Dw7|L&;u>ajkHOXt%FGE%D1AVL>ceG-K=(Jk?8>c0mbzCC*Nn2*%>{?~DQ z))~g%O7(+^B*F`;8SIS=JDiYpsI~&A+E4S1SC5gx;Zt=pK31uimYU8gk1XYPhPP*V zXjX!yL1!@LAFinT>ahl6@SOJScnI5vOnq$a&$c!h-AFka&$bw-00Y(qyd#ZX{q?pL ztFcJia2pu%Y~$6h&t@s)G>iW(EcVr7v+)4Y6V}W40$dK)Vg{`ZSiK6+`mw*NRr0R? z;@p;18T9RG+n&B1g3T7|fcgI2o$r60r8Z&_TmVs6H?OC~2JLZ zQwpkltFv(!zC-7)fC-ENy4CMCGU%*8onFZq zkAXuJF&XXil_9p7{MBQK*nCGUtIytyOpM;4a21BlW)567)&=^8qg41Q7LtgTx=EKd zc?A{N2&^-OGV~ID)+_?ptsGY?Svo@iTmj2ooEPvp2wnW6T?m60{aY3(>dU`zR6D{9 zts^*x?z317d4#G)iH`jg0CKE^9f}Mfm)QX)YhEJ&fnt!HVr-dg8z-Vu@sPe^cyvKH z9S7+flOLlGNeNi31iW(*z~RSAOA(DZFrhURLt&FW_(wVYgH4?iu@}-Jooq*G?OfaP zl@td`G*eKsy=zboSW5Xshld4d_eMGWm8XZ(8iQ8Qn;GE?%lTT^(Ljqcl68!S<$b-Q zts2w={Oo4~1c`#9?-jh(Pl?z6uf1c8zvZ720)G<_c<{&tm~U6y-@D@BYcAN+Bhn^y ze=pj#EQ20SUQDXssyFpqIqvOD&O~WQGm21g=rG2tYMBF^>uwq>k7HBINp?F9V@$x*decAPi7YFweO)v?A3kq$-bg9eRitIZY`>0a`mtHhduNB#{9 z#i`sKf^((S8A4eI3Csj5BN&N6+4_doYts_H@kS52q==huSL!8!OJADr**um3U9ziq zUU;H-H@997WoY0sJSn23YTT^Ukx-5qCB8iwiuJ> zoF}k@Nul~&;XrlS;X9AFTTXar(UY~2im^6QSlB|QY4Srul?3l2rp2Sl6{Xy=yR2Y5 ztB|bF!yU{gBPKC^cj$1WW1Nj=1?of{Ep~oZd_>)A^H6SXB9G*Sv-6#?(!_yIu*dC~ zSd_%#{FH!TmFCeL3!^}%I~5?$3*cEnO8mx?)3sSM733jbS%glScr!Cwms69}WjljI zAy_yIMwbHK9%oSyNV++ecOJL5wS}I$en_ZiP(h6%j+p0S7DAjIJ0=-)JHU+5*@CqqmxZ1qgM9|H7+usdrEx&E zoDgbu$oa8ak3mQAbbH!IWe2Ua?~aU2e6Lv~DioPE#xsK1YI*-88;m5*%ZgFtRU4N} zi3%W+hnNFq1kuIR&&z}_((+Yd1Y!1RkzB;D$Z~;cqrA&qRUzLXcpGw))$-{BuR&R@#{oV;JZ*$&p0C8huBGf<8}qC+_w5nzA4k&?6VCUrCOn>Kibh zH2Rk={toaRVb;r9>54e%2k!39ONgq}bkG6fQWpPLEHUmpeuqeZq^ zC0!Gc3APdC?XW+7(FnDa940Jlg+29kJ8mR(CQ@coJKDMUDA@;qiJxH^)Cp=(y zg4m1R@WG?Ki!Zh{8C4kCwzk0DXPSeazzg|9c`EptXLk)1e1RUl&gvZ#3dv4Jw+bqZ zSy_B^08-&cLXXjg7M`}Eo8rNYLi}R8{Uh3|K+-TuLs)BAfIJ0h2>9&9zqd8nLn(;`|fF=1RW)k41 zUmObRlyK94lo4Q78?^BcL)uWo_Gs}%e48x3#l8)gSqG=y0Ju5c8!=^rj!by1CIysK zKWS{iH3j+6jtYG=j-c{K67@Dqg>EDoLx`E8^w8k5vl|bD5CeA|+JeB^;G4oP$i3Pi z5H52}2O%ZGi4JrZA3Xv~WXFGW^w$MWCTB)XEt1qeb|>%)&fn|jtdZ+k*>ht3|R=ScC@2SM~WkmOv;!-zmLfrfD5!}LU_XwJl`ybVlsK}FBu!R$OL7Dk9v*bHXyFLc+l71}fH%MRXhR#ek!Jh=A0*?0kMMEH|CgT@ z&Xx2K$VAy|>~hv!fl2hyfer-qL95(ETdDO@J+v{AluNY z88)9l!=0I=?J^Iu5jxjIT_;C+!D-*M=!mq~c64y@#l zlC8z>)RB;o6bmwxEj}tERO~Syd^QNau#FpYZz^n7j2{Y~abA`KflLKfSqQ-#8~oom zEDJg^=&&a!-FcZdd5eib)_`Pm%5WBPeKw146FkAdMT=S_>Y`Enjh4@)Pd++Ob|u64 zN%99<(E--#Bz7nke}pxN9Zs8M>$Dt5R zf|8B1Zk}S@$k~JaxJC*s9cf_h;^jJr=$)~sJ86Rm(H|Jz$-Yoegd~4oEa;=+R)XAq z7#fLPLI(OY{(Z*Ko5o*RIyltYcRO<1i7^;R`X*};NHJc{iG5os3Y9^NG}ro_nV^!wpne!#22F7 z=yi1^?0F4=v`a}v88&A{>k03WXqw0DtEz(-rWKo8p-6c(i*lC612&RHpy~QYI2SR4 zxL07_kU$li7U!`fJNi}jbc{Tt|Yc1 zmn$z_W}%)My}F7zWR5agOlLClyl7~2OjU#vugrsdCXkfaO@@PDQ)eP{5S}$KSc8d> zH49){ZDMx_qUtR0#3Z&#;(7WfsBHnc0~k?QgM=rlRa7kXz8mdZpfo|t%#|&R$cp=9N(H|W*9o!+6Fus>W6&IL+cT>~F#vOtu5xN!PxsHlV_k9v_UG1^oy58+NLS=u#q z*;d)S*S;&!AU=#%pl+AA7~G9m#J7j8MDrr_ql49q!ViiM+?zu~1GeifHFu?0(4SAB zb+gaq4Ornyp_$!C%-s>3C&611i`4~T_2u;>j^7b4mZ}qq#t5M>L0D@^S4Pd^-A3@K zp#9d|H^!!^M`2BX!87me_ez3Z>2w}Wf>LDwV8~cmb@`N1Q_anh``?5>kfTc{>~l-O zG3?kSQH3Yg6Eny*S8}JQ7}~K^T|)6~TyCgfzzp@%$WA9oPN1|+k3@mePA$||n-Ex_ z9BH#j2U_aQNogWs~M-Y9caJt zrSKH$JuuGsv5J9(o215<`R_5xdqd|MAfyZy*BX3aP{S0Xv}}U3EOcKVsX3@L^s-#T zKs7}TX4w89t=rG_K~y1W18Y_GqZqxuWnnxhCPOh1hag{s)}R5HCrMkHw$@nuZhOe2 zL5&Zw@|6|KB0WNTwe8ent&VVkeL~R+PLsuNaA>sq92m_(+#_43i7z<@EXp54lFc+0 zze35Ju|h(1JU~SB0T#yjm4lje9~-63__kgGmQzHd1mn|q}8zvK!i$w3Ss1oStn0*ges&%v2vw>K^&}$@*HGJ27#Ws69vH=Ws_du z8}&2ADKqMI-0~Yl?nG&88G$z&1>m^z?TBBh!E?4P94>xKJY(efdRL^2P-HJ`5`;j- zxV8*!g42u;|{o zk__^rC{_}~e9!sNift9p0z-7bX}2d>r%p4Rn>Z1@j#`b3_}|{e6FQxb69R%JQIPU& zUOIZv5e6IpwyCWLBnfpxG6p`z$GTugb6~;)XoG@ipws9AS&pLtuRqaC7QY1(vC|SY zeV;mCt5|&wK*mO%PxKbQ(gcLCj|zx_4FF%SQ>ms_@}&P}BpImD`0J$?3_H7<8R@zxVGZqw33g9eQm zEA}ceLdevk!=yQrF@cszHWqwGZL=-Mb3!$>vS0GtZU0U0!d&6jrmvoDWlFbJ1*U41 z&9sWE1PPUDZhASYxICLmM@5;F+Z@e7L3RyH{;8r?3PtjqrIo{_DTGDZjTYNs9RMMP z{{~859$J1%M9-~cnL1{>Aw#{l*4gRsZa{nb1rHUz0`L5PQ`UkHqmsci)uYS8NLr^L z258RF%HGJsLYNkClw*3nN}Q}(f$Lqesg!IX)iTw%qD(-+zA z2za7bmLFgtWD|;{ZwY!poQOHSvau?v==xQKUt}3zOW6}E&0t}04;d$NOZ*JVHZ9G8 ze?R*fWM2onL&!%Qu?P~W^H_bbFWnZ!^w7j1)U8w(S$Dx!QdT-1ZL`kRnhxorUGr1G z3h4_Ty4M^1j3Nf~#sRK!4}a_73G@cyJm|amLPI*UD(`54?%{t*?LF_gyI_hmryx%e zCo)|@AvFVw1`(i;BNNgcwDe*3L2Gmeu7~*sfJcu6DhS!jxtT7fdfe`boE=VbmZ^^o5cfm#nI zGD2Y+pqH%3JnczOk}jo`ERf{0(oQfsl({2g6ofq*(WBuoTAq}^&oXXl@dxXG7+2g; zJ^a|F_M&q4MNJ0#_)=!a;>92kArG^)RKX4SLYF-mv;_x}U5uiQdw_ZvdHt})IKGU7 z8YV}B7Nopzm@2G^JP|2P0bt}*A{X*327PL__vE=G$o_hp#7wvgdK()gFQ0CTBwsc; z>=nu_qO2yT1rmqY4E;8_Vqh=_Z^czb$vmzDM(>eftGk?3w{02t}Ago7bR6PJyUg;5Y5o=({e;6)t(UPBRO&;%>YJKd`6e0h)(6iREJ9x zaDoBntGemB{(X z#64wM6Pt_MN0in}2`--l_fA4HO%p8C>_Byt;tQA0_fdMS8gsB( zl>0if3Nu9cV7mH%BkIp_+_=ghYF?^LsenZ6J_#7GiRor*!xK13qn7-F6fn>x7ul7L zXz_6{pwxU1Yw8D9@7KDCWk8hZ`{Gb_)${0Ow$2XOT^qoVLEfb63;#nRgZnxOij1Jb z{}?uD?PauRojOP_7dk-JdIP8trJxH~agl+G8MvK%b~%_3K;R7_Am5#k#im%y43~{z zQ_K5mOG2)j(9u4cf=3~FT=0GT9~;nzLEI|g z0giyq2hn<+RufDt(oU5;ekP9`4t7HdFLDs$l#sJ{3N)?$qkyFeQE+~B5`vWSX0<*;;N1T)ltK|+b!S_c{G@B%WFD>#R$3GD=W$Yquu zh7e*!r9lnVjJ!kB6YVk_tqN^Wa;!nd)=Ae10ZA(YWMdLqP!}(SPxQV3W?Z1n83Zwm zXQE3d6z?+ua5H@MdXQUe0_q{kft!s1>>F{cgi~!>fn)m73;6A!+=#fD$9z3-3g+dk z8hhibT0F>S{Fe1wcZgA9s|@JtRBk4r)fdEHzhj;h1h z$&5qt2*|{XCCNf=bJEh8R6AcSiThf*X&24~;47(KmF7t$jR}7R4an}oW)b_-F-47! zC%0e;u32~S7=Oz@B?L+cj6&dnU)hM;V8;V{_dKw1QdF56&mxX3A9|UPidftPQxjaIzQ2wE`YPXl%tn0C(YVbl+2^k=2shkECH!!cR~Kg-U{y&S=& zG&3H?ZC0?|w1)Ab8{>%ksh!klPd)Piz>evf5HJnjG=V9~tQ8&dW@N!^7BpOWG?R!|km5*DEE=nI7TmQ3#8h5M5;~&Gi_{~F z0M8Fr5X$=Mi}?_fMJxT#E)ZR@i11<;1`;tR1ky$hAZ=76VXh9l@eUdu08^vd5UIu; zWZ;I@g2joLVlwGI3d%~!$1XsA&6)X+&FpL@e^d23#vJRcZBk|POODx3sA8(}K?bqvy&HWgYeT7^>m!ddYpE4oa!yawPq z7N-~Ni0Y%!)?y>A7TkE}!MwXf4mpM70FsU*iyx`FDTp73lewfcI-v&|6tGe_9PUxl zC`i=C3unJovyQaH4mZ)s9ii$chYu|!Z3ke9h`aR&Bt$}5JdrZH)K7js2-jv%Jl&Fo zM}Y?Q63IR&vjK8O;ZYhaN6AaCNPMxJ3SHf4Q*x(=nr7rWrXLWk1B1BAUR`ZqQF{nq%j1a74m}kFsi2S1P&{u~Im20!XF*mdfuUw^HttZ`FbBU?jw$v# zxdqCC$~aFGjm494s#X@iO0hBC0_x@zqee4F-pn2%_Y`0dMJv%L^E1&$VKl*+*!%qI?B$nndHM}CTj(eDDm1{5{wsYpdLSV z)7cs&EPRD#%)rfzQBbW(6993&1vz__NB^P4#|U`OSPn5qQ}qmtQe#t{#mB%8_rRLy zne82d2>=6DZeIbhI;#=kqf)c9Aa+2DxC;}96k*FbnRWN~tnTt;HQI(OImTl3$nDC4 zEe5NizaUg;oy;q7gUZeteYZGkSPn-@tKksQ{!Qef4T95D^o8?P*v;AXK}+A)cj^ z9AC2($Zl5o`EsZuWn?=eW@hm_Z~*HJ(5)F|OVZdmRs2=q6l883O_gKt~y#gHr5-RTgmd!5u|`T9;(a;$s9;ffvvB7f&kJ8$r_& zm+|Tl00#%eC zp&k{_=-xnzgu&>AfbHM`do5m@wmIZBiIi?>$2=^PXGD&(Z7P#^*hP#e%Fm<_H7B}( zpm~g`v<6-7sa;4}bZ|LHcuGfo4y3YeiJ5T7b0SAb+ELfA5C~^Pcqdd(I~qO9XOqzl z(29;dF`|aZX4c4|yLggfBWGpCKR8n`8g|1hUh#)IOP*Dq<#KZ@2Lwv!^>upq_hbPv zTO;$sD1&$r#{gmE?@k3@PvsNSOTn&95NR%H^4=x9TR4mSBC~(N(%r1y$+|wg$0odnc|m? zL(Gk*PNx&;qK3I5Vcy3DBE&QntN=p!iM%KhcRpxE#W>-L5#0V?+aBX@`KN@yUoiw8 z8sCILef0yEUj6VTo2F5LcH!YyGwR*e-}^Sz`|D#F0|X)Xn=8XSfM$FP8kV|XX3dq0%>1V{pi~2VA@s(mNq#I7I`RmFNP`CM#Bn~c{LJO#-gw^fS%pcoLi^x zMSO?o0Qli7YAnxhTa1b$HcSQ|MmR?E!iUC#$L2|XLp&%c7cV-;x`;WMg<$b{9%(jR z)mIB|?Tes4t5DqCTMh8hh#7!E9@JxtTEYcGeBRRs1Uy?gX+Nkx#2l%wBRY$@XnHt~ zbh+)ZYvJE0s;DQ03&3yd1GbomgbRT3(BJ}?%G`y)m_lplu~cYOFoY{b;aF}GmS#WE zMF%^H+CJooKE$5XYt}nfnB!;J-zZhY??PTfWnk$Os5?d2&%PBxUu|1I@`Hj3Z_s6f4T+ zeRL*5{>bdSEundmLV3O*G=2!Tu&;>Z2hIL&fr|kC$YDzf?wn0;L zgIdk|&JjkE{6mVrf--Cf8h3Mg!=-s z$rJmF2K3HEs0kHs8NH+;7&GEBav|kx&@+z&3j;u2$*}rq@Mi4Hdld+MsM+ z9H1@2^@bK`)Yc6kbd&ZEA$#kpk<+DnRtD{cu5|>g!~S=9?txLOoDQ;ZnZVs?p55*S zG}%Yy%vh1Ro`>$OpudRSTihPkiRg>%cIC5_+p0|;0nR$-t505w7+t2zPHk?rB_Rb~ zJ*QP5GYtyPA!DWp!brS8v{3mWg;=;VW%0>Of=C72s84f?CkRqO%X~!{e#N54E^K5; zz@58`ClE9W#iSl?$6kk}6J3HWCN*-u^%w$1wy9HqQaQxRaA;}OIEIZ(Rb1Od(PnbO zMf(&8C#YMcY6RR9{bUjCDn;JNHd#>wc<2feR~Mg<-#HJeD{^GI zuZ7A50EkZkP&sf!=s5Se#IpD-OFGE@t?tMC%tRW&cBFeONgAV*n+OuVsRW5aRta>9 zIJO7;(25tIJQ8^HA=+ko=&x9eWR?*FWCf{^7@?FE8`iQdM9+NAN7_SgkV`HQ?`Z`B zMxTm#%blp%F@X&m;pcEve!(E&dQyXf`7A^R3PqBoEqG?u19Qr#9yqESo{KM1RJ_wi zz<3DyR@232QNNO^R543hak{Q0hm6if;Eibvp)wU4q}aU0Di}-B%#Hwa;)mG92Pnn909<)pp%`!j-Y#JuLY^bfOA+ys<%GQ=(GAf&N) zLcLR?#pj8(i(djJK(+WhO@162w%fX4iEmfPJ#9OjZ0XEBHY{X{pZV}6D2l~a478ajnBnZHn1xFhX65fats;E?1 zXmRqKkpX~#TyugiFsDFMMB7*&YY;5hZzhcv`9KM9WxghZ1e|@1+^B=s8zZbfy1}8)f z!vL|0aH(*`y+xLOUq!V*Cr1fZf2=&6JyD0 zq}p>Nm=-KkxJwT%?lDogyA*KQLLH0l!CrN7b4ZFsW1v-!r;~>un^ag7;#^PhjPKy( z#eAad9NW*^yDLa3hc>=HO(Gqds2pZarwHf4&4|Y_y>Bw3x zzDkP^=c_=ku)_20vIKH1pD%HX%e!jPx{=P&tLuakhs;oSMi`ddIu`cF z5P<_Wr4yt0^$CPYEGj9nsc8zcIIlmqv|$p!!Nsr)onQ_+zBJ4InBKYh;)cecW7x1r zh$6pvejCa{NSu~~fxJn((<|SlplbHShyv{juF3`!QAk>7ThMrImA(CkWFUa4UN>o*hCczCLZ=RqVO=P zi{S~VRdKLHI|p4Q<|?sKKuE~8P*J#9+ci~g~+;|Qr;=sP!bRdw0zBifprpc%HJ^+RJq#!)32jx-Ya%eh5O9LIAgx9hB zO@tyAN6d0`71T#>)^E#B;yKdO<)26P;y4Nma|#%G8PFyy=nGi_dP>`QPS7^svX;^N z1}P`sSXV0B@FB+p!c(L=r#mlkLAk_nLhKDX zk-Ce^25D{U;y53~`=yDBs5K?!e62JMB`O>aTU9cwMXOi%b|Q6{=b%7mx;QhxEDm;I z9yA*61r-;9BHy5^aY@q=caV-u-%}oCv)0ZNHA=fRPm~z0Qsr^&*oXL6C^*+n$Vm)d zM7!rndOymrAf}hq`pC@QVK&BDZjyqr<%JPC=3G4{w286-YZ#5$lp|su0V&lfdXQG8 zncOWka$)Am*gYzjl@3&tx3i*pUVPHjQGwZq^E>?Ht>8%HMO$8IK$GUZ)dRnJ z)x#gyyepPsHXB_Z+_ef63|iB$fDv1-$XKrtN9)N1GM#eJo={>6@jcpz$uv+&bP>T+ zu{O4etPFKM9SPOjWksPGl#-d1b|s|@Gh8XNoIIwt)@R)QJ5a{0w94G}B@V+&sNwUL zohwt`i{*=sZWQa7v1JwcLH#rj0blsd0GhxPmy9kIi6NUp*pg=R&$g6^q+; z1)^20&Tb&wOWg#K2`LJreE&<)N6UQiMhM2b^qX#Jz%t!xFC zFA-2!eLx;r9$mjx#;>r|R~fx#b?4pP)H*1bnQqZ2-OQ>e+%e(1_5}Idth8Daa*UOV zu8^WyfrX7K4o;ka-8GvNmPwBxX{~XUXP|{x48p9>W=hj-g<9Rdf+zqBbQ5lJh^EPv z$NC#K-W%pbc)VABZyD|6>sl8?b4jSV0G1qa1Z#GnxRnBV%Hp3F(2ENVMspO5@;oJD z)Q-h;OUc(Wz>HY1YR!y?iDeTAtHDY_IzAxrY!(5^T!n&$Sc9VY-iJOMZA;UXeH!oK7BCX?VoeqO75+IuLP~>0*wxFpHW2RI^ewyuW~f@81DnT1fV%?ck|pU- zb{lGEhMbZ-TzwB5#e3AMB0szyP{+0>`b8^$Zv$YJoWRzsTXHF>P?0w=g!BRM$YU+9 zB^YMYj1=M9At2D8*Ku2@S-b&TXShO0RSZ7Q&4CNxc1UPq?9qMI=8q=F=an}-?k0+2 z-EMa(Aw({BaCSiJR_%z!cAm4zg#K zbZ)*h#ns0=C#MN1)bfKtd6wLQ!Rkp|=MIpfw4{6+)rs{$5dk_n=cs@x8 zAxIxL;lv4bvzR=?u)f$Igvb;YcatPgpr&ax|M2q=>&Nrl>L_rEQ;}%2Jxk-5xgrTb z5$HU!ZB^SAtz?-Y`fq_DoZcid^en&wpC&S^m}SCt5MUlW;#+!0BOev33sEFM2_+IX zw|PA%&iUb8EmkG(iXDZ3AA2VfJj_TyNGXyTg6kF#&ZQSIM@pSlwyO!aCP6@ytA>E9 zqHh|UvJwr>V+xAf%GEg)Hic)?gH{Zq?xRWr<^`~!h~p1{nT0KJoC|XDbwjZh!(~R7X+!J`BeELG z1IZ@K`lJOgBZn=FtsdlLg+YxLDOSuemuBh%qf-D?%ae#VD;H*@uTXWvSM0QqTOPG# zW7-g_mamsYz7R(*HYXhOraS7;8F-S>iKH_cenNJsAsCpuGK4&rahB>rS|YzfDgufY zE~JV;+KW$;E3S|$H5464K)d#W1Up!H-T@wW^#|Y>SD<4yMj{i0XNX5rQJfVFthx9s zLeG*kJZq)8_$Q#WFa&X^ug`{I@{c1R25VCTFKhehI5pIEPId z{BXl6XMl_xx-uw_Unv??izCMfNqZi_f}J9XUWsUR2T`1u>K_J!0=TInW*al)Z5S|| z!vO&*<#-|H@a__A4n-gl9+ttobj4FqI&_FAw6(Q39voznhG5X*aGHBG6~YyH3*qY& z!Ae{vhTMmCH9iz5h4IOTRl)$1srQ8XftYk;?$M*q*UXcL+V{a;kOoFcmUK_$1bwR* zE06NCRhn@oMEge`q~9W{GQ}@S5RxuKVn$P}6kek&6*NVnDr8nP4Sp<+tCVQghj7g3 zb>K+_dEO6+NI-2E^dCvJpq#4C28S60O-nb{^;QlpRaNt~X-_6(D zcW{fWzylZ>B=(|YVLb1aCk3n8?Viwo-_1h5{1Af=D`StP4iGg{h>kIaJ|2pyLvqII zCW%By$-{)ZVy`lW87skHq99Bj8nk$L9%{L@rZ;0vX1q&$1^bwd+mh=Iq-jH0<_I+_ zrImS}x5{^akC|Tb4)Dro)wqN*oc@Zd`i+Ua>meVYl3G1s;RRwD*ubeb=(eyS-Xt6# zOe9Z%Y(2VJ;>Rk%ghMLM2ORXB}z)ovVUc!WPzkgv?p+oSic*#VjcbSk;65W?xPCc zp%KrNjizUrS&8qut4#~aGdVo-9syUlrRqWj>D}ftFz*yq6_^u-z>$<1``wV}2 zA+jzL)?GxwcVpe)t1{hM6Yly5N-dxA#<&5WAb?CHV38pAd5SdIYw#zxk{b1e_OE9ud0qVzqda3*r6m8v=WpEF9-*Vtc zcT&eOI}>d*I@)>ZXtfFb=7wrW(y=5DRd#S07;l861A3vg+r5P*CC+I)p>!(C%q8of zsDKe%?~?cbZQ=c9|F8Y>7=Oz@B?NxhAn@QXZ}rOZ-9eNs(8Q`wu=pI^3HWze;9bE_M$n&i+Mz|AG8f-Bqwu0Kn0mz6aWT8~QQWe2A14uh|5 z=qLc;jssJFQ7Lin3gTWop^OjN0s?H>Q^eB}3sB=jKftR=tiV};{vFD*tyvy8S3R(0 z9$^1>8WeR%F6HV!kyh2nlZ!DII@xtv2)B4H)#F&+_yfFyeX%WUhLI3%5g?K2 z$?Y||cPq>k0GzhxbX%M{)dNlb(|**s0^Ii%8q?(p79x`!5*@Js1RiHS)`Z+bN|15=@C0_DnB zE5H!y1(vK6^PRP^1RNhVVL^)%jNQf@&0b;imI}diIt^i+0V`T ztyk#GolIaPaWKFUJEZLm-{n?Z9=`$%J?d)RMUaDBjTC@1-+?ZrLxfZkLOcY3%*+ZI z9Hj~gzkwlqYWi;PXRoF=6Y-y(!yP$ z_6n-_?sELVRZ&AA)-}Nf01g>eI1m)aAtHk<%c LbOVppK?aC6Fn1uge?@sO1&)O zTA{piy#bd19WwF!{qLs|1q2K1rq7N;y@^sZvf^tKd>j z9Y*CXpVe}yz9b$Q-NAfsiL zJpo5)qbsa>OW!q1n8rB-VK6Kjv7*Sqw)L_B8FfW(a@RU@tSn%yE?&H zrm#&BO1rVJ)J@QIW0I8Y?mQGnwZttn>)~~EMd&Fvp{2!oa9Q>yRs(h*5oY3u(u1Xe zqJXLkmzT0DE)+}>tfi}EUZKJ38UJ2J9~yLi(|R62o{_%;dq?&^x+qs&S@`_yFf!&x z#@$z1mDJ%7Q#QNa%sd*E%sLQQ75P!QilHYe=VNi?qLD zIdO|G+tbf&qY?g1-xVWE0Dix*|@|~Mc4AeXqUpi1p{)I0Qk}cRep25 z-5daMa9aW{BDX&aD>E-SaQx8i0Q)d+#E-#>@1hSp#zlUYAZ?yD=WhUefEQ6%S;E6YL1U+V5umsCDS8J0nRgvpYK1|3pVR>pN zmme8pL0Tb=HQc|D_e&I^na{))JyH^n+o{U4xyMndvH>?nMR}!wtyTM7;q$N$#34hA zJq~I|ZU@+srHJ?qdO*1YK5|d?e-l{fiQ>T-@1FB~Av*_&z6 z^+oO2NQh>WmZJ;B!-dGvP_sJ@qlPa;5~=!3Xc^s>kvmzmU-Uy}%om)Ks9t36^8Sb< z8ulU!Qb{8=Bcor9y?616QITYzpuJ?QjA9&^sT{+caNU+srA|uNFc9#a`qZI)NO$0) z020*$0!i_K#^UpweU_MZtuGz|Ib`1_qfCIp)^94!3`36larj;_Wew zMD8zDuC_NXb*fE zmu8TaRnF*uhtVlQxJhLo$~y#OCeLhwfY+QOcwa;0o8)~c&>+7`m)NOHNW?;lmbEx! zk0`;_7-CYUJ!I};&r29o2%^@gY8w|Mo{d2v&rrlUXRT_T1)I`w6E(sn00ui0GcoCi zbk^@ymBLAfWp|vfApNGSvZpAr2(=fZ^kt{k4z4gm{g=VIsaOhHkyQ{#82X4dFJxov z65RlIx~<;YraI2h*F+U+hzi4?R}=9I0AGkhXh-cKMZubym-H3rrJJi02eQyU56DEI z#B?Iw73v1UOGBa-DDovSG^#Xl4mcPEvEq1Ex--X}IW`?PM$DwW=SP7R3T_gG%8g@v H+2sERZ(@p( literal 0 HcmV?d00001 diff --git a/tooling/pipeline-results-viewer/public/favicon.svg b/tooling/pipeline-results-viewer/public/favicon.svg new file mode 100644 index 0000000..0906f9c --- /dev/null +++ b/tooling/pipeline-results-viewer/public/favicon.svg @@ -0,0 +1 @@ + diff --git a/tooling/pipeline-results-viewer/src/main.ts b/tooling/pipeline-results-viewer/src/main.ts new file mode 100644 index 0000000..90242e8 --- /dev/null +++ b/tooling/pipeline-results-viewer/src/main.ts @@ -0,0 +1,147 @@ +import initSqlJs, { type Database, type SqlValue } from "sql.js"; +import sqlWasmUrl from "sql.js/dist/sql-wasm.wasm?url"; +import "./style.scss"; + +const DB_URL = "/biergarten.sqlite"; + +const tabs = document.querySelectorAll("[role='tab']"); +const panels = document.querySelectorAll("[role='tabpanel']"); + +const tableSelect = document.querySelector("#table-select")!; +const tableContainer = + document.querySelector("#table-container")!; +const status = document.querySelector("#status")!; + +const queryInput = document.querySelector("#query-input")!; +const queryRun = document.querySelector("#query-run")!; +const queryStatus = document.querySelector("#query-status")!; +const queryContainer = + document.querySelector("#query-container")!; + +for (const tab of tabs) { + tab.addEventListener("click", () => { + for (const otherTab of tabs) { + const isActive = otherTab === tab; + otherTab.classList.toggle("is-active", isActive); + otherTab.setAttribute("aria-selected", String(isActive)); + } + for (const panel of panels) { + panel.hidden = panel.id !== tab.getAttribute("aria-controls"); + } + }); +} + +const renderResultTable = ( + container: HTMLDivElement, + columns: string[], + values: SqlValue[][], +) => { + const table = document.createElement("table"); + + const head = table.createTHead().insertRow(); + for (const column of columns) { + const th = document.createElement("th"); + th.textContent = column; + head.append(th); + } + + const body = table.createTBody(); + for (const row of values) { + const tr = body.insertRow(); + for (const cell of row) { + const td = document.createElement("td"); + td.textContent = String(cell ?? ""); + tr.append(td); + } + } + + container.append(table); +}; + +const renderTable = (db: Database, name: string) => { + const result = db.exec(`SELECT * FROM "${name}"`); + tableContainer.replaceChildren(); + + if (result.length === 0) { + tableContainer.append( + Object.assign(document.createElement("p"), { textContent: "No rows." }), + ); + return; + } + + const { columns, values } = result[0]; + renderResultTable(tableContainer, columns, values); +}; + +const runQuery = (db: Database) => { + const sql = queryInput.value.trim(); + queryContainer.replaceChildren(); + + if (!sql) { + queryStatus.textContent = "Enter a query to run."; + return; + } + + try { + const results = db.exec(sql); + + if (results.length === 0) { + queryStatus.textContent = "Query executed. No rows returned."; + return; + } + + const { columns, values } = results[results.length - 1]; + renderResultTable(queryContainer, columns, values); + queryStatus.textContent = `${values.length} row${values.length === 1 ? "" : "s"} returned.`; + } catch (error) { + queryStatus.textContent = `Error: ${error instanceof Error ? error.message : String(error)}`; + } +}; + +async function main(): Promise { + status.textContent = "Loading database..."; + + const sqlJs = await initSqlJs({ locateFile: () => sqlWasmUrl }); + const response = await fetch(DB_URL); + const buffer = await response.arrayBuffer(); + const db = new sqlJs.Database(new Uint8Array(buffer)); + + const tables = + db + .exec( + `SELECT name + FROM sqlite_master + WHERE + type = 'table' + AND + name NOT LIKE 'sqlite_%' + ORDER BY name`, + )[0] + ?.values.map((row) => String(row[0])) ?? []; + + for (const name of tables) { + tableSelect.append(new Option(name, name)); + } + + tableSelect.addEventListener("change", () => + renderTable(db, tableSelect.value), + ); + + if (tables.length > 0) { + renderTable(db, tables[0]); + } + + status.textContent = ""; + + queryRun.addEventListener("click", () => runQuery(db)); + queryInput.addEventListener("keydown", (event) => { + if ((event.metaKey || event.ctrlKey) && event.key === "Enter") { + event.preventDefault(); + runQuery(db); + } + }); +} + +main().catch((error: unknown) => { + status.textContent = `Failed to load database: ${String(error)}`; +}); diff --git a/tooling/pipeline-results-viewer/src/style.scss b/tooling/pipeline-results-viewer/src/style.scss new file mode 100644 index 0000000..abbba7f --- /dev/null +++ b/tooling/pipeline-results-viewer/src/style.scss @@ -0,0 +1,267 @@ +$gray-100: #dedede; +$gray-300: #c3c3c3; +$gray-500: #808080; +$white: #ffffff; +$black: #000000; +$navy: #000080; +$blue: #1084d0; +$teal: #008080; + +$color-surface: $gray-300; +$color-surface-alt: $gray-100; +$color-surface-sunken: $white; +$color-border-highlight: $gray-100; +$color-border-lowlight: $gray-500; +$color-border-light: $white; +$color-border-dark: $black; +$color-text: $black; +$color-text-on-accent: $white; +$color-text-status: $navy; +$color-accent-start: $navy; +$color-accent-end: $blue; +$color-desktop-bg: $teal; +$color-row-stripe: $gray-100; +$color-shadow: rgba($black, 0.4); +$color-focus-ring: $black; + +$bevel-size: 2px; +$font-stack: Tahoma, "MS Sans Serif", Verdana, sans-serif; + +@mixin bevel-raised($size: $bevel-size) { + border-style: solid; + border-width: $size; + border-top-color: $color-border-highlight; + border-left-color: $color-border-highlight; + border-right-color: $color-border-dark; + border-bottom-color: $color-border-dark; + box-shadow: + inset $size $size 0 0 $color-border-light, + inset (-$size) (-$size) 0 0 $color-border-lowlight; +} + +@mixin bevel-sunken($size: $bevel-size) { + border-style: solid; + border-width: $size; + border-top-color: $color-border-lowlight; + border-left-color: $color-border-lowlight; + border-right-color: $color-border-light; + border-bottom-color: $color-border-light; + box-shadow: + inset $size $size 0 0 $color-border-dark, + inset (-$size) (-$size) 0 0 $color-surface-alt; +} + +* { + box-sizing: border-box; +} + +body { + margin: 0; + padding: 24px; + background: $color-desktop-bg; + font-family: $font-stack; + color: $color-text; + min-height: 100vh; +} + +#window { + width: 100%; + max-width: 1600px; + margin: 0 auto; + background: $color-surface; + padding: 6px; + display: flex; + flex-direction: column; + gap: 6px; + @include bevel-raised(3px); + box-shadow: 8px 8px 0 0 $color-shadow; +} + +.dialog-header { + background: linear-gradient(90deg, $color-accent-start, $color-accent-end); + color: $color-text-on-accent; + padding: 6px 8px; + display: flex; + align-items: center; + + p { + margin: 0; + font-size: 14px; + font-weight: bold; + letter-spacing: 0.5px; + text-transform: uppercase; + } +} + +.tab-strip { + display: flex; + gap: 4px; + padding: 8px 8px 0; +} + +.tab { + position: relative; + top: 3px; + margin-bottom: -2px; + font-family: $font-stack; + font-size: 12px; + font-weight: bold; + text-transform: uppercase; + padding: 6px 14px; + background: $color-surface; + color: $color-text; + border-style: solid; + border-width: 2px; + border-top-color: $color-border-light; + border-left-color: $color-border-light; + border-right-color: $color-border-dark; + border-bottom-color: $color-border-dark; + border-radius: 0; + cursor: pointer; + + &.is-active { + top: 0; + z-index: 1; + border-bottom-color: $color-surface; + } + + &:focus { + outline: 1px dotted $color-focus-ring; + outline-offset: -4px; + } +} + +.dialog-body { + border-top: 2px solid $color-border-dark; + padding: 12px; +} + +.tab-panel { + display: flex; + flex-direction: column; + gap: 12px; + + &[hidden] { + display: none; + } +} + +.field-group { + display: flex; + align-items: center; + gap: 8px; + + label { + font-size: 12px; + font-weight: bold; + text-transform: uppercase; + } + + &.field-group--stacked { + flex-direction: column; + align-items: stretch; + } +} + +select#table-select { + font-family: $font-stack; + font-size: 13px; + padding: 3px 6px; + background: $color-surface-sunken; + color: $color-text; + border-radius: 0; + @include bevel-sunken(); + + &:focus { + outline: 1px dotted $color-focus-ring; + outline-offset: 2px; + } +} + +textarea#query-input { + font-family: $font-stack; + font-size: 13px; + padding: 6px; + background: $color-surface-sunken; + color: $color-text; + border-radius: 0; + resize: vertical; + @include bevel-sunken(); + + &:focus { + outline: 1px dotted $color-focus-ring; + outline-offset: 2px; + } +} + +.btn { + align-self: flex-start; + font-family: $font-stack; + font-size: 12px; + font-weight: bold; + text-transform: uppercase; + padding: 6px 16px; + background: $color-surface; + color: $color-text; + cursor: pointer; + @include bevel-raised(); + + &:active { + @include bevel-sunken(); + } + + &:focus { + outline: 1px dotted $color-focus-ring; + outline-offset: -4px; + } +} + +#status, +#query-status { + margin: 0; + font-size: 12px; + font-style: italic; + color: $color-text-status; +} + +#table-container, +#query-container { + background: $color-surface-sunken; + padding: 4px; + overflow-x: auto; + @include bevel-sunken(); +} + +table { + border-collapse: collapse; + margin: 0 auto; + font-family: $font-stack; +} + +th, +td { + border: 1px solid $color-border-lowlight; + padding: 4px 8px; + text-align: left; + font-size: 13px; +} + +th { + background: $color-surface; + white-space: nowrap; + font-weight: bold; + text-transform: uppercase; + @include bevel-raised(1px); +} + +td { + min-width: 120px; + max-width: 800px; + white-space: normal; + word-break: break-word; + background: $color-surface-sunken; +} + +tbody tr:nth-child(even) td { + background: $color-row-stripe; +} diff --git a/tooling/pipeline-results-viewer/tsconfig.json b/tooling/pipeline-results-viewer/tsconfig.json new file mode 100644 index 0000000..12b6ad8 --- /dev/null +++ b/tooling/pipeline-results-viewer/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "es2023", + "module": "esnext", + "lib": ["ES2023", "DOM"], + "types": ["vite/client"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "esModuleInterop": true, + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/tooling/pipeline/CMakeLists.txt b/tooling/pipeline/CMakeLists.txt index b31ce3e..d37bfea 100644 --- a/tooling/pipeline/CMakeLists.txt +++ b/tooling/pipeline/CMakeLists.txt @@ -139,6 +139,7 @@ FetchContent_MakeAvailable(cpp-httplib) # 5. Executable & Sources add_executable(${PROJECT_NAME} includes/services/enrichment/mock_enrichment.h + includes/services/curated_data/mock_curated_data_service.h includes/json_handling/pretty_print.h) # --- Entry point --- @@ -148,7 +149,12 @@ target_sources(${PROJECT_NAME} PRIVATE # --- json_handling --- target_sources(${PROJECT_NAME} PRIVATE - src/json_handling/json_loader.cc + src/services/curated_data/curated_json_data_service.cc +) + +# --- services: curated_data --- +target_sources(${PROJECT_NAME} PRIVATE + src/services/curated_data/mock_curated_data_service.cc ) # --- application_options --- @@ -161,6 +167,7 @@ target_sources(${PROJECT_NAME} PRIVATE src/biergarten_pipeline_orchestrator/log_results.cc src/biergarten_pipeline_orchestrator/biergarten_pipeline_orchestrator.cc src/biergarten_pipeline_orchestrator/generate_breweries.cc + src/biergarten_pipeline_orchestrator/generate_users.cc src/biergarten_pipeline_orchestrator/run.cc src/biergarten_pipeline_orchestrator/query_cities_with_countries.cc ) @@ -204,6 +211,7 @@ target_sources(${PROJECT_NAME} PRIVATE # --- services: sqlite --- target_sources(${PROJECT_NAME} PRIVATE src/services/sqlite/process_record.cc + src/services/sqlite/process_user_record.cc src/services/sqlite/sqlite_export_service.cc src/services/sqlite/finalize.cc src/services/sqlite/initialize.cc @@ -260,6 +268,21 @@ configure_file( ${CMAKE_BINARY_DIR}/locations.json COPYONLY ) +configure_file( + ${CMAKE_SOURCE_DIR}/personas.json + ${CMAKE_BINARY_DIR}/personas.json + COPYONLY +) +configure_file( + ${CMAKE_SOURCE_DIR}/forenames-by-country.json + ${CMAKE_BINARY_DIR}/forenames-by-country.json + COPYONLY +) +configure_file( + ${CMAKE_SOURCE_DIR}/surnames-by-country.json + ${CMAKE_BINARY_DIR}/surnames-by-country.json + COPYONLY +) add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_SOURCE_DIR}/prompts diff --git a/tooling/pipeline/forenames-by-country.json b/tooling/pipeline/forenames-by-country.json new file mode 100644 index 0000000..8cb8f8a --- /dev/null +++ b/tooling/pipeline/forenames-by-country.json @@ -0,0 +1,27168 @@ +{ + "AD": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-AD-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Martina" + ], + "romanized": [ + "Martina" + ] + }, + { + "id": "N-AD-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-AD-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Jana" + ], + "romanized": [ + "Jana" + ] + }, + { + "id": "N-AD-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Lucia" + ], + "romanized": [ + "Lucia" + ] + }, + { + "id": "N-AD-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Iker" + ], + "romanized": [ + "Iker" + ] + }, + { + "id": "N-AD-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-AD-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Martí" + ], + "romanized": [ + "Martí" + ] + }, + { + "id": "N-AD-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Biel" + ], + "romanized": [ + "Biel" + ] + }, + { + "id": "N-AD-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Dylan" + ], + "romanized": [ + "Dylan" + ] + }, + { + "id": "N-AD-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Jordi" + ], + "romanized": [ + "Jordi" + ] + }, + { + "id": "N-AD-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Marc" + ], + "romanized": [ + "Marc" + ] + } + ] + } + ], + "AE": [ + { + "region": "Arab world", + "population": "All", + "note": "BabyCenter", + "names": [ + { + "id": "O-AE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "مريم" + ], + "romanized": [ + "Maryam" + ] + }, + { + "id": "O-AE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "فاطمة" + ], + "romanized": [ + "Fatima" + ] + }, + { + "id": "O-AE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "لين" + ], + "romanized": [ + "Lyn" + ] + }, + { + "id": "O-AE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "حور" + ], + "romanized": [ + "Hur" + ] + }, + { + "id": "O-AE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "ليان" + ], + "romanized": [ + "Lian" + ] + }, + { + "id": "O-AE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "ماريا" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "O-AE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "ملك" + ], + "romanized": [ + "Malak" + ] + }, + { + "id": "O-AE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "نور" + ], + "romanized": [ + "Nur" + ] + }, + { + "id": "O-AE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "ميلا" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "O-AE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "فرح" + ], + "romanized": [ + "Farah" + ] + } + ] + }, + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-AE-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "محمد" + ], + "romanized": [ + "Mohamed" + ] + }, + { + "id": "O-AE-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "عبدالله" + ], + "romanized": [ + "Abdullah" + ] + }, + { + "id": "O-AE-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "أحمد" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "O-AE-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "علي" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "O-AE-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "يوسف" + ], + "romanized": [ + "Yousouf" + ] + }, + { + "id": "O-AE-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "عمر" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "O-AE-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "آدم" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "O-AE-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "عبد" + ], + "romanized": [ + "Abd" + ] + }, + { + "id": "O-AE-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "خالد" + ], + "romanized": [ + "Khaled" + ] + }, + { + "id": "O-AE-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "فهد" + ], + "romanized": [ + "Fahd" + ] + } + ] + } + ], + "AL": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-AL-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-AL-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Ajla" + ], + "romanized": [ + "Ajla" + ] + }, + { + "id": "N-AL-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Aria" + ], + "romanized": [ + "Aria" + ] + }, + { + "id": "N-AL-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Amelja" + ], + "romanized": [ + "Amelja" + ] + }, + { + "id": "N-AL-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Leandra" + ], + "romanized": [ + "Leandra" + ] + }, + { + "id": "N-AL-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Ambra" + ], + "romanized": [ + "Ambra" + ] + }, + { + "id": "N-AL-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Klea" + ], + "romanized": [ + "Klea" + ] + }, + { + "id": "N-AL-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Melisa" + ], + "romanized": [ + "Melisa" + ] + }, + { + "id": "N-AL-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Amaris" + ], + "romanized": [ + "Amaris" + ] + }, + { + "id": "N-AL-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Reina" + ], + "romanized": [ + "Reina" + ] + }, + { + "id": "N-AL-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noel" + ], + "romanized": [ + "Noel" + ] + }, + { + "id": "N-AL-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Aron" + ], + "romanized": [ + "Aron" + ] + }, + { + "id": "N-AL-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Joel" + ], + "romanized": [ + "Joel" + ] + }, + { + "id": "N-AL-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Roan" + ], + "romanized": [ + "Roan" + ] + }, + { + "id": "N-AL-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Amar" + ], + "romanized": [ + "Amar" + ] + }, + { + "id": "N-AL-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-AL-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Alteo" + ], + "romanized": [ + "Alteo" + ] + }, + { + "id": "N-AL-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Roel" + ], + "romanized": [ + "Roel" + ] + }, + { + "id": "N-AL-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Luis" + ], + "romanized": [ + "Luis" + ] + }, + { + "id": "N-AL-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Dion" + ], + "romanized": [ + "Dion" + ] + } + ] + } + ], + "AM": [ + { + "region": "All", + "population": "General population", + "note": null, + "names": [ + { + "id": "N-AM-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Anahit" + ], + "romanized": [ + "Anahit" + ] + }, + { + "id": "N-AM-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Gayane" + ], + "romanized": [ + "Gayane" + ] + }, + { + "id": "N-AM-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-AM-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Karine" + ], + "romanized": [ + "Karine" + ] + }, + { + "id": "N-AM-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Hasmik" + ], + "romanized": [ + "Hasmik" + ] + }, + { + "id": "N-AM-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Lusine" + ], + "romanized": [ + "Lusine" + ] + }, + { + "id": "N-AM-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Susanna" + ], + "romanized": [ + "Susanna" + ] + }, + { + "id": "N-AM-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Armine" + ], + "romanized": [ + "Armine" + ] + }, + { + "id": "N-AM-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Narine" + ], + "romanized": [ + "Narine" + ] + }, + { + "id": "N-AM-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Lilit" + ], + "romanized": [ + "Lilit" + ] + }, + { + "id": "N-AM-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Armen" + ], + "romanized": [ + "Armen" + ] + }, + { + "id": "N-AM-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Artur" + ], + "romanized": [ + "Artur" + ] + }, + { + "id": "N-AM-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Karen" + ], + "romanized": [ + "Karen" + ] + }, + { + "id": "N-AM-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Samvel" + ], + "romanized": [ + "Samvel" + ] + }, + { + "id": "N-AM-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Gevorg" + ], + "romanized": [ + "Gevorg" + ] + }, + { + "id": "N-AM-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Ashot" + ], + "romanized": [ + "Ashot" + ] + }, + { + "id": "N-AM-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Davit" + ], + "romanized": [ + "Davit" + ] + }, + { + "id": "N-AM-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Arman" + ], + "romanized": [ + "Arman" + ] + }, + { + "id": "N-AM-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Hovhannes" + ], + "romanized": [ + "Hovhannes" + ] + }, + { + "id": "N-AM-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Gagik" + ], + "romanized": [ + "Gagik" + ] + } + ] + }, + { + "region": "All", + "population": "Babies born", + "note": null, + "names": [ + { + "id": "N-AM-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Nare" + ], + "romanized": [ + "Nare" + ] + }, + { + "id": "N-AM-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-AM-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Arpi" + ], + "romanized": [ + "Arpi" + ] + }, + { + "id": "N-AM-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Maneh" + ], + "romanized": [ + "Maneh" + ] + }, + { + "id": "N-AM-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Angelina" + ], + "romanized": [ + "Angelina" + ] + }, + { + "id": "N-AM-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Mari" + ], + "romanized": [ + "Mari" + ] + }, + { + "id": "N-AM-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Eva" + ], + "romanized": [ + "Eva" + ] + }, + { + "id": "N-AM-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Mariam" + ], + "romanized": [ + "Mariam" + ] + }, + { + "id": "N-AM-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Anahit" + ], + "romanized": [ + "Anahit" + ] + }, + { + "id": "N-AM-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Sofi" + ], + "romanized": [ + "Sofi" + ] + }, + { + "id": "N-AM-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Davit" + ], + "romanized": [ + "Davit" + ] + }, + { + "id": "N-AM-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Narek" + ], + "romanized": [ + "Narek" + ] + }, + { + "id": "N-AM-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Monte" + ], + "romanized": [ + "Monte" + ] + }, + { + "id": "N-AM-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Tigran" + ], + "romanized": [ + "Tigran" + ] + }, + { + "id": "N-AM-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Areg" + ], + "romanized": [ + "Areg" + ] + }, + { + "id": "N-AM-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Hayk" + ], + "romanized": [ + "Hayk" + ] + }, + { + "id": "N-AM-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Mark" + ], + "romanized": [ + "Mark" + ] + }, + { + "id": "N-AM-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Mikayel" + ], + "romanized": [ + "Mikayel" + ] + }, + { + "id": "N-AM-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Aleks" + ], + "romanized": [ + "Aleks" + ] + }, + { + "id": "N-AM-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Areni" + ], + "romanized": [ + "Areni" + ] + } + ] + } + ], + "AR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-AR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-AR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-AR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Martina" + ], + "romanized": [ + "Martina" + ] + }, + { + "id": "N-AR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-AR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Alma" + ], + "romanized": [ + "Alma" + ] + }, + { + "id": "N-AR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Catalina" + ], + "romanized": [ + "Catalina" + ] + }, + { + "id": "N-AR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-AR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ámbar" + ], + "romanized": [ + "Ámbar" + ] + }, + { + "id": "N-AR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-AR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Delfina" + ], + "romanized": [ + "Delfina" + ] + }, + { + "id": "N-AR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-AR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Bautista" + ], + "romanized": [ + "Bautista" + ] + }, + { + "id": "N-AR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + }, + { + "id": "N-AR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Felipe" + ], + "romanized": [ + "Felipe" + ] + }, + { + "id": "N-AR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Bruno" + ], + "romanized": [ + "Bruno" + ] + }, + { + "id": "N-AR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-AR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Benicio" + ], + "romanized": [ + "Benicio" + ] + }, + { + "id": "N-AR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Thiago" + ], + "romanized": [ + "Thiago" + ] + }, + { + "id": "N-AR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ciro" + ], + "romanized": [ + "Ciro" + ] + }, + { + "id": "N-AR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + } + ] + } + ], + "AT": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-AT-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Marie" + ], + "romanized": [ + "Marie" + ] + }, + { + "id": "N-AT-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emilia" + ], + "romanized": [ + "Emilia" + ] + }, + { + "id": "N-AT-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-AT-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-AT-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lena" + ], + "romanized": [ + "Lena" + ] + }, + { + "id": "N-AT-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-AT-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Laura" + ], + "romanized": [ + "Laura" + ] + }, + { + "id": "N-AT-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Valentina" + ], + "romanized": [ + "Valentina" + ] + }, + { + "id": "N-AT-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Hannah" + ], + "romanized": [ + "Hannah" + ] + }, + { + "id": "N-AT-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Lea" + ], + "romanized": [ + "Lea" + ] + }, + { + "id": "N-AT-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Paul" + ], + "romanized": [ + "Paul" + ] + }, + { + "id": "N-AT-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jakob" + ], + "romanized": [ + "Jakob" + ] + }, + { + "id": "N-AT-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Maximilian" + ], + "romanized": [ + "Maximilian" + ] + }, + { + "id": "N-AT-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Elias" + ], + "romanized": [ + "Elias" + ] + }, + { + "id": "N-AT-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-AT-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Felix" + ], + "romanized": [ + "Felix" + ] + }, + { + "id": "N-AT-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Leon" + ], + "romanized": [ + "Leon" + ] + }, + { + "id": "N-AT-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Tobias" + ], + "romanized": [ + "Tobias" + ] + }, + { + "id": "N-AT-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Jonas" + ], + "romanized": [ + "Jonas" + ] + }, + { + "id": "N-AT-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + } + ] + }, + { + "region": "Vienna", + "population": "All", + "note": null, + "names": [ + { + "id": "N-AT-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-AT-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emilia" + ], + "romanized": [ + "Emilia" + ] + }, + { + "id": "N-AT-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-AT-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Hannah" + ], + "romanized": [ + "Hannah" + ] + }, + { + "id": "N-AT-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-AT-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-AT-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-AT-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Sophie" + ], + "romanized": [ + "Sophie" + ] + }, + { + "id": "N-AT-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Laura" + ], + "romanized": [ + "Laura" + ] + }, + { + "id": "N-AT-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Elena" + ], + "romanized": [ + "Elena" + ] + }, + { + "id": "N-AT-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-AT-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Luka" + ], + "romanized": [ + "Luka" + ] + }, + { + "id": "N-AT-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Theodor" + ], + "romanized": [ + "Theodor" + ] + }, + { + "id": "N-AT-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Elias" + ], + "romanized": [ + "Elias" + ] + }, + { + "id": "N-AT-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-AT-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Felix" + ], + "romanized": [ + "Felix" + ] + }, + { + "id": "N-AT-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-AT-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Alexander" + ], + "romanized": [ + "Alexander" + ] + }, + { + "id": "N-AT-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-AT-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + } + ] + } + ], + "AU": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-AU-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-AU-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-AU-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-AU-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-AU-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-AU-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-AU-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Matilda" + ], + "romanized": [ + "Matilda" + ] + }, + { + "id": "N-AU-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-AU-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Grace" + ], + "romanized": [ + "Grace" + ] + }, + { + "id": "N-AU-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Willow" + ], + "romanized": [ + "Willow" + ] + }, + { + "id": "N-AU-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-AU-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-AU-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-AU-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-AU-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Henry" + ], + "romanized": [ + "Henry" + ] + }, + { + "id": "N-AU-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-AU-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + }, + { + "id": "N-AU-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Hudson" + ], + "romanized": [ + "Hudson" + ] + }, + { + "id": "N-AU-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Charlie" + ], + "romanized": [ + "Charlie" + ] + }, + { + "id": "N-AU-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + } + ] + } + ], + "AW": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-AW-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Alysha" + ], + "romanized": [ + "Alysha" + ] + }, + { + "id": "N-AW-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-AW-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Isabelle" + ], + "romanized": [ + "Isabelle" + ] + }, + { + "id": "N-AW-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-AW-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Emely" + ], + "romanized": [ + "Emely" + ] + }, + { + "id": "N-AW-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-AW-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Dylan" + ], + "romanized": [ + "Dylan" + ] + }, + { + "id": "N-AW-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Dyllan" + ], + "romanized": [ + "Dyllan" + ] + }, + { + "id": "N-AW-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Kevin" + ], + "romanized": [ + "Kevin" + ] + }, + { + "id": "N-AW-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Keven" + ], + "romanized": [ + "Keven" + ] + } + ] + } + ], + "AZ": [ + { + "region": "All", + "population": "General population", + "note": null, + "names": [ + { + "id": "N-AZ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-AZ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Elchin" + ], + "romanized": [ + "Elchin" + ] + }, + { + "id": "N-AZ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Vugar" + ], + "romanized": [ + "Vugar" + ] + }, + { + "id": "N-AZ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Anar" + ], + "romanized": [ + "Anar" + ] + }, + { + "id": "N-AZ-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Elnur" + ], + "romanized": [ + "Elnur" + ] + }, + { + "id": "N-AZ-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Samir" + ], + "romanized": [ + "Samir" + ] + }, + { + "id": "N-AZ-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Elshan" + ], + "romanized": [ + "Elshan" + ] + }, + { + "id": "N-AZ-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Rashad" + ], + "romanized": [ + "Rashad" + ] + }, + { + "id": "N-AZ-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ilgar" + ], + "romanized": [ + "Ilgar" + ] + }, + { + "id": "N-AZ-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Vusal" + ], + "romanized": [ + "Vusal" + ] + } + ] + }, + { + "region": "All", + "population": "Babies born", + "note": null, + "names": [ + { + "id": "N-AZ-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Zahra" + ], + "romanized": [ + "Zahra" + ] + }, + { + "id": "N-AZ-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Aylin" + ], + "romanized": [ + "Aylin" + ] + }, + { + "id": "N-AZ-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Zeynab" + ], + "romanized": [ + "Zeynab" + ] + }, + { + "id": "N-AZ-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Maryam" + ], + "romanized": [ + "Maryam" + ] + }, + { + "id": "N-AZ-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Fatima" + ], + "romanized": [ + "Fatima" + ] + }, + { + "id": "N-AZ-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Nilay" + ], + "romanized": [ + "Nilay" + ] + }, + { + "id": "N-AZ-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Malak" + ], + "romanized": [ + "Malak" + ] + }, + { + "id": "N-AZ-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ayla" + ], + "romanized": [ + "Ayla" + ] + }, + { + "id": "N-AZ-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "İnci" + ], + "romanized": [ + "İnci" + ] + }, + { + "id": "N-AZ-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Nuray" + ], + "romanized": [ + "Nuray" + ] + }, + { + "id": "N-AZ-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-AZ-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Huseyn" + ], + "romanized": [ + "Huseyn" + ] + }, + { + "id": "N-AZ-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Yusif" + ], + "romanized": [ + "Yusif" + ] + }, + { + "id": "N-AZ-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Mahammad" + ], + "romanized": [ + "Mahammad" + ] + }, + { + "id": "N-AZ-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Raul" + ], + "romanized": [ + "Raul" + ] + }, + { + "id": "N-AZ-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-AZ-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Murad" + ], + "romanized": [ + "Murad" + ] + }, + { + "id": "N-AZ-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-AZ-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Tunar" + ], + "romanized": [ + "Tunar" + ] + } + ] + }, + { + "region": "All", + "population": "General population", + "note": null, + "names": [ + { + "id": "N-AZ-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sevinj" + ], + "romanized": [ + "Sevinj" + ] + }, + { + "id": "N-AZ-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Gunel" + ], + "romanized": [ + "Gunel" + ] + }, + { + "id": "N-AZ-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Leyla" + ], + "romanized": [ + "Leyla" + ] + }, + { + "id": "N-AZ-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Aygun" + ], + "romanized": [ + "Aygun" + ] + }, + { + "id": "N-AZ-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Gunay" + ], + "romanized": [ + "Gunay" + ] + }, + { + "id": "N-AZ-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sevda" + ], + "romanized": [ + "Sevda" + ] + }, + { + "id": "N-AZ-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Vusala" + ], + "romanized": [ + "Vusala" + ] + }, + { + "id": "N-AZ-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Konul" + ], + "romanized": [ + "Konul" + ] + }, + { + "id": "N-AZ-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Aysel" + ], + "romanized": [ + "Aysel" + ] + }, + { + "id": "N-AZ-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Tarana" + ], + "romanized": [ + "Tarana" + ] + } + ] + } + ], + "BA": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-BA-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-BA-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Merjem" + ], + "romanized": [ + "Merjem" + ] + }, + { + "id": "N-BA-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Asja" + ], + "romanized": [ + "Asja" + ] + }, + { + "id": "N-BA-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Esma" + ], + "romanized": [ + "Esma" + ] + }, + { + "id": "N-BA-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Amina" + ], + "romanized": [ + "Amina" + ] + }, + { + "id": "N-BA-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Ema" + ], + "romanized": [ + "Ema" + ] + }, + { + "id": "N-BA-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Hana" + ], + "romanized": [ + "Hana" + ] + }, + { + "id": "N-BA-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Lejla" + ], + "romanized": [ + "Lejla" + ] + }, + { + "id": "N-BA-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Lamija" + ], + "romanized": [ + "Lamija" + ] + }, + { + "id": "N-BA-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Dalila" + ], + "romanized": [ + "Dalila" + ] + }, + { + "id": "N-BA-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Davud" + ], + "romanized": [ + "Davud" + ] + }, + { + "id": "N-BA-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-BA-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Hamza" + ], + "romanized": [ + "Hamza" + ] + }, + { + "id": "N-BA-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Amar" + ], + "romanized": [ + "Amar" + ] + }, + { + "id": "N-BA-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Adin" + ], + "romanized": [ + "Adin" + ] + }, + { + "id": "N-BA-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Džan" + ], + "romanized": [ + "Džan" + ] + }, + { + "id": "N-BA-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Daris" + ], + "romanized": [ + "Daris" + ] + }, + { + "id": "N-BA-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Eman" + ], + "romanized": [ + "Eman" + ] + }, + { + "id": "N-BA-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Harun" + ], + "romanized": [ + "Harun" + ] + }, + { + "id": "N-BA-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + } + ] + } + ], + "BD": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-BD-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohammed" + ], + "romanized": [ + "Mohammed" + ] + }, + { + "id": "N-BD-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-BD-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Abdul" + ], + "romanized": [ + "Abdul" + ] + }, + { + "id": "N-BD-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Muhammad" + ], + "romanized": [ + "Muhammad" + ] + }, + { + "id": "N-BD-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Abdullah" + ], + "romanized": [ + "Abdullah" + ] + }, + { + "id": "N-BD-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-BD-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Syed" + ], + "romanized": [ + "Syed" + ] + }, + { + "id": "N-BD-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Kazi" + ], + "romanized": [ + "Kazi" + ] + }, + { + "id": "N-BD-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Sheikh" + ], + "romanized": [ + "Sheikh" + ] + }, + { + "id": "N-BD-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Hasan" + ], + "romanized": [ + "Hasan" + ] + } + ] + } + ], + "BE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-BE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-BE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-BE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Louise" + ], + "romanized": [ + "Louise" + ] + }, + { + "id": "N-BE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-BE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-BE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Camille" + ], + "romanized": [ + "Camille" + ] + }, + { + "id": "N-BE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Lina" + ], + "romanized": [ + "Lina" + ] + }, + { + "id": "N-BE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-BE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-BE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Juliette" + ], + "romanized": [ + "Juliette" + ] + }, + { + "id": "N-BE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-BE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-BE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Louis" + ], + "romanized": [ + "Louis" + ] + }, + { + "id": "N-BE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-BE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Jules" + ], + "romanized": [ + "Jules" + ] + }, + { + "id": "N-BE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-BE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-BE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "N-BE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Victor" + ], + "romanized": [ + "Victor" + ] + }, + { + "id": "N-BE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Oscar" + ], + "romanized": [ + "Oscar" + ] + } + ] + } + ], + "BO": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-BO-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Martha" + ], + "romanized": [ + "Martha" + ] + }, + { + "id": "N-BO-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Roxana" + ], + "romanized": [ + "Roxana" + ] + }, + { + "id": "N-BO-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Ana Maria" + ], + "romanized": [ + "Ana Maria" + ] + }, + { + "id": "N-BO-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Elizabeth" + ], + "romanized": [ + "Elizabeth" + ] + }, + { + "id": "N-BO-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sonia" + ], + "romanized": [ + "Sonia" + ] + }, + { + "id": "N-BO-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Juana" + ], + "romanized": [ + "Juana" + ] + }, + { + "id": "N-BO-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Patricia" + ], + "romanized": [ + "Patricia" + ] + }, + { + "id": "N-BO-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Lidia" + ], + "romanized": [ + "Lidia" + ] + }, + { + "id": "N-BO-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Rosmery" + ], + "romanized": [ + "Rosmery" + ] + }, + { + "id": "N-BO-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Carmen" + ], + "romanized": [ + "Carmen" + ] + }, + { + "id": "N-BO-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Juan Carlos" + ], + "romanized": [ + "Juan Carlos" + ] + }, + { + "id": "N-BO-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "José Luis" + ], + "romanized": [ + "José Luis" + ] + }, + { + "id": "N-BO-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Marco Antonio" + ], + "romanized": [ + "Marco Antonio" + ] + }, + { + "id": "N-BO-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Miguel Ángel" + ], + "romanized": [ + "Miguel Ángel" + ] + }, + { + "id": "N-BO-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + }, + { + "id": "N-BO-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Mario" + ], + "romanized": [ + "Mario" + ] + }, + { + "id": "N-BO-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-BO-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Ferndo" + ], + "romanized": [ + "Ferndo" + ] + }, + { + "id": "N-BO-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Victor Hugo" + ], + "romanized": [ + "Victor Hugo" + ] + }, + { + "id": "N-BO-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Jorge" + ], + "romanized": [ + "Jorge" + ] + } + ] + } + ], + "BR": [ + { + "region": "All", + "population": "All", + "note": "Census", + "names": [ + { + "id": "N-BR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-BR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Ana" + ], + "romanized": [ + "Ana" + ] + }, + { + "id": "N-BR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Francisca" + ], + "romanized": [ + "Francisca" + ] + }, + { + "id": "N-BR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Antônia" + ], + "romanized": [ + "Antônia" + ] + }, + { + "id": "N-BR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Adriana" + ], + "romanized": [ + "Adriana" + ] + }, + { + "id": "N-BR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Juliana" + ], + "romanized": [ + "Juliana" + ] + }, + { + "id": "N-BR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Marcia" + ], + "romanized": [ + "Marcia" + ] + }, + { + "id": "N-BR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Fernanda" + ], + "romanized": [ + "Fernanda" + ] + }, + { + "id": "N-BR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Patrícia" + ], + "romanized": [ + "Patrícia" + ] + }, + { + "id": "N-BR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Aline" + ], + "romanized": [ + "Aline" + ] + }, + { + "id": "N-BR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "José" + ], + "romanized": [ + "José" + ] + }, + { + "id": "N-BR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "João" + ], + "romanized": [ + "João" + ] + }, + { + "id": "N-BR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Antônio" + ], + "romanized": [ + "Antônio" + ] + }, + { + "id": "N-BR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Francisco" + ], + "romanized": [ + "Francisco" + ] + }, + { + "id": "N-BR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Carlos" + ], + "romanized": [ + "Carlos" + ] + }, + { + "id": "N-BR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Paulo" + ], + "romanized": [ + "Paulo" + ] + }, + { + "id": "N-BR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Pedro" + ], + "romanized": [ + "Pedro" + ] + }, + { + "id": "N-BR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-BR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Luiz" + ], + "romanized": [ + "Luiz" + ] + }, + { + "id": "N-BR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Marcos" + ], + "romanized": [ + "Marcos" + ] + } + ] + }, + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-BR-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Helena" + ], + "romanized": [ + "Helena" + ] + }, + { + "id": "N-BR-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-BR-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Laura" + ], + "romanized": [ + "Laura" + ] + }, + { + "id": "N-BR-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Maria Alice" + ], + "romanized": [ + "Maria Alice" + ] + }, + { + "id": "N-BR-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-BR-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Manuela" + ], + "romanized": [ + "Manuela" + ] + }, + { + "id": "N-BR-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Maitê" + ], + "romanized": [ + "Maitê" + ] + }, + { + "id": "N-BR-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Liz" + ], + "romanized": [ + "Liz" + ] + }, + { + "id": "N-BR-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Cecília" + ], + "romanized": [ + "Cecília" + ] + }, + { + "id": "N-BR-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-BR-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Miguel" + ], + "romanized": [ + "Miguel" + ] + }, + { + "id": "N-BR-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-BR-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Gael" + ], + "romanized": [ + "Gael" + ] + }, + { + "id": "N-BR-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Théo" + ], + "romanized": [ + "Théo" + ] + }, + { + "id": "N-BR-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Heitor" + ], + "romanized": [ + "Heitor" + ] + }, + { + "id": "N-BR-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Ravi" + ], + "romanized": [ + "Ravi" + ] + }, + { + "id": "N-BR-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Davi" + ], + "romanized": [ + "Davi" + ] + }, + { + "id": "N-BR-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Berrdo" + ], + "romanized": [ + "Berrdo" + ] + }, + { + "id": "N-BR-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-BR-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + } + ] + } + ], + "BY": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-BY-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Alisa" + ], + "romanized": [ + "Alisa" + ] + }, + { + "id": "N-BY-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Hanna" + ], + "romanized": [ + "Hanna" + ] + }, + { + "id": "N-BY-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Maryja" + ], + "romanized": [ + "Maryja" + ] + }, + { + "id": "N-BY-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Safija" + ], + "romanized": [ + "Safija" + ] + }, + { + "id": "N-BY-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Maksim" + ], + "romanized": [ + "Maksim" + ] + }, + { + "id": "N-BY-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Mark" + ], + "romanized": [ + "Mark" + ] + }, + { + "id": "N-BY-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Michail" + ], + "romanized": [ + "Michail" + ] + } + ] + } + ], + "CA": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-CA-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-CA-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-CA-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-CA-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-CA-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-CA-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-CA-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Chloe" + ], + "romanized": [ + "Chloe" + ] + }, + { + "id": "N-CA-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-CA-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-CA-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-CA-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-CA-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-CA-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-CA-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-CA-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-CA-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Benjamin" + ], + "romanized": [ + "Benjamin" + ] + }, + { + "id": "N-CA-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + }, + { + "id": "N-CA-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-CA-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ] + }, + { + "id": "N-CA-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Logan" + ], + "romanized": [ + "Logan" + ] + }, + { + "id": "N-CA-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + } + ] + }, + { + "region": "Québec", + "population": "All", + "note": null, + "names": [ + { + "id": "N-CA-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-CA-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-CA-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-CA-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Charlie" + ], + "romanized": [ + "Charlie" + ] + }, + { + "id": "N-CA-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Florence" + ], + "romanized": [ + "Florence" + ] + }, + { + "id": "N-CA-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-CA-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Léa" + ], + "romanized": [ + "Léa" + ] + }, + { + "id": "N-CA-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Livia" + ], + "romanized": [ + "Livia" + ] + }, + { + "id": "N-CA-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Rose" + ], + "romanized": [ + "Rose" + ] + }, + { + "id": "N-CA-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Juliette" + ], + "romanized": [ + "Juliette" + ] + }, + { + "id": "N-CA-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-CA-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-CA-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-CA-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ] + }, + { + "id": "N-CA-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-CA-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Édouard" + ], + "romanized": [ + "Édouard" + ] + }, + { + "id": "N-CA-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Jacob" + ], + "romanized": [ + "Jacob" + ] + }, + { + "id": "N-CA-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-CA-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Louis" + ], + "romanized": [ + "Louis" + ] + }, + { + "id": "N-CA-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Nathan" + ], + "romanized": [ + "Nathan" + ] + } + ] + } + ], + "CH": [ + { + "region": "All", + "population": "Babies born", + "note": null, + "names": [ + { + "id": "N-CH-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-CH-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-CH-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Elena" + ], + "romanized": [ + "Elena" + ] + }, + { + "id": "N-CH-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Lina" + ], + "romanized": [ + "Lina" + ] + }, + { + "id": "N-CH-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-CH-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Emilia" + ], + "romanized": [ + "Emilia" + ] + }, + { + "id": "N-CH-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-CH-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-CH-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-CH-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Alina" + ], + "romanized": [ + "Alina" + ] + }, + { + "id": "N-CH-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-CH-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-CH-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Matteo" + ], + "romanized": [ + "Matteo" + ] + }, + { + "id": "N-CH-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-CH-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "N-CH-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Leon" + ], + "romanized": [ + "Leon" + ] + }, + { + "id": "N-CH-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Elias" + ], + "romanized": [ + "Elias" + ] + }, + { + "id": "N-CH-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Louis" + ], + "romanized": [ + "Louis" + ] + }, + { + "id": "N-CH-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Lio" + ], + "romanized": [ + "Lio" + ] + }, + { + "id": "N-CH-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Nino" + ], + "romanized": [ + "Nino" + ] + } + ] + } + ], + "CL": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-CL-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-CL-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-CL-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-CL-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Emilia" + ], + "romanized": [ + "Emilia" + ] + }, + { + "id": "N-CL-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Julieta" + ], + "romanized": [ + "Julieta" + ] + }, + { + "id": "N-CL-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Trinidad" + ], + "romanized": [ + "Trinidad" + ] + }, + { + "id": "N-CL-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Isidora" + ], + "romanized": [ + "Isidora" + ] + }, + { + "id": "N-CL-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Agustina" + ], + "romanized": [ + "Agustina" + ] + }, + { + "id": "N-CL-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Josefa" + ], + "romanized": [ + "Josefa" + ] + }, + { + "id": "N-CL-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-CL-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-CL-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Gaspar" + ], + "romanized": [ + "Gaspar" + ] + }, + { + "id": "N-CL-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Santiago" + ], + "romanized": [ + "Santiago" + ] + }, + { + "id": "N-CL-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-CL-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Benjamín" + ], + "romanized": [ + "Benjamín" + ] + }, + { + "id": "N-CL-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-CL-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Agustín" + ], + "romanized": [ + "Agustín" + ] + }, + { + "id": "N-CL-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Vicente" + ], + "romanized": [ + "Vicente" + ] + }, + { + "id": "N-CL-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Maximiliano" + ], + "romanized": [ + "Maximiliano" + ] + }, + { + "id": "N-CL-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Tomás" + ], + "romanized": [ + "Tomás" + ] + } + ] + } + ], + "CO": [ + { + "region": "All", + "population": "All", + "note": "BabyCenter", + "names": [ + { + "id": "N-CO-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Antonella" + ], + "romanized": [ + "Antonella" + ] + }, + { + "id": "N-CO-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-CO-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Luciana" + ], + "romanized": [ + "Luciana" + ] + }, + { + "id": "N-CO-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Celeste" + ], + "romanized": [ + "Celeste" + ] + }, + { + "id": "N-CO-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-CO-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Gabriela" + ], + "romanized": [ + "Gabriela" + ] + }, + { + "id": "N-CO-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Mariana" + ], + "romanized": [ + "Mariana" + ] + }, + { + "id": "N-CO-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Julieta" + ], + "romanized": [ + "Julieta" + ] + }, + { + "id": "N-CO-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Salomé" + ], + "romanized": [ + "Salomé" + ] + }, + { + "id": "N-CO-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Guadalupe" + ], + "romanized": [ + "Guadalupe" + ] + }, + { + "id": "N-CO-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Matías" + ], + "romanized": [ + "Matías" + ] + }, + { + "id": "N-CO-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jerónimo" + ], + "romanized": [ + "Jerónimo" + ] + }, + { + "id": "N-CO-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Gerónimo" + ], + "romanized": [ + "Gerónimo" + ] + }, + { + "id": "N-CO-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Emiliano" + ], + "romanized": [ + "Emiliano" + ] + }, + { + "id": "N-CO-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Martín" + ], + "romanized": [ + "Martín" + ] + }, + { + "id": "N-CO-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Samuel" + ], + "romanized": [ + "Samuel" + ] + }, + { + "id": "N-CO-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Thiago" + ], + "romanized": [ + "Thiago" + ] + }, + { + "id": "N-CO-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Emmanuel" + ], + "romanized": [ + "Emmanuel" + ] + }, + { + "id": "N-CO-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Maximiliano" + ], + "romanized": [ + "Maximiliano" + ] + }, + { + "id": "N-CO-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Isaac" + ], + "romanized": [ + "Isaac" + ] + }, + { + "id": "N-CO-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Santiago" + ], + "romanized": [ + "Santiago" + ] + } + ] + } + ], + "CZ": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-CZ-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Eliška" + ], + "romanized": [ + "Eliška" + ] + }, + { + "id": "N-CZ-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-CZ-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Adéla" + ], + "romanized": [ + "Adéla" + ] + }, + { + "id": "N-CZ-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Tereza" + ], + "romanized": [ + "Tereza" + ] + }, + { + "id": "N-CZ-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sofie" + ], + "romanized": [ + "Sofie" + ] + }, + { + "id": "N-CZ-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Viktorie" + ], + "romanized": [ + "Viktorie" + ] + }, + { + "id": "N-CZ-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ema" + ], + "romanized": [ + "Ema" + ] + }, + { + "id": "N-CZ-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Karolína" + ], + "romanized": [ + "Karolína" + ] + }, + { + "id": "N-CZ-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Natálie" + ], + "romanized": [ + "Natálie" + ] + }, + { + "id": "N-CZ-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Amálie" + ], + "romanized": [ + "Amálie" + ] + }, + { + "id": "N-CZ-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Julie" + ], + "romanized": [ + "Julie" + ] + }, + { + "id": "N-CZ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Jakub" + ], + "romanized": [ + "Jakub" + ] + }, + { + "id": "N-CZ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jan" + ], + "romanized": [ + "Jan" + ] + }, + { + "id": "N-CZ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Tomáš" + ], + "romanized": [ + "Tomáš" + ] + }, + { + "id": "N-CZ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Matyáš" + ], + "romanized": [ + "Matyáš" + ] + }, + { + "id": "N-CZ-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-CZ-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Filip" + ], + "romanized": [ + "Filip" + ] + }, + { + "id": "N-CZ-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Vojtěch" + ], + "romanized": [ + "Vojtěch" + ] + }, + { + "id": "N-CZ-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Lukáš" + ], + "romanized": [ + "Lukáš" + ] + }, + { + "id": "N-CZ-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ] + }, + { + "id": "N-CZ-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Matěj" + ], + "romanized": [ + "Matěj" + ] + } + ] + } + ], + "DE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-DE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emilia" + ], + "romanized": [ + "Emilia" + ] + }, + { + "id": "N-DE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-DE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-DE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-DE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Hannah" + ], + "romanized": [ + "Hannah" + ] + }, + { + "id": "N-DE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Lina" + ], + "romanized": [ + "Lina" + ] + }, + { + "id": "N-DE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-DE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-DE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Leni" + ], + "romanized": [ + "Leni" + ] + }, + { + "id": "N-DE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Clara" + ], + "romanized": [ + "Clara" + ] + }, + { + "id": "N-DE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-DE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Matteo" + ], + "romanized": [ + "Matteo" + ] + }, + { + "id": "N-DE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Elias" + ], + "romanized": [ + "Elias" + ] + }, + { + "id": "N-DE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Finn" + ], + "romanized": [ + "Finn" + ] + }, + { + "id": "N-DE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Leon" + ], + "romanized": [ + "Leon" + ] + }, + { + "id": "N-DE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Theo" + ], + "romanized": [ + "Theo" + ] + }, + { + "id": "N-DE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Paul" + ], + "romanized": [ + "Paul" + ] + }, + { + "id": "N-DE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Emil" + ], + "romanized": [ + "Emil" + ] + }, + { + "id": "N-DE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Henry" + ], + "romanized": [ + "Henry" + ] + }, + { + "id": "N-DE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ben" + ], + "romanized": [ + "Ben" + ] + } + ] + } + ], + "DK": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-DK-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-DK-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Alma" + ], + "romanized": [ + "Alma" + ] + }, + { + "id": "N-DK-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-DK-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ida" + ], + "romanized": [ + "Ida" + ] + }, + { + "id": "N-DK-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Freja" + ], + "romanized": [ + "Freja" + ] + }, + { + "id": "N-DK-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-DK-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Luna" + ], + "romanized": [ + "Luna" + ] + }, + { + "id": "N-DK-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-DK-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Agnes" + ], + "romanized": [ + "Agnes" + ] + }, + { + "id": "N-DK-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Asta" + ], + "romanized": [ + "Asta" + ] + }, + { + "id": "N-DK-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Clara" + ], + "romanized": [ + "Clara" + ] + }, + { + "id": "N-DK-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-DK-1-F-13", + "rank": 13, + "gender": "F", + "localized": [ + "Frida" + ], + "romanized": [ + "Frida" + ] + }, + { + "id": "N-DK-1-F-14", + "rank": 14, + "gender": "F", + "localized": [ + "Alberte" + ], + "romanized": [ + "Alberte" + ] + }, + { + "id": "N-DK-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-DK-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Oscar" + ], + "romanized": [ + "Oscar" + ] + }, + { + "id": "N-DK-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Carl" + ], + "romanized": [ + "Carl" + ] + }, + { + "id": "N-DK-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Malthe" + ], + "romanized": [ + "Malthe" + ] + }, + { + "id": "N-DK-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Emil" + ], + "romanized": [ + "Emil" + ] + }, + { + "id": "N-DK-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Valdemar" + ], + "romanized": [ + "Valdemar" + ] + }, + { + "id": "N-DK-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-DK-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Aksel" + ], + "romanized": [ + "Aksel" + ] + }, + { + "id": "N-DK-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "August" + ], + "romanized": [ + "August" + ] + }, + { + "id": "N-DK-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Theo" + ], + "romanized": [ + "Theo" + ] + } + ] + } + ], + "DZ": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-DZ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-DZ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Abdelkader" + ], + "romanized": [ + "Abdelkader" + ] + }, + { + "id": "N-DZ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-DZ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Mohammed" + ], + "romanized": [ + "Mohammed" + ] + }, + { + "id": "N-DZ-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-DZ-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Rachid" + ], + "romanized": [ + "Rachid" + ] + }, + { + "id": "N-DZ-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Said" + ], + "romanized": [ + "Said" + ] + }, + { + "id": "N-DZ-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Brahim" + ], + "romanized": [ + "Brahim" + ] + }, + { + "id": "N-DZ-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-DZ-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Djamel" + ], + "romanized": [ + "Djamel" + ] + }, + { + "id": "N-DZ-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Imene" + ], + "romanized": [ + "Imene" + ] + }, + { + "id": "N-DZ-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-DZ-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Yasmine" + ], + "romanized": [ + "Yasmine" + ] + }, + { + "id": "N-DZ-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Lyna" + ], + "romanized": [ + "Lyna" + ] + }, + { + "id": "N-DZ-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-DZ-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Amina" + ], + "romanized": [ + "Amina" + ] + }, + { + "id": "N-DZ-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Meriem" + ], + "romanized": [ + "Meriem" + ] + }, + { + "id": "N-DZ-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Karima" + ], + "romanized": [ + "Karima" + ] + }, + { + "id": "N-DZ-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Melissa" + ], + "romanized": [ + "Melissa" + ] + }, + { + "id": "N-DZ-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Lydia" + ], + "romanized": [ + "Lydia" + ] + } + ] + } + ], + "EC": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-EC-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mía" + ], + "romanized": [ + "Mía" + ] + }, + { + "id": "N-EC-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Danna" + ], + "romanized": [ + "Danna" + ] + }, + { + "id": "N-EC-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "María" + ], + "romanized": [ + "María" + ] + }, + { + "id": "N-EC-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-EC-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-EC-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-EC-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-EC-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Lía" + ], + "romanized": [ + "Lía" + ] + }, + { + "id": "N-EC-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Aitana" + ], + "romanized": [ + "Aitana" + ] + }, + { + "id": "N-EC-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-EC-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-EC-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Thiago" + ], + "romanized": [ + "Thiago" + ] + }, + { + "id": "N-EC-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Dylan" + ], + "romanized": [ + "Dylan" + ] + }, + { + "id": "N-EC-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "José" + ], + "romanized": [ + "José" + ] + }, + { + "id": "N-EC-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Ian" + ], + "romanized": [ + "Ian" + ] + }, + { + "id": "N-EC-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Carlos" + ], + "romanized": [ + "Carlos" + ] + }, + { + "id": "N-EC-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + }, + { + "id": "N-EC-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Luis" + ], + "romanized": [ + "Luis" + ] + }, + { + "id": "N-EC-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Gael" + ], + "romanized": [ + "Gael" + ] + }, + { + "id": "N-EC-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ángel" + ], + "romanized": [ + "Ángel" + ] + } + ] + } + ], + "EE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-EE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-EE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-EE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Eva" + ], + "romanized": [ + "Eva" + ] + }, + { + "id": "N-EE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Lenna" + ], + "romanized": [ + "Lenna" + ] + }, + { + "id": "N-EE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Marta" + ], + "romanized": [ + "Marta" + ] + }, + { + "id": "N-EE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-EE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Elli" + ], + "romanized": [ + "Elli" + ] + }, + { + "id": "N-EE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-EE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Sandra" + ], + "romanized": [ + "Sandra" + ] + }, + { + "id": "N-EE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Alisa" + ], + "romanized": [ + "Alisa" + ] + }, + { + "id": "N-EE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Oskar" + ], + "romanized": [ + "Oskar" + ] + }, + { + "id": "N-EE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Sebastian" + ], + "romanized": [ + "Sebastian" + ] + }, + { + "id": "N-EE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Mark" + ], + "romanized": [ + "Mark" + ] + }, + { + "id": "N-EE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Hugo" + ], + "romanized": [ + "Hugo" + ] + }, + { + "id": "N-EE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Robin" + ], + "romanized": [ + "Robin" + ] + }, + { + "id": "N-EE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ] + }, + { + "id": "N-EE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-EE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Lukas" + ], + "romanized": [ + "Lukas" + ] + }, + { + "id": "N-EE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Aron" + ], + "romanized": [ + "Aron" + ] + }, + { + "id": "N-EE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Rasmus" + ], + "romanized": [ + "Rasmus" + ] + } + ] + } + ], + "EG": [ + { + "region": "All", + "population": "Coptic Christians", + "note": "Unofficial", + "names": [ + { + "id": "N-EG-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mary" + ], + "romanized": [ + "Mary" + ] + }, + { + "id": "N-EG-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Marie" + ], + "romanized": [ + "Marie" + ] + }, + { + "id": "N-EG-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Mariam" + ], + "romanized": [ + "Mariam" + ] + }, + { + "id": "N-EG-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Marina" + ], + "romanized": [ + "Marina" + ] + }, + { + "id": "N-EG-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Irene" + ], + "romanized": [ + "Irene" + ] + }, + { + "id": "N-EG-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Malak" + ], + "romanized": [ + "Malak" + ] + }, + { + "id": "N-EG-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Habiba" + ], + "romanized": [ + "Habiba" + ] + }, + { + "id": "N-EG-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Hana" + ], + "romanized": [ + "Hana" + ] + }, + { + "id": "N-EG-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Farah" + ], + "romanized": [ + "Farah" + ] + }, + { + "id": "N-EG-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Marwa" + ], + "romanized": [ + "Marwa" + ] + }, + { + "id": "N-EG-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Nada" + ], + "romanized": [ + "Nada" + ] + }, + { + "id": "N-EG-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Salma" + ], + "romanized": [ + "Salma" + ] + }, + { + "id": "N-EG-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Peter" + ], + "romanized": [ + "Peter" + ] + }, + { + "id": "N-EG-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Pierre" + ], + "romanized": [ + "Pierre" + ] + }, + { + "id": "N-EG-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "George" + ], + "romanized": [ + "George" + ] + }, + { + "id": "N-EG-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "John" + ], + "romanized": [ + "John" + ] + }, + { + "id": "N-EG-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Mina" + ], + "romanized": [ + "Mina" + ] + }, + { + "id": "N-EG-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Beshoi" + ], + "romanized": [ + "Beshoi" + ] + }, + { + "id": "N-EG-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Kirollos" + ], + "romanized": [ + "Kirollos" + ] + }, + { + "id": "N-EG-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Mark" + ], + "romanized": [ + "Mark" + ] + }, + { + "id": "N-EG-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Fadi" + ], + "romanized": [ + "Fadi" + ] + }, + { + "id": "N-EG-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Habib" + ], + "romanized": [ + "Habib" + ] + } + ] + }, + { + "region": "All", + "population": "All", + "note": "Unofficial", + "names": [ + { + "id": "N-EG-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Shaimaa" + ], + "romanized": [ + "Shaimaa" + ] + }, + { + "id": "N-EG-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Fatma" + ], + "romanized": [ + "Fatma" + ] + }, + { + "id": "N-EG-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Maha" + ], + "romanized": [ + "Maha" + ] + }, + { + "id": "N-EG-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Reem" + ], + "romanized": [ + "Reem" + ] + }, + { + "id": "N-EG-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Farida" + ], + "romanized": [ + "Farida" + ] + }, + { + "id": "N-EG-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Aya" + ], + "romanized": [ + "Aya" + ] + }, + { + "id": "N-EG-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Shahd" + ], + "romanized": [ + "Shahd" + ] + }, + { + "id": "N-EG-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ashraqat" + ], + "romanized": [ + "Ashraqat" + ] + }, + { + "id": "N-EG-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Sahar" + ], + "romanized": [ + "Sahar" + ] + }, + { + "id": "N-EG-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Fatin" + ], + "romanized": [ + "Fatin" + ] + }, + { + "id": "N-EG-2-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Dalal" + ], + "romanized": [ + "Dalal" + ] + }, + { + "id": "N-EG-2-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Doha" + ], + "romanized": [ + "Doha" + ] + }, + { + "id": "N-EG-2-F-13", + "rank": 13, + "gender": "F", + "localized": [ + "Fajr" + ], + "romanized": [ + "Fajr" + ] + }, + { + "id": "N-EG-2-F-14", + "rank": 14, + "gender": "F", + "localized": [ + "Suha" + ], + "romanized": [ + "Suha" + ] + }, + { + "id": "N-EG-2-F-15", + "rank": 15, + "gender": "F", + "localized": [ + "Rowan" + ], + "romanized": [ + "Rowan" + ] + }, + { + "id": "N-EG-2-F-16", + "rank": 16, + "gender": "F", + "localized": [ + "Hosniya" + ], + "romanized": [ + "Hosniya" + ] + }, + { + "id": "N-EG-2-F-17", + "rank": 17, + "gender": "F", + "localized": [ + "Hasnaa" + ], + "romanized": [ + "Hasnaa" + ] + }, + { + "id": "N-EG-2-F-18", + "rank": 18, + "gender": "F", + "localized": [ + "Hosna" + ], + "romanized": [ + "Hosna" + ] + }, + { + "id": "N-EG-2-F-19", + "rank": 19, + "gender": "F", + "localized": [ + "Gamila" + ], + "romanized": [ + "Gamila" + ] + }, + { + "id": "N-EG-2-F-20", + "rank": 20, + "gender": "F", + "localized": [ + "Gamalat" + ], + "romanized": [ + "Gamalat" + ] + }, + { + "id": "N-EG-2-F-21", + "rank": 21, + "gender": "F", + "localized": [ + "Habiba" + ], + "romanized": [ + "Habiba" + ] + }, + { + "id": "N-EG-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohamed" + ], + "romanized": [ + "Mohamed" + ] + }, + { + "id": "N-EG-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Youssef" + ], + "romanized": [ + "Youssef" + ] + }, + { + "id": "N-EG-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-EG-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Mahmoud" + ], + "romanized": [ + "Mahmoud" + ] + }, + { + "id": "N-EG-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Mustafa" + ], + "romanized": [ + "Mustafa" + ] + }, + { + "id": "N-EG-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Yassin" + ], + "romanized": [ + "Yassin" + ] + }, + { + "id": "N-EG-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Taha" + ], + "romanized": [ + "Taha" + ] + }, + { + "id": "N-EG-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Khaled" + ], + "romanized": [ + "Khaled" + ] + }, + { + "id": "N-EG-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Hamza" + ], + "romanized": [ + "Hamza" + ] + }, + { + "id": "N-EG-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Bilal" + ], + "romanized": [ + "Bilal" + ] + }, + { + "id": "N-EG-2-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Ibrahim" + ], + "romanized": [ + "Ibrahim" + ] + }, + { + "id": "N-EG-2-M-12", + "rank": 12, + "gender": "M", + "localized": [ + "Hassan" + ], + "romanized": [ + "Hassan" + ] + }, + { + "id": "N-EG-2-M-13", + "rank": 13, + "gender": "M", + "localized": [ + "Hussein" + ], + "romanized": [ + "Hussein" + ] + }, + { + "id": "N-EG-2-M-14", + "rank": 14, + "gender": "M", + "localized": [ + "Karim" + ], + "romanized": [ + "Karim" + ] + }, + { + "id": "N-EG-2-M-15", + "rank": 15, + "gender": "M", + "localized": [ + "Tareq" + ], + "romanized": [ + "Tareq" + ] + }, + { + "id": "N-EG-2-M-16", + "rank": 16, + "gender": "M", + "localized": [ + "Abdel-Rahman" + ], + "romanized": [ + "Abdel-Rahman" + ] + }, + { + "id": "N-EG-2-M-17", + "rank": 17, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-EG-2-M-18", + "rank": 18, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-EG-2-M-19", + "rank": 19, + "gender": "M", + "localized": [ + "Halim" + ], + "romanized": [ + "Halim" + ] + }, + { + "id": "N-EG-2-M-20", + "rank": 20, + "gender": "M", + "localized": [ + "Murad" + ], + "romanized": [ + "Murad" + ] + }, + { + "id": "N-EG-2-M-21", + "rank": 21, + "gender": "M", + "localized": [ + "Selim" + ], + "romanized": [ + "Selim" + ] + }, + { + "id": "N-EG-2-M-22", + "rank": 22, + "gender": "M", + "localized": [ + "Abdallah" + ], + "romanized": [ + "Abdallah" + ] + } + ] + } + ], + "ES": [ + { + "region": "Basque Country", + "population": "All", + "note": null, + "names": [ + { + "id": "N-ES-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Ane" + ], + "romanized": [ + "Ane" + ] + }, + { + "id": "N-ES-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Laia" + ], + "romanized": [ + "Laia" + ] + }, + { + "id": "N-ES-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "June" + ], + "romanized": [ + "June" + ] + }, + { + "id": "N-ES-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Nahia" + ], + "romanized": [ + "Nahia" + ] + }, + { + "id": "N-ES-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Maddi" + ], + "romanized": [ + "Maddi" + ] + }, + { + "id": "N-ES-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Malen" + ], + "romanized": [ + "Malen" + ] + }, + { + "id": "N-ES-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-ES-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Irati" + ], + "romanized": [ + "Irati" + ] + }, + { + "id": "N-ES-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Izaro" + ], + "romanized": [ + "Izaro" + ] + }, + { + "id": "N-ES-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-ES-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Markel" + ], + "romanized": [ + "Markel" + ] + }, + { + "id": "N-ES-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Martín" + ], + "romanized": [ + "Martín" + ] + }, + { + "id": "N-ES-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Julen" + ], + "romanized": [ + "Julen" + ] + }, + { + "id": "N-ES-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Oihan" + ], + "romanized": [ + "Oihan" + ] + }, + { + "id": "N-ES-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Jon" + ], + "romanized": [ + "Jon" + ] + }, + { + "id": "N-ES-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Aiur" + ], + "romanized": [ + "Aiur" + ] + }, + { + "id": "N-ES-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Aimar" + ], + "romanized": [ + "Aimar" + ] + }, + { + "id": "N-ES-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Ibai" + ], + "romanized": [ + "Ibai" + ] + }, + { + "id": "N-ES-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Luka" + ], + "romanized": [ + "Luka" + ] + }, + { + "id": "N-ES-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Danel" + ], + "romanized": [ + "Danel" + ] + } + ] + }, + { + "region": "Catalonia", + "population": "All", + "note": null, + "names": [ + { + "id": "N-ES-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Júlia" + ], + "romanized": [ + "Júlia" + ] + }, + { + "id": "N-ES-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Martina" + ], + "romanized": [ + "Martina" + ] + }, + { + "id": "N-ES-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-ES-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-ES-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lucía" + ], + "romanized": [ + "Lucía" + ] + }, + { + "id": "N-ES-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-ES-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ona" + ], + "romanized": [ + "Ona" + ] + }, + { + "id": "N-ES-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "María" + ], + "romanized": [ + "María" + ] + }, + { + "id": "N-ES-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Laia" + ], + "romanized": [ + "Laia" + ] + }, + { + "id": "N-ES-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Paula" + ], + "romanized": [ + "Paula" + ] + }, + { + "id": "N-ES-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Marc" + ], + "romanized": [ + "Marc" + ] + }, + { + "id": "N-ES-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Nil" + ], + "romanized": [ + "Nil" + ] + }, + { + "id": "N-ES-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Pol" + ], + "romanized": [ + "Pol" + ] + }, + { + "id": "N-ES-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Jan" + ], + "romanized": [ + "Jan" + ] + }, + { + "id": "N-ES-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-ES-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Pau" + ], + "romanized": [ + "Pau" + ] + }, + { + "id": "N-ES-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Àlex" + ], + "romanized": [ + "Àlex" + ] + }, + { + "id": "N-ES-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Marti" + ], + "romanized": [ + "Marti" + ] + }, + { + "id": "N-ES-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Biel" + ], + "romanized": [ + "Biel" + ] + }, + { + "id": "N-ES-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Hugo" + ], + "romanized": [ + "Hugo" + ] + } + ] + }, + { + "region": "Excluding Basque Country & Catalonia", + "population": "All", + "note": null, + "names": [ + { + "id": "N-ES-3-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Lucía" + ], + "romanized": [ + "Lucía" + ] + }, + { + "id": "N-ES-3-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Martina" + ], + "romanized": [ + "Martina" + ] + }, + { + "id": "N-ES-3-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-ES-3-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "María" + ], + "romanized": [ + "María" + ] + }, + { + "id": "N-ES-3-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Valeria" + ], + "romanized": [ + "Valeria" + ] + }, + { + "id": "N-ES-3-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Julia" + ], + "romanized": [ + "Julia" + ] + }, + { + "id": "N-ES-3-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Paula" + ], + "romanized": [ + "Paula" + ] + }, + { + "id": "N-ES-3-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-ES-3-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Daniela" + ], + "romanized": [ + "Daniela" + ] + }, + { + "id": "N-ES-3-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Carla" + ], + "romanized": [ + "Carla" + ] + }, + { + "id": "N-ES-3-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Martín" + ], + "romanized": [ + "Martín" + ] + }, + { + "id": "N-ES-3-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Hugo" + ], + "romanized": [ + "Hugo" + ] + }, + { + "id": "N-ES-3-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-ES-3-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-ES-3-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-ES-3-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Manuel" + ], + "romanized": [ + "Manuel" + ] + }, + { + "id": "N-ES-3-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-ES-3-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Alejandro" + ], + "romanized": [ + "Alejandro" + ] + }, + { + "id": "N-ES-3-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Pablo" + ], + "romanized": [ + "Pablo" + ] + }, + { + "id": "N-ES-3-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Álvaro" + ], + "romanized": [ + "Álvaro" + ] + } + ] + } + ], + "FI": [ + { + "region": "All", + "population": "Babies born among Finnish speakers", + "note": null, + "names": [ + { + "id": "N-FI-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-FI-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Aino" + ], + "romanized": [ + "Aino" + ] + }, + { + "id": "N-FI-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Aada" + ], + "romanized": [ + "Aada" + ] + }, + { + "id": "N-FI-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Lilja" + ], + "romanized": [ + "Lilja" + ] + }, + { + "id": "N-FI-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Eevi" + ], + "romanized": [ + "Eevi" + ] + }, + { + "id": "N-FI-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-FI-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Helmi" + ], + "romanized": [ + "Helmi" + ] + }, + { + "id": "N-FI-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Venla" + ], + "romanized": [ + "Venla" + ] + }, + { + "id": "N-FI-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-FI-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Ellen" + ], + "romanized": [ + "Ellen" + ] + }, + { + "id": "N-FI-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-FI-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Väinö" + ], + "romanized": [ + "Väinö" + ] + }, + { + "id": "N-FI-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Eino" + ], + "romanized": [ + "Eino" + ] + }, + { + "id": "N-FI-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-FI-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Elias" + ], + "romanized": [ + "Elias" + ] + }, + { + "id": "N-FI-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Onni" + ], + "romanized": [ + "Onni" + ] + }, + { + "id": "N-FI-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Emil" + ], + "romanized": [ + "Emil" + ] + }, + { + "id": "N-FI-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Eeli" + ], + "romanized": [ + "Eeli" + ] + }, + { + "id": "N-FI-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Toivo" + ], + "romanized": [ + "Toivo" + ] + }, + { + "id": "N-FI-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Leevi" + ], + "romanized": [ + "Leevi" + ] + } + ] + } + ], + "FO": [ + { + "region": "Faroe Islands", + "population": "All", + "note": null, + "names": [ + { + "id": "N-FO-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Lea" + ], + "romanized": [ + "Lea" + ] + }, + { + "id": "N-FO-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Lív" + ], + "romanized": [ + "Lív" + ] + }, + { + "id": "N-FO-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-FO-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Julia" + ], + "romanized": [ + "Julia" + ] + }, + { + "id": "N-FO-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Ria" + ], + "romanized": [ + "Ria" + ] + }, + { + "id": "N-FO-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sólja" + ], + "romanized": [ + "Sólja" + ] + }, + { + "id": "N-FO-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Hjørdis" + ], + "romanized": [ + "Hjørdis" + ] + }, + { + "id": "N-FO-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-FO-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-FO-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Ronja" + ], + "romanized": [ + "Ronja" + ] + }, + { + "id": "N-FO-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-FO-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Vár" + ], + "romanized": [ + "Vár" + ] + }, + { + "id": "N-FO-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Jónas" + ], + "romanized": [ + "Jónas" + ] + }, + { + "id": "N-FO-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Nóa" + ], + "romanized": [ + "Nóa" + ] + }, + { + "id": "N-FO-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Andrias" + ], + "romanized": [ + "Andrias" + ] + }, + { + "id": "N-FO-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Jógvan" + ], + "romanized": [ + "Jógvan" + ] + }, + { + "id": "N-FO-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Markus" + ], + "romanized": [ + "Markus" + ] + }, + { + "id": "N-FO-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Mattias" + ], + "romanized": [ + "Mattias" + ] + }, + { + "id": "N-FO-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Adrian" + ], + "romanized": [ + "Adrian" + ] + }, + { + "id": "N-FO-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Gilli" + ], + "romanized": [ + "Gilli" + ] + }, + { + "id": "N-FO-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Jákup" + ], + "romanized": [ + "Jákup" + ] + }, + { + "id": "N-FO-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Tróndur" + ], + "romanized": [ + "Tróndur" + ] + } + ] + } + ], + "FR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-FR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Jade" + ], + "romanized": [ + "Jade" + ] + }, + { + "id": "N-FR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-FR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Louise" + ], + "romanized": [ + "Louise" + ] + }, + { + "id": "N-FR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-FR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-FR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Lina" + ], + "romanized": [ + "Lina" + ] + }, + { + "id": "N-FR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ambre" + ], + "romanized": [ + "Ambre" + ] + }, + { + "id": "N-FR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Rose" + ], + "romanized": [ + "Rose" + ] + }, + { + "id": "N-FR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Chloé" + ], + "romanized": [ + "Chloé" + ] + }, + { + "id": "N-FR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-FR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Léo" + ], + "romanized": [ + "Léo" + ] + }, + { + "id": "N-FR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "N-FR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Raphaël" + ], + "romanized": [ + "Raphaël" + ] + }, + { + "id": "N-FR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-FR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Louis" + ], + "romanized": [ + "Louis" + ] + }, + { + "id": "N-FR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Maël" + ], + "romanized": [ + "Maël" + ] + }, + { + "id": "N-FR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-FR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-FR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Tiago" + ], + "romanized": [ + "Tiago" + ] + }, + { + "id": "N-FR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Hugo" + ], + "romanized": [ + "Hugo" + ] + } + ] + } + ], + "GB": [ + { + "region": "England", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GB-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-GB-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-GB-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-GB-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-GB-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Ivy" + ], + "romanized": [ + "Ivy" + ] + }, + { + "id": "N-GB-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Florence" + ], + "romanized": [ + "Florence" + ] + }, + { + "id": "N-GB-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-GB-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Freya" + ], + "romanized": [ + "Freya" + ] + }, + { + "id": "N-GB-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-GB-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Willow" + ], + "romanized": [ + "Willow" + ] + }, + { + "id": "N-GB-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-GB-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "George" + ], + "romanized": [ + "George" + ] + }, + { + "id": "N-GB-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-GB-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Muhammad" + ], + "romanized": [ + "Muhammad" + ] + }, + { + "id": "N-GB-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-GB-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-GB-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Harry" + ], + "romanized": [ + "Harry" + ] + }, + { + "id": "N-GB-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Oscar" + ], + "romanized": [ + "Oscar" + ] + }, + { + "id": "N-GB-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Henry" + ], + "romanized": [ + "Henry" + ] + }, + { + "id": "N-GB-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + } + ] + }, + { + "region": "Wales", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GB-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-GB-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-GB-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-GB-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Freya" + ], + "romanized": [ + "Freya" + ] + }, + { + "id": "N-GB-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Ivy" + ], + "romanized": [ + "Ivy" + ] + }, + { + "id": "N-GB-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Rosie" + ], + "romanized": [ + "Rosie" + ] + }, + { + "id": "N-GB-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-GB-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Grace" + ], + "romanized": [ + "Grace" + ] + }, + { + "id": "N-GB-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-GB-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Evie" + ], + "romanized": [ + "Evie" + ] + }, + { + "id": "N-GB-2-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-GB-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-GB-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-GB-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-GB-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Theo" + ], + "romanized": [ + "Theo" + ] + }, + { + "id": "N-GB-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-GB-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Charlie" + ], + "romanized": [ + "Charlie" + ] + }, + { + "id": "N-GB-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Archie" + ], + "romanized": [ + "Archie" + ] + }, + { + "id": "N-GB-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "George" + ], + "romanized": [ + "George" + ] + }, + { + "id": "N-GB-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-GB-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Oscar" + ], + "romanized": [ + "Oscar" + ] + } + ] + }, + { + "region": "Northern Ireland", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GB-3-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Grace" + ], + "romanized": [ + "Grace" + ] + }, + { + "id": "N-GB-3-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-GB-3-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Fiadh" + ], + "romanized": [ + "Fiadh" + ] + }, + { + "id": "N-GB-3-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-GB-3-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-GB-3-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Aoife" + ], + "romanized": [ + "Aoife" + ] + }, + { + "id": "N-GB-3-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-GB-3-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Annie" + ], + "romanized": [ + "Annie" + ] + }, + { + "id": "N-GB-3-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Evie" + ], + "romanized": [ + "Evie" + ] + }, + { + "id": "N-GB-3-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Freya" + ], + "romanized": [ + "Freya" + ] + }, + { + "id": "N-GB-3-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-GB-3-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "James" + ], + "romanized": [ + "James" + ] + }, + { + "id": "N-GB-3-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-GB-3-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-GB-3-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Theo" + ], + "romanized": [ + "Theo" + ] + }, + { + "id": "N-GB-3-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Charlie" + ], + "romanized": [ + "Charlie" + ] + }, + { + "id": "N-GB-3-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-GB-3-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Oisin" + ], + "romanized": [ + "Oisin" + ] + }, + { + "id": "N-GB-3-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Harry" + ], + "romanized": [ + "Harry" + ] + }, + { + "id": "N-GB-3-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Cillian" + ], + "romanized": [ + "Cillian" + ] + }, + { + "id": "N-GB-3-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ] + } + ] + }, + { + "region": "Scotland", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GB-4-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-GB-4-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-GB-4-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Freya" + ], + "romanized": [ + "Freya" + ] + }, + { + "id": "N-GB-4-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Millie" + ], + "romanized": [ + "Millie" + ] + }, + { + "id": "N-GB-4-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-GB-4-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-GB-4-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Grace" + ], + "romanized": [ + "Grace" + ] + }, + { + "id": "N-GB-4-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Sophie" + ], + "romanized": [ + "Sophie" + ] + }, + { + "id": "N-GB-4-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-GB-4-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-GB-4-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-GB-4-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-GB-4-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-GB-4-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-GB-4-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-GB-4-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Harris" + ], + "romanized": [ + "Harris" + ] + }, + { + "id": "N-GB-4-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-GB-4-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-GB-4-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Rory" + ], + "romanized": [ + "Rory" + ] + }, + { + "id": "N-GB-4-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Archie" + ], + "romanized": [ + "Archie" + ] + }, + { + "id": "N-GB-4-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Alfie" + ], + "romanized": [ + "Alfie" + ] + }, + { + "id": "N-GB-4-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "James" + ], + "romanized": [ + "James" + ] + }, + { + "id": "N-GB-4-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Theo" + ], + "romanized": [ + "Theo" + ] + }, + { + "id": "N-GB-4-M-12", + "rank": 12, + "gender": "M", + "localized": [ + "Finlay" + ], + "romanized": [ + "Finlay" + ] + }, + { + "id": "N-GB-4-M-13", + "rank": 13, + "gender": "M", + "localized": [ + "Lewis" + ], + "romanized": [ + "Lewis" + ] + } + ] + } + ], + "GG": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GG-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-GG-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-GG-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Evie" + ], + "romanized": [ + "Evie" + ] + }, + { + "id": "N-GG-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Florence" + ], + "romanized": [ + "Florence" + ] + }, + { + "id": "N-GG-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Imogen" + ], + "romanized": [ + "Imogen" + ] + }, + { + "id": "N-GG-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-GG-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Penelope" + ], + "romanized": [ + "Penelope" + ] + }, + { + "id": "N-GG-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-GG-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + }, + { + "id": "N-GG-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Archie" + ], + "romanized": [ + "Archie" + ] + }, + { + "id": "N-GG-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-GG-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Theo" + ], + "romanized": [ + "Theo" + ] + }, + { + "id": "N-GG-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-GG-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "George" + ], + "romanized": [ + "George" + ] + }, + { + "id": "N-GG-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Max" + ], + "romanized": [ + "Max" + ] + }, + { + "id": "N-GG-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Oscar" + ], + "romanized": [ + "Oscar" + ] + }, + { + "id": "N-GG-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ] + }, + { + "id": "N-GG-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + } + ] + } + ], + "GI": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GI-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-GI-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-GI-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Chloe" + ], + "romanized": [ + "Chloe" + ] + }, + { + "id": "N-GI-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-GI-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Maya" + ], + "romanized": [ + "Maya" + ] + }, + { + "id": "N-GI-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-GI-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-GI-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Hannah" + ], + "romanized": [ + "Hannah" + ] + }, + { + "id": "N-GI-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Kai" + ], + "romanized": [ + "Kai" + ] + }, + { + "id": "N-GI-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Max" + ], + "romanized": [ + "Max" + ] + }, + { + "id": "N-GI-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-GI-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Hugo" + ], + "romanized": [ + "Hugo" + ] + }, + { + "id": "N-GI-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-GI-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-GI-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-GI-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + } + ] + } + ], + "GL": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GL-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Ivaana" + ], + "romanized": [ + "Ivaana" + ] + }, + { + "id": "N-GL-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Nivi" + ], + "romanized": [ + "Nivi" + ] + }, + { + "id": "N-GL-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Uiloq" + ], + "romanized": [ + "Uiloq" + ] + }, + { + "id": "N-GL-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Niviaq" + ], + "romanized": [ + "Niviaq" + ] + }, + { + "id": "N-GL-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-GL-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Ivalu" + ], + "romanized": [ + "Ivalu" + ] + }, + { + "id": "N-GL-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Pipaluk" + ], + "romanized": [ + "Pipaluk" + ] + }, + { + "id": "N-GL-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Malu" + ], + "romanized": [ + "Malu" + ] + }, + { + "id": "N-GL-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Paninnguaq" + ], + "romanized": [ + "Paninnguaq" + ] + }, + { + "id": "N-GL-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Aviana" + ], + "romanized": [ + "Aviana" + ] + }, + { + "id": "N-GL-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Maya" + ], + "romanized": [ + "Maya" + ] + }, + { + "id": "N-GL-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Paneeraq" + ], + "romanized": [ + "Paneeraq" + ] + }, + { + "id": "N-GL-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Inuk" + ], + "romanized": [ + "Inuk" + ] + }, + { + "id": "N-GL-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Malik" + ], + "romanized": [ + "Malik" + ] + }, + { + "id": "N-GL-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Minik" + ], + "romanized": [ + "Minik" + ] + }, + { + "id": "N-GL-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Inunnguag" + ], + "romanized": [ + "Inunnguag" + ] + }, + { + "id": "N-GL-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-GL-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Ulloriaq" + ], + "romanized": [ + "Ulloriaq" + ] + }, + { + "id": "N-GL-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Norsaq" + ], + "romanized": [ + "Norsaq" + ] + }, + { + "id": "N-GL-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Aputsiaq" + ], + "romanized": [ + "Aputsiaq" + ] + }, + { + "id": "N-GL-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ivik" + ], + "romanized": [ + "Ivik" + ] + }, + { + "id": "N-GL-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Miki" + ], + "romanized": [ + "Miki" + ] + }, + { + "id": "N-GL-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Maligiaq" + ], + "romanized": [ + "Maligiaq" + ] + }, + { + "id": "N-GL-1-M-12", + "rank": 12, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-GL-1-M-13", + "rank": 13, + "gender": "M", + "localized": [ + "Qillaq" + ], + "romanized": [ + "Qillaq" + ] + }, + { + "id": "N-GL-1-M-14", + "rank": 14, + "gender": "M", + "localized": [ + "Inutsiaq" + ], + "romanized": [ + "Inutsiaq" + ] + }, + { + "id": "N-GL-1-M-15", + "rank": 15, + "gender": "M", + "localized": [ + "Nuka" + ], + "romanized": [ + "Nuka" + ] + }, + { + "id": "N-GL-1-M-16", + "rank": 16, + "gender": "M", + "localized": [ + "Salik" + ], + "romanized": [ + "Salik" + ] + } + ] + } + ], + "GQ": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-GQ-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "María del Carmen" + ], + "romanized": [ + "María del Carmen" + ] + }, + { + "id": "N-GQ-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Isabel" + ], + "romanized": [ + "Isabel" + ] + }, + { + "id": "N-GQ-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "María Teresa" + ], + "romanized": [ + "María Teresa" + ] + }, + { + "id": "N-GQ-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Esperanza" + ], + "romanized": [ + "Esperanza" + ] + }, + { + "id": "N-GQ-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Milagrosa" + ], + "romanized": [ + "Milagrosa" + ] + }, + { + "id": "N-GQ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Manuel" + ], + "romanized": [ + "Manuel" + ] + }, + { + "id": "N-GQ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + }, + { + "id": "N-GQ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Antonio" + ], + "romanized": [ + "Antonio" + ] + }, + { + "id": "N-GQ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "José" + ], + "romanized": [ + "José" + ] + } + ] + } + ], + "HR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-HR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-HR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Lucija" + ], + "romanized": [ + "Lucija" + ] + }, + { + "id": "N-HR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Nika" + ], + "romanized": [ + "Nika" + ] + }, + { + "id": "N-HR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Rita" + ], + "romanized": [ + "Rita" + ] + }, + { + "id": "N-HR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Ema" + ], + "romanized": [ + "Ema" + ] + }, + { + "id": "N-HR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-HR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Marta" + ], + "romanized": [ + "Marta" + ] + }, + { + "id": "N-HR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-HR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ana" + ], + "romanized": [ + "Ana" + ] + }, + { + "id": "N-HR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Dora" + ], + "romanized": [ + "Dora" + ] + }, + { + "id": "N-HR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Luka" + ], + "romanized": [ + "Luka" + ] + }, + { + "id": "N-HR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-HR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Jakov" + ], + "romanized": [ + "Jakov" + ] + }, + { + "id": "N-HR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Ivan" + ], + "romanized": [ + "Ivan" + ] + }, + { + "id": "N-HR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Roko" + ], + "romanized": [ + "Roko" + ] + }, + { + "id": "N-HR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Petar" + ], + "romanized": [ + "Petar" + ] + }, + { + "id": "N-HR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-HR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Niko" + ], + "romanized": [ + "Niko" + ] + }, + { + "id": "N-HR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Matej" + ], + "romanized": [ + "Matej" + ] + }, + { + "id": "N-HR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Fran" + ], + "romanized": [ + "Fran" + ] + }, + { + "id": "N-HR-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Josip" + ], + "romanized": [ + "Josip" + ] + } + ] + } + ], + "HT": [ + { + "region": "All", + "population": "All", + "note": "Privately compiled", + "names": [ + { + "id": "N-HT-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Widelene" + ], + "romanized": [ + "Widelene" + ] + }, + { + "id": "N-HT-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Mirlande" + ], + "romanized": [ + "Mirlande" + ] + }, + { + "id": "N-HT-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Myrlande" + ], + "romanized": [ + "Myrlande" + ] + }, + { + "id": "N-HT-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Islande" + ], + "romanized": [ + "Islande" + ] + }, + { + "id": "N-HT-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lovelie" + ], + "romanized": [ + "Lovelie" + ] + }, + { + "id": "N-HT-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Lovely" + ], + "romanized": [ + "Lovely" + ] + }, + { + "id": "N-HT-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Judeline" + ], + "romanized": [ + "Judeline" + ] + }, + { + "id": "N-HT-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Angeline" + ], + "romanized": [ + "Angeline" + ] + }, + { + "id": "N-HT-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Esther" + ], + "romanized": [ + "Esther" + ] + }, + { + "id": "N-HT-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Chedeline" + ], + "romanized": [ + "Chedeline" + ] + }, + { + "id": "N-HT-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Jessica" + ], + "romanized": [ + "Jessica" + ] + }, + { + "id": "N-HT-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Rose-Merline" + ], + "romanized": [ + "Rose-Merline" + ] + }, + { + "id": "N-HT-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Stevenson" + ], + "romanized": [ + "Stevenson" + ] + }, + { + "id": "N-HT-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Stanley" + ], + "romanized": [ + "Stanley" + ] + }, + { + "id": "N-HT-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Samuel" + ], + "romanized": [ + "Samuel" + ] + }, + { + "id": "N-HT-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Peterson" + ], + "romanized": [ + "Peterson" + ] + }, + { + "id": "N-HT-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-HT-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Wilson" + ], + "romanized": [ + "Wilson" + ] + }, + { + "id": "N-HT-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Jameson" + ], + "romanized": [ + "Jameson" + ] + }, + { + "id": "N-HT-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Evens" + ], + "romanized": [ + "Evens" + ] + }, + { + "id": "N-HT-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ricardo" + ], + "romanized": [ + "Ricardo" + ] + }, + { + "id": "N-HT-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Emmanuel" + ], + "romanized": [ + "Emmanuel" + ] + } + ] + } + ], + "HU": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-HU-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Hanna" + ], + "romanized": [ + "Hanna" + ] + }, + { + "id": "N-HU-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Zoé" + ], + "romanized": [ + "Zoé" + ] + }, + { + "id": "N-HU-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-HU-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Léna" + ], + "romanized": [ + "Léna" + ] + }, + { + "id": "N-HU-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-HU-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-HU-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Boglárka" + ], + "romanized": [ + "Boglárka" + ] + }, + { + "id": "N-HU-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Lili" + ], + "romanized": [ + "Lili" + ] + }, + { + "id": "N-HU-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Lilien" + ], + "romanized": [ + "Lilien" + ] + }, + { + "id": "N-HU-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Lara" + ], + "romanized": [ + "Lara" + ] + }, + { + "id": "N-HU-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Levente" + ], + "romanized": [ + "Levente" + ] + }, + { + "id": "N-HU-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Máté" + ], + "romanized": [ + "Máté" + ] + }, + { + "id": "N-HU-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Dominik" + ], + "romanized": [ + "Dominik" + ] + }, + { + "id": "N-HU-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Bence" + ], + "romanized": [ + "Bence" + ] + }, + { + "id": "N-HU-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Olivér" + ], + "romanized": [ + "Olivér" + ] + }, + { + "id": "N-HU-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Noel" + ], + "romanized": [ + "Noel" + ] + }, + { + "id": "N-HU-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Marcell" + ], + "romanized": [ + "Marcell" + ] + }, + { + "id": "N-HU-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Dániel" + ], + "romanized": [ + "Dániel" + ] + }, + { + "id": "N-HU-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Zalán" + ], + "romanized": [ + "Zalán" + ] + }, + { + "id": "N-HU-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ádám" + ], + "romanized": [ + "Ádám" + ] + } + ] + } + ], + "IE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-IE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-IE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Grace" + ], + "romanized": [ + "Grace" + ] + }, + { + "id": "N-IE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Fiadh" + ], + "romanized": [ + "Fiadh" + ] + }, + { + "id": "N-IE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sophie" + ], + "romanized": [ + "Sophie" + ] + }, + { + "id": "N-IE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-IE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Éabha" + ], + "romanized": [ + "Éabha" + ] + }, + { + "id": "N-IE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-IE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-IE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ellie" + ], + "romanized": [ + "Ellie" + ] + }, + { + "id": "N-IE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-IE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-IE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-IE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "James" + ], + "romanized": [ + "James" + ] + }, + { + "id": "N-IE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Rían" + ], + "romanized": [ + "Rían" + ] + }, + { + "id": "N-IE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Charlie" + ], + "romanized": [ + "Charlie" + ] + }, + { + "id": "N-IE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Oisín" + ], + "romanized": [ + "Oisín" + ] + }, + { + "id": "N-IE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Tadhg" + ], + "romanized": [ + "Tadhg" + ] + }, + { + "id": "N-IE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-IE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Cillian" + ], + "romanized": [ + "Cillian" + ] + }, + { + "id": "N-IE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + } + ] + } + ], + "IL": [ + { + "region": "All", + "population": "Christian Arab boys", + "note": null, + "names": [ + { + "id": "N-IL-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Charbel" + ], + "romanized": [ + "Charbel" + ] + }, + { + "id": "N-IL-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jude" + ], + "romanized": [ + "Jude" + ] + }, + { + "id": "N-IL-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Niel" + ], + "romanized": [ + "Niel" + ] + }, + { + "id": "N-IL-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Elias" + ], + "romanized": [ + "Elias" + ] + }, + { + "id": "N-IL-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-IL-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "George" + ], + "romanized": [ + "George" + ] + }, + { + "id": "N-IL-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Lin" + ], + "romanized": [ + "Lin" + ] + }, + { + "id": "N-IL-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-IL-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sama" + ], + "romanized": [ + "Sama" + ] + }, + { + "id": "N-IL-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Celine" + ], + "romanized": [ + "Celine" + ] + }, + { + "id": "N-IL-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Leah" + ], + "romanized": [ + "Leah" + ] + } + ] + }, + { + "region": "All", + "population": "Druze boys", + "note": null, + "names": [ + { + "id": "N-IL-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-IL-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Taim" + ], + "romanized": [ + "Taim" + ] + }, + { + "id": "N-IL-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Niel" + ], + "romanized": [ + "Niel" + ] + }, + { + "id": "N-IL-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Amir" + ], + "romanized": [ + "Amir" + ] + }, + { + "id": "N-IL-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Jude" + ], + "romanized": [ + "Jude" + ] + }, + { + "id": "N-IL-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-IL-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Ayalah" + ], + "romanized": [ + "Ayalah" + ] + }, + { + "id": "N-IL-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Lur" + ], + "romanized": [ + "Lur" + ] + }, + { + "id": "N-IL-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Lin" + ], + "romanized": [ + "Lin" + ] + }, + { + "id": "N-IL-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Yasmin" + ], + "romanized": [ + "Yasmin" + ] + } + ] + }, + { + "region": "All", + "population": "Muslim boys", + "note": null, + "names": [ + { + "id": "N-IL-3-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Muhammad" + ], + "romanized": [ + "Muhammad" + ] + }, + { + "id": "N-IL-3-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ahmad" + ], + "romanized": [ + "Ahmad" + ] + }, + { + "id": "N-IL-3-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-IL-3-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Yusef" + ], + "romanized": [ + "Yusef" + ] + }, + { + "id": "N-IL-3-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Omer" + ], + "romanized": [ + "Omer" + ] + }, + { + "id": "N-IL-3-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-IL-3-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Abd" + ], + "romanized": [ + "Abd" + ] + }, + { + "id": "N-IL-3-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Amir" + ], + "romanized": [ + "Amir" + ] + }, + { + "id": "N-IL-3-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ibrahim" + ], + "romanized": [ + "Ibrahim" + ] + }, + { + "id": "N-IL-3-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Mahmoud" + ], + "romanized": [ + "Mahmoud" + ] + }, + { + "id": "N-IL-3-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Maryam" + ], + "romanized": [ + "Maryam" + ] + }, + { + "id": "N-IL-3-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Shams" + ], + "romanized": [ + "Shams" + ] + }, + { + "id": "N-IL-3-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Lyn" + ], + "romanized": [ + "Lyn" + ] + }, + { + "id": "N-IL-3-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Malek" + ], + "romanized": [ + "Malek" + ] + }, + { + "id": "N-IL-3-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Jori" + ], + "romanized": [ + "Jori" + ] + }, + { + "id": "N-IL-3-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Lian" + ], + "romanized": [ + "Lian" + ] + }, + { + "id": "N-IL-3-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-IL-3-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Aline" + ], + "romanized": [ + "Aline" + ] + }, + { + "id": "N-IL-3-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Nur" + ], + "romanized": [ + "Nur" + ] + }, + { + "id": "N-IL-3-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Marya" + ], + "romanized": [ + "Marya" + ] + } + ] + }, + { + "region": "All", + "population": "Jewish boys", + "note": null, + "names": [ + { + "id": "N-IL-4-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-IL-4-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ariel" + ], + "romanized": [ + "Ariel" + ] + }, + { + "id": "N-IL-4-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Lavi" + ], + "romanized": [ + "Lavi" + ] + }, + { + "id": "N-IL-4-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Uri" + ], + "romanized": [ + "Uri" + ] + }, + { + "id": "N-IL-4-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Refael" + ], + "romanized": [ + "Refael" + ] + }, + { + "id": "N-IL-4-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Noam" + ], + "romanized": [ + "Noam" + ] + }, + { + "id": "N-IL-4-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Eitan" + ], + "romanized": [ + "Eitan" + ] + }, + { + "id": "N-IL-4-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Ari" + ], + "romanized": [ + "Ari" + ] + }, + { + "id": "N-IL-4-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-IL-4-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Yehuda" + ], + "romanized": [ + "Yehuda" + ] + }, + { + "id": "N-IL-4-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Avigail" + ], + "romanized": [ + "Avigail" + ] + }, + { + "id": "N-IL-4-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Tamar" + ], + "romanized": [ + "Tamar" + ] + }, + { + "id": "N-IL-4-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Noa" + ], + "romanized": [ + "Noa" + ] + }, + { + "id": "N-IL-4-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sarah" + ], + "romanized": [ + "Sarah" + ] + }, + { + "id": "N-IL-4-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Adele" + ], + "romanized": [ + "Adele" + ] + }, + { + "id": "N-IL-4-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Maya" + ], + "romanized": [ + "Maya" + ] + }, + { + "id": "N-IL-4-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Lia" + ], + "romanized": [ + "Lia" + ] + }, + { + "id": "N-IL-4-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ayala" + ], + "romanized": [ + "Ayala" + ] + } + ] + } + ], + "IM": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-IM-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-IM-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Lillie" + ], + "romanized": [ + "Lillie" + ] + }, + { + "id": "N-IM-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Lilly" + ], + "romanized": [ + "Lilly" + ] + }, + { + "id": "N-IM-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-IM-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Emilia" + ], + "romanized": [ + "Emilia" + ] + }, + { + "id": "N-IM-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Emelia" + ], + "romanized": [ + "Emelia" + ] + }, + { + "id": "N-IM-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Emiliya" + ], + "romanized": [ + "Emiliya" + ] + }, + { + "id": "N-IM-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-IM-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-IM-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-IM-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-IM-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Theo" + ], + "romanized": [ + "Theo" + ] + }, + { + "id": "N-IM-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + }, + { + "id": "N-IM-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-IM-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-IM-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Alfie" + ], + "romanized": [ + "Alfie" + ] + }, + { + "id": "N-IM-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Archie" + ], + "romanized": [ + "Archie" + ] + }, + { + "id": "N-IM-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Benjamin" + ], + "romanized": [ + "Benjamin" + ] + }, + { + "id": "N-IM-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Edward" + ], + "romanized": [ + "Edward" + ] + } + ] + } + ], + "IN": [ + { + "region": "All", + "population": "All", + "note": "BabyCenter", + "names": [ + { + "id": "N-IN-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Aditi" + ], + "romanized": [ + "Aditi" + ] + }, + { + "id": "N-IN-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Inaya" + ], + "romanized": [ + "Inaya" + ] + }, + { + "id": "N-IN-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Aarya" + ], + "romanized": [ + "Aarya" + ] + }, + { + "id": "N-IN-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Kiara" + ], + "romanized": [ + "Kiara" + ] + }, + { + "id": "N-IN-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Aadhya" + ], + "romanized": [ + "Aadhya" + ] + }, + { + "id": "N-IN-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Vamika" + ], + "romanized": [ + "Vamika" + ] + }, + { + "id": "N-IN-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Pari" + ], + "romanized": [ + "Pari" + ] + }, + { + "id": "N-IN-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Jiya" + ], + "romanized": [ + "Jiya" + ] + }, + { + "id": "N-IN-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Mehar" + ], + "romanized": [ + "Mehar" + ] + }, + { + "id": "N-IN-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Amayra" + ], + "romanized": [ + "Amayra" + ] + }, + { + "id": "N-IN-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Muhammad" + ], + "romanized": [ + "Muhammad" + ] + }, + { + "id": "N-IN-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Shivansh" + ], + "romanized": [ + "Shivansh" + ] + }, + { + "id": "N-IN-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Dhruv" + ], + "romanized": [ + "Dhruv" + ] + }, + { + "id": "N-IN-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Kabir" + ], + "romanized": [ + "Kabir" + ] + }, + { + "id": "N-IN-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Vedant" + ], + "romanized": [ + "Vedant" + ] + }, + { + "id": "N-IN-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Kiaan" + ], + "romanized": [ + "Kiaan" + ] + }, + { + "id": "N-IN-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Aarav" + ], + "romanized": [ + "Aarav" + ] + }, + { + "id": "N-IN-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Arjun" + ], + "romanized": [ + "Arjun" + ] + }, + { + "id": "N-IN-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Viraj" + ], + "romanized": [ + "Viraj" + ] + }, + { + "id": "N-IN-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Krishna" + ], + "romanized": [ + "Krishna" + ] + } + ] + } + ], + "IQ": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-IQ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-IQ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Muhammed" + ], + "romanized": [ + "Muhammed" + ] + }, + { + "id": "N-IQ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Hussein" + ], + "romanized": [ + "Hussein" + ] + }, + { + "id": "N-IQ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Hydar" + ], + "romanized": [ + "Hydar" + ] + }, + { + "id": "N-IQ-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-IQ-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-IQ-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Hasan" + ], + "romanized": [ + "Hasan" + ] + }, + { + "id": "N-IQ-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Kathem" + ], + "romanized": [ + "Kathem" + ] + }, + { + "id": "N-IQ-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Abdullah" + ], + "romanized": [ + "Abdullah" + ] + }, + { + "id": "N-IQ-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ammar" + ], + "romanized": [ + "Ammar" + ] + } + ] + } + ], + "IR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-IR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Fatemeh" + ], + "romanized": [ + "Fatemeh" + ] + }, + { + "id": "N-IR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Zahra" + ], + "romanized": [ + "Zahra" + ] + }, + { + "id": "N-IR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Helma" + ], + "romanized": [ + "Helma" + ] + }, + { + "id": "N-IR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Zeinab" + ], + "romanized": [ + "Zeinab" + ] + }, + { + "id": "N-IR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Yasna" + ], + "romanized": [ + "Yasna" + ] + }, + { + "id": "N-IR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-IR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Mersana" + ], + "romanized": [ + "Mersana" + ] + }, + { + "id": "N-IR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Nazanin-Zahra" + ], + "romanized": [ + "Nazanin-Zahra" + ] + }, + { + "id": "N-IR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Baran" + ], + "romanized": [ + "Baran" + ] + }, + { + "id": "N-IR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Fatemeh-Zahra" + ], + "romanized": [ + "Fatemeh-Zahra" + ] + }, + { + "id": "N-IR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Amir-Ali" + ], + "romanized": [ + "Amir-Ali" + ] + }, + { + "id": "N-IR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-IR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-IR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Amir-Hossein" + ], + "romanized": [ + "Amir-Hossein" + ] + }, + { + "id": "N-IR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Hossein" + ], + "romanized": [ + "Hossein" + ] + }, + { + "id": "N-IR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "AbulFazl" + ], + "romanized": [ + "AbulFazl" + ] + }, + { + "id": "N-IR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Amir-Abbas" + ], + "romanized": [ + "Amir-Abbas" + ] + }, + { + "id": "N-IR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Samyar" + ], + "romanized": [ + "Samyar" + ] + }, + { + "id": "N-IR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Mohammad-Taha" + ], + "romanized": [ + "Mohammad-Taha" + ] + }, + { + "id": "N-IR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Aria" + ], + "romanized": [ + "Aria" + ] + }, + { + "id": "N-IR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Fatemeh" + ], + "romanized": [ + "Fatemeh" + ] + }, + { + "id": "N-IR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Zahra" + ], + "romanized": [ + "Zahra" + ] + }, + { + "id": "N-IR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Maryam" + ], + "romanized": [ + "Maryam" + ] + }, + { + "id": "N-IR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ma'soumeh" + ], + "romanized": [ + "Ma'soumeh" + ] + }, + { + "id": "N-IR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sakineh" + ], + "romanized": [ + "Sakineh" + ] + }, + { + "id": "N-IR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Zeinab" + ], + "romanized": [ + "Zeinab" + ] + }, + { + "id": "N-IR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Roghayyeh" + ], + "romanized": [ + "Roghayyeh" + ] + }, + { + "id": "N-IR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Khadije" + ], + "romanized": [ + "Khadije" + ] + }, + { + "id": "N-IR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Leyla" + ], + "romanized": [ + "Leyla" + ] + }, + { + "id": "N-IR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Somayyeh" + ], + "romanized": [ + "Somayyeh" + ] + }, + { + "id": "N-IR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-IR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-IR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Hossein" + ], + "romanized": [ + "Hossein" + ] + }, + { + "id": "N-IR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Mahdi" + ], + "romanized": [ + "Mahdi" + ] + }, + { + "id": "N-IR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Hassan" + ], + "romanized": [ + "Hassan" + ] + }, + { + "id": "N-IR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Reza" + ], + "romanized": [ + "Reza" + ] + }, + { + "id": "N-IR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Ahmad" + ], + "romanized": [ + "Ahmad" + ] + }, + { + "id": "N-IR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Mohammad-Reza" + ], + "romanized": [ + "Mohammad-Reza" + ] + }, + { + "id": "N-IR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Abbas" + ], + "romanized": [ + "Abbas" + ] + }, + { + "id": "N-IR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ali-Reza" + ], + "romanized": [ + "Ali-Reza" + ] + } + ] + } + ], + "IS": [ + { + "region": "All", + "population": "Babies born", + "note": null, + "names": [ + { + "id": "N-IS-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Embla" + ], + "romanized": [ + "Embla" + ] + }, + { + "id": "N-IS-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emilía" + ], + "romanized": [ + "Emilía" + ] + }, + { + "id": "N-IS-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-IS-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sóley" + ], + "romanized": [ + "Sóley" + ] + }, + { + "id": "N-IS-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Aþena" + ], + "romanized": [ + "Aþena" + ] + }, + { + "id": "N-IS-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Matthildur" + ], + "romanized": [ + "Matthildur" + ] + }, + { + "id": "N-IS-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Katla" + ], + "romanized": [ + "Katla" + ] + }, + { + "id": "N-IS-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Guðrún" + ], + "romanized": [ + "Guðrún" + ] + }, + { + "id": "N-IS-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Eva" + ], + "romanized": [ + "Eva" + ] + }, + { + "id": "N-IS-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Saga" + ], + "romanized": [ + "Saga" + ] + }, + { + "id": "N-IS-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Viktoría" + ], + "romanized": [ + "Viktoría" + ] + }, + { + "id": "N-IS-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Aron" + ], + "romanized": [ + "Aron" + ] + }, + { + "id": "N-IS-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jökull" + ], + "romanized": [ + "Jökull" + ] + }, + { + "id": "N-IS-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Alexander" + ], + "romanized": [ + "Alexander" + ] + }, + { + "id": "N-IS-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Kári" + ], + "romanized": [ + "Kári" + ] + }, + { + "id": "N-IS-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Emil" + ], + "romanized": [ + "Emil" + ] + }, + { + "id": "N-IS-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Jón" + ], + "romanized": [ + "Jón" + ] + }, + { + "id": "N-IS-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Óliver" + ], + "romanized": [ + "Óliver" + ] + }, + { + "id": "N-IS-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Matthías" + ], + "romanized": [ + "Matthías" + ] + }, + { + "id": "N-IS-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Mikael" + ], + "romanized": [ + "Mikael" + ] + }, + { + "id": "N-IS-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Atlas" + ], + "romanized": [ + "Atlas" + ] + }, + { + "id": "N-IS-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Elmar" + ], + "romanized": [ + "Elmar" + ] + } + ] + } + ], + "IT": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-IT-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-IT-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Aurora" + ], + "romanized": [ + "Aurora" + ] + }, + { + "id": "N-IT-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Giulia" + ], + "romanized": [ + "Giulia" + ] + }, + { + "id": "N-IT-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ginevra" + ], + "romanized": [ + "Ginevra" + ] + }, + { + "id": "N-IT-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Beatrice" + ], + "romanized": [ + "Beatrice" + ] + }, + { + "id": "N-IT-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-IT-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Vittoria" + ], + "romanized": [ + "Vittoria" + ] + }, + { + "id": "N-IT-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-IT-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ludovica" + ], + "romanized": [ + "Ludovica" + ] + }, + { + "id": "N-IT-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Matilde" + ], + "romanized": [ + "Matilde" + ] + }, + { + "id": "N-IT-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Leonardo" + ], + "romanized": [ + "Leonardo" + ] + }, + { + "id": "N-IT-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Alessandro" + ], + "romanized": [ + "Alessandro" + ] + }, + { + "id": "N-IT-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Tommaso" + ], + "romanized": [ + "Tommaso" + ] + }, + { + "id": "N-IT-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Francesco" + ], + "romanized": [ + "Francesco" + ] + }, + { + "id": "N-IT-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Lorenzo" + ], + "romanized": [ + "Lorenzo" + ] + }, + { + "id": "N-IT-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Edoardo" + ], + "romanized": [ + "Edoardo" + ] + }, + { + "id": "N-IT-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Mattia" + ], + "romanized": [ + "Mattia" + ] + }, + { + "id": "N-IT-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Riccardo" + ], + "romanized": [ + "Riccardo" + ] + }, + { + "id": "N-IT-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Gabriele" + ], + "romanized": [ + "Gabriele" + ] + }, + { + "id": "N-IT-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Andrea" + ], + "romanized": [ + "Andrea" + ] + } + ] + } + ], + "JE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-JE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Willow" + ], + "romanized": [ + "Willow" + ] + }, + { + "id": "N-JE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-JE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Aria" + ], + "romanized": [ + "Aria" + ] + }, + { + "id": "N-JE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sienna" + ], + "romanized": [ + "Sienna" + ] + }, + { + "id": "N-JE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-JE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Daisy" + ], + "romanized": [ + "Daisy" + ] + }, + { + "id": "N-JE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-JE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-JE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Florence" + ], + "romanized": [ + "Florence" + ] + }, + { + "id": "N-JE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Valentina" + ], + "romanized": [ + "Valentina" + ] + }, + { + "id": "N-JE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Arthur" + ], + "romanized": [ + "Arthur" + ] + }, + { + "id": "N-JE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-JE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-JE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-JE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-JE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-JE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + }, + { + "id": "N-JE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Frederick" + ], + "romanized": [ + "Frederick" + ] + }, + { + "id": "N-JE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Finn" + ], + "romanized": [ + "Finn" + ] + }, + { + "id": "N-JE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Albert" + ], + "romanized": [ + "Albert" + ] + } + ] + } + ], + "JM": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-JM-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-JM-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Arianna" + ], + "romanized": [ + "Arianna" + ] + }, + { + "id": "N-JM-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Gianna" + ], + "romanized": [ + "Gianna" + ] + }, + { + "id": "N-JM-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Kyra" + ], + "romanized": [ + "Kyra" + ] + }, + { + "id": "N-JM-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Azora Kiara" + ], + "romanized": [ + "Azora Kiara" + ] + }, + { + "id": "N-JM-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Azariah" + ], + "romanized": [ + "Azariah" + ] + }, + { + "id": "N-JM-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Aria" + ], + "romanized": [ + "Aria" + ] + }, + { + "id": "N-JM-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ariana" + ], + "romanized": [ + "Ariana" + ] + }, + { + "id": "N-JM-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Azaria" + ], + "romanized": [ + "Azaria" + ] + }, + { + "id": "N-JM-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Aiden" + ], + "romanized": [ + "Aiden" + ] + }, + { + "id": "N-JM-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-JM-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Malachi" + ], + "romanized": [ + "Malachi" + ] + }, + { + "id": "N-JM-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Amir" + ], + "romanized": [ + "Amir" + ] + }, + { + "id": "N-JM-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "thaniel" + ], + "romanized": [ + "thaniel" + ] + }, + { + "id": "N-JM-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Joshua" + ], + "romanized": [ + "Joshua" + ] + }, + { + "id": "N-JM-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Josiah" + ], + "romanized": [ + "Josiah" + ] + }, + { + "id": "N-JM-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Zahir" + ], + "romanized": [ + "Zahir" + ] + }, + { + "id": "N-JM-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "than" + ], + "romanized": [ + "than" + ] + } + ] + } + ], + "JO": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-JO-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Jouri" + ], + "romanized": [ + "Jouri" + ] + }, + { + "id": "N-JO-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Salma" + ], + "romanized": [ + "Salma" + ] + }, + { + "id": "N-JO-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Naya" + ], + "romanized": [ + "Naya" + ] + }, + { + "id": "N-JO-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Mira" + ], + "romanized": [ + "Mira" + ] + }, + { + "id": "N-JO-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lianne" + ], + "romanized": [ + "Lianne" + ] + }, + { + "id": "N-JO-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Leen" + ], + "romanized": [ + "Leen" + ] + }, + { + "id": "N-JO-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Zina" + ], + "romanized": [ + "Zina" + ] + }, + { + "id": "N-JO-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Mariam" + ], + "romanized": [ + "Mariam" + ] + }, + { + "id": "N-JO-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Wateen" + ], + "romanized": [ + "Wateen" + ] + }, + { + "id": "N-JO-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Tuleen" + ], + "romanized": [ + "Tuleen" + ] + }, + { + "id": "N-JO-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-JO-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-JO-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-JO-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Youssef" + ], + "romanized": [ + "Youssef" + ] + }, + { + "id": "N-JO-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-JO-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Karam" + ], + "romanized": [ + "Karam" + ] + }, + { + "id": "N-JO-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Shahem" + ], + "romanized": [ + "Shahem" + ] + }, + { + "id": "N-JO-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Jad" + ], + "romanized": [ + "Jad" + ] + }, + { + "id": "N-JO-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-JO-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Hashem" + ], + "romanized": [ + "Hashem" + ] + } + ] + } + ], + "KW": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-KW-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Fatma" + ], + "romanized": [ + "Fatma" + ] + }, + { + "id": "N-KW-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Mariam" + ], + "romanized": [ + "Mariam" + ] + }, + { + "id": "N-KW-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Hussa" + ], + "romanized": [ + "Hussa" + ] + }, + { + "id": "N-KW-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sherifa" + ], + "romanized": [ + "Sherifa" + ] + }, + { + "id": "N-KW-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-KW-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Reem" + ], + "romanized": [ + "Reem" + ] + }, + { + "id": "N-KW-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Aisha" + ], + "romanized": [ + "Aisha" + ] + }, + { + "id": "N-KW-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Dalal" + ], + "romanized": [ + "Dalal" + ] + }, + { + "id": "N-KW-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Lulwa" + ], + "romanized": [ + "Lulwa" + ] + }, + { + "id": "N-KW-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Shaikha" + ], + "romanized": [ + "Shaikha" + ] + }, + { + "id": "N-KW-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-KW-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Abdullah" + ], + "romanized": [ + "Abdullah" + ] + }, + { + "id": "N-KW-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Fahad" + ], + "romanized": [ + "Fahad" + ] + }, + { + "id": "N-KW-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Khaled" + ], + "romanized": [ + "Khaled" + ] + }, + { + "id": "N-KW-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-KW-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Yousef" + ], + "romanized": [ + "Yousef" + ] + }, + { + "id": "N-KW-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-KW-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Abdulaziz" + ], + "romanized": [ + "Abdulaziz" + ] + }, + { + "id": "N-KW-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Faisal" + ], + "romanized": [ + "Faisal" + ] + }, + { + "id": "N-KW-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Bader" + ], + "romanized": [ + "Bader" + ] + } + ] + } + ], + "LB": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-LB-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Marie" + ], + "romanized": [ + "Marie" + ] + }, + { + "id": "N-LB-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Fatima" + ], + "romanized": [ + "Fatima" + ] + }, + { + "id": "N-LB-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Jessica" + ], + "romanized": [ + "Jessica" + ] + }, + { + "id": "N-LB-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Zeinab" + ], + "romanized": [ + "Zeinab" + ] + }, + { + "id": "N-LB-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Mariam" + ], + "romanized": [ + "Mariam" + ] + }, + { + "id": "N-LB-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sarah" + ], + "romanized": [ + "Sarah" + ] + }, + { + "id": "N-LB-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Maya" + ], + "romanized": [ + "Maya" + ] + }, + { + "id": "N-LB-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Layla" + ], + "romanized": [ + "Layla" + ] + }, + { + "id": "N-LB-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Christina" + ], + "romanized": [ + "Christina" + ] + }, + { + "id": "N-LB-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Amal" + ], + "romanized": [ + "Amal" + ] + }, + { + "id": "N-LB-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Elie" + ], + "romanized": [ + "Elie" + ] + }, + { + "id": "N-LB-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-LB-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Charbel" + ], + "romanized": [ + "Charbel" + ] + }, + { + "id": "N-LB-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-LB-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Hassan" + ], + "romanized": [ + "Hassan" + ] + }, + { + "id": "N-LB-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Hussein" + ], + "romanized": [ + "Hussein" + ] + }, + { + "id": "N-LB-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "George" + ], + "romanized": [ + "George" + ] + }, + { + "id": "N-LB-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Ahmad" + ], + "romanized": [ + "Ahmad" + ] + }, + { + "id": "N-LB-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Christian" + ], + "romanized": [ + "Christian" + ] + }, + { + "id": "N-LB-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Joe" + ], + "romanized": [ + "Joe" + ] + } + ] + } + ], + "LI": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-LI-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emilia" + ], + "romanized": [ + "Emilia" + ] + }, + { + "id": "N-LI-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Frida" + ], + "romanized": [ + "Frida" + ] + }, + { + "id": "N-LI-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Frieda" + ], + "romanized": [ + "Frieda" + ] + }, + { + "id": "N-LI-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-LI-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-LI-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Melina" + ], + "romanized": [ + "Melina" + ] + }, + { + "id": "N-LI-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-LI-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-LI-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Elias" + ], + "romanized": [ + "Elias" + ] + }, + { + "id": "N-LI-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Elyas" + ], + "romanized": [ + "Elyas" + ] + }, + { + "id": "N-LI-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Louis" + ], + "romanized": [ + "Louis" + ] + }, + { + "id": "N-LI-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Luis" + ], + "romanized": [ + "Luis" + ] + }, + { + "id": "N-LI-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-LI-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-LI-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Paul" + ], + "romanized": [ + "Paul" + ] + }, + { + "id": "N-LI-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Leano" + ], + "romanized": [ + "Leano" + ] + }, + { + "id": "N-LI-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-LI-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Mattia" + ], + "romanized": [ + "Mattia" + ] + }, + { + "id": "N-LI-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Nelio" + ], + "romanized": [ + "Nelio" + ] + }, + { + "id": "N-LI-1-M-12", + "rank": 12, + "gender": "M", + "localized": [ + "Raphael" + ], + "romanized": [ + "Raphael" + ] + }, + { + "id": "N-LI-1-M-13", + "rank": 13, + "gender": "M", + "localized": [ + "Rafael" + ], + "romanized": [ + "Rafael" + ] + }, + { + "id": "N-LI-1-M-14", + "rank": 14, + "gender": "M", + "localized": [ + "Valentin" + ], + "romanized": [ + "Valentin" + ] + } + ] + } + ], + "LT": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-LT-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofija" + ], + "romanized": [ + "Sofija" + ] + }, + { + "id": "N-LT-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emilija" + ], + "romanized": [ + "Emilija" + ] + }, + { + "id": "N-LT-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Luknė" + ], + "romanized": [ + "Luknė" + ] + }, + { + "id": "N-LT-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Amelija" + ], + "romanized": [ + "Amelija" + ] + }, + { + "id": "N-LT-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Kamilė" + ], + "romanized": [ + "Kamilė" + ] + }, + { + "id": "N-LT-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Lėja" + ], + "romanized": [ + "Lėja" + ] + }, + { + "id": "N-LT-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Gabija" + ], + "romanized": [ + "Gabija" + ] + }, + { + "id": "N-LT-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Patricija" + ], + "romanized": [ + "Patricija" + ] + }, + { + "id": "N-LT-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Elija" + ], + "romanized": [ + "Elija" + ] + }, + { + "id": "N-LT-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Liepa" + ], + "romanized": [ + "Liepa" + ] + }, + { + "id": "N-LT-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Markas" + ], + "romanized": [ + "Markas" + ] + }, + { + "id": "N-LT-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Benas" + ], + "romanized": [ + "Benas" + ] + }, + { + "id": "N-LT-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Jokūbas" + ], + "romanized": [ + "Jokūbas" + ] + }, + { + "id": "N-LT-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Dominykas" + ], + "romanized": [ + "Dominykas" + ] + }, + { + "id": "N-LT-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Herkus" + ], + "romanized": [ + "Herkus" + ] + }, + { + "id": "N-LT-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Lukas" + ], + "romanized": [ + "Lukas" + ] + }, + { + "id": "N-LT-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Jonas" + ], + "romanized": [ + "Jonas" + ] + }, + { + "id": "N-LT-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Matas" + ], + "romanized": [ + "Matas" + ] + }, + { + "id": "N-LT-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Kajus" + ], + "romanized": [ + "Kajus" + ] + }, + { + "id": "N-LT-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Adomas" + ], + "romanized": [ + "Adomas" + ] + } + ] + } + ], + "LU": [ + { + "region": "All", + "population": "Babies born", + "note": null, + "names": [ + { + "id": "N-LU-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-LU-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Lara" + ], + "romanized": [ + "Lara" + ] + }, + { + "id": "N-LU-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Zoé" + ], + "romanized": [ + "Zoé" + ] + }, + { + "id": "N-LU-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Amy" + ], + "romanized": [ + "Amy" + ] + }, + { + "id": "N-LU-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sarah" + ], + "romanized": [ + "Sarah" + ] + }, + { + "id": "N-LU-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-LU-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-LU-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "N-LU-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-LU-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-LU-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-LU-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-LU-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Tom" + ], + "romanized": [ + "Tom" + ] + }, + { + "id": "N-LU-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Ben" + ], + "romanized": [ + "Ben" + ] + } + ] + } + ], + "LV": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-LV-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofija" + ], + "romanized": [ + "Sofija" + ] + }, + { + "id": "N-LV-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Alise" + ], + "romanized": [ + "Alise" + ] + }, + { + "id": "N-LV-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Marta" + ], + "romanized": [ + "Marta" + ] + }, + { + "id": "N-LV-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Amēlija" + ], + "romanized": [ + "Amēlija" + ] + }, + { + "id": "N-LV-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Paula" + ], + "romanized": [ + "Paula" + ] + }, + { + "id": "N-LV-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-LV-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-LV-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Dārta" + ], + "romanized": [ + "Dārta" + ] + }, + { + "id": "N-LV-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Elza" + ], + "romanized": [ + "Elza" + ] + }, + { + "id": "N-LV-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Marks" + ], + "romanized": [ + "Marks" + ] + }, + { + "id": "N-LV-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Roberts" + ], + "romanized": [ + "Roberts" + ] + }, + { + "id": "N-LV-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Gustavs" + ], + "romanized": [ + "Gustavs" + ] + }, + { + "id": "N-LV-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Jēkabs" + ], + "romanized": [ + "Jēkabs" + ] + }, + { + "id": "N-LV-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Emīls" + ], + "romanized": [ + "Emīls" + ] + }, + { + "id": "N-LV-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Kārlis" + ], + "romanized": [ + "Kārlis" + ] + }, + { + "id": "N-LV-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Adrians" + ], + "romanized": [ + "Adrians" + ] + }, + { + "id": "N-LV-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Daniels" + ], + "romanized": [ + "Daniels" + ] + }, + { + "id": "N-LV-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ralfs" + ], + "romanized": [ + "Ralfs" + ] + } + ] + } + ], + "LY": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-LY-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Aya" + ], + "romanized": [ + "Aya" + ] + }, + { + "id": "N-LY-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Rania" + ], + "romanized": [ + "Rania" + ] + }, + { + "id": "N-LY-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sarah" + ], + "romanized": [ + "Sarah" + ] + }, + { + "id": "N-LY-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Reem" + ], + "romanized": [ + "Reem" + ] + }, + { + "id": "N-LY-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Hoda" + ], + "romanized": [ + "Hoda" + ] + }, + { + "id": "N-LY-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Marwa" + ], + "romanized": [ + "Marwa" + ] + }, + { + "id": "N-LY-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Mona" + ], + "romanized": [ + "Mona" + ] + }, + { + "id": "N-LY-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Fatima" + ], + "romanized": [ + "Fatima" + ] + }, + { + "id": "N-LY-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Eisha" + ], + "romanized": [ + "Eisha" + ] + }, + { + "id": "N-LY-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Nesreen" + ], + "romanized": [ + "Nesreen" + ] + }, + { + "id": "N-LY-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohammed" + ], + "romanized": [ + "Mohammed" + ] + }, + { + "id": "N-LY-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ahmed" + ], + "romanized": [ + "Ahmed" + ] + }, + { + "id": "N-LY-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-LY-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Hamza" + ], + "romanized": [ + "Hamza" + ] + }, + { + "id": "N-LY-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Ibrahim" + ], + "romanized": [ + "Ibrahim" + ] + }, + { + "id": "N-LY-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Mahmoud" + ], + "romanized": [ + "Mahmoud" + ] + }, + { + "id": "N-LY-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Abdallah" + ], + "romanized": [ + "Abdallah" + ] + }, + { + "id": "N-LY-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Tareq" + ], + "romanized": [ + "Tareq" + ] + }, + { + "id": "N-LY-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Hassan" + ], + "romanized": [ + "Hassan" + ] + }, + { + "id": "N-LY-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Khaled" + ], + "romanized": [ + "Khaled" + ] + } + ] + } + ], + "MA": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-MA-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Inès" + ], + "romanized": [ + "Inès" + ] + }, + { + "id": "N-MA-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Noûr" + ], + "romanized": [ + "Noûr" + ] + }, + { + "id": "N-MA-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Aya" + ], + "romanized": [ + "Aya" + ] + }, + { + "id": "N-MA-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Yasmine" + ], + "romanized": [ + "Yasmine" + ] + }, + { + "id": "N-MA-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Assia" + ], + "romanized": [ + "Assia" + ] + }, + { + "id": "N-MA-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Maryam" + ], + "romanized": [ + "Maryam" + ] + }, + { + "id": "N-MA-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Aïcha" + ], + "romanized": [ + "Aïcha" + ] + }, + { + "id": "N-MA-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-MA-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Amira" + ], + "romanized": [ + "Amira" + ] + }, + { + "id": "N-MA-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Amina" + ], + "romanized": [ + "Amina" + ] + }, + { + "id": "N-MA-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohamed" + ], + "romanized": [ + "Mohamed" + ] + }, + { + "id": "N-MA-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Amir" + ], + "romanized": [ + "Amir" + ] + }, + { + "id": "N-MA-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ibrahim" + ], + "romanized": [ + "Ibrahim" + ] + }, + { + "id": "N-MA-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Naïm" + ], + "romanized": [ + "Naïm" + ] + }, + { + "id": "N-MA-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Ayoub" + ], + "romanized": [ + "Ayoub" + ] + }, + { + "id": "N-MA-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Youssef" + ], + "romanized": [ + "Youssef" + ] + }, + { + "id": "N-MA-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Younès" + ], + "romanized": [ + "Younès" + ] + }, + { + "id": "N-MA-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Wassim" + ], + "romanized": [ + "Wassim" + ] + }, + { + "id": "N-MA-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-MA-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Amine" + ], + "romanized": [ + "Amine" + ] + } + ] + } + ], + "MC": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-MC-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-MC-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-MC-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-MC-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Chloé" + ], + "romanized": [ + "Chloé" + ] + }, + { + "id": "N-MC-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Stella" + ], + "romanized": [ + "Stella" + ] + }, + { + "id": "N-MC-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Leonardo" + ], + "romanized": [ + "Leonardo" + ] + }, + { + "id": "N-MC-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "N-MC-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Raphaël" + ], + "romanized": [ + "Raphaël" + ] + }, + { + "id": "N-MC-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Aaron" + ], + "romanized": [ + "Aaron" + ] + }, + { + "id": "N-MC-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Louis" + ], + "romanized": [ + "Louis" + ] + } + ] + } + ], + "MD": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-MD-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-MD-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-MD-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-MD-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Daria" + ], + "romanized": [ + "Daria" + ] + }, + { + "id": "N-MD-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Anastasia" + ], + "romanized": [ + "Anastasia" + ] + }, + { + "id": "N-MD-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-MD-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Eva" + ], + "romanized": [ + "Eva" + ] + }, + { + "id": "N-MD-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Alexandra" + ], + "romanized": [ + "Alexandra" + ] + }, + { + "id": "N-MD-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Evelina" + ], + "romanized": [ + "Evelina" + ] + }, + { + "id": "N-MD-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-MD-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-MD-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Matei" + ], + "romanized": [ + "Matei" + ] + }, + { + "id": "N-MD-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Maxim" + ], + "romanized": [ + "Maxim" + ] + }, + { + "id": "N-MD-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-MD-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Bogdan" + ], + "romanized": [ + "Bogdan" + ] + }, + { + "id": "N-MD-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Alexandru" + ], + "romanized": [ + "Alexandru" + ] + }, + { + "id": "N-MD-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Damian" + ], + "romanized": [ + "Damian" + ] + }, + { + "id": "N-MD-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Mark" + ], + "romanized": [ + "Mark" + ] + }, + { + "id": "N-MD-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Artiom" + ], + "romanized": [ + "Artiom" + ] + }, + { + "id": "N-MD-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ion" + ], + "romanized": [ + "Ion" + ] + } + ] + } + ], + "ME": [ + { + "region": "All", + "population": "General population", + "note": null, + "names": [ + { + "id": "O-ME-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Јелена" + ], + "romanized": [ + "Jelena" + ] + }, + { + "id": "O-ME-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Милица" + ], + "romanized": [ + "Milica" + ] + }, + { + "id": "O-ME-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Марија" + ], + "romanized": [ + "Marija" + ] + }, + { + "id": "O-ME-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ивана" + ], + "romanized": [ + "Ivana" + ] + }, + { + "id": "O-ME-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Милена" + ], + "romanized": [ + "Milena" + ] + }, + { + "id": "O-ME-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Ана" + ], + "romanized": [ + "Ana" + ] + }, + { + "id": "O-ME-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Драгана" + ], + "romanized": [ + "Dragana" + ] + }, + { + "id": "O-ME-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Радмила" + ], + "romanized": [ + "Radmila" + ] + }, + { + "id": "O-ME-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Весна" + ], + "romanized": [ + "Vesna" + ] + }, + { + "id": "O-ME-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Љиљана" + ], + "romanized": [ + "Ljiljana" + ] + }, + { + "id": "O-ME-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Никола" + ], + "romanized": [ + "Nikola" + ] + }, + { + "id": "O-ME-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Марко" + ], + "romanized": [ + "Marko" + ] + }, + { + "id": "O-ME-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Драган" + ], + "romanized": [ + "Dragan" + ] + }, + { + "id": "O-ME-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Милош" + ], + "romanized": [ + "Miloš" + ] + }, + { + "id": "O-ME-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Зоран" + ], + "romanized": [ + "Zoran" + ] + }, + { + "id": "O-ME-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Милан" + ], + "romanized": [ + "Milan" + ] + }, + { + "id": "O-ME-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Александар" + ], + "romanized": [ + "Aleksandar" + ] + }, + { + "id": "O-ME-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Иван" + ], + "romanized": [ + "Ivan" + ] + }, + { + "id": "O-ME-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Петар" + ], + "romanized": [ + "Petar" + ] + }, + { + "id": "O-ME-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Лука" + ], + "romanized": [ + "Luka" + ] + } + ] + } + ], + "MK": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-MK-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Јана" + ], + "romanized": [ + "Jana" + ] + }, + { + "id": "O-MK-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Софија" + ], + "romanized": [ + "Sofija" + ] + }, + { + "id": "O-MK-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Мила" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "O-MK-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Хана" + ], + "romanized": [ + "Hana" + ] + }, + { + "id": "O-MK-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Бисера" + ], + "romanized": [ + "Bisera" + ] + }, + { + "id": "O-MK-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Сара" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "O-MK-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Јована" + ], + "romanized": [ + "Jovana" + ] + }, + { + "id": "O-MK-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ева" + ], + "romanized": [ + "Eva" + ] + }, + { + "id": "O-MK-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Дарија" + ], + "romanized": [ + "Darija" + ] + }, + { + "id": "O-MK-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Лука" + ], + "romanized": [ + "Luka" + ] + }, + { + "id": "O-MK-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Дамјан" + ], + "romanized": [ + "Damjan" + ] + }, + { + "id": "O-MK-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Михаил" + ], + "romanized": [ + "Mihail" + ] + }, + { + "id": "O-MK-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Марко" + ], + "romanized": [ + "Marko" + ] + }, + { + "id": "O-MK-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Јован" + ], + "romanized": [ + "Jovan" + ] + }, + { + "id": "O-MK-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Давид" + ], + "romanized": [ + "David" + ] + }, + { + "id": "O-MK-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Jakob" + ], + "romanized": [ + "Jakov" + ] + }, + { + "id": "O-MK-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Петар" + ], + "romanized": [ + "Petar" + ] + }, + { + "id": "O-MK-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Матеј" + ], + "romanized": [ + "Matej" + ] + }, + { + "id": "O-MK-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Стефан" + ], + "romanized": [ + "Stefan" + ] + } + ] + } + ], + "ML": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-ML-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Fatoumata" + ], + "romanized": [ + "Fatoumata" + ] + }, + { + "id": "N-ML-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Mariam" + ], + "romanized": [ + "Mariam" + ] + }, + { + "id": "N-ML-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Aminata" + ], + "romanized": [ + "Aminata" + ] + }, + { + "id": "N-ML-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Hawa" + ], + "romanized": [ + "Hawa" + ] + }, + { + "id": "N-ML-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Awa" + ], + "romanized": [ + "Awa" + ] + }, + { + "id": "N-ML-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Oumou" + ], + "romanized": [ + "Oumou" + ] + }, + { + "id": "N-ML-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Djeneba" + ], + "romanized": [ + "Djeneba" + ] + }, + { + "id": "N-ML-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Bintou" + ], + "romanized": [ + "Bintou" + ] + }, + { + "id": "N-ML-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Fanta" + ], + "romanized": [ + "Fanta" + ] + }, + { + "id": "N-ML-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Kadiatou" + ], + "romanized": [ + "Kadiatou" + ] + }, + { + "id": "N-ML-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mamadou" + ], + "romanized": [ + "Mamadou" + ] + }, + { + "id": "N-ML-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Moussa" + ], + "romanized": [ + "Moussa" + ] + }, + { + "id": "N-ML-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Mahamadou" + ], + "romanized": [ + "Mahamadou" + ] + }, + { + "id": "N-ML-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Adama" + ], + "romanized": [ + "Adama" + ] + }, + { + "id": "N-ML-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Bakary" + ], + "romanized": [ + "Bakary" + ] + }, + { + "id": "N-ML-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Abdoulaye" + ], + "romanized": [ + "Abdoulaye" + ] + }, + { + "id": "N-ML-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Modibo" + ], + "romanized": [ + "Modibo" + ] + }, + { + "id": "N-ML-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Oumar" + ], + "romanized": [ + "Oumar" + ] + }, + { + "id": "N-ML-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Sekou" + ], + "romanized": [ + "Sekou" + ] + }, + { + "id": "N-ML-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Souleymane" + ], + "romanized": [ + "Souleymane" + ] + } + ] + } + ], + "MN": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-MN-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Odval" + ], + "romanized": [ + "Odval" + ] + }, + { + "id": "N-MN-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Bolormaa" + ], + "romanized": [ + "Bolormaa" + ] + }, + { + "id": "N-MN-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Bayarmaa" + ], + "romanized": [ + "Bayarmaa" + ] + }, + { + "id": "N-MN-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Oyunbileg" + ], + "romanized": [ + "Oyunbileg" + ] + }, + { + "id": "N-MN-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Khongordzol" + ], + "romanized": [ + "Khongordzol" + ] + }, + { + "id": "N-MN-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Naranbaatar" + ], + "romanized": [ + "Naranbaatar" + ] + }, + { + "id": "N-MN-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Batkhaаn" + ], + "romanized": [ + "Batkhaаn" + ] + }, + { + "id": "N-MN-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Baаtar" + ], + "romanized": [ + "Baаtar" + ] + }, + { + "id": "N-MN-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Chuluun" + ], + "romanized": [ + "Chuluun" + ] + }, + { + "id": "N-MN-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Sukhbaаtar" + ], + "romanized": [ + "Sukhbaаtar" + ] + } + ] + } + ], + "MT": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-MT-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-MT-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-MT-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Nina" + ], + "romanized": [ + "Nina" + ] + }, + { + "id": "N-MT-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Giulia" + ], + "romanized": [ + "Giulia" + ] + }, + { + "id": "N-MT-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-MT-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-MT-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-MT-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Matteo" + ], + "romanized": [ + "Matteo" + ] + } + ] + } + ], + "MX": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-MX-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-MX-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Valentina" + ], + "romanized": [ + "Valentina" + ] + }, + { + "id": "N-MX-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Regina" + ], + "romanized": [ + "Regina" + ] + }, + { + "id": "N-MX-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "María José" + ], + "romanized": [ + "María José" + ] + }, + { + "id": "N-MX-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Ximena" + ], + "romanized": [ + "Ximena" + ] + }, + { + "id": "N-MX-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Camila" + ], + "romanized": [ + "Camila" + ] + }, + { + "id": "N-MX-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "María Fernanda" + ], + "romanized": [ + "María Fernanda" + ] + }, + { + "id": "N-MX-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Valeria" + ], + "romanized": [ + "Valeria" + ] + }, + { + "id": "N-MX-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-MX-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Renata" + ], + "romanized": [ + "Renata" + ] + }, + { + "id": "N-MX-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Santiago" + ], + "romanized": [ + "Santiago" + ] + }, + { + "id": "N-MX-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-MX-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Sebastián" + ], + "romanized": [ + "Sebastián" + ] + }, + { + "id": "N-MX-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Leordo" + ], + "romanized": [ + "Leordo" + ] + }, + { + "id": "N-MX-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Matías" + ], + "romanized": [ + "Matías" + ] + }, + { + "id": "N-MX-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Emiliano" + ], + "romanized": [ + "Emiliano" + ] + }, + { + "id": "N-MX-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Diego" + ], + "romanized": [ + "Diego" + ] + }, + { + "id": "N-MX-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-MX-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Miguel Ángel" + ], + "romanized": [ + "Miguel Ángel" + ] + }, + { + "id": "N-MX-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Alexander" + ], + "romanized": [ + "Alexander" + ] + } + ] + } + ], + "MY": [ + { + "region": "All", + "population": "All", + "note": "BabyCenter", + "names": [ + { + "id": "N-MY-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Nur" + ], + "romanized": [ + "Nur" + ] + }, + { + "id": "N-MY-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Wan" + ], + "romanized": [ + "Wan" + ] + }, + { + "id": "N-MY-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Nurul" + ], + "romanized": [ + "Nurul" + ] + }, + { + "id": "N-MY-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Aisyah" + ], + "romanized": [ + "Aisyah" + ] + }, + { + "id": "N-MY-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Maryam" + ], + "romanized": [ + "Maryam" + ] + }, + { + "id": "N-MY-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Siti" + ], + "romanized": [ + "Siti" + ] + }, + { + "id": "N-MY-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Dhia" + ], + "romanized": [ + "Dhia" + ] + }, + { + "id": "N-MY-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Naura" + ], + "romanized": [ + "Naura" + ] + }, + { + "id": "N-MY-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ayra" + ], + "romanized": [ + "Ayra" + ] + }, + { + "id": "N-MY-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Puteri" + ], + "romanized": [ + "Puteri" + ] + }, + { + "id": "N-MY-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Muhamad" + ], + "romanized": [ + "Muhamad" + ] + }, + { + "id": "N-MY-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ahmad" + ], + "romanized": [ + "Ahmad" + ] + }, + { + "id": "N-MY-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-MY-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Amar" + ], + "romanized": [ + "Amar" + ] + }, + { + "id": "N-MY-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Wan" + ], + "romanized": [ + "Wan" + ] + }, + { + "id": "N-MY-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Iman" + ], + "romanized": [ + "Iman" + ] + }, + { + "id": "N-MY-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Harraz" + ], + "romanized": [ + "Harraz" + ] + }, + { + "id": "N-MY-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Izz" + ], + "romanized": [ + "Izz" + ] + }, + { + "id": "N-MY-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Umar" + ], + "romanized": [ + "Umar" + ] + }, + { + "id": "N-MY-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Aariz" + ], + "romanized": [ + "Aariz" + ] + } + ] + } + ], + "NL": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-NL-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-NL-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Julia" + ], + "romanized": [ + "Julia" + ] + }, + { + "id": "N-NL-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-NL-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sophie" + ], + "romanized": [ + "Sophie" + ] + }, + { + "id": "N-NL-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-NL-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Yara" + ], + "romanized": [ + "Yara" + ] + }, + { + "id": "N-NL-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Saar" + ], + "romanized": [ + "Saar" + ] + }, + { + "id": "N-NL-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-NL-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Tess" + ], + "romanized": [ + "Tess" + ] + }, + { + "id": "N-NL-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Noor" + ], + "romanized": [ + "Noor" + ] + }, + { + "id": "N-NL-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-NL-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-NL-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-NL-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-NL-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Mees" + ], + "romanized": [ + "Mees" + ] + }, + { + "id": "N-NL-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Finn" + ], + "romanized": [ + "Finn" + ] + }, + { + "id": "N-NL-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "James" + ], + "romanized": [ + "James" + ] + }, + { + "id": "N-NL-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Milan" + ], + "romanized": [ + "Milan" + ] + }, + { + "id": "N-NL-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Levi" + ], + "romanized": [ + "Levi" + ] + }, + { + "id": "N-NL-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Sem" + ], + "romanized": [ + "Sem" + ] + } + ] + } + ], + "NO": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-NO-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-NO-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-NO-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-NO-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-NO-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sofie" + ], + "romanized": [ + "Sofie" + ] + }, + { + "id": "N-NO-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Leah" + ], + "romanized": [ + "Leah" + ] + }, + { + "id": "N-NO-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Frida" + ], + "romanized": [ + "Frida" + ] + }, + { + "id": "N-NO-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Iben" + ], + "romanized": [ + "Iben" + ] + }, + { + "id": "N-NO-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-NO-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-NO-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Jakob" + ], + "romanized": [ + "Jakob" + ] + }, + { + "id": "N-NO-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-NO-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Emil" + ], + "romanized": [ + "Emil" + ] + }, + { + "id": "N-NO-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-NO-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-NO-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Isak" + ], + "romanized": [ + "Isak" + ] + }, + { + "id": "N-NO-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-NO-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Filip" + ], + "romanized": [ + "Filip" + ] + }, + { + "id": "N-NO-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Aksel" + ], + "romanized": [ + "Aksel" + ] + }, + { + "id": "N-NO-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Theodor" + ], + "romanized": [ + "Theodor" + ] + } + ] + } + ], + "NP": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-NP-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Shristi" + ], + "romanized": [ + "Shristi" + ] + }, + { + "id": "N-NP-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Sunita" + ], + "romanized": [ + "Sunita" + ] + }, + { + "id": "N-NP-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Rabina" + ], + "romanized": [ + "Rabina" + ] + }, + { + "id": "N-NP-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Asmita" + ], + "romanized": [ + "Asmita" + ] + }, + { + "id": "N-NP-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Niharika" + ], + "romanized": [ + "Niharika" + ] + }, + { + "id": "N-NP-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Binita" + ], + "romanized": [ + "Binita" + ] + }, + { + "id": "N-NP-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Aasha" + ], + "romanized": [ + "Aasha" + ] + }, + { + "id": "N-NP-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Kabita" + ], + "romanized": [ + "Kabita" + ] + }, + { + "id": "N-NP-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Sita" + ], + "romanized": [ + "Sita" + ] + }, + { + "id": "N-NP-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Gita" + ], + "romanized": [ + "Gita" + ] + }, + { + "id": "N-NP-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Krishna" + ], + "romanized": [ + "Krishna" + ] + }, + { + "id": "N-NP-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Kiran" + ], + "romanized": [ + "Kiran" + ] + }, + { + "id": "N-NP-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Bishal" + ], + "romanized": [ + "Bishal" + ] + }, + { + "id": "N-NP-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Bibek" + ], + "romanized": [ + "Bibek" + ] + }, + { + "id": "N-NP-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Siddhartha" + ], + "romanized": [ + "Siddhartha" + ] + }, + { + "id": "N-NP-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Manish" + ], + "romanized": [ + "Manish" + ] + }, + { + "id": "N-NP-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Mahesh" + ], + "romanized": [ + "Mahesh" + ] + }, + { + "id": "N-NP-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Kamal" + ], + "romanized": [ + "Kamal" + ] + }, + { + "id": "N-NP-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Prem" + ], + "romanized": [ + "Prem" + ] + }, + { + "id": "N-NP-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Prakash" + ], + "romanized": [ + "Prakash" + ] + } + ] + } + ], + "NZ": [ + { + "region": "All", + "population": "Māori", + "note": null, + "names": [ + { + "id": "N-NZ-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-NZ-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Aria" + ], + "romanized": [ + "Aria" + ] + }, + { + "id": "N-NZ-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Maia" + ], + "romanized": [ + "Maia" + ] + }, + { + "id": "N-NZ-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Aurora" + ], + "romanized": [ + "Aurora" + ] + }, + { + "id": "N-NZ-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Amaia" + ], + "romanized": [ + "Amaia" + ] + }, + { + "id": "N-NZ-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Kiara" + ], + "romanized": [ + "Kiara" + ] + }, + { + "id": "N-NZ-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Kaia" + ], + "romanized": [ + "Kaia" + ] + }, + { + "id": "N-NZ-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Amara" + ], + "romanized": [ + "Amara" + ] + }, + { + "id": "N-NZ-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Kora" + ], + "romanized": [ + "Kora" + ] + }, + { + "id": "N-NZ-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-NZ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Nikau" + ], + "romanized": [ + "Nikau" + ] + }, + { + "id": "N-NZ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ari" + ], + "romanized": [ + "Ari" + ] + }, + { + "id": "N-NZ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Niko" + ], + "romanized": [ + "Niko" + ] + }, + { + "id": "N-NZ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Koa" + ], + "romanized": [ + "Koa" + ] + }, + { + "id": "N-NZ-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-NZ-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Keanu" + ], + "romanized": [ + "Keanu" + ] + }, + { + "id": "N-NZ-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Mikaere" + ], + "romanized": [ + "Mikaere" + ] + }, + { + "id": "N-NZ-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Manaia" + ], + "romanized": [ + "Manaia" + ] + }, + { + "id": "N-NZ-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Kairo" + ], + "romanized": [ + "Kairo" + ] + }, + { + "id": "N-NZ-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Kiwa" + ], + "romanized": [ + "Kiwa" + ] + } + ] + }, + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-NZ-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Isla" + ], + "romanized": [ + "Isla" + ] + }, + { + "id": "N-NZ-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-NZ-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-NZ-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-NZ-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lily" + ], + "romanized": [ + "Lily" + ] + }, + { + "id": "N-NZ-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-NZ-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Willow" + ], + "romanized": [ + "Willow" + ] + }, + { + "id": "N-NZ-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-NZ-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Harper" + ], + "romanized": [ + "Harper" + ] + }, + { + "id": "N-NZ-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Sophie" + ], + "romanized": [ + "Sophie" + ] + }, + { + "id": "N-NZ-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-NZ-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-NZ-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Leo" + ], + "romanized": [ + "Leo" + ] + }, + { + "id": "N-NZ-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Jack" + ], + "romanized": [ + "Jack" + ] + }, + { + "id": "N-NZ-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Luca" + ], + "romanized": [ + "Luca" + ] + }, + { + "id": "N-NZ-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + }, + { + "id": "N-NZ-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "George" + ], + "romanized": [ + "George" + ] + }, + { + "id": "N-NZ-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Charlie" + ], + "romanized": [ + "Charlie" + ] + }, + { + "id": "N-NZ-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Hudson" + ], + "romanized": [ + "Hudson" + ] + }, + { + "id": "N-NZ-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + } + ] + } + ], + "PA": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-PA-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mía" + ], + "romanized": [ + "Mía" + ] + }, + { + "id": "N-PA-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-PA-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Lía" + ], + "romanized": [ + "Lía" + ] + }, + { + "id": "N-PA-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ana" + ], + "romanized": [ + "Ana" + ] + }, + { + "id": "N-PA-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-PA-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-PA-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "María" + ], + "romanized": [ + "María" + ] + }, + { + "id": "N-PA-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Camila" + ], + "romanized": [ + "Camila" + ] + }, + { + "id": "N-PA-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Emily" + ], + "romanized": [ + "Emily" + ] + }, + { + "id": "N-PA-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Lucía" + ], + "romanized": [ + "Lucía" + ] + }, + { + "id": "N-PA-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Thiago" + ], + "romanized": [ + "Thiago" + ] + }, + { + "id": "N-PA-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Matías" + ], + "romanized": [ + "Matías" + ] + }, + { + "id": "N-PA-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ian" + ], + "romanized": [ + "Ian" + ] + }, + { + "id": "N-PA-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-PA-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Dylan" + ], + "romanized": [ + "Dylan" + ] + }, + { + "id": "N-PA-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Luis" + ], + "romanized": [ + "Luis" + ] + }, + { + "id": "N-PA-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + }, + { + "id": "N-PA-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Eithan" + ], + "romanized": [ + "Eithan" + ] + }, + { + "id": "N-PA-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Carlos" + ], + "romanized": [ + "Carlos" + ] + }, + { + "id": "N-PA-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + } + ] + } + ], + "PE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-PE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-PE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Camila" + ], + "romanized": [ + "Camila" + ] + }, + { + "id": "N-PE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Alessia" + ], + "romanized": [ + "Alessia" + ] + }, + { + "id": "N-PE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Luciana" + ], + "romanized": [ + "Luciana" + ] + }, + { + "id": "N-PE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Zoe" + ], + "romanized": [ + "Zoe" + ] + }, + { + "id": "N-PE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Valentina" + ], + "romanized": [ + "Valentina" + ] + }, + { + "id": "N-PE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Aitana" + ], + "romanized": [ + "Aitana" + ] + }, + { + "id": "N-PE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Danna" + ], + "romanized": [ + "Danna" + ] + }, + { + "id": "N-PE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Luana" + ], + "romanized": [ + "Luana" + ] + }, + { + "id": "N-PE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Ariana" + ], + "romanized": [ + "Ariana" + ] + }, + { + "id": "N-PE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-PE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Thiago" + ], + "romanized": [ + "Thiago" + ] + }, + { + "id": "N-PE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Dylan" + ], + "romanized": [ + "Dylan" + ] + }, + { + "id": "N-PE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Gael" + ], + "romanized": [ + "Gael" + ] + }, + { + "id": "N-PE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-PE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Ian" + ], + "romanized": [ + "Ian" + ] + }, + { + "id": "N-PE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Luis" + ], + "romanized": [ + "Luis" + ] + }, + { + "id": "N-PE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-PE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Santiago" + ], + "romanized": [ + "Santiago" + ] + }, + { + "id": "N-PE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + } + ] + } + ], + "PF": [ + { + "region": "Tahiti", + "population": "All", + "note": "Unofficial", + "names": [ + { + "id": "N-PF-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Tiare" + ], + "romanized": [ + "Tiare" + ] + }, + { + "id": "N-PF-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Hinano" + ], + "romanized": [ + "Hinano" + ] + }, + { + "id": "N-PF-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Poema" + ], + "romanized": [ + "Poema" + ] + }, + { + "id": "N-PF-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Maeva" + ], + "romanized": [ + "Maeva" + ] + }, + { + "id": "N-PF-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Hina" + ], + "romanized": [ + "Hina" + ] + }, + { + "id": "N-PF-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Vaea" + ], + "romanized": [ + "Vaea" + ] + }, + { + "id": "N-PF-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Titaua" + ], + "romanized": [ + "Titaua" + ] + }, + { + "id": "N-PF-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Moea" + ], + "romanized": [ + "Moea" + ] + }, + { + "id": "N-PF-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Moeata" + ], + "romanized": [ + "Moeata" + ] + }, + { + "id": "N-PF-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Tarita" + ], + "romanized": [ + "Tarita" + ] + }, + { + "id": "N-PF-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Titaina" + ], + "romanized": [ + "Titaina" + ] + }, + { + "id": "N-PF-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Teura" + ], + "romanized": [ + "Teura" + ] + }, + { + "id": "N-PF-1-F-13", + "rank": 13, + "gender": "F", + "localized": [ + "Heikapu" + ], + "romanized": [ + "Heikapu" + ] + }, + { + "id": "N-PF-1-F-14", + "rank": 14, + "gender": "F", + "localized": [ + "Mareva" + ], + "romanized": [ + "Mareva" + ] + }, + { + "id": "N-PF-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Hiro" + ], + "romanized": [ + "Hiro" + ] + }, + { + "id": "N-PF-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Teiki" + ], + "romanized": [ + "Teiki" + ] + }, + { + "id": "N-PF-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Moana" + ], + "romanized": [ + "Moana" + ] + }, + { + "id": "N-PF-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Manua" + ], + "romanized": [ + "Manua" + ] + }, + { + "id": "N-PF-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Marama" + ], + "romanized": [ + "Marama" + ] + }, + { + "id": "N-PF-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Teiva" + ], + "romanized": [ + "Teiva" + ] + }, + { + "id": "N-PF-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Teva" + ], + "romanized": [ + "Teva" + ] + }, + { + "id": "N-PF-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Maui" + ], + "romanized": [ + "Maui" + ] + }, + { + "id": "N-PF-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Tehei" + ], + "romanized": [ + "Tehei" + ] + }, + { + "id": "N-PF-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Tamatoa" + ], + "romanized": [ + "Tamatoa" + ] + }, + { + "id": "N-PF-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Ioane" + ], + "romanized": [ + "Ioane" + ] + }, + { + "id": "N-PF-1-M-12", + "rank": 12, + "gender": "M", + "localized": [ + "Tapuarii" + ], + "romanized": [ + "Tapuarii" + ] + } + ] + } + ], + "PH": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-PH-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Althea" + ], + "romanized": [ + "Althea" + ] + }, + { + "id": "N-PH-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Angel" + ], + "romanized": [ + "Angel" + ] + }, + { + "id": "N-PH-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Samantha" + ], + "romanized": [ + "Samantha" + ] + }, + { + "id": "N-PH-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-PH-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-PH-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Andrea" + ], + "romanized": [ + "Andrea" + ] + }, + { + "id": "N-PH-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Nathalie" + ], + "romanized": [ + "Nathalie" + ] + }, + { + "id": "N-PH-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Princess" + ], + "romanized": [ + "Princess" + ] + }, + { + "id": "N-PH-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Angela" + ], + "romanized": [ + "Angela" + ] + }, + { + "id": "N-PH-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Chloe" + ], + "romanized": [ + "Chloe" + ] + }, + { + "id": "N-PH-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Jacob" + ], + "romanized": [ + "Jacob" + ] + }, + { + "id": "N-PH-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Nathaniel" + ], + "romanized": [ + "Nathaniel" + ] + }, + { + "id": "N-PH-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "N-PH-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Ezekiel" + ], + "romanized": [ + "Ezekiel" + ] + }, + { + "id": "N-PH-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Nathan" + ], + "romanized": [ + "Nathan" + ] + }, + { + "id": "N-PH-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Ethan" + ], + "romanized": [ + "Ethan" + ] + }, + { + "id": "N-PH-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Angelo" + ], + "romanized": [ + "Angelo" + ] + }, + { + "id": "N-PH-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "James" + ], + "romanized": [ + "James" + ] + }, + { + "id": "N-PH-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Matthew" + ], + "romanized": [ + "Matthew" + ] + }, + { + "id": "N-PH-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Zion" + ], + "romanized": [ + "Zion" + ] + } + ] + } + ], + "PK": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-PK-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Fatima" + ], + "romanized": [ + "Fatima" + ] + }, + { + "id": "N-PK-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Fozia" + ], + "romanized": [ + "Fozia" + ] + }, + { + "id": "N-PK-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Bismah" + ], + "romanized": [ + "Bismah" + ] + }, + { + "id": "N-PK-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sobia" + ], + "romanized": [ + "Sobia" + ] + }, + { + "id": "N-PK-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Farrah" + ], + "romanized": [ + "Farrah" + ] + }, + { + "id": "N-PK-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Maryam" + ], + "romanized": [ + "Maryam" + ] + }, + { + "id": "N-PK-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Farzana" + ], + "romanized": [ + "Farzana" + ] + }, + { + "id": "N-PK-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ayesha" + ], + "romanized": [ + "Ayesha" + ] + }, + { + "id": "N-PK-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Sakeena" + ], + "romanized": [ + "Sakeena" + ] + }, + { + "id": "N-PK-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Zainab" + ], + "romanized": [ + "Zainab" + ] + }, + { + "id": "N-PK-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-PK-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-PK-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Hussain" + ], + "romanized": [ + "Hussain" + ] + }, + { + "id": "N-PK-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-PK-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Bilal" + ], + "romanized": [ + "Bilal" + ] + }, + { + "id": "N-PK-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Usman" + ], + "romanized": [ + "Usman" + ] + }, + { + "id": "N-PK-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Zahid" + ], + "romanized": [ + "Zahid" + ] + }, + { + "id": "N-PK-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Shahid" + ], + "romanized": [ + "Shahid" + ] + }, + { + "id": "N-PK-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Saqib" + ], + "romanized": [ + "Saqib" + ] + }, + { + "id": "N-PK-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Nomaan" + ], + "romanized": [ + "Nomaan" + ] + } + ] + } + ], + "PL": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-PL-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Zofia" + ], + "romanized": [ + "Zofia" + ] + }, + { + "id": "N-PL-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Zuzanna" + ], + "romanized": [ + "Zuzanna" + ] + }, + { + "id": "N-PL-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Hanna" + ], + "romanized": [ + "Hanna" + ] + }, + { + "id": "N-PL-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Maja" + ], + "romanized": [ + "Maja" + ] + }, + { + "id": "N-PL-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Laura" + ], + "romanized": [ + "Laura" + ] + }, + { + "id": "N-PL-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Julia" + ], + "romanized": [ + "Julia" + ] + }, + { + "id": "N-PL-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Oliwia" + ], + "romanized": [ + "Oliwia" + ] + }, + { + "id": "N-PL-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Alicja" + ], + "romanized": [ + "Alicja" + ] + }, + { + "id": "N-PL-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Lena" + ], + "romanized": [ + "Lena" + ] + }, + { + "id": "N-PL-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Pola" + ], + "romanized": [ + "Pola" + ] + }, + { + "id": "N-PL-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Antoni" + ], + "romanized": [ + "Antoni" + ] + }, + { + "id": "N-PL-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Jan" + ], + "romanized": [ + "Jan" + ] + }, + { + "id": "N-PL-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Aleksander" + ], + "romanized": [ + "Aleksander" + ] + }, + { + "id": "N-PL-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Franciszek" + ], + "romanized": [ + "Franciszek" + ] + }, + { + "id": "N-PL-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Nikodem" + ], + "romanized": [ + "Nikodem" + ] + }, + { + "id": "N-PL-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Jakub" + ], + "romanized": [ + "Jakub" + ] + }, + { + "id": "N-PL-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Leon" + ], + "romanized": [ + "Leon" + ] + }, + { + "id": "N-PL-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Stanisław" + ], + "romanized": [ + "Stanisław" + ] + }, + { + "id": "N-PL-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Mikołaj" + ], + "romanized": [ + "Mikołaj" + ] + }, + { + "id": "N-PL-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Szymon" + ], + "romanized": [ + "Szymon" + ] + } + ] + } + ], + "PR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-PR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Valentina" + ], + "romanized": [ + "Valentina" + ] + }, + { + "id": "N-PR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-PR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-PR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Luna" + ], + "romanized": [ + "Luna" + ] + }, + { + "id": "N-PR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Aurora" + ], + "romanized": [ + "Aurora" + ] + }, + { + "id": "N-PR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Amaia" + ], + "romanized": [ + "Amaia" + ] + }, + { + "id": "N-PR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Catalina" + ], + "romanized": [ + "Catalina" + ] + }, + { + "id": "N-PR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Mía" + ], + "romanized": [ + "Mía" + ] + }, + { + "id": "N-PR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Milena" + ], + "romanized": [ + "Milena" + ] + }, + { + "id": "N-PR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Gianna" + ], + "romanized": [ + "Gianna" + ] + }, + { + "id": "N-PR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-PR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Thiago" + ], + "romanized": [ + "Thiago" + ] + }, + { + "id": "N-PR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-PR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + }, + { + "id": "N-PR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Sebastián" + ], + "romanized": [ + "Sebastián" + ] + }, + { + "id": "N-PR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-PR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Dylan" + ], + "romanized": [ + "Dylan" + ] + }, + { + "id": "N-PR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Ian" + ], + "romanized": [ + "Ian" + ] + }, + { + "id": "N-PR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Nicolás" + ], + "romanized": [ + "Nicolás" + ] + }, + { + "id": "N-PR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ethan" + ], + "romanized": [ + "Ethan" + ] + } + ] + } + ], + "PT": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-PT-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-PT-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-PT-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Leonor" + ], + "romanized": [ + "Leonor" + ] + }, + { + "id": "N-PT-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Matilde" + ], + "romanized": [ + "Matilde" + ] + }, + { + "id": "N-PT-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Benedita" + ], + "romanized": [ + "Benedita" + ] + }, + { + "id": "N-PT-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Carolina" + ], + "romanized": [ + "Carolina" + ] + }, + { + "id": "N-PT-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Beatriz" + ], + "romanized": [ + "Beatriz" + ] + }, + { + "id": "N-PT-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Margarida" + ], + "romanized": [ + "Margarida" + ] + }, + { + "id": "N-PT-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Francisca" + ], + "romanized": [ + "Francisca" + ] + }, + { + "id": "N-PT-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Camila" + ], + "romanized": [ + "Camila" + ] + }, + { + "id": "N-PT-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Francisco" + ], + "romanized": [ + "Francisco" + ] + }, + { + "id": "N-PT-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Afonso" + ], + "romanized": [ + "Afonso" + ] + }, + { + "id": "N-PT-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "João" + ], + "romanized": [ + "João" + ] + }, + { + "id": "N-PT-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Tomás" + ], + "romanized": [ + "Tomás" + ] + }, + { + "id": "N-PT-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Duarte" + ], + "romanized": [ + "Duarte" + ] + }, + { + "id": "N-PT-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Lourenço" + ], + "romanized": [ + "Lourenço" + ] + }, + { + "id": "N-PT-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Santiago" + ], + "romanized": [ + "Santiago" + ] + }, + { + "id": "N-PT-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Martim" + ], + "romanized": [ + "Martim" + ] + }, + { + "id": "N-PT-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Miguel" + ], + "romanized": [ + "Miguel" + ] + }, + { + "id": "N-PT-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + } + ] + } + ], + "PY": [ + { + "region": "All", + "population": "General population", + "note": null, + "names": [ + { + "id": "N-PY-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "María" + ], + "romanized": [ + "María" + ] + }, + { + "id": "N-PY-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Elizabeth" + ], + "romanized": [ + "Elizabeth" + ] + }, + { + "id": "N-PY-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Beatriz" + ], + "romanized": [ + "Beatriz" + ] + }, + { + "id": "N-PY-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ramona" + ], + "romanized": [ + "Ramona" + ] + }, + { + "id": "N-PY-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Liz" + ], + "romanized": [ + "Liz" + ] + }, + { + "id": "N-PY-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Concepción" + ], + "romanized": [ + "Concepción" + ] + }, + { + "id": "N-PY-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Carolina" + ], + "romanized": [ + "Carolina" + ] + }, + { + "id": "N-PY-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Mabel" + ], + "romanized": [ + "Mabel" + ] + }, + { + "id": "N-PY-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Raquel" + ], + "romanized": [ + "Raquel" + ] + }, + { + "id": "N-PY-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Noemí" + ], + "romanized": [ + "Noemí" + ] + }, + { + "id": "N-PY-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Ramón" + ], + "romanized": [ + "Ramón" + ] + }, + { + "id": "N-PY-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + }, + { + "id": "N-PY-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "José" + ], + "romanized": [ + "José" + ] + }, + { + "id": "N-PY-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Antonio" + ], + "romanized": [ + "Antonio" + ] + }, + { + "id": "N-PY-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Carlos" + ], + "romanized": [ + "Carlos" + ] + }, + { + "id": "N-PY-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-PY-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Luis" + ], + "romanized": [ + "Luis" + ] + }, + { + "id": "N-PY-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Javier" + ], + "romanized": [ + "Javier" + ] + }, + { + "id": "N-PY-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-PY-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "César" + ], + "romanized": [ + "César" + ] + } + ] + } + ], + "RO": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-RO-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-RO-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-RO-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Anastasia" + ], + "romanized": [ + "Anastasia" + ] + }, + { + "id": "N-RO-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-RO-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-RO-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Daria" + ], + "romanized": [ + "Daria" + ] + }, + { + "id": "N-RO-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Eva" + ], + "romanized": [ + "Eva" + ] + }, + { + "id": "N-RO-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Alexandra" + ], + "romanized": [ + "Alexandra" + ] + }, + { + "id": "N-RO-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Evelina" + ], + "romanized": [ + "Evelina" + ] + }, + { + "id": "N-RO-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Andreea" + ], + "romanized": [ + "Andreea" + ] + }, + { + "id": "N-RO-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-RO-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Matei" + ], + "romanized": [ + "Matei" + ] + }, + { + "id": "N-RO-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Bogdan" + ], + "romanized": [ + "Bogdan" + ] + }, + { + "id": "N-RO-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Maxim" + ], + "romanized": [ + "Maxim" + ] + }, + { + "id": "N-RO-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Alexandru" + ], + "romanized": [ + "Alexandru" + ] + }, + { + "id": "N-RO-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Damian" + ], + "romanized": [ + "Damian" + ] + }, + { + "id": "N-RO-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Daniel" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "N-RO-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Artiom" + ], + "romanized": [ + "Artiom" + ] + }, + { + "id": "N-RO-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Ion" + ], + "romanized": [ + "Ion" + ] + }, + { + "id": "N-RO-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + } + ] + } + ], + "RS": [ + { + "region": "All", + "population": "General population", + "note": null, + "names": [ + { + "id": "O-RS-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Милица" + ], + "romanized": [ + "Milica" + ] + }, + { + "id": "O-RS-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Јелена" + ], + "romanized": [ + "Jelena" + ] + }, + { + "id": "O-RS-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Марија" + ], + "romanized": [ + "Marija" + ] + }, + { + "id": "O-RS-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Мирјана" + ], + "romanized": [ + "Mirjana" + ] + }, + { + "id": "O-RS-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Драгана" + ], + "romanized": [ + "Dragana" + ] + }, + { + "id": "O-RS-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Снежана" + ], + "romanized": [ + "Snežana" + ] + }, + { + "id": "O-RS-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Љиљана" + ], + "romanized": [ + "Ljiljana" + ] + }, + { + "id": "O-RS-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Ивана" + ], + "romanized": [ + "Ivana" + ] + }, + { + "id": "O-RS-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ана" + ], + "romanized": [ + "Ana" + ] + }, + { + "id": "O-RS-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Гордана" + ], + "romanized": [ + "Gordana" + ] + }, + { + "id": "O-RS-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Драган" + ], + "romanized": [ + "Dragan" + ] + }, + { + "id": "O-RS-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Милан" + ], + "romanized": [ + "Milan" + ] + }, + { + "id": "O-RS-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Александар" + ], + "romanized": [ + "Aleksandar" + ] + }, + { + "id": "O-RS-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Зоран" + ], + "romanized": [ + "Zoran" + ] + }, + { + "id": "O-RS-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Никола" + ], + "romanized": [ + "Nikola" + ] + }, + { + "id": "O-RS-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Милош" + ], + "romanized": [ + "Miloš" + ] + }, + { + "id": "O-RS-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Марко" + ], + "romanized": [ + "Marko" + ] + }, + { + "id": "O-RS-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Горан" + ], + "romanized": [ + "Goran" + ] + }, + { + "id": "O-RS-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Душан" + ], + "romanized": [ + "Dušan" + ] + }, + { + "id": "O-RS-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Дејан" + ], + "romanized": [ + "Dejan" + ] + } + ] + } + ], + "RU": [ + { + "region": "All", + "population": "All", + "note": "Official civil registry figures", + "names": [ + { + "id": "O-RU-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Анастасия" + ], + "romanized": [ + "Anastasia" + ] + }, + { + "id": "O-RU-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Елена" + ], + "romanized": [ + "Yelena" + ] + }, + { + "id": "O-RU-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Ольга" + ], + "romanized": [ + "Olga" + ] + }, + { + "id": "O-RU-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Наталья" + ], + "romanized": [ + "Natalia" + ] + }, + { + "id": "O-RU-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Екатерина" + ], + "romanized": [ + "Yekaterina" + ] + }, + { + "id": "O-RU-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Анна" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "O-RU-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Татьяна" + ], + "romanized": [ + "Tatiana" + ] + }, + { + "id": "O-RU-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Мария" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "O-RU-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ирина" + ], + "romanized": [ + "Irina" + ] + }, + { + "id": "O-RU-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Юлия" + ], + "romanized": [ + "Yulia" + ] + }, + { + "id": "O-RU-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Александр" + ], + "romanized": [ + "Alexander" + ] + }, + { + "id": "O-RU-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Сергей" + ], + "romanized": [ + "Sergei" + ] + }, + { + "id": "O-RU-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Дмитрий" + ], + "romanized": [ + "Dmitry" + ] + }, + { + "id": "O-RU-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Андрей" + ], + "romanized": [ + "Andrei" + ] + }, + { + "id": "O-RU-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Алексей" + ], + "romanized": [ + "Alexey" + ] + }, + { + "id": "O-RU-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Максим" + ], + "romanized": [ + "Maxim" + ] + }, + { + "id": "O-RU-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Евгений" + ], + "romanized": [ + "Evgeny" + ] + }, + { + "id": "O-RU-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Иван" + ], + "romanized": [ + "Ivan" + ] + }, + { + "id": "O-RU-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Михаил" + ], + "romanized": [ + "Mikhail" + ] + }, + { + "id": "O-RU-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Артём" + ], + "romanized": [ + "Artyom" + ] + } + ] + }, + { + "region": "Moscow", + "population": "Babies born", + "note": "Official civil registry figures", + "names": [ + { + "id": "O-RU-2-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "София" + ], + "romanized": [ + "Sofiya" + ] + }, + { + "id": "O-RU-2-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Мария" + ], + "romanized": [ + "Mariya" + ] + }, + { + "id": "O-RU-2-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Анна" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "O-RU-2-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Алиса" + ], + "romanized": [ + "Alisa" + ] + }, + { + "id": "O-RU-2-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Ева" + ], + "romanized": [ + "Eva" + ] + }, + { + "id": "O-RU-2-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Виктория" + ], + "romanized": [ + "Viktoriya" + ] + }, + { + "id": "O-RU-2-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Полина" + ], + "romanized": [ + "Polina" + ] + }, + { + "id": "O-RU-2-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Александра" + ], + "romanized": [ + "Alexandra" + ] + }, + { + "id": "O-RU-2-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Елизавета" + ], + "romanized": [ + "Elizaveta" + ] + }, + { + "id": "O-RU-2-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Варвара" + ], + "romanized": [ + "Varvara" + ] + }, + { + "id": "O-RU-2-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Александр" + ], + "romanized": [ + "Alexander" + ] + }, + { + "id": "O-RU-2-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Михаил" + ], + "romanized": [ + "Mikhail" + ] + }, + { + "id": "O-RU-2-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Максим" + ], + "romanized": [ + "Maxim" + ] + }, + { + "id": "O-RU-2-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Лев" + ], + "romanized": [ + "Lev" + ] + }, + { + "id": "O-RU-2-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Артём" + ], + "romanized": [ + "Artyom" + ] + }, + { + "id": "O-RU-2-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Марк" + ], + "romanized": [ + "Mark" + ] + }, + { + "id": "O-RU-2-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Иван" + ], + "romanized": [ + "Ivan" + ] + }, + { + "id": "O-RU-2-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Дмитрий" + ], + "romanized": [ + "Dmitry" + ] + }, + { + "id": "O-RU-2-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Матвей" + ], + "romanized": [ + "Matvey" + ] + }, + { + "id": "O-RU-2-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Даниил" + ], + "romanized": [ + "Daniil" + ] + } + ] + } + ], + "SA": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-SA-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-SA-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Latifa" + ], + "romanized": [ + "Latifa" + ] + }, + { + "id": "N-SA-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Nora" + ], + "romanized": [ + "Nora" + ] + }, + { + "id": "N-SA-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Hessa" + ], + "romanized": [ + "Hessa" + ] + }, + { + "id": "N-SA-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Maysoun" + ], + "romanized": [ + "Maysoun" + ] + }, + { + "id": "N-SA-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Maha" + ], + "romanized": [ + "Maha" + ] + }, + { + "id": "N-SA-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Nouf" + ], + "romanized": [ + "Nouf" + ] + }, + { + "id": "N-SA-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Noor" + ], + "romanized": [ + "Noor" + ] + }, + { + "id": "N-SA-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Reema" + ], + "romanized": [ + "Reema" + ] + }, + { + "id": "N-SA-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Alanoud" + ], + "romanized": [ + "Alanoud" + ] + }, + { + "id": "N-SA-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mohammad" + ], + "romanized": [ + "Mohammad" + ] + }, + { + "id": "N-SA-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Fahd" + ], + "romanized": [ + "Fahd" + ] + }, + { + "id": "N-SA-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Abdullah" + ], + "romanized": [ + "Abdullah" + ] + }, + { + "id": "N-SA-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Abdulrahman" + ], + "romanized": [ + "Abdulrahman" + ] + }, + { + "id": "N-SA-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Turki" + ], + "romanized": [ + "Turki" + ] + }, + { + "id": "N-SA-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Bandar" + ], + "romanized": [ + "Bandar" + ] + }, + { + "id": "N-SA-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Omar" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "N-SA-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + } + ] + } + ], + "SI": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-SI-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Ema" + ], + "romanized": [ + "Ema" + ] + }, + { + "id": "N-SI-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Zala" + ], + "romanized": [ + "Zala" + ] + }, + { + "id": "N-SI-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-SI-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Julija" + ], + "romanized": [ + "Julija" + ] + }, + { + "id": "N-SI-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Hana" + ], + "romanized": [ + "Hana" + ] + }, + { + "id": "N-SI-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Sofija" + ], + "romanized": [ + "Sofija" + ] + }, + { + "id": "N-SI-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ajda" + ], + "romanized": [ + "Ajda" + ] + }, + { + "id": "N-SI-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Vita" + ], + "romanized": [ + "Vita" + ] + }, + { + "id": "N-SI-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Lana" + ], + "romanized": [ + "Lana" + ] + }, + { + "id": "N-SI-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Neža" + ], + "romanized": [ + "Neža" + ] + }, + { + "id": "N-SI-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Nika" + ], + "romanized": [ + "Nika" + ] + }, + { + "id": "N-SI-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "Mila" + ], + "romanized": [ + "Mila" + ] + }, + { + "id": "N-SI-1-F-13", + "rank": 13, + "gender": "F", + "localized": [ + "Sara" + ], + "romanized": [ + "Sara" + ] + }, + { + "id": "N-SI-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Filip" + ], + "romanized": [ + "Filip" + ] + }, + { + "id": "N-SI-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Luka" + ], + "romanized": [ + "Luka" + ] + }, + { + "id": "N-SI-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Nik" + ], + "romanized": [ + "Nik" + ] + }, + { + "id": "N-SI-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Mark" + ], + "romanized": [ + "Mark" + ] + }, + { + "id": "N-SI-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Jakob" + ], + "romanized": [ + "Jakob" + ] + }, + { + "id": "N-SI-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-SI-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Lan" + ], + "romanized": [ + "Lan" + ] + }, + { + "id": "N-SI-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Oskar" + ], + "romanized": [ + "Oskar" + ] + }, + { + "id": "N-SI-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Tim" + ], + "romanized": [ + "Tim" + ] + }, + { + "id": "N-SI-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Lovro" + ], + "romanized": [ + "Lovro" + ] + }, + { + "id": "N-SI-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Žan" + ], + "romanized": [ + "Žan" + ] + } + ] + } + ], + "SK": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-SK-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-SK-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Eliška" + ], + "romanized": [ + "Eliška" + ] + }, + { + "id": "N-SK-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Nina" + ], + "romanized": [ + "Nina" + ] + }, + { + "id": "N-SK-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Ema" + ], + "romanized": [ + "Ema" + ] + }, + { + "id": "N-SK-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Viktória" + ], + "romanized": [ + "Viktória" + ] + }, + { + "id": "N-SK-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Natália" + ], + "romanized": [ + "Natália" + ] + }, + { + "id": "N-SK-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Nela" + ], + "romanized": [ + "Nela" + ] + }, + { + "id": "N-SK-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Sára" + ], + "romanized": [ + "Sára" + ] + }, + { + "id": "N-SK-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-SK-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-SK-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Jakub" + ], + "romanized": [ + "Jakub" + ] + }, + { + "id": "N-SK-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Samuel" + ], + "romanized": [ + "Samuel" + ] + }, + { + "id": "N-SK-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Adam" + ], + "romanized": [ + "Adam" + ] + }, + { + "id": "N-SK-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Michal" + ], + "romanized": [ + "Michal" + ] + }, + { + "id": "N-SK-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-SK-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Filip" + ], + "romanized": [ + "Filip" + ] + }, + { + "id": "N-SK-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Tomáš" + ], + "romanized": [ + "Tomáš" + ] + }, + { + "id": "N-SK-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ] + }, + { + "id": "N-SK-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Matej" + ], + "romanized": [ + "Matej" + ] + }, + { + "id": "N-SK-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Richard" + ], + "romanized": [ + "Richard" + ] + } + ] + } + ], + "SM": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-SM-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Aurora" + ], + "romanized": [ + "Aurora" + ] + }, + { + "id": "N-SM-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Sofia" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "N-SM-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Tommaso" + ], + "romanized": [ + "Tommaso" + ] + }, + { + "id": "N-SM-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Edoardo" + ], + "romanized": [ + "Edoardo" + ] + }, + { + "id": "N-SM-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Leonardo" + ], + "romanized": [ + "Leonardo" + ] + } + ] + } + ], + "SV": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-SV-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Astrid" + ], + "romanized": [ + "Astrid" + ] + }, + { + "id": "N-SV-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Maja" + ], + "romanized": [ + "Maja" + ] + }, + { + "id": "N-SV-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Alma" + ], + "romanized": [ + "Alma" + ] + }, + { + "id": "N-SV-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Vera" + ], + "romanized": [ + "Vera" + ] + }, + { + "id": "N-SV-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Freja" + ], + "romanized": [ + "Freja" + ] + }, + { + "id": "N-SV-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Leah" + ], + "romanized": [ + "Leah" + ] + }, + { + "id": "N-SV-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ella" + ], + "romanized": [ + "Ella" + ] + }, + { + "id": "N-SV-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Alice" + ], + "romanized": [ + "Alice" + ] + }, + { + "id": "N-SV-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Selma" + ], + "romanized": [ + "Selma" + ] + }, + { + "id": "N-SV-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Lilly" + ], + "romanized": [ + "Lilly" + ] + }, + { + "id": "N-SV-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-SV-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-SV-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-SV-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Hugo" + ], + "romanized": [ + "Hugo" + ] + }, + { + "id": "N-SV-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-SV-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-SV-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Nils" + ], + "romanized": [ + "Nils" + ] + }, + { + "id": "N-SV-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Matteo" + ], + "romanized": [ + "Matteo" + ] + }, + { + "id": "N-SV-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Valter" + ], + "romanized": [ + "Valter" + ] + }, + { + "id": "N-SV-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "August" + ], + "romanized": [ + "August" + ] + } + ] + } + ], + "TH": [ + { + "region": "All", + "population": "All", + "note": "Census", + "names": [ + { + "id": "N-TH-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Somchai" + ], + "romanized": [ + "Somchai" + ] + }, + { + "id": "N-TH-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Somsak" + ], + "romanized": [ + "Somsak" + ] + }, + { + "id": "N-TH-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Somporn" + ], + "romanized": [ + "Somporn" + ] + }, + { + "id": "N-TH-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Somboon" + ], + "romanized": [ + "Somboon" + ] + }, + { + "id": "N-TH-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Prasert" + ], + "romanized": [ + "Prasert" + ] + } + ] + } + ], + "TJ": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-TJ-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Sumayah" + ], + "romanized": [ + "Sumayah" + ] + }, + { + "id": "N-TJ-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Asiya" + ], + "romanized": [ + "Asiya" + ] + }, + { + "id": "N-TJ-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Oisha" + ], + "romanized": [ + "Oisha" + ] + }, + { + "id": "N-TJ-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Googoosh" + ], + "romanized": [ + "Googoosh" + ] + }, + { + "id": "N-TJ-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Anohito" + ], + "romanized": [ + "Anohito" + ] + }, + { + "id": "N-TJ-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Indira" + ], + "romanized": [ + "Indira" + ] + }, + { + "id": "N-TJ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Muhammad" + ], + "romanized": [ + "Muhammad" + ] + }, + { + "id": "N-TJ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Yusuf" + ], + "romanized": [ + "Yusuf" + ] + }, + { + "id": "N-TJ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Abdullo" + ], + "romanized": [ + "Abdullo" + ] + }, + { + "id": "N-TJ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Abubakr" + ], + "romanized": [ + "Abubakr" + ] + } + ] + } + ], + "TN": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-TN-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mariam" + ], + "romanized": [ + "Mariam" + ] + }, + { + "id": "N-TN-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Shayma" + ], + "romanized": [ + "Shayma" + ] + }, + { + "id": "N-TN-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Khawla" + ], + "romanized": [ + "Khawla" + ] + }, + { + "id": "N-TN-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mehdi" + ], + "romanized": [ + "Mehdi" + ] + }, + { + "id": "N-TN-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Youssef" + ], + "romanized": [ + "Youssef" + ] + }, + { + "id": "N-TN-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Aziz" + ], + "romanized": [ + "Aziz" + ] + }, + { + "id": "N-TN-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Karim" + ], + "romanized": [ + "Karim" + ] + } + ] + } + ], + "TR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-TR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Fatma" + ], + "romanized": [ + "Fatma" + ] + }, + { + "id": "N-TR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Ayşe" + ], + "romanized": [ + "Ayşe" + ] + }, + { + "id": "N-TR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Emine" + ], + "romanized": [ + "Emine" + ] + }, + { + "id": "N-TR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Hatice" + ], + "romanized": [ + "Hatice" + ] + }, + { + "id": "N-TR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Zeynep" + ], + "romanized": [ + "Zeynep" + ] + }, + { + "id": "N-TR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Elif" + ], + "romanized": [ + "Elif" + ] + }, + { + "id": "N-TR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Meryem" + ], + "romanized": [ + "Meryem" + ] + }, + { + "id": "N-TR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Şerife" + ], + "romanized": [ + "Şerife" + ] + }, + { + "id": "N-TR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Zehra" + ], + "romanized": [ + "Zehra" + ] + }, + { + "id": "N-TR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Sultan" + ], + "romanized": [ + "Sultan" + ] + }, + { + "id": "N-TR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Mehmet" + ], + "romanized": [ + "Mehmet" + ] + }, + { + "id": "N-TR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Mustafa" + ], + "romanized": [ + "Mustafa" + ] + }, + { + "id": "N-TR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ahmet" + ], + "romanized": [ + "Ahmet" + ] + }, + { + "id": "N-TR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "N-TR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Hüseyin" + ], + "romanized": [ + "Hüseyin" + ] + }, + { + "id": "N-TR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Hasan" + ], + "romanized": [ + "Hasan" + ] + }, + { + "id": "N-TR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Ibrahim" + ], + "romanized": [ + "Ibrahim" + ] + }, + { + "id": "N-TR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "İsmail" + ], + "romanized": [ + "İsmail" + ] + }, + { + "id": "N-TR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Osman" + ], + "romanized": [ + "Osman" + ] + }, + { + "id": "N-TR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Yusuf" + ], + "romanized": [ + "Yusuf" + ] + }, + { + "id": "N-TR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Zeynep" + ], + "romanized": [ + "Zeynep" + ] + }, + { + "id": "N-TR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Elif" + ], + "romanized": [ + "Elif" + ] + }, + { + "id": "N-TR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Asel" + ], + "romanized": [ + "Asel" + ] + }, + { + "id": "N-TR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Asya" + ], + "romanized": [ + "Asya" + ] + }, + { + "id": "N-TR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Defne" + ], + "romanized": [ + "Defne" + ] + }, + { + "id": "N-TR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Nehir" + ], + "romanized": [ + "Nehir" + ] + }, + { + "id": "N-TR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Azra" + ], + "romanized": [ + "Azra" + ] + }, + { + "id": "N-TR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Zümra" + ], + "romanized": [ + "Zümra" + ] + }, + { + "id": "N-TR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Eylül" + ], + "romanized": [ + "Eylül" + ] + }, + { + "id": "N-TR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Ecrin" + ], + "romanized": [ + "Ecrin" + ] + }, + { + "id": "N-TR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Yusuf" + ], + "romanized": [ + "Yusuf" + ] + }, + { + "id": "N-TR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Alparslan" + ], + "romanized": [ + "Alparslan" + ] + }, + { + "id": "N-TR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Miraç" + ], + "romanized": [ + "Miraç" + ] + }, + { + "id": "N-TR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Ömer Asaf" + ], + "romanized": [ + "Ömer Asaf" + ] + }, + { + "id": "N-TR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Eymen" + ], + "romanized": [ + "Eymen" + ] + }, + { + "id": "N-TR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Göktug" + ], + "romanized": [ + "Göktug" + ] + }, + { + "id": "N-TR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Ömer" + ], + "romanized": [ + "Ömer" + ] + }, + { + "id": "N-TR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Mustafa" + ], + "romanized": [ + "Mustafa" + ] + }, + { + "id": "N-TR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Aras" + ], + "romanized": [ + "Aras" + ] + }, + { + "id": "N-TR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ali Asaf" + ], + "romanized": [ + "Ali Asaf" + ] + } + ] + } + ], + "UA": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-UA-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Anna" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "N-UA-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Anastasiya" + ], + "romanized": [ + "Anastasiya" + ] + }, + { + "id": "N-UA-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Veronika" + ], + "romanized": [ + "Veronika" + ] + }, + { + "id": "N-UA-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Sofiya" + ], + "romanized": [ + "Sofiya" + ] + }, + { + "id": "N-UA-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Oleksandra" + ], + "romanized": [ + "Oleksandra" + ] + }, + { + "id": "N-UA-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Mariya" + ], + "romanized": [ + "Mariya" + ] + }, + { + "id": "N-UA-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Viktoriya" + ], + "romanized": [ + "Viktoriya" + ] + }, + { + "id": "N-UA-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Milana" + ], + "romanized": [ + "Milana" + ] + }, + { + "id": "N-UA-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Yeva" + ], + "romanized": [ + "Yeva" + ] + }, + { + "id": "N-UA-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Solomiya" + ], + "romanized": [ + "Solomiya" + ] + }, + { + "id": "N-UA-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Artem" + ], + "romanized": [ + "Artem" + ] + }, + { + "id": "N-UA-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Dmytro" + ], + "romanized": [ + "Dmytro" + ] + }, + { + "id": "N-UA-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Ivan" + ], + "romanized": [ + "Ivan" + ] + }, + { + "id": "N-UA-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Maksym" + ], + "romanized": [ + "Maksym" + ] + }, + { + "id": "N-UA-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Mykhaylo" + ], + "romanized": [ + "Mykhaylo" + ] + }, + { + "id": "N-UA-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Danylo" + ], + "romanized": [ + "Danylo" + ] + }, + { + "id": "N-UA-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Vladyslav" + ], + "romanized": [ + "Vladyslav" + ] + }, + { + "id": "N-UA-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Oleksandr" + ], + "romanized": [ + "Oleksandr" + ] + }, + { + "id": "N-UA-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Andriy" + ], + "romanized": [ + "Andriy" + ] + } + ] + } + ], + "US": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-US-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Mary" + ], + "romanized": [ + "Mary" + ] + }, + { + "id": "N-US-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Patricia" + ], + "romanized": [ + "Patricia" + ] + }, + { + "id": "N-US-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Linda" + ], + "romanized": [ + "Linda" + ] + }, + { + "id": "N-US-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Barbara" + ], + "romanized": [ + "Barbara" + ] + }, + { + "id": "N-US-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Elizabeth" + ], + "romanized": [ + "Elizabeth" + ] + }, + { + "id": "N-US-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Jennifer" + ], + "romanized": [ + "Jennifer" + ] + }, + { + "id": "N-US-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-US-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Susan" + ], + "romanized": [ + "Susan" + ] + }, + { + "id": "N-US-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Margaret" + ], + "romanized": [ + "Margaret" + ] + }, + { + "id": "N-US-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Dorothy" + ], + "romanized": [ + "Dorothy" + ] + }, + { + "id": "N-US-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "James" + ], + "romanized": [ + "James" + ] + }, + { + "id": "N-US-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "John" + ], + "romanized": [ + "John" + ] + }, + { + "id": "N-US-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Robert" + ], + "romanized": [ + "Robert" + ] + }, + { + "id": "N-US-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Michael" + ], + "romanized": [ + "Michael" + ] + }, + { + "id": "N-US-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-US-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-US-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Richard" + ], + "romanized": [ + "Richard" + ] + }, + { + "id": "N-US-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Charles" + ], + "romanized": [ + "Charles" + ] + }, + { + "id": "N-US-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Joseph" + ], + "romanized": [ + "Joseph" + ] + }, + { + "id": "N-US-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ] + }, + { + "id": "N-US-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Olivia" + ], + "romanized": [ + "Olivia" + ] + }, + { + "id": "N-US-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-US-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Charlotte" + ], + "romanized": [ + "Charlotte" + ] + }, + { + "id": "N-US-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Amelia" + ], + "romanized": [ + "Amelia" + ] + }, + { + "id": "N-US-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Sophia" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "N-US-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-US-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Ava" + ], + "romanized": [ + "Ava" + ] + }, + { + "id": "N-US-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Mia" + ], + "romanized": [ + "Mia" + ] + }, + { + "id": "N-US-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Evelyn" + ], + "romanized": [ + "Evelyn" + ] + }, + { + "id": "N-US-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Luna" + ], + "romanized": [ + "Luna" + ] + }, + { + "id": "N-US-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Liam" + ], + "romanized": [ + "Liam" + ] + }, + { + "id": "N-US-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Noah" + ], + "romanized": [ + "Noah" + ] + }, + { + "id": "N-US-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Oliver" + ], + "romanized": [ + "Oliver" + ] + }, + { + "id": "N-US-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "James" + ], + "romanized": [ + "James" + ] + }, + { + "id": "N-US-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Elijah" + ], + "romanized": [ + "Elijah" + ] + }, + { + "id": "N-US-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "William" + ], + "romanized": [ + "William" + ] + }, + { + "id": "N-US-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Henry" + ], + "romanized": [ + "Henry" + ] + }, + { + "id": "N-US-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Lucas" + ], + "romanized": [ + "Lucas" + ] + }, + { + "id": "N-US-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Benjamin" + ], + "romanized": [ + "Benjamin" + ] + }, + { + "id": "N-US-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Theodore" + ], + "romanized": [ + "Theodore" + ] + } + ] + } + ], + "UY": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-UY-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "María" + ], + "romanized": [ + "María" + ] + }, + { + "id": "N-UY-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Maria" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "N-UY-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-UY-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Valentina" + ], + "romanized": [ + "Valentina" + ] + }, + { + "id": "N-UY-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Emma" + ], + "romanized": [ + "Emma" + ] + }, + { + "id": "N-UY-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Martina" + ], + "romanized": [ + "Martina" + ] + }, + { + "id": "N-UY-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Catalina" + ], + "romanized": [ + "Catalina" + ] + }, + { + "id": "N-UY-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Juan" + ], + "romanized": [ + "Juan" + ] + }, + { + "id": "N-UY-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Benjamín" + ], + "romanized": [ + "Benjamín" + ] + }, + { + "id": "N-UY-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Mateo" + ], + "romanized": [ + "Mateo" + ] + } + ] + } + ], + "VE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-VE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Camila" + ], + "romanized": [ + "Camila" + ] + }, + { + "id": "N-VE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Isabella" + ], + "romanized": [ + "Isabella" + ] + }, + { + "id": "N-VE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Sofía" + ], + "romanized": [ + "Sofía" + ] + }, + { + "id": "N-VE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Victoria" + ], + "romanized": [ + "Victoria" + ] + }, + { + "id": "N-VE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Valentina" + ], + "romanized": [ + "Valentina" + ] + }, + { + "id": "N-VE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Valeria" + ], + "romanized": [ + "Valeria" + ] + }, + { + "id": "N-VE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Nicole" + ], + "romanized": [ + "Nicole" + ] + }, + { + "id": "N-VE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Samantha" + ], + "romanized": [ + "Samantha" + ] + }, + { + "id": "N-VE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Mariana" + ], + "romanized": [ + "Mariana" + ] + }, + { + "id": "N-VE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Antonella" + ], + "romanized": [ + "Antonella" + ] + }, + { + "id": "N-VE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Sebastián" + ], + "romanized": [ + "Sebastián" + ] + }, + { + "id": "N-VE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Santiago" + ], + "romanized": [ + "Santiago" + ] + }, + { + "id": "N-VE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Samuel" + ], + "romanized": [ + "Samuel" + ] + }, + { + "id": "N-VE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Diego" + ], + "romanized": [ + "Diego" + ] + }, + { + "id": "N-VE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Gabriel" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "N-VE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Alejandro" + ], + "romanized": [ + "Alejandro" + ] + }, + { + "id": "N-VE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Diego Alejandro" + ], + "romanized": [ + "Diego Alejandro" + ] + }, + { + "id": "N-VE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Daniel Alejandro" + ], + "romanized": [ + "Daniel Alejandro" + ] + }, + { + "id": "N-VE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "David" + ], + "romanized": [ + "David" + ] + }, + { + "id": "N-VE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Juan Andrés" + ], + "romanized": [ + "Juan Andrés" + ] + } + ] + } + ], + "ZA": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "N-ZA-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Melokuhle" + ], + "romanized": [ + "Melokuhle" + ] + }, + { + "id": "N-ZA-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Omphile" + ], + "romanized": [ + "Omphile" + ] + }, + { + "id": "N-ZA-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Iminathi" + ], + "romanized": [ + "Iminathi" + ] + }, + { + "id": "N-ZA-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Lisakhanya" + ], + "romanized": [ + "Lisakhanya" + ] + }, + { + "id": "N-ZA-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Lethabo" + ], + "romanized": [ + "Lethabo" + ] + }, + { + "id": "N-ZA-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Amahle" + ], + "romanized": [ + "Amahle" + ] + }, + { + "id": "N-ZA-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Lesedi" + ], + "romanized": [ + "Lesedi" + ] + }, + { + "id": "N-ZA-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Rethabile" + ], + "romanized": [ + "Rethabile" + ] + }, + { + "id": "N-ZA-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Lethokuhle" + ], + "romanized": [ + "Lethokuhle" + ] + }, + { + "id": "N-ZA-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Asemahle" + ], + "romanized": [ + "Asemahle" + ] + }, + { + "id": "N-ZA-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Lethabo" + ], + "romanized": [ + "Lethabo" + ] + }, + { + "id": "N-ZA-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Lubanzi" + ], + "romanized": [ + "Lubanzi" + ] + }, + { + "id": "N-ZA-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Melokuhle" + ], + "romanized": [ + "Melokuhle" + ] + }, + { + "id": "N-ZA-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Junior" + ], + "romanized": [ + "Junior" + ] + }, + { + "id": "N-ZA-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Lethokuhle" + ], + "romanized": [ + "Lethokuhle" + ] + }, + { + "id": "N-ZA-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Siphosethu" + ], + "romanized": [ + "Siphosethu" + ] + }, + { + "id": "N-ZA-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Omphile" + ], + "romanized": [ + "Omphile" + ] + }, + { + "id": "N-ZA-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Lwandle" + ], + "romanized": [ + "Lwandle" + ] + }, + { + "id": "N-ZA-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Banele" + ], + "romanized": [ + "Banele" + ] + }, + { + "id": "N-ZA-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Ofentse" + ], + "romanized": [ + "Ofentse" + ] + } + ] + } + ], + "BG": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-BG-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Виктория" + ], + "romanized": [ + "Viktoria" + ] + }, + { + "id": "O-BG-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Мария" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "O-BG-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Никол" + ], + "romanized": [ + "Nikol" + ] + }, + { + "id": "O-BG-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Рая" + ], + "romanized": [ + "Raya" + ] + }, + { + "id": "O-BG-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "София" + ], + "romanized": [ + "Sofia" + ] + }, + { + "id": "O-BG-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Йоана" + ], + "romanized": [ + "Yoana" + ] + }, + { + "id": "O-BG-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Дария" + ], + "romanized": [ + "Dragana" + ] + }, + { + "id": "O-BG-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Габриела" + ], + "romanized": [ + "Gabriela" + ] + }, + { + "id": "O-BG-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Александра" + ], + "romanized": [ + "Aleksandra" + ] + }, + { + "id": "O-BG-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Симона" + ], + "romanized": [ + "Simona" + ] + }, + { + "id": "O-BG-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Александър" + ], + "romanized": [ + "Aleksandar" + ] + }, + { + "id": "O-BG-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Георги" + ], + "romanized": [ + "Georgi" + ] + }, + { + "id": "O-BG-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Мартин" + ], + "romanized": [ + "Martin" + ] + }, + { + "id": "O-BG-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Калоян" + ], + "romanized": [ + "Kaloyan" + ] + }, + { + "id": "O-BG-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Борис" + ], + "romanized": [ + "Boris" + ] + }, + { + "id": "O-BG-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Димитър" + ], + "romanized": [ + "Dimitar" + ] + }, + { + "id": "O-BG-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Теодор" + ], + "romanized": [ + "Teodor" + ] + }, + { + "id": "O-BG-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Даниел" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "O-BG-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Иван" + ], + "romanized": [ + "Ivan" + ] + }, + { + "id": "O-BG-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Никола" + ], + "romanized": [ + "Nikola" + ] + }, + { + "id": "O-BG-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "Виктор" + ], + "romanized": [ + "Viktor" + ] + } + ] + } + ], + "CN": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-CN-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "若汐" + ], + "romanized": [ + "Ruòxī" + ] + }, + { + "id": "O-CN-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "一诺" + ], + "romanized": [ + "Yīnuò" + ] + }, + { + "id": "O-CN-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "艺涵" + ], + "romanized": [ + "Yìhán" + ] + }, + { + "id": "O-CN-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "依诺" + ], + "romanized": [ + "Yīnuò" + ] + }, + { + "id": "O-CN-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "梓涵" + ], + "romanized": [ + "Zǐhán" + ] + }, + { + "id": "O-CN-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "苡沫" + ], + "romanized": [ + "Yǐmò" + ] + }, + { + "id": "O-CN-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "雨桐" + ], + "romanized": [ + "Yǔtóng" + ] + }, + { + "id": "O-CN-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "欣怡" + ], + "romanized": [ + "Xīnyí" + ] + }, + { + "id": "O-CN-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "语桐" + ], + "romanized": [ + "Yǔtóng" + ] + }, + { + "id": "O-CN-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "语汐" + ], + "romanized": [ + "Yǔxī" + ] + }, + { + "id": "O-CN-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "沐宸" + ], + "romanized": [ + "Mùchén" + ] + }, + { + "id": "O-CN-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "浩宇" + ], + "romanized": [ + "Hàoyǔ" + ] + }, + { + "id": "O-CN-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "沐辰" + ], + "romanized": [ + "Mùchén" + ] + }, + { + "id": "O-CN-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "茗泽" + ], + "romanized": [ + "Míngzé" + ] + }, + { + "id": "O-CN-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "奕辰" + ], + "romanized": [ + "Yìchén" + ] + }, + { + "id": "O-CN-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "宇泽" + ], + "romanized": [ + "Yǔzé" + ] + }, + { + "id": "O-CN-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "浩然" + ], + "romanized": [ + "Hàorán" + ] + }, + { + "id": "O-CN-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "奕泽" + ], + "romanized": [ + "Yìzé" + ] + }, + { + "id": "O-CN-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "宇轩" + ], + "romanized": [ + "Yǔxuān" + ] + }, + { + "id": "O-CN-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "沐阳" + ], + "romanized": [ + "Mùyáng" + ] + } + ] + } + ], + "CY": [ + { + "region": "All", + "population": "All", + "note": "Census", + "names": [ + { + "id": "O-CY-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Μαρία" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "O-CY-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Ελένη" + ], + "romanized": [ + "Eleni" + ] + }, + { + "id": "O-CY-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Ανδρούλα" + ], + "romanized": [ + "Androula" + ] + }, + { + "id": "O-CY-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Γεωργία" + ], + "romanized": [ + "Georgia" + ] + }, + { + "id": "O-CY-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Παναγιώτα" + ], + "romanized": [ + "Panagiota" + ] + }, + { + "id": "O-CY-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Άννα" + ], + "romanized": [ + "Anna" + ] + }, + { + "id": "O-CY-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Χριστίνα" + ], + "romanized": [ + "Christina" + ] + }, + { + "id": "O-CY-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Κατερίνα" + ], + "romanized": [ + "Katerina" + ] + }, + { + "id": "O-CY-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Ιωάννα" + ], + "romanized": [ + "Ioanna" + ] + }, + { + "id": "O-CY-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Κυριακή" + ], + "romanized": [ + "Kyriaki" + ] + }, + { + "id": "O-CY-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Ανδρέας" + ], + "romanized": [ + "Andreas" + ] + }, + { + "id": "O-CY-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Γεώργιος" + ], + "romanized": [ + "Georgios" + ] + }, + { + "id": "O-CY-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Κωνσταντίνος" + ], + "romanized": [ + "Konstantinos" + ] + }, + { + "id": "O-CY-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Χρήστος" + ], + "romanized": [ + "Christos" + ] + }, + { + "id": "O-CY-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Νικόλαος" + ], + "romanized": [ + "Nikolaos" + ] + }, + { + "id": "O-CY-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Μιχάλης" + ], + "romanized": [ + "Michalis" + ] + }, + { + "id": "O-CY-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Παναγιώτης" + ], + "romanized": [ + "Panagiotis" + ] + }, + { + "id": "O-CY-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Ιωάννης" + ], + "romanized": [ + "Ioannis" + ] + }, + { + "id": "O-CY-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Μάριος" + ], + "romanized": [ + "Marios" + ] + }, + { + "id": "O-CY-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Δημήτριος" + ], + "romanized": [ + "Dimitrios" + ] + } + ] + } + ], + "GE": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-GE-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "მარიამი" + ], + "romanized": [ + "Mariami" + ] + }, + { + "id": "O-GE-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "ნინო" + ], + "romanized": [ + "Nino" + ] + }, + { + "id": "O-GE-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "ელენე" + ], + "romanized": [ + "Elene" + ] + }, + { + "id": "O-GE-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "ბარბარე" + ], + "romanized": [ + "Barbare" + ] + }, + { + "id": "O-GE-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "ლილე" + ], + "romanized": [ + "Lile" + ] + }, + { + "id": "O-GE-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "ანასტასია" + ], + "romanized": [ + "Anastasia" + ] + }, + { + "id": "O-GE-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "ნია" + ], + "romanized": [ + "Nia" + ] + }, + { + "id": "O-GE-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "ნუცა" + ], + "romanized": [ + "Nutsa" + ] + }, + { + "id": "O-GE-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "სესილი" + ], + "romanized": [ + "Sesili" + ] + }, + { + "id": "O-GE-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "ანა" + ], + "romanized": [ + "Ana" + ] + }, + { + "id": "O-GE-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "გაბრიელი" + ], + "romanized": [ + "Gabriel" + ] + }, + { + "id": "O-GE-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "ანდრია" + ], + "romanized": [ + "Andria" + ] + }, + { + "id": "O-GE-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "გიორგი" + ], + "romanized": [ + "Giorgi" + ] + }, + { + "id": "O-GE-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "დავითი" + ], + "romanized": [ + "Davit" + ] + }, + { + "id": "O-GE-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "ალექსანდრე" + ], + "romanized": [ + "Aleksandre" + ] + }, + { + "id": "O-GE-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "ნიკოლოზი" + ], + "romanized": [ + "Nikoloz" + ] + }, + { + "id": "O-GE-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "დემეტრე" + ], + "romanized": [ + "Demetre" + ] + }, + { + "id": "O-GE-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "ლუკა" + ], + "romanized": [ + "Luka" + ] + }, + { + "id": "O-GE-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "დანიელ" + ], + "romanized": [ + "Daniel" + ] + }, + { + "id": "O-GE-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "მათე" + ], + "romanized": [ + "Gabor" + ] + } + ] + } + ], + "GR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-GR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Μαρία" + ], + "romanized": [ + "Maria" + ] + }, + { + "id": "O-GR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Ελένη" + ], + "romanized": [ + "Eleni" + ] + }, + { + "id": "O-GR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Αικατερίνη" + ], + "romanized": [ + "Aikaterini" + ] + }, + { + "id": "O-GR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Βασιλική" + ], + "romanized": [ + "Vasiliki" + ] + }, + { + "id": "O-GR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Σοφία" + ], + "romanized": [ + "Sophia" + ] + }, + { + "id": "O-GR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Αγγελική" + ], + "romanized": [ + "Angeliki" + ] + }, + { + "id": "O-GR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Giorgia" + ], + "romanized": [ + "Georgia" + ] + }, + { + "id": "O-GR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Γεωργία" + ], + "romanized": [ + "Gogo" + ] + }, + { + "id": "O-GR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Δήμητρα" + ], + "romanized": [ + "Dimitra" + ] + }, + { + "id": "O-GR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Κωνσταντίνα" + ], + "romanized": [ + "Konstantina" + ] + }, + { + "id": "O-GR-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "Παρασκευή" + ], + "romanized": [ + "Paraskevi" + ] + }, + { + "id": "O-GR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Γεώργιος" + ], + "romanized": [ + "Georgios" + ] + }, + { + "id": "O-GR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Ιωάννης" + ], + "romanized": [ + "Ioannis" + ] + }, + { + "id": "O-GR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Κωνσταντίνος" + ], + "romanized": [ + "Konstantinos" + ] + }, + { + "id": "O-GR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Δημήτριος" + ], + "romanized": [ + "Dimitrios" + ] + }, + { + "id": "O-GR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Νικόλαος" + ], + "romanized": [ + "Nikolaos" + ] + }, + { + "id": "O-GR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Παναγιώτης" + ], + "romanized": [ + "Panagiotis" + ] + }, + { + "id": "O-GR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Βασίλειος" + ], + "romanized": [ + "Vasileios" + ] + }, + { + "id": "O-GR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Χρήστος" + ], + "romanized": [ + "Christos" + ] + }, + { + "id": "O-GR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Αθανάσιος" + ], + "romanized": [ + "Athanasios" + ] + }, + { + "id": "O-GR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Μιχαήλ" + ], + "romanized": [ + "Michail" + ] + } + ] + } + ], + "KG": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-KG-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Салиха" + ], + "romanized": [ + "Saliha" + ] + }, + { + "id": "O-KG-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Раяна" + ], + "romanized": [ + "Rayana" + ] + }, + { + "id": "O-KG-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Амина" + ], + "romanized": [ + "Amina" + ] + }, + { + "id": "O-KG-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Фатима" + ], + "romanized": [ + "Fátima" + ] + }, + { + "id": "O-KG-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Айлин" + ], + "romanized": [ + "Aylin" + ] + }, + { + "id": "O-KG-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Алия" + ], + "romanized": [ + "Aliya" + ] + }, + { + "id": "O-KG-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Сафия" + ], + "romanized": [ + "Safiya" + ] + }, + { + "id": "O-KG-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Аруузат" + ], + "romanized": [ + "Aruuzat" + ] + }, + { + "id": "O-KG-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Хадича" + ], + "romanized": [ + "Hadicha" + ] + }, + { + "id": "O-KG-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Арууке" + ], + "romanized": [ + "Aruuke" + ] + }, + { + "id": "O-KG-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Мухаммад" + ], + "romanized": [ + "Muhammad" + ] + }, + { + "id": "O-KG-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Умар" + ], + "romanized": [ + "Umar" + ] + }, + { + "id": "O-KG-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Али" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "O-KG-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Амир" + ], + "romanized": [ + "Amir" + ] + }, + { + "id": "O-KG-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Билал" + ], + "romanized": [ + "Bilal" + ] + }, + { + "id": "O-KG-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Алихан" + ], + "romanized": [ + "Alikhan" + ] + }, + { + "id": "O-KG-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Алинур" + ], + "romanized": [ + "Alinur" + ] + }, + { + "id": "O-KG-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Нурислам" + ], + "romanized": [ + "Nurislam" + ] + }, + { + "id": "O-KG-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Эмир" + ], + "romanized": [ + "Emir" + ] + }, + { + "id": "O-KG-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Усман" + ], + "romanized": [ + "Usman" + ] + } + ] + } + ], + "KR": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-KR-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "지안" + ], + "romanized": [ + "Ji-an" + ] + }, + { + "id": "O-KR-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "하윤" + ], + "romanized": [ + "Ha-yoon" + ] + }, + { + "id": "O-KR-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "서아" + ], + "romanized": [ + "Seo-ah" + ] + }, + { + "id": "O-KR-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "하은" + ], + "romanized": [ + "Ha-eun" + ] + }, + { + "id": "O-KR-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "서윤" + ], + "romanized": [ + "Seo-yun" + ] + }, + { + "id": "O-KR-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "하린" + ], + "romanized": [ + "Ha-rin" + ] + }, + { + "id": "O-KR-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "지유" + ], + "romanized": [ + "Ji-yoo" + ] + }, + { + "id": "O-KR-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "지우" + ], + "romanized": [ + "Ji-woo" + ] + }, + { + "id": "O-KR-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "수아" + ], + "romanized": [ + "Soo-ah" + ] + }, + { + "id": "O-KR-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "지아" + ], + "romanized": [ + "Ji-a" + ] + }, + { + "id": "O-KR-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "서준" + ], + "romanized": [ + "Seo-jun" + ] + }, + { + "id": "O-KR-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "하준" + ], + "romanized": [ + "Ha-joon" + ] + }, + { + "id": "O-KR-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "도윤" + ], + "romanized": [ + "Do-yun" + ] + }, + { + "id": "O-KR-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "은우" + ], + "romanized": [ + "Eun-woo" + ] + }, + { + "id": "O-KR-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "시우" + ], + "romanized": [ + "Si-woo" + ] + }, + { + "id": "O-KR-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "지호" + ], + "romanized": [ + "Ji-ho" + ] + }, + { + "id": "O-KR-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "예준" + ], + "romanized": [ + "Ye-jun" + ] + }, + { + "id": "O-KR-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "유준" + ], + "romanized": [ + "Yu-jun" + ] + }, + { + "id": "O-KR-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "주원" + ], + "romanized": [ + "Ju-won" + ] + }, + { + "id": "O-KR-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "민준" + ], + "romanized": [ + "Min-jun" + ] + } + ] + } + ], + "KZ": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "O-KZ-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "Медина" + ], + "romanized": [ + "Mädïna" + ] + }, + { + "id": "O-KZ-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "Айлин" + ], + "romanized": [ + "Aylin" + ] + }, + { + "id": "O-KZ-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "Асылым" + ], + "romanized": [ + "Asilim" + ] + }, + { + "id": "O-KZ-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "Айша" + ], + "romanized": [ + "Ayşa" + ] + }, + { + "id": "O-KZ-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "Раяна" + ], + "romanized": [ + "Rayana" + ] + }, + { + "id": "O-KZ-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "Аяла" + ], + "romanized": [ + "Ayala" + ] + }, + { + "id": "O-KZ-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "Айзере" + ], + "romanized": [ + "Ayzere" + ] + }, + { + "id": "O-KZ-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "Амина" + ], + "romanized": [ + "Amina" + ] + }, + { + "id": "O-KZ-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "Томирис" + ], + "romanized": [ + "Tomyris" + ] + }, + { + "id": "O-KZ-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "Айым" + ], + "romanized": [ + "Ayim" + ] + }, + { + "id": "O-KZ-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "Алихан" + ], + "romanized": [ + "Alikhan" + ] + }, + { + "id": "O-KZ-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "Айсұлтан" + ], + "romanized": [ + "Aisultan" + ] + }, + { + "id": "O-KZ-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "Нұрислам" + ], + "romanized": [ + "Nurislam" + ] + }, + { + "id": "O-KZ-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "Алдияр" + ], + "romanized": [ + "Aldiyar" + ] + }, + { + "id": "O-KZ-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "Амир" + ], + "romanized": [ + "Amir" + ] + }, + { + "id": "O-KZ-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "Алинұр" + ], + "romanized": [ + "Alinur" + ] + }, + { + "id": "O-KZ-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "Әли" + ], + "romanized": [ + "Ali" + ] + }, + { + "id": "O-KZ-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "Омар" + ], + "romanized": [ + "Omar" + ] + }, + { + "id": "O-KZ-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "Рамада́н" + ], + "romanized": [ + "Ramazan" + ] + }, + { + "id": "O-KZ-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "Мұхаммед" + ], + "romanized": [ + "Muhammed" + ] + } + ] + } + ], + "TW": [ + { + "region": "All", + "population": "All", + "note": "Census", + "names": [ + { + "id": "O-TW-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "淑芬" + ], + "romanized": [ + "Shu-fen" + ] + }, + { + "id": "O-TW-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "淑惠" + ], + "romanized": [ + "Shu-hui" + ] + }, + { + "id": "O-TW-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "美玲" + ], + "romanized": [ + "Mei-ling" + ] + }, + { + "id": "O-TW-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "雅婷" + ], + "romanized": [ + "Ya-ting" + ] + }, + { + "id": "O-TW-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "美惠" + ], + "romanized": [ + "Mei-hui" + ] + }, + { + "id": "O-TW-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "麗華" + ], + "romanized": [ + "Li-hua" + ] + }, + { + "id": "O-TW-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "淑娟" + ], + "romanized": [ + "Shu-chuan" + ] + }, + { + "id": "O-TW-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "淑貞" + ], + "romanized": [ + "Shu-chen" + ] + }, + { + "id": "O-TW-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "怡君" + ], + "romanized": [ + "I-chun" + ] + }, + { + "id": "O-TW-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "淑華" + ], + "romanized": [ + "Shu-hua" + ] + }, + { + "id": "O-TW-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "家豪" + ], + "romanized": [ + "Chia-hao" + ] + }, + { + "id": "O-TW-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "志明" + ], + "romanized": [ + "Chih-ming" + ] + }, + { + "id": "O-TW-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "俊傑" + ], + "romanized": [ + "Chun-chieh" + ] + }, + { + "id": "O-TW-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "建宏" + ], + "romanized": [ + "Chien-hung" + ] + }, + { + "id": "O-TW-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "俊宏" + ], + "romanized": [ + "Chun-hung" + ] + }, + { + "id": "O-TW-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "志豪" + ], + "romanized": [ + "Chih-hao" + ] + }, + { + "id": "O-TW-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "志偉" + ], + "romanized": [ + "Chih-wei" + ] + }, + { + "id": "O-TW-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "文雄" + ], + "romanized": [ + "Wen-Hsiung" + ] + }, + { + "id": "O-TW-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "金龍" + ], + "romanized": [ + "Chin-lung" + ] + }, + { + "id": "O-TW-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "志強" + ], + "romanized": [ + "Chih-chiang" + ] + } + ] + } + ], + "JP": [ + { + "region": "All", + "population": "All", + "note": null, + "names": [ + { + "id": "M-JP-1-M-1", + "rank": 1, + "gender": "M", + "localized": [ + "蒼" + ], + "romanized": [ + "Ao", + "Sō", + "Aoi" + ] + }, + { + "id": "M-JP-1-M-2", + "rank": 2, + "gender": "M", + "localized": [ + "凪" + ], + "romanized": [ + "Nagi", + "Nagisa" + ] + }, + { + "id": "M-JP-1-M-3", + "rank": 3, + "gender": "M", + "localized": [ + "蓮" + ], + "romanized": [ + "Ren" + ] + }, + { + "id": "M-JP-1-M-4", + "rank": 4, + "gender": "M", + "localized": [ + "陽翔" + ], + "romanized": [ + "Hinato", + "Haruto" + ] + }, + { + "id": "M-JP-1-M-5", + "rank": 5, + "gender": "M", + "localized": [ + "湊" + ], + "romanized": [ + "Minato" + ] + }, + { + "id": "M-JP-1-M-6", + "rank": 6, + "gender": "M", + "localized": [ + "颯真" + ], + "romanized": [ + "Sōma", + "Fūma" + ] + }, + { + "id": "M-JP-1-M-7", + "rank": 7, + "gender": "M", + "localized": [ + "碧" + ], + "romanized": [ + "Ao", + "Aoi" + ] + }, + { + "id": "M-JP-1-M-8", + "rank": 8, + "gender": "M", + "localized": [ + "樹" + ], + "romanized": [ + "Itsuki", + "Tatsuki" + ] + }, + { + "id": "M-JP-1-M-9", + "rank": 9, + "gender": "M", + "localized": [ + "大和" + ], + "romanized": [ + "Yamato" + ] + }, + { + "id": "M-JP-1-M-10", + "rank": 10, + "gender": "M", + "localized": [ + "悠真" + ], + "romanized": [ + "Yūma", + "Haruma" + ] + }, + { + "id": "M-JP-1-M-11", + "rank": 11, + "gender": "M", + "localized": [ + "暖" + ], + "romanized": [ + "Haru", + "Dan" + ] + }, + { + "id": "M-JP-1-F-1", + "rank": 1, + "gender": "F", + "localized": [ + "陽葵" + ], + "romanized": [ + "Hinata", + "Hina", + "Himari" + ] + }, + { + "id": "M-JP-1-F-2", + "rank": 2, + "gender": "F", + "localized": [ + "凛" + ], + "romanized": [ + "Rin" + ] + }, + { + "id": "M-JP-1-F-3", + "rank": 3, + "gender": "F", + "localized": [ + "詩" + ], + "romanized": [ + "Uta" + ] + }, + { + "id": "M-JP-1-F-4", + "rank": 4, + "gender": "F", + "localized": [ + "陽菜" + ], + "romanized": [ + "Hina", + "Haruna" + ] + }, + { + "id": "M-JP-1-F-5", + "rank": 5, + "gender": "F", + "localized": [ + "結菜" + ], + "romanized": [ + "Yuna", + "Yuina", + "Yūna" + ] + }, + { + "id": "M-JP-1-F-6", + "rank": 6, + "gender": "F", + "localized": [ + "杏" + ], + "romanized": [ + "An", + "Anzu" + ] + }, + { + "id": "M-JP-1-F-7", + "rank": 7, + "gender": "F", + "localized": [ + "澪" + ], + "romanized": [ + "Mio", + "Rei" + ] + }, + { + "id": "M-JP-1-F-8", + "rank": 8, + "gender": "F", + "localized": [ + "結愛" + ], + "romanized": [ + "Yua" + ] + }, + { + "id": "M-JP-1-F-9", + "rank": 9, + "gender": "F", + "localized": [ + "芽依" + ], + "romanized": [ + "Mei" + ] + }, + { + "id": "M-JP-1-F-10", + "rank": 10, + "gender": "F", + "localized": [ + "莉子" + ], + "romanized": [ + "Riko" + ] + }, + { + "id": "M-JP-1-F-11", + "rank": 11, + "gender": "F", + "localized": [ + "さくら" + ], + "romanized": [ + "Sakura" + ] + }, + { + "id": "M-JP-1-F-12", + "rank": 12, + "gender": "F", + "localized": [ + "咲茉" + ], + "romanized": [ + "Ema" + ] + } + ] + } + ] +} diff --git a/tooling/pipeline/format-per-directory.sh b/tooling/pipeline/format-per-directory.sh new file mode 100755 index 0000000..85da085 --- /dev/null +++ b/tooling/pipeline/format-per-directory.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# +# Walks every directory under src/ and includes/ (including nested +# subdirectories), runs clang-format on the C/C++ files in that directory +# only (non-recursive), and commits the result with its own commit. +# +# Usage: ./format-per-directory.sh [-y] +# -y skip the confirmation prompt + +set -euo pipefail + +SKIP_CONFIRM=false +if [[ "${1:-}" == "-y" ]]; then + SKIP_CONFIRM=true +fi + +cd "$(dirname "$0")" + +if [ ! -f .clang-format ]; then + echo "ERROR: .clang-format file not found." + exit 1 +fi + +if ! command -v clang-format &>/dev/null; then + echo "ERROR: clang-format not found." + exit 1 +fi + +if ! command -v git &>/dev/null; then + echo "ERROR: git not found." + exit 1 +fi + +echo "WARNING: This script will format .cpp, .h, .cxx, .cc, .c, .hpp files" +echo "directory-by-directory under src/ and includes/, committing after each" +echo "directory is formatted." + +if [[ "$SKIP_CONFIRM" == false ]]; then + read -p "Do you want to continue? (y/n) " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + echo "Aborted." + exit 1 + fi +fi + +if [[ -n "$(git status --porcelain)" ]]; then + echo "ERROR: working tree is not clean. Commit or stash your changes first." + exit 1 +fi + +dirs=$(find src includes -type d | sort) + +for dir in $dirs; do + files=$(find "$dir" -maxdepth 1 -type f \( -name "*.cpp" -o -name "*.hpp" -o -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.cxx" \)) + + if [[ -z "$files" ]]; then + continue + fi + + echo "Formatting $dir..." + echo "$files" | xargs clang-format -i + + if [[ -n "$(git status --porcelain -- "$dir")" ]]; then + git add -- "$dir" + git commit -m "Formatted $dir" + else + echo "No changes in $dir, skipping commit." + fi +done + +echo "Done." diff --git a/tooling/pipeline/includes/biergarten_pipeline.h b/tooling/pipeline/includes/biergarten_pipeline.h new file mode 100644 index 0000000..4c63cba --- /dev/null +++ b/tooling/pipeline/includes/biergarten_pipeline.h @@ -0,0 +1,70 @@ +#ifndef BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_PIPELINE_H_ +#define BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_PIPELINE_H_ + +/** + * @file biergarten_pipeline.h + * @brief Master umbrella header — includes every public header in the + * Biergarten pipeline. + */ + +// --- orchestrator --- +#include "biergarten_pipeline_orchestrator.h" + +// --- concurrency --- +#include "concurrency/bounded_channel.h" + +// --- data_generation --- +#include "data_generation/data_generator.h" +#include "data_generation/json_grammars.h" +#include "data_generation/llama_generator.h" +#include "data_generation/llama_generator_helpers.h" +#include "data_generation/mock_generator.h" +#include "data_generation/prompt_formatting/gemma4_jinja_prompt_formatter.h" +#include "data_generation/prompt_formatting/prompt_formatter.h" + +// --- data_model --- +#include "data_model/generated_models.h" +#include "data_model/models.h" + +// --- json_handling --- +#include "json_handling/pretty_print.h" +#include "services/curated_data/curated_json_data_service.h" + +// --- llama backend --- +#include "llama_backend_state.h" + +// --- services: curated_data --- +#include "services/curated_data/curated_data_service.h" +#include "services/curated_data/mock_curated_data_service.h" + +// --- services: database --- +#include "services/database/export_service.h" +#include "services/database/sqlite_connection_helpers.h" +#include "services/database/sqlite_export_service.h" +#include "services/database/sqlite_export_service_helpers.h" +#include "services/database/sqlite_handle_types.h" +#include "services/database/sqlite_statement_helpers.h" + +// --- services: datetime --- +#include "services/datetime/date_time_provider.h" +#include "services/datetime/timer.h" + +// --- services: enrichment --- +#include "services/enrichment/enrichment_service.h" +#include "services/enrichment/mock_enrichment.h" +#include "services/enrichment/wikipedia_service.h" + +// --- services: logging --- +#include "services/logging/log_dispatcher.h" +#include "services/logging/log_entry.h" +#include "services/logging/log_producer.h" +#include "services/logging/logger.h" + +// --- services: prompting --- +#include "services/prompting/prompt_directory.h" + +// --- web_client --- +#include "web_client/http_web_client.h" +#include "web_client/web_client.h" + +#endif // BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_PIPELINE_H_ diff --git a/tooling/pipeline/includes/biergarten_pipeline_orchestrator.h b/tooling/pipeline/includes/biergarten_pipeline_orchestrator.h index 514d843..c65219a 100644 --- a/tooling/pipeline/includes/biergarten_pipeline_orchestrator.h +++ b/tooling/pipeline/includes/biergarten_pipeline_orchestrator.h @@ -1,12 +1,9 @@ -#ifndef BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_DATA_GENERATOR_H_ -#define BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_DATA_GENERATOR_H_ +#ifndef BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_PIPELINE_ORCHESTRATOR_H_ +#define BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_PIPELINE_ORCHESTRATOR_H_ /** - * @file biergarten_data_generator.h - * @brief Orchestration for end-to-end brewery data generation pipeline. - * - * Intent: Coordinates location loading, enrichment, and generation phases - * to produce a complete dataset. Coordinates dependencies via composition root. + * @file biergarten_pipeline_orchestrator.h + * @brief Orchestration for end-to-end brewery and user data generation. */ #include @@ -15,32 +12,36 @@ #include "data_generation/data_generator.h" #include "data_model/generated_models.h" +#include "services/curated_data/curated_data_service.h" #include "services/database/export_service.h" #include "services/enrichment/enrichment_service.h" - #include "services/logging/logger.h" /** - * @brief Main data generator class for the Biergarten pipeline. + * @brief Main orchestrator for the Biergarten data generation pipeline. * - * This class encapsulates the core logic for generating brewery data. - * It handles location loading, city enrichment, and brewery generation. + * Handles location loading, city enrichment, and brewery/user generation. */ class BiergartenPipelineOrchestrator { public: -/** - * @brief Constructs the orchestrator with injected pipeline dependencies. - * - * @param context_service Provides regional context for locations. - * @param generator Implementation (Llama or Mock) for brewery/user generation. - * @param exporter Database backend for persisting generated records. - * @param application_options CLI configuration and paths. - */ + /** + * @brief Constructs the orchestrator with injected pipeline dependencies. + * + * @param logger Sink for pipeline diagnostics. + * @param context_service Provides regional context for locations. + * @param generator Implementation (Llama or Mock) for brewery/user + * generation. + * @param exporter Database backend for persisting generated records. + * @param curated_data_service Loads curated location, persona, and name + * data used to seed generation. + * @param application_options CLI configuration and paths. + */ BiergartenPipelineOrchestrator( std::shared_ptr logger, std::unique_ptr context_service, std::unique_ptr generator, std::unique_ptr exporter, + std::unique_ptr curated_data_service, const ApplicationOptions& application_options); /** @@ -49,38 +50,42 @@ class BiergartenPipelineOrchestrator { * Performs the following steps: * 1. Load curated locations from JSON * 2. Resolve context for each city using the injected context service - * 3. Generate brewery data for sampled cities + * 3. Generate brewery and user data for sampled cities * * @note STRUCTURAL CONCURRENCY REQUIREMENT: - * When transitioned to a multithreaded design, this method MUST structurally - * enforce that all deployed worker threads are joined before returning (e.g. - * by using std::jthread or a structured concurrency primitive). This ensures - * workers do not attempt to log to a closed channel during application teardown. + * When transitioned to a multithreaded design, this method MUST + * structurally enforce that all deployed worker threads are joined before + * returning (e.g. by using std::jthread or a structured concurrency + * primitive). This ensures workers do not attempt to log to a closed + * channel during application teardown. * * @return true if successful, false if not */ bool Run(); private: - /// @brief Logger instance for emitting pipeline messages. std::shared_ptr logger_; - - /// @brief Owning context provider dependency. std::unique_ptr context_service_; - /// @brief Generator dependency selected in the composition root. + /** + * @brief Generator implementation selected at the composition root (Llama + * or Mock). + */ std::unique_ptr generator_; - /// @brief Storage backend for generated brewery records. - std::unique_ptr exporter_; + /** + * @brief Storage backend for generated brewery and user records. + */ + std::unique_ptr exporter_; + std::unique_ptr curated_data_service_; - /// @brief CLI configuration: paths, model settings, generation parameters. - ApplicationOptions application_options_; + ApplicationOptions application_options_; /** * @brief Load locations from JSON and sample cities. * - * @return Vector of sampled locations capped at 50 entries. + * @return Vector of locations randomly sampled per + * PipelineOptions::location_count. */ std::vector QueryCitiesWithCountries(); @@ -92,11 +97,20 @@ class BiergartenPipelineOrchestrator { void GenerateBreweries(std::span cities); /** - * @brief Log the generated brewery results. + * @brief Generate users grounded in sampled names and personas for + * enriched cities. + * + * @param cities Span of enriched city data. + */ + void GenerateUsers(std::span cities); + + /** + * @brief Log the generated brewery and user results. */ void LogResults() const; - /// @brief Stores generated brewery data. - std::vector generated_breweries_; + std::vector generated_breweries_; + std::vector generated_users_; }; -#endif // BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_DATA_GENERATOR_H_ + +#endif // BIERGARTEN_PIPELINE_INCLUDES_BIERGARTEN_PIPELINE_ORCHESTRATOR_H_ diff --git a/tooling/pipeline/includes/concurrency/bounded_channel.h b/tooling/pipeline/includes/concurrency/bounded_channel.h index ff4fdc2..402bfc1 100644 --- a/tooling/pipeline/includes/concurrency/bounded_channel.h +++ b/tooling/pipeline/includes/concurrency/bounded_channel.h @@ -9,10 +9,12 @@ /** * @file bounded_channel.h - * @brief Thread-safe, bounded multi-producer/multi-consumer synchronous channel. + * @brief Thread-safe, bounded multi-producer/multi-consumer synchronous + * channel. * * Intent: Enables asynchronous inter-thread communication with backpressure. - * Models a synchronous channel where producers/consumers block on capacity limits. + * Models a synchronous channel where producers/consumers block on capacity + * limits. */ /** diff --git a/tooling/pipeline/includes/concurrency/bounded_channel.tcc b/tooling/pipeline/includes/concurrency/bounded_channel.tcc index 951bfbd..5345eb7 100644 --- a/tooling/pipeline/includes/concurrency/bounded_channel.tcc +++ b/tooling/pipeline/includes/concurrency/bounded_channel.tcc @@ -1,4 +1,4 @@ -#include "bounded_channel.h" +#include "concurrency/bounded_channel.h" template void BoundedChannel::Send(T item) { diff --git a/tooling/pipeline/includes/data_generation/data_generator.h b/tooling/pipeline/includes/data_generation/data_generator.h index d7541b5..b3408e4 100644 --- a/tooling/pipeline/includes/data_generation/data_generator.h +++ b/tooling/pipeline/includes/data_generation/data_generator.h @@ -28,12 +28,16 @@ class DataGenerator { const std::string& region_context) = 0; /** - * @brief Generates a user profile for a locale. + * @brief Generates a user profile grounded in a sampled name and persona. * - * @param locale Locale hint used by generator. + * @param city Enriched city the user is associated with. + * @param persona Persona archetype grounding the generated bio. + * @param name Sampled first/last name (and gender) * @return User generation result. */ - virtual UserResult GenerateUser(const std::string& locale) = 0; + virtual UserResult GenerateUser(const EnrichedCity& city, + const UserPersona& persona, + const Name& name) = 0; }; #endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_DATA_GENERATOR_H_ diff --git a/tooling/pipeline/includes/data_generation/json_grammars.h b/tooling/pipeline/includes/data_generation/json_grammars.h new file mode 100644 index 0000000..d30b9a8 --- /dev/null +++ b/tooling/pipeline/includes/data_generation/json_grammars.h @@ -0,0 +1,52 @@ +#ifndef BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_JSON_GRAMMARS_H_ +#define BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_JSON_GRAMMARS_H_ + +/** + * @file data_generation/json_grammars.h + * @brief GBNF grammars constraining structured JSON output from + * LlamaGenerator inference calls. + */ + +#include + +// GBNF grammar for structured user JSON output. +// thought-block permits the model to emit free-form reasoning before the +// JSON object (the prompts explicitly invite this); only the "{...}" tail is +// constrained to the expected shape. +inline constexpr std::string_view kUserJsonGrammar = R"json_user( +root ::= thought-block ( + "{" ws + "\"username\"" ws ":" ws string ws "," ws + "\"bio\"" ws ":" ws string ws "," ws + "\"activity_weight\"" ws ":" ws number ws + "}" ws +) +thought-block ::= [^{]* +ws ::= [ \t\n\r]* +string ::= "\"" char+ "\"" +char ::= [^"\\\x7F\x00-\x1F] | [\\] escape +escape ::= ["\\/bfnrt] | "u" hex hex hex hex +hex ::= [0-9a-fA-F] +number ::= "-"? ("0" | [1-9] [0-9]*) ("." [0-9]+)? +)json_user"; + +// GBNF grammar for structured brewery JSON output (see thought-block note +// above). +inline constexpr std::string_view kBreweryJsonGrammar = R"json_brewery( +root ::= thought-block ( + "{" ws + "\"name_en\"" ws ":" ws string ws "," ws + "\"description_en\"" ws ":" ws string ws "," ws + "\"name_local\"" ws ":" ws string ws "," ws + "\"description_local\"" ws ":" ws string ws + "}" ws +) +thought-block ::= [^{]* +ws ::= [ \t\n\r]* +string ::= "\"" char+ "\"" +char ::= [^"\\\x7F\x00-\x1F] | [\\] escape +escape ::= ["\\/bfnrt] | "u" hex hex hex hex +hex ::= [0-9a-fA-F] +)json_brewery"; + +#endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_JSON_GRAMMARS_H_ diff --git a/tooling/pipeline/includes/data_generation/llama_generator.h b/tooling/pipeline/includes/data_generation/llama_generator.h index ef33b0c..7d4dadb 100644 --- a/tooling/pipeline/includes/data_generation/llama_generator.h +++ b/tooling/pipeline/includes/data_generation/llama_generator.h @@ -1,24 +1,23 @@ #ifndef BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_LLAMA_GENERATOR_H_ #define BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_LLAMA_GENERATOR_H_ -#include - /** * @file data_generation/llama_generator.h * @brief llama.cpp-backed implementation of DataGenerator. */ #include +#include #include #include #include #include -#include "../services/prompting/prompt_directory.h" #include "data_generation/data_generator.h" #include "data_generation/prompt_formatting/prompt_formatter.h" #include "data_model/models.h" #include "services/logging/logger.h" +#include "services/prompting/prompt_directory.h" struct llama_model; struct llama_context; @@ -44,14 +43,9 @@ class LlamaGenerator final : public DataGenerator { ~LlamaGenerator() override; - // disable copy constructor LlamaGenerator(const LlamaGenerator&) = delete; - - // disable copy assignment operator LlamaGenerator& operator=(const LlamaGenerator&) = delete; - // disable move constructor LlamaGenerator(LlamaGenerator&&) = delete; - // disable move assignment operator LlamaGenerator& operator=(LlamaGenerator&&) = delete; /** @@ -65,12 +59,15 @@ class LlamaGenerator final : public DataGenerator { const std::string& region_context) override; /** - * @brief Generates a user profile for the provided locale. + * @brief Generates a user profile grounded in a sampled name and persona. * - * @param locale Locale hint. + * @param city Enriched city the user is associated with. + * @param persona Persona archetype grounding the generated bio. + * @param name Sampled first/last name -- not LLM-invented. * @return Generated user profile. */ - UserResult GenerateUser(const std::string& locale) override; + UserResult GenerateUser(const EnrichedCity& city, const UserPersona& persona, + const Name& name) override; private: static constexpr int32_t kDefaultMaxTokens = 10000; diff --git a/tooling/pipeline/includes/data_generation/llama_generator_helpers.h b/tooling/pipeline/includes/data_generation/llama_generator_helpers.h index e109568..6363cb4 100644 --- a/tooling/pipeline/includes/data_generation/llama_generator_helpers.h +++ b/tooling/pipeline/includes/data_generation/llama_generator_helpers.h @@ -47,4 +47,18 @@ void AppendTokenPiece(const llama_vocab* vocab, llama_token token, std::optional ValidateBreweryJson(const std::string& raw, BreweryResult& brewery_out); +/** + * @brief Validates and parses user JSON output. + * + * Only populates `username`, `bio`, and `activity_weight` -- `first_name` + * and `last_name` are not LLM-authored and are set separately from the + * sampled Name. + * + * @param raw Raw model output. + * @param user_out Parsed user payload. + * @return Validation error message if invalid, or std::nullopt on success. + */ +std::optional ValidateUserJson(const std::string& raw, + UserResult& user_out); + #endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_LLAMA_GENERATOR_HELPERS_H_ diff --git a/tooling/pipeline/includes/data_generation/mock_generator.h b/tooling/pipeline/includes/data_generation/mock_generator.h index 5924164..62467d8 100644 --- a/tooling/pipeline/includes/data_generation/mock_generator.h +++ b/tooling/pipeline/includes/data_generation/mock_generator.h @@ -28,12 +28,16 @@ class MockGenerator final : public DataGenerator { const std::string& region_context) override; /** - * @brief Generates deterministic user data for a locale. + * @brief Generates deterministic user data grounded in a sampled name and + * persona. * - * @param locale Locale hint. + * @param city Enriched city the user is associated with. + * @param persona Persona archetype. + * @param name Sampled first/last name, copied directly into the result. * @return Generated user result. */ - UserResult GenerateUser(const std::string& locale) override; + UserResult GenerateUser(const EnrichedCity& city, const UserPersona& persona, + const Name& name) override; private: /** @@ -44,12 +48,25 @@ class MockGenerator final : public DataGenerator { */ static size_t DeterministicHash(const Location& location); + /** + * @brief Combines city, persona, and name into a stable hash value. + * + * @param location City and country names. + * @param persona Persona archetype. + * @param name Sampled first/last name. + * @return Deterministic hash value. + */ + static size_t DeterministicHash(const Location& location, + const UserPersona& persona, const Name& name); + // Hash stride constants for deterministic distribution across fixed-size // arrays. These coprime strides spread hash values uniformly without // clustering, ensuring diverse output across different hash inputs. static constexpr size_t kNounHashStride = 7; static constexpr size_t kDescriptionHashStride = 13; static constexpr size_t kBioHashStride = 11; + static constexpr size_t kActivityWeightHashStride = 17; + static constexpr size_t kActivityWeightHashRange = 1000; static constexpr std::array kBreweryAdjectives = { "Craft", "Heritage", "Local", "Artisan", "Pioneer", "Golden", @@ -124,7 +141,8 @@ class MockGenerator final : public DataGenerator { "Visits breweries for the stories, stays for the flagship pours.", "Craft beer fan mapping tasting notes and favorite brew routes.", "Always ready to trade recommendations for underrated local breweries.", - "Keeping a running list of must-try collab releases and tap takeovers."}; + "Keeping a running list of must-try collab releases and tap " + "takeovers."}; }; #endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_GENERATION_MOCK_GENERATOR_H_ diff --git a/tooling/pipeline/includes/data_model/generated_models.h b/tooling/pipeline/includes/data_model/generated_models.h index 40ec100..84a5fcf 100644 --- a/tooling/pipeline/includes/data_model/generated_models.h +++ b/tooling/pipeline/includes/data_model/generated_models.h @@ -3,8 +3,8 @@ /** * @file data_model/generated_models.h - * @brief Generated output models from the pipeline: brewery/user results, enriched data, - * and complete generation results. + * @brief Generated output models from the pipeline: brewery/user results, + * enriched data, and complete generation results. */ #include @@ -19,16 +19,24 @@ * @brief Generated brewery payload. */ struct BreweryResult { - /// @brief Brewery display name in English. + /** + * @brief Brewery display name in English. + */ std::string name_en; - /// @brief Brewery description text in English. + /** + * @brief Brewery description text in English. + */ std::string description_en; - /// @brief Brewery display name in the local language. + /** + * @brief Brewery display name in the local language. + */ std::string name_local; - /// @brief Brewery description text in the local language. + /** + * @brief Brewery description text in the local language. + */ std::string description_local; }; @@ -36,11 +44,39 @@ struct BreweryResult { * @brief Generated user profile payload. */ struct UserResult { - /// @brief Username handle. + /** + * @brief First (given) name, copied from the sampled Name -- not + * LLM-invented. + */ + std::string first_name{}; + + /** + * @brief Last (family) name, copied from the sampled Name -- not + * LLM-invented. + */ + std::string last_name{}; + + /** + * @brief Gender associated with the sampled first name, copied from the + * sampled Name -- not LLM-invented. + */ + std::string gender{}; + + /** + * @brief Username handle. + */ std::string username{}; - /// @brief Short user biography. + /** + * @brief Short user biography. + */ std::string bio{}; + + /** + * @brief Relative check-in/activity weight for this user, used to drive + * a J-curve activity profile in later pipeline phases. + */ + float activity_weight{}; }; // ============================================================================ @@ -58,9 +94,23 @@ struct EnrichedCity { /** * @brief Helper struct to store generated brewery data. */ -struct GeneratedBrewery { +struct BreweryRecord { Location location; BreweryResult brewery; }; +/** + * @brief Helper struct to store generated user data. + * + * `email` and `date_of_birth` are programmatically generated by the + * orchestrator (never LLM-authored) so a downstream auth-account seeding + * consumer can register real accounts from the pipeline's SQLite export. + */ +struct UserRecord { + Location location; + UserResult user; + std::string email{}; + std::string date_of_birth{}; +}; + #endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_GENERATED_MODELS_H_ diff --git a/tooling/pipeline/includes/data_model/models.h b/tooling/pipeline/includes/data_model/models.h index 40c0d62..8ed7355 100644 --- a/tooling/pipeline/includes/data_model/models.h +++ b/tooling/pipeline/includes/data_model/models.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -28,40 +29,106 @@ namespace prog_opts = boost::program_options; * @brief Canonical location record for city-level generation. */ struct Location { - /// @brief City name. std::string city{}; - - /// @brief State or province name. std::string state_province{}; - /// @brief ISO 3166-2 subdivision code. + /** + * @brief ISO 3166-2 subdivision code. + */ std::string iso3166_2{}; - /// @brief Country name. std::string country{}; - /// @brief ISO 3166-1 country code. + /** + * @brief ISO 3166-1 country code. + */ std::string iso3166_1{}; - /// @brief Local language codes in priority order. + /** + * @brief Local language codes in priority order. + */ std::vector local_languages{}; - /// @brief Latitude in decimal degrees. + /** + * @brief Latitude in decimal degrees. + */ double latitude{}; - /// @brief Longitude in decimal degrees. + /** + * @brief Longitude in decimal degrees. + */ double longitude{}; }; -/** - * @brief Non-owning brewery location input. - */ -struct BreweryLocation { - /// @brief City name. - std::string_view city_name; +// ============================================================================ +// Name / Persona Models +// ============================================================================ - /// @brief Country name. - std::string_view country_name; +/** + * @brief A sampled first/last name pair, with the source forename's gender. + * + * Produced by the SampleName() helper in generate_users.cc. + */ +struct Name { + std::string first_name{}; + std::string last_name{}; + + /** + * @brief Gender associated with the sampled forename (e.g. "M", "F"), as + * reported by the source dataset. + */ + std::string gender{}; +}; + +/** + * @brief A single forename entry from the names-by-country fixture data. + */ +struct ForenameEntry { + /** + * @brief Romanized forename. + */ + std::string name{}; + + /** + * @brief Gender associated with this forename, as reported by the source + * dataset (e.g. "M", "F"). + */ + std::string gender{}; + + bool operator==(const ForenameEntry& other) const { + return name == other.name && gender == other.gender; + } +}; + +namespace std { +template <> +struct hash { + size_t operator()(const ForenameEntry& entry) const noexcept { + const size_t name_hash = std::hash{}(entry.name); + const size_t gender_hash = std::hash{}(entry.gender); + return name_hash ^ (gender_hash << 1); + } +}; +} // namespace std + +/** + * @brief A persona archetype used to ground LLM-generated user bios. + */ +struct UserPersona { + /** + * @brief Persona display name (e.g. "Hophead Explorer"). + */ + std::string name{}; + + /** + * @brief Short description of the persona's interests and voice. + */ + std::string description{}; + + /** + * @brief Beer styles this persona gravitates toward. + */ + std::vector style_affinities{}; }; // ============================================================================ @@ -72,22 +139,34 @@ struct BreweryLocation { * @brief LLM sampling parameters. */ struct SamplingOptions { - /// @brief LLM sampling temperature (0.0 to 1.0, higher = more random). + /** + * @brief LLM sampling temperature (higher = more random). + */ float temperature = 1.0F; - /// @brief LLM nucleus sampling top-p parameter. + /** + * @brief LLM nucleus sampling top-p parameter. + */ float top_p = 0.95F; - /// @brief LLM top-k sampling parameter. + /** + * @brief LLM top-k sampling parameter. + */ uint32_t top_k = 64; - /// @brief Context window size (tokens). + /** + * @brief Context window size (tokens). + */ uint32_t n_ctx = 8192; - /// @brief Random seed (-1 for random, otherwise non-negative). + /** + * @brief Random seed (-1 for random, otherwise non-negative). + */ int seed = -1; - /// @brief Number of layers to offload to GPU. + /** + * @brief Number of layers to offload to GPU. + */ int n_gpu_layers = 0; }; @@ -95,16 +174,20 @@ struct SamplingOptions { * @brief Configuration for the LLM generator component. */ struct GeneratorOptions { - /// @brief Path to the LLM model file (gguf format). + /** + * @brief Path to the LLM model file (gguf format). + */ std::filesystem::path model_path; - /// @brief Use mocked generator instead of actual LLM inference. + /** + * @brief Use mocked generator instead of actual LLM inference. + */ bool use_mocked = false; - - - /// @brief Specific sampling parameters for this generator. - /// If nullopt, the application should use global defaults. + /** + * @brief Specific sampling parameters for this generator. + * If nullopt, the application should use global defaults. + */ std::optional sampling; }; @@ -112,18 +195,23 @@ struct GeneratorOptions { * @brief Configuration for the pipeline execution and output. */ struct PipelineOptions { - /// @brief Directory for generated artifacts. + /** + * @brief Directory for generated artifacts. + */ std::filesystem::path output_path; - /// @brief Directory that contains named prompt files (e.g. - /// BREWERY_GENERATION.md). + /** + * @brief Directory that contains named prompt files (e.g. + * BREWERY_GENERATION.md). + */ std::filesystem::path prompt_dir; - /// @brief Path for application logs. std::filesystem::path log_path; - /// @brief Number of locations to sample from the dataset - /// More locations -> more users/more breweries + /** + * @brief Number of locations to sample from the dataset + * More locations -> more users/more breweries + */ uint32_t location_count; }; @@ -139,7 +227,7 @@ struct ApplicationOptions { // Function Declarations // ============================================================================ -std::optional ParseArguments(const int argc, char** argv, - std::shared_ptr logger = nullptr); +std::optional ParseArguments( + const int argc, char** argv, std::shared_ptr logger = nullptr); #endif // BIERGARTEN_PIPELINE_INCLUDES_DATA_MODEL_MODELS_H_ diff --git a/tooling/pipeline/includes/json_handling/json_loader.h b/tooling/pipeline/includes/json_handling/json_loader.h deleted file mode 100644 index 3fc9bba..0000000 --- a/tooling/pipeline/includes/json_handling/json_loader.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef BIERGARTEN_PIPELINE_INCLUDES_JSON_HANDLING_JSON_LOADER_H_ -#define BIERGARTEN_PIPELINE_INCLUDES_JSON_HANDLING_JSON_LOADER_H_ - -/** - * @file json_handling/json_loader.h - * @brief Loader API for curated location data. - */ - -#include -#include -#include - -#include "data_model/models.h" -#include "services/logging/logger.h" - -/// @brief Loads curated world locations from a JSON file into memory. -class JsonLoader { - public: - /// @brief Parses a JSON array file and returns all location records. - static std::vector LoadLocations( - const std::filesystem::path& filepath, - std::shared_ptr logger = nullptr); -}; - -#endif // BIERGARTEN_PIPELINE_INCLUDES_JSON_HANDLING_JSON_LOADER_H_ diff --git a/tooling/pipeline/includes/json_handling/pretty_print.h b/tooling/pipeline/includes/json_handling/pretty_print.h index 51e7486..3d148c3 100644 --- a/tooling/pipeline/includes/json_handling/pretty_print.h +++ b/tooling/pipeline/includes/json_handling/pretty_print.h @@ -106,4 +106,4 @@ inline void PrettyPrint(std::ostream& outstream, } } -#endif +#endif // BIERGARTEN_PIPELINE_INCLUDES_JSON_HANDLING_PRETTY_PRINT_H_ diff --git a/tooling/pipeline/includes/llama_backend_state.h b/tooling/pipeline/includes/llama_backend_state.h index 09e9027..d50fa80 100644 --- a/tooling/pipeline/includes/llama_backend_state.h +++ b/tooling/pipeline/includes/llama_backend_state.h @@ -16,16 +16,10 @@ */ class LlamaBackendState { public: - /// @brief Initializes global llama backend state. LlamaBackendState() { llama_backend_init(); } - - /// @brief Cleans up global llama backend state. ~LlamaBackendState() { llama_backend_free(); } - /// @brief Non-copyable type. LlamaBackendState(const LlamaBackendState&) = delete; - - /// @brief Non-copyable type. LlamaBackendState& operator=(const LlamaBackendState&) = delete; }; diff --git a/tooling/pipeline/includes/services/curated_data/curated_data_service.h b/tooling/pipeline/includes/services/curated_data/curated_data_service.h new file mode 100644 index 0000000..d6505ce --- /dev/null +++ b/tooling/pipeline/includes/services/curated_data/curated_data_service.h @@ -0,0 +1,50 @@ +#ifndef BIERGARTEN_PIPELINE_INCLUDES_SERVICES_CURATED_DATA_CURATED_DATA_SERVICE_H_ +#define BIERGARTEN_PIPELINE_INCLUDES_SERVICES_CURATED_DATA_CURATED_DATA_SERVICE_H_ + +/** + * @file services/curated_data/curated_data_service.h + * @brief Abstraction for loading curated location, persona, and name data. + */ + +#include +#include +#include +#include + +#include "data_model/models.h" + +using ForenameList = std::vector; +using SurnameList = std::vector; +using LocationsList = std::vector; +using PersonasList = std::vector; +using ForenamesByCountryMap = std::unordered_map; +using SurnamesByCountryMap = std::unordered_map; + +/** + * @brief Interface for services that load curated data used to seed + * brewery/user generation. + */ +class ICuratedDataService { + public: + ICuratedDataService() = default; + virtual ~ICuratedDataService() = default; + + ICuratedDataService(const ICuratedDataService&) = delete; + ICuratedDataService& operator=(const ICuratedDataService&) = delete; + ICuratedDataService(ICuratedDataService&&) = delete; + ICuratedDataService& operator=(ICuratedDataService&&) = delete; + + /** + * @brief Loads all curated location records. + */ + virtual const LocationsList& LoadLocations() = 0; + + /** + * @brief Loads all curated persona records. + */ + virtual const PersonasList& LoadPersonas() = 0; + virtual const ForenamesByCountryMap& LoadForenamesByCountry() = 0; + virtual const SurnamesByCountryMap& LoadSurnamesByCountry() = 0; +}; + +#endif // BIERGARTEN_PIPELINE_INCLUDES_SERVICES_CURATED_DATA_CURATED_DATA_SERVICE_H_ diff --git a/tooling/pipeline/includes/services/curated_data/curated_json_data_service.h b/tooling/pipeline/includes/services/curated_data/curated_json_data_service.h new file mode 100644 index 0000000..687b881 --- /dev/null +++ b/tooling/pipeline/includes/services/curated_data/curated_json_data_service.h @@ -0,0 +1,63 @@ +#ifndef BIERGARTEN_PIPELINE_INCLUDES_JSON_HANDLING_JSON_LOADER_H_ +#define BIERGARTEN_PIPELINE_INCLUDES_JSON_HANDLING_JSON_LOADER_H_ + +/** + * @file json_handling/json_loader.h + * @brief JSON-backed implementation of ICuratedDataService. + */ + +#include + +#include "data_model/models.h" +#include "services/curated_data/curated_data_service.h" + +/** + * @brief File locations for the curated JSON fixtures consumed by + * CuratedJsonDataService. + */ +struct CuratedDataFilePaths { + std::filesystem::path locations_path; + std::filesystem::path personas_path; + std::filesystem::path forenames_path; + std::filesystem::path surnames_path; +}; + +/** + * @brief Loads curated location, persona, and name data from JSON files. + */ +class CuratedJsonDataService final : public ICuratedDataService { + struct cache { + LocationsList locations; + PersonasList personas; + ForenamesByCountryMap forenames_by_country; + SurnamesByCountryMap surnames_by_country; + + cache() = default; + ~cache() = default; + }; + + CuratedDataFilePaths filepaths_; + cache cache_; + + public: + explicit CuratedJsonDataService(CuratedDataFilePaths filepaths); + + /** + * @brief Parses a JSON array file and returns all location records. + */ + const LocationsList& LoadLocations() override; + + /** + * @brief Parses a JSON array file and returns all persona records. + */ + const PersonasList& LoadPersonas() override; + + const ForenamesByCountryMap& LoadForenamesByCountry() override; + + /** + * @brief Parses a JSON file and returns all the forenames per country. + */ + const SurnamesByCountryMap& LoadSurnamesByCountry() override; +}; + +#endif // BIERGARTEN_PIPELINE_INCLUDES_JSON_HANDLING_JSON_LOADER_H_ diff --git a/tooling/pipeline/includes/services/curated_data/mock_curated_data_service.h b/tooling/pipeline/includes/services/curated_data/mock_curated_data_service.h new file mode 100644 index 0000000..53aa5ef --- /dev/null +++ b/tooling/pipeline/includes/services/curated_data/mock_curated_data_service.h @@ -0,0 +1,38 @@ +#ifndef BIERGARTEN_PIPELINE_INCLUDES_SERVICES_CURATED_DATA_MOCK_CURATED_DATA_SERVICE_H_ +#define BIERGARTEN_PIPELINE_INCLUDES_SERVICES_CURATED_DATA_MOCK_CURATED_DATA_SERVICE_H_ + +/** + * @file services/curated_data/mock_curated_data_service.h + * @brief In-memory ICuratedDataService backed by a small fixed dataset, used + * when file-backed curated data is disabled (mock mode). + */ + +#include + +#include "data_model/models.h" +#include "services/curated_data/curated_data_service.h" + +/** + * @brief Curated data service returning a small fixed in-memory dataset in + * place of the JSON fixture files used by JsonLoader. + */ +class MockCuratedDataService final : public ICuratedDataService { + public: + MockCuratedDataService(); + + const LocationsList& LoadLocations() override; + + const PersonasList& LoadPersonas() override; + + const ForenamesByCountryMap& LoadForenamesByCountry() override; + + const SurnamesByCountryMap& LoadSurnamesByCountry() override; + + private: + LocationsList locations_; + PersonasList personas_; + ForenamesByCountryMap forenames_by_country_; + SurnamesByCountryMap surnames_by_country_; +}; + +#endif // BIERGARTEN_PIPELINE_INCLUDES_SERVICES_CURATED_DATA_MOCK_CURATED_DATA_SERVICE_H_ diff --git a/tooling/pipeline/includes/services/database/export_service.h b/tooling/pipeline/includes/services/database/export_service.h index eb61fed..9f4d85c 100644 --- a/tooling/pipeline/includes/services/database/export_service.h +++ b/tooling/pipeline/includes/services/database/export_service.h @@ -16,8 +16,6 @@ class IExportService { public: IExportService() = default; - - /// @brief Virtual destructor for polymorphic cleanup. virtual ~IExportService() = default; IExportService(const IExportService&) = delete; @@ -25,7 +23,9 @@ class IExportService { IExportService(IExportService&&) = delete; IExportService& operator=(IExportService&&) = delete; - /// @brief Prepares the export destination for a new run. + /** + * @brief Prepares the export destination for a new run. + */ virtual void Initialize() = 0; /** @@ -33,9 +33,18 @@ class IExportService { * * @param brewery Generated brewery payload to store. */ - virtual uint64_t ProcessRecord(const GeneratedBrewery& brewery) = 0; + virtual uint64_t ProcessRecord(const BreweryRecord& brewery) = 0; - /// @brief Finalizes the export destination. + /** + * @brief Persists one generated user record. + * + * @param user Generated user payload to store. + */ + virtual uint64_t ProcessRecord(const UserRecord& user) = 0; + + /** + * @brief Finalizes the export destination. + */ virtual void Finalize() = 0; }; diff --git a/tooling/pipeline/includes/services/database/sqlite_connection_helpers.h b/tooling/pipeline/includes/services/database/sqlite_connection_helpers.h index 1bb4832..195361b 100644 --- a/tooling/pipeline/includes/services/database/sqlite_connection_helpers.h +++ b/tooling/pipeline/includes/services/database/sqlite_connection_helpers.h @@ -12,7 +12,7 @@ #include #include -#include "sqlite_handle_types.h" +#include "services/database/sqlite_handle_types.h" namespace sqlite_export_service_internal { diff --git a/tooling/pipeline/includes/services/database/sqlite_export_service.h b/tooling/pipeline/includes/services/database/sqlite_export_service.h index 02cf6f6..e5c4936 100644 --- a/tooling/pipeline/includes/services/database/sqlite_export_service.h +++ b/tooling/pipeline/includes/services/database/sqlite_export_service.h @@ -12,9 +12,9 @@ #include #include "data_model/models.h" -#include "../datetime/date_time_provider.h" -#include "export_service.h" -#include "sqlite_export_service_helpers.h" +#include "services/database/export_service.h" +#include "services/database/sqlite_export_service_helpers.h" +#include "services/datetime/date_time_provider.h" /** * @brief Persists generated brewery records into a fresh SQLite database. @@ -30,7 +30,8 @@ class SqliteExportService final : public IExportService { SqliteExportService& operator=(SqliteExportService&&) = delete; void Initialize() override; - uint64_t ProcessRecord(const GeneratedBrewery& brewery) override; + uint64_t ProcessRecord(const BreweryRecord& brewery) override; + uint64_t ProcessRecord(const UserRecord& user) override; void Finalize() override; private: @@ -46,6 +47,15 @@ class SqliteExportService final : public IExportService { [[nodiscard]] std::filesystem::path BuildDatabasePath() const; [[nodiscard]] static std::string BuildLocationKey(const Location& location); + /** + * @brief Returns the row id for @p location, inserting it first if it has + * not already been seen during this run. + * + * Shared by both ProcessRecord() overloads so breweries and users + * referencing the same location resolve to the same row. + */ + [[nodiscard]] sqlite3_int64 ResolveLocationId(const Location& location); + std::unique_ptr date_time_provider_; std::filesystem::path output_path_; std::string run_timestamp_utc_; @@ -53,6 +63,7 @@ class SqliteExportService final : public IExportService { SqliteDatabaseHandle db_handle_; SqliteStatementHandle insert_location_stmt_; SqliteStatementHandle insert_brewery_stmt_; + SqliteStatementHandle insert_user_stmt_; bool transaction_open_ = false; std::unordered_map location_cache_; }; diff --git a/tooling/pipeline/includes/services/database/sqlite_export_service_helpers.h b/tooling/pipeline/includes/services/database/sqlite_export_service_helpers.h index 838d40e..3df35c0 100644 --- a/tooling/pipeline/includes/services/database/sqlite_export_service_helpers.h +++ b/tooling/pipeline/includes/services/database/sqlite_export_service_helpers.h @@ -3,8 +3,8 @@ /* Umbrella header for backward compatibility. */ -#include "sqlite_connection_helpers.h" -#include "sqlite_handle_types.h" -#include "sqlite_statement_helpers.h" +#include "services/database/sqlite_connection_helpers.h" +#include "services/database/sqlite_handle_types.h" +#include "services/database/sqlite_statement_helpers.h" #endif // BIERGARTEN_PIPELINE_INCLUDES_SERVICES_DATABASE_SQLITE_EXPORT_SERVICE_HELPERS_H_ diff --git a/tooling/pipeline/includes/services/database/sqlite_handle_types.h b/tooling/pipeline/includes/services/database/sqlite_handle_types.h index dcc533b..a70377d 100644 --- a/tooling/pipeline/includes/services/database/sqlite_handle_types.h +++ b/tooling/pipeline/includes/services/database/sqlite_handle_types.h @@ -24,8 +24,10 @@ using SqliteDatabaseHandle = std::unique_ptr; using SqliteStatementHandle = std::unique_ptr; +// Represents a parameter that is bound to a prepared SQLite statement. +// N.B. indices are 1 based. template -struct BindParam { +struct BoundParam { int index; T value; std::string_view action; diff --git a/tooling/pipeline/includes/services/database/sqlite_statement_helpers.h b/tooling/pipeline/includes/services/database/sqlite_statement_helpers.h index 2f0d174..b2143c4 100644 --- a/tooling/pipeline/includes/services/database/sqlite_statement_helpers.h +++ b/tooling/pipeline/includes/services/database/sqlite_statement_helpers.h @@ -13,7 +13,7 @@ #include #include -#include "sqlite_handle_types.h" +#include "services/database/sqlite_handle_types.h" namespace sqlite_export_service_internal { @@ -50,6 +50,26 @@ CREATE INDEX IF NOT EXISTS idx_breweries_location_id ON breweries(location_id); )sql"; +inline constexpr std::string_view kCreateUsersTableSql = R"sql( + +CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + location_id INTEGER NOT NULL, + first_name TEXT NOT NULL, + last_name TEXT NOT NULL, + gender TEXT NOT NULL, + username TEXT NOT NULL, + bio TEXT NOT NULL, + activity_weight REAL NOT NULL, + email TEXT NOT NULL UNIQUE, + date_of_birth TEXT NOT NULL, + FOREIGN KEY(location_id) REFERENCES locations(id) ON DELETE CASCADE +); + +CREATE INDEX IF NOT EXISTS idx_users_location_id ON users(location_id); + +)sql"; + inline constexpr std::string_view kInsertLocationSql = R"sql( INSERT INTO locations ( city, @@ -73,20 +93,52 @@ INSERT INTO breweries ( ) VALUES (?, ?, ?, ?, ?); )sql"; -inline constexpr int kLocationCityBindIndex = 1; -inline constexpr int kLocationStateProvinceBindIndex = 2; -inline constexpr int kLocationIso31662BindIndex = 3; -inline constexpr int kLocationCountryBindIndex = 4; -inline constexpr int kLocationIso31661BindIndex = 5; -inline constexpr int kLocationLanguagesBindIndex = 6; -inline constexpr int kLocationLatitudeBindIndex = 7; -inline constexpr int kLocationLongitudeBindIndex = 8; +inline constexpr std::string_view kInsertUserSql = R"sql( +INSERT INTO users ( + location_id, + first_name, + last_name, + gender, + username, + bio, + activity_weight, + email, + date_of_birth +) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?); +)sql"; -inline constexpr int kBreweryLocationIdBindIndex = 1; -inline constexpr int kBreweryEnglishNameBindIndex = 2; -inline constexpr int kBreweryEnglishDescriptionBindIndex = 3; -inline constexpr int kBreweryLocalNameBindIndex = 4; -inline constexpr int kBreweryLocalDescriptionBindIndex = 5; +// sqlite3_bind_*() parameter indices are 1-based, matching the "?" +// placeholder order in the SQL above. +enum LocationBindIndex { + kLocationCityBindIndex = 1, + kLocationStateProvinceBindIndex, + kLocationIso31662BindIndex, + kLocationCountryBindIndex, + kLocationIso31661BindIndex, + kLocationLanguagesBindIndex, + kLocationLatitudeBindIndex, + kLocationLongitudeBindIndex, +}; + +enum BreweryBindIndex { + kBreweryLocationIdBindIndex = 1, + kBreweryEnglishNameBindIndex, + kBreweryEnglishDescriptionBindIndex, + kBreweryLocalNameBindIndex, + kBreweryLocalDescriptionBindIndex, +}; + +enum UserBindIndex { + kUserLocationIdBindIndex = 1, + kUserFirstNameBindIndex, + kUserLastNameBindIndex, + kUserGenderBindIndex, + kUserUsernameBindIndex, + kUserBioBindIndex, + kUserActivityWeightBindIndex, + kUserEmailBindIndex, + kUserDateOfBirthBindIndex, +}; SqliteStatementHandle PrepareStatement(const SqliteDatabaseHandle& db_handle, std::string_view sql, @@ -95,13 +147,13 @@ SqliteStatementHandle PrepareStatement(const SqliteDatabaseHandle& db_handle, void ResetStatement(SqliteStatementHandle& statement); void Bind(const SqliteStatementHandle& statement, - const BindParam& param); + const BoundParam& param); void Bind(const SqliteStatementHandle& statement, - const BindParam& param); + const BoundParam& param); void Bind(const SqliteStatementHandle& statement, - const BindParam& param); + const BoundParam& param); void StepStatement(const SqliteDatabaseHandle& db_handle, const SqliteStatementHandle& statement, diff --git a/tooling/pipeline/includes/services/datetime/date_time_provider.h b/tooling/pipeline/includes/services/datetime/date_time_provider.h index 1c00dd1..a5f8ce5 100644 --- a/tooling/pipeline/includes/services/datetime/date_time_provider.h +++ b/tooling/pipeline/includes/services/datetime/date_time_provider.h @@ -18,7 +18,6 @@ */ class IDateTimeProvider { public: - /// @brief Virtual destructor for polymorphic cleanup. virtual ~IDateTimeProvider() = default; IDateTimeProvider() = default; diff --git a/tooling/pipeline/includes/services/enrichment/enrichment_service.h b/tooling/pipeline/includes/services/enrichment/enrichment_service.h index 32d02d6..9c79137 100644 --- a/tooling/pipeline/includes/services/enrichment/enrichment_service.h +++ b/tooling/pipeline/includes/services/enrichment/enrichment_service.h @@ -15,7 +15,6 @@ */ class IEnrichmentService { public: - /// @brief Virtual destructor for polymorphic cleanup. virtual ~IEnrichmentService() = default; /** diff --git a/tooling/pipeline/includes/services/enrichment/mock_enrichment.h b/tooling/pipeline/includes/services/enrichment/mock_enrichment.h index 0eae2ba..9a45b3f 100644 --- a/tooling/pipeline/includes/services/enrichment/mock_enrichment.h +++ b/tooling/pipeline/includes/services/enrichment/mock_enrichment.h @@ -1,13 +1,18 @@ -// -// Created by aaronpo on 13/05/2026. -// - #ifndef BIERGARTEN_PIPELINE_INCLUDES_SERVICES_ENRICHMENT_MOCK_ENRICHMENT_H_ #define BIERGARTEN_PIPELINE_INCLUDES_SERVICES_ENRICHMENT_MOCK_ENRICHMENT_H_ + +/** + * @file services/enrichment/mock_enrichment.h + * @brief No-op IEnrichmentService used when network enrichment is disabled. + */ + #include -#include "enrichment_service.h" +#include "services/enrichment/enrichment_service.h" +/** + * @brief Enrichment service that returns no context for any location. + */ class MockEnrichmentService final : public IEnrichmentService { public: std::string GetLocationContext(const Location& /*loc*/) override { diff --git a/tooling/pipeline/includes/services/enrichment/wikipedia_service.h b/tooling/pipeline/includes/services/enrichment/wikipedia_service.h index 82a97aa..1063aea 100644 --- a/tooling/pipeline/includes/services/enrichment/wikipedia_service.h +++ b/tooling/pipeline/includes/services/enrichment/wikipedia_service.h @@ -11,25 +11,37 @@ #include #include -#include "enrichment_service.h" +#include "services/enrichment/enrichment_service.h" #include "services/logging/logger.h" #include "web_client/web_client.h" -/// @brief Provides Wikipedia summary lookups backed by cached raw extracts. +/** + * @brief Provides Wikipedia summary lookups backed by cached raw extracts. + */ class WikipediaEnrichmentService final : public IEnrichmentService { public: - /// @brief Creates a new Wikipedia service with the provided web client. + /** + * @brief Creates a new Wikipedia service with the provided web client. + */ explicit WikipediaEnrichmentService(std::unique_ptr client, std::shared_ptr logger); - /// @brief Returns the Wikipedia-derived context for a location. + /** + * @brief Returns the Wikipedia-derived context for a location. + */ [[nodiscard]] std::string GetLocationContext(const Location& loc) override; private: std::string FetchExtract(std::string_view query); std::unique_ptr client_; std::shared_ptr logger_; - /// @brief Canonical cache for raw Wikipedia query extracts. + /** + * @brief Cache for raw Wikipedia query extracts, keyed by query string. + * + * GetLocationContext() always queries "brewing" and reuses "beer in + * {country}" for every city in that country, so caching avoids refetching + * the same extract across locations in a run. + */ std::unordered_map extract_cache_; }; diff --git a/tooling/pipeline/includes/services/logging/log_entry.h b/tooling/pipeline/includes/services/logging/log_entry.h index 1227430..b6d6fba 100644 --- a/tooling/pipeline/includes/services/logging/log_entry.h +++ b/tooling/pipeline/includes/services/logging/log_entry.h @@ -20,10 +20,22 @@ * @brief Severity levels supported by the logging infra. */ enum class LogLevel { - Debug, ///< Development/debugging information. - Info, ///< General informational messages. - Warn, ///< Warning conditions. - Error, ///< Error conditions. + /** + * @brief Development/debugging information. + */ + Debug, + /** + * @brief General informational messages. + */ + Info, + /** + * @brief Warning conditions. + */ + Warn, + /** + * @brief Error conditions. + */ + Error, }; /** @@ -34,18 +46,44 @@ enum class LogLevel { * pipeline that emitted it. */ enum class PipelinePhase { - Startup, ///< Initialization and validation. - UserGeneration, ///< User profile generation. - BreweryAndBeerGeneration, ///< Brewery and beer data generation. - CheckinGeneration, ///< Checkin (visit) record generation. - RatingGeneration, ///< Rating and review generation. - FollowGeneration, ///< Follow relationship generation. - Teardown, ///< Finalization and cleanup. + /** + * @brief Initialization and validation. + */ + Startup, + /** + * @brief Location/context enrichment (e.g. Wikipedia lookups). + */ + Enrichment, + /** + * @brief User profile generation. + */ + UserGeneration, + /** + * @brief Brewery and beer data generation. + */ + BreweryAndBeerGeneration, + /** + * @brief Checkin (visit) record generation. + */ + CheckinGeneration, + /** + * @brief Rating and review generation. + */ + RatingGeneration, + /** + * @brief Follow relationship generation. + */ + FollowGeneration, + /** + * @brief Finalization and cleanup. + */ + Teardown, }; /** * @struct LogDTO - * @brief User-provided subset of log fields. Used to capture call-site info transparently. + * @brief User-provided subset of log fields. Used to capture call-site info + * transparently. */ struct LogDTO { LogLevel level; @@ -64,25 +102,35 @@ struct LogDTO { * before the entry is dispatched. */ struct LogEntry { - /// @brief Timestamp when the entry was created. + /** + * @brief Timestamp when the entry was created. + */ std::chrono::system_clock::time_point timestamp{}; - /// @brief Source location where the log call was made. + /** + * @brief Source location where the log call was made. + */ std::source_location origin{}; - /// @brief Thread responsible for emitting the log. + /** + * @brief Thread responsible for emitting the log. + */ std::thread::id thread_id{}; - - /// @brief Severity level of this entry. + /** + * @brief Severity level of this entry. + */ LogLevel level; - /// @brief Pipeline phase associated with the entry. + /** + * @brief Pipeline phase associated with the entry. + */ PipelinePhase phase; - /// @brief Log message text. + /** + * @brief Log message text. + */ std::string message; - }; #endif // BIERGARTEN_PIPELINE_INCLUDES_SERVICES_LOGGING_LOG_ENTRY_H_ diff --git a/tooling/pipeline/includes/services/logging/log_producer.h b/tooling/pipeline/includes/services/logging/log_producer.h index d032f89..253c016 100644 --- a/tooling/pipeline/includes/services/logging/log_producer.h +++ b/tooling/pipeline/includes/services/logging/log_producer.h @@ -6,8 +6,8 @@ * a bounded channel for later processing by the dispatcher. */ -#ifndef BIERGARTEN_PIPELINE_INCLUDES_SERVICES_LOGGING_CHANNEL_LOGGER_H_ -#define BIERGARTEN_PIPELINE_INCLUDES_SERVICES_LOGGING_CHANNEL_LOGGER_H_ +#ifndef BIERGARTEN_PIPELINE_INCLUDES_SERVICES_LOGGING_LOG_PRODUCER_H_ +#define BIERGARTEN_PIPELINE_INCLUDES_SERVICES_LOGGING_LOG_PRODUCER_H_ #include @@ -50,4 +50,4 @@ class LogProducer final : public ILogger { BoundedChannel& channel_; }; -#endif // BIERGARTEN_PIPELINE_INCLUDES_SERVICES_LOGGING_CHANNEL_LOGGER_H_ +#endif // BIERGARTEN_PIPELINE_INCLUDES_SERVICES_LOGGING_LOG_PRODUCER_H_ diff --git a/tooling/pipeline/includes/services/logging/logger.h b/tooling/pipeline/includes/services/logging/logger.h index 5171744..31505d9 100644 --- a/tooling/pipeline/includes/services/logging/logger.h +++ b/tooling/pipeline/includes/services/logging/logger.h @@ -39,7 +39,8 @@ class ILogger { */ void Log(LogDTO payload, std::source_location origin = std::source_location::current(), - std::chrono::system_clock::time_point timestamp = std::chrono::system_clock::now(), + std::chrono::system_clock::time_point timestamp = + std::chrono::system_clock::now(), std::thread::id thread_id = std::this_thread::get_id()) { LogEntry entry; entry.timestamp = timestamp; diff --git a/tooling/pipeline/includes/web_client/http_web_client.h b/tooling/pipeline/includes/web_client/http_web_client.h index 803169a..48306e5 100644 --- a/tooling/pipeline/includes/web_client/http_web_client.h +++ b/tooling/pipeline/includes/web_client/http_web_client.h @@ -1,19 +1,18 @@ /** -* @file web_client/http_web_client.h -* @brief cpp-httplib implementation of the WebClient interface. -*/ + * @file web_client/http_web_client.h + * @brief cpp-httplib implementation of the WebClient interface. + */ #ifndef BIERGARTEN_PIPELINE_INCLUDES_WEB_CLIENT_HTTP_WEB_CLIENT_H_ #define BIERGARTEN_PIPELINE_INCLUDES_WEB_CLIENT_HTTP_WEB_CLIENT_H_ - -#include "web_client/web_client.h" -#include "services/logging/logger.h" - #include #include #include +#include "services/logging/logger.h" +#include "web_client/web_client.h" + /** * @brief WebClient implementation backed by cpp-httplib. * @@ -26,7 +25,7 @@ * bound to a single origin at construction time. */ class HttpWebClient final : public WebClient { -public: + public: explicit HttpWebClient(std::shared_ptr logger) : logger_(std::move(logger)) {} ~HttpWebClient() override = default; @@ -34,7 +33,8 @@ public: /** * @brief Executes a blocking HTTP/HTTPS GET request against a full URL. * - * @param url Fully-qualified URL, e.g. "https://en.wikipedia.org/api/rest_v1/page/summary/Berlin" + * @param url Fully-qualified URL, e.g. + * "https://en.wikipedia.org/api/rest_v1/page/summary/Berlin" * @return Response body on HTTP 2xx; throws std::runtime_error otherwise. */ std::string Get(const std::string& url) override; @@ -52,5 +52,4 @@ public: std::shared_ptr logger_; }; - -#endif +#endif // BIERGARTEN_PIPELINE_INCLUDES_WEB_CLIENT_HTTP_WEB_CLIENT_H_ diff --git a/tooling/pipeline/includes/web_client/web_client.h b/tooling/pipeline/includes/web_client/web_client.h index 641eb12..a280b42 100644 --- a/tooling/pipeline/includes/web_client/web_client.h +++ b/tooling/pipeline/includes/web_client/web_client.h @@ -13,7 +13,6 @@ */ class WebClient { public: - /// @brief Virtual destructor for polymorphic cleanup. virtual ~WebClient() = default; /** diff --git a/tooling/pipeline/personas.json b/tooling/pipeline/personas.json new file mode 100644 index 0000000..92215f0 --- /dev/null +++ b/tooling/pipeline/personas.json @@ -0,0 +1,42 @@ +[ + { + "name": "Hophead Explorer", + "description": "Chases the newest hop varieties and double-digit IBUs, tracking hazy releases and limited tap takeovers across town.", + "style_affinities": ["American IPA", "Double IPA", "New England IPA", "Black IPA"] + }, + { + "name": "Malt & Tradition Loyalist", + "description": "Prefers clean, balanced lagers brewed the way their region has brewed them for generations, and is quick to defend a well-made Helles.", + "style_affinities": ["Munich Helles", "Vienna Lager", "Märzen", "Festbier"] + }, + { + "name": "Dark & Roasty Devotee", + "description": "Orders the darkest beer on the board year-round, drawn to roasted malt, coffee, and chocolate notes over carbonated lightness.", + "style_affinities": ["Imperial Stout", "Robust Porter", "Baltic Porter", "Oatmeal Stout"] + }, + { + "name": "Sour & Wild Forager", + "description": "Seeks out barrel-aged, spontaneously fermented, and funky beers, and will travel for a fresh bottling of something wild.", + "style_affinities": ["Lambic", "Gueuze", "Flanders Red Ale", "Wild Ale"] + }, + { + "name": "Session Sipper", + "description": "Values an easy-drinking pint that holds up over a long afternoon at the taproom more than raw intensity or novelty.", + "style_affinities": ["Session IPA", "Ordinary Bitter", "Cream Ale", "Blonde Ale"] + }, + { + "name": "Belgian Abbey Pilgrim", + "description": "Collects abbey and trappist releases, drawn to the dried-fruit esters and warming strength of classic Belgian ales.", + "style_affinities": ["Belgian Tripel", "Belgian Dubbel", "Belgian Quadrupel", "Trappist Single"] + }, + { + "name": "Wheat & Citrus Casual", + "description": "Reaches for something light, cloudy, and refreshing, usually with a citrus or coriander note, especially on a patio in summer.", + "style_affinities": ["Hefeweizen", "Witbier", "American Wheat Beer", "Berliner Weisse"] + }, + { + "name": "Big & Boozy Connoisseur", + "description": "Sips slowly from a snifter, seeking out high-ABV releases meant for aging and savoring rather than quick refreshment.", + "style_affinities": ["English Barleywine", "Wee Heavy", "Doppelbock", "Old Ale"] + } +] diff --git a/tooling/pipeline/prompts/USER_GENERATION.md b/tooling/pipeline/prompts/USER_GENERATION.md new file mode 100644 index 0000000..ac031cb --- /dev/null +++ b/tooling/pipeline/prompts/USER_GENERATION.md @@ -0,0 +1,122 @@ +# FULL SYSTEM PROMPT + +You are a craft beer community profile writer. You write short, first-person +biographies for fictional users of a brewery-discovery app, grounded in the +exact name, locale, and persona provided. You do not invent the user's name -- +it is given to you and must not be altered, translated, or abbreviated beyond +forming a username. + +You will receive the inputs like this: + +## NAME: + +[First name] [Last name] + +## GENDER: + +[Gender associated with the given first name] + +## CITY: + +[City Name] + +## COUNTRY: + +[Country Name] + +## PERSONA: + +[Persona archetype name] + +## PERSONA DESCRIPTION: + +[What this persona cares about and how they talk about beer] + +## STYLE AFFINITIES: + +[Comma-separated beer styles this persona favors] + +## CRITICAL OUTPUT FORMAT (READ CAREFULLY): + +ABSOLUTELY NO MARKDOWN FORMATTING. Do NOT wrap your response in json or ``` +blocks. + +Do not add markdown, code fences, or postscript around the final JSON object. +Do not say "Here is the JSON" or "Enjoy!". + +The JSON must contain exactly three keys ("username", "bio", +"activity_weight") in that order. Do not rename or add any other keys. + +ESCAPE ALL QUOTES inside the bio field using \", or use single quotes (' ') +instead. + +DO NOT use actual line breaks (\n) inside any string. Keep the bio as one +continuous string. + +The bio must be between 25 and 60 words, written in first person, and must +read as something this specific person would write about themselves -- not a +generic profile blurb. + +`activity_weight` is a number between 0 and 1 (inclusive) representing how +often this persona checks in at breweries relative to other users. Persona +archetypes implying frequent, habitual brewery visits should skew higher; +casual or occasional-visitor personas should skew lower. Do not default to +0.5 -- vary it meaningfully based on the persona description. + +Expected JSON format: + +```json +{ + "username": "a handle derived from the given name", + "bio": "The first-person bio goes here.", + "activity_weight": 0.62 +} +``` + +## CONTENT RULES AND CONSTRAINTS: + +### THE USERNAME: + +Derive the username from the given first and/or last name (e.g. lowercase, +abbreviated, or combined with a short word or number tied to the persona's +style affinities). Do not invent an unrelated handle. Do not include spaces. + +### THE BIO: + +Ground the bio in the supplied persona description and style affinities -- +mention at least one specific beer style from the style affinities list, in a +way that sounds like a personal preference rather than a list. Reference the +city or country naturally if it fits, but do not force it. + +### VOICE & PERSPECTIVE: + +Write in the first person ("I"/"my"). The tone should match the persona: +an enthusiastic explorer sounds different from a relaxed, easy-drinking +regular. Do not write in second or third person. + +### THE BLOCKLIST (FORBIDDEN CONCEPTS): + +You absolutely cannot use the following words and phrases. Make sure your +final output doesn't have any of these: + +- "hidden gem" +- "passion" +- "authentic" +- "craft beer enthusiast" +- "beer connoisseur" +- "journey" + +#### FORBIDDEN WRITING PATTERNS + +The following patterns are common AI writing pitfalls and must not appear in +the bio: + +- Negative parallelism constructions: "It's not X, it's Y" +- Inflated significance phrases: "stands as a testament," "plays a vital + role," "deeply rooted" +- Superficial trailing analyses: sentences ending in -ing words that add + opinion without content +- Promotional travel-copy tone: "breathtaking," "must-visit," "vibrant" +- Overused conjunctive transitions used as sentence openers: "Moreover," + "Furthermore," "In addition" +- Rule of three: do not consistently organise ideas or examples in triplets diff --git a/tooling/pipeline/run.sh b/tooling/pipeline/run.sh new file mode 100644 index 0000000..365fbdd --- /dev/null +++ b/tooling/pipeline/run.sh @@ -0,0 +1,8 @@ +./biergarten-pipeline \ + --model ../models/google_gemma-4-E4B-it-Q6_K.gguf \ + --temperature 1.0 \ + --top-p 0.95 \ + --top-k 64 \ + --n-ctx 8192 \ + --location-count 15 \ + --prompt-dir ../prompts diff --git a/tooling/pipeline/src/application_options/parse_arguments.cc b/tooling/pipeline/src/application_options/parse_arguments.cc index 5e9ae84..91bd896 100644 --- a/tooling/pipeline/src/application_options/parse_arguments.cc +++ b/tooling/pipeline/src/application_options/parse_arguments.cc @@ -15,8 +15,6 @@ std::optional ParseArguments( opt("help,h", "Produce help message"); - // Defaults sourced from SamplingOptions{} so the CLI and LlamaGenerator - // share a single source of truth — changing the struct updates both. auto add_sampling_options = [&]() -> void { const SamplingOptions sampling_defaults{}; opt("temperature", @@ -53,7 +51,8 @@ std::optional ParseArguments( prog_opts::value()->default_value("pipeline.log"), "Path for application logs"); opt("prompt-dir", prog_opts::value()->default_value(""), - "Directory containing named prompt files (e.g. BREWERY_GENERATION.md)." + "Directory containing named prompt files (e.g. " + "BREWERY_GENERATION.md)." " Required when not using --mocked."); opt("location-count", prog_opts::value()->default_value(10)); }; @@ -72,11 +71,11 @@ std::optional ParseArguments( })(); if (logger) { logger->Log(LogDTO{.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = title}); + .phase = PipelinePhase::Startup, + .message = title}); logger->Log(LogDTO{.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = usage}); + .phase = PipelinePhase::Startup, + .message = usage}); } return std::nullopt; } @@ -91,8 +90,8 @@ std::optional ParseArguments( help_stream << "\n" << desc; if (logger) { logger->Log(LogDTO{.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = help_stream.str()}); + .phase = PipelinePhase::Startup, + .message = help_stream.str()}); } return std::nullopt; } @@ -108,14 +107,16 @@ std::optional ParseArguments( const std::string model_path = var_map["model"].as(); const int n_gpu_layers = var_map["n-gpu-layers"].as(); - // Enforce mutual exclusivity before any further configuration is applied. + // Enforce mutual exclusivity before any further configuration is + // applied. if (use_mocked && !model_path.empty()) { const std::string msg = - "Invalid arguments: --mocked and --model are mutually exclusive"; + "Invalid arguments: --mocked and --model are mutually " + "exclusive"; if (logger) { logger->Log(LogDTO{.level = LogLevel::Error, - .phase = PipelinePhase::Startup, - .message = msg}); + .phase = PipelinePhase::Startup, + .message = msg}); } else { std::cerr << msg << std::endl; } @@ -124,11 +125,12 @@ std::optional ParseArguments( if (!use_mocked && model_path.empty()) { const std::string msg = - "Invalid arguments: either --mocked or --model must be specified"; + "Invalid arguments: either --mocked or --model must be " + "specified"; if (logger) { logger->Log(LogDTO{.level = LogLevel::Error, - .phase = PipelinePhase::Startup, - .message = msg}); + .phase = PipelinePhase::Startup, + .message = msg}); } else { std::cerr << msg << std::endl; } @@ -139,7 +141,8 @@ std::optional ParseArguments( // generator has no use for it and should not require it to be present. if (!use_mocked && options.pipeline.prompt_dir.empty()) { const std::string msg = - "Invalid arguments: --prompt-dir is required when not using --mocked"; + "Invalid arguments: --prompt-dir is required when not using " + "--mocked"; if (logger) { logger->Log({.level = LogLevel::Error, .phase = PipelinePhase::Startup, @@ -152,7 +155,6 @@ std::optional ParseArguments( options.generator.use_mocked = use_mocked; options.generator.model_path = model_path; - // options.generator.n_gpu_layers = n_gpu_layers; // Only populate sampling config when the user explicitly overrides at // least one value. Leaving it as std::nullopt lets LlamaGenerator fall @@ -171,8 +173,8 @@ std::optional ParseArguments( "Sampling parameters are ignored when using --mocked"; if (logger) { logger->Log(LogDTO{.level = LogLevel::Warn, - .phase = PipelinePhase::Startup, - .message = msg}); + .phase = PipelinePhase::Startup, + .message = msg}); } else { std::cerr << msg << std::endl; } @@ -197,8 +199,8 @@ std::optional ParseArguments( exception.what(); if (logger) { logger->Log(LogDTO{.level = LogLevel::Error, - .phase = PipelinePhase::Startup, - .message = msg}); + .phase = PipelinePhase::Startup, + .message = msg}); } return std::nullopt; } catch (...) { @@ -206,8 +208,8 @@ std::optional ParseArguments( "Failed to parse command-line arguments: unknown error"; if (logger) { logger->Log(LogDTO{.level = LogLevel::Error, - .phase = PipelinePhase::Startup, - .message = msg}); + .phase = PipelinePhase::Startup, + .message = msg}); } return std::nullopt; } diff --git a/tooling/pipeline/src/biergarten_pipeline_orchestrator/biergarten_pipeline_orchestrator.cc b/tooling/pipeline/src/biergarten_pipeline_orchestrator/biergarten_pipeline_orchestrator.cc index 31a158e..eae518a 100644 --- a/tooling/pipeline/src/biergarten_pipeline_orchestrator/biergarten_pipeline_orchestrator.cc +++ b/tooling/pipeline/src/biergarten_pipeline_orchestrator/biergarten_pipeline_orchestrator.cc @@ -1,6 +1,6 @@ /** * @file biergarten_pipeline_orchestrator/biergarten_pipeline_orchestrator.cc - * @brief BiergartenDataGenerator constructor implementation. + * @brief BiergartenPipelineOrchestrator constructor implementation. */ #include "biergarten_pipeline_orchestrator.h" @@ -12,9 +12,11 @@ BiergartenPipelineOrchestrator::BiergartenPipelineOrchestrator( std::unique_ptr context_service, std::unique_ptr generator, std::unique_ptr exporter, - const ApplicationOptions &app_options) + std::unique_ptr curated_data_service, + const ApplicationOptions& application_options) : logger_(std::move(logger)), context_service_(std::move(context_service)), generator_(std::move(generator)), exporter_(std::move(exporter)), - application_options_(app_options) {} + curated_data_service_(std::move(curated_data_service)), + application_options_(application_options) {} \ No newline at end of file diff --git a/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc b/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc index 09dfa82..0ee023b 100644 --- a/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc +++ b/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_breweries.cc @@ -1,10 +1,11 @@ /** * @file biergarten_pipeline_orchestrator/generate_breweries.cc - * @brief BiergartenDataGenerator::GenerateBreweries() implementation. + * @brief BiergartenPipelineOrchestrator::GenerateBreweries() implementation. */ #include #include +#include #include "biergarten_pipeline_orchestrator.h" #include "services/logging/logger.h" @@ -19,50 +20,69 @@ void BiergartenPipelineOrchestrator::GenerateBreweries( size_t skipped_count = 0; size_t export_failed_count = 0; - for (const auto& [location, region_context] : cities) { + const auto generate_record = + [this, &skipped_count]( + const Location& location, + const std::string& region_context) -> std::optional { try { const BreweryResult brewery = generator_->GenerateBrewery(location, region_context); - - const GeneratedBrewery gen{.location = location, .brewery = brewery}; - - generated_breweries_.push_back(gen); - - try { - exporter_->ProcessRecord(gen); - } catch (const std::exception& export_exception) { - ++export_failed_count; - - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::BreweryAndBeerGeneration, - .message = - std::format("[Pipeline] Generated brewery for '{}' ({}) but SQLite export failed: {}", - location.city, location.country, export_exception.what())}); - } + return BreweryRecord{.location = location, .brewery = brewery}; } catch (const std::exception& e) { ++skipped_count; - logger_->Log({.level = LogLevel::Warn, - .phase = PipelinePhase::BreweryAndBeerGeneration, - .message = std::format("[Pipeline] Skipping city '{}' ({}): brewery generation failed: {}", - location.city, location.country, e.what())}); + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::BreweryAndBeerGeneration, + .message = std::format("[Pipeline] Skipping city '{}' ({}): brewery " + "generation failed: {}", + location.city, location.country, e.what())}); + return std::nullopt; } + }; + + const auto export_record = [this, &export_failed_count]( + const BreweryRecord& record) { + try { + exporter_->ProcessRecord(record); + } catch (const std::exception& export_exception) { + ++export_failed_count; + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::BreweryAndBeerGeneration, + .message = std::format("[Pipeline] Generated brewery for '{}' ({}) " + "but SQLite export failed: {}", + record.location.city, record.location.country, + export_exception.what())}); + } + }; + + for (const auto& [location, region_context] : cities) { + const std::optional record = + generate_record(location, region_context); + if (!record.has_value()) { + continue; + } + + generated_breweries_.push_back(*record); + export_record(*record); } if (skipped_count > 0) { - logger_->Log({.level = LogLevel::Warn, - .phase = PipelinePhase::BreweryAndBeerGeneration, - .message = std::format( - "[Pipeline] Skipped {} city/cities due to generation errors", - skipped_count)}); + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::BreweryAndBeerGeneration, + .message = std::format( + "[Pipeline] Skipped {} city/cities due to generation errors", + skipped_count)}); } if (export_failed_count > 0) { - logger_->Log({.level = LogLevel::Warn, - .phase = PipelinePhase::Teardown, - .message = std::format( - "[Pipeline] Failed to export {} generated brewery/breweries to SQLite", - export_failed_count)}); + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::Teardown, + .message = std::format("[Pipeline] Failed to export {} generated " + "brewery/breweries to SQLite", + export_failed_count)}); } } diff --git a/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_users.cc b/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_users.cc new file mode 100644 index 0000000..bbfe52d --- /dev/null +++ b/tooling/pipeline/src/biergarten_pipeline_orchestrator/generate_users.cc @@ -0,0 +1,219 @@ +/** + * @file biergarten_pipeline_orchestrator/generate_users.cc + * @brief BiergartenPipelineOrchestrator::GenerateUsers() implementation. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "biergarten_pipeline_orchestrator.h" +#include "services/curated_data/curated_json_data_service.h" +#include "services/logging/logger.h" + +namespace { +std::string Sanitize(std::string_view value) { + std::string out; + out.reserve(value.size()); + for (const char character : value) { + if (std::isalnum(static_cast(character)) != 0) { + out.push_back(static_cast( + std::tolower(static_cast(character)))); + } + } + return out; +} + +std::string BuildEmail(const Name& name, + std::unordered_set& used_local_parts) { + const std::string base = + std::format("{}.{}", Sanitize(name.first_name), Sanitize(name.last_name)); + + std::string local_part = base; + uint32_t suffix = 1; + + while (used_local_parts.contains(local_part)) { + local_part = std::format("{}{}", base, suffix); + ++suffix; + } + + used_local_parts.insert(local_part); + + return std::format("{}@thebiergarten.app", local_part); +} + +std::string GenerateDateOfBirth(std::mt19937& rng) { + using namespace std::chrono; + + constexpr int kMinAge = 19; + constexpr int kMaxAge = 48; + constexpr int kMaxDayOffset = 364; + + std::uniform_int_distribution age_dist(kMinAge, kMaxAge); + std::uniform_int_distribution day_offset_dist(0, kMaxDayOffset); + + const year_month_day today{floor(system_clock::now())}; + const year_month_day birth_year_anchor{today.year() - years{age_dist(rng)}, + today.month(), today.day()}; + const sys_days birth_date = + sys_days{birth_year_anchor} - days{day_offset_dist(rng)}; + const year_month_day birth_ymd{birth_date}; + + return std::format("{:04}-{:02}-{:02}", static_cast(birth_ymd.year()), + static_cast(birth_ymd.month()), + static_cast(birth_ymd.day())); +} + +std::optional SampleName( + const ForenamesByCountryMap& forenames_by_country, + const SurnamesByCountryMap& surnames_by_country, + const std::string& iso3166_1, std::mt19937& rng) { + const auto forenames_it = forenames_by_country.find(iso3166_1); + const auto surnames_it = surnames_by_country.find(iso3166_1); + + if (forenames_it == forenames_by_country.end() || + surnames_it == surnames_by_country.end() || + forenames_it->second.empty() || surnames_it->second.empty()) { + return std::nullopt; + } + + const ForenameList& forenames = forenames_it->second; + const SurnameList& surnames = surnames_it->second; + + std::uniform_int_distribution forename_dist(0, forenames.size() - 1); + std::uniform_int_distribution surname_dist(0, surnames.size() - 1); + + auto forename_it = forenames.begin(); + std::advance(forename_it, forename_dist(rng)); + + auto surname_it = surnames.begin(); + std::advance(surname_it, surname_dist(rng)); + + return Name{.first_name = forename_it->name, + .last_name = *surname_it, + .gender = forename_it->gender}; +} +} // namespace + +void BiergartenPipelineOrchestrator::GenerateUsers( + std::span cities) { + logger_->Log({.level = LogLevel::Info, + .phase = PipelinePhase::UserGeneration, + .message = "=== SAMPLE USER GENERATION ==="}); + + const PersonasList& personas = curated_data_service_->LoadPersonas(); + + if (personas.empty()) { + throw std::runtime_error( + "No personas available in personas.json for user generation"); + } + + const ForenamesByCountryMap& forenames_by_country = + curated_data_service_->LoadForenamesByCountry(); + const SurnamesByCountryMap& surnames_by_country = + curated_data_service_->LoadSurnamesByCountry(); + + std::mt19937 rng(std::random_device{}()); + std::uniform_int_distribution persona_dist(0, personas.size() - 1); + + generated_users_.clear(); + size_t skipped_count = 0; + size_t export_failed_count = 0; + std::unordered_set used_email_local_parts; + + const auto generate_record = + [this, &rng, &skipped_count, &used_email_local_parts]( + const EnrichedCity& city, const UserPersona& persona, + const Name& sampled_name) -> std::optional { + try { + const UserResult user = + generator_->GenerateUser(city, persona, sampled_name); + + return UserRecord{ + .location = city.location, + .user = user, + .email = BuildEmail(sampled_name, used_email_local_parts), + .date_of_birth = GenerateDateOfBirth(rng), + }; + } catch (const std::exception& e) { + ++skipped_count; + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::UserGeneration, + .message = std::format( + "[Pipeline] Skipping city '{}' ({}): " + "user generation failed: {}", + city.location.city, city.location.country, e.what())}); + return std::nullopt; + } + }; + + const auto export_record = [this, + &export_failed_count](const UserRecord& record) { + try { + exporter_->ProcessRecord(record); + } catch (const std::exception& export_exception) { + ++export_failed_count; + + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::UserGeneration, + .message = std::format("[Pipeline] Generated user for '{}' ({}) but " + "SQLite export failed: {}", + record.location.city, record.location.country, + export_exception.what())}); + } + }; + + for (const auto& city : cities) { + const std::optional sampled_name = + SampleName(forenames_by_country, surnames_by_country, + city.location.iso3166_1, rng); + + if (!sampled_name.has_value()) { + ++skipped_count; + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::UserGeneration, + .message = std::format( + "[Pipeline] Skipping city '{}' ({}): no names " + "available for country '{}'", + city.location.city, city.location.country, + city.location.iso3166_1)}); + continue; + } + + const UserPersona& persona = personas[persona_dist(rng)]; + + const std::optional record = + generate_record(city, persona, *sampled_name); + if (!record.has_value()) { + continue; + } + + generated_users_.push_back(*record); + export_record(*record); + } + + if (skipped_count > 0) { + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::UserGeneration, + .message = std::format( + "[Pipeline] Skipped {} city/cities during user generation", + skipped_count)}); + } + + if (export_failed_count > 0) { + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Teardown, + .message = std::format("[Pipeline] Failed to export {} " + "generated user/users to SQLite", + export_failed_count)}); + } +} diff --git a/tooling/pipeline/src/biergarten_pipeline_orchestrator/log_results.cc b/tooling/pipeline/src/biergarten_pipeline_orchestrator/log_results.cc index 21db335..9587ced 100644 --- a/tooling/pipeline/src/biergarten_pipeline_orchestrator/log_results.cc +++ b/tooling/pipeline/src/biergarten_pipeline_orchestrator/log_results.cc @@ -1,20 +1,21 @@ /** * @file biergarten_pipeline_orchestrator/log_results.cc - * @brief BiergartenDataGenerator::LogResults() implementation. + * @brief BiergartenPipelineOrchestrator::LogResults() implementation. */ #include #include #include -#include "../../includes/json_handling/pretty_print.h" #include "biergarten_pipeline_orchestrator.h" +#include "json_handling/pretty_print.h" #include "services/logging/logger.h" + void BiergartenPipelineOrchestrator::LogResults() const { - boost::json::array output; + boost::json::array brewery_output; for (const auto& [location, brewery] : generated_breweries_) { - output.push_back(boost::json::object{ + brewery_output.push_back(boost::json::object{ {"name_en", brewery.name_en}, {"description_en", brewery.description_en}, {"name_local", brewery.name_local}, @@ -29,9 +30,30 @@ void BiergartenPipelineOrchestrator::LogResults() const { }}}); } - std::ostringstream oss; - PrettyPrint(oss, output); + std::ostringstream brewery_oss; + PrettyPrint(brewery_oss, brewery_output); logger_->Log({.level = LogLevel::Info, .phase = PipelinePhase::Teardown, - .message = oss.str()}); + .message = brewery_oss.str()}); + + boost::json::array user_output; + + for (const auto& generated_user : generated_users_) { + user_output.push_back(boost::json::object{ + {"first_name", generated_user.user.first_name}, + {"last_name", generated_user.user.last_name}, + {"gender", generated_user.user.gender}, + {"username", generated_user.user.username}, + {"bio", generated_user.user.bio}, + {"activity_weight", generated_user.user.activity_weight}, + {"email", generated_user.email}, + {"date_of_birth", generated_user.date_of_birth}, + }); + } + + std::ostringstream user_oss; + PrettyPrint(user_oss, user_output); + logger_->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Teardown, + .message = user_oss.str()}); } diff --git a/tooling/pipeline/src/biergarten_pipeline_orchestrator/query_cities_with_countries.cc b/tooling/pipeline/src/biergarten_pipeline_orchestrator/query_cities_with_countries.cc index 6c1b62b..f3549dd 100644 --- a/tooling/pipeline/src/biergarten_pipeline_orchestrator/query_cities_with_countries.cc +++ b/tooling/pipeline/src/biergarten_pipeline_orchestrator/query_cities_with_countries.cc @@ -1,17 +1,17 @@ /** * @file biergarten_pipeline_orchestrator/query_cities_with_countries.cc - * @brief BiergartenDataGenerator::QueryCitiesWithCountries() implementation. + * @brief BiergartenPipelineOrchestrator::QueryCitiesWithCountries() + * implementation. */ #include #include -#include #include #include #include #include "biergarten_pipeline_orchestrator.h" -#include "json_handling/json_loader.h" +#include "services/curated_data/curated_json_data_service.h" #include "services/logging/logger.h" std::vector @@ -20,9 +20,8 @@ BiergartenPipelineOrchestrator::QueryCitiesWithCountries() { .phase = PipelinePhase::Startup, .message = "=== GEOGRAPHIC DATA OVERVIEW ==="}); - const std::filesystem::path locations_path = "locations.json"; - - auto all_locations = JsonLoader::LoadLocations(locations_path, logger_); + const std::vector& all_locations = + curated_data_service_->LoadLocations(); const size_t sample_count = std::min( static_cast(application_options_.pipeline.location_count), diff --git a/tooling/pipeline/src/biergarten_pipeline_orchestrator/run.cc b/tooling/pipeline/src/biergarten_pipeline_orchestrator/run.cc index c98805f..5ada0f6 100644 --- a/tooling/pipeline/src/biergarten_pipeline_orchestrator/run.cc +++ b/tooling/pipeline/src/biergarten_pipeline_orchestrator/run.cc @@ -1,6 +1,6 @@ /** * @file biergarten_pipeline_orchestrator/run.cc - * @brief BiergartenDataGenerator::Run() implementation. + * @brief BiergartenPipelineOrchestrator::Run() implementation. */ #include @@ -22,42 +22,40 @@ bool BiergartenPipelineOrchestrator::Run() { for (auto& city : cities) { try { std::string region_context = context_service_->GetLocationContext(city); - // logger_->Log(LogLevel::Debug, PipelinePhase::UserGeneration, - // "[Pipeline] Context for '" + city.city + "' (" + - // city.iso3166_2 + ") gathered:\n" + region_context); enriched.push_back( EnrichedCity{.location = std::move(city), .region_context = std::move(region_context)}); } catch (const std::exception& exception) { ++skipped_count; - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = std::format( - "[Pipeline] Skipping city '{}' ({}): context lookup failed: {}", - city.city, city.country, exception.what())}); + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "[Pipeline] Skipping city '{}' ({}): context " + "lookup failed: {}", + city.city, city.country, exception.what())}); } } if (skipped_count > 0) { - logger_->Log({.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = std::format( - "[Pipeline] Skipped {} city/cities due to context lookup errors", - skipped_count)}); + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format("[Pipeline] Skipped {} city/cities due " + "to context lookup errors", + skipped_count)}); } + this->GenerateUsers(enriched); this->GenerateBreweries(enriched); exporter_->Finalize(); this->LogResults(); return true; } catch (const std::exception& e) { - logger_->Log( - {.level = LogLevel::Error, - .phase = PipelinePhase::Teardown, - .message = - std::format("Pipeline execution failed with error: {}", e.what())}); + logger_->Log({.level = LogLevel::Error, + .phase = PipelinePhase::Teardown, + .message = std::format( + "Pipeline execution failed with error: {}", e.what())}); return false; } } diff --git a/tooling/pipeline/src/data_generation/llama/generate_brewery.cc b/tooling/pipeline/src/data_generation/llama/generate_brewery.cc index f6d5159..30c4ac6 100644 --- a/tooling/pipeline/src/data_generation/llama/generate_brewery.cc +++ b/tooling/pipeline/src/data_generation/llama/generate_brewery.cc @@ -12,6 +12,7 @@ #include #include +#include "data_generation/json_grammars.h" #include "data_generation/llama_generator.h" #include "data_generation/llama_generator_helpers.h" @@ -32,19 +33,6 @@ static std::string FormatLocalLanguageCodes( return formatted; } -// GBNF grammar for structured brewery JSON output. -// @TODO move to a separate gbnf file if it grows in complexity or is shared -// across modules. -static constexpr std::string_view kBreweryJsonGrammar = R"json_brewery( -root ::= thought-block "{" ws "\"name_en\"" ws ":" ws string ws "," ws "\"description_en\"" ws ":" ws string ws "," ws "\"name_local\"" ws ":" ws string ws "," ws "\"description_local\"" ws ":" ws string ws "}" ws -thought-block ::= [^{]* -ws ::= [ \t\n\r]* -string ::= "\"" char+ "\"" -char ::= [^"\\\x7F\x00-\x1F] | [\\] escape -escape ::= ["\\/bfnrt] | "u" hex hex hex hex -hex ::= [0-9a-fA-F] -)json_brewery"; - static constexpr int kBreweryInitialMaxTokens = 2800; BreweryResult LlamaGenerator::GenerateBrewery( @@ -83,15 +71,14 @@ BreweryResult LlamaGenerator::GenerateBrewery( /** * RETRY LOOP with validation and error correction - * Attempts to generate valid brewery data up to 3 times, with feedback-based - * refinement + * Attempts to generate valid brewery data up to 3 times, with + * feedback-based refinement */ constexpr int max_attempts = 3; std::string raw; std::string last_error; // Token budget: too small risks truncating valid JSON mid-string. - // Start conservatively but allow adaptive increases on truncation. int max_tokens = kBreweryInitialMaxTokens; // Limit output length to keep it concise and focused @@ -104,7 +91,7 @@ BreweryResult LlamaGenerator::GenerateBrewery( {.level = LogLevel::Debug, .phase = PipelinePhase::BreweryAndBeerGeneration, .message = std::format("LlamaGenerator: raw output (attempt {}): {}", - attempt + 1, raw)}); + attempt + 1, raw)}); } // Validate output: parse JSON and check required fields @@ -120,8 +107,9 @@ BreweryResult LlamaGenerator::GenerateBrewery( logger_->Log( {.level = LogLevel::Info, .phase = PipelinePhase::BreweryAndBeerGeneration, - .message = std::format("LlamaGenerator: successfully generated brewery data on attempt {}", - attempt + 1)}); + .message = std::format("LlamaGenerator: successfully generated " + "brewery data on attempt {}", + attempt + 1)}); } return brewery; @@ -134,33 +122,38 @@ BreweryResult LlamaGenerator::GenerateBrewery( logger_->Log( {.level = LogLevel::Warn, .phase = PipelinePhase::BreweryAndBeerGeneration, - .message = - std::format("LlamaGenerator: malformed brewery JSON (attempt {}): {}", + .message = std::format( + "LlamaGenerator: malformed brewery JSON (attempt {}): {}", attempt + 1, *validation_error)}); } // Update prompt with error details to guide LLM toward correct output. user_prompt = std::format( "Your previous response was invalid. Error: {}\nReturn the thought " - "process before the JSON if needed, then return ONLY valid JSON with " - "exactly these keys, in this exact order: {{\"name_en\": \"\", \"description_en\": \"\", \"name_local\": \"\", " + "description>\", \"name_local\": \"\", " "\"description_local\": \"\"}}.\nDo not include markdown, comments, extra keys, or " - "literal placeholder values.\n\nKeep the JSON strings concise enough " + "description>\"}}.\nDo not include markdown, comments, extra keys, " + "or " + "literal placeholder values.\n\nKeep the JSON strings concise " + "enough " "to fit within the token budget.\n\n{}", *validation_error, retry_location); } // All retry attempts exhausted: log failure and throw exception if (logger_) { - logger_->Log( - {.level = LogLevel::Error, - .phase = PipelinePhase::BreweryAndBeerGeneration, - .message = std::format( - "LlamaGenerator: malformed brewery response after {} attempts: {}", - max_attempts, last_error.empty() ? raw : last_error)}); + logger_->Log({.level = LogLevel::Error, + .phase = PipelinePhase::BreweryAndBeerGeneration, + .message = std::format( + "LlamaGenerator: malformed brewery " + "response after {} attempts: {}", + max_attempts, last_error.empty() ? raw : last_error)}); } throw std::runtime_error("LlamaGenerator: malformed brewery response"); } diff --git a/tooling/pipeline/src/data_generation/llama/generate_user.cc b/tooling/pipeline/src/data_generation/llama/generate_user.cc index 8afc776..cb35900 100644 --- a/tooling/pipeline/src/data_generation/llama/generate_user.cc +++ b/tooling/pipeline/src/data_generation/llama/generate_user.cc @@ -1,24 +1,115 @@ /** * @file data_generation/llama/generate_user.cc - * @brief Generates locale-aware user profiles with strict two-line formatting, - * retry handling, and output sanitization for downstream parsing. + * @brief Builds persona/name-grounded user prompts, performs retry-based + * inference, and validates structured JSON output for user records. */ - #include +#include +#include #include +#include +#include "data_generation/json_grammars.h" #include "data_generation/llama_generator.h" #include "data_generation/llama_generator_helpers.h" -// TODO: Implement locale-aware user profile generation. -// Current implementation returns a hardcoded test value and ignores the -// locale parameter. Future implementation should: -// 1. Load a USER_GENERATION.md prompt template with locale context -// 2. Perform LLM inference with locale-specific username/bio generation -// 3. Parse and validate JSON output with retry handling (similar to brewery) -// 4. Return locale-aware username and biography -UserResult LlamaGenerator::GenerateUser(const std::string& locale) { - return {.username = "test_user", - .bio = std::format("This is a test user profile from {}.", locale)}; +static constexpr int kUserInitialMaxTokens = 1200; + +UserResult LlamaGenerator::GenerateUser(const EnrichedCity& city, + const UserPersona& persona, + const Name& name) { + std::string style_affinities; + for (const std::string& style : persona.style_affinities) { + if (!style_affinities.empty()) { + style_affinities += ", "; + } + style_affinities += style; + } + + const std::string system_prompt = prompt_directory_->Load("USER_GENERATION"); + + std::string user_prompt = std::format( + "## NAME:\n\n{} {}\n\n" + "## GENDER:\n\n{}\n\n" + "## CITY:\n\n{}\n\n" + "## COUNTRY:\n\n{}\n\n" + "## PERSONA:\n\n{}\n\n" + "## PERSONA DESCRIPTION:\n\n{}\n\n" + "## STYLE AFFINITIES:\n\n{}", + name.first_name, name.last_name, name.gender, city.location.city, + city.location.country, persona.name, persona.description, + style_affinities); + + const std::string retry_context = std::format( + "Name: {} {}\nCity: {}, {}\nPersona: {}", name.first_name, name.last_name, + city.location.city, city.location.country, persona.name); + + constexpr int max_attempts = 3; + std::string raw; + std::string last_error; + int max_tokens = kUserInitialMaxTokens; + + for (int attempt = 0; attempt < max_attempts; ++attempt) { + raw = this->Infer(system_prompt, user_prompt, max_tokens, kUserJsonGrammar); + if (logger_) { + logger_->Log( + {.level = LogLevel::Debug, + .phase = PipelinePhase::UserGeneration, + .message = std::format("LlamaGenerator: raw output (attempt {}): {}", + attempt + 1, raw)}); + } + + UserResult user; + const std::optional validation_error = + ValidateUserJson(raw, user); + + if (!validation_error.has_value()) { + if (logger_) { + logger_->Log( + {.level = LogLevel::Info, + .phase = PipelinePhase::UserGeneration, + .message = std::format("LlamaGenerator: successfully " + "generated user data on attempt {}", + attempt + 1)}); + } + + user.first_name = name.first_name; + user.last_name = name.last_name; + user.gender = name.gender; + return user; + } + + last_error = *validation_error; + if (logger_) { + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::UserGeneration, + .message = std::format( + "LlamaGenerator: malformed user JSON (attempt {}): {}", + attempt + 1, *validation_error)}); + } + + user_prompt = std::format( + "Your previous response was invalid. Error: {}\nReturn the thought " + "process before the JSON if needed, then return ONLY valid JSON " + "with " + "exactly these keys, in this exact order: {{\"username\": " + "\"\", \"bio\": \"\", \"activity_weight\": }}.\nDo not include markdown, comments, extra keys, or " + "literal placeholder values.\n\n{}", + *validation_error, retry_context); + } + + if (logger_) { + logger_->Log({.level = LogLevel::Error, + .phase = PipelinePhase::UserGeneration, + .message = std::format( + "LlamaGenerator: malformed user response " + "after {} attempts: {}", + max_attempts, last_error.empty() ? raw : last_error)}); + } + throw std::runtime_error("LlamaGenerator: malformed user response"); } diff --git a/tooling/pipeline/src/data_generation/llama/helpers.cc b/tooling/pipeline/src/data_generation/llama/helpers.cc index d8b2715..1d71d88 100644 --- a/tooling/pipeline/src/data_generation/llama/helpers.cc +++ b/tooling/pipeline/src/data_generation/llama/helpers.cc @@ -9,13 +9,16 @@ #include #include #include +#include #include #include #include #include +#include + #include "data_generation/llama_generator_helpers.h" -#include "llama.h" + namespace { /** * String trimming: removes leading and trailing whitespace @@ -76,7 +79,7 @@ bool ReadRequiredTrimmedStringField(const boost::json::object& obj, return !out.empty(); } -bool HasSchemaPlaceholder(const std::array& values) { +bool HasSchemaPlaceholder(std::span values) { for (const std::string* value : values) { std::string lowered = *value; std::ranges::transform(lowered, lowered.begin(), @@ -207,3 +210,58 @@ std::optional ValidateBreweryJson(const std::string& raw, return std::nullopt; } + +std::optional ValidateUserJson(const std::string& raw, + UserResult& user_out) { + boost::system::error_code error_code; + const std::string_view raw_view(raw); + const size_t opening_brace = raw_view.find('{'); + if (opening_brace == std::string_view::npos) { + return "JSON parse error: missing opening brace '{'"; + } + + const std::string_view json_payload = raw_view.substr(opening_brace); + boost::json::value json_value = boost::json::parse(json_payload, error_code); + if (error_code) { + return "JSON parse error: " + error_code.message(); + } + + if (!json_value.is_object()) { + return "JSON root must be an object"; + } + + const auto& obj = json_value.get_object(); + if (obj.size() != 3) { + return "JSON object must contain exactly three keys"; + } + + std::string validation_error; + if (!ReadRequiredTrimmedStringField(obj, "username", user_out.username, + &validation_error)) { + return validation_error; + } + + if (!ReadRequiredTrimmedStringField(obj, "bio", user_out.bio, + &validation_error)) { + return validation_error; + } + + const boost::json::value* activity_weight_field = + obj.if_contains("activity_weight"); + if (activity_weight_field == nullptr || !activity_weight_field->is_number()) { + return "Missing or invalid numeric field: activity_weight"; + } + + const double activity_weight = activity_weight_field->to_number(); + if (activity_weight < 0.0 || activity_weight > 1.0) { + return "activity_weight must be between 0 and 1"; + } + user_out.activity_weight = static_cast(activity_weight); + + const std::array schema_placeholders = {&user_out.username, &user_out.bio}; + if (HasSchemaPlaceholder(schema_placeholders)) { + return "JSON appears to be a schema placeholder, not content"; + } + + return std::nullopt; +} diff --git a/tooling/pipeline/src/data_generation/llama/infer.cc b/tooling/pipeline/src/data_generation/llama/infer.cc index fd9f2ee..53f417f 100644 --- a/tooling/pipeline/src/data_generation/llama/infer.cc +++ b/tooling/pipeline/src/data_generation/llama/infer.cc @@ -14,9 +14,10 @@ #include #include +#include + #include "data_generation/llama_generator.h" #include "data_generation/llama_generator_helpers.h" -#include "llama.h" static constexpr size_t kPromptTokenSlack = 8; // Minimum tokens to keep when using top-p sampling. Ensures at least one diff --git a/tooling/pipeline/src/data_generation/llama/llama_generator.cc b/tooling/pipeline/src/data_generation/llama/llama_generator.cc index cc095dd..3dd61ed 100644 --- a/tooling/pipeline/src/data_generation/llama/llama_generator.cc +++ b/tooling/pipeline/src/data_generation/llama/llama_generator.cc @@ -11,8 +11,9 @@ #include #include +#include + #include "data_model/models.h" -#include "llama.h" static constexpr uint32_t kMaxContextSize = 32768U; diff --git a/tooling/pipeline/src/data_generation/llama/load.cc b/tooling/pipeline/src/data_generation/llama/load.cc index 1866b2a..d5a3308 100644 --- a/tooling/pipeline/src/data_generation/llama/load.cc +++ b/tooling/pipeline/src/data_generation/llama/load.cc @@ -10,9 +10,10 @@ #include #include +#include +#include + #include "data_generation/llama_generator.h" -#include "ggml-backend.h" -#include "llama.h" // Maximum batch size for decode operations. Capping the batch prevents // excessive memory allocation while maintaining inference performance. diff --git a/tooling/pipeline/src/data_generation/mock/deterministic_hash.cc b/tooling/pipeline/src/data_generation/mock/deterministic_hash.cc index d66a7c3..06d46b7 100644 --- a/tooling/pipeline/src/data_generation/mock/deterministic_hash.cc +++ b/tooling/pipeline/src/data_generation/mock/deterministic_hash.cc @@ -14,3 +14,13 @@ size_t MockGenerator::DeterministicHash(const Location& location) { boost::hash_combine(seed, location.country); return seed; } + +size_t MockGenerator::DeterministicHash(const Location& location, + const UserPersona& persona, + const Name& name) { + size_t seed = DeterministicHash(location); + boost::hash_combine(seed, persona.name); + boost::hash_combine(seed, name.first_name); + boost::hash_combine(seed, name.last_name); + return seed; +} diff --git a/tooling/pipeline/src/data_generation/mock/generate_user.cc b/tooling/pipeline/src/data_generation/mock/generate_user.cc index 38257fb..3a66047 100644 --- a/tooling/pipeline/src/data_generation/mock/generate_user.cc +++ b/tooling/pipeline/src/data_generation/mock/generate_user.cc @@ -1,22 +1,31 @@ /** * @file data_generation/mock/generate_user.cc - * @brief Generates deterministic mock user profiles by hashing locale values - * into predefined username and bio collections. + * @brief Generates deterministic mock user profiles by hashing city, persona, + * and sampled name into predefined username and bio collections. */ -#include -#include #include #include "data_generation/mock_generator.h" -UserResult MockGenerator::GenerateUser(const std::string& locale) { - const size_t hash = std::hash{}(locale); +UserResult MockGenerator::GenerateUser(const EnrichedCity& city, + const UserPersona& persona, + const Name& name) { + const size_t hash = DeterministicHash(city.location, persona, name); - UserResult result; const std::string_view username = kUsernames[hash % kUsernames.size()]; const std::string_view bio = kBios[hash / kBioHashStride % kBios.size()]; - result.username = username; - result.bio = bio; - return result; + const float activity_weight = + static_cast(hash / kActivityWeightHashStride % + kActivityWeightHashRange) / + static_cast(kActivityWeightHashRange); + + return { + .first_name = name.first_name, + .last_name = name.last_name, + .gender = name.gender, + .username = std::string(username), + .bio = std::string(bio), + .activity_weight = activity_weight, + }; } diff --git a/tooling/pipeline/src/json_handling/json_loader.cc b/tooling/pipeline/src/json_handling/json_loader.cc deleted file mode 100644 index 6311991..0000000 --- a/tooling/pipeline/src/json_handling/json_loader.cc +++ /dev/null @@ -1,110 +0,0 @@ -/** - * @file json_handling/json_loader.cc - * @brief Parses curated location JSON input into strongly typed Location - * records with strict field validation and descriptive error reporting. - */ - -#include "json_handling/json_loader.h" - -#include -#include "services/logging/logger.h" -#include - -#include -#include -#include -#include -#include -#include - -static std::string ReadRequiredString(const boost::json::object& object, - const char* key) { - const boost::json::value* value = object.if_contains(key); - if (value == nullptr || !value->is_string()) { - throw std::runtime_error( - std::format("Missing or invalid string field: {}", key)); - } - const std::string_view text = value->as_string(); - return std::string(text); -} - -static double ReadRequiredNumber(const boost::json::object& object, - const char* key) { - const boost::json::value* value = object.if_contains(key); - if (value == nullptr || !value->is_number()) { - throw std::runtime_error( - std::format("Missing or invalid numeric field: {}", key)); - } - return value->to_number(); -} - -static std::vector ReadRequiredStringArray( - const boost::json::object& object, const char* key) { - const boost::json::value* value = object.if_contains(key); - if (value == nullptr || !value->is_array()) { - throw std::runtime_error( - std::format("Missing or invalid string array field: {}", key)); - } - - const auto& array = value->as_array(); - std::vector items; - items.reserve(array.size()); - for (const auto& item : array) { - if (!item.is_string()) { - throw std::runtime_error( - std::format("Missing or invalid string array field: {}", key)); - } - items.emplace_back(item.as_string()); - } - return items; -} - -std::vector JsonLoader::LoadLocations( - const std::filesystem::path& filepath, std::shared_ptr logger) { - std::ifstream input(filepath); - if (!input.is_open()) { - throw std::runtime_error("Failed to open locations file: " + - filepath.string()); - } - - std::stringstream buffer; - buffer << input.rdbuf(); - const std::string content = buffer.str(); - - boost::system::error_code error; - boost::json::value root = boost::json::parse(content, error); - if (error) { - throw std::runtime_error("Failed to parse locations JSON: " + - error.message()); - } - - if (!root.is_array()) { - throw std::runtime_error( - "Invalid locations JSON: root element must be an array"); - } - - std::vector locations; - const auto& items = root.as_array(); - locations.reserve(items.size()); - - for (const auto& item : items) { - if (!item.is_object()) { - throw std::runtime_error( - "Invalid locations JSON: each entry must be an object"); - } - - const auto& object = item.as_object(); - locations.push_back(Location{ - .city = ReadRequiredString(object, "city"), - .state_province = ReadRequiredString(object, "state_province"), - .iso3166_2 = ReadRequiredString(object, "iso3166_2"), - .country = ReadRequiredString(object, "country"), - .iso3166_1 = ReadRequiredString(object, "iso3166_1"), - .local_languages = ReadRequiredStringArray(object, "local_languages"), - .latitude = ReadRequiredNumber(object, "latitude"), - .longitude = ReadRequiredNumber(object, "longitude"), - }); - } - - return locations; -} diff --git a/tooling/pipeline/src/main.cc b/tooling/pipeline/src/main.cc index 25ed693..9d33b8d 100644 --- a/tooling/pipeline/src/main.cc +++ b/tooling/pipeline/src/main.cc @@ -18,25 +18,7 @@ #include #include -#include "biergarten_pipeline_orchestrator.h" -#include "concurrency/bounded_channel.h" -#include "data_generation/llama_generator.h" -#include "data_generation/mock_generator.h" -#include "data_generation/prompt_formatting/gemma4_jinja_prompt_formatter.h" -#include "data_model/models.h" -#include "llama_backend_state.h" -#include "services/database/export_service.h" -#include "services/database/sqlite_export_service.h" -#include "services/datetime/timer.h" -#include "services/enrichment/enrichment_service.h" -#include "services/enrichment/mock_enrichment.h" -#include "services/enrichment/wikipedia_service.h" -#include "services/logging/log_dispatcher.h" -#include "services/logging/log_entry.h" -#include "services/logging/log_producer.h" -#include "services/logging/logger.h" -#include "services/prompting/prompt_directory.h" -#include "web_client/http_web_client.h" +#include "biergarten_pipeline.h" namespace di = boost::di; @@ -53,6 +35,7 @@ int main(const int argc, char** argv) { std::make_shared(log_channel); std::thread log_thread([&log_dispatcher] { log_dispatcher->Run(); }); + auto shutdown = [&](const int exit_code) { log_channel.Close(); log_thread.join(); @@ -66,8 +49,8 @@ int main(const int argc, char** argv) { const LlamaBackendState llama_backend_state; #endif - log_producer->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Startup, + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, .message = "STARTING PIPELINE"}); const std::optional parsed_options = @@ -89,8 +72,8 @@ int main(const int argc, char** argv) { prompt_directory = std::make_unique( options.pipeline.prompt_dir, log_producer); } catch (const std::exception& dir_error) { - log_producer->Log({.level = LogLevel::Error, - .phase = PipelinePhase::Startup, + log_producer->Log({.level = LogLevel::Error, + .phase = PipelinePhase::Startup, .message = std::format("Invalid --prompt-dir: {}", dir_error.what())}); @@ -103,12 +86,34 @@ int main(const int argc, char** argv) { di::bind().to(options), di::bind().to(model_path), di::bind().to(), + di::bind().to( + [options, &log_producer]() -> std::unique_ptr { + if (options.generator.use_mocked) { + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = "Curated data: mock"}); + + return std::make_unique(); + } + + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = "Curated data: JsonLoader"}); + + return std::make_unique( + CuratedDataFilePaths{ + .locations_path = "locations.json", + .personas_path = "personas.json", + .forenames_path = "forenames-by-country.json", + .surnames_path = "surnames-by-country.json", + }); + }), di::bind().to([options, log_producer] { if (options.generator.use_mocked) { { log_producer->Log( {.level = LogLevel::Info, - .phase = PipelinePhase::Startup, + .phase = PipelinePhase::Startup, .message = "Prompt formatter: none (mock mode)"}); } return std::unique_ptr(nullptr); @@ -116,7 +121,7 @@ int main(const int argc, char** argv) { { log_producer->Log( {.level = LogLevel::Info, - .phase = PipelinePhase::Startup, + .phase = PipelinePhase::Startup, .message = "Prompt formatter: Gemma4JinjaPromptFormatter"}); } return std::unique_ptr( @@ -125,17 +130,17 @@ int main(const int argc, char** argv) { di::bind().to([options, log_producer] { if (options.generator.use_mocked) { { - log_producer->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Startup, + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, .message = "Web client: none (mock mode)"}); } return std::unique_ptr(nullptr); } - { - log_producer->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = "Web client: HttpWebClient"}); - } + + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = "Web client: HttpWebClient"}); + return std::unique_ptr( std::make_unique(log_producer)); }), @@ -143,18 +148,17 @@ int main(const int argc, char** argv) { [options, &log_producer]( const auto& inj) -> std::unique_ptr { if (options.generator.use_mocked) { - { - log_producer->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = "Enrichment: mock"}); - } + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = "Enrichment: mock"}); + return std::make_unique(); } - { - log_producer->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = "Enrichment: Wikipedia"}); - } + + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = "Enrichment: Wikipedia"}); + return std::make_unique( inj.template create>(), log_producer); @@ -163,23 +167,22 @@ int main(const int argc, char** argv) { [&options, &model_path, &sampling, &prompt_directory, &log_producer](const auto& inj) -> std::unique_ptr { if (options.generator.use_mocked) { - { - log_producer->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = "Generator: mock"}); - } + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = "Generator: mock"}); + return std::make_unique(); } - { - log_producer->Log( - {.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = std::format( - "Generator: LlamaGenerator | model={} | temp={:.2f} " - "top_p={:.2f} top_k={} n_ctx={} seed={}", - model_path, sampling.temperature, sampling.top_p, - sampling.top_k, sampling.n_ctx, sampling.seed)}); - } + + log_producer->Log( + {.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = std::format( + "Generator: LlamaGenerator | model={} | " + "temp={:.2f} top_p={:.2f} top_k={} n_ctx={} seed={}", + model_path, sampling.temperature, sampling.top_p, + sampling.top_k, sampling.n_ctx, sampling.seed)}); + return std::make_unique( options, model_path, log_producer, inj.template create>(), @@ -190,23 +193,22 @@ int main(const int argc, char** argv) { injector.create>(); if (!orchestrator->Run()) { - log_producer->Log({.level = LogLevel::Error, - .phase = PipelinePhase::Teardown, + log_producer->Log({.level = LogLevel::Error, + .phase = PipelinePhase::Teardown, .message = "Pipeline execution failed"}); return shutdown(EXIT_FAILURE); } - log_producer->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Teardown, + log_producer->Log({.level = LogLevel::Info, + .phase = PipelinePhase::Teardown, .message = std::format("Pipeline complete in {} ms", timer.Elapsed())}); return shutdown(EXIT_SUCCESS); - } catch (const std::exception& exception) { const LogDTO log_entry{.level = LogLevel::Error, - .phase = PipelinePhase::Teardown, - .message = exception.what()}; + .phase = PipelinePhase::Teardown, + .message = exception.what()}; if (log_producer) { log_producer->Log(log_entry); } else { @@ -215,4 +217,4 @@ int main(const int argc, char** argv) { return shutdown(EXIT_FAILURE); } -} +} \ No newline at end of file diff --git a/tooling/pipeline/src/services/curated_data/curated_json_data_service.cc b/tooling/pipeline/src/services/curated_data/curated_json_data_service.cc new file mode 100644 index 0000000..d9a14c3 --- /dev/null +++ b/tooling/pipeline/src/services/curated_data/curated_json_data_service.cc @@ -0,0 +1,264 @@ +/** + * @file json_handling/json_loader.cc + * @brief Parses curated location JSON input into strongly typed Location + * records with strict field validation and descriptive error reporting. + */ + +#include "services/curated_data/curated_json_data_service.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "services/logging/logger.h" + +static std::string ReadRequiredString(const boost::json::object& object, + const char* key) { + const boost::json::value* value = object.if_contains(key); + if (value == nullptr || !value->is_string()) { + throw std::runtime_error( + std::format("Missing or invalid string field: {}", key)); + } + const std::string_view text = value->as_string(); + return std::string(text); +} + +static double ReadRequiredNumber(const boost::json::object& object, + const char* key) { + const boost::json::value* value = object.if_contains(key); + if (value == nullptr || !value->is_number()) { + throw std::runtime_error( + std::format("Missing or invalid numeric field: {}", key)); + } + return value->to_number(); +} + +static std::vector ReadRequiredStringArray( + const boost::json::object& object, const char* key) { + const boost::json::value* value = object.if_contains(key); + if (value == nullptr || !value->is_array()) { + throw std::runtime_error( + std::format("Missing or invalid string array field: {}", key)); + } + + const auto& array = value->as_array(); + std::vector items; + items.reserve(array.size()); + for (const auto& item : array) { + if (!item.is_string()) { + throw std::runtime_error( + std::format("Missing or invalid string array field: {}", key)); + } + items.emplace_back(item.as_string()); + } + return items; +} + +namespace { + +boost::json::value ParseJsonFile(const std::filesystem::path& filepath, + const char* what) { + std::ifstream input(filepath); + if (!input.is_open()) { + throw std::runtime_error( + std::format("Failed to open {} file: {}", what, filepath.string())); + } + + std::stringstream buffer; + buffer << input.rdbuf(); + + boost::system::error_code error; + boost::json::value root = boost::json::parse(buffer.str(), error); + if (error) { + throw std::runtime_error( + std::format("Failed to parse {} JSON: {}", what, error.message())); + } + return root; +} + +/** + * @brief Returns the first element of a string array field, falling back to + * `fallback_key` if `key` is missing/empty (some source entries only have a + * "localized" form and no "romanized" form). + */ +std::string ReadFirstOfStringArray(const boost::json::object& object, + const char* key, const char* fallback_key) { + for (const char* candidate_key : {key, fallback_key}) { + const boost::json::value* value = object.if_contains(candidate_key); + if (value == nullptr || !value->is_array()) { + continue; + } + const auto& array = value->as_array(); + if (!array.empty() && array.front().is_string()) { + return std::string(array.front().as_string()); + } + } + throw std::runtime_error( + std::format("Missing or invalid string array field: {}", key)); +} + +} // namespace + +CuratedJsonDataService::CuratedJsonDataService(CuratedDataFilePaths filepaths) + : filepaths_(std::move(filepaths)) {} + +const LocationsList& CuratedJsonDataService::LoadLocations() { + if (!cache_.locations.empty()) { + return cache_.locations; + } + + const boost::json::value root = + ParseJsonFile(filepaths_.locations_path, "locations"); + + if (!root.is_array()) { + throw std::runtime_error( + "Invalid locations JSON: root element must be an array"); + } + + LocationsList locations; + const auto& items = root.as_array(); + locations.reserve(items.size()); + + for (const auto& item : items) { + if (!item.is_object()) { + throw std::runtime_error( + "Invalid locations JSON: each entry must be an object"); + } + + const auto& object = item.as_object(); + locations.push_back(Location{ + .city = ReadRequiredString(object, "city"), + .state_province = ReadRequiredString(object, "state_province"), + .iso3166_2 = ReadRequiredString(object, "iso3166_2"), + .country = ReadRequiredString(object, "country"), + .iso3166_1 = ReadRequiredString(object, "iso3166_1"), + .local_languages = ReadRequiredStringArray(object, "local_languages"), + .latitude = ReadRequiredNumber(object, "latitude"), + .longitude = ReadRequiredNumber(object, "longitude"), + }); + } + cache_.locations = std::move(locations); + return cache_.locations; +} + +const PersonasList& CuratedJsonDataService::LoadPersonas() { + if (!cache_.personas.empty()) { + return cache_.personas; + } + + const boost::json::value root = + ParseJsonFile(filepaths_.personas_path, "personas"); + + if (!root.is_array()) { + throw std::runtime_error( + "Invalid personas JSON: root element must be an array"); + } + + PersonasList personas; + const auto& items = root.as_array(); + personas.reserve(items.size()); + + for (const auto& item : items) { + if (!item.is_object()) { + throw std::runtime_error( + "Invalid personas JSON: each entry must be an object"); + } + + const auto& object = item.as_object(); + personas.push_back(UserPersona{ + .name = ReadRequiredString(object, "name"), + .description = ReadRequiredString(object, "description"), + .style_affinities = ReadRequiredStringArray(object, "style_affinities"), + }); + } + + cache_.personas = std::move(personas); + return cache_.personas; +} + +const ForenamesByCountryMap& CuratedJsonDataService::LoadForenamesByCountry() { + if (!cache_.forenames_by_country.empty()) { + return cache_.forenames_by_country; + } + + const boost::json::value root = + ParseJsonFile(filepaths_.forenames_path, "forenames-by-country"); + + if (!root.is_object()) { + throw std::runtime_error( + "Invalid forenames-by-country JSON: root element must be an object " + "keyed by ISO 3166-1 country code"); + } + + ForenamesByCountryMap forenames_by_country; + for (const auto& [country_code, regions] : root.as_object()) { + if (!regions.is_array()) { + continue; + } + ForenameList entries; + for (const auto& region : regions.as_array()) { + if (!region.is_object()) { + continue; + } + const boost::json::value* names = region.as_object().if_contains("names"); + if (names == nullptr || !names->is_array()) { + continue; + } + for (const auto& name_value : names->as_array()) { + if (!name_value.is_object()) { + continue; + } + const auto& name_object = name_value.as_object(); + entries.emplace_back(ForenameEntry{ + .name = + ReadFirstOfStringArray(name_object, "romanized", "localized"), + .gender = ReadRequiredString(name_object, "gender"), + }); + } + } + forenames_by_country.emplace(country_code, std::move(entries)); + } + + cache_.forenames_by_country = std::move(forenames_by_country); + return cache_.forenames_by_country; +} + +const SurnamesByCountryMap& CuratedJsonDataService::LoadSurnamesByCountry() { + if (!cache_.surnames_by_country.empty()) { + return cache_.surnames_by_country; + } + + const boost::json::value root = + ParseJsonFile(filepaths_.surnames_path, "surnames-by-country"); + + if (!root.is_object()) { + throw std::runtime_error( + "Invalid surnames-by-country JSON: root element must be an object " + "keyed by ISO 3166-1 country code"); + } + + SurnamesByCountryMap surnames_by_country; + for (const auto& [country_code, name_entries] : root.as_object()) { + if (!name_entries.is_array()) continue; + + SurnameList surnames; + for (const auto& name_value : name_entries.as_array()) { + if (!name_value.is_object()) { + continue; + } + surnames.emplace_back(ReadFirstOfStringArray(name_value.as_object(), + "romanized", "localized")); + } + surnames_by_country.emplace(country_code, std::move(surnames)); + } + + cache_.surnames_by_country = std::move(surnames_by_country); + return cache_.surnames_by_country; +} diff --git a/tooling/pipeline/src/services/curated_data/mock_curated_data_service.cc b/tooling/pipeline/src/services/curated_data/mock_curated_data_service.cc new file mode 100644 index 0000000..dda4184 --- /dev/null +++ b/tooling/pipeline/src/services/curated_data/mock_curated_data_service.cc @@ -0,0 +1,98 @@ +/** + * @file services/curated_data/mock_curated_data_service.cc + * @brief Fixed in-memory location, persona, and name dataset for mock mode. + */ + +#include "services/curated_data/mock_curated_data_service.h" + +MockCuratedDataService::MockCuratedDataService() + : locations_{ + Location{.city = "Portland", + .state_province = "Oregon", + .iso3166_2 = "US-OR", + .country = "United States", + .iso3166_1 = "US", + .local_languages = {"en"}, + .latitude = 45.5152, + .longitude = -122.6784}, + Location{.city = "Munich", + .state_province = "Bavaria", + .iso3166_2 = "DE-BY", + .country = "Germany", + .iso3166_1 = "DE", + .local_languages = {"de"}, + .latitude = 48.1351, + .longitude = 11.5820}, + Location{.city = "Lyon", + .state_province = "Auvergne-Rhone-Alpes", + .iso3166_2 = "FR-ARA", + .country = "France", + .iso3166_1 = "FR", + .local_languages = {"fr"}, + .latitude = 45.7640, + .longitude = 4.8357}, + Location{.city = "Brussels", + .state_province = "Brussels-Capital", + .iso3166_2 = "BE-BRU", + .country = "Belgium", + .iso3166_1 = "BE", + .local_languages = {"nl", "fr"}, + .latitude = 50.8503, + .longitude = 4.3517}, + }, + personas_{ + UserPersona{.name = "Hophead Explorer", + .description = "Chases hop-forward IPAs and seeks out " + "taprooms with rotating drafts.", + .style_affinities = {"IPA", "Pale Ale"}}, + UserPersona{.name = "Lager Traditionalist", + .description = "Prefers clean, balanced lagers and " + "classic pub styles.", + .style_affinities = {"Lager", "Pilsner"}}, + UserPersona{.name = "Sour Curious", + .description = "Seeks out wild ales, sours, and " + "barrel-aged experiments.", + .style_affinities = {"Sour", "Wild Ale"}}, + }, + forenames_by_country_{ + {"US", + ForenameList{ + ForenameEntry{.name = "James", .gender = "M"}, + ForenameEntry{.name = "Mary", .gender = "F"}, + }}, + {"DE", + ForenameList{ + ForenameEntry{.name = "Lukas", .gender = "M"}, + ForenameEntry{.name = "Anna", .gender = "F"}, + }}, + {"FR", + ForenameList{ + ForenameEntry{.name = "Lucas", .gender = "M"}, + ForenameEntry{.name = "Camille", .gender = "F"}, + }}, + {"BE", + ForenameList{ + ForenameEntry{.name = "Noah", .gender = "M"}, + ForenameEntry{.name = "Emma", .gender = "F"}, + }}, + }, + surnames_by_country_{ + {"US", SurnameList{"Smith", "Johnson"}}, + {"DE", SurnameList{"Muller", "Schmidt"}}, + {"FR", SurnameList{"Martin", "Bernard"}}, + {"BE", SurnameList{"Peeters", "Janssens"}}, + } {} + +const LocationsList& MockCuratedDataService::LoadLocations() { + return locations_; +} + +const PersonasList& MockCuratedDataService::LoadPersonas() { return personas_; } + +const ForenamesByCountryMap& MockCuratedDataService::LoadForenamesByCountry() { + return forenames_by_country_; +} + +const SurnamesByCountryMap& MockCuratedDataService::LoadSurnamesByCountry() { + return surnames_by_country_; +} diff --git a/tooling/pipeline/src/services/enrichment/wikipedia/fetch_extract.cc b/tooling/pipeline/src/services/enrichment/wikipedia/fetch_extract.cc index 0afd490..9bc5305 100644 --- a/tooling/pipeline/src/services/enrichment/wikipedia/fetch_extract.cc +++ b/tooling/pipeline/src/services/enrichment/wikipedia/fetch_extract.cc @@ -1,5 +1,6 @@ /** * @file wikipedia/fetch_extract.cc + * @brief WikipediaEnrichmentService::FetchExtract() implementation. */ #include @@ -20,9 +21,10 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { if (const auto cache_it = this->extract_cache_.find(cache_key); cache_it != this->extract_cache_.end()) { if (logger_) { - logger_->Log({.level = LogLevel::Debug, - .phase = PipelinePhase::UserGeneration, - .message = std::format("Wikipedia: Cache hit for {}!", cache_key)}); + logger_->Log( + {.level = LogLevel::Debug, + .phase = PipelinePhase::Enrichment, + .message = std::format("Wikipedia: Cache hit for {}!", cache_key)}); } return cache_it->second; } @@ -30,7 +32,8 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { const std::string encoded = this->client_->EncodeURL(cache_key); const std::string url = std::format( "https://en.wikipedia.org/w/" - "api.php?action=query&titles={}&prop=extracts&explaintext=1&format=json", + "api.php?action=query&titles={}&prop=extracts&explaintext=1&format=" + "json", encoded); const std::string body = this->client_->Get(url); @@ -45,11 +48,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { if (ec) { if (logger_) { - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = std::format("WikipediaService: JSON parse error for '{}': {}", - std::string(query), ec.message())}); + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "WikipediaService: JSON parse error for '{}': {}", + std::string(query), ec.message())}); } return {}; } @@ -58,12 +61,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { const json::object* obj = doc.if_object(); if (obj == nullptr) { if (logger_) { - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = - std::format("WikipediaService: Expected root object for '{}'", - std::string(query))}); + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "WikipediaService: Expected root object for '{}'", + std::string(query))}); } return {}; } @@ -76,12 +78,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { if ((pages_ptr == nullptr) || !pages_ptr->is_object()) { if (logger_) { - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = - std::format("WikipediaService: Missing query.pages for '{}'", - std::string(query))}); + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "WikipediaService: Missing query.pages for '{}'", + std::string(query))}); } return {}; } @@ -90,11 +91,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { if (pages.empty()) { if (logger_) { - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = std::format("WikipediaService: No pages returned for '{}'", - std::string(query))}); + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "WikipediaService: No pages returned for '{}'", + std::string(query))}); } this->extract_cache_.emplace(cache_key, ""); return {}; @@ -106,12 +107,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { if (!page_val.is_object()) { if (logger_) { - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = - std::format("WikipediaService: Unexpected page format for '{}'", - std::string(query))}); + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "WikipediaService: Unexpected page format for '{}'", + std::string(query))}); } return {}; } @@ -121,10 +121,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { // Handle 404/Missing status if (page.contains("missing")) { if (logger_) { - logger_->Log({.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = std::format("WikipediaService: Page '{}' does not exist", - std::string(query))}); + logger_->Log( + {.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format("WikipediaService: Page '{}' does not exist", + std::string(query))}); } this->extract_cache_.emplace(cache_key, ""); return {}; @@ -134,12 +135,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { if ((extract_ptr == nullptr) || !extract_ptr->is_string()) { if (logger_) { - logger_->Log( - {.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, - .message = - std::format("WikipediaService: No extract string found for '{}'", - std::string(query))}); + logger_->Log({.level = LogLevel::Warn, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "WikipediaService: No extract string found for '{}'", + std::string(query))}); } this->extract_cache_.emplace(cache_key, ""); return {}; @@ -148,10 +148,11 @@ std::string WikipediaEnrichmentService::FetchExtract(std::string_view query) { // 4. Success std::string extract(extract_ptr->as_string()); if (logger_) { - logger_->Log({.level = LogLevel::Info, - .phase = PipelinePhase::UserGeneration, - .message = std::format("WikipediaService: Fetched {} chars for '{}'", - extract.size(), std::string(query))}); + logger_->Log( + {.level = LogLevel::Info, + .phase = PipelinePhase::Enrichment, + .message = std::format("WikipediaService: Fetched {} chars for '{}'", + extract.size(), std::string(query))}); } this->extract_cache_.insert_or_assign(cache_key, extract); diff --git a/tooling/pipeline/src/services/enrichment/wikipedia/get_summary.cc b/tooling/pipeline/src/services/enrichment/wikipedia/get_summary.cc index 1df272f..342f84a 100644 --- a/tooling/pipeline/src/services/enrichment/wikipedia/get_summary.cc +++ b/tooling/pipeline/src/services/enrichment/wikipedia/get_summary.cc @@ -1,6 +1,6 @@ /** * @file wikipedia/get_summary.cc - * @brief WikipediaService::GetLocationContext() implementation. + * @brief WikipediaEnrichmentService::GetLocationContext() implementation. */ #include @@ -16,7 +16,7 @@ std::string WikipediaEnrichmentService::GetLocationContext( if (!this->client_) { if (logger_) { logger_->Log({.level = LogLevel::Warn, - .phase = PipelinePhase::UserGeneration, + .phase = PipelinePhase::Enrichment, .message = "Wikipedia client is nullptr."}); } return {}; @@ -24,13 +24,6 @@ std::string WikipediaEnrichmentService::GetLocationContext( std::string result; - // std::string region_query(loc.city); - // if (!loc.country.empty()) { - // region_query += loc.state_province, - // region_query += ", "; - // region_query += loc.country; - // } - constexpr std::string_view brewing_query = "brewing"; const std::string location_query = std::format("{}, {}", loc.city, loc.iso3166_2); @@ -51,9 +44,10 @@ std::string WikipediaEnrichmentService::GetLocationContext( append_extract(FetchExtract(beer_query)); if (logger_) { logger_->Log({.level = LogLevel::Info, - .phase = PipelinePhase::UserGeneration, - .message = std::format("Done fetching for {}. Sleeping for 10 seconds.", - location_query)}); + .phase = PipelinePhase::Enrichment, + .message = std::format( + "Done fetching for {}. Sleeping for 10 seconds.", + location_query)}); } std::this_thread::sleep_for(10s); @@ -61,9 +55,9 @@ std::string WikipediaEnrichmentService::GetLocationContext( if (logger_) { logger_->Log( {.level = LogLevel::Debug, - .phase = PipelinePhase::UserGeneration, + .phase = PipelinePhase::Enrichment, .message = std::format("WikipediaService lookup failed for '{}': {}", - location_query, e.what())}); + location_query, e.what())}); } } return result; diff --git a/tooling/pipeline/src/services/enrichment/wikipedia/wikipedia_service.cc b/tooling/pipeline/src/services/enrichment/wikipedia/wikipedia_service.cc index df32618..e5f3f54 100644 --- a/tooling/pipeline/src/services/enrichment/wikipedia/wikipedia_service.cc +++ b/tooling/pipeline/src/services/enrichment/wikipedia/wikipedia_service.cc @@ -1,6 +1,6 @@ /** * @file services/wikipedia/wikipedia_service.cc - * @brief WikipediaService constructor implementation. + * @brief WikipediaEnrichmentService constructor implementation. */ #include "services/enrichment/wikipedia_service.h" diff --git a/tooling/pipeline/src/services/logging/log_dispatcher.cc b/tooling/pipeline/src/services/logging/log_dispatcher.cc index 3655047..f9e8308 100644 --- a/tooling/pipeline/src/services/logging/log_dispatcher.cc +++ b/tooling/pipeline/src/services/logging/log_dispatcher.cc @@ -19,6 +19,8 @@ namespace { switch (phase) { case PipelinePhase::Startup: return "Startup"; + case PipelinePhase::Enrichment: + return "Enrichment"; case PipelinePhase::UserGeneration: return "User Generation"; case PipelinePhase::BreweryAndBeerGeneration: diff --git a/tooling/pipeline/src/services/prompt_directory.cc b/tooling/pipeline/src/services/prompt_directory.cc index ded77b4..b2ad370 100644 --- a/tooling/pipeline/src/services/prompt_directory.cc +++ b/tooling/pipeline/src/services/prompt_directory.cc @@ -44,8 +44,8 @@ PromptDirectory::PromptDirectory(const std::filesystem::path& prompt_dir, // Scenario 4: directory must be readable (probe with directory_iterator). std::filesystem::directory_iterator probe(prompt_dir_, ec); if (ec) { - throw std::runtime_error( - std::format("PromptDirectory: prompt directory is not readable: {} ({})", + throw std::runtime_error(std::format( + "PromptDirectory: prompt directory is not readable: {} ({})", prompt_dir_.string(), ec.message())); } @@ -76,7 +76,7 @@ std::string PromptDirectory::Load(std::string_view key) { if (!file.is_open()) { throw std::runtime_error( std::format("PromptDirectory: prompt file not found for key '{}': {}", - key_str, file_path.string())); + key_str, file_path.string())); } std::string content((std::istreambuf_iterator(file)), @@ -84,15 +84,18 @@ std::string PromptDirectory::Load(std::string_view key) { file.close(); if (content.empty()) { - throw std::runtime_error(std::format("PromptDirectory: prompt file for key '{}' is empty: {}", - key_str, file_path.string())); + throw std::runtime_error( + std::format("PromptDirectory: prompt file for key '{}' is empty: {}", + key_str, file_path.string())); } if (logger_) { - logger_->Log({.level = LogLevel::Info, - .phase = PipelinePhase::Startup, - .message = std::format("[PromptDirectory] Loaded prompt '{}' from '{}' ({} chars)", - key_str, file_path.string(), content.size())}); + logger_->Log( + {.level = LogLevel::Info, + .phase = PipelinePhase::Startup, + .message = std::format( + "[PromptDirectory] Loaded prompt '{}' from '{}' ({} chars)", + key_str, file_path.string(), content.size())}); } cache_.emplace(key_str, content); diff --git a/tooling/pipeline/src/services/sqlite/finalize.cc b/tooling/pipeline/src/services/sqlite/finalize.cc index e891b31..c4e4ff6 100644 --- a/tooling/pipeline/src/services/sqlite/finalize.cc +++ b/tooling/pipeline/src/services/sqlite/finalize.cc @@ -14,6 +14,7 @@ void SqliteExportService::Finalize() { } try { + insert_user_stmt_.reset(); insert_brewery_stmt_.reset(); insert_location_stmt_.reset(); if (transaction_open_) { diff --git a/tooling/pipeline/src/services/sqlite/helpers/sqlite_statement_helpers.cc b/tooling/pipeline/src/services/sqlite/helpers/sqlite_statement_helpers.cc index 15ef25e..8b2f75f 100644 --- a/tooling/pipeline/src/services/sqlite/helpers/sqlite_statement_helpers.cc +++ b/tooling/pipeline/src/services/sqlite/helpers/sqlite_statement_helpers.cc @@ -33,7 +33,7 @@ void ResetStatement(SqliteStatementHandle& statement) { } void Bind(const SqliteStatementHandle& statement, - const BindParam& param) { + const BoundParam& param) { const auto byte_count = param.value.size(); if (byte_count > static_cast(std::numeric_limits::max())) { ThrowSqliteError(sqlite3_db_handle(statement.get()), param.action); @@ -60,7 +60,7 @@ void Bind(const SqliteStatementHandle& statement, } void Bind(const SqliteStatementHandle& statement, - const BindParam& param) { + const BoundParam& param) { if (sqlite3_bind_double(statement.get(), param.index, param.value) != SQLITE_OK) { ThrowSqliteError(sqlite3_db_handle(statement.get()), param.action); @@ -68,7 +68,7 @@ void Bind(const SqliteStatementHandle& statement, } void Bind(const SqliteStatementHandle& statement, - const BindParam& param) { + const BoundParam& param) { if (sqlite3_bind_int64(statement.get(), param.index, param.value) != SQLITE_OK) { ThrowSqliteError(sqlite3_db_handle(statement.get()), param.action); diff --git a/tooling/pipeline/src/services/sqlite/initialize.cc b/tooling/pipeline/src/services/sqlite/initialize.cc index b7da162..4c7def2 100644 --- a/tooling/pipeline/src/services/sqlite/initialize.cc +++ b/tooling/pipeline/src/services/sqlite/initialize.cc @@ -18,9 +18,9 @@ std::filesystem::path SqliteExportService::BuildDatabasePath() const { std::filesystem::path candidate = output_path_ / base_filename; for (int suffix = 1; std::filesystem::exists(candidate); ++suffix) { - candidate = output_path_ / - std::filesystem::path(std::format("biergarten_seed_{}-{}.sqlite", - run_timestamp_utc_, suffix)); + candidate = output_path_ / std::filesystem::path( + std::format("biergarten_seed_{}-{}.sqlite", + run_timestamp_utc_, suffix)); } return candidate; @@ -33,6 +33,9 @@ void SqliteExportService::InitializeSchema() const { sqlite_export_service_internal::ExecSql( db_handle_, sqlite_export_service_internal::kCreateBreweriesTableSql, "Failed to create SQLite breweries table"); + sqlite_export_service_internal::ExecSql( + db_handle_, sqlite_export_service_internal::kCreateUsersTableSql, + "Failed to create SQLite users table"); } void SqliteExportService::PrepareStatements() { @@ -42,6 +45,9 @@ void SqliteExportService::PrepareStatements() { insert_brewery_stmt_ = sqlite_export_service_internal::PrepareStatement( db_handle_, sqlite_export_service_internal::kInsertBrewerySql, "Failed to prepare SQLite brewery insert statement"); + insert_user_stmt_ = sqlite_export_service_internal::PrepareStatement( + db_handle_, sqlite_export_service_internal::kInsertUserSql, + "Failed to prepare SQLite user insert statement"); } void SqliteExportService::RollbackAndCloseNoThrow() noexcept { @@ -54,6 +60,7 @@ void SqliteExportService::RollbackAndCloseNoThrow() noexcept { transaction_open_ = false; } + insert_user_stmt_.reset(); insert_brewery_stmt_.reset(); insert_location_stmt_.reset(); db_handle_.reset(); diff --git a/tooling/pipeline/src/services/sqlite/process_record.cc b/tooling/pipeline/src/services/sqlite/process_record.cc index a46ff82..9acc0fc 100644 --- a/tooling/pipeline/src/services/sqlite/process_record.cc +++ b/tooling/pipeline/src/services/sqlite/process_record.cc @@ -1,6 +1,7 @@ /** * @file services/sqlite/process_record.cc - * @brief SqliteExportService::ProcessRecord() implementation. + * @brief SqliteExportService::ProcessRecord() implementation + * and the shared location-resolution helper. */ #include @@ -29,111 +30,117 @@ std::string SqliteExportService::BuildLocationKey(const Location& location) { return key_stream.str(); } -uint64_t SqliteExportService::ProcessRecord(const GeneratedBrewery& brewery) { +sqlite3_int64 SqliteExportService::ResolveLocationId(const Location& location) { + const std::string location_key = BuildLocationKey(location); + const auto cached_location = location_cache_.find(location_key); + if (cached_location != location_cache_.end()) { + return cached_location->second; + } + + const std::string local_languages_json = + sqlite_export_service_internal::SerializeVector(location.local_languages); + + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kLocationCityBindIndex, + .value = location.city, + .action = "Failed to bind SQLite location city"}); + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = + sqlite_export_service_internal::kLocationStateProvinceBindIndex, + .value = location.state_province, + .action = "Failed to bind SQLite location state/province"}); + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kLocationIso31662BindIndex, + .value = location.iso3166_2, + .action = "Failed to bind SQLite location ISO 3166-2 code"}); + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kLocationCountryBindIndex, + .value = location.country, + .action = "Failed to bind SQLite location country"}); + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kLocationIso31661BindIndex, + .value = location.iso3166_1, + .action = "Failed to bind SQLite location ISO 3166-1 code"}); + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kLocationLanguagesBindIndex, + .value = local_languages_json, + .action = "Failed to bind SQLite location languages"}); + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kLocationLatitudeBindIndex, + .value = location.latitude, + .action = "Failed to bind SQLite location latitude"}); + sqlite_export_service_internal::Bind( + insert_location_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kLocationLongitudeBindIndex, + .value = location.longitude, + .action = "Failed to bind SQLite location longitude"}); + + sqlite_export_service_internal::StepStatement( + db_handle_, insert_location_stmt_, + "Failed to insert SQLite location row"); + + const sqlite3_int64 location_id = + sqlite_export_service_internal::LastInsertRowId(db_handle_); + location_cache_.emplace(location_key, location_id); + sqlite_export_service_internal::ResetStatement(insert_location_stmt_); + + return location_id; +} + +uint64_t SqliteExportService::ProcessRecord(const BreweryRecord& brewery) { if (db_handle_ == nullptr || !transaction_open_) { throw std::runtime_error("SQLite export service is not initialized"); } - const std::string location_key = BuildLocationKey(brewery.location); - const auto cached_location = location_cache_.find(location_key); - sqlite3_int64 location_id = 0; - - if (cached_location != location_cache_.end()) { - location_id = cached_location->second; - } else { - const std::string local_languages_json = - sqlite_export_service_internal::SerializeVector( - brewery.location.local_languages); - - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = sqlite_export_service_internal::kLocationCityBindIndex, - .value = brewery.location.city, - .action = "Failed to bind SQLite location city"}); - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = - sqlite_export_service_internal::kLocationStateProvinceBindIndex, - .value = brewery.location.state_province, - .action = "Failed to bind SQLite location state/province"}); - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = sqlite_export_service_internal::kLocationIso31662BindIndex, - .value = brewery.location.iso3166_2, - .action = "Failed to bind SQLite location ISO 3166-2 code"}); - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = sqlite_export_service_internal::kLocationCountryBindIndex, - .value = brewery.location.country, - .action = "Failed to bind SQLite location country"}); - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = sqlite_export_service_internal::kLocationIso31661BindIndex, - .value = brewery.location.iso3166_1, - .action = "Failed to bind SQLite location ISO 3166-1 code"}); - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = - sqlite_export_service_internal::kLocationLanguagesBindIndex, - .value = local_languages_json, - .action = "Failed to bind SQLite location languages"}); - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = sqlite_export_service_internal::kLocationLatitudeBindIndex, - .value = brewery.location.latitude, - .action = "Failed to bind SQLite location latitude"}); - sqlite_export_service_internal::Bind( - insert_location_stmt_, - sqlite_export_service_internal::BindParam{ - .index = - sqlite_export_service_internal::kLocationLongitudeBindIndex, - .value = brewery.location.longitude, - .action = "Failed to bind SQLite location longitude"}); - - sqlite_export_service_internal::StepStatement( - db_handle_, insert_location_stmt_, - "Failed to insert SQLite location row"); - - location_id = sqlite_export_service_internal::LastInsertRowId(db_handle_); - location_cache_.emplace(location_key, location_id); - sqlite_export_service_internal::ResetStatement(insert_location_stmt_); - } + const sqlite3_int64 location_id = ResolveLocationId(brewery.location); sqlite_export_service_internal::Bind( insert_brewery_stmt_, - sqlite_export_service_internal::BindParam{ + sqlite_export_service_internal::BoundParam{ .index = sqlite_export_service_internal::kBreweryLocationIdBindIndex, .value = location_id, .action = "Failed to bind SQLite brewery location id"}); + sqlite_export_service_internal::Bind( insert_brewery_stmt_, - sqlite_export_service_internal::BindParam{ + sqlite_export_service_internal::BoundParam{ .index = sqlite_export_service_internal::kBreweryEnglishNameBindIndex, .value = brewery.brewery.name_en, .action = "Failed to bind SQLite brewery English name"}); + sqlite_export_service_internal::Bind( insert_brewery_stmt_, - sqlite_export_service_internal::BindParam{ + sqlite_export_service_internal::BoundParam{ .index = sqlite_export_service_internal:: kBreweryEnglishDescriptionBindIndex, .value = brewery.brewery.description_en, .action = "Failed to bind SQLite brewery English description"}); + sqlite_export_service_internal::Bind( insert_brewery_stmt_, - sqlite_export_service_internal::BindParam{ + sqlite_export_service_internal::BoundParam{ .index = sqlite_export_service_internal::kBreweryLocalNameBindIndex, .value = brewery.brewery.name_local, .action = "Failed to bind SQLite brewery local name"}); + sqlite_export_service_internal::Bind( insert_brewery_stmt_, - sqlite_export_service_internal::BindParam{ + sqlite_export_service_internal::BoundParam{ .index = sqlite_export_service_internal::kBreweryLocalDescriptionBindIndex, .value = brewery.brewery.description_local, diff --git a/tooling/pipeline/src/services/sqlite/process_user_record.cc b/tooling/pipeline/src/services/sqlite/process_user_record.cc new file mode 100644 index 0000000..34bac07 --- /dev/null +++ b/tooling/pipeline/src/services/sqlite/process_user_record.cc @@ -0,0 +1,79 @@ +/** + * @file services/sqlite/process_user_record.cc + * @brief SqliteExportService::ProcessRecord(UserRecord) implementation. + */ + +#include + +#include "services/database/sqlite_export_service.h" +#include "services/database/sqlite_export_service_helpers.h" + +uint64_t SqliteExportService::ProcessRecord(const UserRecord& user) { + if (db_handle_ == nullptr || !transaction_open_) { + throw std::runtime_error("SQLite export service is not initialized"); + } + + const sqlite3_int64 location_id = ResolveLocationId(user.location); + + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserLocationIdBindIndex, + .value = location_id, + .action = "Failed to bind SQLite user location id"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserFirstNameBindIndex, + .value = user.user.first_name, + .action = "Failed to bind SQLite user first name"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserLastNameBindIndex, + .value = user.user.last_name, + .action = "Failed to bind SQLite user last name"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserGenderBindIndex, + .value = user.user.gender, + .action = "Failed to bind SQLite user gender"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserUsernameBindIndex, + .value = user.user.username, + .action = "Failed to bind SQLite user username"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserBioBindIndex, + .value = user.user.bio, + .action = "Failed to bind SQLite user bio"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserActivityWeightBindIndex, + .value = static_cast(user.user.activity_weight), + .action = "Failed to bind SQLite user activity weight"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserEmailBindIndex, + .value = user.email, + .action = "Failed to bind SQLite user email"}); + sqlite_export_service_internal::Bind( + insert_user_stmt_, + sqlite_export_service_internal::BoundParam{ + .index = sqlite_export_service_internal::kUserDateOfBirthBindIndex, + .value = user.date_of_birth, + .action = "Failed to bind SQLite user date of birth"}); + + sqlite_export_service_internal::StepStatement( + db_handle_, insert_user_stmt_, "Failed to insert SQLite user row"); + + sqlite_export_service_internal::ResetStatement(insert_user_stmt_); + + return sqlite_export_service_internal::LastInsertRowId(db_handle_); +} diff --git a/tooling/pipeline/src/web_client/http_web_client.cc b/tooling/pipeline/src/web_client/http_web_client.cc index dabd669..b0910ff 100644 --- a/tooling/pipeline/src/web_client/http_web_client.cc +++ b/tooling/pipeline/src/web_client/http_web_client.cc @@ -48,21 +48,20 @@ std::string HttpWebClient::Get(const std::string& url) { const httplib::Result result = client.Get(path); if (!result) { - throw std::runtime_error(std::format( - "[HttpWebClient] Request failed for URL: {} — {}", url, - httplib::to_string(result.error()))); + throw std::runtime_error( + std::format("[HttpWebClient] Request failed for URL: {} — {}", url, + httplib::to_string(result.error()))); } if (result->status < kSuccessMin || result->status >= kSuccessMax) { if (logger_) { - logger_->Log( - {.level = LogLevel::Error, - .phase = PipelinePhase::UserGeneration, - .message = - std::format("[HttpWebClient] Request failed for URL: {}", url)}); + logger_->Log({.level = LogLevel::Error, + .phase = PipelinePhase::Enrichment, + .message = std::format( + "[HttpWebClient] Request failed for URL: {}", url)}); } throw std::runtime_error(std::format("[HttpWebClient] HTTP {} for URL: {}", - result->status, url)); + result->status, url)); } return result->body; diff --git a/tooling/pipeline/surnames-by-country.json b/tooling/pipeline/surnames-by-country.json new file mode 100644 index 0000000..78e9a27 --- /dev/null +++ b/tooling/pipeline/surnames-by-country.json @@ -0,0 +1,25438 @@ +{ + "AM": [ + { + "id": "AM-1", + "rank": 1, + "localized": [ + "Գրիգորյան" + ], + "romanized": [ + "Grigoryan" + ], + "count": null + }, + { + "id": "AM-2", + "rank": 2, + "localized": [ + "Հարությունյան" + ], + "romanized": [ + "Harutyunyan" + ], + "count": null + }, + { + "id": "AM-3", + "rank": 3, + "localized": [ + "Սարգսյան" + ], + "romanized": [ + "Sargsyan" + ], + "count": null + }, + { + "id": "AM-4", + "rank": 4, + "localized": [ + "Հովհաննիսյան" + ], + "romanized": [ + "Hovhannisyan" + ], + "count": null + }, + { + "id": "AM-5", + "rank": 5, + "localized": [ + "Խաչատրյան" + ], + "romanized": [ + "Khachatryan" + ], + "count": null + }, + { + "id": "AM-6", + "rank": 6, + "localized": [ + "Հակոբյան" + ], + "romanized": [ + "Hakobyan" + ], + "count": null + }, + { + "id": "AM-7", + "rank": 7, + "localized": [ + "Պետրոսյան" + ], + "romanized": [ + "Petrosyan" + ], + "count": null + }, + { + "id": "AM-8", + "rank": 8, + "localized": [ + "Վարդանյան" + ], + "romanized": [ + "Vardanyan" + ], + "count": null + }, + { + "id": "AM-9", + "rank": 9, + "localized": [ + "Գեւորգյան" + ], + "romanized": [ + "Gevorgyan" + ], + "count": null + }, + { + "id": "AM-10", + "rank": 10, + "localized": [ + "Կարապետյան" + ], + "romanized": [ + "Karapetyan" + ], + "count": null + }, + { + "id": "AM-11", + "rank": 11, + "localized": [ + "Մկրտչյան" + ], + "romanized": [ + "Mkrtchyan" + ], + "count": null + }, + { + "id": "AM-12", + "rank": 12, + "localized": [ + "Ղազարյան" + ], + "romanized": [ + "Ghazaryan" + ], + "count": null + }, + { + "id": "AM-13", + "rank": 13, + "localized": [ + "Մանուկյան" + ], + "romanized": [ + "Manukyan" + ], + "count": null + }, + { + "id": "AM-14", + "rank": 14, + "localized": [ + "Ավետիսյան" + ], + "romanized": [ + "Avetisyan" + ], + "count": null + }, + { + "id": "AM-15", + "rank": 15, + "localized": [ + "Պողոսյան" + ], + "romanized": [ + "Poghosyan" + ], + "count": null + }, + { + "id": "AM-16", + "rank": 16, + "localized": [ + "Մարտիրոսյան" + ], + "romanized": [ + "Martirosyan" + ], + "count": null + }, + { + "id": "AM-17", + "rank": 17, + "localized": [ + "Սահակյան" + ], + "romanized": [ + "Sahakyan" + ], + "count": null + }, + { + "id": "AM-18", + "rank": 18, + "localized": [ + "Առաքելյան" + ], + "romanized": [ + "Arakelyan" + ], + "count": null + }, + { + "id": "AM-19", + "rank": 19, + "localized": [ + "Մարգարյան" + ], + "romanized": [ + "Margaryan" + ], + "count": null + }, + { + "id": "AM-20", + "rank": 20, + "localized": [ + "Դավթյան" + ], + "romanized": [ + "Davtyan" + ], + "count": null + } + ], + "AZ": [ + { + "id": "AZ-1", + "rank": 1, + "localized": [ + "Məmmədov" + ], + "romanized": [ + "Mammadov" + ], + "count": null + }, + { + "id": "AZ-2", + "rank": 2, + "localized": [ + "Əliyev" + ], + "romanized": [ + "Aliyev" + ], + "count": null + }, + { + "id": "AZ-3", + "rank": 3, + "localized": [ + "Hüseynov" + ], + "romanized": [ + "Huseynov" + ], + "count": null + }, + { + "id": "AZ-4", + "rank": 4, + "localized": [ + "Həsənov" + ], + "romanized": [ + "Hasanov" + ], + "count": null + }, + { + "id": "AZ-5", + "rank": 5, + "localized": [ + "Quliyev" + ], + "romanized": [ + "Guliyev" + ], + "count": null + }, + { + "id": "AZ-6", + "rank": 6, + "localized": [ + "İsmayılov" + ], + "romanized": [ + "Ismayilov" + ], + "count": null + }, + { + "id": "AZ-7", + "rank": 7, + "localized": [ + "Əhmədov" + ], + "romanized": [ + "Ahmadov" + ], + "count": null + }, + { + "id": "AZ-8", + "rank": 8, + "localized": [ + "Abdullayev" + ], + "romanized": [ + "Abdullayev" + ], + "count": null + }, + { + "id": "AZ-9", + "rank": 9, + "localized": [ + "Abbasov" + ], + "romanized": [ + "Abbasov" + ], + "count": null + }, + { + "id": "AZ-10", + "rank": 10, + "localized": [ + "Cəfərov" + ], + "romanized": [ + "Jafarov" + ], + "count": null + } + ], + "BD": [ + { + "id": "BD-1", + "rank": 1, + "localized": [ + "আক্তার" + ], + "romanized": [ + "Akter" + ], + "count": null + }, + { + "id": "BD-2", + "rank": 2, + "localized": [ + "ইসলাম" + ], + "romanized": [ + "Islam" + ], + "count": null + }, + { + "id": "BD-3", + "rank": 3, + "localized": [ + "খাতুন" + ], + "romanized": [ + "Khatun" + ], + "count": null + }, + { + "id": "BD-4", + "rank": 4, + "localized": [ + "হোসেন" + ], + "romanized": [ + "Hossain" + ], + "count": null + }, + { + "id": "BD-5", + "rank": 5, + "localized": [ + "রহমান" + ], + "romanized": [ + "Rahman" + ], + "count": null + }, + { + "id": "BD-6", + "rank": 6, + "localized": [ + "আহম্মেদ" + ], + "romanized": [ + "Ahmed" + ], + "count": null + } + ], + "KH": [ + { + "id": "KH-1", + "rank": 1, + "localized": [ + "កូយ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-2", + "rank": 2, + "localized": [ + "កឹម" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-3", + "rank": 3, + "localized": [ + "កែប" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-4", + "rank": 4, + "localized": [ + "កែវ" + ], + "romanized": [ + "Keo" + ], + "count": null + }, + { + "id": "KH-5", + "rank": 5, + "localized": [ + "ខាត់" + ], + "romanized": [ + "Khat" + ], + "count": null + }, + { + "id": "KH-6", + "rank": 6, + "localized": [ + "ខាយ" + ], + "romanized": [ + "Khay" + ], + "count": null + }, + { + "id": "KH-7", + "rank": 7, + "localized": [ + "ខៀវ" + ], + "romanized": [ + "Khiev" + ], + "count": null + }, + { + "id": "KH-8", + "rank": 8, + "localized": [ + "ខ្លូត" + ], + "romanized": [ + "Khlot" + ], + "count": null + }, + { + "id": "KH-9", + "rank": 9, + "localized": [ + "គឹម" + ], + "romanized": [ + "Kim" + ], + "count": null + }, + { + "id": "KH-10", + "rank": 10, + "localized": [ + "គួច" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-11", + "rank": 11, + "localized": [ + "កាំង" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-12", + "rank": 12, + "localized": [ + "ឃាង" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-13", + "rank": 13, + "localized": [ + "ឃិន" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-14", + "rank": 14, + "localized": [ + "ឃីម" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-15", + "rank": 15, + "localized": [ + "ចន្ទ" + ], + "romanized": [ + "Chhan" + ], + "count": null + }, + { + "id": "KH-16", + "rank": 16, + "localized": [ + "ចាន់" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-17", + "rank": 17, + "localized": [ + "ចាប" + ], + "romanized": [ + "Bird" + ], + "count": null + }, + { + "id": "KH-18", + "rank": 18, + "localized": [ + "ចេង" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-19", + "rank": 19, + "localized": [ + "ចេន" + ], + "romanized": [ + "Chen" + ], + "count": null + }, + { + "id": "KH-20", + "rank": 20, + "localized": [ + "ឆន" + ], + "romanized": [ + "Chhorn" + ], + "count": null + }, + { + "id": "KH-21", + "rank": 21, + "localized": [ + "ឆាយ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-22", + "rank": 22, + "localized": [ + "ជា" + ], + "romanized": [ + "Chea" + ], + "count": null + }, + { + "id": "KH-23", + "rank": 23, + "localized": [ + "ជាម" + ], + "romanized": [ + "Cheam" + ], + "count": null + }, + { + "id": "KH-24", + "rank": 24, + "localized": [ + "ជិន" + ], + "romanized": [ + "Chin" + ], + "count": null + }, + { + "id": "KH-25", + "rank": 25, + "localized": [ + "ជឹម" + ], + "romanized": [ + "Chim" + ], + "count": null + }, + { + "id": "KH-26", + "rank": 26, + "localized": [ + "ជ័យ" + ], + "romanized": [ + "Chey" + ], + "count": null + }, + { + "id": "KH-27", + "rank": 27, + "localized": [ + "ឈិត" + ], + "romanized": [ + "Chhet" + ], + "count": null + }, + { + "id": "KH-28", + "rank": 28, + "localized": [ + "ឈិន" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-29", + "rank": 29, + "localized": [ + "ឈឹម" + ], + "romanized": [ + "Chhim" + ], + "count": null + }, + { + "id": "KH-30", + "rank": 30, + "localized": [ + "ញឹក" + ], + "romanized": [ + "Nhek" + ], + "count": null + }, + { + "id": "KH-31", + "rank": 31, + "localized": [ + "ដួង" + ], + "romanized": [ + "Duong" + ], + "count": null + }, + { + "id": "KH-32", + "rank": 32, + "localized": [ + "ឌិត" + ], + "romanized": [ + "Dith" + ], + "count": null + }, + { + "id": "KH-33", + "rank": 33, + "localized": [ + "ឌិន" + ], + "romanized": [ + "Din" + ], + "count": null + }, + { + "id": "KH-34", + "rank": 34, + "localized": [ + "ឌី" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-35", + "rank": 35, + "localized": [ + "ឌុល" + ], + "romanized": [ + "Dul" + ], + "count": null + }, + { + "id": "KH-36", + "rank": 36, + "localized": [ + "ឌួង" + ], + "romanized": [ + "Duong" + ], + "count": null + }, + { + "id": "KH-37", + "rank": 37, + "localized": [ + "តក់" + ], + "romanized": [ + "Droplets" + ], + "count": null + }, + { + "id": "KH-38", + "rank": 38, + "localized": [ + "តាង" + ], + "romanized": [ + "Tang" + ], + "count": null + }, + { + "id": "KH-39", + "rank": 39, + "localized": [ + "តាត" + ], + "romanized": [ + "Tat" + ], + "count": null + }, + { + "id": "KH-40", + "rank": 40, + "localized": [ + "តូច" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-41", + "rank": 41, + "localized": [ + "តាំង" + ], + "romanized": [ + "Taing" + ], + "count": null + }, + { + "id": "KH-42", + "rank": 42, + "localized": [ + "ថន" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-43", + "rank": 43, + "localized": [ + "ទាវ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-44", + "rank": 44, + "localized": [ + "ទី" + ], + "romanized": [ + "Ty" + ], + "count": null + }, + { + "id": "KH-45", + "rank": 45, + "localized": [ + "ទុំ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-46", + "rank": 46, + "localized": [ + "ទ្រី" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-47", + "rank": 47, + "localized": [ + "ទេព" + ], + "romanized": [ + "Tep" + ], + "count": null + }, + { + "id": "KH-48", + "rank": 48, + "localized": [ + "ធី" + ], + "romanized": [ + "Thy" + ], + "count": null + }, + { + "id": "KH-49", + "rank": 49, + "localized": [ + "នី" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-50", + "rank": 50, + "localized": [ + "ប្រាក់" + ], + "romanized": [ + "Khmer" + ], + "count": null + }, + { + "id": "KH-51", + "rank": 51, + "localized": [ + "ប៉ាង" + ], + "romanized": [ + "Pang" + ], + "count": null + }, + { + "id": "KH-52", + "rank": 52, + "localized": [ + "ប៉ុក" + ], + "romanized": [ + "Pok" + ], + "count": null + }, + { + "id": "KH-53", + "rank": 53, + "localized": [ + "ប៊ុន" + ], + "romanized": [ + "Bun" + ], + "count": null + }, + { + "id": "KH-54", + "rank": 54, + "localized": [ + "ប៉ែន" + ], + "romanized": [ + "Pen" + ], + "count": null + }, + { + "id": "KH-55", + "rank": 55, + "localized": [ + "ផាន" + ], + "romanized": [ + "Phan" + ], + "count": null + }, + { + "id": "KH-56", + "rank": 56, + "localized": [ + "ពិជ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-57", + "rank": 57, + "localized": [ + "ពេជ្រ" + ], + "romanized": [ + "means" + ], + "count": null + }, + { + "id": "KH-58", + "rank": 58, + "localized": [ + "ភី" + ], + "romanized": [ + "Phy" + ], + "count": null + }, + { + "id": "KH-59", + "rank": 59, + "localized": [ + "មា" + ], + "romanized": [ + "Ma" + ], + "count": null + }, + { + "id": "KH-60", + "rank": 60, + "localized": [ + "មាន" + ], + "romanized": [ + "Mean" + ], + "count": null + }, + { + "id": "KH-61", + "rank": 61, + "localized": [ + "មាស" + ], + "romanized": [ + "Meas" + ], + "count": null + }, + { + "id": "KH-62", + "rank": 62, + "localized": [ + "មួយ" + ], + "romanized": [ + "Muy" + ], + "count": null + }, + { + "id": "KH-63", + "rank": 63, + "localized": [ + "មូល" + ], + "romanized": [ + "Mul" + ], + "count": null + }, + { + "id": "KH-64", + "rank": 64, + "localized": [ + "មេង" + ], + "romanized": [ + "Meng" + ], + "count": null + }, + { + "id": "KH-65", + "rank": 65, + "localized": [ + "ម៉ៅ" + ], + "romanized": [ + "Mao" + ], + "count": null + }, + { + "id": "KH-66", + "rank": 66, + "localized": [ + "យស់" + ], + "romanized": [ + "Yos" + ], + "count": null + }, + { + "id": "KH-67", + "rank": 67, + "localized": [ + "យុន" + ], + "romanized": [ + "Yun" + ], + "count": null + }, + { + "id": "KH-68", + "rank": 68, + "localized": [ + "យូ" + ], + "romanized": [ + "Yu" + ], + "count": null + }, + { + "id": "KH-69", + "rank": 69, + "localized": [ + "រស់" + ], + "romanized": [ + "Ros" + ], + "count": null + }, + { + "id": "KH-70", + "rank": 70, + "localized": [ + "រួយ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-71", + "rank": 71, + "localized": [ + "លិម" + ], + "romanized": [ + "Lim" + ], + "count": null + }, + { + "id": "KH-72", + "rank": 72, + "localized": [ + "លី" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-73", + "rank": 73, + "localized": [ + "លីវ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-74", + "rank": 74, + "localized": [ + "លឹម" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-75", + "rank": 75, + "localized": [ + "វ៉ាង" + ], + "romanized": [ + "Vang" + ], + "count": null + }, + { + "id": "KH-76", + "rank": 76, + "localized": [ + "វង្ស" + ], + "romanized": [ + "Vong" + ], + "count": null + }, + { + "id": "KH-77", + "rank": 77, + "localized": [ + "ស" + ], + "romanized": [ + "Sor" + ], + "count": null + }, + { + "id": "KH-78", + "rank": 78, + "localized": [ + "សង" + ], + "romanized": [ + "Sang" + ], + "count": null + }, + { + "id": "KH-79", + "rank": 79, + "localized": [ + "សម" + ], + "romanized": [ + "Sam" + ], + "count": null + }, + { + "id": "KH-80", + "rank": 80, + "localized": [ + "សរ" + ], + "romanized": [ + "Sor" + ], + "count": null + }, + { + "id": "KH-81", + "rank": 81, + "localized": [ + "សាង" + ], + "romanized": [ + "Sang" + ], + "count": null + }, + { + "id": "KH-82", + "rank": 82, + "localized": [ + "សាត" + ], + "romanized": [ + "Sat" + ], + "count": null + }, + { + "id": "KH-83", + "rank": 83, + "localized": [ + "សាន" + ], + "romanized": [ + "San" + ], + "count": null + }, + { + "id": "KH-84", + "rank": 84, + "localized": [ + "សាយ" + ], + "romanized": [ + "Say" + ], + "count": null + }, + { + "id": "KH-85", + "rank": 85, + "localized": [ + "សិន" + ], + "romanized": [ + "Sin" + ], + "count": null + }, + { + "id": "KH-86", + "rank": 86, + "localized": [ + "សឺន" + ], + "romanized": [ + "Son" + ], + "count": null + }, + { + "id": "KH-87", + "rank": 87, + "localized": [ + "សុខ" + ], + "romanized": [ + "Sok" + ], + "count": null + }, + { + "id": "KH-88", + "rank": 88, + "localized": [ + "សុង" + ], + "romanized": [ + "Song" + ], + "count": null + }, + { + "id": "KH-89", + "rank": 89, + "localized": [ + "សុន" + ], + "romanized": [ + "Son" + ], + "count": null + }, + { + "id": "KH-90", + "rank": 90, + "localized": [ + "ស៊ុយ" + ], + "romanized": [ + "Suy" + ], + "count": null + }, + { + "id": "KH-91", + "rank": 91, + "localized": [ + "សូ" + ], + "romanized": [ + "So" + ], + "count": null + }, + { + "id": "KH-92", + "rank": 92, + "localized": [ + "ស៊ូ" + ], + "romanized": [ + "Su" + ], + "count": null + }, + { + "id": "KH-93", + "rank": 93, + "localized": [ + "សួន" + ], + "romanized": [ + "Soun" + ], + "count": null + }, + { + "id": "KH-94", + "rank": 94, + "localized": [ + "សឿង" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-95", + "rank": 95, + "localized": [ + "សៀង" + ], + "romanized": [ + "Sieng" + ], + "count": null + }, + { + "id": "KH-96", + "rank": 96, + "localized": [ + "សេង" + ], + "romanized": [ + "Seng" + ], + "count": null + }, + { + "id": "KH-97", + "rank": 97, + "localized": [ + "សេន" + ], + "romanized": [ + "Sen" + ], + "count": null + }, + { + "id": "KH-98", + "rank": 98, + "localized": [ + "សោម" + ], + "romanized": [ + "Som" + ], + "count": null + }, + { + "id": "KH-99", + "rank": 99, + "localized": [ + "សៅ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-100", + "rank": 100, + "localized": [ + "ហាក៉" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-101", + "rank": 101, + "localized": [ + "ហុង" + ], + "romanized": [ + "Hong" + ], + "count": null + }, + { + "id": "KH-102", + "rank": 102, + "localized": [ + "ហ៊ុន" + ], + "romanized": [ + "Hun" + ], + "count": null + }, + { + "id": "KH-103", + "rank": 103, + "localized": [ + "ហូ" + ], + "romanized": [ + "Ho" + ], + "count": null + }, + { + "id": "KH-104", + "rank": 104, + "localized": [ + "ឡាយ" + ], + "romanized": [], + "count": null + }, + { + "id": "KH-105", + "rank": 105, + "localized": [ + "ឡុង" + ], + "romanized": [ + "Long" + ], + "count": null + }, + { + "id": "KH-106", + "rank": 106, + "localized": [ + "អាង" + ], + "romanized": [ + "Ang" + ], + "count": null + }, + { + "id": "KH-107", + "rank": 107, + "localized": [ + "អិម" + ], + "romanized": [ + "Im" + ], + "count": null + }, + { + "id": "KH-108", + "rank": 108, + "localized": [ + "អុង" + ], + "romanized": [ + "Ong" + ], + "count": null + }, + { + "id": "KH-109", + "rank": 109, + "localized": [ + "អ៊ុច" + ], + "romanized": [ + "Uch" + ], + "count": null + }, + { + "id": "KH-110", + "rank": 110, + "localized": [ + "អ៊ុយ" + ], + "romanized": [ + "Uy" + ], + "count": null + }, + { + "id": "KH-111", + "rank": 111, + "localized": [ + "អៀម" + ], + "romanized": [ + "Eam" + ], + "count": null + }, + { + "id": "KH-112", + "rank": 112, + "localized": [ + "អៀវ" + ], + "romanized": [ + "Iv" + ], + "count": null + }, + { + "id": "KH-113", + "rank": 113, + "localized": [ + "អ៊ុំ" + ], + "romanized": [ + "Um" + ], + "count": null + }, + { + "id": "KH-114", + "rank": 114, + "localized": [ + "ឯក" + ], + "romanized": [ + "Ek" + ], + "count": null + }, + { + "id": "KH-115", + "rank": 115, + "localized": [ + "ឱក" + ], + "romanized": [ + "Ok" + ], + "count": null + }, + { + "id": "KH-116", + "rank": 116, + "localized": [ + "ឱម" + ], + "romanized": [ + "Om" + ], + "count": null + } + ], + "CN": [ + { + "id": "CN-1", + "rank": 1, + "localized": [ + "王" + ], + "romanized": [ + "Wáng", + "Wong" + ], + "count": 101500000 + }, + { + "id": "CN-2", + "rank": 2, + "localized": [ + "李" + ], + "romanized": [ + "Lǐ", + "Lee" + ], + "count": 100900000 + }, + { + "id": "CN-3", + "rank": 3, + "localized": [ + "張", + "张" + ], + "romanized": [ + "Zhāng", + "Cheung" + ], + "count": 95400000 + }, + { + "id": "CN-4", + "rank": 4, + "localized": [ + "劉", + "刘" + ], + "romanized": [ + "Liú", + "Lau" + ], + "count": 72100000 + }, + { + "id": "CN-5", + "rank": 5, + "localized": [ + "陳", + "陈" + ], + "romanized": [ + "Chén", + "Chan" + ], + "count": 63000000 + }, + { + "id": "CN-6", + "rank": 6, + "localized": [ + "楊", + "杨" + ], + "romanized": [ + "Yáng", + "Yeung" + ], + "count": 46200000 + }, + { + "id": "CN-7", + "rank": 7, + "localized": [ + "黄", + "黃" + ], + "romanized": [ + "Huáng", + "Wong" + ], + "count": 33700000 + }, + { + "id": "CN-8", + "rank": 8, + "localized": [ + "趙", + "赵" + ], + "romanized": [ + "Zhào", + "Chiu" + ], + "count": 28600000 + }, + { + "id": "CN-9", + "rank": 9, + "localized": [ + "吳", + "吴" + ], + "romanized": [ + "Ng", + "Wú" + ], + "count": 27800000 + }, + { + "id": "CN-10", + "rank": 10, + "localized": [ + "周" + ], + "romanized": [ + "Zhōu", + "Chow" + ], + "count": 26800000 + }, + { + "id": "CN-11", + "rank": 11, + "localized": [ + "徐" + ], + "romanized": [ + "Tsui", + "Xú" + ], + "count": 20200000 + }, + { + "id": "CN-12", + "rank": 12, + "localized": [ + "孫", + "孙" + ], + "romanized": [ + "Suen", + "Sūn" + ], + "count": 19400000 + }, + { + "id": "CN-13", + "rank": 13, + "localized": [ + "馬", + "马" + ], + "romanized": [ + "Ma", + "Mǎ" + ], + "count": 19100000 + }, + { + "id": "CN-14", + "rank": 14, + "localized": [ + "朱" + ], + "romanized": [ + "Chu", + "Zhū" + ], + "count": 18100000 + }, + { + "id": "CN-15", + "rank": 15, + "localized": [ + "胡" + ], + "romanized": [ + "Hú", + "Wu" + ], + "count": 16500000 + }, + { + "id": "CN-16", + "rank": 16, + "localized": [ + "郭" + ], + "romanized": [ + "Guō", + "Kwok" + ], + "count": 15800000 + }, + { + "id": "CN-17", + "rank": 17, + "localized": [ + "何" + ], + "romanized": [ + "Ho", + "Hé" + ], + "count": 14800000 + }, + { + "id": "CN-18", + "rank": 18, + "localized": [ + "林" + ], + "romanized": [ + "Lam", + "Lín" + ], + "count": 14200000 + }, + { + "id": "CN-19", + "rank": 19, + "localized": [ + "高" + ], + "romanized": [ + "Gāo", + "Ko" + ], + "count": 14100000 + }, + { + "id": "CN-20", + "rank": 20, + "localized": [ + "羅", + "罗" + ], + "romanized": [ + "Law", + "Luó" + ], + "count": 14000000 + } + ], + "GE": [ + { + "id": "GE-1", + "rank": 1, + "localized": [ + "ბერიძე" + ], + "romanized": [ + "Beridze" + ], + "count": 24962 + }, + { + "id": "GE-2", + "rank": 2, + "localized": [ + "მამედოვი" + ], + "romanized": [ + "Mamedovi", + "Mamedov" + ], + "count": 23675 + }, + { + "id": "GE-3", + "rank": 3, + "localized": [ + "კაპანაძე" + ], + "romanized": [ + "Kapanadze" + ], + "count": 17202 + }, + { + "id": "GE-4", + "rank": 4, + "localized": [ + "გელაშვილი" + ], + "romanized": [ + "Gelashvili" + ], + "count": 16350 + }, + { + "id": "GE-5", + "rank": 5, + "localized": [ + "ალიევი" + ], + "romanized": [ + "Alievi", + "Aliyev" + ], + "count": 15742 + }, + { + "id": "GE-6", + "rank": 6, + "localized": [ + "მაისურაძე" + ], + "romanized": [ + "Maisuradze" + ], + "count": 14824 + }, + { + "id": "GE-7", + "rank": 7, + "localized": [ + "გიორგაძე" + ], + "romanized": [ + "Giorgadze" + ], + "count": 12954 + }, + { + "id": "GE-8", + "rank": 8, + "localized": [ + "ლომიძე" + ], + "romanized": [ + "Lomidze" + ], + "count": 11796 + }, + { + "id": "GE-9", + "rank": 9, + "localized": [ + "წიკლაური" + ], + "romanized": [ + "Tsiklauri" + ], + "count": 11571 + }, + { + "id": "GE-10", + "rank": 10, + "localized": [ + "ბოლქვაძე" + ], + "romanized": [ + "Bolkvadze" + ], + "count": 10916 + }, + { + "id": "GE-11", + "rank": 11, + "localized": [ + "კვარაცხელია" + ], + "romanized": [ + "Kvaratskhelia" + ], + "count": 10447 + }, + { + "id": "GE-12", + "rank": 12, + "localized": [ + "ნოზაძე" + ], + "romanized": [ + "Nozadze" + ], + "count": 10183 + }, + { + "id": "GE-13", + "rank": 13, + "localized": [ + "ხუციშვილი" + ], + "romanized": [ + "Khutsishvili" + ], + "count": 10075 + }, + { + "id": "GE-14", + "rank": 14, + "localized": [ + "შენგელია" + ], + "romanized": [ + "Shengelia" + ], + "count": 9928 + }, + { + "id": "GE-15", + "rank": 15, + "localized": [ + "აბულაძე" + ], + "romanized": [ + "Abuladze" + ], + "count": 9663 + }, + { + "id": "GE-16", + "rank": 16, + "localized": [ + "მიქელაძე" + ], + "romanized": [ + "Mikeladze" + ], + "count": 9220 + }, + { + "id": "GE-17", + "rank": 17, + "localized": [ + "ტაბატაძე" + ], + "romanized": [ + "Tabatadze" + ], + "count": 8654 + }, + { + "id": "GE-18", + "rank": 18, + "localized": [ + "მჭედლიშვილი" + ], + "romanized": [ + "Mchedlishvili" + ], + "count": 8446 + }, + { + "id": "GE-19", + "rank": 19, + "localized": [ + "ბაირამოვი" + ], + "romanized": [ + "Bairamov", + "Bairamovi" + ], + "count": 8373 + }, + { + "id": "GE-20", + "rank": 20, + "localized": [ + "გოგოლაძე" + ], + "romanized": [ + "Gogoladze" + ], + "count": 8362 + } + ], + "IN": [ + { + "id": "IN-1", + "rank": 1, + "localized": [ + "देवी" + ], + "romanized": [ + "Devi" + ], + "count": null + }, + { + "id": "IN-2", + "rank": 2, + "localized": [ + "कुमार" + ], + "romanized": [ + "Kumar" + ], + "count": null + }, + { + "id": "IN-3", + "rank": 3, + "localized": [ + "सिंह" + ], + "romanized": [ + "Singh" + ], + "count": null + }, + { + "id": "IN-4", + "rank": 4, + "localized": [ + "शर्मा" + ], + "romanized": [ + "Sharma" + ], + "count": null + }, + { + "id": "IN-5", + "rank": 5, + "localized": [ + "अली" + ], + "romanized": [ + "Ali" + ], + "count": null + }, + { + "id": "IN-6", + "rank": 6, + "localized": [ + "यादव" + ], + "romanized": [ + "Yadav" + ], + "count": null + }, + { + "id": "IN-7", + "rank": 7, + "localized": [ + "पटेल" + ], + "romanized": [ + "Patel" + ], + "count": null + } + ], + "IL": [ + { + "id": "IL-1", + "rank": 1, + "localized": [ + "כהן" + ], + "romanized": [ + "Cohen" + ], + "count": 180725 + }, + { + "id": "IL-2", + "rank": 2, + "localized": [ + "לוי" + ], + "romanized": [ + "Levi", + "Levy" + ], + "count": 104876 + }, + { + "id": "IL-3", + "rank": 3, + "localized": [ + "מזרחי" + ], + "romanized": [ + "Mizrahi", + "Mizrachi" + ], + "count": 30901 + }, + { + "id": "IL-4", + "rank": 4, + "localized": [ + "פרץ" + ], + "romanized": [ + "Peretz" + ], + "count": 29964 + }, + { + "id": "IL-5", + "rank": 5, + "localized": [ + "ביטון" + ], + "romanized": [ + "Biton" + ], + "count": 28092 + }, + { + "id": "IL-6", + "rank": 6, + "localized": [ + "דהן" + ], + "romanized": [ + "Dahan" + ], + "count": 21537 + }, + { + "id": "IL-7", + "rank": 7, + "localized": [ + "אברהם" + ], + "romanized": [ + "Avraham" + ], + "count": 20600 + }, + { + "id": "IL-8", + "rank": 8, + "localized": [ + "פרידמן" + ], + "romanized": [ + "Friedman" + ], + "count": 19664 + }, + { + "id": "IL-9", + "rank": 9, + "localized": [ + "מלכה" + ], + "romanized": [ + "Malka", + "Malcah" + ], + "count": 17791 + }, + { + "id": "IL-10", + "rank": 10, + "localized": [ + "אזולאי" + ], + "romanized": [ + "Azoulay" + ], + "count": 17791 + }, + { + "id": "IL-11", + "rank": 11, + "localized": [ + "כץ" + ], + "romanized": [ + "Katz" + ], + "count": 17791 + }, + { + "id": "IL-12", + "rank": 12, + "localized": [ + "יוסף" + ], + "romanized": [ + "Yosef" + ], + "count": 16855 + }, + { + "id": "IL-13", + "rank": 13, + "localized": [ + "דוד" + ], + "romanized": [ + "David" + ], + "count": 15918 + }, + { + "id": "IL-14", + "rank": 14, + "localized": [ + "עמר" + ], + "romanized": [ + "Amar", + "Omer" + ], + "count": 15918 + }, + { + "id": "IL-15", + "rank": 15, + "localized": [ + "אוחיון" + ], + "romanized": [ + "Ochion", + "Ohayon" + ], + "count": 14982 + }, + { + "id": "IL-16", + "rank": 16, + "localized": [ + "חדד" + ], + "romanized": [ + "Hadad", + "Chadad" + ], + "count": 14982 + }, + { + "id": "IL-17", + "rank": 17, + "localized": [ + "גבאי" + ], + "romanized": [ + "Gabai" + ], + "count": 14982 + }, + { + "id": "IL-18", + "rank": 18, + "localized": [ + "בן דוד" + ], + "romanized": [ + "Ben-David" + ], + "count": 13109 + }, + { + "id": "IL-19", + "rank": 19, + "localized": [ + "אדרי" + ], + "romanized": [ + "Edri", + "Edry", + "Adrei", + "Adary" + ], + "count": 13109 + }, + { + "id": "IL-20", + "rank": 20, + "localized": [ + "לוין" + ], + "romanized": [ + "Levin" + ], + "count": 13109 + }, + { + "id": "IL-21", + "rank": 21, + "localized": [ + "טל" + ], + "romanized": [ + "Tal" + ], + "count": 12173 + }, + { + "id": "IL-22", + "rank": 22, + "localized": [ + "קליין" + ], + "romanized": [ + "Klein" + ], + "count": 12173 + }, + { + "id": "IL-23", + "rank": 23, + "localized": [ + "חן" + ], + "romanized": [ + "Chen", + "Khen" + ], + "count": 12173 + }, + { + "id": "IL-24", + "rank": 24, + "localized": [ + "שפירא" + ], + "romanized": [ + "Shapira" + ], + "count": 12173 + }, + { + "id": "IL-25", + "rank": 25, + "localized": [ + "חזן" + ], + "romanized": [ + "Chazan", + "Hazan" + ], + "count": 12173 + }, + { + "id": "IL-26", + "rank": 26, + "localized": [ + "משה" + ], + "romanized": [ + "Moshe" + ], + "count": 12173 + }, + { + "id": "IL-27", + "rank": 27, + "localized": [ + "אשכנזי" + ], + "romanized": [ + "Ashkenazi" + ], + "count": 11236 + }, + { + "id": "IL-28", + "rank": 28, + "localized": [ + "אוחנה" + ], + "romanized": [ + "Ohana" + ], + "count": 11236 + }, + { + "id": "IL-29", + "rank": 29, + "localized": [ + "סגל" + ], + "romanized": [ + "Segal", + "Segel" + ], + "count": 11236 + }, + { + "id": "IL-30", + "rank": 30, + "localized": [ + "גולן" + ], + "romanized": [ + "Golan" + ], + "count": 11236 + } + ], + "JP": [ + { + "id": "JP-1", + "rank": 1, + "localized": [ + "佐藤" + ], + "romanized": [ + "Satō" + ], + "count": 1990000 + }, + { + "id": "JP-2", + "rank": 2, + "localized": [ + "鈴木" + ], + "romanized": [ + "Suzuki" + ], + "count": 1900000 + }, + { + "id": "JP-3", + "rank": 3, + "localized": [ + "高橋" + ], + "romanized": [ + "Takahashi" + ], + "count": 1470000 + }, + { + "id": "JP-4", + "rank": 4, + "localized": [ + "田中" + ], + "romanized": [ + "Tanaka" + ], + "count": 1340000 + }, + { + "id": "JP-5", + "rank": 5, + "localized": [ + "渡辺" + ], + "romanized": [ + "Watanabe" + ], + "count": 1200000 + }, + { + "id": "JP-6", + "rank": 6, + "localized": [ + "伊藤" + ], + "romanized": [ + "Itō" + ], + "count": 1150000 + }, + { + "id": "JP-7", + "rank": 7, + "localized": [ + "中村" + ], + "romanized": [ + "Nakamura" + ], + "count": 1080000 + }, + { + "id": "JP-8", + "rank": 8, + "localized": [ + "小林" + ], + "romanized": [ + "Kobayashi" + ], + "count": 1060000 + }, + { + "id": "JP-9", + "rank": 9, + "localized": [ + "山本" + ], + "romanized": [ + "Yamamoto" + ], + "count": 1020000 + }, + { + "id": "JP-10", + "rank": 10, + "localized": [ + "加藤" + ], + "romanized": [ + "Katō" + ], + "count": 920000 + }, + { + "id": "JP-11", + "rank": 11, + "localized": [ + "吉田" + ], + "romanized": [ + "Yoshida" + ], + "count": 850000 + }, + { + "id": "JP-12", + "rank": 12, + "localized": [ + "山田" + ], + "romanized": [ + "Yamada" + ], + "count": 820000 + }, + { + "id": "JP-13", + "rank": 13, + "localized": [ + "佐々木" + ], + "romanized": [ + "Sasaki" + ], + "count": 710000 + }, + { + "id": "JP-14", + "rank": 14, + "localized": [ + "山口" + ], + "romanized": [ + "Yamaguchi" + ], + "count": 640000 + }, + { + "id": "JP-15", + "rank": 15, + "localized": [ + "松本" + ], + "romanized": [ + "Matsumoto" + ], + "count": 630000 + }, + { + "id": "JP-16", + "rank": 16, + "localized": [ + "井上" + ], + "romanized": [ + "Inoue" + ], + "count": 600000 + }, + { + "id": "JP-17", + "rank": 17, + "localized": [ + "木村" + ], + "romanized": [ + "Kimura" + ], + "count": 580000 + }, + { + "id": "JP-18", + "rank": 18, + "localized": [ + "清水" + ], + "romanized": [ + "Shimizu" + ], + "count": 560000 + }, + { + "id": "JP-19", + "rank": 19, + "localized": [ + "林" + ], + "romanized": [ + "Hayashi" + ], + "count": 550000 + }, + { + "id": "JP-20", + "rank": 20, + "localized": [ + "斉藤" + ], + "romanized": [ + "Saitō" + ], + "count": 530000 + }, + { + "id": "JP-21", + "rank": 21, + "localized": [ + "斎藤" + ], + "romanized": [ + "Saitō" + ], + "count": 520000 + }, + { + "id": "JP-22", + "rank": 22, + "localized": [ + "山崎" + ], + "romanized": [ + "Yamasaki", + "Yamazaki" + ], + "count": 490000 + }, + { + "id": "JP-23", + "rank": 23, + "localized": [ + "中島" + ], + "romanized": [ + "Nakajima", + "Nakashima" + ], + "count": 480000 + }, + { + "id": "JP-24", + "rank": 24, + "localized": [ + "森" + ], + "romanized": [ + "Mori" + ], + "count": 470000 + }, + { + "id": "JP-25", + "rank": 25, + "localized": [ + "阿部" + ], + "romanized": [ + "Abe" + ], + "count": 470000 + }, + { + "id": "JP-26", + "rank": 26, + "localized": [ + "池田" + ], + "romanized": [ + "Ikeda" + ], + "count": 450000 + }, + { + "id": "JP-27", + "rank": 27, + "localized": [ + "橋本" + ], + "romanized": [ + "Hashimoto" + ], + "count": 450000 + }, + { + "id": "JP-28", + "rank": 28, + "localized": [ + "石川" + ], + "romanized": [ + "Ishikawa" + ], + "count": 440000 + }, + { + "id": "JP-29", + "rank": 29, + "localized": [ + "山下" + ], + "romanized": [ + "Yamashita" + ], + "count": 410000 + }, + { + "id": "JP-30", + "rank": 30, + "localized": [ + "小川" + ], + "romanized": [ + "Ogawa" + ], + "count": 410000 + }, + { + "id": "JP-31", + "rank": 31, + "localized": [ + "石井" + ], + "romanized": [ + "Ishii" + ], + "count": 400000 + }, + { + "id": "JP-32", + "rank": 32, + "localized": [ + "長谷川" + ], + "romanized": [ + "Hasegawa" + ], + "count": 390000 + }, + { + "id": "JP-33", + "rank": 33, + "localized": [ + "後藤" + ], + "romanized": [ + "Gotō" + ], + "count": 390000 + }, + { + "id": "JP-34", + "rank": 34, + "localized": [ + "岡田" + ], + "romanized": [ + "Okada" + ], + "count": 380000 + }, + { + "id": "JP-35", + "rank": 35, + "localized": [ + "近藤" + ], + "romanized": [ + "Kondō" + ], + "count": 370000 + }, + { + "id": "JP-36", + "rank": 36, + "localized": [ + "前田" + ], + "romanized": [ + "Maeda" + ], + "count": 370000 + }, + { + "id": "JP-37", + "rank": 37, + "localized": [ + "藤田" + ], + "romanized": [ + "Fujita" + ], + "count": 370000 + }, + { + "id": "JP-38", + "rank": 38, + "localized": [ + "遠藤" + ], + "romanized": [ + "Endō" + ], + "count": 360000 + }, + { + "id": "JP-39", + "rank": 39, + "localized": [ + "青木" + ], + "romanized": [ + "Aoki" + ], + "count": 350000 + }, + { + "id": "JP-40", + "rank": 40, + "localized": [ + "坂本" + ], + "romanized": [ + "Sakamoto" + ], + "count": 350000 + }, + { + "id": "JP-41", + "rank": 41, + "localized": [ + "村上" + ], + "romanized": [ + "Murakami" + ], + "count": 340000 + }, + { + "id": "JP-42", + "rank": 42, + "localized": [ + "太田" + ], + "romanized": [ + "Ōta" + ], + "count": 320000 + }, + { + "id": "JP-43", + "rank": 43, + "localized": [ + "金子" + ], + "romanized": [ + "Kaneko" + ], + "count": 310000 + }, + { + "id": "JP-44", + "rank": 44, + "localized": [ + "藤井" + ], + "romanized": [ + "Fujii" + ], + "count": 310000 + }, + { + "id": "JP-45", + "rank": 45, + "localized": [ + "福田" + ], + "romanized": [ + "Fukuda" + ], + "count": 300000 + }, + { + "id": "JP-46", + "rank": 46, + "localized": [ + "西村" + ], + "romanized": [ + "Nishimura" + ], + "count": 300000 + }, + { + "id": "JP-47", + "rank": 47, + "localized": [ + "三浦" + ], + "romanized": [ + "Miura" + ], + "count": 300000 + }, + { + "id": "JP-48", + "rank": 48, + "localized": [ + "竹内" + ], + "romanized": [ + "Takeuchi" + ], + "count": 290000 + }, + { + "id": "JP-49", + "rank": 49, + "localized": [ + "中川" + ], + "romanized": [ + "Nakagawa" + ], + "count": 290000 + }, + { + "id": "JP-50", + "rank": 50, + "localized": [ + "岡本" + ], + "romanized": [ + "Okamoto" + ], + "count": 290000 + }, + { + "id": "JP-51", + "rank": 51, + "localized": [ + "松田" + ], + "romanized": [ + "Matsuda" + ], + "count": 290000 + }, + { + "id": "JP-52", + "rank": 52, + "localized": [ + "原田" + ], + "romanized": [ + "Harada" + ], + "count": 290000 + }, + { + "id": "JP-53", + "rank": 53, + "localized": [ + "中野" + ], + "romanized": [ + "Nakano" + ], + "count": 290000 + }, + { + "id": "JP-54", + "rank": 54, + "localized": [ + "小野" + ], + "romanized": [ + "Ono" + ], + "count": 280000 + }, + { + "id": "JP-55", + "rank": 55, + "localized": [ + "田村" + ], + "romanized": [ + "Tamura" + ], + "count": 280000 + }, + { + "id": "JP-56", + "rank": 56, + "localized": [ + "藤原" + ], + "romanized": [ + "Fujiwara", + "Fujihara" + ], + "count": 270000 + }, + { + "id": "JP-57", + "rank": 57, + "localized": [ + "中山" + ], + "romanized": [ + "Nakayama" + ], + "count": 270000 + }, + { + "id": "JP-58", + "rank": 58, + "localized": [ + "石田" + ], + "romanized": [ + "Ishida" + ], + "count": 270000 + }, + { + "id": "JP-59", + "rank": 59, + "localized": [ + "小島" + ], + "romanized": [ + "Kojima" + ], + "count": 260000 + }, + { + "id": "JP-60", + "rank": 60, + "localized": [ + "和田" + ], + "romanized": [ + "Wada" + ], + "count": 260000 + }, + { + "id": "JP-61", + "rank": 61, + "localized": [ + "森田" + ], + "romanized": [ + "Morita" + ], + "count": 250000 + }, + { + "id": "JP-62", + "rank": 62, + "localized": [ + "内田" + ], + "romanized": [ + "Uchida" + ], + "count": 250000 + }, + { + "id": "JP-63", + "rank": 63, + "localized": [ + "柴田" + ], + "romanized": [ + "Shibata" + ], + "count": 250000 + }, + { + "id": "JP-64", + "rank": 64, + "localized": [ + "酒井" + ], + "romanized": [ + "Sakai" + ], + "count": 240000 + }, + { + "id": "JP-65", + "rank": 65, + "localized": [ + "原" + ], + "romanized": [ + "Hara" + ], + "count": 240000 + }, + { + "id": "JP-66", + "rank": 66, + "localized": [ + "高木" + ], + "romanized": [ + "Takagi", + "Takaki" + ], + "count": 240000 + }, + { + "id": "JP-67", + "rank": 67, + "localized": [ + "横山" + ], + "romanized": [ + "Yokoyama" + ], + "count": 240000 + }, + { + "id": "JP-68", + "rank": 68, + "localized": [ + "安藤" + ], + "romanized": [ + "Andō" + ], + "count": 240000 + }, + { + "id": "JP-69", + "rank": 69, + "localized": [ + "宮崎" + ], + "romanized": [ + "Miyazaki", + "Miyasaki" + ], + "count": 240000 + }, + { + "id": "JP-70", + "rank": 70, + "localized": [ + "上田" + ], + "romanized": [ + "Ueta", + "Ueda" + ], + "count": 240000 + }, + { + "id": "JP-71", + "rank": 71, + "localized": [ + "島田" + ], + "romanized": [ + "Shimada" + ], + "count": 230000 + }, + { + "id": "JP-72", + "rank": 72, + "localized": [ + "工藤" + ], + "romanized": [ + "Kudō" + ], + "count": 230000 + }, + { + "id": "JP-73", + "rank": 73, + "localized": [ + "大野" + ], + "romanized": [ + "Ōno" + ], + "count": 220000 + }, + { + "id": "JP-74", + "rank": 74, + "localized": [ + "宮本" + ], + "romanized": [ + "Miyamoto" + ], + "count": 220000 + }, + { + "id": "JP-75", + "rank": 75, + "localized": [ + "杉山" + ], + "romanized": [ + "Sugiyama" + ], + "count": 220000 + }, + { + "id": "JP-76", + "rank": 76, + "localized": [ + "今井" + ], + "romanized": [ + "Imai" + ], + "count": 220000 + }, + { + "id": "JP-77", + "rank": 77, + "localized": [ + "丸山" + ], + "romanized": [ + "Maruyama" + ], + "count": 210000 + }, + { + "id": "JP-78", + "rank": 78, + "localized": [ + "増田" + ], + "romanized": [ + "Masuda" + ], + "count": 210000 + }, + { + "id": "JP-79", + "rank": 79, + "localized": [ + "高田" + ], + "romanized": [ + "Takata", + "Takada" + ], + "count": 210000 + }, + { + "id": "JP-80", + "rank": 80, + "localized": [ + "村田" + ], + "romanized": [ + "Murata" + ], + "count": 210000 + }, + { + "id": "JP-81", + "rank": 81, + "localized": [ + "平野" + ], + "romanized": [ + "Hirano" + ], + "count": 210000 + }, + { + "id": "JP-82", + "rank": 82, + "localized": [ + "大塚" + ], + "romanized": [ + "Ōtsuka" + ], + "count": 210000 + }, + { + "id": "JP-83", + "rank": 83, + "localized": [ + "菅原" + ], + "romanized": [ + "Sugahara", + "Sugawara" + ], + "count": 210000 + }, + { + "id": "JP-84", + "rank": 84, + "localized": [ + "武田" + ], + "romanized": [ + "Taketa", + "Takeda" + ], + "count": 200000 + }, + { + "id": "JP-85", + "rank": 85, + "localized": [ + "新井" + ], + "romanized": [ + "Arai" + ], + "count": 200000 + }, + { + "id": "JP-86", + "rank": 86, + "localized": [ + "小山" + ], + "romanized": [ + "Koyama", + "Oyama" + ], + "count": 200000 + }, + { + "id": "JP-87", + "rank": 87, + "localized": [ + "野口" + ], + "romanized": [ + "Noguchi" + ], + "count": 200000 + }, + { + "id": "JP-88", + "rank": 88, + "localized": [ + "桜井" + ], + "romanized": [ + "Sakurai" + ], + "count": 200000 + }, + { + "id": "JP-89", + "rank": 89, + "localized": [ + "千葉" + ], + "romanized": [ + "Chiba" + ], + "count": 200000 + }, + { + "id": "JP-90", + "rank": 90, + "localized": [ + "岩崎" + ], + "romanized": [ + "Iwasaki" + ], + "count": 200000 + }, + { + "id": "JP-91", + "rank": 91, + "localized": [ + "佐野" + ], + "romanized": [ + "Sano" + ], + "count": 200000 + }, + { + "id": "JP-92", + "rank": 92, + "localized": [ + "谷口" + ], + "romanized": [ + "Taniguchi" + ], + "count": 200000 + }, + { + "id": "JP-93", + "rank": 93, + "localized": [ + "上野" + ], + "romanized": [ + "Ueno" + ], + "count": 200000 + }, + { + "id": "JP-94", + "rank": 94, + "localized": [ + "松井" + ], + "romanized": [ + "Matsui" + ], + "count": 190000 + }, + { + "id": "JP-95", + "rank": 95, + "localized": [ + "河野" + ], + "romanized": [ + "Kōno", + "Kawano" + ], + "count": 190000 + }, + { + "id": "JP-96", + "rank": 96, + "localized": [ + "市川" + ], + "romanized": [ + "Ichikawa" + ], + "count": 190000 + }, + { + "id": "JP-97", + "rank": 97, + "localized": [ + "渡部" + ], + "romanized": [ + "Watanabe", + "Watabe" + ], + "count": 190000 + }, + { + "id": "JP-98", + "rank": 98, + "localized": [ + "野村" + ], + "romanized": [ + "Nomura" + ], + "count": 180000 + }, + { + "id": "JP-99", + "rank": 99, + "localized": [ + "菊地" + ], + "romanized": [ + "Kikuchi" + ], + "count": 180000 + }, + { + "id": "JP-100", + "rank": 100, + "localized": [ + "木下" + ], + "romanized": [ + "Kinoshita" + ], + "count": 180000 + } + ], + "KZ": [ + { + "id": "KZ-1", + "rank": 1, + "localized": [ + "Ахметов" + ], + "romanized": [ + "Ahmetov" + ], + "count": 73627 + }, + { + "id": "KZ-2", + "rank": 2, + "localized": [ + "Омаров" + ], + "romanized": [ + "Omarov" + ], + "count": 45123 + }, + { + "id": "KZ-3", + "rank": 3, + "localized": [ + "Ким" + ], + "romanized": [ + "Kim" + ], + "count": 42274 + }, + { + "id": "KZ-4", + "rank": 4, + "localized": [ + "Оспанов" + ], + "romanized": [ + "Ospanov" + ], + "count": 41068 + }, + { + "id": "KZ-5", + "rank": 5, + "localized": [ + "Иванов" + ], + "romanized": [ + "Ivanov" + ], + "count": 39296 + }, + { + "id": "KZ-6", + "rank": 6, + "localized": [ + "Алиев" + ], + "romanized": [ + "Aliev" + ], + "count": 36084 + }, + { + "id": "KZ-7", + "rank": 7, + "localized": [ + "Сулейменов" + ], + "romanized": [ + "Suleimenov" + ], + "count": 33940 + }, + { + "id": "KZ-8", + "rank": 8, + "localized": [ + "Искаков" + ], + "romanized": [ + "Iskakov" + ], + "count": 31988 + }, + { + "id": "KZ-9", + "rank": 9, + "localized": [ + "Абдрахманов" + ], + "romanized": [ + "Abdrahmanov" + ], + "count": 29091 + }, + { + "id": "KZ-10", + "rank": 10, + "localized": [ + "Ибрагимов" + ], + "romanized": [ + "Ibragimov" + ], + "count": 28755 + }, + { + "id": "KZ-11", + "rank": 11, + "localized": [ + "Калиев" + ], + "romanized": [ + "Kaliev" + ], + "count": 28219 + }, + { + "id": "KZ-12", + "rank": 12, + "localized": [ + "Садыков" + ], + "romanized": [ + "Sadykov" + ], + "count": 27810 + }, + { + "id": "KZ-13", + "rank": 13, + "localized": [ + "Ибраев" + ], + "romanized": [ + "Ibraev" + ], + "count": 26531 + }, + { + "id": "KZ-14", + "rank": 14, + "localized": [ + "Кузнецов" + ], + "romanized": [ + "Kuznetsov" + ], + "count": 25990 + }, + { + "id": "KZ-15", + "rank": 15, + "localized": [ + "Попов" + ], + "romanized": [ + "Popov" + ], + "count": 24956 + }, + { + "id": "KZ-16", + "rank": 16, + "localized": [ + "Смагулов" + ], + "romanized": [ + "Smagulov" + ], + "count": 24005 + }, + { + "id": "KZ-17", + "rank": 17, + "localized": [ + "Абдуллаев" + ], + "romanized": [ + "Abdullaev" + ], + "count": 23729 + }, + { + "id": "KZ-18", + "rank": 18, + "localized": [ + "Исаев" + ], + "romanized": [ + "Isaev" + ], + "count": 22910 + }, + { + "id": "KZ-19", + "rank": 19, + "localized": [ + "Султанов" + ], + "romanized": [ + "Sultanov" + ], + "count": 22808 + }, + { + "id": "KZ-22", + "rank": 22, + "localized": [ + "Юсупов" + ], + "romanized": [ + "Iusupov" + ], + "count": 22763 + }, + { + "id": "KZ-21", + "rank": 21, + "localized": [ + "Исмаилов" + ], + "romanized": [ + "Ismailov" + ], + "count": 21392 + }, + { + "id": "KZ-22", + "rank": 22, + "localized": [ + "Нургалиев" + ], + "romanized": [ + "Nurgaliev" + ], + "count": 21133 + }, + { + "id": "KZ-23", + "rank": 23, + "localized": [ + "Каримов" + ], + "romanized": [ + "Karimov" + ], + "count": 20575 + }, + { + "id": "KZ-24", + "rank": 24, + "localized": [ + "Серік" + ], + "romanized": [ + "Серик" + ], + "count": 19550 + }, + { + "id": "KZ-25", + "rank": 25, + "localized": [ + "Ли" + ], + "romanized": [ + "Li" + ], + "count": 17049 + }, + { + "id": "KZ-26", + "rank": 26, + "localized": [ + "Цой" + ], + "romanized": [ + "Tsoi" + ], + "count": 12088 + }, + { + "id": "KZ-27", + "rank": 27, + "localized": [ + "Амангельды" + ], + "romanized": [ + "Amangeldy" + ], + "count": 15125 + }, + { + "id": "KZ-28", + "rank": 28, + "localized": [ + "Болат" + ], + "romanized": [ + "Bolat" + ], + "count": 11234 + }, + { + "id": "KZ-29", + "rank": 29, + "localized": [ + "Бондаренко" + ], + "romanized": [ + "Bondarenko" + ], + "count": 10648 + }, + { + "id": "KZ-30", + "rank": 30, + "localized": [ + "Марат" + ], + "romanized": [ + "Marat" + ], + "count": 10417 + }, + { + "id": "KZ-31", + "rank": 31, + "localized": [ + "Серікбай" + ], + "romanized": [ + "Серикбай" + ], + "count": 10193 + }, + { + "id": "KZ-32", + "rank": 32, + "localized": [ + "Мурат" + ], + "romanized": [ + "Murat" + ], + "count": 10106 + }, + { + "id": "KZ-33", + "rank": 33, + "localized": [ + "Кусаинов" + ], + "romanized": [ + "Kusainov" + ], + "count": 10103 + } + ], + "KR": [ + { + "id": "KR-1", + "rank": 1, + "localized": [ + "金", + "김" + ], + "romanized": [ + "Gim", + "Kim", + "Ghim" + ], + "count": null + }, + { + "id": "KR-2", + "rank": 2, + "localized": [ + "리", + "李", + "이" + ], + "romanized": [ + "Yi", + "Lee", + "Rhee" + ], + "count": null + }, + { + "id": "KR-3", + "rank": 3, + "localized": [ + "朴", + "박" + ], + "romanized": [ + "Pak", + "Bak", + "Park" + ], + "count": null + }, + { + "id": "KR-4", + "rank": 4, + "localized": [ + "崔", + "최" + ], + "romanized": [ + "Choy", + "Choe", + "Joy", + "Choi" + ], + "count": null + }, + { + "id": "KR-5", + "rank": 5, + "localized": [ + "鄭", + "정" + ], + "romanized": [ + "Young", + "Jung", + "Chung", + "Cheong", + "Jeong" + ], + "count": null + }, + { + "id": "KR-6", + "rank": 6, + "localized": [ + "姜", + "강" + ], + "romanized": [ + "Gang", + "Kang", + "Ghang" + ], + "count": null + }, + { + "id": "KR-7", + "rank": 7, + "localized": [ + "조", + "趙" + ], + "romanized": [ + "Jo", + "Cho", + "Joe" + ], + "count": null + }, + { + "id": "KR-8", + "rank": 8, + "localized": [ + "윤", + "尹" + ], + "romanized": [ + "Yoon", + "Yun", + "Youn" + ], + "count": null + }, + { + "id": "KR-9", + "rank": 9, + "localized": [ + "張", + "장" + ], + "romanized": [ + "Jang", + "Chang" + ], + "count": null + }, + { + "id": "KR-10", + "rank": 10, + "localized": [ + "임", + "림", + "林" + ], + "romanized": [ + "Rim", + "Im", + "Lim", + "Rhim" + ], + "count": null + }, + { + "id": "KR-11", + "rank": 11, + "localized": [ + "韓", + "한" + ], + "romanized": [ + "Han" + ], + "count": null + }, + { + "id": "KR-12", + "rank": 12, + "localized": [ + "吳", + "오" + ], + "romanized": [ + "Oh", + "O" + ], + "count": null + }, + { + "id": "KR-13", + "rank": 13, + "localized": [ + "徐", + "서" + ], + "romanized": [ + "Seoh", + "Suh", + "Seo" + ], + "count": null + }, + { + "id": "KR-14", + "rank": 14, + "localized": [ + "申", + "신" + ], + "romanized": [ + "Shin", + "Sin" + ], + "count": null + }, + { + "id": "KR-15", + "rank": 15, + "localized": [ + "權", + "권" + ], + "romanized": [ + "Gwon", + "Kuen", + "Kwon" + ], + "count": null + }, + { + "id": "KR-16", + "rank": 16, + "localized": [ + "黃", + "황" + ], + "romanized": [ + "Hwang", + "Huang" + ], + "count": null + }, + { + "id": "KR-17", + "rank": 17, + "localized": [ + "안", + "安" + ], + "romanized": [ + "An", + "Ahn" + ], + "count": null + }, + { + "id": "KR-18", + "rank": 18, + "localized": [ + "宋", + "송" + ], + "romanized": [ + "Song" + ], + "count": null + }, + { + "id": "KR-19", + "rank": 19, + "localized": [ + "柳", + "류", + "유" + ], + "romanized": [ + "Yu", + "Ryoo", + "Yoo", + "Ryu" + ], + "count": null + }, + { + "id": "KR-20", + "rank": 20, + "localized": [ + "全", + "전" + ], + "romanized": [ + "Cheon", + "Jun", + "Chun", + "Jeon" + ], + "count": null + }, + { + "id": "KR-21", + "rank": 21, + "localized": [ + "洪", + "홍" + ], + "romanized": [ + "Hong" + ], + "count": null + }, + { + "id": "KR-22", + "rank": 22, + "localized": [ + "高", + "고" + ], + "romanized": [ + "Koh", + "Goh", + "Go", + "Ko" + ], + "count": null + }, + { + "id": "KR-23", + "rank": 23, + "localized": [ + "문", + "文" + ], + "romanized": [ + "Mon", + "Munn", + "Mun", + "Moon" + ], + "count": null + }, + { + "id": "KR-24", + "rank": 24, + "localized": [ + "량", + "양", + "梁" + ], + "romanized": [ + "Yang", + "Ryang" + ], + "count": null + }, + { + "id": "KR-25", + "rank": 25, + "localized": [ + "손", + "孫" + ], + "romanized": [ + "Son", + "Sohn", + "Sonn" + ], + "count": null + }, + { + "id": "KR-26", + "rank": 26, + "localized": [ + "裵", + "배" + ], + "romanized": [ + "Pae", + "Bae", + "Bai", + "Pai" + ], + "count": null + }, + { + "id": "KR-27", + "rank": 27, + "localized": [ + "조", + "曺" + ], + "romanized": [ + "Jo", + "Cho" + ], + "count": null + }, + { + "id": "KR-28", + "rank": 28, + "localized": [ + "백", + "白" + ], + "romanized": [ + "Bhak", + "Paik", + "Bak", + "Baek", + "Phak", + "Pak" + ], + "count": null + }, + { + "id": "KR-29", + "rank": 29, + "localized": [ + "허", + "許" + ], + "romanized": [ + "Hur", + "Heo", + "Her", + "Hui" + ], + "count": null + }, + { + "id": "KR-30", + "rank": 30, + "localized": [ + "劉", + "류", + "유" + ], + "romanized": [ + "Liu", + "Yoo", + "Yu", + "Lau", + "Yau" + ], + "count": null + }, + { + "id": "KR-31", + "rank": 31, + "localized": [ + "남" + ], + "romanized": [ + "Nan", + "Nham", + "Nam" + ], + "count": null + }, + { + "id": "KR-32", + "rank": 32, + "localized": [ + "南", + "심", + "沈" + ], + "romanized": [ + "Shen", + "Sim", + "Shim" + ], + "count": null + }, + { + "id": "KR-33", + "rank": 33, + "localized": [ + "노", + "로", + "盧" + ], + "romanized": [ + "Roh", + "No", + "Noh" + ], + "count": null + }, + { + "id": "KR-34", + "rank": 34, + "localized": [ + "丁", + "정" + ], + "romanized": [ + "Jung", + "Jeong" + ], + "count": null + }, + { + "id": "KR-35", + "rank": 35, + "localized": [ + "河", + "하" + ], + "romanized": [ + "Ha", + "Hah" + ], + "count": null + }, + { + "id": "KR-36", + "rank": 36, + "localized": [ + "郭", + "곽" + ], + "romanized": [ + "Gwak", + "Kwak", + "Koak" + ], + "count": null + }, + { + "id": "KR-37", + "rank": 37, + "localized": [ + "성", + "成" + ], + "romanized": [ + "Seong", + "Sung", + "Shung", + "Shong" + ], + "count": null + }, + { + "id": "KR-38", + "rank": 38, + "localized": [ + "車", + "차" + ], + "romanized": [ + "Cha" + ], + "count": null + }, + { + "id": "KR-39", + "rank": 39, + "localized": [ + "주", + "朱" + ], + "romanized": [ + "Chu", + "Zhu", + "Juu", + "Ju", + "Choo", + "Zuu", + "Joo" + ], + "count": null + }, + { + "id": "KR-40", + "rank": 40, + "localized": [ + "禹", + "우" + ], + "romanized": [ + "Woo", + "U" + ], + "count": null + }, + { + "id": "KR-41", + "rank": 41, + "localized": [ + "구", + "具" + ], + "romanized": [ + "Goo", + "Gu", + "Koo" + ], + "count": null + }, + { + "id": "KR-42", + "rank": 42, + "localized": [ + "辛", + "신" + ], + "romanized": [ + "Shin", + "Sin" + ], + "count": null + }, + { + "id": "KR-43", + "rank": 43, + "localized": [ + "임", + "任" + ], + "romanized": [ + "Im", + "Yim" + ], + "count": null + }, + { + "id": "KR-44", + "rank": 44, + "localized": [ + "라", + "羅", + "나" + ], + "romanized": [ + "La", + "Na", + "Ra" + ], + "count": null + }, + { + "id": "KR-45", + "rank": 45, + "localized": [ + "전", + "田" + ], + "romanized": [ + "Jun", + "Jeon" + ], + "count": null + }, + { + "id": "KR-46", + "rank": 46, + "localized": [ + "閔", + "민" + ], + "romanized": [ + "Min" + ], + "count": null + }, + { + "id": "KR-47", + "rank": 47, + "localized": [ + "유", + "兪" + ], + "romanized": [ + "Yoo", + "Yu" + ], + "count": null + }, + { + "id": "KR-48", + "rank": 48, + "localized": [ + "陳", + "진" + ], + "romanized": [ + "Jean", + "Jin", + "Jen", + "Chen" + ], + "count": null + }, + { + "id": "KR-49", + "rank": 49, + "localized": [ + "池", + "지" + ], + "romanized": [ + "Ji", + "Jee" + ], + "count": null + }, + { + "id": "KR-50", + "rank": 50, + "localized": [ + "엄", + "嚴" + ], + "romanized": [ + "Um", + "Eom", + "Uhm" + ], + "count": null + } + ], + "NP": [ + { + "id": "NP-1", + "rank": 1, + "localized": [ + "चौधरी" + ], + "romanized": [ + "Chaudhary", + "Chowdhury" + ], + "count": null + }, + { + "id": "NP-2", + "rank": 2, + "localized": [ + "तामाङ" + ], + "romanized": [ + "Tamang" + ], + "count": null + }, + { + "id": "NP-3", + "rank": 3, + "localized": [ + "गुरुङ" + ], + "romanized": [ + "Gurung" + ], + "count": null + }, + { + "id": "NP-4", + "rank": 4, + "localized": [ + "थापा" + ], + "romanized": [ + "Thapa" + ], + "count": null + }, + { + "id": "NP-5", + "rank": 5, + "localized": [ + "राणा" + ], + "romanized": [ + "Rana" + ], + "count": null + }, + { + "id": "NP-6", + "rank": 6, + "localized": [ + "यादव" + ], + "romanized": [ + "Yadav" + ], + "count": null + }, + { + "id": "NP-7", + "rank": 7, + "localized": [ + "मगर" + ], + "romanized": [ + "Magar" + ], + "count": null + }, + { + "id": "NP-8", + "rank": 8, + "localized": [ + "राई" + ], + "romanized": [ + "Rai" + ], + "count": null + }, + { + "id": "NP-9", + "rank": 9, + "localized": [ + "श्रेष्ठ" + ], + "romanized": [ + "Shrestha" + ], + "count": null + }, + { + "id": "NP-10", + "rank": 10, + "localized": [ + "लामा" + ], + "romanized": [ + "Lama" + ], + "count": null + }, + { + "id": "NP-11", + "rank": 11, + "localized": [ + "क्षेत्री", + "चेट्री" + ], + "romanized": [ + "Chetry", + "Chhetri" + ], + "count": null + }, + { + "id": "NP-12", + "rank": 12, + "localized": [ + "साह", + "शाह" + ], + "romanized": [ + "Shah", + "Sah " + ], + "count": null + }, + { + "id": "NP-13", + "rank": 13, + "localized": [ + "शर्मा" + ], + "romanized": [ + "Sharma" + ], + "count": null + }, + { + "id": "NP-14", + "rank": 14, + "localized": [ + "सिंह" + ], + "romanized": [ + "Singh" + ], + "count": null + }, + { + "id": "NP-15", + "rank": 15, + "localized": [ + "विश्वकर्मा" + ], + "romanized": [ + "Bishwakarma" + ], + "count": null + }, + { + "id": "NP-16", + "rank": 16, + "localized": [ + "महर्जन" + ], + "romanized": [ + "Maharjan" + ], + "count": null + }, + { + "id": "NP-17", + "rank": 17, + "localized": [ + "नेपाली" + ], + "romanized": [ + "Nepali " + ], + "count": null + }, + { + "id": "NP-18", + "rank": 18, + "localized": [ + "परियार" + ], + "romanized": [ + "Pariyar" + ], + "count": null + }, + { + "id": "NP-19", + "rank": 19, + "localized": [ + "पोखरेल" + ], + "romanized": [ + "Pokharel", + "Pokhrel " + ], + "count": null + }, + { + "id": "NP-20", + "rank": 20, + "localized": [ + "थारु" + ], + "romanized": [ + "Tharu" + ], + "count": null + } + ], + "PH": [ + { + "id": "PH-1", + "rank": 1, + "localized": [], + "romanized": [ + "dela Cruz" + ], + "count": 625640 + }, + { + "id": "PH-2", + "rank": 2, + "localized": [], + "romanized": [ + "Garcia" + ], + "count": 441075 + }, + { + "id": "PH-3", + "rank": 3, + "localized": [], + "romanized": [ + "Reyes" + ], + "count": 412750 + }, + { + "id": "PH-4", + "rank": 4, + "localized": [], + "romanized": [ + "Ramos" + ], + "count": 375999 + }, + { + "id": "PH-5", + "rank": 5, + "localized": [], + "romanized": [ + "Mendoza" + ], + "count": 372042 + }, + { + "id": "PH-6", + "rank": 6, + "localized": [], + "romanized": [ + "Santos" + ], + "count": 342746 + }, + { + "id": "PH-7", + "rank": 7, + "localized": [], + "romanized": [ + "Flores" + ], + "count": 312187 + }, + { + "id": "PH-8", + "rank": 8, + "localized": [], + "romanized": [ + "Gonzales" + ], + "count": 293787 + }, + { + "id": "PH-9", + "rank": 9, + "localized": [], + "romanized": [ + "Bautista" + ], + "count": 287625 + }, + { + "id": "PH-10", + "rank": 10, + "localized": [], + "romanized": [ + "Villanueva" + ], + "count": 277730 + }, + { + "id": "PH-11", + "rank": 11, + "localized": [], + "romanized": [ + "Fernandez" + ], + "count": 269820 + }, + { + "id": "PH-12", + "rank": 12, + "localized": [], + "romanized": [ + "Cruz" + ], + "count": 262822 + }, + { + "id": "PH-13", + "rank": 13, + "localized": [], + "romanized": [ + "de Guzman" + ], + "count": 249319 + }, + { + "id": "PH-14", + "rank": 14, + "localized": [], + "romanized": [ + "Lopez" + ], + "count": 230958 + }, + { + "id": "PH-15", + "rank": 15, + "localized": [], + "romanized": [ + "Perez" + ], + "count": 220113 + }, + { + "id": "PH-16", + "rank": 16, + "localized": [], + "romanized": [ + "Castillo" + ], + "count": 211405 + }, + { + "id": "PH-17", + "rank": 17, + "localized": [], + "romanized": [ + "Francisco" + ], + "count": 207840 + }, + { + "id": "PH-18", + "rank": 18, + "localized": [], + "romanized": [ + "Rivera" + ], + "count": 184543 + }, + { + "id": "PH-19", + "rank": 19, + "localized": [], + "romanized": [ + "Aquino" + ], + "count": 183088 + }, + { + "id": "PH-20", + "rank": 20, + "localized": [], + "romanized": [ + "Castro" + ], + "count": 173686 + }, + { + "id": "PH-21", + "rank": 21, + "localized": [], + "romanized": [ + "Sanchez" + ], + "count": 162886 + }, + { + "id": "PH-22", + "rank": 22, + "localized": [], + "romanized": [ + "Torres" + ], + "count": 162353 + }, + { + "id": "PH-23", + "rank": 23, + "localized": [], + "romanized": [ + "de Leon" + ], + "count": 156637 + }, + { + "id": "PH-24", + "rank": 24, + "localized": [], + "romanized": [ + "Domingo" + ], + "count": 147652 + }, + { + "id": "PH-25", + "rank": 25, + "localized": [], + "romanized": [ + "Martinez" + ], + "count": 143359 + }, + { + "id": "PH-26", + "rank": 26, + "localized": [], + "romanized": [ + "Rodriguez" + ], + "count": 143072 + }, + { + "id": "PH-27", + "rank": 27, + "localized": [], + "romanized": [ + "Santiago" + ], + "count": 140475 + }, + { + "id": "PH-28", + "rank": 28, + "localized": [], + "romanized": [ + "Soriano" + ], + "count": 140203 + }, + { + "id": "PH-29", + "rank": 29, + "localized": [], + "romanized": [ + "delos Santos" + ], + "count": 139229 + }, + { + "id": "PH-30", + "rank": 30, + "localized": [], + "romanized": [ + "Diaz" + ], + "count": 136449 + }, + { + "id": "PH-31", + "rank": 31, + "localized": [], + "romanized": [ + "Hernandez" + ], + "count": 135744 + }, + { + "id": "PH-32", + "rank": 32, + "localized": [], + "romanized": [ + "Tolentino" + ], + "count": 133010 + }, + { + "id": "PH-33", + "rank": 33, + "localized": [], + "romanized": [ + "Valdez" + ], + "count": 132416 + }, + { + "id": "PH-34", + "rank": 34, + "localized": [], + "romanized": [ + "Ramirez" + ], + "count": 131829 + }, + { + "id": "PH-35", + "rank": 35, + "localized": [], + "romanized": [ + "Morales" + ], + "count": 129957 + }, + { + "id": "PH-36", + "rank": 36, + "localized": [], + "romanized": [ + "Mercado" + ], + "count": 125314 + }, + { + "id": "PH-37", + "rank": 37, + "localized": [], + "romanized": [ + "Tan" + ], + "count": 123290 + }, + { + "id": "PH-38", + "rank": 38, + "localized": [], + "romanized": [ + "Aguilar" + ], + "count": 121635 + }, + { + "id": "PH-39", + "rank": 39, + "localized": [], + "romanized": [ + "Navarro" + ], + "count": 113992 + }, + { + "id": "PH-40", + "rank": 40, + "localized": [], + "romanized": [ + "Manalo" + ], + "count": 111336 + }, + { + "id": "PH-41", + "rank": 41, + "localized": [], + "romanized": [ + "Gomez" + ], + "count": 108844 + }, + { + "id": "PH-42", + "rank": 42, + "localized": [], + "romanized": [ + "Dizon" + ], + "count": 106507 + }, + { + "id": "PH-43", + "rank": 43, + "localized": [], + "romanized": [ + "del Rosario" + ], + "count": 105210 + }, + { + "id": "PH-44", + "rank": 44, + "localized": [], + "romanized": [ + "Javier" + ], + "count": 104515 + }, + { + "id": "PH-45", + "rank": 45, + "localized": [], + "romanized": [ + "Corpuz" + ], + "count": 104026 + }, + { + "id": "PH-46", + "rank": 46, + "localized": [], + "romanized": [ + "Gutierrez" + ], + "count": 103352 + }, + { + "id": "PH-47", + "rank": 47, + "localized": [], + "romanized": [ + "Salvador" + ], + "count": 103117 + }, + { + "id": "PH-48", + "rank": 48, + "localized": [], + "romanized": [ + "Velasco" + ], + "count": 101375 + }, + { + "id": "PH-49", + "rank": 49, + "localized": [], + "romanized": [ + "Miranda" + ], + "count": 101258 + }, + { + "id": "PH-50", + "rank": 50, + "localized": [], + "romanized": [ + "David" + ], + "count": 100641 + } + ], + "RU": [ + { + "id": "RU-1", + "rank": 1, + "localized": [ + "Смирно́в" + ], + "romanized": [ + "Smirnov" + ], + "count": 2308740 + }, + { + "id": "RU-2", + "rank": 2, + "localized": [ + "Ивано́в" + ], + "romanized": [ + "Ivanov" + ], + "count": 1864200 + }, + { + "id": "RU-3", + "rank": 3, + "localized": [ + "Кузнецо́в" + ], + "romanized": [ + "Kuznetsov" + ], + "count": 1290600 + }, + { + "id": "RU-4", + "rank": 4, + "localized": [ + "Попо́в" + ], + "romanized": [ + "Popov" + ], + "count": 1132860 + }, + { + "id": "RU-5", + "rank": 5, + "localized": [ + "Соколо́в" + ], + "romanized": [ + "Sokolov" + ], + "count": 1046820 + }, + { + "id": "RU-6", + "rank": 6, + "localized": [ + "Ле́бедев" + ], + "romanized": [ + "Lebedev" + ], + "count": 932100 + }, + { + "id": "RU-7", + "rank": 7, + "localized": [ + "Козло́в" + ], + "romanized": [ + "Kozlov" + ], + "count": 831720 + }, + { + "id": "RU-8", + "rank": 8, + "localized": [ + "Но́виков" + ], + "romanized": [ + "Novikov" + ], + "count": 774360 + }, + { + "id": "RU-9", + "rank": 9, + "localized": [ + "Моро́зов" + ], + "romanized": [ + "Morozov" + ], + "count": 760020 + }, + { + "id": "RU-10", + "rank": 10, + "localized": [ + "Петро́в" + ], + "romanized": [ + "Petrov" + ], + "count": 630960 + }, + { + "id": "RU-11", + "rank": 11, + "localized": [ + "Во́лков" + ], + "romanized": [ + "Volkov" + ], + "count": 630960 + }, + { + "id": "RU-12", + "rank": 12, + "localized": [ + "Соловьёв" + ], + "romanized": [ + "Solovyov" + ], + "count": 630960 + }, + { + "id": "RU-13", + "rank": 13, + "localized": [ + "Васи́льев" + ], + "romanized": [ + "Vasilyev" + ], + "count": 602280 + }, + { + "id": "RU-14", + "rank": 14, + "localized": [ + "За́йцев" + ], + "romanized": [ + "Zaytsev" + ], + "count": 587940 + }, + { + "id": "RU-15", + "rank": 15, + "localized": [ + "Па́влов" + ], + "romanized": [ + "Pavlov" + ], + "count": 559260 + }, + { + "id": "RU-16", + "rank": 16, + "localized": [ + "Семёнов" + ], + "romanized": [ + "Semyonov" + ], + "count": 501900 + }, + { + "id": "RU-17", + "rank": 17, + "localized": [ + "Го́лубев" + ], + "romanized": [ + "Golubev" + ], + "count": 458880 + }, + { + "id": "RU-18", + "rank": 18, + "localized": [ + "Виногра́дов" + ], + "romanized": [ + "Vinogradov" + ], + "count": 458880 + }, + { + "id": "RU-19", + "rank": 19, + "localized": [ + "Богда́нов" + ], + "romanized": [ + "Bogdanov" + ], + "count": 444540 + }, + { + "id": "RU-20", + "rank": 20, + "localized": [ + "Воробьёв" + ], + "romanized": [ + "Vorobyov" + ], + "count": 430200 + } + ], + "LK": [ + { + "id": "LK-1", + "rank": 1, + "localized": [ + "Perera" + ], + "romanized": [ + "Perera" + ], + "count": 862080 + }, + { + "id": "LK-2", + "rank": 2, + "localized": [ + "Fernando" + ], + "romanized": [ + "Fernando" + ], + "count": 520965 + }, + { + "id": "LK-3", + "rank": 3, + "localized": [ + "de Silva" + ], + "romanized": [ + "de Silva" + ], + "count": 299772 + }, + { + "id": "LK-4", + "rank": 4, + "localized": [ + "Bandara" + ], + "romanized": [ + "Bandara" + ], + "count": 227388 + }, + { + "id": "LK-5", + "rank": 5, + "localized": [ + "Kumara" + ], + "romanized": [ + "Kumara" + ], + "count": 201695 + }, + { + "id": "LK-6", + "rank": 6, + "localized": [ + "Dissanayake" + ], + "romanized": [ + "Dissanayake" + ], + "count": 172612 + }, + { + "id": "LK-7", + "rank": 7, + "localized": [ + "Mohamed" + ], + "romanized": [ + "Mohamed" + ], + "count": 154874 + }, + { + "id": "LK-8", + "rank": 8, + "localized": [ + "Gamage" + ], + "romanized": [ + "Gamage" + ], + "count": 149527 + }, + { + "id": "LK-9", + "rank": 9, + "localized": [ + "Liyanage" + ], + "romanized": [ + "Liyanage" + ], + "count": 143854 + }, + { + "id": "LK-10", + "rank": 10, + "localized": [ + "Jayasinghe" + ], + "romanized": [ + "Jayasinghe" + ], + "count": 142224 + }, + { + "id": "LK-11", + "rank": 11, + "localized": [ + "Ranasinghe" + ], + "romanized": [ + "Ranasinghe" + ], + "count": 139680 + }, + { + "id": "LK-12", + "rank": 12, + "localized": [ + "Herath" + ], + "romanized": [ + "Herath" + ], + "count": 123182 + }, + { + "id": "LK-13", + "rank": 13, + "localized": [ + "Weerasinghe" + ], + "romanized": [ + "Weerasinghe" + ], + "count": 122008 + }, + { + "id": "LK-14", + "rank": 14, + "localized": [ + "Peiris" + ], + "romanized": [ + "Peiris" + ], + "count": 115944 + }, + { + "id": "LK-15", + "rank": 15, + "localized": [ + "Rathnayake" + ], + "romanized": [ + "Rathnayake" + ], + "count": 102902 + }, + { + "id": "LK-16", + "rank": 16, + "localized": [ + "Wickramasinghe" + ], + "romanized": [ + "Wickramasinghe" + ], + "count": 96968 + }, + { + "id": "LK-17", + "rank": 17, + "localized": [ + "Wijesinghe" + ], + "romanized": [ + "Wijesinghe" + ], + "count": 94816 + }, + { + "id": "LK-18", + "rank": 18, + "localized": [ + "Hettiarachchi" + ], + "romanized": [ + "Hettiarachchi" + ], + "count": 87512 + }, + { + "id": "LK-19", + "rank": 19, + "localized": [ + "Nanayakkara" + ], + "romanized": [ + "Nanayakkara" + ], + "count": 78057 + }, + { + "id": "LK-20", + "rank": 20, + "localized": [ + "Ahamed" + ], + "romanized": [ + "Ahamed" + ], + "count": 74601 + }, + { + "id": "LK-21", + "rank": 21, + "localized": [ + "Rajapaksha" + ], + "romanized": [ + "Rajapaksha" + ], + "count": 71144 + }, + { + "id": "LK-22", + "rank": 22, + "localized": [ + "Mendis" + ], + "romanized": [ + "Mendis" + ], + "count": 70623 + }, + { + "id": "LK-23", + "rank": 23, + "localized": [ + "Pathirana" + ], + "romanized": [ + "Pathirana" + ], + "count": 70297 + }, + { + "id": "LK-24", + "rank": 24, + "localized": [ + "Ekanayake" + ], + "romanized": [ + "Ekanayake" + ], + "count": 69840 + }, + { + "id": "LK-25", + "rank": 25, + "localized": [ + "Gunasekara" + ], + "romanized": [ + "Gunasekara" + ], + "count": 69384 + }, + { + "id": "LK-26", + "rank": 26, + "localized": [ + "Dias" + ], + "romanized": [ + "Dias" + ], + "count": 67623 + }, + { + "id": "LK-27", + "rank": 27, + "localized": [ + "Sampath" + ], + "romanized": [ + "Sampath" + ], + "count": 67232 + }, + { + "id": "LK-28", + "rank": 28, + "localized": [ + "Amarasinghe" + ], + "romanized": [ + "Amarasinghe" + ], + "count": 64949 + }, + { + "id": "LK-29", + "rank": 29, + "localized": [ + "Ratnayake" + ], + "romanized": [ + "Ratnayake" + ], + "count": 59863 + }, + { + "id": "LK-30", + "rank": 30, + "localized": [ + "Chathuranga" + ], + "romanized": [ + "Chathuranga" + ], + "count": 58754 + }, + { + "id": "LK-31", + "rank": 31, + "localized": [ + "Senanayake" + ], + "romanized": [ + "Senanayake" + ], + "count": 55037 + }, + { + "id": "LK-32", + "rank": 32, + "localized": [ + "Samarasinghe" + ], + "romanized": [ + "Samarasinghe" + ], + "count": 54320 + }, + { + "id": "LK-33", + "rank": 33, + "localized": [ + "Lakmal" + ], + "romanized": [ + "Lakmal" + ], + "count": 53733 + }, + { + "id": "LK-34", + "rank": 34, + "localized": [ + "Munasinghe" + ], + "romanized": [ + "Munasinghe" + ], + "count": 52755 + }, + { + "id": "LK-35", + "rank": 35, + "localized": [ + "Rodrigo" + ], + "romanized": [ + "Rodrigo" + ], + "count": 51777 + }, + { + "id": "LK-36", + "rank": 36, + "localized": [ + "Seneviratne" + ], + "romanized": [ + "Seneviratne" + ], + "count": 51581 + }, + { + "id": "LK-37", + "rank": 37, + "localized": [ + "Rathnayaka" + ], + "romanized": [ + "Rathnayaka" + ], + "count": 49886 + }, + { + "id": "LK-38", + "rank": 38, + "localized": [ + "Edirisinghe" + ], + "romanized": [ + "Edirisinghe" + ], + "count": 48516 + }, + { + "id": "LK-39", + "rank": 39, + "localized": [ + "Jayawardena" + ], + "romanized": [ + "Jayawardena" + ], + "count": 48386 + }, + { + "id": "LK-40", + "rank": 40, + "localized": [ + "Fonseka" + ], + "romanized": [ + "Fonseka" + ], + "count": 47995 + }, + { + "id": "LK-41", + "rank": 41, + "localized": [ + "Sanjeewa" + ], + "romanized": [ + "Sanjeewa" + ], + "count": 47147 + }, + { + "id": "LK-42", + "rank": 42, + "localized": [ + "Gunawardana" + ], + "romanized": [ + "Gunawardana" + ], + "count": 46625 + }, + { + "id": "LK-43", + "rank": 43, + "localized": [ + "Gunawardena" + ], + "romanized": [ + "Gunawardena" + ], + "count": 45386 + }, + { + "id": "LK-44", + "rank": 44, + "localized": [ + "Karunaratne" + ], + "romanized": [ + "Karunaratne" + ], + "count": 44930 + }, + { + "id": "LK-45", + "rank": 45, + "localized": [ + "Jayaweera" + ], + "romanized": [ + "Jayaweera" + ], + "count": 43495 + }, + { + "id": "LK-46", + "rank": 46, + "localized": [ + "Jayasekara" + ], + "romanized": [ + "Jayasekara" + ], + "count": 43365 + }, + { + "id": "LK-47", + "rank": 47, + "localized": [ + "Ranaweera" + ], + "romanized": [ + "Ranaweera" + ], + "count": 42387 + }, + { + "id": "LK-48", + "rank": 48, + "localized": [ + "Jayawardana" + ], + "romanized": [ + "Jayawardana" + ], + "count": 40822 + }, + { + "id": "LK-49", + "rank": 49, + "localized": [ + "Jayasuriya" + ], + "romanized": [ + "Jayasuriya" + ], + "count": 40561 + }, + { + "id": "LK-50", + "rank": 50, + "localized": [ + "Madusanka" + ], + "romanized": [ + "Madusanka" + ], + "count": 40300 + } + ], + "TR": [ + { + "id": "TR-1", + "rank": 1, + "localized": [ + "Yılmaz" + ], + "romanized": [ + "Yılmaz" + ], + "count": null + }, + { + "id": "TR-2", + "rank": 2, + "localized": [ + "Kaya" + ], + "romanized": [ + "Kaya" + ], + "count": null + }, + { + "id": "TR-3", + "rank": 3, + "localized": [ + "Demir" + ], + "romanized": [ + "Demir" + ], + "count": null + }, + { + "id": "TR-4", + "rank": 4, + "localized": [ + "Şahin" + ], + "romanized": [ + "Şahin" + ], + "count": null + }, + { + "id": "TR-5", + "rank": 5, + "localized": [ + "Çelik" + ], + "romanized": [ + "Çelik" + ], + "count": null + }, + { + "id": "TR-6", + "rank": 6, + "localized": [ + "Yıldız" + ], + "romanized": [ + "Yıldız" + ], + "count": null + }, + { + "id": "TR-7", + "rank": 7, + "localized": [ + "Yıldırım" + ], + "romanized": [ + "Yıldırım" + ], + "count": null + }, + { + "id": "TR-8", + "rank": 8, + "localized": [ + "Öztürk" + ], + "romanized": [ + "Öztürk" + ], + "count": null + }, + { + "id": "TR-9", + "rank": 9, + "localized": [ + "Aydın" + ], + "romanized": [ + "Aydın" + ], + "count": null + }, + { + "id": "TR-10", + "rank": 10, + "localized": [ + "Özdemir" + ], + "romanized": [ + "Özdemir" + ], + "count": null + }, + { + "id": "TR-11", + "rank": 11, + "localized": [ + "Arslan" + ], + "romanized": [ + "Arslan" + ], + "count": null + }, + { + "id": "TR-12", + "rank": 12, + "localized": [ + "Doğan" + ], + "romanized": [ + "Doğan" + ], + "count": null + }, + { + "id": "TR-13", + "rank": 13, + "localized": [ + "Kılıç" + ], + "romanized": [ + "Kılıç" + ], + "count": null + }, + { + "id": "TR-14", + "rank": 14, + "localized": [ + "Aslan" + ], + "romanized": [ + "Aslan" + ], + "count": null + }, + { + "id": "TR-15", + "rank": 15, + "localized": [ + "Çetin" + ], + "romanized": [ + "Çetin" + ], + "count": null + }, + { + "id": "TR-16", + "rank": 16, + "localized": [ + "Kara" + ], + "romanized": [ + "Kara" + ], + "count": null + }, + { + "id": "TR-17", + "rank": 17, + "localized": [ + "Koç" + ], + "romanized": [ + "Koç" + ], + "count": null + }, + { + "id": "TR-18", + "rank": 18, + "localized": [ + "Kurt" + ], + "romanized": [ + "Kurt" + ], + "count": null + }, + { + "id": "TR-19", + "rank": 19, + "localized": [ + "Özkan" + ], + "romanized": [ + "Özkan" + ], + "count": null + }, + { + "id": "TR-20", + "rank": 20, + "localized": [ + "Şimşek" + ], + "romanized": [ + "Şimşek" + ], + "count": null + } + ], + "VN": [ + { + "id": "VN-1", + "rank": 1, + "localized": [ + "阮" + ], + "romanized": [ + "Nguyễn" + ], + "count": 37038600 + }, + { + "id": "VN-2", + "rank": 2, + "localized": [ + "陳" + ], + "romanized": [ + "Trần" + ], + "count": 10721700 + }, + { + "id": "VN-3", + "rank": 3, + "localized": [ + "黎" + ], + "romanized": [ + "Lê" + ], + "count": 9259650 + }, + { + "id": "VN-4", + "rank": 4, + "localized": [ + "范" + ], + "romanized": [ + "Phạm" + ], + "count": 6920370 + }, + { + "id": "VN-5", + "rank": 5, + "localized": [ + "黃" + ], + "romanized": [ + "Huỳnh/Hoàng" + ], + "count": 4970970 + }, + { + "id": "VN-6", + "rank": 6, + "localized": [ + "潘" + ], + "romanized": [ + "Phan" + ], + "count": 4386150 + }, + { + "id": "VN-7", + "rank": 7, + "localized": [ + "武" + ], + "romanized": [ + "Vũ/Võ" + ], + "count": 3801330 + }, + { + "id": "VN-8", + "rank": 8, + "localized": [ + "鄧" + ], + "romanized": [ + "Đặng" + ], + "count": 2046870 + }, + { + "id": "VN-9", + "rank": 9, + "localized": [ + "裴" + ], + "romanized": [ + "Bùi" + ], + "count": 1949400 + }, + { + "id": "VN-10", + "rank": 10, + "localized": [ + "杜" + ], + "romanized": [ + "Đỗ" + ], + "count": 1364580 + }, + { + "id": "VN-11", + "rank": 11, + "localized": [ + "胡" + ], + "romanized": [ + "Hồ" + ], + "count": 1267110 + }, + { + "id": "VN-12", + "rank": 12, + "localized": [ + "吳" + ], + "romanized": [ + "Ngô" + ], + "count": 1267110 + }, + { + "id": "VN-13", + "rank": 13, + "localized": [ + "楊" + ], + "romanized": [ + "Dương" + ], + "count": 974700 + }, + { + "id": "VN-14", + "rank": 14, + "localized": [ + "李" + ], + "romanized": [ + "Lý" + ], + "count": 487350 + }, + { + "id": "VN-15", + "rank": 15, + "localized": [ + "費" + ], + "romanized": [ + "Phí" + ], + "count": null + }, + { + "id": "VN-16", + "rank": 16, + "localized": [ + "陶" + ], + "romanized": [ + "Đào" + ], + "count": null + }, + { + "id": "VN-17", + "rank": 17, + "localized": [ + "段" + ], + "romanized": [ + "Đoàn" + ], + "count": null + }, + { + "id": "VN-18", + "rank": 18, + "localized": [ + "王" + ], + "romanized": [ + "Vương" + ], + "count": null + }, + { + "id": "VN-19", + "rank": 19, + "localized": [ + "鄭" + ], + "romanized": [ + "Trịnh" + ], + "count": null + }, + { + "id": "VN-20", + "rank": 20, + "localized": [ + "張" + ], + "romanized": [ + "Trương" + ], + "count": null + }, + { + "id": "VN-21", + "rank": 21, + "localized": [ + "林" + ], + "romanized": [ + "Lâm" + ], + "count": null + }, + { + "id": "VN-22", + "rank": 22, + "localized": [ + "馮" + ], + "romanized": [ + "Phùng" + ], + "count": null + }, + { + "id": "VN-23", + "rank": 23, + "localized": [ + "梅" + ], + "romanized": [ + "Mai" + ], + "count": null + }, + { + "id": "VN-24", + "rank": 24, + "localized": [ + "蘇" + ], + "romanized": [ + "Tô" + ], + "count": null + }, + { + "id": "VN-25", + "rank": 25, + "localized": [ + "何" + ], + "romanized": [ + "Hà" + ], + "count": null + }, + { + "id": "VN-26", + "rank": 26, + "localized": [ + "謝" + ], + "romanized": [ + "Tạ" + ], + "count": null + }, + { + "id": "VN-27", + "rank": 27, + "localized": [ + "申" + ], + "romanized": [ + "Thân" + ], + "count": null + }, + { + "id": "VN-28", + "rank": 28, + "localized": [ + "卓" + ], + "romanized": [ + "Trác" + ], + "count": null + }, + { + "id": "VN-29", + "rank": 29, + "localized": [ + "宋" + ], + "romanized": [ + "Tống" + ], + "count": null + }, + { + "id": "VN-30", + "rank": 30, + "localized": [ + "華" + ], + "romanized": [ + "Hoa" + ], + "count": null + }, + { + "id": "VN-31", + "rank": 31, + "localized": [ + "曲" + ], + "romanized": [ + "Khúc" + ], + "count": null + }, + { + "id": "VN-32", + "rank": 32, + "localized": [ + "徐" + ], + "romanized": [ + "Từ" + ], + "count": null + }, + { + "id": "VN-33", + "rank": 33, + "localized": [ + "常" + ], + "romanized": [ + "Thường" + ], + "count": null + }, + { + "id": "VN-34", + "rank": 34, + "localized": [ + "蕭" + ], + "romanized": [ + "Tiêu" + ], + "count": null + }, + { + "id": "VN-35", + "rank": 35, + "localized": [ + "午" + ], + "romanized": [ + "Ngọ" + ], + "count": null + }, + { + "id": "VN-36", + "rank": 36, + "localized": [ + "金" + ], + "romanized": [ + "Kim" + ], + "count": null + }, + { + "id": "VN-37", + "rank": 37, + "localized": [ + "郭" + ], + "romanized": [ + "Quách" + ], + "count": null + }, + { + "id": "VN-38", + "rank": 38, + "localized": [ + "譚" + ], + "romanized": [ + "Đàm" + ], + "count": null + }, + { + "id": "VN-39", + "rank": 39, + "localized": [ + "趙" + ], + "romanized": [ + "Triệu" + ], + "count": null + }, + { + "id": "VN-40", + "rank": 40, + "localized": [ + "莫" + ], + "romanized": [ + "Mạc" + ], + "count": null + }, + { + "id": "VN-41", + "rank": 41, + "localized": [ + "蔡" + ], + "romanized": [ + "Thái" + ], + "count": null + }, + { + "id": "VN-42", + "rank": 42, + "localized": [ + "劉" + ], + "romanized": [ + "Lưu" + ], + "count": null + }, + { + "id": "VN-43", + "rank": 43, + "localized": [ + "石" + ], + "romanized": [ + "Thạch" + ], + "count": null + }, + { + "id": "VN-44", + "rank": 44, + "localized": [ + "梁" + ], + "romanized": [ + "Lương" + ], + "count": null + } + ], + "TW": [ + { + "id": "TW-1", + "rank": 1, + "localized": [ + "陳", + "陈" + ], + "romanized": [ + "Can", + "Ting", + "Ch'en", + "Chun", + "Chan", + "Tân", + "Chén" + ], + "count": 2625698 + }, + { + "id": "TW-2", + "rank": 2, + "localized": [ + "林" + ], + "romanized": [ + "Lín", + "Lin", + "Liem", + "Lum", + "Lîm", + "Lam", + "Lim" + ], + "count": 1958667 + }, + { + "id": "TW-3", + "rank": 3, + "localized": [ + "黄", + "黃" + ], + "romanized": [ + "Vang", + "Wang", + "Ng", + "Huang", + "Ung", + "Huáng", + "Wong", + "Eng" + ], + "count": 1425985 + }, + { + "id": "TW-4", + "rank": 4, + "localized": [ + "張", + "张" + ], + "romanized": [ + "Zoeng", + "Chang", + "Chong", + "Tiong", + "Teoh", + "Teo", + "Cheong", + "Zhāng", + "Tiu", + "Cheung" + ], + "count": 1242139 + }, + { + "id": "TW-5", + "rank": 5, + "localized": [ + "李" + ], + "romanized": [ + "Lǐ", + "Lei", + "Li", + "Lee", + "Lí", + "Le" + ], + "count": 1209141 + }, + { + "id": "TW-6", + "rank": 6, + "localized": [ + "王" + ], + "romanized": [ + "Wang", + "Heng", + "Ông", + "Wáng", + "Vong" + ], + "count": 968727 + }, + { + "id": "TW-7", + "rank": 7, + "localized": [ + "吳", + "吴" + ], + "romanized": [ + "Gô͘", + "Ngô͘", + "Gouw", + "Wu", + "Wú", + "Woo", + "Goh" + ], + "count": 952228 + }, + { + "id": "TW-8", + "rank": 8, + "localized": [ + "劉", + "刘" + ], + "romanized": [ + "Liu", + "Low", + "Liú", + "Lou", + "Lâu", + "Lao", + "Lau" + ], + "count": 744812 + }, + { + "id": "TW-9", + "rank": 9, + "localized": [ + "蔡" + ], + "romanized": [ + "Ts'ai", + "Tsoi", + "Chua", + "Coi", + "Choi", + "Tsay", + "Cài", + "Choy", + "Choa", + "Chhoà", + "Toy", + "Chai" + ], + "count": 685887 + }, + { + "id": "TW-10", + "rank": 10, + "localized": [ + "楊", + "杨" + ], + "romanized": [ + "Yang", + "Young", + "Iû", + "Joeng", + "Yáng", + "Eaw", + "Ieong", + "Yeong", + "Yeung" + ], + "count": 626962 + } + ], + "AL": [ + { + "id": "AL-1", + "rank": null, + "localized": [ + "Hoxha" + ], + "romanized": [ + "Hoxha" + ], + "count": null + }, + { + "id": "AL-2", + "rank": null, + "localized": [ + "Prifti" + ], + "romanized": [ + "Prifti" + ], + "count": null + }, + { + "id": "AL-3", + "rank": null, + "localized": [ + "Shehu" + ], + "romanized": [ + "Shehu" + ], + "count": null + }, + { + "id": "AL-4", + "rank": null, + "localized": [ + "Dervishi" + ], + "romanized": [ + "Dervishi" + ], + "count": null + }, + { + "id": "AL-5", + "rank": null, + "localized": [ + "Bektashi" + ], + "romanized": [ + "Bektashi" + ], + "count": null + }, + { + "id": "AL-6", + "rank": null, + "localized": [ + "Begu" + ], + "romanized": [ + "Begu" + ], + "count": null + }, + { + "id": "AL-7", + "rank": null, + "localized": [ + "Gjoni" + ], + "romanized": [ + "Gjoni" + ], + "count": null + }, + { + "id": "AL-8", + "rank": null, + "localized": [ + "Leka" + ], + "romanized": [ + "Leka" + ], + "count": null + }, + { + "id": "AL-9", + "rank": null, + "localized": [ + "Gjoni" + ], + "romanized": [ + "Gjoni" + ], + "count": null + }, + { + "id": "AL-10", + "rank": null, + "localized": [ + "Murati" + ], + "romanized": [ + "Murati" + ], + "count": null + }, + { + "id": "AL-11", + "rank": null, + "localized": [ + "Mehmeti" + ], + "romanized": [ + "Mehmeti" + ], + "count": null + }, + { + "id": "AL-12", + "rank": null, + "localized": [ + "Hysi" + ], + "romanized": [ + "Hysi" + ], + "count": null + }, + { + "id": "AL-13", + "rank": null, + "localized": [ + "Gjika" + ], + "romanized": [ + "Gjika" + ], + "count": null + }, + { + "id": "AL-14", + "rank": null, + "localized": [ + "Marku" + ], + "romanized": [ + "Marku" + ], + "count": null + }, + { + "id": "AL-15", + "rank": null, + "localized": [ + "Kola", + "Kolla", + "Nikolla" + ], + "romanized": [ + "Kola", + "Kolla", + "Nikolla" + ], + "count": null + }, + { + "id": "AL-16", + "rank": null, + "localized": [ + "Hasani" + ], + "romanized": [ + "Hasani" + ], + "count": null + }, + { + "id": "AL-17", + "rank": null, + "localized": [ + "Kristi", + "Kristo" + ], + "romanized": [ + "Kristi", + "Kristo" + ], + "count": null + }, + { + "id": "AL-18", + "rank": null, + "localized": [ + "Luka" + ], + "romanized": [ + "Luka" + ], + "count": null + }, + { + "id": "AL-19", + "rank": null, + "localized": [ + "Brahimi" + ], + "romanized": [ + "Brahimi" + ], + "count": null + }, + { + "id": "AL-20", + "rank": null, + "localized": [ + "Sinani" + ], + "romanized": [ + "Sinani" + ], + "count": null + }, + { + "id": "AL-21", + "rank": null, + "localized": [ + "Thanasi" + ], + "romanized": [ + "Thanasi" + ], + "count": null + }, + { + "id": "AL-22", + "rank": null, + "localized": [ + "Halili" + ], + "romanized": [ + "Halili" + ], + "count": null + }, + { + "id": "AL-23", + "rank": null, + "localized": [ + "Abazi" + ], + "romanized": [ + "Abazi" + ], + "count": null + }, + { + "id": "AL-24", + "rank": null, + "localized": [ + "Dibra" + ], + "romanized": [ + "Dibra" + ], + "count": null + }, + { + "id": "AL-25", + "rank": null, + "localized": [ + "Laçi" + ], + "romanized": [ + "Laçi" + ], + "count": null + }, + { + "id": "AL-26", + "rank": null, + "localized": [ + "Shkodra" + ], + "romanized": [ + "Shkodra" + ], + "count": null + }, + { + "id": "AL-27", + "rank": null, + "localized": [ + "Prishtina" + ], + "romanized": [ + "Prishtina" + ], + "count": null + }, + { + "id": "AL-28", + "rank": null, + "localized": [ + "Delvina" + ], + "romanized": [ + "Delvina" + ], + "count": null + }, + { + "id": "AL-29", + "rank": null, + "localized": [ + "Koroveshi" + ], + "romanized": [ + "Koroveshi" + ], + "count": null + }, + { + "id": "AL-30", + "rank": null, + "localized": [ + "Përmeti" + ], + "romanized": [ + "Përmeti" + ], + "count": null + }, + { + "id": "AL-31", + "rank": null, + "localized": [ + "Frashëri" + ], + "romanized": [ + "Frashëri" + ], + "count": null + }, + { + "id": "AL-32", + "rank": null, + "localized": [ + "Gegaj", + "Gega" + ], + "romanized": [ + "Gegaj", + "Gega" + ], + "count": null + }, + { + "id": "AL-33", + "rank": null, + "localized": [ + "Toska", + "Toskaj" + ], + "romanized": [ + "Toska", + "Toskaj" + ], + "count": null + }, + { + "id": "AL-34", + "rank": null, + "localized": [ + "Çami" + ], + "romanized": [ + "Çami" + ], + "count": null + }, + { + "id": "AL-35", + "rank": null, + "localized": [ + "Kelmendi" + ], + "romanized": [ + "Kelmendi" + ], + "count": null + }, + { + "id": "AL-36", + "rank": null, + "localized": [ + "Shkreli" + ], + "romanized": [ + "Shkreli" + ], + "count": null + }, + { + "id": "AL-37", + "rank": null, + "localized": [ + "Berisha" + ], + "romanized": [ + "Berisha" + ], + "count": null + }, + { + "id": "AL-38", + "rank": null, + "localized": [ + "Krasniqi" + ], + "romanized": [ + "Krasniqi" + ], + "count": null + }, + { + "id": "AL-39", + "rank": null, + "localized": [ + "Gashi" + ], + "romanized": [ + "Gashi" + ], + "count": null + }, + { + "id": "AL-40", + "rank": null, + "localized": [ + "Kuqi" + ], + "romanized": [ + "Kuqi" + ], + "count": null + }, + { + "id": "AL-41", + "rank": null, + "localized": [ + "Bardhi" + ], + "romanized": [ + "Bardhi" + ], + "count": null + } + ], + "AT": [ + { + "id": "AT-1", + "rank": 1, + "localized": [ + "Gruber" + ], + "romanized": [ + "Gruber" + ], + "count": 35743 + }, + { + "id": "AT-2", + "rank": 2, + "localized": [ + "Huber" + ], + "romanized": [ + "Huber" + ], + "count": 34686 + }, + { + "id": "AT-3", + "rank": 3, + "localized": [ + "Bauer" + ], + "romanized": [ + "Bauer" + ], + "count": 30208 + }, + { + "id": "AT-4", + "rank": 4, + "localized": [ + "Wagner" + ], + "romanized": [ + "Wagner" + ], + "count": 27763 + }, + { + "id": "AT-5", + "rank": 5, + "localized": [ + "Müller" + ], + "romanized": [ + "Müller" + ], + "count": 26975 + }, + { + "id": "AT-6", + "rank": 6, + "localized": [ + "Pichler" + ], + "romanized": [ + "Pichler" + ], + "count": 24655 + }, + { + "id": "AT-7", + "rank": 7, + "localized": [ + "Steiner" + ], + "romanized": [ + "Steiner" + ], + "count": 24297 + }, + { + "id": "AT-8", + "rank": 8, + "localized": [ + "Moser" + ], + "romanized": [ + "Moser" + ], + "count": 23948 + }, + { + "id": "AT-9", + "rank": 9, + "localized": [ + "Mayer" + ], + "romanized": [ + "Mayer" + ], + "count": 23760 + }, + { + "id": "AT-10", + "rank": 10, + "localized": [ + "Hofer" + ], + "romanized": [ + "Hofer" + ], + "count": 22201 + }, + { + "id": "AT-11", + "rank": 11, + "localized": [ + "Leitner" + ], + "romanized": [ + "Leitner" + ], + "count": 21754 + }, + { + "id": "AT-12", + "rank": 12, + "localized": [ + "Berger" + ], + "romanized": [ + "Berger" + ], + "count": 21342 + }, + { + "id": "AT-13", + "rank": 13, + "localized": [ + "Fuchs" + ], + "romanized": [ + "Fuchs" + ], + "count": 20151 + }, + { + "id": "AT-14", + "rank": 14, + "localized": [ + "Eder" + ], + "romanized": [ + "Eder" + ], + "count": 19201 + }, + { + "id": "AT-15", + "rank": 15, + "localized": [ + "Fischer" + ], + "romanized": [ + "Fischer" + ], + "count": 19174 + }, + { + "id": "AT-16", + "rank": 16, + "localized": [ + "Schmid" + ], + "romanized": [ + "Schmid" + ], + "count": 18941 + }, + { + "id": "AT-17", + "rank": 17, + "localized": [ + "Winkler" + ], + "romanized": [ + "Winkler" + ], + "count": 18046 + }, + { + "id": "AT-18", + "rank": 18, + "localized": [ + "Weber" + ], + "romanized": [ + "Weber" + ], + "count": 17867 + }, + { + "id": "AT-19", + "rank": 19, + "localized": [ + "Schwarz" + ], + "romanized": [ + "Schwarz" + ], + "count": 17562 + }, + { + "id": "AT-20", + "rank": 20, + "localized": [ + "Maier" + ], + "romanized": [ + "Maier" + ], + "count": 17428 + }, + { + "id": "AT-21", + "rank": 21, + "localized": [ + "Schneider" + ], + "romanized": [ + "Schneider" + ], + "count": 17150 + }, + { + "id": "AT-22", + "rank": 22, + "localized": [ + "Reiter" + ], + "romanized": [ + "Reiter" + ], + "count": 16031 + }, + { + "id": "AT-23", + "rank": 23, + "localized": [ + "Mayr" + ], + "romanized": [ + "Mayr" + ], + "count": 15681 + }, + { + "id": "AT-24", + "rank": 24, + "localized": [ + "Schmidt" + ], + "romanized": [ + "Schmidt" + ], + "count": 15583 + }, + { + "id": "AT-25", + "rank": 25, + "localized": [ + "Wimmer" + ], + "romanized": [ + "Wimmer" + ], + "count": 14580 + }, + { + "id": "AT-26", + "rank": 26, + "localized": [ + "Egger" + ], + "romanized": [ + "Egger" + ], + "count": 14419 + }, + { + "id": "AT-27", + "rank": 27, + "localized": [ + "Brunner" + ], + "romanized": [ + "Brunner" + ], + "count": 14347 + }, + { + "id": "AT-28", + "rank": 28, + "localized": [ + "Lang" + ], + "romanized": [ + "Lang" + ], + "count": 14320 + }, + { + "id": "AT-29", + "rank": 29, + "localized": [ + "Baumgartner" + ], + "romanized": [ + "Baumgartner" + ], + "count": 14204 + }, + { + "id": "AT-30", + "rank": 30, + "localized": [ + "Auer" + ], + "romanized": [ + "Auer" + ], + "count": 13926 + }, + { + "id": "AT-31", + "rank": 31, + "localized": [ + "Binder" + ], + "romanized": [ + "Binder" + ], + "count": 13057 + }, + { + "id": "AT-32", + "rank": 32, + "localized": [ + "Lechner" + ], + "romanized": [ + "Lechner" + ], + "count": 12851 + }, + { + "id": "AT-33", + "rank": 33, + "localized": [ + "Wolf" + ], + "romanized": [ + "Wolf" + ], + "count": 12493 + }, + { + "id": "AT-34", + "rank": 34, + "localized": [ + "Wallner" + ], + "romanized": [ + "Wallner" + ], + "count": 12484 + }, + { + "id": "AT-35", + "rank": 35, + "localized": [ + "Aigner" + ], + "romanized": [ + "Aigner" + ], + "count": 12413 + }, + { + "id": "AT-36", + "rank": 36, + "localized": [ + "Ebner" + ], + "romanized": [ + "Ebner" + ], + "count": 12018 + }, + { + "id": "AT-37", + "rank": 37, + "localized": [ + "Koller" + ], + "romanized": [ + "Koller" + ], + "count": 11651 + }, + { + "id": "AT-38", + "rank": 38, + "localized": [ + "Lehner" + ], + "romanized": [ + "Lehner" + ], + "count": 11356 + }, + { + "id": "AT-39", + "rank": 39, + "localized": [ + "Haas" + ], + "romanized": [ + "Haas" + ], + "count": 11293 + }, + { + "id": "AT-40", + "rank": 40, + "localized": [ + "Schuster" + ], + "romanized": [ + "Schuster" + ], + "count": 10460 + }, + { + "id": "AT-41", + "rank": 41, + "localized": [ + "Heilig" + ], + "romanized": [ + "Heilig" + ], + "count": 10397 + } + ], + "BY": [ + { + "id": "BY-1", + "rank": 1, + "localized": [ + "Іваноў", + "Иванов" + ], + "romanized": [ + "Ivanoŭ" + ], + "count": 7000 + }, + { + "id": "BY-2", + "rank": 2, + "localized": [ + "Козлов", + "Казлоў" + ], + "romanized": [ + "Kazloŭ" + ], + "count": 4700 + }, + { + "id": "BY-3", + "rank": 3, + "localized": [ + "Кавалёў", + "Ковалёв" + ], + "romanized": [ + "Kavalioŭ" + ], + "count": 4300 + }, + { + "id": "BY-4", + "rank": 4, + "localized": [ + "Козловский", + "Казлоўскі" + ], + "romanized": [ + "Kazloŭski" + ], + "count": 3900 + }, + { + "id": "BY-5", + "rank": 5, + "localized": [ + "Новік", + "Новик" + ], + "romanized": [ + "Novik" + ], + "count": 3300 + } + ], + "BE": [ + { + "id": "BE-1", + "rank": 1, + "localized": [ + "Peeters" + ], + "romanized": [ + "Peeters" + ], + "count": 31079 + }, + { + "id": "BE-2", + "rank": 2, + "localized": [ + "Janssens" + ], + "romanized": [ + "Janssens" + ], + "count": 28532 + }, + { + "id": "BE-3", + "rank": 3, + "localized": [ + "Maes" + ], + "romanized": [ + "Maes" + ], + "count": 24594 + }, + { + "id": "BE-4", + "rank": 4, + "localized": [ + "Jacobs" + ], + "romanized": [ + "Jacobs" + ], + "count": 19077 + }, + { + "id": "BE-5", + "rank": 5, + "localized": [ + "Mertens" + ], + "romanized": [ + "Mertens" + ], + "count": 17906 + }, + { + "id": "BE-6", + "rank": 6, + "localized": [ + "Willems" + ], + "romanized": [ + "Willems" + ], + "count": 17747 + }, + { + "id": "BE-7", + "rank": 7, + "localized": [ + "Claes" + ], + "romanized": [ + "Claes" + ], + "count": 15798 + }, + { + "id": "BE-8", + "rank": 8, + "localized": [ + "Goossens" + ], + "romanized": [ + "Goossens" + ], + "count": 15269 + }, + { + "id": "BE-9", + "rank": 9, + "localized": [ + "Wouters" + ], + "romanized": [ + "Wouters" + ], + "count": 14999 + }, + { + "id": "BE-10", + "rank": 10, + "localized": [ + "De Smet" + ], + "romanized": [ + "De Smet" + ], + "count": 13484 + }, + { + "id": "BE-11", + "rank": 13, + "localized": [ + "Dubois" + ], + "romanized": [ + "Dubois" + ], + "count": 12387 + }, + { + "id": "BE-12", + "rank": 17, + "localized": [ + "Lambert" + ], + "romanized": [ + "Lambert" + ], + "count": 11232 + }, + { + "id": "BE-13", + "rank": 21, + "localized": [ + "Dupont" + ], + "romanized": [ + "Dupont" + ], + "count": 9795 + }, + { + "id": "BE-14", + "rank": 31, + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ], + "count": 8677 + }, + { + "id": "BE-15", + "rank": 36, + "localized": [ + "Diallo" + ], + "romanized": [ + "Diallo" + ], + "count": 8159 + }, + { + "id": "BE-16", + "rank": 37, + "localized": [ + "Simon" + ], + "romanized": [ + "Simon" + ], + "count": 7533 + }, + { + "id": "BE-17", + "rank": 40, + "localized": [ + "Dumont" + ], + "romanized": [ + "Dumont" + ], + "count": 7389 + }, + { + "id": "BE-18", + "rank": 45, + "localized": [ + "Leclercq" + ], + "romanized": [ + "Leclercq" + ], + "count": 7117 + }, + { + "id": "BE-19", + "rank": 47, + "localized": [ + "Laurent" + ], + "romanized": [ + "Laurent" + ], + "count": 6785 + }, + { + "id": "BE-20", + "rank": 50, + "localized": [ + "Denis" + ], + "romanized": [ + "Denis" + ], + "count": 6636 + }, + { + "id": "BE-21", + "rank": 59, + "localized": [ + "Lejeune" + ], + "romanized": [ + "Lejeune" + ], + "count": 6246 + }, + { + "id": "BE-22", + "rank": 119, + "localized": [ + "Bah" + ], + "romanized": [ + "Bah" + ], + "count": 4516 + }, + { + "id": "BE-23", + "rank": 234, + "localized": [ + "Barry" + ], + "romanized": [ + "Barry" + ], + "count": 3332 + }, + { + "id": "BE-24", + "rank": 318, + "localized": [ + "Nguyen" + ], + "romanized": [ + "Nguyen" + ], + "count": 2736 + }, + { + "id": "BE-25", + "rank": 451, + "localized": [ + "Sow" + ], + "romanized": [ + "Sow" + ], + "count": 2132 + }, + { + "id": "BE-26", + "rank": 956, + "localized": [ + "Benali" + ], + "romanized": [ + "Benali" + ], + "count": 1267 + } + ], + "BA": [ + { + "id": "BA-1", + "rank": null, + "localized": [ + "Hodžić" + ], + "romanized": [ + "Hodžić" + ], + "count": null + }, + { + "id": "BA-2", + "rank": null, + "localized": [ + "Hadžić" + ], + "romanized": [ + "Hadžić" + ], + "count": null + }, + { + "id": "BA-3", + "rank": null, + "localized": [ + "Čengić" + ], + "romanized": [ + "Čengić" + ], + "count": null + }, + { + "id": "BA-4", + "rank": null, + "localized": [ + "Delić" + ], + "romanized": [ + "Delić" + ], + "count": null + }, + { + "id": "BA-5", + "rank": null, + "localized": [ + "Demirović" + ], + "romanized": [ + "Demirović" + ], + "count": null + }, + { + "id": "BA-6", + "rank": null, + "localized": [ + "Kovačević" + ], + "romanized": [ + "Kovačević" + ], + "count": null + }, + { + "id": "BA-7", + "rank": null, + "localized": [ + "Tahirović" + ], + "romanized": [ + "Tahirović" + ], + "count": null + }, + { + "id": "BA-8", + "rank": null, + "localized": [ + "Ferhatović" + ], + "romanized": [ + "Ferhatović" + ], + "count": null + }, + { + "id": "BA-9", + "rank": null, + "localized": [ + "Muratović" + ], + "romanized": [ + "Muratović" + ], + "count": null + }, + { + "id": "BA-10", + "rank": null, + "localized": [ + "Ibrahimović" + ], + "romanized": [ + "Ibrahimović" + ], + "count": null + }, + { + "id": "BA-11", + "rank": null, + "localized": [ + "Hasanović" + ], + "romanized": [ + "Hasanović" + ], + "count": null + }, + { + "id": "BA-12", + "rank": null, + "localized": [ + "Mehmedović" + ], + "romanized": [ + "Mehmedović" + ], + "count": null + }, + { + "id": "BA-13", + "rank": null, + "localized": [ + "Salihović" + ], + "romanized": [ + "Salihović" + ], + "count": null + }, + { + "id": "BA-14", + "rank": null, + "localized": [ + "Terzić" + ], + "romanized": [ + "Terzić" + ], + "count": null + }, + { + "id": "BA-15", + "rank": null, + "localized": [ + "Ademović" + ], + "romanized": [ + "Ademović" + ], + "count": null + }, + { + "id": "BA-16", + "rank": null, + "localized": [ + "Adilović" + ], + "romanized": [ + "Adilović" + ], + "count": null + }, + { + "id": "BA-17", + "rank": null, + "localized": [ + "Delemović" + ], + "romanized": [ + "Delemović" + ], + "count": null + }, + { + "id": "BA-18", + "rank": null, + "localized": [ + "Zukić" + ], + "romanized": [ + "Zukić" + ], + "count": null + }, + { + "id": "BA-19", + "rank": null, + "localized": [ + "Krličević" + ], + "romanized": [ + "Krličević" + ], + "count": null + }, + { + "id": "BA-20", + "rank": null, + "localized": [ + "Suljić" + ], + "romanized": [ + "Suljić" + ], + "count": null + }, + { + "id": "BA-21", + "rank": null, + "localized": [ + "Ahmetović" + ], + "romanized": [ + "Ahmetović" + ], + "count": null + }, + { + "id": "BA-22", + "rank": null, + "localized": [ + "Kovačević" + ], + "romanized": [ + "Kovačević" + ], + "count": null + }, + { + "id": "BA-23", + "rank": null, + "localized": [ + "Subotić" + ], + "romanized": [ + "Subotić" + ], + "count": null + }, + { + "id": "BA-24", + "rank": null, + "localized": [ + "Savić" + ], + "romanized": [ + "Savić" + ], + "count": null + }, + { + "id": "BA-25", + "rank": null, + "localized": [ + "Popović" + ], + "romanized": [ + "Popović" + ], + "count": null + }, + { + "id": "BA-26", + "rank": null, + "localized": [ + "Jovanović" + ], + "romanized": [ + "Jovanović" + ], + "count": null + }, + { + "id": "BA-27", + "rank": null, + "localized": [ + "Petrović" + ], + "romanized": [ + "Petrović" + ], + "count": null + }, + { + "id": "BA-28", + "rank": null, + "localized": [ + "Đurić" + ], + "romanized": [ + "Đurić" + ], + "count": null + }, + { + "id": "BA-29", + "rank": null, + "localized": [ + "Babić" + ], + "romanized": [ + "Babić" + ], + "count": null + }, + { + "id": "BA-30", + "rank": null, + "localized": [ + "Lukić" + ], + "romanized": [ + "Lukić" + ], + "count": null + }, + { + "id": "BA-31", + "rank": null, + "localized": [ + "Knežević" + ], + "romanized": [ + "Knežević" + ], + "count": null + }, + { + "id": "BA-32", + "rank": null, + "localized": [ + "Marković" + ], + "romanized": [ + "Marković" + ], + "count": null + }, + { + "id": "BA-33", + "rank": null, + "localized": [ + "Ilić" + ], + "romanized": [ + "Ilić" + ], + "count": null + }, + { + "id": "BA-34", + "rank": null, + "localized": [ + "Đukić" + ], + "romanized": [ + "Đukić" + ], + "count": null + }, + { + "id": "BA-35", + "rank": null, + "localized": [ + "Vuković" + ], + "romanized": [ + "Vuković" + ], + "count": null + }, + { + "id": "BA-36", + "rank": null, + "localized": [ + "Vujić" + ], + "romanized": [ + "Vujić" + ], + "count": null + }, + { + "id": "BA-37", + "rank": null, + "localized": [ + "Simić" + ], + "romanized": [ + "Simić" + ], + "count": null + }, + { + "id": "BA-38", + "rank": null, + "localized": [ + "Radić" + ], + "romanized": [ + "Radić" + ], + "count": null + }, + { + "id": "BA-39", + "rank": null, + "localized": [ + "Nikolić" + ], + "romanized": [ + "Nikolić" + ], + "count": null + }, + { + "id": "BA-40", + "rank": null, + "localized": [ + "Marić" + ], + "romanized": [ + "Marić" + ], + "count": null + }, + { + "id": "BA-41", + "rank": null, + "localized": [ + "Mitrović" + ], + "romanized": [ + "Mitrović" + ], + "count": null + }, + { + "id": "BA-42", + "rank": null, + "localized": [ + "Tomić" + ], + "romanized": [ + "Tomić" + ], + "count": null + }, + { + "id": "BA-43", + "rank": null, + "localized": [ + "Božić" + ], + "romanized": [ + "Božić" + ], + "count": null + }, + { + "id": "BA-44", + "rank": null, + "localized": [ + "Golubović" + ], + "romanized": [ + "Golubović" + ], + "count": null + }, + { + "id": "BA-45", + "rank": null, + "localized": [ + "Mirković" + ], + "romanized": [ + "Mirković" + ], + "count": null + } + ], + "BG": [ + { + "id": "BG-1", + "rank": 1, + "localized": [ + "Иванов", + "Иванова" + ], + "romanized": [ + "Ivanov", + "Ivanova" + ], + "count": 277308 + }, + { + "id": "BG-2", + "rank": 2, + "localized": [ + "Георгиева", + "Георгиев" + ], + "romanized": [ + "Georgiev", + "Georgieva" + ], + "count": 213511 + }, + { + "id": "BG-3", + "rank": 3, + "localized": [ + "Димитрова", + "Димитров" + ], + "romanized": [ + "Dimitrov", + "Dimitrova" + ], + "count": 205774 + }, + { + "id": "BG-4", + "rank": 4, + "localized": [ + "Петрова", + "Петров" + ], + "romanized": [ + "Petrov", + "Petrova" + ], + "count": 138886 + }, + { + "id": "BG-5", + "rank": 5, + "localized": [ + "Николова", + "Николов" + ], + "romanized": [ + "Nikolov", + "Nikolova" + ], + "count": 119528 + }, + { + "id": "BG-6", + "rank": 6, + "localized": [ + "Христов", + "Христова" + ], + "romanized": [ + "Hristov", + "Hristova" + ], + "count": 110852 + }, + { + "id": "BG-7", + "rank": 7, + "localized": [ + "Стоянов", + "Стоянова" + ], + "romanized": [ + "Stoyanova", + "Stoyanov" + ], + "count": 109475 + }, + { + "id": "BG-8", + "rank": 8, + "localized": [ + "Тодоров", + "Тодорова" + ], + "romanized": [ + "Todorova", + "Todorov" + ], + "count": 106414 + }, + { + "id": "BG-9", + "rank": 9, + "localized": [ + "Илиев", + "Илиева" + ], + "romanized": [ + "Iliev", + "Ilieva" + ], + "count": 91075 + }, + { + "id": "BG-10", + "rank": 10, + "localized": [ + "Ангелова", + "Ангелов" + ], + "romanized": [ + "Angelov", + "Angelova" + ], + "count": 89614 + } + ], + "HR": [ + { + "id": "HR-1", + "rank": 1, + "localized": [ + "Horvat" + ], + "romanized": [ + "Horvat" + ], + "count": 21618 + }, + { + "id": "HR-2", + "rank": 2, + "localized": [ + "Kovačević" + ], + "romanized": [ + "Kovačević" + ], + "count": 15160 + }, + { + "id": "HR-3", + "rank": 3, + "localized": [ + "Babić" + ], + "romanized": [ + "Babić" + ], + "count": 12840 + }, + { + "id": "HR-4", + "rank": 4, + "localized": [ + "Marić" + ], + "romanized": [ + "Marić" + ], + "count": 11555 + }, + { + "id": "HR-5", + "rank": 5, + "localized": [ + "Jurić" + ], + "romanized": [ + "Jurić" + ], + "count": 11163 + }, + { + "id": "HR-6", + "rank": 6, + "localized": [ + "Novak" + ], + "romanized": [ + "Novak" + ], + "count": 10794 + }, + { + "id": "HR-7", + "rank": 7, + "localized": [ + "Kovačić" + ], + "romanized": [ + "Kovačić" + ], + "count": 10546 + }, + { + "id": "HR-8", + "rank": 8, + "localized": [ + "Knežević" + ], + "romanized": [ + "Knežević" + ], + "count": 10334 + }, + { + "id": "HR-9", + "rank": 9, + "localized": [ + "Vuković" + ], + "romanized": [ + "Vuković" + ], + "count": 10191 + }, + { + "id": "HR-10", + "rank": 10, + "localized": [ + "Marković" + ], + "romanized": [ + "Marković" + ], + "count": 9854 + }, + { + "id": "HR-11", + "rank": 11, + "localized": [ + "Petrović" + ], + "romanized": [ + "Petrović" + ], + "count": 9614 + }, + { + "id": "HR-12", + "rank": 12, + "localized": [ + "Matić" + ], + "romanized": [ + "Matić" + ], + "count": 9960 + }, + { + "id": "HR-13", + "rank": 13, + "localized": [ + "Tomić" + ], + "romanized": [ + "Tomić" + ], + "count": 9464 + }, + { + "id": "HR-14", + "rank": 14, + "localized": [ + "Pavlović" + ], + "romanized": [ + "Pavlović" + ], + "count": 8601 + }, + { + "id": "HR-15", + "rank": 15, + "localized": [ + "Kovač" + ], + "romanized": [ + "Kovač" + ], + "count": 8542 + }, + { + "id": "HR-16", + "rank": 16, + "localized": [ + "Božić" + ], + "romanized": [ + "Božić" + ], + "count": 8258 + }, + { + "id": "HR-17", + "rank": 17, + "localized": [ + "Blažević" + ], + "romanized": [ + "Blažević" + ], + "count": 8152 + }, + { + "id": "HR-18", + "rank": 18, + "localized": [ + "Grgić" + ], + "romanized": [ + "Grgić" + ], + "count": 8010 + }, + { + "id": "HR-19", + "rank": 19, + "localized": [ + "Pavić" + ], + "romanized": [ + "Pavić" + ], + "count": 7538 + }, + { + "id": "HR-20", + "rank": 20, + "localized": [ + "Radić" + ], + "romanized": [ + "Radić" + ], + "count": 7406 + }, + { + "id": "HR-21", + "rank": 21, + "localized": [ + "Perić" + ], + "romanized": [ + "Perić" + ], + "count": 7351 + }, + { + "id": "HR-22", + "rank": 22, + "localized": [ + "Filipović" + ], + "romanized": [ + "Filipović" + ], + "count": 7321 + }, + { + "id": "HR-23", + "rank": 23, + "localized": [ + "Šarić" + ], + "romanized": [ + "Šarić" + ], + "count": 7184 + }, + { + "id": "HR-24", + "rank": 24, + "localized": [ + "Lovrić" + ], + "romanized": [ + "Lovrić" + ], + "count": 7131 + }, + { + "id": "HR-25", + "rank": 25, + "localized": [ + "Vidović" + ], + "romanized": [ + "Vidović" + ], + "count": 6986 + }, + { + "id": "HR-26", + "rank": 26, + "localized": [ + "Perković" + ], + "romanized": [ + "Perković" + ], + "count": 6903 + }, + { + "id": "HR-27", + "rank": 27, + "localized": [ + "Popović" + ], + "romanized": [ + "Popović" + ], + "count": 6797 + }, + { + "id": "HR-28", + "rank": 28, + "localized": [ + "Bošnjak" + ], + "romanized": [ + "Bošnjak" + ], + "count": 6760 + }, + { + "id": "HR-29", + "rank": 29, + "localized": [ + "Jukić" + ], + "romanized": [ + "Jukić" + ], + "count": 6653 + }, + { + "id": "HR-30", + "rank": 30, + "localized": [ + "Barišić" + ], + "romanized": [ + "Barišić" + ], + "count": 6417 + } + ], + "CZ": [ + { + "id": "CZ-1", + "rank": 1, + "localized": [ + "Novák", + "Nováková" + ], + "romanized": [ + "Novák", + "Nováková" + ], + "count": 69726 + }, + { + "id": "CZ-2", + "rank": 2, + "localized": [ + "Svobodová", + "Svoboda" + ], + "romanized": [ + "Svobodová", + "Svoboda" + ], + "count": 51861 + }, + { + "id": "CZ-3", + "rank": 3, + "localized": [ + "Novotný", + "Novotná" + ], + "romanized": [ + "Novotný", + "Novotná" + ], + "count": 49648 + }, + { + "id": "CZ-4", + "rank": 4, + "localized": [ + "Dvořáková", + "Dvořák" + ], + "romanized": [ + "Dvořáková", + "Dvořák" + ], + "count": 45744 + }, + { + "id": "CZ-5", + "rank": 5, + "localized": [ + "Černá", + "Černý" + ], + "romanized": [ + "Černá", + "Černý" + ], + "count": 36317 + }, + { + "id": "CZ-6", + "rank": 6, + "localized": [ + "Procházková", + "Procházka" + ], + "romanized": [ + "Procházková", + "Procházka" + ], + "count": 32891 + }, + { + "id": "CZ-7", + "rank": 7, + "localized": [ + "Kučera", + "Kučerová" + ], + "romanized": [ + "Kučera", + "Kučerová" + ], + "count": 30876 + }, + { + "id": "CZ-8", + "rank": 8, + "localized": [ + "Veselý", + "Veselá" + ], + "romanized": [ + "Veselý", + "Veselá" + ], + "count": 26376 + }, + { + "id": "CZ-9", + "rank": 9, + "localized": [ + "Horáková", + "Horák" + ], + "romanized": [ + "Horáková", + "Horák" + ], + "count": 24961 + }, + { + "id": "CZ-10", + "rank": 10, + "localized": [ + "Němec", + "Němcová" + ], + "romanized": [ + "Němec", + "Němcová" + ], + "count": 22755 + } + ], + "DK": [ + { + "id": "DK-1", + "rank": 1, + "localized": [ + "Nielsen" + ], + "romanized": [ + "Nielsen" + ], + "count": 236397 + }, + { + "id": "DK-2", + "rank": 2, + "localized": [ + "Jensen" + ], + "romanized": [ + "Jensen" + ], + "count": 233713 + }, + { + "id": "DK-3", + "rank": 3, + "localized": [ + "Hansen" + ], + "romanized": [ + "Hansen" + ], + "count": 197548 + }, + { + "id": "DK-4", + "rank": 4, + "localized": [ + "Pedersen" + ], + "romanized": [ + "Pedersen" + ], + "count": 150161 + }, + { + "id": "DK-5", + "rank": 5, + "localized": [ + "Andersen" + ], + "romanized": [ + "Andersen" + ], + "count": 149643 + }, + { + "id": "DK-6", + "rank": 6, + "localized": [ + "Christensen" + ], + "romanized": [ + "Christensen" + ], + "count": 111816 + }, + { + "id": "DK-7", + "rank": 7, + "localized": [ + "Larsen" + ], + "romanized": [ + "Larsen" + ], + "count": 107721 + }, + { + "id": "DK-8", + "rank": 8, + "localized": [ + "Sørensen" + ], + "romanized": [ + "Sørensen" + ], + "count": 102848 + }, + { + "id": "DK-9", + "rank": 9, + "localized": [ + "Rasmussen" + ], + "romanized": [ + "Rasmussen" + ], + "count": 88351 + }, + { + "id": "DK-10", + "rank": 10, + "localized": [ + "Jørgensen" + ], + "romanized": [ + "Jørgensen" + ], + "count": 82285 + }, + { + "id": "DK-11", + "rank": 11, + "localized": [ + "Petersen" + ], + "romanized": [ + "Petersen" + ], + "count": 72757 + }, + { + "id": "DK-12", + "rank": 12, + "localized": [ + "Madsen" + ], + "romanized": [ + "Madsen" + ], + "count": 60676 + }, + { + "id": "DK-13", + "rank": 13, + "localized": [ + "Kristensen" + ], + "romanized": [ + "Kristensen" + ], + "count": 57758 + }, + { + "id": "DK-14", + "rank": 14, + "localized": [ + "Olsen" + ], + "romanized": [ + "Olsen" + ], + "count": 44629 + }, + { + "id": "DK-15", + "rank": 15, + "localized": [ + "Thomsen" + ], + "romanized": [ + "Thomsen" + ], + "count": 38244 + }, + { + "id": "DK-16", + "rank": 16, + "localized": [ + "Christiansen" + ], + "romanized": [ + "Christiansen" + ], + "count": 35143 + }, + { + "id": "DK-17", + "rank": 17, + "localized": [ + "Poulsen" + ], + "romanized": [ + "Poulsen" + ], + "count": 30545 + }, + { + "id": "DK-18", + "rank": 18, + "localized": [ + "Johansen" + ], + "romanized": [ + "Johansen" + ], + "count": 29866 + }, + { + "id": "DK-19", + "rank": 19, + "localized": [ + "Møller" + ], + "romanized": [ + "Møller" + ], + "count": 29481 + }, + { + "id": "DK-20", + "rank": 20, + "localized": [ + "Mortensen" + ], + "romanized": [ + "Mortensen" + ], + "count": 28124 + } + ], + "FO": [ + { + "id": "FO-1", + "rank": 1, + "localized": [ + "Joensen" + ], + "romanized": [ + "Joensen" + ], + "count": 2372 + }, + { + "id": "FO-2", + "rank": 2, + "localized": [ + "Hansen" + ], + "romanized": [ + "Hansen" + ], + "count": 2181 + }, + { + "id": "FO-3", + "rank": 3, + "localized": [ + "Jacobsen" + ], + "romanized": [ + "Jacobsen" + ], + "count": 2051 + }, + { + "id": "FO-4", + "rank": 4, + "localized": [ + "Olsen" + ], + "romanized": [ + "Olsen" + ], + "count": 1670 + }, + { + "id": "FO-5", + "rank": 5, + "localized": [ + "Petersen" + ], + "romanized": [ + "Petersen" + ], + "count": 1298 + }, + { + "id": "FO-6", + "rank": 6, + "localized": [ + "Poulsen" + ], + "romanized": [ + "Poulsen" + ], + "count": 1257 + }, + { + "id": "FO-7", + "rank": 7, + "localized": [ + "Johannesen" + ], + "romanized": [ + "Johannesen" + ], + "count": 973 + }, + { + "id": "FO-8", + "rank": 8, + "localized": [ + "Thomsen" + ], + "romanized": [ + "Thomsen" + ], + "count": 719 + }, + { + "id": "FO-9", + "rank": 9, + "localized": [ + "Nielsen" + ], + "romanized": [ + "Nielsen" + ], + "count": 647 + }, + { + "id": "FO-10", + "rank": 10, + "localized": [ + "Rasmussen" + ], + "romanized": [ + "Rasmussen" + ], + "count": 539 + }, + { + "id": "FO-11", + "rank": 11, + "localized": [ + "Djurhuus" + ], + "romanized": [ + "Djurhuus" + ], + "count": 537 + }, + { + "id": "FO-12", + "rank": 12, + "localized": [ + "Johansen" + ], + "romanized": [ + "Johansen" + ], + "count": 535 + }, + { + "id": "FO-13", + "rank": 13, + "localized": [ + "Simonsen" + ], + "romanized": [ + "Simonsen" + ], + "count": 526 + }, + { + "id": "FO-14", + "rank": 14, + "localized": [ + "Danielsen" + ], + "romanized": [ + "Danielsen" + ], + "count": 524 + }, + { + "id": "FO-15", + "rank": 15, + "localized": [ + "Jensen" + ], + "romanized": [ + "Jensen" + ], + "count": 492 + }, + { + "id": "FO-16", + "rank": 16, + "localized": [ + "Mortensen" + ], + "romanized": [ + "Mortensen" + ], + "count": 471 + }, + { + "id": "FO-17", + "rank": 17, + "localized": [ + "Højgaard" + ], + "romanized": [ + "Højgaard" + ], + "count": 462 + }, + { + "id": "FO-18", + "rank": 18, + "localized": [ + "Mikkelsen" + ], + "romanized": [ + "Mikkelsen" + ], + "count": 432 + }, + { + "id": "FO-19", + "rank": 19, + "localized": [ + "Sørensen" + ], + "romanized": [ + "Sørensen" + ], + "count": 420 + }, + { + "id": "FO-20", + "rank": 20, + "localized": [ + "Dam" + ], + "romanized": [ + "Dam" + ], + "count": 418 + } + ], + "EE": [ + { + "id": "EE-1", + "rank": 1, + "localized": [ + "Ivanov" + ], + "romanized": [ + "Ivanov" + ], + "count": 6789 + }, + { + "id": "EE-2", + "rank": 2, + "localized": [ + "Tamm" + ], + "romanized": [ + "Tamm" + ], + "count": 5241 + }, + { + "id": "EE-3", + "rank": 3, + "localized": [ + "Saar" + ], + "romanized": [ + "Saar" + ], + "count": 4352 + }, + { + "id": "EE-4", + "rank": 4, + "localized": [ + "Sepp" + ], + "romanized": [ + "Sepp" + ], + "count": 3624 + }, + { + "id": "EE-5", + "rank": 5, + "localized": [ + "Mägi" + ], + "romanized": [ + "Mägi" + ], + "count": 3613 + }, + { + "id": "EE-6", + "rank": 6, + "localized": [ + "Smirnov" + ], + "romanized": [ + "Smirnov" + ], + "count": 3402 + }, + { + "id": "EE-7", + "rank": 7, + "localized": [ + "Vassiljev" + ], + "romanized": [ + "Vassiljev" + ], + "count": 3153 + }, + { + "id": "EE-8", + "rank": 8, + "localized": [ + "Petrov" + ], + "romanized": [ + "Petrov" + ], + "count": 2932 + }, + { + "id": "EE-9", + "rank": 9, + "localized": [ + "Kask" + ], + "romanized": [ + "Kask" + ], + "count": 2847 + }, + { + "id": "EE-10", + "rank": 10, + "localized": [ + "Kukk" + ], + "romanized": [ + "Kukk" + ], + "count": 2728 + }, + { + "id": "EE-11", + "rank": 11, + "localized": [ + "Kuznetsov" + ], + "romanized": [ + "Kuznetsov" + ], + "count": 2339 + }, + { + "id": "EE-12", + "rank": 12, + "localized": [ + "Rebane" + ], + "romanized": [ + "Rebane" + ], + "count": 2265 + }, + { + "id": "EE-13", + "rank": 13, + "localized": [ + "Karpin" + ], + "romanized": [ + "Karpin" + ], + "count": 2265 + }, + { + "id": "EE-14", + "rank": 14, + "localized": [ + "Ilves" + ], + "romanized": [ + "Ilves" + ], + "count": 2165 + }, + { + "id": "EE-15", + "rank": 15, + "localized": [ + "Mihhailov" + ], + "romanized": [ + "Mihhailov" + ], + "count": 1968 + }, + { + "id": "EE-16", + "rank": 16, + "localized": [ + "Pärn" + ], + "romanized": [ + "Pärn" + ], + "count": 1933 + }, + { + "id": "EE-17", + "rank": 17, + "localized": [ + "Pavlov" + ], + "romanized": [ + "Pavlov" + ], + "count": 1927 + }, + { + "id": "EE-18", + "rank": 18, + "localized": [ + "Semjonov" + ], + "romanized": [ + "Semjonov" + ], + "count": 1909 + }, + { + "id": "EE-19", + "rank": 19, + "localized": [ + "Koppel" + ], + "romanized": [ + "Koppel" + ], + "count": 1882 + }, + { + "id": "EE-20", + "rank": 20, + "localized": [ + "Andrejev" + ], + "romanized": [ + "Andrejev" + ], + "count": 1862 + }, + { + "id": "EE-21", + "rank": 21, + "localized": [ + "Aleksejev" + ], + "romanized": [ + "Aleksejev" + ], + "count": 1845 + } + ], + "FI": [ + { + "id": "FI-1", + "rank": 1, + "localized": [ + "Korhonen" + ], + "romanized": [ + "Korhonen" + ], + "count": 23312 + }, + { + "id": "FI-2", + "rank": 2, + "localized": [ + "Virtanen" + ], + "romanized": [ + "Virtanen" + ], + "count": 23020 + }, + { + "id": "FI-3", + "rank": 3, + "localized": [ + "Mäkinen" + ], + "romanized": [ + "Mäkinen" + ], + "count": 21014 + }, + { + "id": "FI-4", + "rank": 4, + "localized": [ + "Nieminen" + ], + "romanized": [ + "Nieminen" + ], + "count": 20969 + }, + { + "id": "FI-5", + "rank": 5, + "localized": [ + "Mäkelä" + ], + "romanized": [ + "Mäkelä" + ], + "count": 19538 + }, + { + "id": "FI-6", + "rank": 6, + "localized": [ + "Hämäläinen" + ], + "romanized": [ + "Hämäläinen" + ], + "count": 19129 + }, + { + "id": "FI-7", + "rank": 7, + "localized": [ + "Laine" + ], + "romanized": [ + "Laine" + ], + "count": 18752 + }, + { + "id": "FI-8", + "rank": 8, + "localized": [ + "Heikkinen" + ], + "romanized": [ + "Heikkinen" + ], + "count": 17926 + }, + { + "id": "FI-9", + "rank": 9, + "localized": [ + "Koskinen" + ], + "romanized": [ + "Koskinen" + ], + "count": 17737 + }, + { + "id": "FI-10", + "rank": 10, + "localized": [ + "Järvinen" + ], + "romanized": [ + "Järvinen" + ], + "count": 16802 + }, + { + "id": "FI-11", + "rank": 11, + "localized": [ + "Lehtonen" + ], + "romanized": [ + "Lehtonen" + ], + "count": 16649 + }, + { + "id": "FI-12", + "rank": 12, + "localized": [ + "Lehtinen" + ], + "romanized": [ + "Lehtinen" + ], + "count": 15602 + }, + { + "id": "FI-13", + "rank": 13, + "localized": [ + "Saarinen" + ], + "romanized": [ + "Saarinen" + ], + "count": 15295 + }, + { + "id": "FI-14", + "rank": 14, + "localized": [ + "Salminen" + ], + "romanized": [ + "Salminen" + ], + "count": 15087 + }, + { + "id": "FI-15", + "rank": 15, + "localized": [ + "Heinonen" + ], + "romanized": [ + "Heinonen" + ], + "count": 14957 + }, + { + "id": "FI-16", + "rank": 16, + "localized": [ + "Niemi" + ], + "romanized": [ + "Niemi" + ], + "count": 14951 + }, + { + "id": "FI-17", + "rank": 17, + "localized": [ + "Heikkilä" + ], + "romanized": [ + "Heikkilä" + ], + "count": 14558 + }, + { + "id": "FI-18", + "rank": 18, + "localized": [ + "Kinnunen" + ], + "romanized": [ + "Kinnunen" + ], + "count": 14319 + }, + { + "id": "FI-19", + "rank": 19, + "localized": [ + "Salonen" + ], + "romanized": [ + "Salonen" + ], + "count": 14270 + }, + { + "id": "FI-20", + "rank": 20, + "localized": [ + "Turunen" + ], + "romanized": [ + "Turunen" + ], + "count": 13802 + }, + { + "id": "FI-21", + "rank": 21, + "localized": [ + "Salo" + ], + "romanized": [ + "Salo" + ], + "count": 13487 + }, + { + "id": "FI-22", + "rank": 22, + "localized": [ + "Laitinen" + ], + "romanized": [ + "Laitinen" + ], + "count": 13085 + }, + { + "id": "FI-23", + "rank": 23, + "localized": [ + "Tuominen" + ], + "romanized": [ + "Tuominen" + ], + "count": 12852 + }, + { + "id": "FI-24", + "rank": 24, + "localized": [ + "Rantanen" + ], + "romanized": [ + "Rantanen" + ], + "count": 12834 + }, + { + "id": "FI-25", + "rank": 25, + "localized": [ + "Karjalainen" + ], + "romanized": [ + "Karjalainen" + ], + "count": 12830 + }, + { + "id": "FI-26", + "rank": 26, + "localized": [ + "Jokinen" + ], + "romanized": [ + "Jokinen" + ], + "count": 12514 + }, + { + "id": "FI-27", + "rank": 27, + "localized": [ + "Mattila" + ], + "romanized": [ + "Mattila" + ], + "count": 12330 + }, + { + "id": "FI-28", + "rank": 28, + "localized": [ + "Savolainen" + ], + "romanized": [ + "Savolainen" + ], + "count": 11592 + }, + { + "id": "FI-29", + "rank": 29, + "localized": [ + "Lahtinen" + ], + "romanized": [ + "Lahtinen" + ], + "count": 11470 + }, + { + "id": "FI-30", + "rank": 30, + "localized": [ + "Ahonen" + ], + "romanized": [ + "Ahonen" + ], + "count": 11238 + } + ], + "FR": [ + { + "id": "FR-1", + "rank": 1, + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ], + "count": 235846 + }, + { + "id": "FR-2", + "rank": 2, + "localized": [ + "Bernard" + ], + "romanized": [ + "Bernard" + ], + "count": 105132 + }, + { + "id": "FR-3", + "rank": 3, + "localized": [ + "Dubois" + ], + "romanized": [ + "Dubois" + ], + "count": 95998 + }, + { + "id": "FR-4", + "rank": 4, + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ], + "count": 95387 + }, + { + "id": "FR-5", + "rank": 5, + "localized": [ + "Robert" + ], + "romanized": [ + "Robert" + ], + "count": 91393 + }, + { + "id": "FR-6", + "rank": 6, + "localized": [ + "Richard" + ], + "romanized": [ + "Richard" + ], + "count": 90689 + }, + { + "id": "FR-7", + "rank": 7, + "localized": [ + "Petit" + ], + "romanized": [ + "Petit" + ], + "count": 88318 + }, + { + "id": "FR-8", + "rank": 8, + "localized": [ + "Durand" + ], + "romanized": [ + "Durand" + ], + "count": 84252 + }, + { + "id": "FR-9", + "rank": 9, + "localized": [ + "Leroy" + ], + "romanized": [ + "Leroy" + ], + "count": 78868 + }, + { + "id": "FR-10", + "rank": 10, + "localized": [ + "Moreau" + ], + "romanized": [ + "Moreau" + ], + "count": 78177 + }, + { + "id": "FR-11", + "rank": 11, + "localized": [ + "Simon" + ], + "romanized": [ + "Simon" + ], + "count": 76655 + }, + { + "id": "FR-12", + "rank": 12, + "localized": [ + "Laurent" + ], + "romanized": [ + "Laurent" + ], + "count": 75307 + }, + { + "id": "FR-13", + "rank": 13, + "localized": [ + "Lefebvre" + ], + "romanized": [ + "Lefebvre" + ], + "count": 74564 + }, + { + "id": "FR-14", + "rank": 14, + "localized": [ + "Michel" + ], + "romanized": [ + "Michel" + ], + "count": 74318 + }, + { + "id": "FR-15", + "rank": 15, + "localized": [ + "Garcia" + ], + "romanized": [ + "Garcia" + ], + "count": 68720 + }, + { + "id": "FR-16", + "rank": 16, + "localized": [ + "David" + ], + "romanized": [ + "David" + ], + "count": 61762 + }, + { + "id": "FR-17", + "rank": 17, + "localized": [ + "Bertrand" + ], + "romanized": [ + "Bertrand" + ], + "count": 59817 + }, + { + "id": "FR-18", + "rank": 18, + "localized": [ + "Roux" + ], + "romanized": [ + "Roux" + ], + "count": 59440 + }, + { + "id": "FR-19", + "rank": 19, + "localized": [ + "Vincent" + ], + "romanized": [ + "Vincent" + ], + "count": 57351 + }, + { + "id": "FR-20", + "rank": 20, + "localized": [ + "Fournier" + ], + "romanized": [ + "Fournier" + ], + "count": 57047 + }, + { + "id": "FR-21", + "rank": 21, + "localized": [ + "Morel" + ], + "romanized": [ + "Morel" + ], + "count": 56760 + }, + { + "id": "FR-22", + "rank": 22, + "localized": [ + "Girard" + ], + "romanized": [ + "Girard" + ], + "count": 55642 + }, + { + "id": "FR-23", + "rank": 23, + "localized": [ + "André" + ], + "romanized": [ + "André" + ], + "count": 55228 + }, + { + "id": "FR-24", + "rank": 24, + "localized": [ + "Lefèvre" + ], + "romanized": [ + "Lefèvre" + ], + "count": 53670 + }, + { + "id": "FR-25", + "rank": 25, + "localized": [ + "Mercier" + ], + "romanized": [ + "Mercier" + ], + "count": 53622 + }, + { + "id": "FR-26", + "rank": 26, + "localized": [ + "Dupont" + ], + "romanized": [ + "Dupont" + ], + "count": 53405 + }, + { + "id": "FR-27", + "rank": 27, + "localized": [ + "Lambert" + ], + "romanized": [ + "Lambert" + ], + "count": 51543 + }, + { + "id": "FR-28", + "rank": 28, + "localized": [ + "Bonnet" + ], + "romanized": [ + "Bonnet" + ], + "count": 50999 + }, + { + "id": "FR-29", + "rank": 29, + "localized": [ + "François" + ], + "romanized": [ + "François" + ], + "count": 50612 + }, + { + "id": "FR-30", + "rank": 30, + "localized": [ + "Martinez" + ], + "romanized": [ + "Martinez" + ], + "count": 49762 + } + ], + "DE": [ + { + "id": "DE-1", + "rank": 1, + "localized": [ + "Müller" + ], + "romanized": [ + "Müller" + ], + "count": 790400 + }, + { + "id": "DE-2", + "rank": 2, + "localized": [ + "Schmidt" + ], + "romanized": [ + "Schmidt" + ], + "count": 574080 + }, + { + "id": "DE-3", + "rank": 3, + "localized": [ + "Schneider" + ], + "romanized": [ + "Schneider" + ], + "count": 332800 + }, + { + "id": "DE-4", + "rank": 4, + "localized": [ + "Fischer" + ], + "romanized": [ + "Fischer" + ], + "count": 291200 + }, + { + "id": "DE-5", + "rank": 5, + "localized": [ + "Meyer" + ], + "romanized": [ + "Meyer" + ], + "count": 274560 + }, + { + "id": "DE-6", + "rank": 6, + "localized": [ + "Weber" + ], + "romanized": [ + "Weber" + ], + "count": 249600 + }, + { + "id": "DE-7", + "rank": 7, + "localized": [ + "Wagner" + ], + "romanized": [ + "Wagner" + ], + "count": 224640 + }, + { + "id": "DE-8", + "rank": 8, + "localized": [ + "Schulz" + ], + "romanized": [ + "Schulz" + ], + "count": 224640 + }, + { + "id": "DE-9", + "rank": 9, + "localized": [ + "Becker" + ], + "romanized": [ + "Becker" + ], + "count": 224640 + }, + { + "id": "DE-10", + "rank": 10, + "localized": [ + "Hoffmann" + ], + "romanized": [ + "Hoffmann" + ], + "count": 216320 + } + ], + "GR": [ + { + "id": "GR-1", + "rank": null, + "localized": [ + "Σαμαράς" + ], + "romanized": [ + "Samaras" + ], + "count": null + }, + { + "id": "GR-2", + "rank": null, + "localized": [ + "Παπουτσής" + ], + "romanized": [ + "Papoutsis" + ], + "count": null + }, + { + "id": "GR-3", + "rank": null, + "localized": [ + "Κρητικός" + ], + "romanized": [ + "Kritikos" + ], + "count": null + }, + { + "id": "GR-4", + "rank": null, + "localized": [ + "Αϊβαλιώτης" + ], + "romanized": [ + "Aivaliotis" + ], + "count": null + }, + { + "id": "GR-5", + "rank": null, + "localized": [ + "Κοντός" + ], + "romanized": [ + "Kontos" + ], + "count": null + }, + { + "id": "GR-6", + "rank": null, + "localized": [ + "Μυταράς" + ], + "romanized": [ + "Mytaras" + ], + "count": null + }, + { + "id": "GR-7", + "rank": null, + "localized": [ + "Κουφός" + ], + "romanized": [ + "Koufos" + ], + "count": null + } + ], + "HU": [ + { + "id": "HU-1", + "rank": 1, + "localized": [ + "Nagy" + ], + "romanized": [ + "Nagy" + ], + "count": null + }, + { + "id": "HU-2", + "rank": 2, + "localized": [ + "Kovács" + ], + "romanized": [ + "Kovács" + ], + "count": null + }, + { + "id": "HU-3", + "rank": 3, + "localized": [ + "Tóth" + ], + "romanized": [ + "Tóth" + ], + "count": null + }, + { + "id": "HU-4", + "rank": 4, + "localized": [ + "Szabó" + ], + "romanized": [ + "Szabó" + ], + "count": null + }, + { + "id": "HU-5", + "rank": 5, + "localized": [ + "Horváth" + ], + "romanized": [ + "Horváth" + ], + "count": null + }, + { + "id": "HU-6", + "rank": 6, + "localized": [ + "Varga" + ], + "romanized": [ + "Varga" + ], + "count": null + }, + { + "id": "HU-7", + "rank": 7, + "localized": [ + "Kiss" + ], + "romanized": [ + "Kiss" + ], + "count": null + }, + { + "id": "HU-8", + "rank": 8, + "localized": [ + "Molnár" + ], + "romanized": [ + "Molnár" + ], + "count": null + }, + { + "id": "HU-9", + "rank": 9, + "localized": [ + "Németh" + ], + "romanized": [ + "Németh" + ], + "count": null + }, + { + "id": "HU-10", + "rank": 10, + "localized": [ + "Farkas" + ], + "romanized": [ + "Farkas" + ], + "count": null + }, + { + "id": "HU-11", + "rank": 11, + "localized": [ + "Balogh" + ], + "romanized": [ + "Balogh" + ], + "count": null + }, + { + "id": "HU-12", + "rank": 12, + "localized": [ + "Papp" + ], + "romanized": [ + "Papp" + ], + "count": null + }, + { + "id": "HU-13", + "rank": 13, + "localized": [ + "Lakatos" + ], + "romanized": [ + "Lakatos" + ], + "count": null + }, + { + "id": "HU-14", + "rank": 14, + "localized": [ + "Takács" + ], + "romanized": [ + "Takács" + ], + "count": null + }, + { + "id": "HU-15", + "rank": 15, + "localized": [ + "Juhász" + ], + "romanized": [ + "Juhász" + ], + "count": null + }, + { + "id": "HU-16", + "rank": 16, + "localized": [ + "Mészáros" + ], + "romanized": [ + "Mészáros" + ], + "count": null + }, + { + "id": "HU-17", + "rank": 17, + "localized": [ + "Oláh" + ], + "romanized": [ + "Oláh" + ], + "count": null + }, + { + "id": "HU-18", + "rank": 18, + "localized": [ + "Simon" + ], + "romanized": [ + "Simon" + ], + "count": null + }, + { + "id": "HU-19", + "rank": 19, + "localized": [ + "Rácz" + ], + "romanized": [ + "Rácz" + ], + "count": null + }, + { + "id": "HU-20", + "rank": 20, + "localized": [ + "Fekete" + ], + "romanized": [ + "Fekete" + ], + "count": null + }, + { + "id": "HU-21", + "rank": 21, + "localized": [ + "Szilágyi" + ], + "romanized": [ + "Szilágyi" + ], + "count": null + }, + { + "id": "HU-22", + "rank": 22, + "localized": [ + "Török" + ], + "romanized": [ + "Török" + ], + "count": null + }, + { + "id": "HU-23", + "rank": 23, + "localized": [ + "Fehér" + ], + "romanized": [ + "Fehér" + ], + "count": null + }, + { + "id": "HU-24", + "rank": 24, + "localized": [ + "Balázs" + ], + "romanized": [ + "Balázs" + ], + "count": null + }, + { + "id": "HU-25", + "rank": 25, + "localized": [ + "Gál" + ], + "romanized": [ + "Gál" + ], + "count": null + } + ], + "IS": [ + { + "id": "IS-1", + "rank": 1, + "localized": [ + "Blöndal" + ], + "romanized": [ + "Blöndal" + ], + "count": 324 + }, + { + "id": "IS-2", + "rank": 2, + "localized": [ + "Thorarensen" + ], + "romanized": [ + "Thorarensen" + ], + "count": 293 + }, + { + "id": "IS-3", + "rank": 3, + "localized": [ + "Hansen" + ], + "romanized": [ + "Hansen" + ], + "count": 282 + }, + { + "id": "IS-4", + "rank": 4, + "localized": [ + "Olsen" + ], + "romanized": [ + "Olsen" + ], + "count": 224 + }, + { + "id": "IS-5", + "rank": 5, + "localized": [ + "Andersen" + ], + "romanized": [ + "Andersen" + ], + "count": 206 + }, + { + "id": "IS-6", + "rank": 6, + "localized": [ + "Petersen" + ], + "romanized": [ + "Petersen" + ], + "count": 206 + }, + { + "id": "IS-7", + "rank": 7, + "localized": [ + "Möller" + ], + "romanized": [ + "Möller" + ], + "count": 198 + }, + { + "id": "IS-8", + "rank": 8, + "localized": [ + "Nielsen" + ], + "romanized": [ + "Nielsen" + ], + "count": 180 + }, + { + "id": "IS-9", + "rank": 9, + "localized": [ + "Waage" + ], + "romanized": [ + "Waage" + ], + "count": 171 + }, + { + "id": "IS-10", + "rank": 10, + "localized": [ + "Bergmann" + ], + "romanized": [ + "Bergmann" + ], + "count": 158 + }, + { + "id": "IS-11", + "rank": 11, + "localized": [ + "Briem" + ], + "romanized": [ + "Briem" + ], + "count": 156 + }, + { + "id": "IS-12", + "rank": 12, + "localized": [ + "Thorlacius" + ], + "romanized": [ + "Thorlacius" + ], + "count": 155 + }, + { + "id": "IS-13", + "rank": 13, + "localized": [ + "Jensen" + ], + "romanized": [ + "Jensen" + ], + "count": 146 + }, + { + "id": "IS-14", + "rank": 14, + "localized": [ + "Hjaltalín" + ], + "romanized": [ + "Hjaltalín" + ], + "count": 137 + }, + { + "id": "IS-15", + "rank": 15, + "localized": [ + "Scheving" + ], + "romanized": [ + "Scheving" + ], + "count": 135 + }, + { + "id": "IS-16", + "rank": 16, + "localized": [ + "Petersen" + ], + "romanized": [ + "Petersen" + ], + "count": 126 + }, + { + "id": "IS-17", + "rank": 17, + "localized": [ + "Kvaran" + ], + "romanized": [ + "Kvaran" + ], + "count": 123 + }, + { + "id": "IS-18", + "rank": 18, + "localized": [ + "Fjeldsted" + ], + "romanized": [ + "Fjeldsted" + ], + "count": 123 + }, + { + "id": "IS-19", + "rank": 19, + "localized": [ + "Norðdahl" + ], + "romanized": [ + "Norðdahl" + ], + "count": 113 + }, + { + "id": "IS-20", + "rank": 20, + "localized": [ + "Berndsen" + ], + "romanized": [ + "Berndsen" + ], + "count": 105 + } + ], + "IE": [ + { + "id": "IE-1", + "rank": 1, + "localized": [ + "Ó Murchú" + ], + "romanized": [ + "Murphy" + ], + "count": null + }, + { + "id": "IE-2", + "rank": 2, + "localized": [ + "Ó Ceallaigh" + ], + "romanized": [ + "Kelly", + "O'Kelly" + ], + "count": null + }, + { + "id": "IE-3", + "rank": 3, + "localized": [ + "Ó Súilleabháin" + ], + "romanized": [ + "Sullivan", + "O'Sullivan" + ], + "count": null + }, + { + "id": "IE-4", + "rank": 4, + "localized": [ + "Breathnach" + ], + "romanized": [ + "Walsh" + ], + "count": null + }, + { + "id": "IE-5", + "rank": 5, + "localized": [ + "Mac Gabhann" + ], + "romanized": [ + "Smith" + ], + "count": null + }, + { + "id": "IE-6", + "rank": 6, + "localized": [ + "Ó Briain" + ], + "romanized": [ + "O'Brien" + ], + "count": null + }, + { + "id": "IE-7", + "rank": 7, + "localized": [ + "Ó Broin" + ], + "romanized": [ + "Byrne", + "O'Byrne" + ], + "count": null + }, + { + "id": "IE-8", + "rank": 8, + "localized": [ + "Ó Riain" + ], + "romanized": [ + "O'Ryan", + "Ryan" + ], + "count": null + }, + { + "id": "IE-9", + "rank": 9, + "localized": [ + "Ó Conchúir" + ], + "romanized": [ + "O'Connor" + ], + "count": null + }, + { + "id": "IE-10", + "rank": 10, + "localized": [ + "Ó Néill" + ], + "romanized": [ + "O'Neill" + ], + "count": null + }, + { + "id": "IE-11", + "rank": 11, + "localized": [ + "Ó Raghallaigh" + ], + "romanized": [ + "Reilly", + "O'Reilly" + ], + "count": null + }, + { + "id": "IE-12", + "rank": 12, + "localized": [ + "Ó Dubhghaill" + ], + "romanized": [ + "Doyle" + ], + "count": null + }, + { + "id": "IE-13", + "rank": 13, + "localized": [ + "Mac Cárthaigh" + ], + "romanized": [ + "McCarthy" + ], + "count": null + }, + { + "id": "IE-14", + "rank": 14, + "localized": [ + "Ó Gallchóir" + ], + "romanized": [ + "Gallagher", + "O'Gallagher" + ], + "count": null + }, + { + "id": "IE-15", + "rank": 15, + "localized": [ + "Ó Dochartaigh" + ], + "romanized": [ + "O'Doherty", + "Doherty" + ], + "count": null + }, + { + "id": "IE-16", + "rank": 16, + "localized": [ + "Ó Cinnéide" + ], + "romanized": [ + "Kennedy" + ], + "count": null + }, + { + "id": "IE-17", + "rank": 17, + "localized": [ + "Ó Loingsigh" + ], + "romanized": [ + "Lynch" + ], + "count": null + }, + { + "id": "IE-18", + "rank": 18, + "localized": [ + "Ó Muireadhaigh" + ], + "romanized": [ + "Murray" + ], + "count": null + }, + { + "id": "IE-19", + "rank": 19, + "localized": [ + "Ó Cuinn" + ], + "romanized": [ + "O'Quinn", + "Quinn" + ], + "count": null + }, + { + "id": "IE-20", + "rank": 20, + "localized": [ + "Ó Mórdha" + ], + "romanized": [ + "O'Moore", + "Moore" + ], + "count": null + } + ], + "IT": [ + { + "id": "IT-1", + "rank": 1, + "localized": [ + "Rossi" + ], + "romanized": [ + "Rossi" + ], + "count": 60 + }, + { + "id": "IT-2", + "rank": 2, + "localized": [ + "Russo" + ], + "romanized": [ + "Russo" + ], + "count": 43 + }, + { + "id": "IT-3", + "rank": 3, + "localized": [ + "Ferrari" + ], + "romanized": [ + "Ferrari" + ], + "count": 34 + }, + { + "id": "IT-4", + "rank": 4, + "localized": [ + "Esposito" + ], + "romanized": [ + "Esposito" + ], + "count": 32 + }, + { + "id": "IT-5", + "rank": 5, + "localized": [ + "Bianchi" + ], + "romanized": [ + "Bianchi" + ], + "count": 25 + }, + { + "id": "IT-6", + "rank": 6, + "localized": [ + "Romano" + ], + "romanized": [ + "Romano" + ], + "count": 24 + }, + { + "id": "IT-7", + "rank": 7, + "localized": [ + "Colombo" + ], + "romanized": [ + "Colombo" + ], + "count": 23 + }, + { + "id": "IT-8", + "rank": 8, + "localized": [ + "Bruno" + ], + "romanized": [ + "Bruno" + ], + "count": 21 + }, + { + "id": "IT-9", + "rank": 9, + "localized": [ + "Ricci" + ], + "romanized": [ + "Ricci" + ], + "count": 20 + }, + { + "id": "IT-10", + "rank": 10, + "localized": [ + "Greco" + ], + "romanized": [ + "Greco" + ], + "count": 18 + }, + { + "id": "IT-11", + "rank": 11, + "localized": [ + "Marino" + ], + "romanized": [ + "Marino" + ], + "count": 18 + }, + { + "id": "IT-12", + "rank": 12, + "localized": [ + "Gallo" + ], + "romanized": [ + "Gallo" + ], + "count": 18 + }, + { + "id": "IT-13", + "rank": 13, + "localized": [ + "De Luca" + ], + "romanized": [ + "De Luca" + ], + "count": 17 + }, + { + "id": "IT-14", + "rank": 14, + "localized": [ + "Conti" + ], + "romanized": [ + "Conti" + ], + "count": 17 + }, + { + "id": "IT-15", + "rank": 15, + "localized": [ + "Costa" + ], + "romanized": [ + "Costa" + ], + "count": 17 + }, + { + "id": "IT-16", + "rank": 16, + "localized": [ + "Mancini" + ], + "romanized": [ + "Mancini" + ], + "count": 17 + }, + { + "id": "IT-17", + "rank": 17, + "localized": [ + "Giordano" + ], + "romanized": [ + "Giordano" + ], + "count": 17 + }, + { + "id": "IT-18", + "rank": 18, + "localized": [ + "Rizzo" + ], + "romanized": [ + "Rizzo" + ], + "count": 16 + }, + { + "id": "IT-19", + "rank": 19, + "localized": [ + "Lombardi" + ], + "romanized": [ + "Lombardi" + ], + "count": 15 + }, + { + "id": "IT-20", + "rank": 20, + "localized": [ + "Barbieri" + ], + "romanized": [ + "Barbieri" + ], + "count": 14 + }, + { + "id": "IT-21", + "rank": 21, + "localized": [ + "Moretti" + ], + "romanized": [ + "Moretti" + ], + "count": 14 + }, + { + "id": "IT-22", + "rank": 22, + "localized": [ + "Fontana" + ], + "romanized": [ + "Fontana" + ], + "count": 14 + }, + { + "id": "IT-23", + "rank": 23, + "localized": [ + "Caruso" + ], + "romanized": [ + "Caruso" + ], + "count": 14 + }, + { + "id": "IT-24", + "rank": 24, + "localized": [ + "Mariani" + ], + "romanized": [ + "Mariani" + ], + "count": 14 + }, + { + "id": "IT-25", + "rank": 25, + "localized": [ + "Ferrara" + ], + "romanized": [ + "Ferrara" + ], + "count": 13 + }, + { + "id": "IT-26", + "rank": 26, + "localized": [ + "Santoro" + ], + "romanized": [ + "Santoro" + ], + "count": 13 + }, + { + "id": "IT-27", + "rank": 27, + "localized": [ + "Rinaldi" + ], + "romanized": [ + "Rinaldi" + ], + "count": 13 + }, + { + "id": "IT-28", + "rank": 28, + "localized": [ + "Leone" + ], + "romanized": [ + "Leone" + ], + "count": 13 + }, + { + "id": "IT-29", + "rank": 29, + "localized": [ + "D'Angelo" + ], + "romanized": [ + "D'Angelo" + ], + "count": 13 + }, + { + "id": "IT-30", + "rank": 30, + "localized": [ + "Longo" + ], + "romanized": [ + "Longo" + ], + "count": 12 + }, + { + "id": "IT-31", + "rank": 31, + "localized": [ + "Galli" + ], + "romanized": [ + "Galli" + ], + "count": 12 + }, + { + "id": "IT-32", + "rank": 32, + "localized": [ + "Martini" + ], + "romanized": [ + "Martini" + ], + "count": 12 + }, + { + "id": "IT-33", + "rank": 33, + "localized": [ + "Martinelli" + ], + "romanized": [ + "Martinelli" + ], + "count": 12 + }, + { + "id": "IT-34", + "rank": 34, + "localized": [ + "Serra" + ], + "romanized": [ + "Serra" + ], + "count": 11 + }, + { + "id": "IT-35", + "rank": 35, + "localized": [ + "Conte" + ], + "romanized": [ + "Conte" + ], + "count": 11 + }, + { + "id": "IT-36", + "rank": 36, + "localized": [ + "Vitale" + ], + "romanized": [ + "Vitale" + ], + "count": 11 + }, + { + "id": "IT-37", + "rank": 37, + "localized": [ + "De Santis" + ], + "romanized": [ + "De Santis" + ], + "count": 11 + }, + { + "id": "IT-38", + "rank": 38, + "localized": [ + "Marchetti" + ], + "romanized": [ + "Marchetti" + ], + "count": 11 + }, + { + "id": "IT-39", + "rank": 39, + "localized": [ + "Messina" + ], + "romanized": [ + "Messina" + ], + "count": 11 + }, + { + "id": "IT-40", + "rank": 40, + "localized": [ + "Gentile" + ], + "romanized": [ + "Gentile" + ], + "count": 11 + }, + { + "id": "IT-41", + "rank": 41, + "localized": [ + "Villa" + ], + "romanized": [ + "Villa" + ], + "count": 11 + }, + { + "id": "IT-42", + "rank": 42, + "localized": [ + "Marini" + ], + "romanized": [ + "Marini" + ], + "count": 11 + }, + { + "id": "IT-43", + "rank": 43, + "localized": [ + "Lombardo" + ], + "romanized": [ + "Lombardo" + ], + "count": 11 + }, + { + "id": "IT-44", + "rank": 44, + "localized": [ + "Coppola" + ], + "romanized": [ + "Coppola" + ], + "count": 11 + }, + { + "id": "IT-45", + "rank": 45, + "localized": [ + "Ferri" + ], + "romanized": [ + "Ferri" + ], + "count": 11 + }, + { + "id": "IT-46", + "rank": 46, + "localized": [ + "Parisi" + ], + "romanized": [ + "Parisi" + ], + "count": 11 + }, + { + "id": "IT-47", + "rank": 47, + "localized": [ + "De Angelis" + ], + "romanized": [ + "De Angelis" + ], + "count": 11 + }, + { + "id": "IT-48", + "rank": 48, + "localized": [ + "Bianco" + ], + "romanized": [ + "Bianco" + ], + "count": 10 + }, + { + "id": "IT-49", + "rank": 49, + "localized": [ + "Amato" + ], + "romanized": [ + "Amato" + ], + "count": 10 + }, + { + "id": "IT-50", + "rank": 50, + "localized": [ + "Fabbri" + ], + "romanized": [ + "Fabbri" + ], + "count": 10 + }, + { + "id": "IT-51", + "rank": 51, + "localized": [ + "Gatti" + ], + "romanized": [ + "Gatti" + ], + "count": 10 + }, + { + "id": "IT-52", + "rank": 52, + "localized": [ + "Sala" + ], + "romanized": [ + "Sala" + ], + "count": 10 + }, + { + "id": "IT-53", + "rank": 53, + "localized": [ + "Morelli" + ], + "romanized": [ + "Morelli" + ], + "count": 10 + }, + { + "id": "IT-54", + "rank": 54, + "localized": [ + "Grasso" + ], + "romanized": [ + "Grasso" + ], + "count": 10 + }, + { + "id": "IT-55", + "rank": 55, + "localized": [ + "Pellegrini" + ], + "romanized": [ + "Pellegrini" + ], + "count": 10 + }, + { + "id": "IT-56", + "rank": 56, + "localized": [ + "Ferraro" + ], + "romanized": [ + "Ferraro" + ], + "count": 10 + }, + { + "id": "IT-57", + "rank": 57, + "localized": [ + "Monti" + ], + "romanized": [ + "Monti" + ], + "count": 10 + }, + { + "id": "IT-58", + "rank": 58, + "localized": [ + "Palumbo" + ], + "romanized": [ + "Palumbo" + ], + "count": 10 + }, + { + "id": "IT-59", + "rank": 59, + "localized": [ + "Grassi" + ], + "romanized": [ + "Grassi" + ], + "count": 10 + }, + { + "id": "IT-60", + "rank": 60, + "localized": [ + "Testa" + ], + "romanized": [ + "Testa" + ], + "count": 10 + }, + { + "id": "IT-61", + "rank": 61, + "localized": [ + "Valentini" + ], + "romanized": [ + "Valentini" + ], + "count": 9 + }, + { + "id": "IT-62", + "rank": 62, + "localized": [ + "Carbone" + ], + "romanized": [ + "Carbone" + ], + "count": 9 + }, + { + "id": "IT-63", + "rank": 63, + "localized": [ + "Benedetti" + ], + "romanized": [ + "Benedetti" + ], + "count": 9 + }, + { + "id": "IT-64", + "rank": 64, + "localized": [ + "Silvestri" + ], + "romanized": [ + "Silvestri" + ], + "count": 9 + }, + { + "id": "IT-65", + "rank": 65, + "localized": [ + "Farina" + ], + "romanized": [ + "Farina" + ], + "count": 9 + }, + { + "id": "IT-66", + "rank": 66, + "localized": [ + "D'Amico" + ], + "romanized": [ + "D'Amico" + ], + "count": 9 + }, + { + "id": "IT-67", + "rank": 67, + "localized": [ + "Martino" + ], + "romanized": [ + "Martino" + ], + "count": 9 + }, + { + "id": "IT-68", + "rank": 68, + "localized": [ + "Bernardi" + ], + "romanized": [ + "Bernardi" + ], + "count": 9 + }, + { + "id": "IT-69", + "rank": 69, + "localized": [ + "Caputo" + ], + "romanized": [ + "Caputo" + ], + "count": 9 + }, + { + "id": "IT-70", + "rank": 70, + "localized": [ + "Mazza" + ], + "romanized": [ + "Mazza" + ], + "count": 9 + }, + { + "id": "IT-71", + "rank": 71, + "localized": [ + "Sanna" + ], + "romanized": [ + "Sanna" + ], + "count": 9 + }, + { + "id": "IT-72", + "rank": 72, + "localized": [ + "Fiore" + ], + "romanized": [ + "Fiore" + ], + "count": 9 + }, + { + "id": "IT-73", + "rank": 73, + "localized": [ + "De Rosa" + ], + "romanized": [ + "De Rosa" + ], + "count": 9 + }, + { + "id": "IT-74", + "rank": 74, + "localized": [ + "Pellegrino" + ], + "romanized": [ + "Pellegrino" + ], + "count": 9 + }, + { + "id": "IT-75", + "rank": 75, + "localized": [ + "Giuliani" + ], + "romanized": [ + "Giuliani" + ], + "count": 9 + }, + { + "id": "IT-76", + "rank": 76, + "localized": [ + "Rizzi" + ], + "romanized": [ + "Rizzi" + ], + "count": 9 + }, + { + "id": "IT-77", + "rank": 77, + "localized": [ + "Di Stefano" + ], + "romanized": [ + "Di Stefano" + ], + "count": 9 + }, + { + "id": "IT-78", + "rank": 78, + "localized": [ + "Cattaneo" + ], + "romanized": [ + "Cattaneo" + ], + "count": 8 + }, + { + "id": "IT-79", + "rank": 79, + "localized": [ + "Rossetti" + ], + "romanized": [ + "Rossetti" + ], + "count": 8 + }, + { + "id": "IT-80", + "rank": 80, + "localized": [ + "Orlando" + ], + "romanized": [ + "Orlando" + ], + "count": 8 + }, + { + "id": "IT-81", + "rank": 81, + "localized": [ + "Basile" + ], + "romanized": [ + "Basile" + ], + "count": 8 + }, + { + "id": "IT-82", + "rank": 82, + "localized": [ + "Neri" + ], + "romanized": [ + "Neri" + ], + "count": 8 + }, + { + "id": "IT-83", + "rank": 83, + "localized": [ + "Barone" + ], + "romanized": [ + "Barone" + ], + "count": 8 + }, + { + "id": "IT-84", + "rank": 84, + "localized": [ + "Palmieri" + ], + "romanized": [ + "Palmieri" + ], + "count": 8 + }, + { + "id": "IT-85", + "rank": 85, + "localized": [ + "Riva" + ], + "romanized": [ + "Riva" + ], + "count": 8 + }, + { + "id": "IT-86", + "rank": 86, + "localized": [ + "Romeo" + ], + "romanized": [ + "Romeo" + ], + "count": 8 + }, + { + "id": "IT-87", + "rank": 87, + "localized": [ + "Franco" + ], + "romanized": [ + "Franco" + ], + "count": 8 + }, + { + "id": "IT-88", + "rank": 88, + "localized": [ + "Sorrentino" + ], + "romanized": [ + "Sorrentino" + ], + "count": 8 + }, + { + "id": "IT-89", + "rank": 89, + "localized": [ + "Pagano" + ], + "romanized": [ + "Pagano" + ], + "count": 8 + }, + { + "id": "IT-90", + "rank": 90, + "localized": [ + "D'Agostino" + ], + "romanized": [ + "D'Agostino" + ], + "count": 8 + }, + { + "id": "IT-91", + "rank": 91, + "localized": [ + "Piras" + ], + "romanized": [ + "Piras" + ], + "count": 8 + }, + { + "id": "IT-92", + "rank": 92, + "localized": [ + "Ruggiero" + ], + "romanized": [ + "Ruggiero" + ], + "count": 8 + }, + { + "id": "IT-93", + "rank": 93, + "localized": [ + "Montanari" + ], + "romanized": [ + "Montanari" + ], + "count": 8 + }, + { + "id": "IT-94", + "rank": 94, + "localized": [ + "Battaglia" + ], + "romanized": [ + "Battaglia" + ], + "count": 8 + }, + { + "id": "IT-95", + "rank": 95, + "localized": [ + "Bellini" + ], + "romanized": [ + "Bellini" + ], + "count": 8 + }, + { + "id": "IT-96", + "rank": 96, + "localized": [ + "Castelli" + ], + "romanized": [ + "Castelli" + ], + "count": 8 + }, + { + "id": "IT-97", + "rank": 97, + "localized": [ + "Guerra" + ], + "romanized": [ + "Guerra" + ], + "count": 8 + }, + { + "id": "IT-98", + "rank": 98, + "localized": [ + "Poli" + ], + "romanized": [ + "Poli" + ], + "count": 8 + }, + { + "id": "IT-99", + "rank": 99, + "localized": [ + "Valente" + ], + "romanized": [ + "Valente" + ], + "count": 7 + }, + { + "id": "IT-100", + "rank": 100, + "localized": [ + "Ferretti" + ], + "romanized": [ + "Ferretti" + ], + "count": 7 + } + ], + "XK": [ + { + "id": "XK-1", + "rank": 1, + "localized": [ + "Krasniqi" + ], + "romanized": [ + "Krasniqi" + ], + "count": 58199 + }, + { + "id": "XK-2", + "rank": 2, + "localized": [ + "Gashi" + ], + "romanized": [ + "Gashi" + ], + "count": 57396 + }, + { + "id": "XK-3", + "rank": 3, + "localized": [ + "Berisha" + ], + "romanized": [ + "Berisha" + ], + "count": 43727 + }, + { + "id": "XK-4", + "rank": 4, + "localized": [ + "Morina" + ], + "romanized": [ + "Morina" + ], + "count": 27222 + }, + { + "id": "XK-5", + "rank": 5, + "localized": [ + "Shala" + ], + "romanized": [ + "Shala" + ], + "count": 25585 + }, + { + "id": "XK-6", + "rank": 6, + "localized": [ + "Bytyqi" + ], + "romanized": [ + "Bytyqi" + ], + "count": 18840 + }, + { + "id": "XK-7", + "rank": 7, + "localized": [ + "Hasani" + ], + "romanized": [ + "Hasani" + ], + "count": 13187 + }, + { + "id": "XK-8", + "rank": 8, + "localized": [ + "Kastrati" + ], + "romanized": [ + "Kastrati" + ], + "count": 13015 + }, + { + "id": "XK-9", + "rank": 9, + "localized": [ + "Kryeziu" + ], + "romanized": [ + "Kryeziu" + ], + "count": 12882 + }, + { + "id": "XK-10", + "rank": 10, + "localized": [ + "Hoti" + ], + "romanized": [ + "Hoti" + ], + "count": 12709 + }, + { + "id": "XK-11", + "rank": 11, + "localized": [ + "Fatime" + ], + "romanized": [ + "Fatime" + ], + "count": 8626 + }, + { + "id": "XK-12", + "rank": 12, + "localized": [ + "Bajram" + ], + "romanized": [ + "Bajram" + ], + "count": 6324 + }, + { + "id": "XK-13", + "rank": 13, + "localized": [ + "Emine" + ], + "romanized": [ + "Emine" + ], + "count": 5622 + }, + { + "id": "XK-14", + "rank": 14, + "localized": [ + "Bekim" + ], + "romanized": [ + "Bekim" + ], + "count": 5470 + }, + { + "id": "XK-15", + "rank": 15, + "localized": [ + "Afërdita" + ], + "romanized": [ + "Afërdita" + ], + "count": 5226 + }, + { + "id": "XK-16", + "rank": 16, + "localized": [ + "Valon" + ], + "romanized": [ + "Valon" + ], + "count": 5207 + }, + { + "id": "XK-17", + "rank": 17, + "localized": [ + "Egzon" + ], + "romanized": [ + "Egzon" + ], + "count": 5180 + }, + { + "id": "XK-18", + "rank": 18, + "localized": [ + "Arben" + ], + "romanized": [ + "Arben" + ], + "count": 5114 + }, + { + "id": "XK-19", + "rank": 19, + "localized": [ + "Ramadan" + ], + "romanized": [ + "Ramadan" + ], + "count": 5110 + }, + { + "id": "XK-20", + "rank": 20, + "localized": [ + "Muhamet" + ], + "romanized": [ + "Muhamet" + ], + "count": 5047 + } + ], + "LV": [ + { + "id": "LV-1", + "rank": 1, + "localized": [ + "Bērziņš" + ], + "romanized": [ + "Bērziņš" + ], + "count": null + }, + { + "id": "LV-2", + "rank": 2, + "localized": [ + "Kalniņš" + ], + "romanized": [ + "Kalniņš" + ], + "count": null + }, + { + "id": "LV-3", + "rank": 3, + "localized": [ + "Ozoliņš" + ], + "romanized": [ + "Ozoliņš" + ], + "count": null + }, + { + "id": "LV-4", + "rank": 4, + "localized": [ + "Jansons" + ], + "romanized": [ + "Jansons" + ], + "count": null + }, + { + "id": "LV-5", + "rank": 5, + "localized": [ + "Ozols" + ], + "romanized": [ + "Ozols" + ], + "count": null + }, + { + "id": "LV-6", + "rank": 6, + "localized": [ + "Liepiņš" + ], + "romanized": [ + "Liepiņš" + ], + "count": null + }, + { + "id": "LV-7", + "rank": 7, + "localized": [ + "Krūmiņš" + ], + "romanized": [ + "Krūmiņš" + ], + "count": null + }, + { + "id": "LV-8", + "rank": 8, + "localized": [ + "Balodis" + ], + "romanized": [ + "Balodis" + ], + "count": null + }, + { + "id": "LV-9", + "rank": 9, + "localized": [ + "Eglītis" + ], + "romanized": [ + "Eglītis" + ], + "count": null + }, + { + "id": "LV-10", + "rank": 10, + "localized": [ + "Zariņš" + ], + "romanized": [ + "Zariņš" + ], + "count": null + }, + { + "id": "LV-11", + "rank": 11, + "localized": [ + "Pētersons" + ], + "romanized": [ + "Pētersons" + ], + "count": null + }, + { + "id": "LV-12", + "rank": 12, + "localized": [ + "Vītols" + ], + "romanized": [ + "Vītols" + ], + "count": null + }, + { + "id": "LV-13", + "rank": 13, + "localized": [ + "Kļaviņš" + ], + "romanized": [ + "Kļaviņš" + ], + "count": null + }, + { + "id": "LV-14", + "rank": 14, + "localized": [ + "Kārkliņš" + ], + "romanized": [ + "Kārkliņš" + ], + "count": null + }, + { + "id": "LV-15", + "rank": 15, + "localized": [ + "Vanags" + ], + "romanized": [ + "Vanags" + ], + "count": null + } + ], + "LT": [ + { + "id": "LT-1", + "rank": 1, + "localized": [ + "Kazlauskienė", + "Kazlauskas" + ], + "romanized": [ + "Kazlauskienė", + "Kazlauskas" + ], + "count": null + }, + { + "id": "LT-2", + "rank": 2, + "localized": [ + "Jankauskas", + "Jankauskienė" + ], + "romanized": [ + "Jankauskas", + "Jankauskienė" + ], + "count": null + }, + { + "id": "LT-3", + "rank": 3, + "localized": [ + "Petrauskas", + "Petrauskienė" + ], + "romanized": [ + "Petrauskas", + "Petrauskienė" + ], + "count": null + }, + { + "id": "LT-4", + "rank": 4, + "localized": [ + "Stankevičienė", + "Stankevičius" + ], + "romanized": [ + "Stankevičienė", + "Stankevičius" + ], + "count": null + }, + { + "id": "LT-5", + "rank": 5, + "localized": [ + "Vasiliauskas", + "Vasiliauskienė" + ], + "romanized": [ + "Vasiliauskas", + "Vasiliauskienė" + ], + "count": null + }, + { + "id": "LT-6", + "rank": 6, + "localized": [ + "Butkus", + "Butkienė" + ], + "romanized": [ + "Butkus", + "Butkienė" + ], + "count": null + }, + { + "id": "LT-7", + "rank": 7, + "localized": [ + "Žukauskienė", + "Žukauskas" + ], + "romanized": [ + "Žukauskienė", + "Žukauskas" + ], + "count": null + }, + { + "id": "LT-8", + "rank": 8, + "localized": [ + "Paulauskas", + "Paulauskienė" + ], + "romanized": [ + "Paulauskas", + "Paulauskienė" + ], + "count": null + }, + { + "id": "LT-9", + "rank": 9, + "localized": [ + "Urbonas", + "Urbonienė" + ], + "romanized": [ + "Urbonas", + "Urbonienė" + ], + "count": null + }, + { + "id": "LT-10", + "rank": 10, + "localized": [ + "Kavaliauskas", + "Kavaliauskienė" + ], + "romanized": [ + "Kavaliauskas", + "Kavaliauskienė" + ], + "count": null + } + ], + "LU": [ + { + "id": "LU-1", + "rank": 1, + "localized": [ + "Schmit" + ], + "romanized": [ + "Schmit" + ], + "count": 1929 + }, + { + "id": "LU-2", + "rank": 2, + "localized": [ + "Muller" + ], + "romanized": [ + "Muller" + ], + "count": 1473 + }, + { + "id": "LU-3", + "rank": 3, + "localized": [ + "Weber" + ], + "romanized": [ + "Weber" + ], + "count": 1380 + }, + { + "id": "LU-4", + "rank": 4, + "localized": [ + "Hoffmann" + ], + "romanized": [ + "Hoffmann" + ], + "count": 1335 + }, + { + "id": "LU-5", + "rank": 5, + "localized": [ + "Wagner" + ], + "romanized": [ + "Wagner" + ], + "count": 1300 + }, + { + "id": "LU-6", + "rank": 6, + "localized": [ + "Thill" + ], + "romanized": [ + "Thill" + ], + "count": 1027 + }, + { + "id": "LU-7", + "rank": 7, + "localized": [ + "Schmitz" + ], + "romanized": [ + "Schmitz" + ], + "count": 939 + }, + { + "id": "LU-8", + "rank": 8, + "localized": [ + "Schroeder" + ], + "romanized": [ + "Schroeder" + ], + "count": 793 + }, + { + "id": "LU-9", + "rank": 9, + "localized": [ + "Reuter" + ], + "romanized": [ + "Reuter" + ], + "count": 712 + }, + { + "id": "LU-10", + "rank": 10, + "localized": [ + "Klein" + ], + "romanized": [ + "Klein" + ], + "count": 706 + }, + { + "id": "LU-11", + "rank": 11, + "localized": [ + "Becker" + ], + "romanized": [ + "Becker" + ], + "count": 674 + }, + { + "id": "LU-12", + "rank": 12, + "localized": [ + "Kieffer" + ], + "romanized": [ + "Kieffer" + ], + "count": 660 + }, + { + "id": "LU-13", + "rank": 13, + "localized": [ + "Kremer" + ], + "romanized": [ + "Kremer" + ], + "count": 650 + }, + { + "id": "LU-14", + "rank": 14, + "localized": [ + "Faber" + ], + "romanized": [ + "Faber" + ], + "count": 610 + }, + { + "id": "LU-15", + "rank": 15, + "localized": [ + "Meyer" + ], + "romanized": [ + "Meyer" + ], + "count": 556 + }, + { + "id": "LU-16", + "rank": 16, + "localized": [ + "Schneider" + ], + "romanized": [ + "Schneider" + ], + "count": 550 + }, + { + "id": "LU-17", + "rank": 17, + "localized": [ + "Weiss" + ], + "romanized": [ + "Weiss" + ], + "count": 543 + }, + { + "id": "LU-18", + "rank": 18, + "localized": [ + "Schiltz" + ], + "romanized": [ + "Schiltz" + ], + "count": 538 + }, + { + "id": "LU-19", + "rank": 19, + "localized": [ + "Simon" + ], + "romanized": [ + "Simon" + ], + "count": 537 + }, + { + "id": "LU-20", + "rank": 20, + "localized": [ + "Welter" + ], + "romanized": [ + "Welter" + ], + "count": 533 + }, + { + "id": "LU-21", + "rank": 21, + "localized": [ + "Hansen" + ], + "romanized": [ + "Hansen" + ], + "count": 504 + }, + { + "id": "LU-22", + "rank": 22, + "localized": [ + "Majerus" + ], + "romanized": [ + "Majerus" + ], + "count": 496 + }, + { + "id": "LU-23", + "rank": 23, + "localized": [ + "Ries" + ], + "romanized": [ + "Ries" + ], + "count": 467 + }, + { + "id": "LU-24", + "rank": 24, + "localized": [ + "Meyers" + ], + "romanized": [ + "Meyers" + ], + "count": 459 + }, + { + "id": "LU-25", + "rank": 25, + "localized": [ + "Kayser" + ], + "romanized": [ + "Kayser" + ], + "count": 451 + }, + { + "id": "LU-26", + "rank": 26, + "localized": [ + "Steffen" + ], + "romanized": [ + "Steffen" + ], + "count": 441 + }, + { + "id": "LU-27", + "rank": 27, + "localized": [ + "Krier" + ], + "romanized": [ + "Krier" + ], + "count": 438 + }, + { + "id": "LU-28", + "rank": 28, + "localized": [ + "Braun" + ], + "romanized": [ + "Braun" + ], + "count": 421 + }, + { + "id": "LU-29", + "rank": 29, + "localized": [ + "Wagener" + ], + "romanized": [ + "Wagener" + ], + "count": 411 + }, + { + "id": "LU-30", + "rank": 30, + "localized": [ + "Diederich" + ], + "romanized": [ + "Diederich" + ], + "count": 405 + } + ], + "MT": [ + { + "id": "MT-1", + "rank": 1, + "localized": [ + "Borg" + ], + "romanized": [ + "Borg" + ], + "count": 13610 + }, + { + "id": "MT-2", + "rank": 2, + "localized": [ + "Camilleri" + ], + "romanized": [ + "Camilleri" + ], + "count": 13090 + }, + { + "id": "MT-3", + "rank": 3, + "localized": [ + "Vella" + ], + "romanized": [ + "Vella" + ], + "count": 12192 + }, + { + "id": "MT-4", + "rank": 4, + "localized": [ + "Farrugia" + ], + "romanized": [ + "Farrugia" + ], + "count": 11953 + }, + { + "id": "MT-5", + "rank": 5, + "localized": [ + "Zammit" + ], + "romanized": [ + "Zammit" + ], + "count": 9769 + }, + { + "id": "MT-6", + "rank": 6, + "localized": [ + "Galea" + ], + "romanized": [ + "Galea" + ], + "count": 8767 + }, + { + "id": "MT-7", + "rank": 7, + "localized": [ + "Micallef" + ], + "romanized": [ + "Micallef" + ], + "count": 8677 + }, + { + "id": "MT-8", + "rank": 8, + "localized": [ + "Grech" + ], + "romanized": [ + "Grech" + ], + "count": 8178 + }, + { + "id": "MT-9", + "rank": 9, + "localized": [ + "Attard" + ], + "romanized": [ + "Attard" + ], + "count": 7680 + }, + { + "id": "MT-10", + "rank": 10, + "localized": [ + "Spiteri" + ], + "romanized": [ + "Spiteri" + ], + "count": 7316 + } + ], + "MD": [ + { + "id": "MD-1", + "rank": 1, + "localized": [ + "Rusu" + ], + "romanized": [ + "Rusu" + ], + "count": 66781 + }, + { + "id": "MD-2", + "rank": 2, + "localized": [ + "Ceban" + ], + "romanized": [ + "Ceban" + ], + "count": 60694 + }, + { + "id": "MD-3", + "rank": 3, + "localized": [ + "Ciobanu" + ], + "romanized": [ + "Ciobanu" + ], + "count": 49784 + }, + { + "id": "MD-4", + "rank": 4, + "localized": [ + "Țurcan" + ], + "romanized": [ + "Țurcan" + ], + "count": 49253 + }, + { + "id": "MD-5", + "rank": 5, + "localized": [ + "Cebotari" + ], + "romanized": [ + "Cebotari" + ], + "count": 44845 + }, + { + "id": "MD-6", + "rank": 6, + "localized": [ + "Sîrbu" + ], + "romanized": [ + "Sîrbu" + ], + "count": 41095 + }, + { + "id": "MD-7", + "rank": 7, + "localized": [ + "Lungu" + ], + "romanized": [ + "Lungu" + ], + "count": 40861 + }, + { + "id": "MD-8", + "rank": 8, + "localized": [ + "Munteanu" + ], + "romanized": [ + "Munteanu" + ], + "count": 40321 + }, + { + "id": "MD-9", + "rank": 9, + "localized": [ + "Rotari" + ], + "romanized": [ + "Rotari" + ], + "count": 39181 + }, + { + "id": "MD-10", + "rank": 10, + "localized": [ + "Popa" + ], + "romanized": [ + "Popa" + ], + "count": 37476 + }, + { + "id": "MD-11", + "rank": 11, + "localized": [ + "Ursu" + ], + "romanized": [ + "Ursu" + ], + "count": 33222 + }, + { + "id": "MD-12", + "rank": 12, + "localized": [ + "Guțu" + ], + "romanized": [ + "Guțu" + ], + "count": 33155 + }, + { + "id": "MD-13", + "rank": 13, + "localized": [ + "Roșca" + ], + "romanized": [ + "Roșca" + ], + "count": 32462 + }, + { + "id": "MD-14", + "rank": 14, + "localized": [ + "Melnic" + ], + "romanized": [ + "Melnic" + ], + "count": 30832 + }, + { + "id": "MD-15", + "rank": 15, + "localized": [ + "Cojocari" + ], + "romanized": [ + "Cojocari" + ], + "count": 30525 + } + ], + "ME": [ + { + "id": "ME-1", + "rank": 1, + "localized": [ + "Popović" + ], + "romanized": [ + "Popović" + ], + "count": null + }, + { + "id": "ME-2", + "rank": 2, + "localized": [ + "Marković" + ], + "romanized": [ + "Marković" + ], + "count": null + }, + { + "id": "ME-3", + "rank": 3, + "localized": [ + "Vujović" + ], + "romanized": [ + "Vujović" + ], + "count": null + }, + { + "id": "ME-4", + "rank": 4, + "localized": [ + "Radović" + ], + "romanized": [ + "Radović" + ], + "count": null + }, + { + "id": "ME-5", + "rank": 5, + "localized": [ + "Ivanović" + ], + "romanized": [ + "Ivanović" + ], + "count": null + }, + { + "id": "ME-6", + "rank": 6, + "localized": [ + "Radulović" + ], + "romanized": [ + "Radulović" + ], + "count": null + }, + { + "id": "ME-7", + "rank": 7, + "localized": [ + "Jovanović" + ], + "romanized": [ + "Jovanović" + ], + "count": null + }, + { + "id": "ME-8", + "rank": 8, + "localized": [ + "Perović" + ], + "romanized": [ + "Perović" + ], + "count": null + }, + { + "id": "ME-9", + "rank": 9, + "localized": [ + "Vuković" + ], + "romanized": [ + "Vuković" + ], + "count": null + }, + { + "id": "ME-10", + "rank": 10, + "localized": [ + "Kovačević" + ], + "romanized": [ + "Kovačević" + ], + "count": null + } + ], + "NL": [ + { + "id": "NL-1", + "rank": 1, + "localized": [ + "De Jong" + ], + "romanized": [ + "De Jong" + ], + "count": 86534 + }, + { + "id": "NL-2", + "rank": 2, + "localized": [ + "Jansen" + ], + "romanized": [ + "Jansen" + ], + "count": 75699 + }, + { + "id": "NL-3", + "rank": 3, + "localized": [ + "De Vries" + ], + "romanized": [ + "De Vries" + ], + "count": 73157 + }, + { + "id": "NL-4", + "rank": 4, + "localized": [ + "Van den Berg" + ], + "romanized": [ + "Van den Berg" + ], + "count": 60130 + }, + { + "id": "NL-5", + "rank": 5, + "localized": [ + "Van Dijk", + "Van Dyk" + ], + "romanized": [ + "Van Dijk", + "Van Dyk" + ], + "count": 57944 + }, + { + "id": "NL-6", + "rank": 6, + "localized": [ + "Bakker" + ], + "romanized": [ + "Bakker" + ], + "count": 56864 + }, + { + "id": "NL-7", + "rank": 7, + "localized": [ + "Janssen" + ], + "romanized": [ + "Janssen" + ], + "count": 55394 + }, + { + "id": "NL-8", + "rank": 8, + "localized": [ + "Visser" + ], + "romanized": [ + "Visser" + ], + "count": 50929 + }, + { + "id": "NL-9", + "rank": 9, + "localized": [ + "Smit" + ], + "romanized": [ + "Smit" + ], + "count": 43493 + }, + { + "id": "NL-10", + "rank": 10, + "localized": [ + "Meijer", + "Meyer" + ], + "romanized": [ + "Meijer", + "Meyer" + ], + "count": 41497 + }, + { + "id": "NL-11", + "rank": 11, + "localized": [ + "De Boer" + ], + "romanized": [ + "De Boer" + ], + "count": 39576 + }, + { + "id": "NL-12", + "rank": 12, + "localized": [ + "Mulder" + ], + "romanized": [ + "Mulder" + ], + "count": 37250 + }, + { + "id": "NL-13", + "rank": 13, + "localized": [ + "De Groot" + ], + "romanized": [ + "De Groot" + ], + "count": 37221 + }, + { + "id": "NL-14", + "rank": 14, + "localized": [ + "Bos" + ], + "romanized": [ + "Bos" + ], + "count": 36478 + }, + { + "id": "NL-15", + "rank": 15, + "localized": [ + "Vos" + ], + "romanized": [ + "Vos" + ], + "count": 31154 + }, + { + "id": "NL-16", + "rank": 16, + "localized": [ + "Peters" + ], + "romanized": [ + "Peters" + ], + "count": 30864 + }, + { + "id": "NL-17", + "rank": 17, + "localized": [ + "Hendriks" + ], + "romanized": [ + "Hendriks" + ], + "count": 30199 + }, + { + "id": "NL-18", + "rank": 18, + "localized": [ + "Van Leeuwen" + ], + "romanized": [ + "Van Leeuwen" + ], + "count": 28774 + }, + { + "id": "NL-19", + "rank": 19, + "localized": [ + "Dekker" + ], + "romanized": [ + "Dekker" + ], + "count": 28682 + }, + { + "id": "NL-20", + "rank": 20, + "localized": [ + "Brouwer" + ], + "romanized": [ + "Brouwer" + ], + "count": 26224 + }, + { + "id": "NL-21", + "rank": 21, + "localized": [ + "De Wit" + ], + "romanized": [ + "De Wit" + ], + "count": 24904 + }, + { + "id": "NL-22", + "rank": 22, + "localized": [ + "Dijkstra" + ], + "romanized": [ + "Dijkstra" + ], + "count": 24175 + }, + { + "id": "NL-23", + "rank": 23, + "localized": [ + "Smits" + ], + "romanized": [ + "Smits" + ], + "count": 23816 + }, + { + "id": "NL-24", + "rank": 24, + "localized": [ + "De Graaf" + ], + "romanized": [ + "De Graaf" + ], + "count": 21699 + }, + { + "id": "NL-25", + "rank": 25, + "localized": [ + "Van der Meer" + ], + "romanized": [ + "Van der Meer" + ], + "count": 21354 + } + ], + "MK": [ + { + "id": "MK-1", + "rank": 1, + "localized": [ + "Andov" + ], + "romanized": [ + "Andov" + ], + "count": null + }, + { + "id": "MK-2", + "rank": 2, + "localized": [ + "Angelov" + ], + "romanized": [ + "Angelov" + ], + "count": null + }, + { + "id": "MK-3", + "rank": 3, + "localized": [ + "Bogdanov" + ], + "romanized": [ + "Bogdanov" + ], + "count": null + }, + { + "id": "MK-4", + "rank": 4, + "localized": [ + "Bozinov" + ], + "romanized": [ + "Bozinov" + ], + "count": null + }, + { + "id": "MK-5", + "rank": 5, + "localized": [ + "Brankov" + ], + "romanized": [ + "Brankov" + ], + "count": null + }, + { + "id": "MK-6", + "rank": 6, + "localized": [ + "Damcevski" + ], + "romanized": [ + "Damcevski" + ], + "count": null + }, + { + "id": "MK-7", + "rank": 7, + "localized": [ + "Davidov" + ], + "romanized": [ + "Davidov" + ], + "count": null + }, + { + "id": "MK-8", + "rank": 8, + "localized": [ + "Dimitrov" + ], + "romanized": [ + "Dimitrov" + ], + "count": null + }, + { + "id": "MK-9", + "rank": 9, + "localized": [ + "Donev" + ], + "romanized": [ + "Donev" + ], + "count": null + }, + { + "id": "MK-10", + "rank": 10, + "localized": [ + "Filipov" + ], + "romanized": [ + "Filipov" + ], + "count": null + }, + { + "id": "MK-11", + "rank": 11, + "localized": [ + "Georgiev" + ], + "romanized": [ + "Georgiev" + ], + "count": null + }, + { + "id": "MK-12", + "rank": 12, + "localized": [ + "Ivanov" + ], + "romanized": [ + "Ivanov" + ], + "count": null + }, + { + "id": "MK-13", + "rank": 13, + "localized": [ + "Ivanovski" + ], + "romanized": [ + "Ivanovski" + ], + "count": null + }, + { + "id": "MK-14", + "rank": 14, + "localized": [ + "Janev" + ], + "romanized": [ + "Janev" + ], + "count": null + }, + { + "id": "MK-15", + "rank": 15, + "localized": [ + "Kitanovski" + ], + "romanized": [ + "Kitanovski" + ], + "count": null + }, + { + "id": "MK-16", + "rank": 16, + "localized": [ + "Koloski" + ], + "romanized": [ + "Koloski" + ], + "count": null + }, + { + "id": "MK-17", + "rank": 17, + "localized": [ + "Kostovski" + ], + "romanized": [ + "Kostovski" + ], + "count": null + }, + { + "id": "MK-18", + "rank": 18, + "localized": [ + "Kostov" + ], + "romanized": [ + "Kostov" + ], + "count": null + }, + { + "id": "MK-19", + "rank": 19, + "localized": [ + "Manasievski" + ], + "romanized": [ + "Manasievski" + ], + "count": null + }, + { + "id": "MK-20", + "rank": 20, + "localized": [ + "Markov" + ], + "romanized": [ + "Markov" + ], + "count": null + }, + { + "id": "MK-21", + "rank": 21, + "localized": [ + "Markovski" + ], + "romanized": [ + "Markovski" + ], + "count": null + }, + { + "id": "MK-22", + "rank": 22, + "localized": [ + "Markoski" + ], + "romanized": [ + "Markoski" + ], + "count": null + }, + { + "id": "MK-23", + "rank": 23, + "localized": [ + "Matovski" + ], + "romanized": [ + "Matovski" + ], + "count": null + }, + { + "id": "MK-24", + "rank": 24, + "localized": [ + "Mladenovski" + ], + "romanized": [ + "Mladenovski" + ], + "count": null + }, + { + "id": "MK-25", + "rank": 25, + "localized": [ + "Nikolovski" + ], + "romanized": [ + "Nikolovski" + ], + "count": null + }, + { + "id": "MK-26", + "rank": 26, + "localized": [ + "Pavlovski" + ], + "romanized": [ + "Pavlovski" + ], + "count": null + }, + { + "id": "MK-27", + "rank": 27, + "localized": [ + "Penov" + ], + "romanized": [ + "Penov" + ], + "count": null + }, + { + "id": "MK-28", + "rank": 28, + "localized": [ + "Petkov" + ], + "romanized": [ + "Petkov" + ], + "count": null + }, + { + "id": "MK-29", + "rank": 29, + "localized": [ + "Petrevski" + ], + "romanized": [ + "Petrevski" + ], + "count": null + }, + { + "id": "MK-30", + "rank": 30, + "localized": [ + "Petrovski" + ], + "romanized": [ + "Petrovski" + ], + "count": null + }, + { + "id": "MK-31", + "rank": 31, + "localized": [ + "Popoff" + ], + "romanized": [ + "Popoff" + ], + "count": null + }, + { + "id": "MK-32", + "rank": 32, + "localized": [ + "Popovski" + ], + "romanized": [ + "Popovski" + ], + "count": null + }, + { + "id": "MK-33", + "rank": 33, + "localized": [ + "Ristevski" + ], + "romanized": [ + "Ristevski" + ], + "count": null + }, + { + "id": "MK-34", + "rank": 34, + "localized": [ + "Stojanov" + ], + "romanized": [ + "Stojanov" + ], + "count": null + }, + { + "id": "MK-35", + "rank": 35, + "localized": [ + "Trajanoski" + ], + "romanized": [ + "Trajanoski" + ], + "count": null + }, + { + "id": "MK-36", + "rank": 36, + "localized": [ + "Trajanovski" + ], + "romanized": [ + "Trajanovski" + ], + "count": null + }, + { + "id": "MK-37", + "rank": 37, + "localized": [ + "Trajcevski" + ], + "romanized": [ + "Trajcevski" + ], + "count": null + }, + { + "id": "MK-38", + "rank": 38, + "localized": [ + "Trajkovski" + ], + "romanized": [ + "Trajkovski" + ], + "count": null + } + ], + "NO": [ + { + "id": "NO-1", + "rank": 1, + "localized": [ + "Hansen" + ], + "romanized": [ + "Hansen" + ], + "count": 53011 + }, + { + "id": "NO-2", + "rank": 2, + "localized": [ + "Johansen" + ], + "romanized": [ + "Johansen" + ], + "count": 50088 + }, + { + "id": "NO-3", + "rank": 3, + "localized": [ + "Olsen" + ], + "romanized": [ + "Olsen" + ], + "count": 49303 + }, + { + "id": "NO-4", + "rank": 4, + "localized": [ + "Larsen" + ], + "romanized": [ + "Larsen" + ], + "count": 38 + }, + { + "id": "NO-5", + "rank": 5, + "localized": [ + "Andersen" + ], + "romanized": [ + "Andersen" + ], + "count": 37206 + }, + { + "id": "NO-6", + "rank": 6, + "localized": [ + "Pedersen" + ], + "romanized": [ + "Pedersen" + ], + "count": 35402 + }, + { + "id": "NO-7", + "rank": 7, + "localized": [ + "Nilsen" + ], + "romanized": [ + "Nilsen" + ], + "count": 34941 + }, + { + "id": "NO-8", + "rank": 8, + "localized": [ + "Kristiansen" + ], + "romanized": [ + "Kristiansen" + ], + "count": 23595 + }, + { + "id": "NO-9", + "rank": 9, + "localized": [ + "Jensen" + ], + "romanized": [ + "Jensen" + ], + "count": 23079 + }, + { + "id": "NO-10", + "rank": 10, + "localized": [ + "Karlsen" + ], + "romanized": [ + "Karlsen" + ], + "count": 21330 + }, + { + "id": "NO-11", + "rank": 11, + "localized": [ + "Johnsen" + ], + "romanized": [ + "Johnsen" + ], + "count": 20755 + }, + { + "id": "NO-12", + "rank": 12, + "localized": [ + "Pettersen" + ], + "romanized": [ + "Pettersen" + ], + "count": 20226 + }, + { + "id": "NO-13", + "rank": 13, + "localized": [ + "Eriksen" + ], + "romanized": [ + "Eriksen" + ], + "count": 19241 + }, + { + "id": "NO-14", + "rank": 14, + "localized": [ + "Berg" + ], + "romanized": [ + "Berg" + ], + "count": 18133 + }, + { + "id": "NO-15", + "rank": 15, + "localized": [ + "Haugen" + ], + "romanized": [ + "Haugen" + ], + "count": 14392 + }, + { + "id": "NO-16", + "rank": 16, + "localized": [ + "Hagen" + ], + "romanized": [ + "Hagen" + ], + "count": 14126 + }, + { + "id": "NO-17", + "rank": 17, + "localized": [ + "Johannessen" + ], + "romanized": [ + "Johannessen" + ], + "count": 13387 + }, + { + "id": "NO-18", + "rank": 18, + "localized": [ + "Andreassen" + ], + "romanized": [ + "Andreassen" + ], + "count": 12139 + }, + { + "id": "NO-19", + "rank": 19, + "localized": [ + "Jacobsen" + ], + "romanized": [ + "Jacobsen" + ], + "count": 11925 + }, + { + "id": "NO-20", + "rank": 20, + "localized": [ + "Dahl" + ], + "romanized": [ + "Dahl" + ], + "count": 11540 + }, + { + "id": "NO-21", + "rank": 21, + "localized": [ + "Jørgensen" + ], + "romanized": [ + "Jørgensen" + ], + "count": 11481 + }, + { + "id": "NO-22", + "rank": 22, + "localized": [ + "Halvorsen" + ], + "romanized": [ + "Halvorsen" + ], + "count": 11477 + }, + { + "id": "NO-23", + "rank": 23, + "localized": [ + "Henriksen" + ], + "romanized": [ + "Henriksen" + ], + "count": 11364 + }, + { + "id": "NO-24", + "rank": 24, + "localized": [ + "Lund" + ], + "romanized": [ + "Lund" + ], + "count": 11282 + } + ], + "PL": [ + { + "id": "PL-1", + "rank": 1, + "localized": [ + "Nowak" + ], + "romanized": [ + "Nowak" + ], + "count": 207348 + }, + { + "id": "PL-2", + "rank": 2, + "localized": [ + "Kowalski" + ], + "romanized": [ + "Kowalski" + ], + "count": 140471 + }, + { + "id": "PL-3", + "rank": 3, + "localized": [ + "Wiśniewski" + ], + "romanized": [ + "Wiśniewski" + ], + "count": 111174 + }, + { + "id": "PL-4", + "rank": 4, + "localized": [ + "Wójcik" + ], + "romanized": [ + "Wójcik" + ], + "count": 100064 + }, + { + "id": "PL-5", + "rank": 5, + "localized": [ + "Kowalczyk" + ], + "romanized": [ + "Kowalczyk" + ], + "count": 98739 + }, + { + "id": "PL-6", + "rank": 6, + "localized": [ + "Kamiński" + ], + "romanized": [ + "Kamiński" + ], + "count": 95816 + }, + { + "id": "PL-7", + "rank": 7, + "localized": [ + "Lewandowski" + ], + "romanized": [ + "Lewandowski" + ], + "count": 93404 + }, + { + "id": "PL-8", + "rank": 8, + "localized": [ + "Zieliński" + ], + "romanized": [ + "Zieliński" + ], + "count": 91522 + }, + { + "id": "PL-9", + "rank": 9, + "localized": [ + "Szymański" + ], + "romanized": [ + "Szymański" + ], + "count": 89698 + }, + { + "id": "PL-10", + "rank": 10, + "localized": [ + "Woźniak" + ], + "romanized": [ + "Woźniak" + ], + "count": 89015 + }, + { + "id": "PL-11", + "rank": 11, + "localized": [ + "Dąbrowski" + ], + "romanized": [ + "Dąbrowski" + ], + "count": 87304 + }, + { + "id": "PL-12", + "rank": 12, + "localized": [ + "Kozłowski" + ], + "romanized": [ + "Kozłowski" + ], + "count": 76657 + }, + { + "id": "PL-13", + "rank": 13, + "localized": [ + "Jankowski" + ], + "romanized": [ + "Jankowski" + ], + "count": 69280 + }, + { + "id": "PL-14", + "rank": 14, + "localized": [ + "Mazur" + ], + "romanized": [ + "Mazur" + ], + "count": 68090 + }, + { + "id": "PL-15", + "rank": 15, + "localized": [ + "Kwiatkowski" + ], + "romanized": [ + "Kwiatkowski" + ], + "count": 66917 + }, + { + "id": "PL-16", + "rank": 16, + "localized": [ + "Wojciechowski" + ], + "romanized": [ + "Wojciechowski" + ], + "count": 66879 + }, + { + "id": "PL-17", + "rank": 17, + "localized": [ + "Krawczyk" + ], + "romanized": [ + "Krawczyk" + ], + "count": 64543 + }, + { + "id": "PL-18", + "rank": 18, + "localized": [ + "Kaczmarek" + ], + "romanized": [ + "Kaczmarek" + ], + "count": 62399 + }, + { + "id": "PL-19", + "rank": 19, + "localized": [ + "Piotrowski" + ], + "romanized": [ + "Piotrowski" + ], + "count": 61844 + }, + { + "id": "PL-20", + "rank": 20, + "localized": [ + "Grabowski" + ], + "romanized": [ + "Grabowski" + ], + "count": 59052 + } + ], + "PT": [ + { + "id": "PT-1", + "rank": 1, + "localized": [ + "Silva" + ], + "romanized": [ + "Silva" + ], + "count": 975152 + }, + { + "id": "PT-2", + "rank": 2, + "localized": [ + "Santos" + ], + "romanized": [ + "Santos" + ], + "count": 615668 + }, + { + "id": "PT-3", + "rank": 3, + "localized": [ + "Ferreira" + ], + "romanized": [ + "Ferreira" + ], + "count": 542325 + }, + { + "id": "PT-4", + "rank": 4, + "localized": [ + "Pereira" + ], + "romanized": [ + "Pereira" + ], + "count": 504104 + }, + { + "id": "PT-5", + "rank": 5, + "localized": [ + "Oliveira" + ], + "romanized": [ + "Oliveira" + ], + "count": 383243 + }, + { + "id": "PT-6", + "rank": 6, + "localized": [ + "Costa" + ], + "romanized": [ + "Costa" + ], + "count": 380144 + }, + { + "id": "PT-7", + "rank": 7, + "localized": [ + "Rodrigues" + ], + "romanized": [ + "Rodrigues" + ], + "count": 368781 + }, + { + "id": "PT-8", + "rank": 8, + "localized": [ + "Martins" + ], + "romanized": [ + "Martins" + ], + "count": 333659 + }, + { + "id": "PT-9", + "rank": 9, + "localized": [ + "Jesus" + ], + "romanized": [ + "Jesus" + ], + "count": 308867 + }, + { + "id": "PT-10", + "rank": 10, + "localized": [ + "Sousa" + ], + "romanized": [ + "Sousa" + ], + "count": 304735 + }, + { + "id": "PT-11", + "rank": 11, + "localized": [ + "Fernandes" + ], + "romanized": [ + "Fernandes" + ], + "count": 291306 + }, + { + "id": "PT-12", + "rank": 12, + "localized": [ + "Gonçalves" + ], + "romanized": [ + "Gonçalves" + ], + "count": 285108 + }, + { + "id": "PT-13", + "rank": 13, + "localized": [ + "Gomes" + ], + "romanized": [ + "Gomes" + ], + "count": 265481 + }, + { + "id": "PT-14", + "rank": 14, + "localized": [ + "Lopes" + ], + "romanized": [ + "Lopes" + ], + "count": 260316 + }, + { + "id": "PT-15", + "rank": 15, + "localized": [ + "Marques" + ], + "romanized": [ + "Marques" + ], + "count": 259283 + }, + { + "id": "PT-16", + "rank": 16, + "localized": [ + "Alves" + ], + "romanized": [ + "Alves" + ], + "count": 244821 + }, + { + "id": "PT-17", + "rank": 17, + "localized": [ + "Almeida" + ], + "romanized": [ + "Almeida" + ], + "count": 234491 + }, + { + "id": "PT-18", + "rank": 18, + "localized": [ + "Ribeiro" + ], + "romanized": [ + "Ribeiro" + ], + "count": 234491 + }, + { + "id": "PT-19", + "rank": 19, + "localized": [ + "Pinto" + ], + "romanized": [ + "Pinto" + ], + "count": 215897 + }, + { + "id": "PT-20", + "rank": 20, + "localized": [ + "Carvalho" + ], + "romanized": [ + "Carvalho" + ], + "count": 203501 + }, + { + "id": "PT-21", + "rank": 21, + "localized": [ + "Teixeira" + ], + "romanized": [ + "Teixeira" + ], + "count": 174577 + }, + { + "id": "PT-22", + "rank": 22, + "localized": [ + "Moreira" + ], + "romanized": [ + "Moreira" + ], + "count": 159082 + }, + { + "id": "PT-23", + "rank": 23, + "localized": [ + "Correia" + ], + "romanized": [ + "Correia" + ], + "count": 158049 + }, + { + "id": "PT-24", + "rank": 24, + "localized": [ + "Mendes" + ], + "romanized": [ + "Mendes" + ], + "count": 143587 + }, + { + "id": "PT-25", + "rank": 25, + "localized": [ + "Nunes" + ], + "romanized": [ + "Nunes" + ], + "count": 136356 + }, + { + "id": "PT-26", + "rank": 26, + "localized": [ + "Soares" + ], + "romanized": [ + "Soares" + ], + "count": 132224 + }, + { + "id": "PT-27", + "rank": 27, + "localized": [ + "Vieira" + ], + "romanized": [ + "Vieira" + ], + "count": 123960 + }, + { + "id": "PT-28", + "rank": 28, + "localized": [ + "Monteiro" + ], + "romanized": [ + "Monteiro" + ], + "count": 114663 + }, + { + "id": "PT-29", + "rank": 29, + "localized": [ + "Cardoso" + ], + "romanized": [ + "Cardoso" + ], + "count": 110531 + }, + { + "id": "PT-30", + "rank": 30, + "localized": [ + "Rocha" + ], + "romanized": [ + "Rocha" + ], + "count": 107432 + }, + { + "id": "PT-31", + "rank": 31, + "localized": [ + "Neves" + ], + "romanized": [ + "Neves" + ], + "count": 101234 + }, + { + "id": "PT-32", + "rank": 32, + "localized": [ + "Coelho" + ], + "romanized": [ + "Coelho" + ], + "count": 100201 + }, + { + "id": "PT-33", + "rank": 33, + "localized": [ + "Cruz" + ], + "romanized": [ + "Cruz" + ], + "count": 97102 + }, + { + "id": "PT-34", + "rank": 34, + "localized": [ + "Cunha" + ], + "romanized": [ + "Cunha" + ], + "count": 96069 + }, + { + "id": "PT-35", + "rank": 35, + "localized": [ + "Pires" + ], + "romanized": [ + "Pires" + ], + "count": 95036 + }, + { + "id": "PT-36", + "rank": 36, + "localized": [ + "Duarte" + ], + "romanized": [ + "Duarte" + ], + "count": 88838 + }, + { + "id": "PT-37", + "rank": 37, + "localized": [ + "Reis" + ], + "romanized": [ + "Reis" + ], + "count": 87805 + }, + { + "id": "PT-38", + "rank": 38, + "localized": [ + "Simões" + ], + "romanized": [ + "Simões" + ], + "count": 87805 + }, + { + "id": "PT-39", + "rank": 39, + "localized": [ + "Antunes" + ], + "romanized": [ + "Antunes" + ], + "count": 84706 + }, + { + "id": "PT-40", + "rank": 40, + "localized": [ + "Matos" + ], + "romanized": [ + "Matos" + ], + "count": 84706 + }, + { + "id": "PT-41", + "rank": 41, + "localized": [ + "Fonseca" + ], + "romanized": [ + "Fonseca" + ], + "count": 83673 + }, + { + "id": "PT-42", + "rank": 42, + "localized": [ + "Machado" + ], + "romanized": [ + "Machado" + ], + "count": 78508 + }, + { + "id": "PT-43", + "rank": 43, + "localized": [ + "Araújo" + ], + "romanized": [ + "Araújo" + ], + "count": 71277 + }, + { + "id": "PT-44", + "rank": 44, + "localized": [ + "Barbosa" + ], + "romanized": [ + "Barbosa" + ], + "count": 71277 + }, + { + "id": "PT-45", + "rank": 45, + "localized": [ + "Tavares" + ], + "romanized": [ + "Tavares" + ], + "count": 69211 + }, + { + "id": "PT-46", + "rank": 46, + "localized": [ + "Lourenço" + ], + "romanized": [ + "Lourenço" + ], + "count": 67145 + }, + { + "id": "PT-47", + "rank": 47, + "localized": [ + "Castro" + ], + "romanized": [ + "Castro" + ], + "count": 64046 + }, + { + "id": "PT-48", + "rank": 48, + "localized": [ + "Figueiredo" + ], + "romanized": [ + "Figueiredo" + ], + "count": 64046 + }, + { + "id": "PT-49", + "rank": 49, + "localized": [ + "Azevedo" + ], + "romanized": [ + "Azevedo" + ], + "count": 61980 + }, + { + "id": "PT-50", + "rank": 50, + "localized": [ + "Freitas" + ], + "romanized": [ + "Freitas" + ], + "count": 61980 + } + ], + "RO": [ + { + "id": "RO-1", + "rank": 1, + "localized": [ + "Popa" + ], + "romanized": [ + "Popa" + ], + "count": null + }, + { + "id": "RO-2", + "rank": 2, + "localized": [ + "Popescu" + ], + "romanized": [ + "Popescu" + ], + "count": null + }, + { + "id": "RO-3", + "rank": 3, + "localized": [ + "Pop" + ], + "romanized": [ + "Pop" + ], + "count": null + }, + { + "id": "RO-4", + "rank": 4, + "localized": [ + "Radu" + ], + "romanized": [ + "Radu" + ], + "count": null + }, + { + "id": "RO-5", + "rank": 5, + "localized": [ + "Dumitru" + ], + "romanized": [ + "Dumitru" + ], + "count": null + }, + { + "id": "RO-6", + "rank": 6, + "localized": [ + "Stan" + ], + "romanized": [ + "Stan" + ], + "count": null + }, + { + "id": "RO-7", + "rank": 7, + "localized": [ + "Stoica" + ], + "romanized": [ + "Stoica" + ], + "count": null + }, + { + "id": "RO-8", + "rank": 8, + "localized": [ + "Gheorghe" + ], + "romanized": [ + "Gheorghe" + ], + "count": null + }, + { + "id": "RO-9", + "rank": 9, + "localized": [ + "Matei" + ], + "romanized": [ + "Matei" + ], + "count": null + }, + { + "id": "RO-10", + "rank": 10, + "localized": [ + "Ciobanu" + ], + "romanized": [ + "Ciobanu" + ], + "count": null + }, + { + "id": "RO-11", + "rank": 11, + "localized": [ + "Ionescu" + ], + "romanized": [ + "Ionescu" + ], + "count": null + }, + { + "id": "RO-12", + "rank": 12, + "localized": [ + "Rusu" + ], + "romanized": [ + "Rusu" + ], + "count": null + } + ], + "RS": [ + { + "id": "RS-1", + "rank": 1, + "localized": [ + "Јовановић" + ], + "romanized": [ + "Jovanović" + ], + "count": null + }, + { + "id": "RS-2", + "rank": 2, + "localized": [ + "Петровић" + ], + "romanized": [ + "Petrović" + ], + "count": null + }, + { + "id": "RS-3", + "rank": 3, + "localized": [ + "Николић" + ], + "romanized": [ + "Nikolić" + ], + "count": null + }, + { + "id": "RS-4", + "rank": 4, + "localized": [ + "Марковић" + ], + "romanized": [ + "Marković" + ], + "count": null + }, + { + "id": "RS-5", + "rank": 5, + "localized": [ + "Ђорђевић" + ], + "romanized": [ + "Đorđević" + ], + "count": null + }, + { + "id": "RS-6", + "rank": 6, + "localized": [ + "Стојановић" + ], + "romanized": [ + "Stojanović" + ], + "count": null + }, + { + "id": "RS-7", + "rank": 7, + "localized": [ + "Илић" + ], + "romanized": [ + "Ilić" + ], + "count": null + }, + { + "id": "RS-8", + "rank": 8, + "localized": [ + "Станковић" + ], + "romanized": [ + "Stanković" + ], + "count": null + }, + { + "id": "RS-9", + "rank": 9, + "localized": [ + "Павловић" + ], + "romanized": [ + "Pavlović" + ], + "count": null + }, + { + "id": "RS-10", + "rank": 10, + "localized": [ + "Милошевић" + ], + "romanized": [ + "Milošević" + ], + "count": null + } + ], + "SK": [ + { + "id": "SK-1", + "rank": 1, + "localized": [ + "Horváth" + ], + "romanized": [ + "Horváth" + ], + "count": 30813 + }, + { + "id": "SK-2", + "rank": 2, + "localized": [ + "Kováč" + ], + "romanized": [ + "Kováč" + ], + "count": 29079 + }, + { + "id": "SK-3", + "rank": 3, + "localized": [ + "Varga" + ], + "romanized": [ + "Varga" + ], + "count": 21650 + }, + { + "id": "SK-4", + "rank": 4, + "localized": [ + "Tóth" + ], + "romanized": [ + "Tóth" + ], + "count": 21604 + }, + { + "id": "SK-5", + "rank": 5, + "localized": [ + "Nagy" + ], + "romanized": [ + "Nagy" + ], + "count": 19341 + }, + { + "id": "SK-6", + "rank": 6, + "localized": [ + "Baláž" + ], + "romanized": [ + "Baláž" + ], + "count": 14114 + }, + { + "id": "SK-7", + "rank": 7, + "localized": [ + "Szabó" + ], + "romanized": [ + "Szabó" + ], + "count": 13998 + }, + { + "id": "SK-8", + "rank": 8, + "localized": [ + "Molnár" + ], + "romanized": [ + "Molnár" + ], + "count": 12632 + }, + { + "id": "SK-9", + "rank": 9, + "localized": [ + "Balog" + ], + "romanized": [ + "Balog" + ], + "count": 10872 + }, + { + "id": "SK-10", + "rank": 10, + "localized": [ + "Lukáč" + ], + "romanized": [ + "Lukáč" + ], + "count": 9718 + }, + { + "id": "SK-11", + "rank": 11, + "localized": [ + "Novák" + ], + "romanized": [ + "Novák" + ], + "count": 9712 + }, + { + "id": "SK-12", + "rank": 12, + "localized": [ + "Kovács" + ], + "romanized": [ + "Kovács" + ], + "count": 9567 + }, + { + "id": "SK-13", + "rank": 13, + "localized": [ + "Polák" + ], + "romanized": [ + "Polák" + ], + "count": 9352 + }, + { + "id": "SK-14", + "rank": 14, + "localized": [ + "Gajdoš" + ], + "romanized": [ + "Gajdoš" + ], + "count": 8777 + }, + { + "id": "SK-15", + "rank": 15, + "localized": [ + "Kollár" + ], + "romanized": [ + "Kollár" + ], + "count": 8699 + }, + { + "id": "SK-16", + "rank": 16, + "localized": [ + "Hudák" + ], + "romanized": [ + "Hudák" + ], + "count": 7895 + }, + { + "id": "SK-17", + "rank": 17, + "localized": [ + "Neméth" + ], + "romanized": [ + "Neméth" + ], + "count": 7491 + }, + { + "id": "SK-18", + "rank": 18, + "localized": [ + "Kováčik" + ], + "romanized": [ + "Kováčik" + ], + "count": 7472 + }, + { + "id": "SK-19", + "rank": 19, + "localized": [ + "Oláh" + ], + "romanized": [ + "Oláh" + ], + "count": 7240 + }, + { + "id": "SK-20", + "rank": 20, + "localized": [ + "Oravec" + ], + "romanized": [ + "Oravec" + ], + "count": 7223 + } + ], + "SI": [ + { + "id": "SI-1", + "rank": 1, + "localized": [ + "Novak" + ], + "romanized": [ + "Novak" + ], + "count": 11196 + }, + { + "id": "SI-2", + "rank": 2, + "localized": [ + "Horvat" + ], + "romanized": [ + "Horvat" + ], + "count": 9762 + }, + { + "id": "SI-3", + "rank": 3, + "localized": [ + "Kovačič" + ], + "romanized": [ + "Kovačič" + ], + "count": 5640 + }, + { + "id": "SI-4", + "rank": 4, + "localized": [ + "Krajnc" + ], + "romanized": [ + "Krajnc" + ], + "count": 5585 + }, + { + "id": "SI-5", + "rank": 5, + "localized": [ + "Zupančič" + ], + "romanized": [ + "Zupančič" + ], + "count": 5019 + }, + { + "id": "SI-6", + "rank": 6, + "localized": [ + "Potočnik" + ], + "romanized": [ + "Potočnik" + ], + "count": 4729 + }, + { + "id": "SI-7", + "rank": 7, + "localized": [ + "Kovač" + ], + "romanized": [ + "Kovač" + ], + "count": 4729 + }, + { + "id": "SI-8", + "rank": 8, + "localized": [ + "Mlakar" + ], + "romanized": [ + "Mlakar" + ], + "count": 3957 + }, + { + "id": "SI-9", + "rank": 9, + "localized": [ + "Kos" + ], + "romanized": [ + "Kos" + ], + "count": 3905 + }, + { + "id": "SI-10", + "rank": 10, + "localized": [ + "Vidmar" + ], + "romanized": [ + "Vidmar" + ], + "count": 3885 + }, + { + "id": "SI-11", + "rank": 11, + "localized": [ + "Golob" + ], + "romanized": [ + "Golob" + ], + "count": 3855 + }, + { + "id": "SI-12", + "rank": 12, + "localized": [ + "Turk" + ], + "romanized": [ + "Turk" + ], + "count": 3506 + }, + { + "id": "SI-13", + "rank": 13, + "localized": [ + "Božič" + ], + "romanized": [ + "Božič" + ], + "count": 3421 + }, + { + "id": "SI-14", + "rank": 14, + "localized": [ + "Kralj" + ], + "romanized": [ + "Kralj" + ], + "count": 3418 + }, + { + "id": "SI-15", + "rank": 15, + "localized": [ + "Korošec" + ], + "romanized": [ + "Korošec" + ], + "count": 3285 + }, + { + "id": "SI-16", + "rank": 16, + "localized": [ + "Zupan" + ], + "romanized": [ + "Zupan" + ], + "count": 3256 + }, + { + "id": "SI-17", + "rank": 17, + "localized": [ + "Bizjak" + ], + "romanized": [ + "Bizjak" + ], + "count": 3209 + }, + { + "id": "SI-18", + "rank": 18, + "localized": [ + "Hribar" + ], + "romanized": [ + "Hribar" + ], + "count": 3136 + }, + { + "id": "SI-19", + "rank": 19, + "localized": [ + "Kotnik" + ], + "romanized": [ + "Kotnik" + ], + "count": 3069 + }, + { + "id": "SI-20", + "rank": 20, + "localized": [ + "Kavčič" + ], + "romanized": [ + "Kavčič" + ], + "count": 3003 + }, + { + "id": "SI-21", + "rank": 21, + "localized": [ + "Rozman" + ], + "romanized": [ + "Rozman" + ], + "count": 2992 + }, + { + "id": "SI-22", + "rank": 22, + "localized": [ + "Kastelic" + ], + "romanized": [ + "Kastelic" + ], + "count": 2873 + }, + { + "id": "SI-23", + "rank": 23, + "localized": [ + "Oblak" + ], + "romanized": [ + "Oblak" + ], + "count": 2841 + }, + { + "id": "SI-24", + "rank": 24, + "localized": [ + "Žagar" + ], + "romanized": [ + "Žagar" + ], + "count": 2828 + }, + { + "id": "SI-25", + "rank": 25, + "localized": [ + "Petek" + ], + "romanized": [ + "Petek" + ], + "count": 2821 + }, + { + "id": "SI-26", + "rank": 26, + "localized": [ + "Hočevar" + ], + "romanized": [ + "Hočevar" + ], + "count": 2808 + }, + { + "id": "SI-27", + "rank": 27, + "localized": [ + "Kolar" + ], + "romanized": [ + "Kolar" + ], + "count": 2807 + }, + { + "id": "SI-28", + "rank": 28, + "localized": [ + "Košir" + ], + "romanized": [ + "Košir" + ], + "count": 2738 + }, + { + "id": "SI-29", + "rank": 29, + "localized": [ + "Koren" + ], + "romanized": [ + "Koren" + ], + "count": 2598 + }, + { + "id": "SI-30", + "rank": 30, + "localized": [ + "Klemenčič" + ], + "romanized": [ + "Klemenčič" + ], + "count": 2399 + } + ], + "ES": [ + { + "id": "ES-1", + "rank": 1, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 1378000 + }, + { + "id": "ES-2", + "rank": 2, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 851000 + }, + { + "id": "ES-3", + "rank": 3, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 839000 + }, + { + "id": "ES-4", + "rank": 4, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 804000 + }, + { + "id": "ES-5", + "rank": 5, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 796000 + }, + { + "id": "ES-6", + "rank": 6, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 788000 + }, + { + "id": "ES-7", + "rank": 7, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 725000 + }, + { + "id": "ES-8", + "rank": 8, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 709000 + }, + { + "id": "ES-9", + "rank": 9, + "localized": [ + "Martín" + ], + "romanized": [ + "Martín" + ], + "count": 459000 + }, + { + "id": "ES-10", + "rank": 10, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 440000 + }, + { + "id": "ES-11", + "rank": 11, + "localized": [ + "Ruiz" + ], + "romanized": [ + "Ruiz" + ], + "count": 321000 + }, + { + "id": "ES-12", + "rank": 12, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 305000 + }, + { + "id": "ES-13", + "rank": 13, + "localized": [ + "Jiménez" + ], + "romanized": [ + "Jiménez" + ], + "count": 293000 + }, + { + "id": "ES-14", + "rank": 14, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 293000 + }, + { + "id": "ES-15", + "rank": 15, + "localized": [ + "Álvarez" + ], + "romanized": [ + "Álvarez" + ], + "count": 273000 + }, + { + "id": "ES-16", + "rank": 16, + "localized": [ + "Moreno" + ], + "romanized": [ + "Moreno" + ], + "count": 261000 + }, + { + "id": "ES-17", + "rank": 17, + "localized": [ + "Muñoz" + ], + "romanized": [ + "Muñoz" + ], + "count": 241000 + }, + { + "id": "ES-18", + "rank": 18, + "localized": [ + "Alonso" + ], + "romanized": [ + "Alonso" + ], + "count": 206000 + }, + { + "id": "ES-19", + "rank": 19, + "localized": [ + "Gutiérrez" + ], + "romanized": [ + "Gutiérrez" + ], + "count": 170000 + }, + { + "id": "ES-20", + "rank": 20, + "localized": [ + "Romero" + ], + "romanized": [ + "Romero" + ], + "count": 170000 + }, + { + "id": "ES-21", + "rank": 21, + "localized": [ + "Navarro" + ], + "romanized": [ + "Navarro" + ], + "count": 158400 + }, + { + "id": "ES-22", + "rank": 22, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": 134600 + }, + { + "id": "ES-23", + "rank": 23, + "localized": [ + "Domínguez" + ], + "romanized": [ + "Domínguez" + ], + "count": 134600 + }, + { + "id": "ES-24", + "rank": 24, + "localized": [ + "Gil" + ], + "romanized": [ + "Gil" + ], + "count": 134600 + }, + { + "id": "ES-25", + "rank": 25, + "localized": [ + "Vázquez" + ], + "romanized": [ + "Vázquez" + ], + "count": 130000 + }, + { + "id": "ES-26", + "rank": 26, + "localized": [ + "Serrano" + ], + "romanized": [ + "Serrano" + ], + "count": 122700 + }, + { + "id": "ES-27", + "rank": 27, + "localized": [ + "Ramos" + ], + "romanized": [ + "Ramos" + ], + "count": 118000 + }, + { + "id": "ES-28", + "rank": 28, + "localized": [ + "Blanco" + ], + "romanized": [ + "Blanco" + ], + "count": 118000 + }, + { + "id": "ES-29", + "rank": 29, + "localized": [ + "Sanz" + ], + "romanized": [ + "Sanz" + ], + "count": 106900 + }, + { + "id": "ES-30", + "rank": 30, + "localized": [ + "Castro" + ], + "romanized": [ + "Castro" + ], + "count": 102900 + }, + { + "id": "ES-31", + "rank": 31, + "localized": [ + "Suárez" + ], + "romanized": [ + "Suárez" + ], + "count": 102900 + }, + { + "id": "ES-32", + "rank": 32, + "localized": [ + "Ortega" + ], + "romanized": [ + "Ortega" + ], + "count": 99000 + }, + { + "id": "ES-33", + "rank": 33, + "localized": [ + "Rubio" + ], + "romanized": [ + "Rubio" + ], + "count": 99000 + }, + { + "id": "ES-34", + "rank": 34, + "localized": [ + "Molina" + ], + "romanized": [ + "Molina" + ], + "count": 99000 + }, + { + "id": "ES-35", + "rank": 35, + "localized": [ + "Delgado" + ], + "romanized": [ + "Delgado" + ], + "count": 95000 + }, + { + "id": "ES-36", + "rank": 36, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 95000 + }, + { + "id": "ES-37", + "rank": 37, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": 95000 + }, + { + "id": "ES-38", + "rank": 38, + "localized": [ + "Ortiz" + ], + "romanized": [ + "Ortiz" + ], + "count": 87120 + }, + { + "id": "ES-39", + "rank": 39, + "localized": [ + "Marín" + ], + "romanized": [ + "Marín" + ], + "count": 83160 + }, + { + "id": "ES-40", + "rank": 40, + "localized": [ + "Iglesias" + ], + "romanized": [ + "Iglesias" + ], + "count": 83160 + } + ], + "SV": [ + { + "id": "SV-1", + "rank": 1, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": null + }, + { + "id": "SV-2", + "rank": 2, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": null + }, + { + "id": "SV-3", + "rank": 3, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": null + }, + { + "id": "SV-4", + "rank": 4, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": null + }, + { + "id": "SV-5", + "rank": 5, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": null + }, + { + "id": "SV-6", + "rank": 6, + "localized": [ + "Flores" + ], + "romanized": [ + "Flores" + ], + "count": null + }, + { + "id": "SV-7", + "rank": 7, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": null + }, + { + "id": "SV-8", + "rank": 8, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": null + }, + { + "id": "SV-9", + "rank": 9, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": null + }, + { + "id": "SV-10", + "rank": 10, + "localized": [ + "Rivera" + ], + "romanized": [ + "Rivera" + ], + "count": null + }, + { + "id": "SV-11", + "rank": 11, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": null + }, + { + "id": "SV-12", + "rank": 12, + "localized": [ + "Cruz" + ], + "romanized": [ + "Cruz" + ], + "count": null + }, + { + "id": "SV-13", + "rank": 13, + "localized": [ + "Mejía" + ], + "romanized": [ + "Mejía" + ], + "count": null + }, + { + "id": "SV-14", + "rank": 14, + "localized": [ + "Rivas" + ], + "romanized": [ + "Rivas" + ], + "count": null + }, + { + "id": "SV-15", + "rank": 15, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": null + }, + { + "id": "SV-16", + "rank": 16, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": null + }, + { + "id": "SV-17", + "rank": 17, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": null + }, + { + "id": "SV-18", + "rank": 18, + "localized": [ + "Ramos" + ], + "romanized": [ + "Ramos" + ], + "count": null + }, + { + "id": "SV-19", + "rank": 19, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": null + }, + { + "id": "SV-20", + "rank": 20, + "localized": [ + "Portillo" + ], + "romanized": [ + "Portillo" + ], + "count": null + }, + { + "id": "SV-21", + "rank": 21, + "localized": [ + "Escobar" + ], + "romanized": [ + "Escobar" + ], + "count": null + }, + { + "id": "SV-22", + "rank": 22, + "localized": [ + "Orellana" + ], + "romanized": [ + "Orellana" + ], + "count": null + }, + { + "id": "SV-23", + "rank": 23, + "localized": [ + "Romero" + ], + "romanized": [ + "Romero" + ], + "count": null + }, + { + "id": "SV-24", + "rank": 24, + "localized": [ + "Aguilar" + ], + "romanized": [ + "Aguilar" + ], + "count": null + }, + { + "id": "SV-25", + "rank": 25, + "localized": [ + "Alvarado" + ], + "romanized": [ + "Alvarado" + ], + "count": null + } + ], + "CH": [ + { + "id": "CH-1", + "rank": 1, + "localized": [ + "Müller" + ], + "romanized": [ + "Müller" + ], + "count": 31000 + }, + { + "id": "CH-2", + "rank": 2, + "localized": [ + "Meier" + ], + "romanized": [ + "Meier" + ], + "count": 19150 + }, + { + "id": "CH-3", + "rank": 3, + "localized": [ + "Schmid" + ], + "romanized": [ + "Schmid" + ], + "count": 16900 + }, + { + "id": "CH-4", + "rank": 4, + "localized": [ + "Keller" + ], + "romanized": [ + "Keller" + ], + "count": 13000 + }, + { + "id": "CH-5", + "rank": 5, + "localized": [ + "Weber" + ], + "romanized": [ + "Weber" + ], + "count": 11850 + }, + { + "id": "CH-6", + "rank": 6, + "localized": [ + "Huber" + ], + "romanized": [ + "Huber" + ], + "count": 10550 + }, + { + "id": "CH-7", + "rank": 7, + "localized": [ + "Meyer" + ], + "romanized": [ + "Meyer" + ], + "count": 10350 + }, + { + "id": "CH-8", + "rank": 8, + "localized": [ + "Schneider" + ], + "romanized": [ + "Schneider" + ], + "count": 10300 + }, + { + "id": "CH-9", + "rank": 9, + "localized": [ + "Steiner" + ], + "romanized": [ + "Steiner" + ], + "count": 8950 + }, + { + "id": "CH-10", + "rank": 10, + "localized": [ + "Fischer" + ], + "romanized": [ + "Fischer" + ], + "count": 8200 + }, + { + "id": "CH-11", + "rank": 11, + "localized": [ + "Brunner" + ], + "romanized": [ + "Brunner" + ], + "count": 8100 + }, + { + "id": "CH-12", + "rank": 12, + "localized": [ + "Baumann" + ], + "romanized": [ + "Baumann" + ], + "count": 8000 + }, + { + "id": "CH-13", + "rank": 13, + "localized": [ + "Gerber" + ], + "romanized": [ + "Gerber" + ], + "count": 7950 + }, + { + "id": "CH-14", + "rank": 14, + "localized": [ + "Frei" + ], + "romanized": [ + "Frei" + ], + "count": 7750 + }, + { + "id": "CH-15", + "rank": 15, + "localized": [ + "Moser" + ], + "romanized": [ + "Moser" + ], + "count": 7500 + } + ], + "UA": [ + { + "id": "UA-1", + "rank": 1, + "localized": [ + "Melnyk" + ], + "romanized": [ + "Melnyk" + ], + "count": null + }, + { + "id": "UA-2", + "rank": 2, + "localized": [ + "Shevchenko" + ], + "romanized": [ + "Shevchenko" + ], + "count": null + }, + { + "id": "UA-3", + "rank": 3, + "localized": [ + "Boyko" + ], + "romanized": [ + "Boyko" + ], + "count": null + }, + { + "id": "UA-4", + "rank": 4, + "localized": [ + "Kovalenko" + ], + "romanized": [ + "Kovalenko" + ], + "count": null + }, + { + "id": "UA-5", + "rank": 5, + "localized": [ + "Bondarenko" + ], + "romanized": [ + "Bondarenko" + ], + "count": null + }, + { + "id": "UA-6", + "rank": 6, + "localized": [ + "Tkachenko" + ], + "romanized": [ + "Tkachenko" + ], + "count": null + }, + { + "id": "UA-7", + "rank": 7, + "localized": [ + "Kovalchuk" + ], + "romanized": [ + "Kovalchuk" + ], + "count": null + }, + { + "id": "UA-8", + "rank": 8, + "localized": [ + "Kravchenko" + ], + "romanized": [ + "Kravchenko" + ], + "count": null + }, + { + "id": "UA-9", + "rank": 9, + "localized": [ + "Yakovenko" + ], + "romanized": [ + "Yakovenko" + ], + "count": null + }, + { + "id": "UA-10", + "rank": 10, + "localized": [ + "Shevchuk" + ], + "romanized": [ + "Shevchuk" + ], + "count": null + }, + { + "id": "UA-11", + "rank": 11, + "localized": [ + "Koval" + ], + "romanized": [ + "Koval" + ], + "count": null + }, + { + "id": "UA-12", + "rank": 12, + "localized": [ + "Polishchuk" + ], + "romanized": [ + "Polishchuk" + ], + "count": null + }, + { + "id": "UA-13", + "rank": 13, + "localized": [ + "Bondar" + ], + "romanized": [ + "Bondar" + ], + "count": null + }, + { + "id": "UA-14", + "rank": 14, + "localized": [ + "Tkachuk" + ], + "romanized": [ + "Tkachuk" + ], + "count": null + }, + { + "id": "UA-15", + "rank": 15, + "localized": [ + "Moroz" + ], + "romanized": [ + "Moroz" + ], + "count": null + }, + { + "id": "UA-16", + "rank": 16, + "localized": [ + "Marchenko" + ], + "romanized": [ + "Marchenko" + ], + "count": null + }, + { + "id": "UA-17", + "rank": 17, + "localized": [ + "Lysenko" + ], + "romanized": [ + "Lysenko" + ], + "count": null + }, + { + "id": "UA-18", + "rank": 18, + "localized": [ + "Rudenko" + ], + "romanized": [ + "Rudenko" + ], + "count": null + }, + { + "id": "UA-19", + "rank": 19, + "localized": [ + "Savchenko" + ], + "romanized": [ + "Savchenko" + ], + "count": null + }, + { + "id": "UA-20", + "rank": 20, + "localized": [ + "Petrenko" + ], + "romanized": [ + "Petrenko" + ], + "count": null + } + ], + "GB": [ + { + "id": "GB-1", + "rank": 1, + "localized": [ + "Brown" + ], + "romanized": [ + "Brown" + ], + "count": null + }, + { + "id": "GB-2", + "rank": 2, + "localized": [ + "Smith" + ], + "romanized": [ + "Smith" + ], + "count": null + }, + { + "id": "GB-3", + "rank": 3, + "localized": [ + "Patel" + ], + "romanized": [ + "Patel" + ], + "count": null + }, + { + "id": "GB-4", + "rank": 4, + "localized": [ + "Jones" + ], + "romanized": [ + "Jones" + ], + "count": null + }, + { + "id": "GB-5", + "rank": 5, + "localized": [ + "Williams" + ], + "romanized": [ + "Williams" + ], + "count": null + }, + { + "id": "GB-6", + "rank": 6, + "localized": [ + "Johnson" + ], + "romanized": [ + "Johnson" + ], + "count": null + }, + { + "id": "GB-7", + "rank": 7, + "localized": [ + "Taylor" + ], + "romanized": [ + "Taylor" + ], + "count": null + }, + { + "id": "GB-8", + "rank": 8, + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ], + "count": null + }, + { + "id": "GB-9", + "rank": 9, + "localized": [ + "Roberts" + ], + "romanized": [ + "Roberts" + ], + "count": null + }, + { + "id": "GB-10", + "rank": 10, + "localized": [ + "Khan" + ], + "romanized": [ + "Khan" + ], + "count": null + }, + { + "id": "GB-11", + "rank": 11, + "localized": [ + "Lewis" + ], + "romanized": [ + "Lewis" + ], + "count": null + }, + { + "id": "GB-12", + "rank": 12, + "localized": [ + "Jackson" + ], + "romanized": [ + "Jackson" + ], + "count": null + }, + { + "id": "GB-13", + "rank": 13, + "localized": [ + "Clarke" + ], + "romanized": [ + "Clarke" + ], + "count": null + }, + { + "id": "GB-14", + "rank": 14, + "localized": [ + "James" + ], + "romanized": [ + "James" + ], + "count": null + }, + { + "id": "GB-15", + "rank": 15, + "localized": [ + "Phillips" + ], + "romanized": [ + "Phillips" + ], + "count": null + }, + { + "id": "GB-16", + "rank": 16, + "localized": [ + "Wilson" + ], + "romanized": [ + "Wilson" + ], + "count": null + }, + { + "id": "GB-17", + "rank": 17, + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ], + "count": null + }, + { + "id": "GB-18", + "rank": 18, + "localized": [ + "Mason" + ], + "romanized": [ + "Mason" + ], + "count": null + }, + { + "id": "GB-19", + "rank": 19, + "localized": [ + "Mitchell" + ], + "romanized": [ + "Mitchell" + ], + "count": null + }, + { + "id": "GB-20", + "rank": 20, + "localized": [ + "Rose" + ], + "romanized": [ + "Rose" + ], + "count": null + }, + { + "id": "GB-21", + "rank": 21, + "localized": [ + "Davis" + ], + "romanized": [ + "Davis" + ], + "count": null + }, + { + "id": "GB-22", + "rank": 22, + "localized": [ + "Davies" + ], + "romanized": [ + "Davies" + ], + "count": null + }, + { + "id": "GB-23", + "rank": 23, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": null + }, + { + "id": "GB-24", + "rank": 24, + "localized": [ + "Cox" + ], + "romanized": [ + "Cox" + ], + "count": null + }, + { + "id": "GB-25", + "rank": 25, + "localized": [ + "Alexander" + ], + "romanized": [ + "Alexander" + ], + "count": null + } + ], + "CA": [ + { + "id": "CA-1", + "rank": 1, + "localized": [ + "Smith" + ], + "romanized": [ + "Smith" + ], + "count": 192145 + }, + { + "id": "CA-2", + "rank": 2, + "localized": [ + "Brown" + ], + "romanized": [ + "Brown" + ], + "count": 108859 + }, + { + "id": "CA-3", + "rank": 3, + "localized": [ + "Tremblay" + ], + "romanized": [ + "Tremblay" + ], + "count": 106668 + }, + { + "id": "CA-4", + "rank": 4, + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ], + "count": 91680 + }, + { + "id": "CA-5", + "rank": 5, + "localized": [ + "Roy" + ], + "romanized": [ + "Roy" + ], + "count": 90417 + }, + { + "id": "CA-6", + "rank": 6, + "localized": [ + "Gagnon" + ], + "romanized": [ + "Gagnon" + ], + "count": 85120 + }, + { + "id": "CA-7", + "rank": 7, + "localized": [ + "Lee" + ], + "romanized": [ + "Lee" + ], + "count": 83424 + }, + { + "id": "CA-8", + "rank": 8, + "localized": [ + "Wilson" + ], + "romanized": [ + "Wilson" + ], + "count": 82768 + }, + { + "id": "CA-9", + "rank": 9, + "localized": [ + "Johnson" + ], + "romanized": [ + "Johnson" + ], + "count": 79492 + }, + { + "id": "CA-10", + "rank": 10, + "localized": [ + "MacDonald" + ], + "romanized": [ + "MacDonald" + ], + "count": 78766 + } + ], + "CR": [ + { + "id": "CR-1", + "rank": 1, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": null + }, + { + "id": "CR-2", + "rank": 2, + "localized": [ + "Mora" + ], + "romanized": [ + "Mora" + ], + "count": null + }, + { + "id": "CR-3", + "rank": 3, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": null + }, + { + "id": "CR-4", + "rank": 4, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": null + }, + { + "id": "CR-5", + "rank": 5, + "localized": [ + "Jiménez" + ], + "romanized": [ + "Jiménez" + ], + "count": null + }, + { + "id": "CR-6", + "rank": 6, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": null + }, + { + "id": "CR-7", + "rank": 7, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": null + }, + { + "id": "CR-8", + "rank": 8, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": null + }, + { + "id": "CR-9", + "rank": 9, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": null + }, + { + "id": "CR-10", + "rank": 10, + "localized": [ + "Calderón" + ], + "romanized": [ + "Calderón" + ], + "count": null + }, + { + "id": "CR-11", + "rank": 11, + "localized": [ + "Gutiérrez" + ], + "romanized": [ + "Gutiérrez" + ], + "count": null + }, + { + "id": "CR-12", + "rank": 12, + "localized": [ + "Rojas" + ], + "romanized": [ + "Rojas" + ], + "count": null + }, + { + "id": "CR-13", + "rank": 13, + "localized": [ + "Vargas" + ], + "romanized": [ + "Vargas" + ], + "count": null + }, + { + "id": "CR-14", + "rank": 14, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": null + }, + { + "id": "CR-15", + "rank": 15, + "localized": [ + "Salas" + ], + "romanized": [ + "Salas" + ], + "count": null + }, + { + "id": "CR-16", + "rank": 16, + "localized": [ + "Segura" + ], + "romanized": [ + "Segura" + ], + "count": null + }, + { + "id": "CR-17", + "rank": 17, + "localized": [ + "Valverde" + ], + "romanized": [ + "Valverde" + ], + "count": null + }, + { + "id": "CR-18", + "rank": 18, + "localized": [ + "Villalobos" + ], + "romanized": [ + "Villalobos" + ], + "count": null + }, + { + "id": "CR-19", + "rank": 19, + "localized": [ + "Araya" + ], + "romanized": [ + "Araya" + ], + "count": null + }, + { + "id": "CR-20", + "rank": 20, + "localized": [ + "Herrera" + ], + "romanized": [ + "Herrera" + ], + "count": null + }, + { + "id": "CR-21", + "rank": 21, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": null + }, + { + "id": "CR-22", + "rank": 22, + "localized": [ + "Madrigal" + ], + "romanized": [ + "Madrigal" + ], + "count": null + } + ], + "CU": [ + { + "id": "CU-1", + "rank": 1, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 225321 + }, + { + "id": "CU-2", + "rank": 2, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 158059 + }, + { + "id": "CU-3", + "rank": 3, + "localized": [ + "Martinez" + ], + "romanized": [ + "Martinez" + ], + "count": 141259 + }, + { + "id": "CU-4", + "rank": 4, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 137124 + }, + { + "id": "CU-5", + "rank": 5, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": 104892 + }, + { + "id": "CU-6", + "rank": 6, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 104392 + }, + { + "id": "CU-7", + "rank": 7, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 95106 + }, + { + "id": "CU-8", + "rank": 8, + "localized": [ + "Peña" + ], + "romanized": [ + "Peña" + ], + "count": 94396 + }, + { + "id": "CU-9", + "rank": 9, + "localized": [ + "Jiménez" + ], + "romanized": [ + "Jiménez" + ], + "count": 92978 + }, + { + "id": "CU-10", + "rank": 10, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 92863 + }, + { + "id": "CU-11", + "rank": 11, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 91080 + }, + { + "id": "CU-12", + "rank": 12, + "localized": [ + "Rosario" + ], + "romanized": [ + "Rosario" + ], + "count": 89630 + }, + { + "id": "CU-13", + "rank": 13, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 85757 + }, + { + "id": "CU-14", + "rank": 14, + "localized": [ + "Santana" + ], + "romanized": [ + "Santana" + ], + "count": 81973 + }, + { + "id": "CU-15", + "rank": 15, + "localized": [ + "Núñez" + ], + "romanized": [ + "Núñez" + ], + "count": 79374 + }, + { + "id": "CU-16", + "rank": 16, + "localized": [ + "Castillo" + ], + "romanized": [ + "Castillo" + ], + "count": 78338 + }, + { + "id": "CU-17", + "rank": 17, + "localized": [ + "de la Cruz" + ], + "romanized": [ + "de la Cruz" + ], + "count": 76977 + }, + { + "id": "CU-18", + "rank": 18, + "localized": [ + "Cruz" + ], + "romanized": [ + "Cruz" + ], + "count": 64613 + }, + { + "id": "CU-19", + "rank": 19, + "localized": [ + "Guzmán" + ], + "romanized": [ + "Guzmán" + ], + "count": 63073 + }, + { + "id": "CU-20", + "rank": 20, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 62310 + }, + { + "id": "CU-21", + "rank": 21, + "localized": [ + "Santos" + ], + "romanized": [ + "Santos" + ], + "count": 60613 + }, + { + "id": "CU-22", + "rank": 22, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 59566 + }, + { + "id": "CU-23", + "rank": 23, + "localized": [ + "Fuentes" + ], + "romanized": [ + "Fuentes" + ], + "count": 58518 + }, + { + "id": "CU-24", + "rank": 24, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": 56149 + }, + { + "id": "CU-25", + "rank": 25, + "localized": [ + "De Los Santos" + ], + "romanized": [ + "De Los Santos" + ], + "count": 54634 + }, + { + "id": "CU-26", + "rank": 26, + "localized": [ + "Mejía" + ], + "romanized": [ + "Mejía" + ], + "count": 51605 + }, + { + "id": "CU-27", + "rank": 27, + "localized": [ + "Ponce" + ], + "romanized": [ + "Ponce" + ], + "count": 49952 + }, + { + "id": "CU-28", + "rank": 28, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 49712 + }, + { + "id": "CU-29", + "rank": 29, + "localized": [ + "Vargas" + ], + "romanized": [ + "Vargas" + ], + "count": 49353 + }, + { + "id": "CU-30", + "rank": 30, + "localized": [ + "Montes" + ], + "romanized": [ + "Montes" + ], + "count": 48574 + } + ], + "DO": [ + { + "id": "DO-1", + "rank": 1, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 225321 + }, + { + "id": "DO-2", + "rank": 2, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 158059 + }, + { + "id": "DO-3", + "rank": 3, + "localized": [ + "Martinez" + ], + "romanized": [ + "Martinez" + ], + "count": 141259 + }, + { + "id": "DO-4", + "rank": 4, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 137124 + }, + { + "id": "DO-5", + "rank": 5, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": 104892 + }, + { + "id": "DO-6", + "rank": 6, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 104392 + }, + { + "id": "DO-7", + "rank": 7, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 95106 + }, + { + "id": "DO-8", + "rank": 8, + "localized": [ + "Peña" + ], + "romanized": [ + "Peña" + ], + "count": 94396 + }, + { + "id": "DO-9", + "rank": 9, + "localized": [ + "Jiménez" + ], + "romanized": [ + "Jiménez" + ], + "count": 92978 + }, + { + "id": "DO-10", + "rank": 10, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 92863 + }, + { + "id": "DO-11", + "rank": 11, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 91080 + }, + { + "id": "DO-12", + "rank": 12, + "localized": [ + "Rosario" + ], + "romanized": [ + "Rosario" + ], + "count": 89630 + }, + { + "id": "DO-13", + "rank": 13, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 85757 + }, + { + "id": "DO-14", + "rank": 14, + "localized": [ + "Santana" + ], + "romanized": [ + "Santana" + ], + "count": 81973 + }, + { + "id": "DO-15", + "rank": 15, + "localized": [ + "Núñez" + ], + "romanized": [ + "Núñez" + ], + "count": 79374 + }, + { + "id": "DO-16", + "rank": 16, + "localized": [ + "Castillo" + ], + "romanized": [ + "Castillo" + ], + "count": 78338 + }, + { + "id": "DO-17", + "rank": 17, + "localized": [ + "de la Cruz" + ], + "romanized": [ + "de la Cruz" + ], + "count": 76977 + }, + { + "id": "DO-18", + "rank": 18, + "localized": [ + "Cruz" + ], + "romanized": [ + "Cruz" + ], + "count": 64613 + }, + { + "id": "DO-19", + "rank": 19, + "localized": [ + "Guzmán" + ], + "romanized": [ + "Guzmán" + ], + "count": 63073 + }, + { + "id": "DO-20", + "rank": 20, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 62310 + }, + { + "id": "DO-21", + "rank": 21, + "localized": [ + "Santos" + ], + "romanized": [ + "Santos" + ], + "count": 60613 + }, + { + "id": "DO-22", + "rank": 22, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 59566 + }, + { + "id": "DO-23", + "rank": 23, + "localized": [ + "Fuentes" + ], + "romanized": [ + "Fuentes" + ], + "count": 58518 + }, + { + "id": "DO-24", + "rank": 24, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": 56149 + }, + { + "id": "DO-25", + "rank": 25, + "localized": [ + "De Los Santos" + ], + "romanized": [ + "De Los Santos" + ], + "count": 54634 + }, + { + "id": "DO-26", + "rank": 26, + "localized": [ + "Mejía" + ], + "romanized": [ + "Mejía" + ], + "count": 51605 + }, + { + "id": "DO-27", + "rank": 27, + "localized": [ + "Ponce" + ], + "romanized": [ + "Ponce" + ], + "count": 49952 + }, + { + "id": "DO-28", + "rank": 28, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 49712 + }, + { + "id": "DO-29", + "rank": 29, + "localized": [ + "Vargas" + ], + "romanized": [ + "Vargas" + ], + "count": 49353 + }, + { + "id": "DO-30", + "rank": 30, + "localized": [ + "Montes" + ], + "romanized": [ + "Montes" + ], + "count": 48574 + } + ], + "GT": [ + { + "id": "GT-1", + "rank": 1, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 371525 + }, + { + "id": "GT-2", + "rank": 2, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 285670 + }, + { + "id": "GT-3", + "rank": 3, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": 228167 + }, + { + "id": "GT-4", + "rank": 4, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 222755 + }, + { + "id": "GT-5", + "rank": 5, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 209963 + }, + { + "id": "GT-6", + "rank": 6, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 208795 + }, + { + "id": "GT-7", + "rank": 7, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 135978 + }, + { + "id": "GT-8", + "rank": 8, + "localized": [ + "De León" + ], + "romanized": [ + "De León" + ], + "count": 134010 + }, + { + "id": "GT-9", + "rank": 9, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 131796 + }, + { + "id": "GT-10", + "rank": 10, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 123186 + }, + { + "id": "GT-11", + "rank": 11, + "localized": [ + "Castillo" + ], + "romanized": [ + "Castillo" + ], + "count": 116298 + }, + { + "id": "GT-12", + "rank": 12, + "localized": [ + "Estrada" + ], + "romanized": [ + "Estrada" + ], + "count": 115252 + }, + { + "id": "GT-13", + "rank": 13, + "localized": [ + "Marroquín" + ], + "romanized": [ + "Marroquín" + ], + "count": 113961 + }, + { + "id": "GT-14", + "rank": 14, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 110824 + }, + { + "id": "GT-15", + "rank": 15, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": 102153 + }, + { + "id": "GT-16", + "rank": 16, + "localized": [ + "Méndez" + ], + "romanized": [ + "Méndez" + ], + "count": 98462 + }, + { + "id": "GT-17", + "rank": 17, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": 95449 + }, + { + "id": "GT-18", + "rank": 18, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 94403 + }, + { + "id": "GT-19", + "rank": 19, + "localized": [ + "Aguilar" + ], + "romanized": [ + "Aguilar" + ], + "count": 94096 + }, + { + "id": "GT-20", + "rank": 20, + "localized": [ + "Velásquez" + ], + "romanized": [ + "Velásquez" + ], + "count": 89975 + } + ], + "MX": [ + { + "id": "MX-1", + "rank": 1, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 5526929 + }, + { + "id": "MX-2", + "rank": 2, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 4129360 + }, + { + "id": "MX-3", + "rank": 3, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 3886887 + }, + { + "id": "MX-4", + "rank": 4, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 3188693 + }, + { + "id": "MX-5", + "rank": 5, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 3148024 + }, + { + "id": "MX-6", + "rank": 6, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 2744179 + }, + { + "id": "MX-7", + "rank": 7, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 2746468 + }, + { + "id": "MX-8", + "rank": 8, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 2234625 + }, + { + "id": "MX-9", + "rank": 9, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 2070723 + }, + { + "id": "MX-10", + "rank": 10, + "localized": [ + "Flores" + ], + "romanized": [ + "Flores" + ], + "count": 1392707 + }, + { + "id": "MX-11", + "rank": 11, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 989295 + }, + { + "id": "MX-12", + "rank": 12, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": 841966 + }, + { + "id": "MX-13", + "rank": 13, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 811553 + }, + { + "id": "MX-14", + "rank": 14, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": 806894 + }, + { + "id": "MX-15", + "rank": 15, + "localized": [ + "Cruz" + ], + "romanized": [ + "Cruz" + ], + "count": 800874 + }, + { + "id": "MX-16", + "rank": 16, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": 771796 + }, + { + "id": "MX-17", + "rank": 17, + "localized": [ + "Gutiérrez" + ], + "romanized": [ + "Gutiérrez" + ], + "count": 748789 + }, + { + "id": "MX-18", + "rank": 18, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": 738320 + }, + { + "id": "MX-19", + "rank": 19, + "localized": [ + "Ruíz" + ], + "romanized": [ + "Ruíz" + ], + "count": 708718 + }, + { + "id": "MX-20", + "rank": 20, + "localized": [ + "Jiménez" + ], + "romanized": [ + "Jiménez" + ], + "count": 670453 + }, + { + "id": "MX-21", + "rank": 21, + "localized": [ + "Mendoza" + ], + "romanized": [ + "Mendoza" + ], + "count": 613683 + }, + { + "id": "MX-22", + "rank": 22, + "localized": [ + "Aguilar" + ], + "romanized": [ + "Aguilar" + ], + "count": 611904 + }, + { + "id": "MX-23", + "rank": 23, + "localized": [ + "Ortíz" + ], + "romanized": [ + "Ortíz" + ], + "count": 576989 + }, + { + "id": "MX-24", + "rank": 24, + "localized": [ + "Álvarez" + ], + "romanized": [ + "Álvarez" + ], + "count": 557332 + }, + { + "id": "MX-25", + "rank": 25, + "localized": [ + "Castillo" + ], + "romanized": [ + "Castillo" + ], + "count": 553799 + }, + { + "id": "MX-26", + "rank": 26, + "localized": [ + "Romero" + ], + "romanized": [ + "Romero" + ], + "count": 540922 + }, + { + "id": "MX-27", + "rank": 27, + "localized": [ + "Moreno" + ], + "romanized": [ + "Moreno" + ], + "count": 539927 + }, + { + "id": "MX-28", + "rank": 28, + "localized": [ + "Chávez" + ], + "romanized": [ + "Chávez" + ], + "count": 517392 + }, + { + "id": "MX-29", + "rank": 29, + "localized": [ + "Rivera" + ], + "romanized": [ + "Rivera" + ], + "count": 508022 + }, + { + "id": "MX-30", + "rank": 30, + "localized": [ + "Ramos" + ], + "romanized": [ + "Ramos" + ], + "count": 455728 + }, + { + "id": "MX-31", + "rank": 31, + "localized": [ + "Herrera" + ], + "romanized": [ + "Herrera" + ], + "count": 451226 + }, + { + "id": "MX-32", + "rank": 32, + "localized": [ + "Medina" + ], + "romanized": [ + "Medina" + ], + "count": 431518 + }, + { + "id": "MX-33", + "rank": 33, + "localized": [ + "Vargas" + ], + "romanized": [ + "Vargas" + ], + "count": 427854 + }, + { + "id": "MX-34", + "rank": 34, + "localized": [ + "Castro" + ], + "romanized": [ + "Castro" + ], + "count": 419216 + }, + { + "id": "MX-35", + "rank": 35, + "localized": [ + "Méndez" + ], + "romanized": [ + "Méndez" + ], + "count": 410239 + }, + { + "id": "MX-36", + "rank": 36, + "localized": [ + "Guzmán" + ], + "romanized": [ + "Guzmán" + ], + "count": 392284 + }, + { + "id": "MX-37", + "rank": 37, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 385741 + }, + { + "id": "MX-38", + "rank": 38, + "localized": [ + "Juárez" + ], + "romanized": [ + "Juárez" + ], + "count": 384929 + }, + { + "id": "MX-39", + "rank": 39, + "localized": [ + "Muñoz" + ], + "romanized": [ + "Muñoz" + ], + "count": 376633 + }, + { + "id": "MX-40", + "rank": 40, + "localized": [ + "Ortega" + ], + "romanized": [ + "Ortega" + ], + "count": 372471 + }, + { + "id": "MX-41", + "rank": 41, + "localized": [ + "Salazar" + ], + "romanized": [ + "Salazar" + ], + "count": 368231 + }, + { + "id": "MX-42", + "rank": 42, + "localized": [ + "Rojas" + ], + "romanized": [ + "Rojas" + ], + "count": 365457 + }, + { + "id": "MX-43", + "rank": 43, + "localized": [ + "Guerrero" + ], + "romanized": [ + "Guerrero" + ], + "count": 361557 + }, + { + "id": "MX-44", + "rank": 44, + "localized": [ + "Contreras" + ], + "romanized": [ + "Contreras" + ], + "count": 358521 + }, + { + "id": "MX-45", + "rank": 45, + "localized": [ + "Luna" + ], + "romanized": [ + "Luna" + ], + "count": 357578 + }, + { + "id": "MX-46", + "rank": 46, + "localized": [ + "Domínguez" + ], + "romanized": [ + "Domínguez" + ], + "count": 348182 + }, + { + "id": "MX-47", + "rank": 47, + "localized": [ + "Garza" + ], + "romanized": [ + "Garza" + ], + "count": 335829 + }, + { + "id": "MX-48", + "rank": 48, + "localized": [ + "Velásquez" + ], + "romanized": [ + "Velásquez" + ], + "count": 331510 + }, + { + "id": "MX-49", + "rank": 49, + "localized": [ + "Estrada" + ], + "romanized": [ + "Estrada" + ], + "count": 324103 + }, + { + "id": "MX-50", + "rank": 50, + "localized": [ + "Soto" + ], + "romanized": [ + "Soto" + ], + "count": 306227 + }, + { + "id": "MX-51", + "rank": 51, + "localized": [ + "Cortez" + ], + "romanized": [ + "Cortez" + ], + "count": 301954 + }, + { + "id": "MX-52", + "rank": 52, + "localized": [ + "Lara" + ], + "romanized": [ + "Lara" + ], + "count": 298034 + }, + { + "id": "MX-53", + "rank": 53, + "localized": [ + "Espinoza" + ], + "romanized": [ + "Espinoza" + ], + "count": 289842 + }, + { + "id": "MX-54", + "rank": 54, + "localized": [ + "Vega" + ], + "romanized": [ + "Vega" + ], + "count": 285864 + }, + { + "id": "MX-55", + "rank": 55, + "localized": [ + "Ávila" + ], + "romanized": [ + "Ávila" + ], + "count": 284530 + }, + { + "id": "MX-56", + "rank": 56, + "localized": [ + "Cervantes" + ], + "romanized": [ + "Cervantes" + ], + "count": 276101 + }, + { + "id": "MX-57", + "rank": 57, + "localized": [ + "Sandoval" + ], + "romanized": [ + "Sandoval" + ], + "count": 273091 + }, + { + "id": "MX-58", + "rank": 58, + "localized": [ + "Carrillo" + ], + "romanized": [ + "Carrillo" + ], + "count": 267333 + }, + { + "id": "MX-59", + "rank": 59, + "localized": [ + "Alvarado" + ], + "romanized": [ + "Alvarado" + ], + "count": 266993 + }, + { + "id": "MX-60", + "rank": 60, + "localized": [ + "Silva" + ], + "romanized": [ + "Silva" + ], + "count": 265553 + }, + { + "id": "MX-61", + "rank": 61, + "localized": [ + "León" + ], + "romanized": [ + "León" + ], + "count": 260246 + }, + { + "id": "MX-62", + "rank": 62, + "localized": [ + "Ríos" + ], + "romanized": [ + "Ríos" + ], + "count": 260141 + }, + { + "id": "MX-63", + "rank": 63, + "localized": [ + "Navarro" + ], + "romanized": [ + "Navarro" + ], + "count": 258408 + }, + { + "id": "MX-64", + "rank": 64, + "localized": [ + "Delgado" + ], + "romanized": [ + "Delgado" + ], + "count": 254273 + }, + { + "id": "MX-65", + "rank": 65, + "localized": [ + "Márquez" + ], + "romanized": [ + "Márquez" + ], + "count": 248933 + }, + { + "id": "MX-66", + "rank": 66, + "localized": [ + "Campos" + ], + "romanized": [ + "Campos" + ], + "count": 246709 + }, + { + "id": "MX-67", + "rank": 67, + "localized": [ + "Ibarra" + ], + "romanized": [ + "Ibarra" + ], + "count": 241343 + }, + { + "id": "MX-68", + "rank": 68, + "localized": [ + "Solís" + ], + "romanized": [ + "Solís" + ], + "count": 240008 + }, + { + "id": "MX-69", + "rank": 69, + "localized": [ + "Rosas" + ], + "romanized": [ + "Rosas" + ], + "count": 237339 + }, + { + "id": "MX-70", + "rank": 70, + "localized": [ + "Miranda" + ], + "romanized": [ + "Miranda" + ], + "count": 233910 + }, + { + "id": "MX-71", + "rank": 71, + "localized": [ + "Camacho" + ], + "romanized": [ + "Camacho" + ], + "count": 233858 + }, + { + "id": "MX-72", + "rank": 72, + "localized": [ + "Valdez" + ], + "romanized": [ + "Valdez" + ], + "count": 232680 + }, + { + "id": "MX-73", + "rank": 73, + "localized": [ + "Cárdenas" + ], + "romanized": [ + "Cárdenas" + ], + "count": 230848 + }, + { + "id": "MX-74", + "rank": 74, + "localized": [ + "Orozco" + ], + "romanized": [ + "Orozco" + ], + "count": 228963 + }, + { + "id": "MX-75", + "rank": 75, + "localized": [ + "Aguirre" + ], + "romanized": [ + "Aguirre" + ], + "count": 228754 + }, + { + "id": "MX-76", + "rank": 76, + "localized": [ + "Mejía" + ], + "romanized": [ + "Mejía" + ], + "count": 227392 + }, + { + "id": "MX-77", + "rank": 77, + "localized": [ + "Acosta" + ], + "romanized": [ + "Acosta" + ], + "count": 224385 + }, + { + "id": "MX-78", + "rank": 78, + "localized": [ + "Padilla" + ], + "romanized": [ + "Padilla" + ], + "count": 223205 + }, + { + "id": "MX-79", + "rank": 79, + "localized": [ + "Robles" + ], + "romanized": [ + "Robles" + ], + "count": 222472 + }, + { + "id": "MX-80", + "rank": 80, + "localized": [ + "Núñez" + ], + "romanized": [ + "Núñez" + ], + "count": 222153 + }, + { + "id": "MX-81", + "rank": 81, + "localized": [ + "Peña" + ], + "romanized": [ + "Peña" + ], + "count": 220868 + }, + { + "id": "MX-82", + "rank": 82, + "localized": [ + "Cabrera" + ], + "romanized": [ + "Cabrera" + ], + "count": 220647 + }, + { + "id": "MX-83", + "rank": 83, + "localized": [ + "Rosales" + ], + "romanized": [ + "Rosales" + ], + "count": 218935 + }, + { + "id": "MX-84", + "rank": 84, + "localized": [ + "Molina" + ], + "romanized": [ + "Molina" + ], + "count": 217049 + }, + { + "id": "MX-85", + "rank": 85, + "localized": [ + "Pacheco" + ], + "romanized": [ + "Pacheco" + ], + "count": 212981 + }, + { + "id": "MX-86", + "rank": 86, + "localized": [ + "Castañeda" + ], + "romanized": [ + "Castañeda" + ], + "count": 212078 + }, + { + "id": "MX-87", + "rank": 87, + "localized": [ + "Fuentes" + ], + "romanized": [ + "Fuentes" + ], + "count": 210342 + }, + { + "id": "MX-88", + "rank": 88, + "localized": [ + "Valenzuela" + ], + "romanized": [ + "Valenzuela" + ], + "count": 210221 + }, + { + "id": "MX-89", + "rank": 89, + "localized": [ + "Rangel" + ], + "romanized": [ + "Rangel" + ], + "count": 209232 + }, + { + "id": "MX-90", + "rank": 90, + "localized": [ + "Ayala" + ], + "romanized": [ + "Ayala" + ], + "count": 208964 + }, + { + "id": "MX-91", + "rank": 91, + "localized": [ + "Meza" + ], + "romanized": [ + "Meza" + ], + "count": 207662 + }, + { + "id": "MX-92", + "rank": 92, + "localized": [ + "Nava" + ], + "romanized": [ + "Nava" + ], + "count": 203308 + }, + { + "id": "MX-93", + "rank": 93, + "localized": [ + "Valencia" + ], + "romanized": [ + "Valencia" + ], + "count": 198634 + }, + { + "id": "MX-94", + "rank": 94, + "localized": [ + "Maldonado" + ], + "romanized": [ + "Maldonado" + ], + "count": 195043 + }, + { + "id": "MX-95", + "rank": 95, + "localized": [ + "Ochoa" + ], + "romanized": [ + "Ochoa" + ], + "count": 192341 + }, + { + "id": "MX-96", + "rank": 96, + "localized": [ + "Serrano" + ], + "romanized": [ + "Serrano" + ], + "count": 185071 + }, + { + "id": "MX-97", + "rank": 97, + "localized": [ + "Tapia" + ], + "romanized": [ + "Tapia" + ], + "count": 183351 + }, + { + "id": "MX-98", + "rank": 98, + "localized": [ + "Salinas" + ], + "romanized": [ + "Salinas" + ], + "count": 183098 + }, + { + "id": "MX-99", + "rank": 99, + "localized": [ + "Suárez" + ], + "romanized": [ + "Suárez" + ], + "count": 182020 + }, + { + "id": "MX-100", + "rank": 100, + "localized": [ + "Zamora" + ], + "romanized": [ + "Zamora" + ], + "count": 181835 + } + ], + "US": [ + { + "id": "US-1", + "rank": 1, + "localized": [ + "Smith" + ], + "romanized": [ + "Smith" + ], + "count": 2376207 + }, + { + "id": "US-2", + "rank": 2, + "localized": [ + "Johnson" + ], + "romanized": [ + "Johnson" + ], + "count": 1857160 + }, + { + "id": "US-3", + "rank": 3, + "localized": [ + "Williams" + ], + "romanized": [ + "Williams" + ], + "count": 1534042 + }, + { + "id": "US-4", + "rank": 4, + "localized": [ + "Brown" + ], + "romanized": [ + "Brown" + ], + "count": 1380145 + }, + { + "id": "US-5", + "rank": 5, + "localized": [ + "Jones" + ], + "romanized": [ + "Jones" + ], + "count": 1362755 + }, + { + "id": "US-6", + "rank": 6, + "localized": [ + "Miller" + ], + "romanized": [ + "Miller" + ], + "count": 1127803 + }, + { + "id": "US-7", + "rank": 7, + "localized": [ + "Davis" + ], + "romanized": [ + "Davis" + ], + "count": 1072335 + }, + { + "id": "US-8", + "rank": 8, + "localized": [ + "Garcia" + ], + "romanized": [ + "Garcia" + ], + "count": 858289 + }, + { + "id": "US-9", + "rank": 9, + "localized": [ + "Rodriguez" + ], + "romanized": [ + "Rodriguez" + ], + "count": 804240 + }, + { + "id": "US-10", + "rank": 10, + "localized": [ + "Wilson" + ], + "romanized": [ + "Wilson" + ], + "count": 783051 + }, + { + "id": "US-11", + "rank": 11, + "localized": [ + "Martinez" + ], + "romanized": [ + "Martinez" + ], + "count": 775072 + }, + { + "id": "US-12", + "rank": 12, + "localized": [ + "Anderson" + ], + "romanized": [ + "Anderson" + ], + "count": 762394 + }, + { + "id": "US-13", + "rank": 13, + "localized": [ + "Taylor" + ], + "romanized": [ + "Taylor" + ], + "count": 720370 + }, + { + "id": "US-14", + "rank": 14, + "localized": [ + "Thomas" + ], + "romanized": [ + "Thomas" + ], + "count": 710696 + }, + { + "id": "US-15", + "rank": 15, + "localized": [ + "Hernandez" + ], + "romanized": [ + "Hernandez" + ], + "count": 706372 + }, + { + "id": "US-16", + "rank": 16, + "localized": [ + "Moore" + ], + "romanized": [ + "Moore" + ], + "count": 698671 + }, + { + "id": "US-17", + "rank": 17, + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ], + "count": 672711 + }, + { + "id": "US-18", + "rank": 18, + "localized": [ + "Jackson" + ], + "romanized": [ + "Jackson" + ], + "count": 666125 + }, + { + "id": "US-19", + "rank": 19, + "localized": [ + "Thompson" + ], + "romanized": [ + "Thompson" + ], + "count": 644368 + }, + { + "id": "US-20", + "rank": 20, + "localized": [ + "White" + ], + "romanized": [ + "White" + ], + "count": 639515 + }, + { + "id": "US-21", + "rank": 21, + "localized": [ + "Lopez" + ], + "romanized": [ + "Lopez" + ], + "count": 621536 + }, + { + "id": "US-22", + "rank": 22, + "localized": [ + "Lee" + ], + "romanized": [ + "Lee" + ], + "count": 605860 + }, + { + "id": "US-23", + "rank": 23, + "localized": [ + "Gonzalez" + ], + "romanized": [ + "Gonzalez" + ], + "count": 597718 + }, + { + "id": "US-24", + "rank": 24, + "localized": [ + "Harris" + ], + "romanized": [ + "Harris" + ], + "count": 593542 + }, + { + "id": "US-25", + "rank": 25, + "localized": [ + "Clark" + ], + "romanized": [ + "Clark" + ], + "count": 548369 + }, + { + "id": "US-26", + "rank": 26, + "localized": [ + "Lewis" + ], + "romanized": [ + "Lewis" + ], + "count": 509930 + }, + { + "id": "US-27", + "rank": 27, + "localized": [ + "Robinson" + ], + "romanized": [ + "Robinson" + ], + "count": 503028 + }, + { + "id": "US-28", + "rank": 28, + "localized": [ + "Walker" + ], + "romanized": [ + "Walker" + ], + "count": 501307 + }, + { + "id": "US-29", + "rank": 29, + "localized": [ + "Perez" + ], + "romanized": [ + "Perez" + ], + "count": 488521 + }, + { + "id": "US-30", + "rank": 30, + "localized": [ + "Hall" + ], + "romanized": [ + "Hall" + ], + "count": 473568 + }, + { + "id": "US-31", + "rank": 31, + "localized": [ + "Young" + ], + "romanized": [ + "Young" + ], + "count": 465948 + }, + { + "id": "US-32", + "rank": 32, + "localized": [ + "Allen" + ], + "romanized": [ + "Allen" + ], + "count": 463368 + }, + { + "id": "US-33", + "rank": 33, + "localized": [ + "Sanchez" + ], + "romanized": [ + "Sanchez" + ], + "count": 441242 + }, + { + "id": "US-34", + "rank": 34, + "localized": [ + "Wright" + ], + "romanized": [ + "Wright" + ], + "count": 440367 + }, + { + "id": "US-35", + "rank": 35, + "localized": [ + "King" + ], + "romanized": [ + "King" + ], + "count": 438986 + }, + { + "id": "US-36", + "rank": 36, + "localized": [ + "Scott" + ], + "romanized": [ + "Scott" + ], + "count": 420091 + }, + { + "id": "US-37", + "rank": 37, + "localized": [ + "Green" + ], + "romanized": [ + "Green" + ], + "count": 413477 + }, + { + "id": "US-38", + "rank": 38, + "localized": [ + "Baker" + ], + "romanized": [ + "Baker" + ], + "count": 413351 + }, + { + "id": "US-39", + "rank": 39, + "localized": [ + "Adams" + ], + "romanized": [ + "Adams" + ], + "count": 413086 + }, + { + "id": "US-40", + "rank": 40, + "localized": [ + "Nelson" + ], + "romanized": [ + "Nelson" + ], + "count": 412236 + }, + { + "id": "US-41", + "rank": 41, + "localized": [ + "Hill" + ], + "romanized": [ + "Hill" + ], + "count": 411770 + }, + { + "id": "US-42", + "rank": 42, + "localized": [ + "Ramirez" + ], + "romanized": [ + "Ramirez" + ], + "count": 388987 + }, + { + "id": "US-43", + "rank": 43, + "localized": [ + "Campbell" + ], + "romanized": [ + "Campbell" + ], + "count": 371953 + }, + { + "id": "US-44", + "rank": 44, + "localized": [ + "Mitchell" + ], + "romanized": [ + "Mitchell" + ], + "count": 367433 + }, + { + "id": "US-45", + "rank": 45, + "localized": [ + "Roberts" + ], + "romanized": [ + "Roberts" + ], + "count": 366215 + }, + { + "id": "US-46", + "rank": 46, + "localized": [ + "Carter" + ], + "romanized": [ + "Carter" + ], + "count": 362548 + }, + { + "id": "US-47", + "rank": 47, + "localized": [ + "Phillips" + ], + "romanized": [ + "Phillips" + ], + "count": 351848 + }, + { + "id": "US-48", + "rank": 48, + "localized": [ + "Evans" + ], + "romanized": [ + "Evans" + ], + "count": 342237 + }, + { + "id": "US-49", + "rank": 49, + "localized": [ + "Turner" + ], + "romanized": [ + "Turner" + ], + "count": 335663 + }, + { + "id": "US-50", + "rank": 50, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": 325169 + }, + { + "id": "US-51", + "rank": 51, + "localized": [ + "Parker" + ], + "romanized": [ + "Parker" + ], + "count": 324246 + }, + { + "id": "US-52", + "rank": 52, + "localized": [ + "Collins" + ], + "romanized": [ + "Collins" + ], + "count": 317848 + }, + { + "id": "US-53", + "rank": 53, + "localized": [ + "Edwards" + ], + "romanized": [ + "Edwards" + ], + "count": 317070 + }, + { + "id": "US-54", + "rank": 54, + "localized": [ + "Stewart" + ], + "romanized": [ + "Stewart" + ], + "count": 312899 + }, + { + "id": "US-55", + "rank": 55, + "localized": [ + "Flores" + ], + "romanized": [ + "Flores" + ], + "count": 312615 + }, + { + "id": "US-56", + "rank": 56, + "localized": [ + "Morris" + ], + "romanized": [ + "Morris" + ], + "count": 311754 + }, + { + "id": "US-57", + "rank": 57, + "localized": [ + "Nguyen" + ], + "romanized": [ + "Nguyen" + ], + "count": 310125 + }, + { + "id": "US-58", + "rank": 58, + "localized": [ + "Murphy" + ], + "romanized": [ + "Murphy" + ], + "count": 300501 + }, + { + "id": "US-59", + "rank": 59, + "localized": [ + "Rivera" + ], + "romanized": [ + "Rivera" + ], + "count": 299463 + }, + { + "id": "US-60", + "rank": 60, + "localized": [ + "Cook" + ], + "romanized": [ + "Cook" + ], + "count": 294795 + }, + { + "id": "US-61", + "rank": 61, + "localized": [ + "Rogers" + ], + "romanized": [ + "Rogers" + ], + "count": 294403 + }, + { + "id": "US-62", + "rank": 62, + "localized": [ + "Morgan" + ], + "romanized": [ + "Morgan" + ], + "count": 276400 + }, + { + "id": "US-63", + "rank": 63, + "localized": [ + "Peterson" + ], + "romanized": [ + "Peterson" + ], + "count": 275041 + }, + { + "id": "US-64", + "rank": 64, + "localized": [ + "Cooper" + ], + "romanized": [ + "Cooper" + ], + "count": 270097 + }, + { + "id": "US-65", + "rank": 65, + "localized": [ + "Reed" + ], + "romanized": [ + "Reed" + ], + "count": 267443 + }, + { + "id": "US-66", + "rank": 66, + "localized": [ + "Bailey" + ], + "romanized": [ + "Bailey" + ], + "count": 265916 + }, + { + "id": "US-67", + "rank": 67, + "localized": [ + "Bell" + ], + "romanized": [ + "Bell" + ], + "count": 264752 + }, + { + "id": "US-68", + "rank": 68, + "localized": [ + "Gomez" + ], + "romanized": [ + "Gomez" + ], + "count": 263590 + }, + { + "id": "US-69", + "rank": 69, + "localized": [ + "Kelly" + ], + "romanized": [ + "Kelly" + ], + "count": 260385 + }, + { + "id": "US-70", + "rank": 70, + "localized": [ + "Howard" + ], + "romanized": [ + "Howard" + ], + "count": 254779 + }, + { + "id": "US-71", + "rank": 71, + "localized": [ + "Ward" + ], + "romanized": [ + "Ward" + ], + "count": 254121 + }, + { + "id": "US-72", + "rank": 72, + "localized": [ + "Cox" + ], + "romanized": [ + "Cox" + ], + "count": 253771 + }, + { + "id": "US-73", + "rank": 73, + "localized": [ + "Diaz" + ], + "romanized": [ + "Diaz" + ], + "count": 251772 + }, + { + "id": "US-74", + "rank": 74, + "localized": [ + "Richardson" + ], + "romanized": [ + "Richardson" + ], + "count": 249533 + }, + { + "id": "US-75", + "rank": 75, + "localized": [ + "Wood" + ], + "romanized": [ + "Wood" + ], + "count": 247299 + }, + { + "id": "US-76", + "rank": 76, + "localized": [ + "Watson" + ], + "romanized": [ + "Watson" + ], + "count": 242432 + }, + { + "id": "US-77", + "rank": 77, + "localized": [ + "Brooks" + ], + "romanized": [ + "Brooks" + ], + "count": 240751 + }, + { + "id": "US-78", + "rank": 78, + "localized": [ + "Bennett" + ], + "romanized": [ + "Bennett" + ], + "count": 239055 + }, + { + "id": "US-79", + "rank": 79, + "localized": [ + "Gray" + ], + "romanized": [ + "Gray" + ], + "count": 236713 + }, + { + "id": "US-80", + "rank": 80, + "localized": [ + "James" + ], + "romanized": [ + "James" + ], + "count": 233224 + }, + { + "id": "US-81", + "rank": 81, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": 232511 + }, + { + "id": "US-82", + "rank": 82, + "localized": [ + "Cruz" + ], + "romanized": [ + "Cruz" + ], + "count": 231065 + }, + { + "id": "US-83", + "rank": 83, + "localized": [ + "Hughes" + ], + "romanized": [ + "Hughes" + ], + "count": 229390 + }, + { + "id": "US-84", + "rank": 84, + "localized": [ + "Price" + ], + "romanized": [ + "Price" + ], + "count": 228756 + }, + { + "id": "US-85", + "rank": 85, + "localized": [ + "Myers" + ], + "romanized": [ + "Myers" + ], + "count": 224824 + }, + { + "id": "US-86", + "rank": 86, + "localized": [ + "Long" + ], + "romanized": [ + "Long" + ], + "count": 223494 + }, + { + "id": "US-87", + "rank": 87, + "localized": [ + "Foster" + ], + "romanized": [ + "Foster" + ], + "count": 221040 + }, + { + "id": "US-88", + "rank": 88, + "localized": [ + "Sanders" + ], + "romanized": [ + "Sanders" + ], + "count": 220902 + }, + { + "id": "US-89", + "rank": 89, + "localized": [ + "Ross" + ], + "romanized": [ + "Ross" + ], + "count": 219961 + }, + { + "id": "US-90", + "rank": 90, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": 217642 + }, + { + "id": "US-91", + "rank": 91, + "localized": [ + "Powell" + ], + "romanized": [ + "Powell" + ], + "count": 216553 + }, + { + "id": "US-92", + "rank": 92, + "localized": [ + "Sullivan" + ], + "romanized": [ + "Sullivan" + ], + "count": 215640 + }, + { + "id": "US-93", + "rank": 93, + "localized": [ + "Russell" + ], + "romanized": [ + "Russell" + ], + "count": 215432 + }, + { + "id": "US-94", + "rank": 94, + "localized": [ + "Ortiz" + ], + "romanized": [ + "Ortiz" + ], + "count": 214683 + }, + { + "id": "US-95", + "rank": 95, + "localized": [ + "Jenkins" + ], + "romanized": [ + "Jenkins" + ], + "count": 213737 + }, + { + "id": "US-96", + "rank": 96, + "localized": [ + "Gutierrez" + ], + "romanized": [ + "Gutierrez" + ], + "count": 212905 + }, + { + "id": "US-97", + "rank": 97, + "localized": [ + "Perry" + ], + "romanized": [ + "Perry" + ], + "count": 212644 + }, + { + "id": "US-98", + "rank": 98, + "localized": [ + "Butler" + ], + "romanized": [ + "Butler" + ], + "count": 210879 + }, + { + "id": "US-99", + "rank": 99, + "localized": [ + "Barnes" + ], + "romanized": [ + "Barnes" + ], + "count": 210426 + }, + { + "id": "US-100", + "rank": 100, + "localized": [ + "Fisher" + ], + "romanized": [ + "Fisher" + ], + "count": 210279 + } + ], + "AU": [ + { + "id": "AU-1", + "rank": 1, + "localized": [ + "Smith" + ], + "romanized": [ + "Smith" + ], + "count": 114997 + }, + { + "id": "AU-2", + "rank": 2, + "localized": [ + "Jones" + ], + "romanized": [ + "Jones" + ], + "count": 55679 + }, + { + "id": "AU-3", + "rank": 3, + "localized": [ + "Williams" + ], + "romanized": [ + "Williams" + ], + "count": 55555 + }, + { + "id": "AU-4", + "rank": 4, + "localized": [ + "Brown" + ], + "romanized": [ + "Brown" + ], + "count": 54896 + }, + { + "id": "AU-5", + "rank": 5, + "localized": [ + "Wilson" + ], + "romanized": [ + "Wilson" + ], + "count": 46961 + }, + { + "id": "AU-6", + "rank": 6, + "localized": [ + "Taylor" + ], + "romanized": [ + "Taylor" + ], + "count": 45328 + }, + { + "id": "AU-7", + "rank": 7, + "localized": [ + "Johnson" + ], + "romanized": [ + "Johnson" + ], + "count": 33435 + }, + { + "id": "AU-8", + "rank": 8, + "localized": [ + "White" + ], + "romanized": [ + "White" + ], + "count": 31099 + }, + { + "id": "AU-9", + "rank": 9, + "localized": [ + "Martin" + ], + "romanized": [ + "Martin" + ], + "count": 31058 + }, + { + "id": "AU-10", + "rank": 10, + "localized": [ + "Anderson" + ], + "romanized": [ + "Anderson" + ], + "count": 30910 + }, + { + "id": "AU-11", + "rank": 11, + "localized": [ + "Thompson" + ], + "romanized": [ + "Thompson" + ], + "count": 29931 + }, + { + "id": "AU-12", + "rank": 12, + "localized": [ + "Nguyen" + ], + "romanized": [ + "Nguyen" + ], + "count": 29798 + }, + { + "id": "AU-13", + "rank": 13, + "localized": [ + "Turner" + ], + "romanized": [ + "Turner" + ], + "count": 27276 + }, + { + "id": "AU-14", + "rank": 14, + "localized": [ + "Walker" + ], + "romanized": [ + "Walker" + ], + "count": 26688 + }, + { + "id": "AU-15", + "rank": 15, + "localized": [ + "Harris" + ], + "romanized": [ + "Harris" + ], + "count": 26025 + }, + { + "id": "AU-16", + "rank": 16, + "localized": [ + "Lee" + ], + "romanized": [ + "Lee" + ], + "count": 25612 + }, + { + "id": "AU-17", + "rank": 17, + "localized": [ + "Ryan" + ], + "romanized": [ + "Ryan" + ], + "count": 25526 + }, + { + "id": "AU-18", + "rank": 18, + "localized": [ + "Robinson" + ], + "romanized": [ + "Robinson" + ], + "count": 25168 + }, + { + "id": "AU-19", + "rank": 19, + "localized": [ + "Kelly" + ], + "romanized": [ + "Kelly" + ], + "count": 25014 + }, + { + "id": "AU-20", + "rank": 20, + "localized": [ + "Murphy" + ], + "romanized": [ + "Murphy" + ], + "count": 24993 + } + ], + "FJ": [ + { + "id": "FJ-1", + "rank": 1, + "localized": [ + "Kumar" + ], + "romanized": [ + "Kumar" + ], + "count": null + }, + { + "id": "FJ-2", + "rank": 2, + "localized": [ + "Prasad" + ], + "romanized": [ + "Prasad" + ], + "count": null + }, + { + "id": "FJ-3", + "rank": 3, + "localized": [ + "Chand" + ], + "romanized": [ + "Chand" + ], + "count": null + }, + { + "id": "FJ-4", + "rank": 4, + "localized": [ + "Singh" + ], + "romanized": [ + "Singh" + ], + "count": null + }, + { + "id": "FJ-5", + "rank": 5, + "localized": [ + "Lal" + ], + "romanized": [ + "Lal" + ], + "count": null + }, + { + "id": "FJ-6", + "rank": 6, + "localized": [ + "Sharma" + ], + "romanized": [ + "Sharma" + ], + "count": null + }, + { + "id": "FJ-7", + "rank": 7, + "localized": [ + "Narayan" + ], + "romanized": [ + "Narayan" + ], + "count": null + }, + { + "id": "FJ-8", + "rank": 8, + "localized": [ + "Khan" + ], + "romanized": [ + "Khan" + ], + "count": null + }, + { + "id": "FJ-9", + "rank": 9, + "localized": [ + "Ali" + ], + "romanized": [ + "Ali" + ], + "count": null + }, + { + "id": "FJ-10", + "rank": 10, + "localized": [ + "Devi" + ], + "romanized": [ + "Devi" + ], + "count": null + }, + { + "id": "FJ-11", + "rank": 11, + "localized": [ + "Ram" + ], + "romanized": [ + "Ram" + ], + "count": null + }, + { + "id": "FJ-12", + "rank": 12, + "localized": [ + "Naidu" + ], + "romanized": [ + "Naidu" + ], + "count": null + }, + { + "id": "FJ-13", + "rank": 13, + "localized": [ + "Chandra" + ], + "romanized": [ + "Chandra" + ], + "count": null + }, + { + "id": "FJ-14", + "rank": 14, + "localized": [ + "Nand" + ], + "romanized": [ + "Nand" + ], + "count": null + }, + { + "id": "FJ-15", + "rank": 15, + "localized": [ + "Lata" + ], + "romanized": [ + "Lata" + ], + "count": null + }, + { + "id": "FJ-16", + "rank": 16, + "localized": [ + "Deo" + ], + "romanized": [ + "Deo" + ], + "count": null + }, + { + "id": "FJ-17", + "rank": 17, + "localized": [ + "Reddy" + ], + "romanized": [ + "Reddy" + ], + "count": null + }, + { + "id": "FJ-18", + "rank": 18, + "localized": [ + "Prakash" + ], + "romanized": [ + "Prakash" + ], + "count": null + }, + { + "id": "FJ-19", + "rank": 19, + "localized": [ + "Raj" + ], + "romanized": [ + "Raj" + ], + "count": null + }, + { + "id": "FJ-20", + "rank": 20, + "localized": [ + "Maharaj" + ], + "romanized": [ + "Maharaj" + ], + "count": null + }, + { + "id": "FJ-21", + "rank": 21, + "localized": [ + "Waqa" + ], + "romanized": [ + "Waqa" + ], + "count": null + }, + { + "id": "FJ-22", + "rank": 22, + "localized": [ + "Goundar" + ], + "romanized": [ + "Goundar" + ], + "count": null + } + ], + "NZ": [ + { + "id": "NZ-1", + "rank": 1, + "localized": [ + "Singh" + ], + "romanized": [ + "Singh" + ], + "count": null + }, + { + "id": "NZ-2", + "rank": 2, + "localized": [ + "Smith" + ], + "romanized": [ + "Smith" + ], + "count": null + }, + { + "id": "NZ-3", + "rank": 3, + "localized": [ + "Kaur" + ], + "romanized": [ + "Kaur" + ], + "count": null + }, + { + "id": "NZ-4", + "rank": 4, + "localized": [ + "Williams" + ], + "romanized": [ + "Williams" + ], + "count": null + }, + { + "id": "NZ-5", + "rank": 5, + "localized": [ + "Patel" + ], + "romanized": [ + "Patel" + ], + "count": null + }, + { + "id": "NZ-6", + "rank": 6, + "localized": [ + "Wilson" + ], + "romanized": [ + "Wilson" + ], + "count": null + }, + { + "id": "NZ-7", + "rank": 7, + "localized": [ + "Brown" + ], + "romanized": [ + "Brown" + ], + "count": null + }, + { + "id": "NZ-8", + "rank": 8, + "localized": [ + "Taylor" + ], + "romanized": [ + "Taylor" + ], + "count": null + }, + { + "id": "NZ-9", + "rank": 9, + "localized": [ + "Jones" + ], + "romanized": [ + "Jones" + ], + "count": null + }, + { + "id": "NZ-10", + "rank": 10, + "localized": [ + "Sharma" + ], + "romanized": [ + "Sharma" + ], + "count": null + } + ], + "AR": [ + { + "id": "AR-1", + "rank": 1, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 568240 + }, + { + "id": "AR-2", + "rank": 2, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 483212 + }, + { + "id": "AR-3", + "rank": 3, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 426253 + }, + { + "id": "AR-4", + "rank": 4, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 411462 + }, + { + "id": "AR-5", + "rank": 5, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 393704 + }, + { + "id": "AR-6", + "rank": 6, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 346271 + }, + { + "id": "AR-7", + "rank": 7, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 336094 + }, + { + "id": "AR-8", + "rank": 8, + "localized": [ + "Álvarez" + ], + "romanized": [ + "Álvarez" + ], + "count": 294527 + }, + { + "id": "AR-9", + "rank": 9, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 290821 + }, + { + "id": "AR-10", + "rank": 10, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 271351 + }, + { + "id": "AR-11", + "rank": 11, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 256397 + }, + { + "id": "AR-12", + "rank": 12, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": 187974 + }, + { + "id": "AR-13", + "rank": 13, + "localized": [ + "Castro" + ], + "romanized": [ + "Castro" + ], + "count": 173055 + }, + { + "id": "AR-14", + "rank": 14, + "localized": [ + "Romero" + ], + "romanized": [ + "Romero" + ], + "count": 166497 + }, + { + "id": "AR-15", + "rank": 15, + "localized": [ + "Suárez" + ], + "romanized": [ + "Suárez" + ], + "count": 160483 + }, + { + "id": "AR-16", + "rank": 16, + "localized": [ + "Blanco" + ], + "romanized": [ + "Blanco" + ], + "count": 154248 + }, + { + "id": "AR-17", + "rank": 17, + "localized": [ + "Ruiz" + ], + "romanized": [ + "Ruiz" + ], + "count": 140829 + }, + { + "id": "AR-18", + "rank": 18, + "localized": [ + "Alonso" + ], + "romanized": [ + "Alonso" + ], + "count": 135893 + }, + { + "id": "AR-19", + "rank": 19, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": 133599 + }, + { + "id": "AR-20", + "rank": 20, + "localized": [ + "Domínguez" + ], + "romanized": [ + "Domínguez" + ], + "count": 132625 + }, + { + "id": "AR-21", + "rank": 21, + "localized": [ + "Gutiérrez" + ], + "romanized": [ + "Gutiérrez" + ], + "count": 130607 + }, + { + "id": "AR-22", + "rank": 22, + "localized": [ + "Sosa" + ], + "romanized": [ + "Sosa" + ], + "count": 129372 + }, + { + "id": "AR-23", + "rank": 23, + "localized": [ + "Iglesias" + ], + "romanized": [ + "Iglesias" + ], + "count": 126822 + }, + { + "id": "AR-24", + "rank": 24, + "localized": [ + "Giménez" + ], + "romanized": [ + "Giménez" + ], + "count": 125009 + }, + { + "id": "AR-25", + "rank": 25, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 124550 + }, + { + "id": "AR-26", + "rank": 26, + "localized": [ + "Martín" + ], + "romanized": [ + "Martín" + ], + "count": 123938 + }, + { + "id": "AR-27", + "rank": 27, + "localized": [ + "Varela" + ], + "romanized": [ + "Varela" + ], + "count": 119674 + }, + { + "id": "AR-28", + "rank": 28, + "localized": [ + "Ramos" + ], + "romanized": [ + "Ramos" + ], + "count": 118825 + }, + { + "id": "AR-29", + "rank": 29, + "localized": [ + "Núñez" + ], + "romanized": [ + "Núñez" + ], + "count": 118106 + }, + { + "id": "AR-30", + "rank": 30, + "localized": [ + "Rossi" + ], + "romanized": [ + "Rossi" + ], + "count": 116775 + }, + { + "id": "AR-31", + "rank": 31, + "localized": [ + "Silva" + ], + "romanized": [ + "Silva" + ], + "count": 107835 + }, + { + "id": "AR-32", + "rank": 32, + "localized": [ + "Méndez" + ], + "romanized": [ + "Méndez" + ], + "count": 104668 + }, + { + "id": "AR-33", + "rank": 33, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 104581 + }, + { + "id": "AR-34", + "rank": 34, + "localized": [ + "Flores" + ], + "romanized": [ + "Flores" + ], + "count": 100092 + }, + { + "id": "AR-35", + "rank": 35, + "localized": [ + "Pereyra" + ], + "romanized": [ + "Pereyra" + ], + "count": 99884 + }, + { + "id": "AR-36", + "rank": 36, + "localized": [ + "Ferrari" + ], + "romanized": [ + "Ferrari" + ], + "count": 98761 + }, + { + "id": "AR-37", + "rank": 37, + "localized": [ + "Ortiz" + ], + "romanized": [ + "Ortiz" + ], + "count": 96761 + }, + { + "id": "AR-38", + "rank": 38, + "localized": [ + "Medina" + ], + "romanized": [ + "Medina" + ], + "count": 96228 + }, + { + "id": "AR-39", + "rank": 39, + "localized": [ + "Benítez" + ], + "romanized": [ + "Benítez" + ], + "count": 95628 + }, + { + "id": "AR-40", + "rank": 40, + "localized": [ + "Herrera" + ], + "romanized": [ + "Herrera" + ], + "count": 94781 + }, + { + "id": "AR-41", + "rank": 41, + "localized": [ + "Arias" + ], + "romanized": [ + "Arias" + ], + "count": 94537 + }, + { + "id": "AR-42", + "rank": 42, + "localized": [ + "Acosta" + ], + "romanized": [ + "Acosta" + ], + "count": 92707 + }, + { + "id": "AR-43", + "rank": 43, + "localized": [ + "Moreno" + ], + "romanized": [ + "Moreno" + ], + "count": 92127 + }, + { + "id": "AR-44", + "rank": 44, + "localized": [ + "Aguirre" + ], + "romanized": [ + "Aguirre" + ], + "count": 91365 + }, + { + "id": "AR-45", + "rank": 45, + "localized": [ + "Otero" + ], + "romanized": [ + "Otero" + ], + "count": 89583 + }, + { + "id": "AR-46", + "rank": 46, + "localized": [ + "Cabrera" + ], + "romanized": [ + "Cabrera" + ], + "count": 88398 + }, + { + "id": "AR-47", + "rank": 47, + "localized": [ + "Rey" + ], + "romanized": [ + "Rey" + ], + "count": 88394 + }, + { + "id": "AR-48", + "rank": 48, + "localized": [ + "Rojas" + ], + "romanized": [ + "Rojas" + ], + "count": 81343 + }, + { + "id": "AR-49", + "rank": 49, + "localized": [ + "Vidal" + ], + "romanized": [ + "Vidal" + ], + "count": 80233 + }, + { + "id": "AR-50", + "rank": 50, + "localized": [ + "Molina" + ], + "romanized": [ + "Molina" + ], + "count": 80050 + }, + { + "id": "AR-51", + "rank": 51, + "localized": [ + "Russo" + ], + "romanized": [ + "Russo" + ], + "count": 79882 + }, + { + "id": "AR-52", + "rank": 52, + "localized": [ + "Paz" + ], + "romanized": [ + "Paz" + ], + "count": 75365 + }, + { + "id": "AR-53", + "rank": 53, + "localized": [ + "Vega" + ], + "romanized": [ + "Vega" + ], + "count": 74107 + }, + { + "id": "AR-54", + "rank": 54, + "localized": [ + "Costa" + ], + "romanized": [ + "Costa" + ], + "count": 73932 + }, + { + "id": "AR-55", + "rank": 55, + "localized": [ + "Bruno" + ], + "romanized": [ + "Bruno" + ], + "count": 73907 + }, + { + "id": "AR-56", + "rank": 56, + "localized": [ + "Romano" + ], + "romanized": [ + "Romano" + ], + "count": 73458 + }, + { + "id": "AR-57", + "rank": 57, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": 71587 + }, + { + "id": "AR-58", + "rank": 58, + "localized": [ + "Ríos" + ], + "romanized": [ + "Ríos" + ], + "count": 71534 + }, + { + "id": "AR-59", + "rank": 59, + "localized": [ + "Miranda" + ], + "romanized": [ + "Miranda" + ], + "count": 70713 + }, + { + "id": "AR-60", + "rank": 60, + "localized": [ + "Muñoz" + ], + "romanized": [ + "Muñoz" + ], + "count": 70092 + }, + { + "id": "AR-61", + "rank": 61, + "localized": [ + "Franco" + ], + "romanized": [ + "Franco" + ], + "count": 70055 + }, + { + "id": "AR-62", + "rank": 62, + "localized": [ + "Castillo" + ], + "romanized": [ + "Castillo" + ], + "count": 69720 + }, + { + "id": "AR-63", + "rank": 63, + "localized": [ + "Campos" + ], + "romanized": [ + "Campos" + ], + "count": 69447 + }, + { + "id": "AR-64", + "rank": 64, + "localized": [ + "Bianchi" + ], + "romanized": [ + "Bianchi" + ], + "count": 68510 + }, + { + "id": "AR-65", + "rank": 65, + "localized": [ + "Luna" + ], + "romanized": [ + "Luna" + ], + "count": 66763 + }, + { + "id": "AR-66", + "rank": 66, + "localized": [ + "Correa" + ], + "romanized": [ + "Correa" + ], + "count": 66535 + }, + { + "id": "AR-67", + "rank": 67, + "localized": [ + "Ferreyra" + ], + "romanized": [ + "Ferreyra" + ], + "count": 66461 + }, + { + "id": "AR-68", + "rank": 68, + "localized": [ + "Navarro" + ], + "romanized": [ + "Navarro" + ], + "count": 66457 + }, + { + "id": "AR-69", + "rank": 69, + "localized": [ + "Quiroga" + ], + "romanized": [ + "Quiroga" + ], + "count": 66138 + }, + { + "id": "AR-70", + "rank": 70, + "localized": [ + "Colombo" + ], + "romanized": [ + "Colombo" + ], + "count": 65375 + }, + { + "id": "AR-71", + "rank": 71, + "localized": [ + "Cohen" + ], + "romanized": [ + "Cohen" + ], + "count": 63575 + }, + { + "id": "AR-72", + "rank": 72, + "localized": [ + "Pereyra" + ], + "romanized": [ + "Pereyra" + ], + "count": 63367 + }, + { + "id": "AR-73", + "rank": 73, + "localized": [ + "Vera" + ], + "romanized": [ + "Vera" + ], + "count": 63226 + }, + { + "id": "AR-74", + "rank": 74, + "localized": [ + "Lorenzo" + ], + "romanized": [ + "Lorenzo" + ], + "count": 63157 + }, + { + "id": "AR-75", + "rank": 75, + "localized": [ + "Gil" + ], + "romanized": [ + "Gil" + ], + "count": 62727 + }, + { + "id": "AR-76", + "rank": 76, + "localized": [ + "Santos" + ], + "romanized": [ + "Santos" + ], + "count": 60580 + }, + { + "id": "AR-77", + "rank": 77, + "localized": [ + "Delgado" + ], + "romanized": [ + "Delgado" + ], + "count": 59333 + }, + { + "id": "AR-78", + "rank": 78, + "localized": [ + "Godoy" + ], + "romanized": [ + "Godoy" + ], + "count": 58956 + }, + { + "id": "AR-79", + "rank": 79, + "localized": [ + "Rivas" + ], + "romanized": [ + "Rivas" + ], + "count": 58811 + }, + { + "id": "AR-80", + "rank": 80, + "localized": [ + "Rivero" + ], + "romanized": [ + "Rivero" + ], + "count": 58604 + }, + { + "id": "AR-81", + "rank": 81, + "localized": [ + "Gallo" + ], + "romanized": [ + "Gallo" + ], + "count": 57990 + }, + { + "id": "AR-82", + "rank": 82, + "localized": [ + "Peralta" + ], + "romanized": [ + "Peralta" + ], + "count": 57192 + }, + { + "id": "AR-83", + "rank": 83, + "localized": [ + "Soto" + ], + "romanized": [ + "Soto" + ], + "count": 55633 + }, + { + "id": "AR-84", + "rank": 84, + "localized": [ + "Figueroa" + ], + "romanized": [ + "Figueroa" + ], + "count": 55515 + }, + { + "id": "AR-85", + "rank": 85, + "localized": [ + "Juárez" + ], + "romanized": [ + "Juárez" + ], + "count": 55310 + }, + { + "id": "AR-86", + "rank": 86, + "localized": [ + "Marino" + ], + "romanized": [ + "Marino" + ], + "count": 54806 + }, + { + "id": "AR-87", + "rank": 87, + "localized": [ + "Ponce" + ], + "romanized": [ + "Ponce" + ], + "count": 54009 + }, + { + "id": "AR-88", + "rank": 88, + "localized": [ + "Calvo" + ], + "romanized": [ + "Calvo" + ], + "count": 52282 + }, + { + "id": "AR-89", + "rank": 89, + "localized": [ + "Ibáñez" + ], + "romanized": [ + "Ibáñez" + ], + "count": 51972 + }, + { + "id": "AR-90", + "rank": 90, + "localized": [ + "Cáceres" + ], + "romanized": [ + "Cáceres" + ], + "count": 51493 + }, + { + "id": "AR-91", + "rank": 91, + "localized": [ + "Carrizo" + ], + "romanized": [ + "Carrizo" + ], + "count": 50657 + }, + { + "id": "AR-92", + "rank": 92, + "localized": [ + "Vargas" + ], + "romanized": [ + "Vargas" + ], + "count": 50613 + }, + { + "id": "AR-93", + "rank": 93, + "localized": [ + "Mendoza" + ], + "romanized": [ + "Mendoza" + ], + "count": 50588 + }, + { + "id": "AR-94", + "rank": 94, + "localized": [ + "Aguilar" + ], + "romanized": [ + "Aguilar" + ], + "count": 49717 + }, + { + "id": "AR-95", + "rank": 95, + "localized": [ + "Ledesma" + ], + "romanized": [ + "Ledesma" + ], + "count": 49645 + }, + { + "id": "AR-96", + "rank": 96, + "localized": [ + "Guzmán" + ], + "romanized": [ + "Guzmán" + ], + "count": 49543 + }, + { + "id": "AR-97", + "rank": 97, + "localized": [ + "Soria" + ], + "romanized": [ + "Soria" + ], + "count": 49291 + }, + { + "id": "AR-98", + "rank": 98, + "localized": [ + "Villalba" + ], + "romanized": [ + "Villalba" + ], + "count": 48602 + }, + { + "id": "AR-99", + "rank": 99, + "localized": [ + "Prieto" + ], + "romanized": [ + "Prieto" + ], + "count": 48355 + }, + { + "id": "AR-100", + "rank": 100, + "localized": [ + "Maldonado" + ], + "romanized": [ + "Maldonado" + ], + "count": 47344 + } + ], + "BR": [ + { + "id": "BR-1", + "rank": 1, + "localized": [ + "Silva" + ], + "romanized": [ + "Silva" + ], + "count": 20882120 + }, + { + "id": "BR-2", + "rank": 2, + "localized": [ + "Santos" + ], + "romanized": [ + "Santos" + ], + "count": 13433982 + }, + { + "id": "BR-3", + "rank": 3, + "localized": [ + "Sousa" + ], + "romanized": [ + "Sousa" + ], + "count": 9810832 + }, + { + "id": "BR-4", + "rank": 4, + "localized": [ + "Oliveira" + ], + "romanized": [ + "Oliveira" + ], + "count": 6209493 + }, + { + "id": "BR-5", + "rank": 5, + "localized": [ + "Pereira" + ], + "romanized": [ + "Pereira" + ], + "count": 5892937 + }, + { + "id": "BR-6", + "rank": 6, + "localized": [ + "Lima" + ], + "romanized": [ + "Lima" + ], + "count": 5007393 + }, + { + "id": "BR-7", + "rank": 7, + "localized": [ + "Carvalho" + ], + "romanized": [ + "Carvalho" + ], + "count": 4630387 + }, + { + "id": "BR-8", + "rank": 8, + "localized": [ + "Ferreira" + ], + "romanized": [ + "Ferreira" + ], + "count": 4590010 + }, + { + "id": "BR-9", + "rank": 9, + "localized": [ + "Rodrigues" + ], + "romanized": [ + "Rodrigues" + ], + "count": 4510002 + }, + { + "id": "BR-10", + "rank": 10, + "localized": [ + "Almeida" + ], + "romanized": [ + "Almeida" + ], + "count": 4393398 + }, + { + "id": "BR-11", + "rank": 11, + "localized": [ + "Costa" + ], + "romanized": [ + "Costa" + ], + "count": 3905800 + }, + { + "id": "BR-12", + "rank": 12, + "localized": [ + "Gomes" + ], + "romanized": [ + "Gomes" + ], + "count": 3848000 + }, + { + "id": "BR-13", + "rank": 13, + "localized": [ + "Martins" + ], + "romanized": [ + "Martins" + ], + "count": 3650200 + }, + { + "id": "BR-14", + "rank": 14, + "localized": [ + "Araújo" + ], + "romanized": [ + "Araújo" + ], + "count": 3320780 + }, + { + "id": "BR-15", + "rank": 15, + "localized": [ + "Melo" + ], + "romanized": [ + "Melo" + ], + "count": 3209000 + }, + { + "id": "BR-16", + "rank": 16, + "localized": [ + "Barbosa" + ], + "romanized": [ + "Barbosa" + ], + "count": 3040300 + }, + { + "id": "BR-17", + "rank": 17, + "localized": [ + "Ribeiro" + ], + "romanized": [ + "Ribeiro" + ], + "count": 3010000 + }, + { + "id": "BR-18", + "rank": 18, + "localized": [ + "Alves" + ], + "romanized": [ + "Alves" + ], + "count": 2960500 + }, + { + "id": "BR-19", + "rank": 19, + "localized": [ + "Cardoso" + ], + "romanized": [ + "Cardoso" + ], + "count": 2830120 + }, + { + "id": "BR-20", + "rank": 20, + "localized": [ + "Schmitz", + "Schmidt" + ], + "romanized": [ + "Schmitz", + "Schmidt" + ], + "count": 2673000 + }, + { + "id": "BR-21", + "rank": 21, + "localized": [ + "Rocha" + ], + "romanized": [ + "Rocha" + ], + "count": 2540600 + }, + { + "id": "BR-22", + "rank": 22, + "localized": [ + "Correia", + "Correa" + ], + "romanized": [ + "Correia", + "Correa" + ], + "count": 2505070 + }, + { + "id": "BR-23", + "rank": 23, + "localized": [ + "Dias" + ], + "romanized": [ + "Dias" + ], + "count": 2467000 + }, + { + "id": "BR-24", + "rank": 24, + "localized": [ + "Teixeira" + ], + "romanized": [ + "Teixeira" + ], + "count": 2408500 + }, + { + "id": "BR-25", + "rank": 25, + "localized": [ + "Fernandes" + ], + "romanized": [ + "Fernandes" + ], + "count": 2379700 + }, + { + "id": "BR-26", + "rank": 26, + "localized": [ + "Azevedo" + ], + "romanized": [ + "Azevedo" + ], + "count": 2370000 + }, + { + "id": "BR-27", + "rank": 27, + "localized": [ + "Cavalcante", + "Cavalcanti" + ], + "romanized": [ + "Cavalcante", + "Cavalcanti" + ], + "count": 2366300 + }, + { + "id": "BR-28", + "rank": 28, + "localized": [ + "Montes" + ], + "romanized": [ + "Montes" + ], + "count": 2362000 + }, + { + "id": "BR-29", + "rank": 29, + "localized": [ + "Morais" + ], + "romanized": [ + "Morais" + ], + "count": 2354500 + }, + { + "id": "BR-30", + "rank": 30, + "localized": [ + "Gonçalves" + ], + "romanized": [ + "Gonçalves" + ], + "count": 2348000 + } + ], + "CL": [ + { + "id": "CL-1", + "rank": 1, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 741388 + }, + { + "id": "CL-2", + "rank": 2, + "localized": [ + "Muñoz" + ], + "romanized": [ + "Muñoz" + ], + "count": 578673 + }, + { + "id": "CL-3", + "rank": 3, + "localized": [ + "Rojas" + ], + "romanized": [ + "Rojas" + ], + "count": 413897 + }, + { + "id": "CL-4", + "rank": 4, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 410802 + }, + { + "id": "CL-5", + "rank": 5, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 326867 + }, + { + "id": "CL-6", + "rank": 6, + "localized": [ + "Soto" + ], + "romanized": [ + "Soto" + ], + "count": 298062 + }, + { + "id": "CL-7", + "rank": 7, + "localized": [ + "Contreras" + ], + "romanized": [ + "Contreras" + ], + "count": 276887 + }, + { + "id": "CL-8", + "rank": 8, + "localized": [ + "Silva" + ], + "romanized": [ + "Silva" + ], + "count": 259950 + }, + { + "id": "CL-9", + "rank": 9, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 252966 + }, + { + "id": "CL-10", + "rank": 10, + "localized": [ + "Sepúlveda" + ], + "romanized": [ + "Sepúlveda" + ], + "count": 251078 + }, + { + "id": "CL-11", + "rank": 11, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": 248448 + }, + { + "id": "CL-12", + "rank": 12, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 243695 + }, + { + "id": "CL-13", + "rank": 13, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 240181 + }, + { + "id": "CL-14", + "rank": 14, + "localized": [ + "Fuentes" + ], + "romanized": [ + "Fuentes" + ], + "count": 228609 + }, + { + "id": "CL-15", + "rank": 15, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 226848 + }, + { + "id": "CL-16", + "rank": 16, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": 226480 + }, + { + "id": "CL-17", + "rank": 17, + "localized": [ + "Araya" + ], + "romanized": [ + "Araya" + ], + "count": 224232 + }, + { + "id": "CL-18", + "rank": 18, + "localized": [ + "Flores" + ], + "romanized": [ + "Flores" + ], + "count": 221231 + }, + { + "id": "CL-19", + "rank": 19, + "localized": [ + "Espinoza" + ], + "romanized": [ + "Espinoza" + ], + "count": 219375 + }, + { + "id": "CL-20", + "rank": 20, + "localized": [ + "Valenzuela" + ], + "romanized": [ + "Valenzuela" + ], + "count": 215025 + }, + { + "id": "CL-21", + "rank": 21, + "localized": [ + "Castillo" + ], + "romanized": [ + "Castillo" + ], + "count": 213321 + }, + { + "id": "CL-22", + "rank": 22, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 211191 + }, + { + "id": "CL-23", + "rank": 23, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": 208752 + }, + { + "id": "CL-24", + "rank": 24, + "localized": [ + "Gutiérrez" + ], + "romanized": [ + "Gutiérrez" + ], + "count": 201734 + }, + { + "id": "CL-25", + "rank": 25, + "localized": [ + "Castro" + ], + "romanized": [ + "Castro" + ], + "count": 199508 + }, + { + "id": "CL-26", + "rank": 26, + "localized": [ + "Vargas" + ], + "romanized": [ + "Vargas" + ], + "count": 198471 + }, + { + "id": "CL-27", + "rank": 27, + "localized": [ + "Álvarez" + ], + "romanized": [ + "Álvarez" + ], + "count": 193002 + }, + { + "id": "CL-28", + "rank": 28, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": 189946 + }, + { + "id": "CL-29", + "rank": 29, + "localized": [ + "Tapia" + ], + "romanized": [ + "Tapia" + ], + "count": 179905 + }, + { + "id": "CL-30", + "rank": 30, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 179246 + }, + { + "id": "CL-31", + "rank": 31, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 178615 + }, + { + "id": "CL-32", + "rank": 32, + "localized": [ + "Carrasco" + ], + "romanized": [ + "Carrasco" + ], + "count": 172877 + }, + { + "id": "CL-33", + "rank": 33, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 172758 + }, + { + "id": "CL-34", + "rank": 34, + "localized": [ + "Cortés" + ], + "romanized": [ + "Cortés" + ], + "count": 171370 + }, + { + "id": "CL-35", + "rank": 35, + "localized": [ + "Herrera" + ], + "romanized": [ + "Herrera" + ], + "count": 170309 + }, + { + "id": "CL-36", + "rank": 36, + "localized": [ + "Núñez" + ], + "romanized": [ + "Núñez" + ], + "count": 165806 + }, + { + "id": "CL-37", + "rank": 37, + "localized": [ + "Jara" + ], + "romanized": [ + "Jara" + ], + "count": 161085 + }, + { + "id": "CL-38", + "rank": 38, + "localized": [ + "Vergara" + ], + "romanized": [ + "Vergara" + ], + "count": 155118 + }, + { + "id": "CL-39", + "rank": 39, + "localized": [ + "Rivera" + ], + "romanized": [ + "Rivera" + ], + "count": 147835 + }, + { + "id": "CL-40", + "rank": 40, + "localized": [ + "Figueroa" + ], + "romanized": [ + "Figueroa" + ], + "count": 145460 + }, + { + "id": "CL-41", + "rank": 41, + "localized": [ + "Riquelme" + ], + "romanized": [ + "Riquelme" + ], + "count": 143590 + }, + { + "id": "CL-42", + "rank": 42, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 142002 + }, + { + "id": "CL-43", + "rank": 43, + "localized": [ + "Miranda" + ], + "romanized": [ + "Miranda" + ], + "count": 138939 + }, + { + "id": "CL-44", + "rank": 44, + "localized": [ + "Bravo" + ], + "romanized": [ + "Bravo" + ], + "count": 138392 + }, + { + "id": "CL-45", + "rank": 45, + "localized": [ + "Vera" + ], + "romanized": [ + "Vera" + ], + "count": 137646 + }, + { + "id": "CL-46", + "rank": 46, + "localized": [ + "Molina" + ], + "romanized": [ + "Molina" + ], + "count": 131094 + }, + { + "id": "CL-47", + "rank": 47, + "localized": [ + "Vega" + ], + "romanized": [ + "Vega" + ], + "count": 128132 + }, + { + "id": "CL-48", + "rank": 48, + "localized": [ + "Campos" + ], + "romanized": [ + "Campos" + ], + "count": 126260 + }, + { + "id": "CL-49", + "rank": 49, + "localized": [ + "Sandoval" + ], + "romanized": [ + "Sandoval" + ], + "count": 125640 + }, + { + "id": "CL-50", + "rank": 50, + "localized": [ + "Orellana" + ], + "romanized": [ + "Orellana" + ], + "count": 123619 + }, + { + "id": "CL-51", + "rank": 51, + "localized": [ + "Zúñiga" + ], + "romanized": [ + "Zúñiga" + ], + "count": 120757 + }, + { + "id": "CL-52", + "rank": 52, + "localized": [ + "Olivares" + ], + "romanized": [ + "Olivares" + ], + "count": 120074 + }, + { + "id": "CL-53", + "rank": 53, + "localized": [ + "Alarcón" + ], + "romanized": [ + "Alarcón" + ], + "count": 118019 + }, + { + "id": "CL-54", + "rank": 54, + "localized": [ + "Gallardo" + ], + "romanized": [ + "Gallardo" + ], + "count": 117752 + }, + { + "id": "CL-55", + "rank": 55, + "localized": [ + "Ortiz" + ], + "romanized": [ + "Ortiz" + ], + "count": 117228 + }, + { + "id": "CL-56", + "rank": 56, + "localized": [ + "Garrido" + ], + "romanized": [ + "Garrido" + ], + "count": 115109 + }, + { + "id": "CL-57", + "rank": 57, + "localized": [ + "Salazar" + ], + "romanized": [ + "Salazar" + ], + "count": 113881 + }, + { + "id": "CL-58", + "rank": 58, + "localized": [ + "Guzmán" + ], + "romanized": [ + "Guzmán" + ], + "count": 109922 + }, + { + "id": "CL-59", + "rank": 59, + "localized": [ + "Henríquez" + ], + "romanized": [ + "Henríquez" + ], + "count": 109364 + }, + { + "id": "CL-60", + "rank": 60, + "localized": [ + "Saavedra" + ], + "romanized": [ + "Saavedra" + ], + "count": 108702 + }, + { + "id": "CL-61", + "rank": 61, + "localized": [ + "Navarro" + ], + "romanized": [ + "Navarro" + ], + "count": 107897 + }, + { + "id": "CL-62", + "rank": 62, + "localized": [ + "Aguilera" + ], + "romanized": [ + "Aguilera" + ], + "count": 107864 + }, + { + "id": "CL-63", + "rank": 63, + "localized": [ + "Parra" + ], + "romanized": [ + "Parra" + ], + "count": 106100 + }, + { + "id": "CL-64", + "rank": 64, + "localized": [ + "Romero" + ], + "romanized": [ + "Romero" + ], + "count": 105597 + }, + { + "id": "CL-65", + "rank": 65, + "localized": [ + "Aravena" + ], + "romanized": [ + "Aravena" + ], + "count": 105441 + }, + { + "id": "CL-66", + "rank": 66, + "localized": [ + "Pizarro" + ], + "romanized": [ + "Pizarro" + ], + "count": 105352 + }, + { + "id": "CL-67", + "rank": 67, + "localized": [ + "Godoy" + ], + "romanized": [ + "Godoy" + ], + "count": 103887 + }, + { + "id": "CL-68", + "rank": 68, + "localized": [ + "Peña" + ], + "romanized": [ + "Peña" + ], + "count": 103377 + }, + { + "id": "CL-69", + "rank": 69, + "localized": [ + "Cáceres" + ], + "romanized": [ + "Cáceres" + ], + "count": 102830 + }, + { + "id": "CL-70", + "rank": 70, + "localized": [ + "Leiva" + ], + "romanized": [ + "Leiva" + ], + "count": 99890 + }, + { + "id": "CL-71", + "rank": 71, + "localized": [ + "Escobar" + ], + "romanized": [ + "Escobar" + ], + "count": 97979 + }, + { + "id": "CL-72", + "rank": 72, + "localized": [ + "Yáñez" + ], + "romanized": [ + "Yáñez" + ], + "count": 96589 + }, + { + "id": "CL-73", + "rank": 73, + "localized": [ + "Valdés" + ], + "romanized": [ + "Valdés" + ], + "count": 96528 + }, + { + "id": "CL-74", + "rank": 74, + "localized": [ + "Vidal" + ], + "romanized": [ + "Vidal" + ], + "count": 96037 + }, + { + "id": "CL-75", + "rank": 75, + "localized": [ + "Salinas" + ], + "romanized": [ + "Salinas" + ], + "count": 94110 + }, + { + "id": "CL-76", + "rank": 76, + "localized": [ + "Cárdenas" + ], + "romanized": [ + "Cárdenas" + ], + "count": 93925 + }, + { + "id": "CL-77", + "rank": 77, + "localized": [ + "Jiménez" + ], + "romanized": [ + "Jiménez" + ], + "count": 92032 + }, + { + "id": "CL-78", + "rank": 78, + "localized": [ + "Ruiz" + ], + "romanized": [ + "Ruiz" + ], + "count": 91539 + }, + { + "id": "CL-79", + "rank": 79, + "localized": [ + "Lagos" + ], + "romanized": [ + "Lagos" + ], + "count": 91024 + }, + { + "id": "CL-80", + "rank": 80, + "localized": [ + "Maldonado" + ], + "romanized": [ + "Maldonado" + ], + "count": 89091 + }, + { + "id": "CL-81", + "rank": 81, + "localized": [ + "Bustos" + ], + "romanized": [ + "Bustos" + ], + "count": 88445 + }, + { + "id": "CL-82", + "rank": 82, + "localized": [ + "Medina" + ], + "romanized": [ + "Medina" + ], + "count": 87578 + }, + { + "id": "CL-83", + "rank": 83, + "localized": [ + "Pino" + ], + "romanized": [ + "Pino" + ], + "count": 86295 + }, + { + "id": "CL-84", + "rank": 84, + "localized": [ + "Palma" + ], + "romanized": [ + "Palma" + ], + "count": 82735 + }, + { + "id": "CL-85", + "rank": 85, + "localized": [ + "Moreno" + ], + "romanized": [ + "Moreno" + ], + "count": 82548 + }, + { + "id": "CL-86", + "rank": 86, + "localized": [ + "Sanhueza" + ], + "romanized": [ + "Sanhueza" + ], + "count": 82383 + }, + { + "id": "CL-87", + "rank": 87, + "localized": [ + "Carvajal" + ], + "romanized": [ + "Carvajal" + ], + "count": 81785 + }, + { + "id": "CL-88", + "rank": 88, + "localized": [ + "Navarrete" + ], + "romanized": [ + "Navarrete" + ], + "count": 81729 + }, + { + "id": "CL-89", + "rank": 89, + "localized": [ + "Sáez" + ], + "romanized": [ + "Sáez" + ], + "count": 80938 + }, + { + "id": "CL-90", + "rank": 90, + "localized": [ + "Alvarado" + ], + "romanized": [ + "Alvarado" + ], + "count": 79985 + }, + { + "id": "CL-91", + "rank": 91, + "localized": [ + "Donoso" + ], + "romanized": [ + "Donoso" + ], + "count": 79855 + }, + { + "id": "CL-92", + "rank": 92, + "localized": [ + "Poblete" + ], + "romanized": [ + "Poblete" + ], + "count": 79248 + }, + { + "id": "CL-93", + "rank": 93, + "localized": [ + "Bustamante" + ], + "romanized": [ + "Bustamante" + ], + "count": 78732 + }, + { + "id": "CL-94", + "rank": 94, + "localized": [ + "Toro" + ], + "romanized": [ + "Toro" + ], + "count": 78659 + }, + { + "id": "CL-95", + "rank": 95, + "localized": [ + "Ortega" + ], + "romanized": [ + "Ortega" + ], + "count": 78086 + }, + { + "id": "CL-96", + "rank": 96, + "localized": [ + "Venegas" + ], + "romanized": [ + "Venegas" + ], + "count": 76900 + }, + { + "id": "CL-97", + "rank": 97, + "localized": [ + "Guerrero" + ], + "romanized": [ + "Guerrero" + ], + "count": 76823 + }, + { + "id": "CL-98", + "rank": 98, + "localized": [ + "Paredes" + ], + "romanized": [ + "Paredes" + ], + "count": 75825 + }, + { + "id": "CL-99", + "rank": 99, + "localized": [ + "Farías" + ], + "romanized": [ + "Farías" + ], + "count": 75242 + }, + { + "id": "CL-100", + "rank": 100, + "localized": [ + "San Martín" + ], + "romanized": [ + "San Martín" + ], + "count": 74575 + } + ], + "CO": [ + { + "id": "CO-1", + "rank": 1, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 707789 + }, + { + "id": "CO-2", + "rank": 2, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 537843 + }, + { + "id": "CO-3", + "rank": 3, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 531484 + }, + { + "id": "CO-4", + "rank": 4, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 530721 + }, + { + "id": "CO-5", + "rank": 5, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 524835 + }, + { + "id": "CO-6", + "rank": 6, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 509880 + }, + { + "id": "CO-7", + "rank": 7, + "localized": [ + "Hernández" + ], + "romanized": [ + "Hernández" + ], + "count": 454471 + }, + { + "id": "CO-8", + "rank": 8, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 449750 + }, + { + "id": "CO-9", + "rank": 9, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 427404 + }, + { + "id": "CO-10", + "rank": 10, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 418660 + }, + { + "id": "CO-11", + "rank": 11, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 388419 + }, + { + "id": "CO-12", + "rank": 12, + "localized": [ + "Muñoz" + ], + "romanized": [ + "Muñoz" + ], + "count": 293759 + }, + { + "id": "CO-13", + "rank": 13, + "localized": [ + "Rojas" + ], + "romanized": [ + "Rojas" + ], + "count": 286038 + }, + { + "id": "CO-14", + "rank": 14, + "localized": [ + "Moreno" + ], + "romanized": [ + "Moreno" + ], + "count": 265374 + }, + { + "id": "CO-15", + "rank": 15, + "localized": [ + "Jiménez" + ], + "romanized": [ + "Jiménez" + ], + "count": 261391 + } + ], + "PY": [ + { + "id": "PY-1", + "rank": 1, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 443804 + }, + { + "id": "PY-2", + "rank": 2, + "localized": [ + "Benítez" + ], + "romanized": [ + "Benítez" + ], + "count": 324473 + }, + { + "id": "PY-3", + "rank": 3, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 280227 + }, + { + "id": "PY-4", + "rank": 4, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 209835 + }, + { + "id": "PY-5", + "rank": 5, + "localized": [ + "Giménez" + ], + "romanized": [ + "Giménez" + ], + "count": 174974 + }, + { + "id": "PY-6", + "rank": 6, + "localized": [ + "Vera" + ], + "romanized": [ + "Vera" + ], + "count": 170281 + }, + { + "id": "PY-7", + "rank": 7, + "localized": [ + "Duarte" + ], + "romanized": [ + "Duarte" + ], + "count": 139443 + }, + { + "id": "PY-8", + "rank": 8, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 137432 + }, + { + "id": "PY-9", + "rank": 9, + "localized": [ + "Villalba" + ], + "romanized": [ + "Villalba" + ], + "count": 134750 + }, + { + "id": "PY-10", + "rank": 10, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 130057 + }, + { + "id": "PY-11", + "rank": 11, + "localized": [ + "Gómez" + ], + "romanized": [ + "Gómez" + ], + "count": 121342 + }, + { + "id": "PY-12", + "rank": 12, + "localized": [ + "Acosta" + ], + "romanized": [ + "Acosta" + ], + "count": 119331 + }, + { + "id": "PY-13", + "rank": 13, + "localized": [ + "Rojas" + ], + "romanized": [ + "Rojas" + ], + "count": 117990 + }, + { + "id": "PY-14", + "rank": 14, + "localized": [ + "Ortiz" + ], + "romanized": [ + "Ortiz" + ], + "count": 113297 + }, + { + "id": "PY-15", + "rank": 15, + "localized": [ + "Cáceres" + ], + "romanized": [ + "Cáceres" + ], + "count": 112627 + }, + { + "id": "PY-16", + "rank": 16, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 105923 + }, + { + "id": "PY-17", + "rank": 17, + "localized": [ + "Ruiz" + ], + "romanized": [ + "Ruiz" + ], + "count": 105252 + }, + { + "id": "PY-18", + "rank": 18, + "localized": [ + "Núñez" + ], + "romanized": [ + "Núñez" + ], + "count": 103241 + }, + { + "id": "PY-19", + "rank": 19, + "localized": [ + "Ayala" + ], + "romanized": [ + "Ayala" + ], + "count": 99219 + }, + { + "id": "PY-20", + "rank": 20, + "localized": [ + "Báez" + ], + "romanized": [ + "Báez" + ], + "count": 97878 + }, + { + "id": "PY-21", + "rank": 21, + "localized": [ + "Galeano" + ], + "romanized": [ + "Galeano" + ], + "count": 93185 + }, + { + "id": "PY-22", + "rank": 22, + "localized": [ + "Herrera" + ], + "romanized": [ + "Herrera" + ], + "count": 89833 + }, + { + "id": "PY-23", + "rank": 23, + "localized": [ + "Franco" + ], + "romanized": [ + "Franco" + ], + "count": 85140 + }, + { + "id": "PY-24", + "rank": 24, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": 83800 + }, + { + "id": "PY-25", + "rank": 25, + "localized": [ + "Cardozo" + ], + "romanized": [ + "Cardozo" + ], + "count": 83800 + } + ], + "PE": [ + { + "id": "PE-1", + "rank": 1, + "localized": [ + "Quispe" + ], + "romanized": [ + "Quispe" + ], + "count": 145812 + }, + { + "id": "PE-2", + "rank": 2, + "localized": [ + "Flores" + ], + "romanized": [ + "Flores" + ], + "count": 143733 + }, + { + "id": "PE-3", + "rank": 3, + "localized": [ + "Sánchez" + ], + "romanized": [ + "Sánchez" + ], + "count": 136158 + }, + { + "id": "PE-4", + "rank": 4, + "localized": [ + "Rodríguez" + ], + "romanized": [ + "Rodríguez" + ], + "count": 133208 + }, + { + "id": "PE-5", + "rank": 5, + "localized": [ + "García" + ], + "romanized": [ + "García" + ], + "count": 130593 + }, + { + "id": "PE-6", + "rank": 6, + "localized": [ + "Rojas" + ], + "romanized": [ + "Rojas" + ], + "count": 111286 + }, + { + "id": "PE-7", + "rank": 7, + "localized": [ + "González" + ], + "romanized": [ + "González" + ], + "count": 97610 + }, + { + "id": "PE-8", + "rank": 8, + "localized": [ + "Díaz" + ], + "romanized": [ + "Díaz" + ], + "count": 96135 + }, + { + "id": "PE-9", + "rank": 9, + "localized": [ + "Chávez" + ], + "romanized": [ + "Chávez" + ], + "count": 94660 + }, + { + "id": "PE-10", + "rank": 10, + "localized": [ + "Torres" + ], + "romanized": [ + "Torres" + ], + "count": 94057 + }, + { + "id": "PE-11", + "rank": 11, + "localized": [ + "Ramírez" + ], + "romanized": [ + "Ramírez" + ], + "count": 93520 + }, + { + "id": "PE-12", + "rank": 12, + "localized": [ + "Mendoza" + ], + "romanized": [ + "Mendoza" + ], + "count": 92045 + }, + { + "id": "PE-13", + "rank": 13, + "localized": [ + "Ramos" + ], + "romanized": [ + "Ramos" + ], + "count": 91442 + }, + { + "id": "PE-14", + "rank": 14, + "localized": [ + "López" + ], + "romanized": [ + "López" + ], + "count": 90571 + }, + { + "id": "PE-15", + "rank": 15, + "localized": [ + "Castillo" + ], + "romanized": [ + "Castillo" + ], + "count": 84470 + }, + { + "id": "PE-16", + "rank": 16, + "localized": [ + "Espinoza" + ], + "romanized": [ + "Espinoza" + ], + "count": 84470 + }, + { + "id": "PE-17", + "rank": 17, + "localized": [ + "Vásquez" + ], + "romanized": [ + "Vásquez" + ], + "count": 78570 + }, + { + "id": "PE-18", + "rank": 18, + "localized": [ + "Huamán" + ], + "romanized": [ + "Huamán" + ], + "count": 72135 + }, + { + "id": "PE-19", + "rank": 19, + "localized": [ + "Pérez" + ], + "romanized": [ + "Pérez" + ], + "count": 71866 + }, + { + "id": "PE-20", + "rank": 20, + "localized": [ + "Vargas" + ], + "romanized": [ + "Vargas" + ], + "count": 71598 + }, + { + "id": "PE-21", + "rank": 21, + "localized": [ + "Gutiérrez" + ], + "romanized": [ + "Gutiérrez" + ], + "count": 69855 + }, + { + "id": "PE-22", + "rank": 22, + "localized": [ + "Fernández" + ], + "romanized": [ + "Fernández" + ], + "count": 66034 + }, + { + "id": "PE-23", + "rank": 23, + "localized": [ + "Castro" + ], + "romanized": [ + "Castro" + ], + "count": 65766 + }, + { + "id": "PE-24", + "rank": 24, + "localized": [ + "Mamani" + ], + "romanized": [ + "Mamani" + ], + "count": 62213 + }, + { + "id": "PE-25", + "rank": 25, + "localized": [ + "Ruíz" + ], + "romanized": [ + "Ruíz" + ], + "count": 62213 + }, + { + "id": "PE-26", + "rank": 26, + "localized": [ + "Romero" + ], + "romanized": [ + "Romero" + ], + "count": 57252 + }, + { + "id": "PE-27", + "rank": 27, + "localized": [ + "Martínez" + ], + "romanized": [ + "Martínez" + ], + "count": 56715 + }, + { + "id": "PE-28", + "rank": 28, + "localized": [ + "Morales" + ], + "romanized": [ + "Morales" + ], + "count": 55777 + }, + { + "id": "PE-29", + "rank": 29, + "localized": [ + "Reyes" + ], + "romanized": [ + "Reyes" + ], + "count": 55240 + }, + { + "id": "PE-30", + "rank": 30, + "localized": [ + "Salazar" + ], + "romanized": [ + "Salazar" + ], + "count": 53766 + } + ], + "SR": [ + { + "id": "SR-1", + "rank": 1, + "localized": [ + "Lin" + ], + "romanized": [ + "Lin" + ], + "count": null + }, + { + "id": "SR-2", + "rank": 2, + "localized": [ + "Pinas" + ], + "romanized": [ + "Pinas" + ], + "count": null + }, + { + "id": "SR-3", + "rank": 3, + "localized": [ + "Wong" + ], + "romanized": [ + "Wong" + ], + "count": null + }, + { + "id": "SR-4", + "rank": 4, + "localized": [ + "Chin" + ], + "romanized": [ + "Chin" + ], + "count": null + }, + { + "id": "SR-5", + "rank": 5, + "localized": [ + "Mohan" + ], + "romanized": [ + "Mohan" + ], + "count": null + }, + { + "id": "SR-6", + "rank": 6, + "localized": [ + "Kalloe" + ], + "romanized": [ + "Kalloe" + ], + "count": null + }, + { + "id": "SR-7", + "rank": 7, + "localized": [ + "Singh" + ], + "romanized": [ + "Singh" + ], + "count": null + }, + { + "id": "SR-8", + "rank": 8, + "localized": [ + "Lie" + ], + "romanized": [ + "Lie" + ], + "count": null + }, + { + "id": "SR-9", + "rank": 9, + "localized": [ + "van Dijk" + ], + "romanized": [ + "van Dijk" + ], + "count": null + }, + { + "id": "SR-10", + "rank": 10, + "localized": [ + "Tjin" + ], + "romanized": [ + "Tjin" + ], + "count": null + }, + { + "id": "SR-11", + "rank": 11, + "localized": [ + "Kluivert" + ], + "romanized": [ + "Kluivert" + ], + "count": null + }, + { + "id": "SR-12", + "rank": 12, + "localized": [ + "Semil" + ], + "romanized": [ + "Semil" + ], + "count": null + }, + { + "id": "SR-13", + "rank": 13, + "localized": [ + "Sabajo" + ], + "romanized": [ + "Sabajo" + ], + "count": null + } + ] +} diff --git a/web/docs b/web/docs new file mode 120000 index 0000000..ef96707 --- /dev/null +++ b/web/docs @@ -0,0 +1 @@ +/Users/aaronpo/projects/the-biergarten-app/docs/website \ No newline at end of file